# Hudl XPath / CSS selectors (update here when Hudl UI changes)

HUDL_MODAL_CLOSE = 'xpath=//motion.div[@aria-label="Hudl Modal"]/motion.div/button'
HUDL_MODAL_CLOSE_DIV = 'xpath=//div[@aria-label="Hudl Modal"]/div/button'
HUDL_MODAL_CLOSE_ALT = "button.uni-dismiss.uni-overlay__close"

EXCHANGES_NAV = '[data-qa-id="webnav-primarynav-exchanges"]'
EXCHANGES_DIRECT_LINK = 'a[data-qa-id="webnav-primarynav-direct"]'
TEAM_SWITCHER_SELECTED_NAME = (
    '[data-qa-id="webnav-teamswitcher-menu"] > '
    'a.hui-primaryteamswitcher__item--selected '
    '.hui-primaryteamswitcher__display-name > span'
)
PRIMARY_NAVBAR = '[data-qa-id="primary-navbar"]'
# Logged-in user's name shown in the top-right global user menu
# (e.g. "Ryan Trevithick"), as opposed to the selected team name.
# NOTE: this element lives inside the collapsed user dropdown, so it is present
# in the DOM but NOT visible — read text_content without waiting for visibility.
USER_ACCOUNT_NAME_SELECTORS = (
    '.hui-globaluseritem__display-name span',
    '.hui-globaluseritem__display-name',
    '.profile-avatar a.uni-subhead',
)
LIBRARY_NAV_LINK = 'a[data-qa-id="webnav-primarynav-video"]'
LIBRARY_TILE = '[data-qa-id="tile-library-item"]'
STORAGE_USAGE_CONTAINER = '[class*="storageUsageContainer"]'
STORAGE_USAGE_EXPAND_BUTTON = '[data-qa-id="storage-indicator-expand-button"]'
STORAGE_USAGE_MESSAGE = '[data-qa-id="storage-indicator-message-container"]'
STORAGE_PROGRESS_BAR_CONTAINER = '[class*="storageUsageContainer"] [class*="progressBarContainer"]'
STORAGE_BAR_TEAM_USAGE = '[class*="storageUsageContainer"] [class*="barTeamUsage"]'
STORAGE_LEARN_MORE_TEXT = '[class*="storageUsageContainer"] [class*="learnMoreText"]'

# Manage Library (Hudl Classic) — content shell + jstree tree
MANAGE_LIBRARY_CONTENT = ".manage-library-content"
MANAGE_LIBRARY_LEFT = ".manage-library-left-column"
MANAGE_LIBRARY_RIGHT = ".manage-library-right-column"
MANAGE_LIBRARY_SECTION = ".ml__section"
MANAGE_LIBRARY_TREE = ".jstree, .tree ul.t2, .manage-library-right-column ul.jstree-container-ul, .ml__section"

SUGGESTED_TEAMS_LIST = "xpath=//ul[@class='potential-teams initial']/li"
ACTIVE_EXCHANGES_ITEM = "xpath=//li[.//motion.div[contains(@class,'ex-exchange')]]"

# 3rd API — search
SEARCH_INPUT = 'xpath=//input[@type="search"]'
SEARCH_HEADER_TEXT = "xpath=//header/p"
SEARCH_TEAMS_LIST = "xpath=//ul[@class='potential-teams']/li"
SEARCH_LOADER = (
    '[class*="loading"], [class*="loader"], .uni-loading, '
    '[aria-busy="true"], .ex-loading'
)

# 4th API — exchange types (team click + type + next)
SUGGESTED_TEAMS_UL = "xpath=//ul[@class='potential-teams initial']"
SEARCH_TEAMS_UL = (
    "xpath=//ul[@class='potential-teams' and not(contains(@class,'initial'))]"
)
EXCHANGE_TYPE_TWO_WAY = 'xpath=//li[@id="yes-button"]/span[1]'
EXCHANGE_TYPE_ONE_WAY = 'xpath=//li[@id="no-button"]/span[1]'
EXCHANGE_TYPE_REQUEST = 'xpath=//li[@id="request-button"]/span[1]'
EXCHANGE_NEXT_BUTTON = 'xpath=//footer/button[@id="optionsNextButton"]'

# 5th API & 6th API — video list & select
VIDEO_LIST_ITEMS = "xpath=//section[@id='events-container']/div/ul/li"
VIDEO_NEXT_BUTTON = 'xpath=//footer/button[@id="eventNextButton"]'

# 7th API — stats
STATS_NO_OPTION = 'xpath=//li[@id="js-exclude-game-stats"]'
STATS_YES_OPTION = 'xpath=//li[@id="js-include-game-stats"]'
STATS_TEAM_OPTION = 'xpath=//li[@id="js-include-team-stats"]'
STATS_PLAYER_OPTION = 'xpath=//li[@id="js-include-player-stats"]'
STATS_NEXT_BUTTON = 'xpath=//button[@id="gameStatsNextButton"]'

# 8th API — notes
NOTES_TEXTAREA = 'xpath=//section[@class="ex-message"]/div/textarea'
NOTES_NEXT_BUTTON = 'xpath=//button[@id="messageNextButton"]'

# 9th API — confirm (GET and POST)
CONFIRM_EXCHANGE_TYPE = 'xpath=//div[contains(@class, "ex-exchange-type")]'
CONFIRM_TEAM_BLOCK = 'xpath=//div[contains(@class, "ex-team-block")]'
CONFIRM_PLAYLISTS = 'xpath=//ul[contains(@class, "ex-confirm-playlists")]/li'
CONFIRM_STATS = 'xpath=//div[contains(@class, "ex-confirm-breakdowns")]'
CONFIRM_MESSAGE = 'xpath=//p[contains(@class, "ex-confirm-message")]'
# Two-way / One-way / Request Video — id may vary; confirm.py also tries text fallbacks.
CONFIRM_SEND_BUTTON = 'xpath=//button[@id="sendExchange" or contains(translate(normalize-space(.),"SEND","send"),"send")]'

# 10th - 12th API — upload
UPLOAD_NAV_LINK = 'a[data-qa-id="webnav-globalnav-upload"]'
UPLOAD_TEAM_COMBOBOX = 'xpath=//input[@role="combobox"]'
UPLOAD_TEAM_DROPDOWN_BTN = 'xpath=//div[@class="uni-select"]/div/span/span'
UPLOAD_TEAMS_LIST = 'xpath=//ul[contains(@data-qa-id, "options-list")]/li'
UPLOAD_SELECT_FILES_BTN = 'xpath=//div[@class="select-files"]/button'
UNI_FORM_LABEL = 'xpath=//label[@class="uni-form__label"]'

# 13th - 15th API — uploaded files, trigger, schedule event
UPLOADED_FILES_WRAPPER = 'xpath=//div[contains(@class, "sortableElementWrapper")]'
UPLOADED_FILE_NAME = 'xpath=./div[1]/div[1]'
UPLOADED_FILE_DELETE_BTN = 'xpath=./div[1]/div[2]/button'

TRIGGER_UPLOAD_BTN = 'xpath=//div[contains(@class, "staging-trigger-upload")]'

SCHEDULE_EVENT_PLACEHOLDER = 'xpath=//div[contains(@class, "Select-placeholder")]'
SCHEDULE_EVENT_MENU = 'xpath=//div[contains(@class, "Select-menu-outer")]'
SCHEDULE_EVENT_OPTIONS = 'xpath=//div[contains(@class, "Select-option")]'
VIDEO_TYPE_LABELS = 'xpath=//fieldset/div/label'
VIDEO_TITLE_INPUT = 'xpath=//input[@type="text"]'
VIDEO_CHECK_EVENT_LABEL = 'xpath=//label[@class="uni-form__label--check"]'
VIDEO_DETAILS_SAVE_BTN = 'xpath=//div[@class="uni-btn__row"]/button'

CANCEL_UPLOAD_BTN = 'xpath=//button[@data-qa-id="cancel-upload-btn"]'
CONFIRM_CANCEL_UPLOAD_BTN = 'xpath=//button[@data-qa-id="modal-footer-primary-button-cancel-this-upload"]'
