@clickview/lite 0.70.1-dev.2 → 0.70.1-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/3596-7f32e7d4c0-lite.chunk.js +3 -0
  4. package/dist/scripts/3596-7f32e7d4c0-lite.chunk.js.map +1 -0
  5. package/dist/scripts/4050-cd4d18058a-lite.chunk.js +3 -0
  6. package/dist/scripts/4050-cd4d18058a-lite.chunk.js.map +1 -0
  7. package/dist/scripts/5829-689f5be5d1-lite.chunk.js +3 -0
  8. package/dist/scripts/5829-689f5be5d1-lite.chunk.js.map +1 -0
  9. package/dist/scripts/7042-65a932d16b-lite.chunk.js +2 -0
  10. package/dist/scripts/{7042-aaaf6e286f-lite.chunk.js.map → 7042-65a932d16b-lite.chunk.js.map} +1 -1
  11. package/dist/scripts/7428-546d62999f-lite.chunk.js +2 -0
  12. package/dist/scripts/7428-546d62999f-lite.chunk.js.map +1 -0
  13. package/dist/scripts/{8280-287760fb57-lite.chunk.js → 8280-8bb89d0a89-lite.chunk.js} +2 -2
  14. package/dist/scripts/8280-8bb89d0a89-lite.chunk.js.map +1 -0
  15. package/dist/scripts/8832-73ffd39e2a-lite.chunk.js +2 -0
  16. package/dist/scripts/{8832-aa3df17f66-lite.chunk.js.map → 8832-73ffd39e2a-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/9973-648be9b72a-lite.chunk.js +2 -0
  18. package/dist/scripts/9973-648be9b72a-lite.chunk.js.map +1 -0
  19. package/dist/scripts/bundle-7514add562.min.js +3 -0
  20. package/dist/scripts/{bundle-4b10174000.min.js.map → bundle-7514add562.min.js.map} +1 -1
  21. package/package.json +1 -1
  22. package/dist/scripts/3596-191624e307-lite.chunk.js +0 -3
  23. package/dist/scripts/3596-191624e307-lite.chunk.js.map +0 -1
  24. package/dist/scripts/4050-74aa5394f6-lite.chunk.js +0 -3
  25. package/dist/scripts/4050-74aa5394f6-lite.chunk.js.map +0 -1
  26. package/dist/scripts/5829-5b395badf2-lite.chunk.js +0 -3
  27. package/dist/scripts/5829-5b395badf2-lite.chunk.js.map +0 -1
  28. package/dist/scripts/7042-aaaf6e286f-lite.chunk.js +0 -2
  29. package/dist/scripts/741-98a532e970-lite.chunk.js +0 -2
  30. package/dist/scripts/741-98a532e970-lite.chunk.js.map +0 -1
  31. package/dist/scripts/7428-6dd787bc07-lite.chunk.js +0 -2
  32. package/dist/scripts/7428-6dd787bc07-lite.chunk.js.map +0 -1
  33. package/dist/scripts/8280-287760fb57-lite.chunk.js.map +0 -1
  34. package/dist/scripts/8832-aa3df17f66-lite.chunk.js +0 -2
  35. package/dist/scripts/bundle-4b10174000.min.js +0 -3
  36. /package/dist/scripts/{3596-191624e307-lite.chunk.js.LICENSE.txt → 3596-7f32e7d4c0-lite.chunk.js.LICENSE.txt} +0 -0
  37. /package/dist/scripts/{4050-74aa5394f6-lite.chunk.js.LICENSE.txt → 4050-cd4d18058a-lite.chunk.js.LICENSE.txt} +0 -0
  38. /package/dist/scripts/{5829-5b395badf2-lite.chunk.js.LICENSE.txt → 5829-689f5be5d1-lite.chunk.js.LICENSE.txt} +0 -0
  39. /package/dist/scripts/{bundle-4b10174000.min.js.LICENSE.txt → bundle-7514add562.min.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/7042-aaaf6e286f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/projects/lite/src/apps/user-manager/components/staff-manager-tabs/StaffManagerTabs.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/staff-manager/empty-state/LiteStaffManagerEmptyState.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/staff-manager/LiteStaffManagerView.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { StaffManagerAppLinks } from 'apps/user-manager/interfaces/StaffManagerAppLinks';\n\nconst namespace = 'settings.staffManagerTabs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst staffManagerAppLinks: StaffManagerAppLinks = {\n staffManager: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.STAFF\n },\n inviteRequests: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.ACCESS_REQUESTS\n }\n};\n\ninterface StaffManagerTabsProps {\n active: 'staff-manager' | 'invite-requests'\n}\n\nexport function StaffManagerTabs(props: StaffManagerTabsProps): JSX.Element {\n const { active } = props;\n \n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={[{\n name: getPhrase('staffManager'),\n appLink: staffManagerAppLinks.staffManager,\n active: active === 'staff-manager',\n analyticsData: {\n name: getPhrase('staffManager'),\n url: Core.AppLinkHelper.getHref(staffManagerAppLinks.staffManager)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('inviteRequests'),\n appLink: staffManagerAppLinks.inviteRequests,\n active: active === 'invite-requests',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'inviteRequests'),\n url: Core.AppLinkHelper.getHref(staffManagerAppLinks.inviteRequests)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }]}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'userManager.staffManagerEmptyState';\nconst userType = UserGroup.Staff;\n\nexport function StaffManagerEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.UserManager.STAFF} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n\n <div className='d-flex justify-content-center align-items-center'>\n <div className='px-1'>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'addNew')}\n icon={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.CREATE_USER,\n params: { userType }\n }}\n />\n </div>\n\n <div className='px-1'>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'uploadAList')}\n icon={cvSvgLibrary.Upload}\n appLink={{\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.USER_UPLOAD_POPUP,\n params: { userType }\n }}\n />\n </div>\n </div>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ManageUsers } from 'libs/shared/apps/user-manager/components/manage-users/ManageUsers';\nimport { UserManagerHeader } from 'libs/shared/apps/user-manager/components/user-manager-header/UserManagerHeader';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useFetchUserCount } from 'libs/shared/apps/user-manager/hooks/useFetchUserCount';\nimport { GetIdentityProvidersResponse } from 'libs/shared/apps/user-manager/interfaces/GetIdentityProvidersResponse';\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, Product, RosteringResponse, User } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { StaffManagerTabs } from 'apps/user-manager/components/staff-manager-tabs/StaffManagerTabs';\nimport { SelectWithSpreadsheetTemplates } from 'apps/user-manager/constants/SelectWithSpreadsheetTemplate';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { useFetchUsers } from 'apps/user-manager/hooks/useFetchUsers';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nimport { StaffManagerEmptyState } from './empty-state/LiteStaffManagerEmptyState';\n\nconst getPhrase = LanguageService.encloseNamespace('userManager.staffManager');\n\nconst userType = UserGroup.Staff;\n\ninterface StaffManagerViewProps {\n queryParams: UserManagerQueryParams;\n}\n\nexport function StaffManagerView(props: StaffManagerViewProps): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const appLinks = getUserManagerAppLinks(userType, props.queryParams);\n const { domainSettings } = useSettings(LocationContext.Settings);\n\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const identityProviders = Flight.useBasicFetch<GetIdentityProvidersResponse>(!!currentUser.data &&\n UserManagerRequests.getIdentityProviders(currentUser.data.customerId));\n const products = Flight.useBasicFetch<Product[]>(ProductRequests.userProducts());\n\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n\n const staffResponse = useFetchUsers(\n currentUser.data,\n props.queryParams,\n userType\n );\n\n const staff = staffResponse.data ? (('results' in staffResponse.data) ? staffResponse.data.results : staffResponse.data.data) : null;\n\n Flight.useBasicFetch(UserManagerRequests.authenticationMethods(staff?.map(s => s.id)?.sort() ?? []));\n\n const userCount = useFetchUserCount({\n userType,\n queryParams: props.queryParams,\n getUserCountRequest: UserManagerRequests.userCount\n });\n\n useHandleObjectError(staffResponse);\n\n function onClickResendActivationEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.resendActivationEmail(user.id, () => {\n alerts.success(getPhrase('resendActivationEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('resendActivationEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n function onClickSendResetEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.sendPasswordResetEmail(user.id, currentUser.data.customerId, () => {\n alerts.success(getPhrase('passwordResetEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('passwordResetEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n function fetchUserIds(success: (userIds: string[]) => void): void {\n Flight.fetch(dispatch, UserManagerRequests.getSearchUserIds(\n currentUser.data.customerId,\n currentUser.data.id,\n userType,\n props.queryParams,\n success\n ));\n }\n\n function onClickResendVerificationEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.resendVerificationEmail(user.id, currentUser.data.customerId, () => {\n alerts.success(getPhrase('resendVerificationEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('resendVerificationEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n const showEmptyState = UserManagerHelper.showEmptyState(staffResponse, props.queryParams);\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <div className='px-3'>\n <UserManagerHeader\n userType={userType}\n appLinks={appLinks}\n users={staff}\n userCount={userCount.data}\n hasRostering={hasRostering}\n hasSso={!!identityProviders.data?.length}\n />\n\n {domainSettings && !hasRostering && <StaffManagerTabs active='staff-manager'/>}\n\n {!showEmptyState ? (\n <main className='py-3 clearfix'>\n <ManageUsers\n users={staff}\n userType={userType}\n config={config.data}\n currentUser={currentUser.data}\n appLinks={appLinks}\n searchEmptyState={ImageUrls.EmptyStates.UserManager.SEARCH}\n onClickSendResetEmail={onClickSendResetEmail}\n onClickResendActivationEmail={onClickResendActivationEmail}\n onClickSendVerificationEmail={onClickResendVerificationEmail}\n totalUsers={userCount.data?.count}\n queryParams={props.queryParams}\n fetchUserIds={fetchUserIds}\n ssoHelpArticle={ArticleHelper.getLiteArticle(LiteSupportArticle.EditSsoAccounts)}\n hasSso={!!identityProviders.data?.length}\n userRequest={UserRequests.getUserIdByQuery}\n selectWithSpreadsheetTemplate={SelectWithSpreadsheetTemplates}\n hasRostering={hasRostering}\n products={products.data.map(p => p.id) ?? []}\n />\n {!!staffResponse.data?.pagination?.cursors && (\n <Pagination\n appLink={appLinks.search}\n cursors={staffResponse.data.pagination.cursors}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n />\n )}\n </main>\n ) : <StaffManagerEmptyState />}\n </div>\n </UserManagerClientContext.Provider>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["TabContents","props","tab","svgName","className","name","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","map","index","active","key","appLink","analyticsData","analyticsOptions","onClick","onSelect","onSelectTab","defaultProps","namespace","getPhrase","staffManagerAppLinks","staffManager","application","action","inviteRequests","StaffManagerTabs","url","actionType","entity","location","userType","UserGroup","StaffManagerEmptyState","value","EmptyState","src","ImageUrls","Text","phrase","text","LanguageService","icon","params","StaffManagerView","useSetPageMetadata","title","dispatch","alerts","appLinks","queryParams","domainSettings","useSettings","rostering","RosteringRequests","currentUser","UserRequests","config","ConfigRequests","identityProviders","UserManagerRequests","customerId","products","ProductRequests","hasRostering","status","staffResponse","useFetchUsers","staff","results","s","id","sort","userCount","useFetchUserCount","getUserCountRequest","showEmptyState","UserManagerHelper","UserManagerClientContext","UserManagerClient","UserManagerHeader","users","hasSso","length","ManageUsers","searchEmptyState","onClickSendResetEmail","user","success","email","escapeText","error","onClickResendActivationEmail","onClickSendVerificationEmail","totalUsers","fetchUserIds","ssoHelpArticle","ArticleHelper","userRequest","selectWithSpreadsheetTemplate","SelectWithSpreadsheetTemplate","p","pagination","cursors","Pagination","search","buttonVariant"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/7042-65a932d16b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/projects/lite/src/apps/user-manager/components/staff-manager-tabs/StaffManagerTabs.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/staff-manager/empty-state/LiteStaffManagerEmptyState.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/staff-manager/LiteStaffManagerView.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { StaffManagerAppLinks } from 'apps/user-manager/interfaces/StaffManagerAppLinks';\n\nconst namespace = 'settings.staffManagerTabs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst staffManagerAppLinks: StaffManagerAppLinks = {\n staffManager: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.STAFF\n },\n inviteRequests: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.ACCESS_REQUESTS\n }\n};\n\ninterface StaffManagerTabsProps {\n active: 'staff-manager' | 'invite-requests'\n}\n\nexport function StaffManagerTabs(props: StaffManagerTabsProps): JSX.Element {\n const { active } = props;\n \n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={[{\n name: getPhrase('staffManager'),\n appLink: staffManagerAppLinks.staffManager,\n active: active === 'staff-manager',\n analyticsData: {\n name: getPhrase('staffManager'),\n url: Core.AppLinkHelper.getHref(staffManagerAppLinks.staffManager)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('inviteRequests'),\n appLink: staffManagerAppLinks.inviteRequests,\n active: active === 'invite-requests',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'inviteRequests'),\n url: Core.AppLinkHelper.getHref(staffManagerAppLinks.inviteRequests)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }]}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'userManager.staffManagerEmptyState';\nconst userType = UserGroup.Staff;\n\nexport function StaffManagerEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.UserManager.STAFF} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n\n <div className='d-flex justify-content-center align-items-center'>\n <div className='px-1'>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'addNew')}\n icon={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.CREATE_USER,\n params: { userType }\n }}\n />\n </div>\n\n <div className='px-1'>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'uploadAList')}\n icon={cvSvgLibrary.Upload}\n appLink={{\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.USER_UPLOAD_POPUP,\n params: { userType }\n }}\n />\n </div>\n </div>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ManageUsers } from 'libs/shared/apps/user-manager/components/manage-users/ManageUsers';\nimport { UserManagerHeader } from 'libs/shared/apps/user-manager/components/user-manager-header/UserManagerHeader';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useFetchUserCount } from 'libs/shared/apps/user-manager/hooks/useFetchUserCount';\nimport { GetIdentityProvidersResponse } from 'libs/shared/apps/user-manager/interfaces/GetIdentityProvidersResponse';\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, Product, RosteringResponse, User } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { StaffManagerTabs } from 'apps/user-manager/components/staff-manager-tabs/StaffManagerTabs';\nimport { SelectWithSpreadsheetTemplates } from 'apps/user-manager/constants/SelectWithSpreadsheetTemplate';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { useFetchUsers } from 'apps/user-manager/hooks/useFetchUsers';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nimport { StaffManagerEmptyState } from './empty-state/LiteStaffManagerEmptyState';\n\nconst getPhrase = LanguageService.encloseNamespace('userManager.staffManager');\n\nconst userType = UserGroup.Staff;\n\ninterface StaffManagerViewProps {\n queryParams: UserManagerQueryParams;\n}\n\nexport function StaffManagerView(props: StaffManagerViewProps): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const appLinks = getUserManagerAppLinks(userType, props.queryParams);\n const { domainSettings } = useSettings(LocationContext.Settings);\n\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const identityProviders = Flight.useBasicFetch<GetIdentityProvidersResponse>(!!currentUser.data &&\n UserManagerRequests.getIdentityProviders(currentUser.data.customerId));\n const products = Flight.useBasicFetch<Product[]>(ProductRequests.userProducts());\n\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n\n const staffResponse = useFetchUsers(\n currentUser.data,\n props.queryParams,\n userType\n );\n\n const staff = staffResponse.data ? (('results' in staffResponse.data) ? staffResponse.data.results : staffResponse.data.data) : null;\n\n Flight.useBasicFetch(UserManagerRequests.authenticationMethods(staff?.map(s => s.id)?.sort() ?? []));\n\n const userCount = useFetchUserCount({\n userType,\n queryParams: props.queryParams,\n getUserCountRequest: UserManagerRequests.userCount\n });\n\n useHandleObjectError(staffResponse);\n\n function onClickResendActivationEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.resendActivationEmail(user.id, () => {\n alerts.success(getPhrase('resendActivationEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('resendActivationEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n function onClickSendResetEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.sendPasswordResetEmail(user.id, currentUser.data.customerId, () => {\n alerts.success(getPhrase('passwordResetEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('passwordResetEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n function fetchUserIds(success: (userIds: string[]) => void): void {\n Flight.fetch(dispatch, UserManagerRequests.getSearchUserIds(\n currentUser.data.customerId,\n currentUser.data.id,\n userType,\n props.queryParams,\n success\n ));\n }\n\n function onClickResendVerificationEmail(user: User): void {\n Flight.fetch(dispatch, UserManagerRequests.resendVerificationEmail(user.id, currentUser.data.customerId, () => {\n alerts.success(getPhrase('resendVerificationEmailSuccess', { email: user.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('resendVerificationEmailError', { email: user.email, escapeText: true }));\n }));\n }\n\n const showEmptyState = UserManagerHelper.showEmptyState(staffResponse, props.queryParams);\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <div className='px-3'>\n <UserManagerHeader\n userType={userType}\n appLinks={appLinks}\n users={staff}\n userCount={userCount.data}\n hasRostering={hasRostering}\n hasSso={!!identityProviders.data?.length}\n />\n\n {domainSettings && !hasRostering && <StaffManagerTabs active='staff-manager'/>}\n\n {!showEmptyState ? (\n <main className='py-3 clearfix'>\n <ManageUsers\n users={staff}\n userType={userType}\n config={config.data}\n currentUser={currentUser.data}\n appLinks={appLinks}\n searchEmptyState={ImageUrls.EmptyStates.UserManager.SEARCH}\n onClickSendResetEmail={onClickSendResetEmail}\n onClickResendActivationEmail={onClickResendActivationEmail}\n onClickSendVerificationEmail={onClickResendVerificationEmail}\n totalUsers={userCount.data?.count}\n queryParams={props.queryParams}\n fetchUserIds={fetchUserIds}\n ssoHelpArticle={ArticleHelper.getLiteArticle(LiteSupportArticle.EditSsoAccounts)}\n hasSso={!!identityProviders.data?.length}\n userRequest={UserRequests.getUserIdByQuery}\n selectWithSpreadsheetTemplate={SelectWithSpreadsheetTemplates}\n hasRostering={hasRostering}\n products={products.data.map(p => p.id) ?? []}\n />\n {!!staffResponse.data?.pagination?.cursors && (\n <Pagination\n appLink={appLinks.search}\n cursors={staffResponse.data.pagination.cursors}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n />\n )}\n </main>\n ) : <StaffManagerEmptyState />}\n </div>\n </UserManagerClientContext.Provider>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["TabContents","props","tab","svgName","className","name","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","map","index","active","key","appLink","analyticsData","analyticsOptions","onClick","onSelect","onSelectTab","defaultProps","namespace","getPhrase","staffManagerAppLinks","staffManager","application","action","inviteRequests","StaffManagerTabs","url","actionType","entity","location","userType","UserGroup","StaffManagerEmptyState","value","EmptyState","src","ImageUrls","Text","phrase","text","LanguageService","icon","params","StaffManagerView","useSetPageMetadata","title","dispatch","alerts","appLinks","queryParams","domainSettings","useSettings","rostering","RosteringRequests","currentUser","UserRequests","config","ConfigRequests","identityProviders","UserManagerRequests","customerId","products","ProductRequests","hasRostering","status","staffResponse","useFetchUsers","staff","results","s","id","sort","userCount","useFetchUserCount","getUserCountRequest","showEmptyState","UserManagerHelper","UserManagerClientContext","UserManagerClient","UserManagerHeader","users","hasSso","length","ManageUsers","searchEmptyState","onClickSendResetEmail","user","success","email","escapeText","error","onClickResendActivationEmail","onClickSendVerificationEmail","totalUsers","fetchUserIds","ssoHelpArticle","ArticleHelper","userRequest","selectWithSpreadsheetTemplate","SelectWithSpreadsheetTemplate","p","pagination","cursors","Pagination","search","buttonVariant"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7428],{70376:(e,t,n)=>{"use strict";n.d(t,{W:()=>c});var r=n(32735),a=n(91967);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var o=5e3;function c(e){var t,n,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o,l=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=l[0],u=l[1],d=r.useRef(null),p=function(){u((function(e){return!e})),d.current=window.setTimeout(p,c)};return r.useEffect((function(){d.current=window.setTimeout(p,c)}),[]),r.useEffect((function(){a.q.isFunction(e)&&e()}),[s]),function(){return window.clearTimeout(d.current)}}},5255:(e,t,n)=>{"use strict";n.d(t,{Y:()=>c});var r=n(70376),a=n(20354),i=n(30439);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function c(e){var t,n=a.a.useGetFetch(),c=e&&i.o.getAnonSessions(e),l=a.a.useBasicFetch(c);return(0,r.W)((function(){return n(c)}),5e3),(null===(t=l.data)||void 0===t?void 0:t.length)?l.data.reduce((function(e,t){return Object.assign(Object.assign({},e),(n={},r=t.sessionId,a=t,(r=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(r))in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n));var n,r,a}),{}):{}}},4606:(e,t,n)=>{"use strict";n.d(t,{U:()=>o});var r=n(20354),a=n(75896),i=n(31949);function o(e){var t=a.m.chunk(null!=e?e:[],25),n=r.a.useBasicFetchAll(t.map((function(e){return i.N.getById(e)})));return{users:a.m.flatten(n.data),isLoading:!n.hasCompleted,usersResponse:n}}},9806:(e,t,n)=>{"use strict";n.d(t,{k:()=>O});var r=n(32735),a=n(65858),i=n(64249),o=n(15611),c=n(7432),l=n(11834),s=n(83345),u=n(56754),d=n(86348),p=n(7733),m=n(54610),v=n(4594),f=n(68626),y=n(9085),g=n(67453),b=n(31908);const h={thumbnailFallbackSvg:"D4JFs",posterFallbackSvg:"bjUWl",coverFallbackSvg:"kdLpt",thumbnailContainer:"d3CKN",insightsMask:"KM76U",requireMarking:"peLH7",badge:"mVu0E",bar:"zO3MS",a:"K1jW5",expandBar:"YITJl",b:"tCpLF",c:"lC0cq"};var w="shared.sharedObjectImage",E="rounded overflow-hidden";function k(){return r.createElement("div",{className:"d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center"},r.createElement("div",{className:"position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3"}),r.createElement("div",{className:"d-flex align-items-end gap-2 h-50 z-1"},r.createElement("div",{className:"d-flex align-items-end h-50"},r.createElement("div",{className:"".concat(h.bar," ").concat(h.a," rounded shadow")})),r.createElement("div",{className:"d-flex align-items-end h-75"},r.createElement("div",{className:"".concat(h.bar," ").concat(h.b," rounded shadow")})),r.createElement("div",{className:"d-flex align-items-end h-100"},r.createElement("div",{className:"".concat(h.bar," ").concat(h.c," rounded shadow")}))))}function O(e){var t=r.useCallback((function(t){var n;t&&e.fixedHeight&&(t.style.width="".concat(t.offsetHeight*(n=e.object,b.M.isVideoType(n)?16/9:n.typeId===v.E.Playlist?1:n.typeId===v.E.Series?9/16:void 0),"px"))}),[]),n=b.M.isVideoType(e.object),O=function(e){var t=g.j.getDisplayImageFromObject(e);if(b.M.isVideoType(e))return{image:t,imageType:m.__.Thumbnails,imageClassName:E,imageFallbackComponent:r.createElement(l.oy,{type:l.mS.Video})};switch(e.typeId){case v.E.Series:return{image:t,imageType:m.__.TallPosters,imageClassName:E,imageFallbackComponent:r.createElement(l.oy,{type:l.mS.Series,svgContainerClassName:h.posterFallbackSvg})};case v.E.Playlist:return{image:t,imageType:m.__.Covers,imageClassName:(null==t?void 0:t.url)?E:"".concat(E," ").concat((0,y.x)(e.name,p.o)),imageFallbackComponent:r.createElement(l.oy,{type:l.mS.Playlist,svgContainerClassName:(null==t?void 0:t.url)?h.coverFallbackSvg:"d-none",extraClasses:!(null==t?void 0:t.url)&&"bg-transparent"})}}}(e.object),S=O.image,j=O.imageType,x=O.imageClassName,C=O.imageFallbackComponent,I=e.showVideoMetadata?{}:{hideDuration:!0,hideMask:!0,hideRating:!0,hideVideoTypeBadge:!0};return r.createElement("div",{className:"d-flex align-items-center justify-content-center w-100 h-100"},r.createElement("div",{ref:t,className:e.fixedHeight?"h-100":"w-100"},n&&r.createElement("div",{className:"".concat(h.thumbnailContainer," position-relative")},e.showInsightsMask&&r.createElement(k,null),r.createElement(o.F,{appLink:e.appLink},r.createElement(d.u,Object.assign({video:e.object,size:e.thumbnailSize,imageOptions:e.imageOptions,textPosition:f.z.Independent,type:"cosmetic"},I))),!!e.requireMarking&&r.createElement("div",{className:"".concat(e.showInsightsMask&&h.requireMarking," position-absolute bottom-0 end-0 z-1 m-2")},r.createElement("div",{className:"".concat(h.badge," d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2")},r.createElement(s.x,{namespace:w,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))),!n&&r.createElement(r.Fragment,null,"videos"in e.object?r.createElement(u.I,{collection:e.object,imageOptions:e.imageOptions,appLink:e.appLink,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:i.I.getAnalyticsEntity(e.object.type),actionType:a.Vw.Click,location:e.locationContext},showMask:e.showCollectionMask,showVideoCount:e.showVideoCount}):r.createElement(c.Z,{data:null==S?void 0:S.url,imageType:j,imageOptions:e.imageOptions,appLink:e.appLink,className:x,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:i.I.getAnalyticsEntity(e.object.type),actionType:a.Vw.Click,location:e.locationContext}},C))))}O.defaultProps={imageOptions:{size:m.h2.Small}}},56754:(e,t,n)=>{"use strict";n.d(t,{I:()=>w});var r=n(32735),a=n(75896),i=n(65858),o=n(15611),c=n(83914),l=n(83345);const s={thumbnailTitle:"OsWjL"};function u(e){return r.createElement("h3",{title:e.title,className:"h6"},e.title)}function d(e){return e.appLink?r.createElement(o.F,{appLink:e.appLink,className:"".concat(s.thumbnailTitle)},r.createElement(u,Object.assign({},e))):r.createElement(u,Object.assign({},e))}var p=n(86348),m=n(62335),v=n(4594),f=n(68626),y=n(45778),g=n(35223);const b={badge:"M4zat",mask:"r0Ztg",thumbnailContainer:"uD9dz"};var h="shared.collectionThumbnail";function w(e){var t,n,s,u,w=function(){var t,n=null===(t=e.collection)||void 0===t?void 0:t.videos;if(n){if(!n.count&&e.collection.typeId===v.E.Playlist){var r=e.collection;r.clips.count&&(n=r.clips),r.interactives.count&&(n=r.interactives)}return a.m.first(n.data)}}(),E=function(){var t,n,r=0;if(e.collection.videos&&e.collection.videos.count&&(r+=e.collection.videos.count),e.collection.typeId===v.E.Playlist){var a=e.collection;(null===(t=a.interactives)||void 0===t?void 0:t.count)&&(r+=a.interactives.count),(null===(n=a.clips)||void 0===n?void 0:n.count)&&(r+=a.clips.count)}return r}(),k=(null===(t=e.title)||void 0===t?void 0:t.length)||(null===(n=e.subText)||void 0===n?void 0:n.length),O=Object.assign({id:e.collection.id.toString(),name:e.collection.name},e.analyticsData),S=Object.assign({actionType:i.Vw.Click,entity:(u=e.collection,y.G.isType(u,v.E.Playlist)?i.py.Playlist:y.G.isType(u,v.E.Series)?i.py.Series:void 0)},e.analyticsOptions);return r.createElement("div",null,r.createElement("div",{className:"position-relative ".concat(b.thumbnailContainer," z-1")},r.createElement(o.F,{appLink:e.appLink,analyticsData:O,analyticsOptions:S,preventFocus:!0},e.showMask&&r.createElement("div",{className:"".concat(b.mask," position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none")},r.createElement("div",{className:"".concat(b.badge," d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2")},r.createElement(c.x,{svgName:g.vn.Play,className:"svg-container text-white"}),r.createElement("p",{className:"d-inline fw-medium text-white mb-0"},(null===(s=e.hoverText)||void 0===s?void 0:s.length)?r.createElement("span",null,e.hoverText):r.createElement(l.x,{namespace:h,phrase:"playAll"})))),w&&r.createElement(p.u,{video:w,imageOptions:e.imageOptions,textPosition:f.z.Independent,type:"cosmetic",hideMask:!0,hideRating:!0,hideDuration:!0,hideVideoTypeBadge:!0}),!w&&r.createElement("div",{className:"ratio ratio-16x9 bg-light rounded-3"},r.createElement("div",{className:"d-flex justify-content-center align-items-center"},r.createElement(c.x,{svgName:g.vn.Play,className:"w-33 opacity-25 text-gray-400"}))),e.showVideoCount&&r.createElement("div",{className:"".concat(b.badge," d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2")},r.createElement(c.x,{svgName:g.vn.Series,className:"svg-container text-white me-1"}),r.createElement("p",{className:"d-inline fw-semibold text-white mb-0"},r.createElement(l.x,{namespace:h,phrase:"videos",options:{count:E,smartCount:E}}))))),k&&r.createElement("div",{className:"mt-2 d-flex flex-column"},e.subText&&r.createElement(m.m,{title:e.subText,appLink:e.subTextAppLink},e.subText),e.title&&r.createElement(d,{title:e.collection.name,appLink:e.titleAppLink})))}},94644:(e,t,n)=>{"use strict";n.d(t,{r:()=>u});var r=n(50242),a=n(81886),i=n(67058),o=n(14553),c=n(49267),l=n(49075),s={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:l._,internalServerError:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},s),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new o.badRequest):n.forbidden||a.Q.Ry.throw(new o.forbidden.privacy):n.notFound||a.Q.Ry.throw(new o.notFound):n.internalServerError||a.Q.Ry.throw(new l._))}}},17913:(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var r=n(97395),a=n(110),i=n(62875),o={individualEngagement:function(e,t,n,a){var o=Object.assign({objectId:e},t);return n&&(o.sharerId=n),a&&(o.includeAnonViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map",o),key:(0,i.H)("engagement:".concat(e,":").concat(a),t,n),formatData:function(e){var t;return Object.assign(Object.assign({},e),{data:null===(t=e.data)||void 0===t?void 0:t.map((function(e){var t;return Object.assign(Object.assign({},e),{heatMap:null!==(t=e.heatMap)&&void 0!==t?t:[]})}))})},normalize:!1}},aggregateEngagement:function(e,t,n,a){var o=Object.assign({objectId:e},t);return n&&(o.sharerId=n),a&&(o.includeAnonViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",o),key:(0,i.H)("aggregate:engagement:".concat(e,":").concat(a),t,n),formatData:function(e){var t;return Object.assign(Object.assign({},e),{heatMap:null!==(t=e.heatMap)&&void 0!==t?t:[]})},normalize:!1}},views:function(e,t,n,o){var c=Object.assign(Object.assign({},e),{timeOffset:a.O.getTimezoneOffset()});return t&&(c.objectId=t),n&&(c.sharerId=n),o&&(c.includeAnonViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/video-views",c),key:(0,i.H)("video:views:".concat(t,":").concat(o),e,n),normalize:!1}}}},91286:(e,t,n)=>{"use strict";n.d(t,{v:()=>o});var r=n(32735),a=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){o.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[i(o),t,n])}},63178:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ShareOptionsView:()=>X});var r=n(32735),a=n(70376),i=n(2948),o=n(20354),c=n(50938),l=n(5255),s=n(4606),u=n(26025),d=n(74901),p=n(40003),m=n(49475),v=n(91693),f=n(4594),y=n(16714),g=n(39151),b=n(5112),h=n(60011),w=n(31949),E=n(17913),k=n(3010),O=n(91286),S=n(93322),j=n(22902),x=n(79612),C=n(37802),I=n(35223),N=n(31908),P=n(99742),T=n(86702),L=n(88630),A=n(59087),R=n(39202),M=n(65858),D=n(9806),F=n(83914),V=n(54610),_=n(14070),z=n(97291),B=n(22490),U=n(4315);function W(e){var t,n,a,i,o,c,l,s,u,d,p=null!==(a=null===(n=null===(t=e.shareLink)||void 0===t?void 0:t.link)||void 0===n?void 0:n.shortenedUrl)&&void 0!==a?a:"",m=B.W.getAppLink(e.sharedObject),f=R.C$.getHref(m);return r.createElement("div",null,r.createElement("h3",null,"Share information"),r.createElement("div",{className:"mb-4 bg-light-blue p-3 rounded-3"},r.createElement("div",{className:"d-flex gap-3"},e.sharedObject&&r.createElement("div",{style:{minWidth:220},className:"d-flex flex-column"},r.createElement(D.k,{object:e.sharedObject,showVideoMetadata:!0,locationContext:M.LZ.Insights,imageOptions:{size:V.h2.Medium},showCollectionMask:!0,showVideoCount:!0,appLink:m})),r.createElement("div",{className:"d-flex flex-column justify-content-between"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("a",{href:f,className:"cursor-pointer h6 mb-0 d-inline me-2"},null===(i=e.sharedObject)||void 0===i?void 0:i.name),r.createElement(v.h,{svgName:I.vn.NewWindow,appLink:m,svgSize:F.S.Small,className:"d-inline-block",customSize:!0})),e.shareLink&&r.createElement(U.e,{shareLink:e.shareLink,classroomName:null===(o=e.classroom)||void 0===o?void 0:o.name}),r.createElement("div",{className:"d-flex gap-2"},r.createElement(v.h,{svgName:I.vn.Share,className:"btn btn-outline-dark",appLink:{application:z.O.SHARE_V2,action:_.e.ShareV2.LINK,args:[null===(c=e.sharedObject)||void 0===c?void 0:c.id],params:{entityType:null===(l=e.sharedObject)||void 0===l?void 0:l.type,shareId:null===(s=e.shareLink)||void 0===s?void 0:s.shareId}}},"Share a link or embed"),r.createElement(v.h,{svgName:I.vn.Download,className:"btn btn-outline-dark",appLink:{application:z.O.INSIGHTS,action:_.e.Insights.QR_CODE,params:{value:p}}},"QR code"))),r.createElement("div",{className:"flex-grow-1"}),e.pinCode&&r.createElement("div",{className:"border p-3 rounded-3 d-flex flex-column align-items-center bg-white"},r.createElement("p",null,"Go to ",r.createElement("a",{href:"https://staging.clickview.net/pin",target:"_blank",className:"text-info"},"staging.clickview.net/pin")," and enter PIN:"),r.createElement("div",{className:"d-flex align-items-center"},r.createElement("h4",{className:"mb-0 pb-0 me-1"},null===(u=e.pinCode)||void 0===u?void 0:u.code),r.createElement(A.CopyToClipboard,{text:null===(d=e.pinCode)||void 0===d?void 0:d.code},r.createElement(v.h,{svgName:I.vn.Copy,className:"btn"})),r.createElement(v.h,{svgName:I.vn.NewWindow,onClick:function(){console.log("Expanding code..")},className:"btn"}))))))}var G=n(53936),H=n(10447),q=n(93975),J=n(91574),Q=n(81969);function K(e){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},K(e)}function $(e){return function(e){if(Array.isArray(e))return Z(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Y(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Y(e,t){if(e){if("string"==typeof e)return Z(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Z(e,t):void 0}}function Z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function X(e){var t,n,A,R,M,D,F,V,_,z,B,U,Z,X,ee,te,ne,re,ae,ie=(re=(0,i.D)(T.y.ANONYMISE_USERS),ae=1,function(e){if(Array.isArray(e))return e}(re)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(re,ae)||Y(re,ae)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],oe=o.a.useGetFetch(),ce=o.a.useBasicFetch(g.L.config()),le=o.a.useBasicFetch(e.shareId&&J.o.getShareLink(e.shareId)),se=o.a.useBasicFetch(e.shareId&&J.o.getPincodeByShareId(e.shareId)),ue=Q.R.getClassroomId(le.data),de=o.a.useBasicFetch(ue&&L.F.getClassroom(ue)),pe=(0,C.r)(null),me=pe.hasShareFlowV2,ve=pe.publicInteractiveAttempts,fe=(0,j.T)().hasPermissions,ye=[f.E.Video,f.E.Clip,f.E.Interactive].includes(e.typeId)&&N.M.getVideoRequest(e.objectId,e.typeId),ge=o.a.useBasicFetch(ye),be=o.a.useBasicFetch(w.N.currentUser()),he=e.typeId===f.E.Series&&h.J.series(e.objectId),we=o.a.useBasicFetch(he),Ee=e.typeId===f.E.Playlist&&b.C.getPlaylist(e.objectId),ke=o.a.useBasicFetch(Ee),Oe=u.B.getAudienceAppLinkParams(),Se=u.B.getDateRangeAppLinkParams(),je=Object.assign(Object.assign(Object.assign({},Oe),Se),{shareId:e.shareId}),xe=Object.assign(Object.assign({},(0,p.wO)((0,p.Hb)(),Se)),(0,d.K)(Oe)),Ce=be.data&&E.u.individualEngagement(e.objectId,xe,null===(t=be.data)||void 0===t?void 0:t.id,ve),Ie=o.a.useBasicFetch(Ce);(0,a.W)((function(){return oe(Ce)}),5e3);var Ne=(null===(A=null===(n=Ie.data)||void 0===n?void 0:n.data)||void 0===A?void 0:A.map((function(e){return e.userId})).filter(Boolean))||[],Pe=(0,s.U)(Ne),Te=Pe.users,Le=Pe.isLoading,Ae=(0,l.Y)(e.shareId),Re=function(e,t,n){var r,a,i,c,l,s,u=o.a.useGetFetch(),d=(null===(a=null===(r=null==t?void 0:t.recipients)||void 0===r?void 0:r[0])||void 0===a?void 0:a.recipientTypeId)===f.E.Classroom&&t.recipients[0].recipientId,p=function(e){return d&&L.F.getClassroomStudents(d,e)},m=(0,k.i)(p,(function(e){return u(p(e))})),v=null!==(c=null===(i=null==n?void 0:n.data)||void 0===i?void 0:i.reduce((function(e,t){return Object.assign(Object.assign({},e),function(e,t,n){return(t=function(e){var t=function(e){if("object"!=K(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=K(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==K(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},t.userId,t))}),{}))&&void 0!==c?c:{},y=(null===(l=m.items)||void 0===l?void 0:l.length)?m.items.map((function(t){return v[t.id]?null:{customerId:null==e?void 0:e.customerId,engagementRate:0,heatMap:[],userId:t.id,videoDuration:500,viewCount:0,videoId:null,userIds:[],sessionId:null,sessionIds:[],user:t}})).filter((function(e){return!!e})):[];return[].concat($(null!==(s=null==n?void 0:n.data)&&void 0!==s?s:[]),$(y))}(be.data,le.data,Ie.data);(0,S.F)(),(0,x.M)({title:null!==(F=null!==(M=null===(R=ge.data)||void 0===R?void 0:R.name)&&void 0!==M?M:null===(D=we.data)||void 0===D?void 0:D.name)&&void 0!==F?F:null===(V=ke.data)||void 0===V?void 0:V.name}),(0,O.v)([ge,we,ke]);var Me=!(!Ie.data||Ne.length&&Le),De=!Re.length,Fe=!Me||De;return console.log({individualEngagementLength:null===(_=Ie.data)||void 0===_?void 0:_.data.length,userIdsLength:Ne.length,anonSessionsLength:Object.keys(Ae).length,fakeEngagementLength:Re.length}),r.createElement("div",{className:"px-3"},r.createElement(G.j,{video:null!==(B=null!==(z=ge.data)&&void 0!==z?z:we.data)&&void 0!==B?B:ke.data,dateRangeAppLinkParams:Se,tabs:e.typeId===f.E.Interactive?(0,H.kj)(e.objectId,"shareOptions",je,me):e.typeId===f.E.Clip?(0,H.$o)(e.objectId,"shareOptions",je,me):e.typeId===f.E.Video?(0,H.$6)(e.objectId,"shareOptions",je,me):e.typeId===f.E.Series?(0,H.lo)(e.objectId,"shareOptions",je):e.typeId===f.E.Playlist?(0,H.W_)(e.objectId,"shareOptions",je):void 0,hasAnalytics:fe(y.C.ViewCustomerAnalytics),analyticsWebUrl:null===(U=ce.data)||void 0===U?void 0:U.analyticsWebUrl,hasShareFlowV2:me,shareId:e.shareId}),r.createElement(W,{sharedObject:null!==(X=null!==(Z=ge.data)&&void 0!==Z?Z:we.data)&&void 0!==X?X:ke.data,shareLink:le.data,pinCode:se.data,classroom:de.data}),r.createElement("div",{className:"d-flex align-items-center mt-5"},r.createElement("h3",{className:"p-0 m-0"},(null===(ee=le.data)||void 0===ee?void 0:ee.type)===q.y.Classroom?"All recipients":"Students who have viewed this video"),(null===(te=le.data)||void 0===te?void 0:te.type)===q.y.Classroom&&r.createElement(v.h,{svgName:I.vn.Plus,onClick:function(){return console.log("Add new student..")},className:"btn btn-outline-dark ms-auto"},"Add new student")),r.createElement("div",{className:"col-12 mt-2 mb-5"},r.createElement(c.z,{key:(0,m.u)(Object.assign(Object.assign({},Oe),Se)),engagement:Re,users:null!=Te?Te:[],imageCdnUrl:null===(ne=ce.data)||void 0===ne?void 0:ne.imageCdnUrl,anonymiseUsers:ie,border:!0,anonSessions:Ae,hideWhenEmpty:!1,theme:{header:Fe?"border-0":"border-bottom",table:Fe?"bg-white rounded px-0 rounded-bottom-0":"bg-white rounded px-0"}}),Fe&&function(){var e;return le.data?(null===(e=le.data)||void 0===e?void 0:e.type)===q.y.Open?r.createElement("div",{style:{minHeight:400},className:"d-flex flex-column align-items-center border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center"},r.createElement("img",{style:{maxHeight:200},src:P.W.EmptyStates.SHARE_V2}),r.createElement("h4",{className:"mt-4"},"Share open session to start collecting student data")):r.createElement("div",{style:{minHeight:400},className:"border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center"},r.createElement("h4",null,"Waiting for students to view...")):r.createElement("div",{style:{minHeight:400},className:"border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center"})}()))}},4315:(e,t,n)=>{"use strict";n.d(t,{e:()=>p});var r=n(32735),a=n(12528),i=n(83914),o=n(4594),c=n(35223),l=n(42272),s=n(93975);function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function d(e,t,n){return(t=function(e){var t=function(e){if("object"!=u(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==u(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e){var t,n,c,u,d;return r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"d-flex align-items-center justify-content-center"},r.createElement("div",null,r.createElement(a.f,{svgName:m[e.shareLink.type],variant:v[e.shareLink.type],textVariant:"white",svgWrapperClassName:null!==(t=e.svgWrapperClassName)&&void 0!==t?t:"p-1",svgSize:null!==(n=e.svgSize)&&void 0!==n?n:i.S.Standard})),r.createElement("div",{className:"d-flex flex-column ms-2"},r.createElement("label",{className:"m-0"},(u=(c=e).shareLink,d=c.classroomName,u.type===s.y.Classroom&&d?d:f[u.type])),!e.hideSubtitle&&r.createElement("span",{className:"text-secondary"},function(e){var t,n,r,a,i=e.shareLink;if(i.type===s.y.Classroom){var c=null!==(n=null===(t=i.recipients)||void 0===t?void 0:t.filter((function(e){return e.recipientTypeId===o.E.ClassroomGroup})).length)&&void 0!==n?n:0,u=null!==(a=null===(r=i.recipients)||void 0===r?void 0:r.filter((function(e){return e.recipientTypeId===o.E.User})).length)&&void 0!==a?a:0;return c&&u?"".concat(c," ").concat(y(c,"group","groups"),", ").concat(u," ").concat(y(u,"student","students")," can view"):c?"".concat(c," ").concat(y(c,"group","groups")," can view"):u?"".concat(u," ").concat(y(u,"student","students")," can view"):"All students in classroom can view"}if(i.type===s.y.Open)return"Students watch using a PIN code";if(i.type===s.y.Link){if([l.e.JustMySchool,l.e.Protected].includes(i.privacy))return"Respect ratings and restrictions";if(i.privacy===l.e.JustMySchoolOverrideRestriction)return"Anyone in your school can view";if(i.privacy===l.e.ProtectedOverrideRestriction)return"Anyone signed into ClickView can view";if(i.privacy===l.e.Public)return"Anyone with a link can view";if(i.privacy===l.e.PinCode)return"Anyone with a PIN code can view"}return i.type===s.y.Live?"Live now":"Anyone signed into ClickView can view"}(e)))))}var m=d(d(d(d({},s.y.Open,c.vn.School),s.y.Link,c.vn.Link),s.y.Classroom,c.vn.Classrooms),s.y.Live,c.vn.Play),v=d(d(d(d({},s.y.Open,"blue"),s.y.Link,"black"),s.y.Classroom,"teal"),s.y.Live,"purple"),f=d(d(d(d({},s.y.Open,"Open classroom"),s.y.Link,"Link"),s.y.Classroom,"Classroom"),s.y.Live,"Live");function y(e,t,n){return 1===e?t:n}},42272:(e,t,n)=>{"use strict";var r;n.d(t,{e:()=>r}),function(e){e.Public="Public",e.PinCode="PinCode",e.PasswordProtected="PasswordProtected",e.ProtectedOverrideRestriction="ProtectedOverrideRestriction",e.JustMySchoolOverrideRestriction="JustMySchoolOverrideRestriction",e.Protected="Protected",e.JustMySchool="JustMySchool",e.Direct="Direct"}(r||(r={}))},93975:(e,t,n)=>{"use strict";var r;n.d(t,{y:()=>r}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live"}(r||(r={}))},91574:(e,t,n)=>{"use strict";n.d(t,{o:()=>o});var r=n(99940),a=n(97395),i={namespace:"share-v2"},o={createShareLink:function(e,t,n,a){return{url:"/api/share/v2/shares",key:"create:share-v2:link",type:r.k.POST,data:e,normalizeOptions:i,invalidationKeys:["share:link:object:".concat(e.objectId),"privacy:".concat(e.objectId),"sent:shares","get:share-v2:shares:object"],success:t,error:n,always:a}},getShareLink:function(e,t,n,a){return{url:"/api/share/v2/shares/".concat(e),key:"get:share-v2:link:".concat(e),type:r.k.GET,normalizeOptions:i,success:t,error:n,always:a}},getSharesByObjectId:function(e,t,n,a){return{url:"/api/share/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:r.k.GET,normalizeOptions:i,success:t,error:n,always:a}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0,o={scopeId:e.scopeId,limit:e.limit||25,offset:parseInt(e.cursor)||0},c=Object.values(o).join(":");return{url:a._.urlBuilder("/api/share/v2/shares/sent",o),key:"sent:shares-v2:".concat(c),formatData:function(e){return{data:e,count:e.length,pagination:{cursors:{next:o.offset+e.length}}}},type:r.k.GET,normalize:!1,success:t,error:n,always:i}},createPincode:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:pincode",type:r.k.POST}},getPincode:function(e){return{url:"/api/share/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}},getPincodeByShareId:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}}}},81969:(e,t,n)=>{"use strict";n.d(t,{R:()=>v});var r=n(23481),a=n(110),i=n(4594),o=n(49080),c=n(26361),l=n(35223),s=n(31908),u=n(42272),d=n(93975);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var m=r.T.encloseNamespace("share.shareLinkInfo"),v={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,r=e.hasStudentExp,a=e.entity,o=e.yearGroups;if(t===i.E.Topic||t===i.E.Series)return{icon:l.vn.VisibleOn,text:m(r?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case u.e.Public:return{icon:l.vn.VisibleOn,text:m("publicDescription")};case u.e.ProtectedOverrideRestriction:return{icon:l.vn.VisibleOn,text:m("clickViewOnly")};case u.e.Protected:return{icon:l.vn.Lock,text:v.getRespectRatingText(a,o,r)};case u.e.JustMySchoolOverrideRestriction:return{icon:l.vn.Lock,text:m(r?"justMySchoolTeachers":"justMySchoolDescription")};case u.e.JustMySchool:return{icon:l.vn.Lock,text:v.getRespectRatingText(a,o,r)};case u.e.PinCode:case u.e.PasswordProtected:return{icon:l.vn.Lock,text:m("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,r=e.status;if(!t&&!n)return v.getPrivateIconAndText(e);if(!t)return{icon:l.vn.Lock,text:m("password")};var i=a.O.isToday(t),c=a.O.diffBetween(t,new Date,"day");if(!n){var s=i?m("expiryToday"):m("expiry",{days:c});return r===o.F.Expired&&(s=m("expired")),{icon:l.vn.Timer,text:s}}var u=i?m("passwordExpiryToday"):m("passwordExpiry",{days:c});return r===o.F.Expired&&(u=m("passwordExpired")),{icon:l.vn.Lock,text:u}},getRespectRatingText:function(e,t,n){var r;if(!e||!t)return null;if(n)return m("justMySchoolTeachers");if(!s.M.isVideoType(e))return m("collectionRating");var a=c.l.getWeightedRestriction(null===(r=e._restrictions)||void 0===r?void 0:r.value);if(a&&!a.yearGroup)return m("onlyAdmins");var i,o,l,u=s.M.getRating(e),d=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}(t);try{for(d.s();!(l=d.n()).done;){var v=l.value;(!i||v.value>i.value)&&(i=v),a&&v.value<=a.yearGroup||u&&v.rating.value<u.value||(!o||v.value<o.value)&&(o=v)}}catch(e){d.e(e)}finally{d.f()}return o?1===t.length?m("clickViewOnly"):o.value===i.value?m("maxYearGroup",{yearGroup:i.name}):m("yearGroupRange",{yearGroup:o.name}):m("onlyStaff")},getClassroomId:function(e){var t,n;if(!e)return"";if(e.type!==d.y.Classroom)return"";var r=null===(t=e.recipients)||void 0===t?void 0:t.find((function(e){return e.recipientTypeId===i.E.Classroom}));if(r)return r.recipientId.toString();var a=null===(n=e.recipients)||void 0===n?void 0:n.find((function(e){return e.scopeId}));return(null==a?void 0:a.scopeId.toString())||""}}},91969:(e,t,n)=>{"use strict";var r=n(47033),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,o,c,l,s,u=!1;t||(t={}),n=t.debug||!1;try{if(o=r(),c=document.createRange(),l=document.getSelection(),(s=document.createElement("span")).textContent=e,s.ariaHidden="true",s.style.all="unset",s.style.position="fixed",s.style.top=0,s.style.clip="rect(0, 0, 0, 0)",s.style.whiteSpace="pre",s.style.webkitUserSelect="text",s.style.MozUserSelect="text",s.style.msUserSelect="text",s.style.userSelect="text",s.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=a[t.format]||a.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(s),c.selectNodeContents(s),l.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(r){n&&console.error("unable to copy using execCommand: ",r),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(r){n&&console.error("unable to copy using clipboardData: ",r),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(c):l.removeAllRanges()),s&&document.body.removeChild(s),o()}return u}},44818:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var a=c(n(32735)),i=c(n(91969)),o=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t){return d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},d(e,t)}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var f=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&d(e,t)}(y,e);var t,n,c,l,f=(c=y,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=m(c);if(l){var n=m(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return p(e)}(this,e)});function y(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,y);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return v(p(e=f.call.apply(f,[this].concat(n))),"onClick",(function(t){var n=e.props,r=n.text,o=n.onCopy,c=n.children,l=n.options,s=a.default.Children.only(c),u=(0,i.default)(r,l);o&&o(r,u),s&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t)})),e}return t=y,(n=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),n=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,o),r=a.default.Children.only(t);return a.default.cloneElement(r,s(s({},n),{},{onClick:this.onClick}))}}])&&u(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),y}(a.default.PureComponent);t.CopyToClipboard=f,v(f,"defaultProps",{onCopy:void 0,options:void 0})},59087:(e,t,n)=>{"use strict";var r=n(44818).CopyToClipboard;r.CopyToClipboard=r,e.exports=r},47033:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r<e.rangeCount;r++)n.push(e.getRangeAt(r));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}}}]);
2
+ //# sourceMappingURL=7428-546d62999f-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7428-546d62999f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/hooks/UsePolling.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseAnonSessions.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseEngagementUsers.ts","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/flight-requests/VideoViewRequests.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/insights/components/share-options/ShareOptions.tsx","file:///app/packages/projects/lite/src/apps/insights/views/share-options/ShareOptionsView.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/ShareAvatar.tsx","file:///app/packages/projects/lite/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/projects/lite/src/apps/share-v2/enums/ShareType.ts","file:///app/packages/projects/lite/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/projects/lite/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/node_modules/copy-to-clipboard/index.js","file:///app/node_modules/react-copy-to-clipboard/lib/Component.js","file:///app/node_modules/react-copy-to-clipboard/lib/index.js","file:///app/node_modules/toggle-selection/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst DEFAULT_POLLING_INTERVAL = 5000; // 5 seconds.\n\n/**\n * Hook to fire a callback at a set interval.\n * @param callback \n * @param pollingInterval \n * \n * Returns a function to clear the timeout.\n */\nexport function usePolling(callback: () => void, pollingInterval: number = DEFAULT_POLLING_INTERVAL): () => void {\n const [ pollingTrigger, setPollingTrigger ] = React.useState(false);\n\n const timeoutRef = React.useRef<number>(null);\n\n const poll = () => {\n setPollingTrigger(t => !t);\n\n timeoutRef.current = window.setTimeout(poll, pollingInterval);\n };\n\n React.useEffect(() => {\n timeoutRef.current = window.setTimeout(poll, pollingInterval);\n }, []);\n\n React.useEffect(() => {\n if (FunctionHelper.isFunction(callback))\n callback();\n }, [pollingTrigger]);\n\n return () => window.clearTimeout(timeoutRef.current);\n}","import { usePolling } from 'libs/common/react/hooks/UsePolling';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\n\nexport interface AnonSession {\n sessionId: string;\n sessionName: string;\n}\n\nexport interface AnonSessions extends Record<string, AnonSession> {}\n\nexport function useAnonSessions(shareId: string): AnonSessions {\n const fetch = Flight.useGetFetch();\n const anonSessionsRequest = shareId && ShareRequests.getAnonSessions(shareId);\n const anonSessionsResponse = Flight.useBasicFetch<AnonSession[]>(anonSessionsRequest);\n\n usePolling(() => fetch(anonSessionsRequest), 5000);\n\n if (!anonSessionsResponse.data?.length)\n return {};\n\n return anonSessionsResponse.data.reduce((prev, current) => ({ ...prev, [current.sessionId]: current }), {});\n}","import { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { User } from 'libs/shared/interfaces';\n\nexport function useChunkedUsersResponse(usersIds: string[]) {\n const userIdChunks = ArrayHelper.chunk<string>(usersIds ?? [], 25);\n const usersResponse = Flight.useBasicFetchAll<User[]>(userIdChunks.map(chunk => UserRequests.getById(chunk)));\n const users = ArrayHelper.flatten<User>(usersResponse.data);\n return { users, isLoading: !usersResponse.hasCompleted, usersResponse };\n}","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\",\"thumbnailContainer\":\"d3CKN\",\"insightsMask\":\"KM76U\",\"requireMarking\":\"peLH7\",\"badge\":\"mVu0E\",\"bar\":\"zO3MS\",\"a\":\"K1jW5\",\"expandBar\":\"YITJl\",\"b\":\"tCpLF\",\"c\":\"lC0cq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnail } from 'libs/shared/components/thumbnails/collection/CollectionThumbnail';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image, Playlist, Series } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst namespace = 'shared.sharedObjectImage';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction InsightsMask() {\n return (\n <div className={`d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center`}>\n <div className='position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3'></div>\n <div className='d-flex align-items-end gap-2 h-50 z-1'>\n <div className='d-flex align-items-end h-50'>\n <div className={`${styles.bar} ${styles.a} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-75'>\n <div className={`${styles.bar} ${styles.b} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-100'>\n <div className={`${styles.bar} ${styles.c} rounded shadow`}></div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\nSharedObjectImage.defaultProps = {\n imageOptions: { size: ImageSize.Small }\n};\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n requireMarking?: number;\n imageOptions?: ImageOptions;\n showInsightsMask?: boolean;\n showCollectionMask?: boolean;\n showVideoCount?: boolean;\n thumbnailSize?: 'sm' | 'md';\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object);\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n const metadataFlags = !props.showVideoMetadata ? {\n hideDuration: true,\n hideMask: true,\n hideRating: true,\n hideVideoTypeBadge: true\n } : {};\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <div className={`${styles.thumbnailContainer} position-relative`}>\n {props.showInsightsMask && <InsightsMask />}\n <AppLink appLink={props.appLink}>\n <VideoThumbnail\n video={props.object}\n size={props.thumbnailSize}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n {...metadataFlags}\n />\n </AppLink>\n {!!props.requireMarking && (\n <div className={`${props.showInsightsMask && styles.requireMarking} position-absolute bottom-0 end-0 z-1 m-2`}>\n <div className={`${styles.badge} d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n </div>\n )}\n </div>\n }\n {!useVideoThumbnail &&\n <>\n {'videos' in (props.object as Playlist | Series) ? (\n <CollectionThumbnail\n collection={props.object}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n showMask={props.showCollectionMask}\n showVideoCount={props.showVideoCount}\n />\n ) : (\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n >\n {imageFallbackComponent}\n </BaseImage>\n )}\n </>\n }\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailTitle\":\"OsWjL\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './collection-thumbnail-title.scss';\n\ninterface BaseCollectionThumbnailTitleProps {\n title: string;\n}\n\nfunction BaseCollectionThumbnailTitle(props: BaseCollectionThumbnailTitleProps): JSX.Element {\n return (\n <h3 title={props.title} className='h6'>{props.title}</h3>\n );\n}\n\ninterface CollectionThumbnailTitleProps extends BaseCollectionThumbnailTitleProps {\n appLink: Core.AppLink;\n}\n\nexport function CollectionThumbnailTitle(props: CollectionThumbnailTitleProps) {\n if (!props.appLink) {\n return (\n <BaseCollectionThumbnailTitle {...props} />\n );\n }\n \n return (\n <AppLink appLink={props.appLink} className={`${styles.thumbnailTitle}`}>\n <BaseCollectionThumbnailTitle {...props} />\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"M4zat\",\"mask\":\"r0Ztg\",\"thumbnailContainer\":\"uD9dz\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnailTitle } from 'libs/shared/components/thumbnails/collection/title/CollectionThumbnailTitle';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Playlist, Series } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'shared.collectionThumbnail';\n\ntype SupportedContentType = Playlist | Series;\n\ninterface CollectionThumbnailProps {\n appLink?: Core.AppLink\n collection: SupportedContentType;\n imageOptions?: ImageOptions;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showMask?: boolean;\n showVideoCount?: boolean;\n title?: string;\n titleAppLink?: Core.AppLink;\n subText?: string;\n subTextAppLink?: Core.AppLink;\n hoverText?: string;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps) {\n function getFirstVideo() {\n let collectionVideos = props.collection?.videos;\n\n if (!collectionVideos)\n return;\n\n if (!collectionVideos.count && props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.clips.count)\n collectionVideos = playlist.clips;\n\n if (playlist.interactives.count)\n collectionVideos = playlist.interactives;\n }\n\n return ArrayHelper.first(collectionVideos.data);\n }\n\n function getVideoCount() {\n let totalCount = 0;\n\n if (props.collection.videos && props.collection.videos.count) {\n totalCount += props.collection.videos.count;\n }\n\n if (props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.interactives?.count)\n totalCount += playlist.interactives.count;\n\n if (playlist.clips?.count)\n totalCount += playlist.clips.count;\n }\n\n return totalCount;\n }\n\n function getEntityType(collection: SupportedContentType) {\n if (MasterTypeHelper.isType<Playlist>(collection, MasterType.Playlist)) {\n return EntityType.Playlist;\n }\n\n if (MasterTypeHelper.isType<Series>(collection, MasterType.Series)) {\n return EntityType.Series;\n }\n }\n\n const firstVideo = getFirstVideo();\n const videoCount = getVideoCount();\n const showTexts = props.title?.length || props.subText?.length;\n\n const analyticsData = {\n id: props.collection.id.toString(),\n name: props.collection.name,\n\n ...props.analyticsData\n };\n\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: getEntityType(props.collection),\n \n ...props.analyticsOptions\n };\n\n return (\n <div>\n <div className={`position-relative ${styles.thumbnailContainer} z-1`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {props.showMask &&\n <div className={`${styles.mask} position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none`}>\n <div className={`${styles.badge} d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Play} className='svg-container text-white' />\n <p className='d-inline fw-medium text-white mb-0'>\n {props.hoverText?.length ?\n <span>{props.hoverText}</span> :\n <Text namespace={namespace} phrase='playAll' />\n }\n </p>\n </div>\n </div>\n }\n\n {firstVideo &&\n <VideoThumbnail\n video={firstVideo}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n hideRating\n hideDuration\n hideVideoTypeBadge\n />\n }\n\n {!firstVideo &&\n <div className='ratio ratio-16x9 bg-light rounded-3'>\n <div className='d-flex justify-content-center align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.Play} className='w-33 opacity-25 text-gray-400' />\n </div>\n </div>\n }\n\n {props.showVideoCount &&\n <div className={`${styles.badge} d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Series} className='svg-container text-white me-1' />\n <p className='d-inline fw-semibold text-white mb-0'>\n <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n </p>\n </div>\n }\n </AppLink>\n\n </div>\n \n {showTexts &&\n <div className='mt-2 d-flex flex-column'>\n {props.subText &&\n <TitleSubText title={props.subText} appLink={props.subTextAppLink}>\n {props.subText}\n </TitleSubText>\n }\n {props.title &&\n <CollectionThumbnailTitle\n title={props.collection.name}\n appLink={props.titleAppLink}\n />\n }\n </div>\n }\n </div>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsRequestFilter, Engagement } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nexport const VideoViewRequests = {\n individualEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includeAnonViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n if (includeAnonViews)\n queryParams.includeAnonViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map', queryParams),\n key: getAnalyticsRequestKey(`engagement:${objectId}:${includeAnonViews}`, filter, sharerId),\n formatData: (data: any) => {\n return {\n ...data,\n data: data.data?.map((d: any) => ({\n ...d,\n heatMap: d.heatMap ?? []\n }))\n };\n },\n normalize: false\n };\n },\n \n aggregateEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includeAnonViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includeAnonViews)\n queryParams.includeAnonViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map/aggregations', queryParams),\n key: getAnalyticsRequestKey(`aggregate:engagement:${objectId}:${includeAnonViews}`, filter, sharerId),\n formatData: (data: Engagement) => {\n return {\n ...data,\n heatMap: data.heatMap ?? []\n };\n },\n normalize: false\n };\n },\n \n views(\n filter: AnalyticsRequestFilter,\n objectId?: string,\n sharerId?: string,\n includeAnonViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n };\n\n if (objectId)\n queryParams.objectId = objectId;\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includeAnonViews)\n queryParams.includeAnonViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/video-views', queryParams),\n key: getAnalyticsRequestKey(`video:views:${objectId}:${includeAnonViews}`, filter, sharerId),\n normalize: false\n };\n }\n};","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { ShareAvatar } from 'apps/share-v2/components/ShareAvatar';\nimport { Pincode } from 'apps/share-v2/interfaces/Pincode';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\ninterface ShareOptionsProps {\n sharedObject?: BaseObject;\n shareLink?: ShareLink;\n pinCode?: Pincode;\n classroom?: Classroom;\n}\n\nexport function ShareOptions(props: ShareOptionsProps) {\n function onExpandCode() {\n console.log('Expanding code..');\n }\n\n const qrCodeValue = props.shareLink?.link?.shortenedUrl ?? '';\n const videoAppLink = VideoAppLinkHelper.getAppLink(props.sharedObject);\n const url = AppLinkHelper.getHref(videoAppLink);\n \n return (\n <div>\n <h3>Share information</h3>\n <div className='mb-4 bg-light-blue p-3 rounded-3'>\n <div className='d-flex gap-3'>\n { props.sharedObject && (\n <div style={{ minWidth: 220 }} className='d-flex flex-column'>\n <SharedObjectImage\n object={props.sharedObject}\n showVideoMetadata\n locationContext={LocationContext.Insights}\n imageOptions={{ size: ImageSize.Medium }}\n showCollectionMask\n showVideoCount\n appLink={videoAppLink}\n />\n </div>\n )}\n <div className='d-flex flex-column justify-content-between'>\n <div className='d-flex align-items-center'>\n <a href={url} className='cursor-pointer h6 mb-0 d-inline me-2'>{props.sharedObject?.name}</a>\n <IconButton\n svgName={cvSvgLibrary.NewWindow}\n appLink={videoAppLink}\n svgSize={SvgContainerSize.Small}\n className='d-inline-block'\n customSize\n />\n </div>\n {props.shareLink && <ShareAvatar shareLink={props.shareLink} classroomName={props.classroom?.name} />}\n <div className='d-flex gap-2'>\n <IconButton\n svgName={cvSvgLibrary.Share}\n className='btn btn-outline-dark'\n appLink={{\n application: AppChannels.SHARE_V2,\n action: Actions.ShareV2.LINK,\n args: [props.sharedObject?.id],\n params: {\n entityType: props.sharedObject?.type,\n shareId: props.shareLink?.shareId\n }\n }}\n >\n Share a link or embed\n </IconButton>\n <IconButton\n svgName={cvSvgLibrary.Download}\n className='btn btn-outline-dark'\n appLink={{\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.QR_CODE,\n params: {\n value: qrCodeValue\n }\n }}\n >\n QR code\n </IconButton>\n </div>\n </div>\n\n <div className='flex-grow-1' />\n\n {props.pinCode && (\n <div className='border p-3 rounded-3 d-flex flex-column align-items-center bg-white'>\n <p>Go to <a href='https://staging.clickview.net/pin' target='_blank' className='text-info'>staging.clickview.net/pin</a> and enter PIN:</p>\n <div className='d-flex align-items-center'>\n <h4 className='mb-0 pb-0 me-1'>{props.pinCode?.code}</h4>\n <CopyToClipboard text={props.pinCode?.code}>\n <IconButton\n svgName={cvSvgLibrary.Copy}\n className='btn'\n />\n </CopyToClipboard>\n <IconButton\n svgName={cvSvgLibrary.NewWindow}\n onClick={onExpandCode}\n className='btn'\n />\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { usePolling } from 'libs/common/react/hooks/UsePolling';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EngagementTable } from 'libs/shared/apps/analytics/components/engagement-table/EngagementTable';\nimport { useAnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { useChunkedUsersResponse } from 'libs/shared/apps/analytics/hooks/UseEngagementUsers';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { getFilterParamsKey } from 'libs/shared/apps/analytics/utils/FilterParamUtils';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { AnalyticsRequestFilter, Classroom, Config, CurrentUser, Engagement, IndividualEngagementResponse, Playlist, Series, User, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { ShareOptions } from 'apps/insights/components/share-options/ShareOptions';\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { getInsightsClipTabs, getInsightsInteractiveTabs, getInsightsPlaylistTabs, getInsightsSeriesTabs, getInsightsVideoTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareRequests } from 'apps/share-v2/flight-requests/ShareRequests';\nimport { Pincode } from 'apps/share-v2/interfaces/Pincode';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\nimport { ShareLinkHelper } from 'apps/share-v2/utils/ShareLinkHelper';\n\ninterface ShareOptionsViewProps {\n objectId: string;\n typeId: MasterType;\n shareId?: string;\n}\n\nexport function ShareOptionsView(props: ShareOptionsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n const fetch = Flight.useGetFetch();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const shareLink = Flight.useBasicFetch<ShareLink>(props.shareId && ShareRequests.getShareLink(props.shareId));\n const pinCode = Flight.useBasicFetch<Pincode>(props.shareId && ShareRequests.getPincodeByShareId(props.shareId));\n const classRoomId = ShareLinkHelper.getClassroomId(shareLink.data);\n const classroom = Flight.useBasicFetch<Classroom>(classRoomId && ClassroomRequests.getClassroom(classRoomId));\n\n const { hasShareFlowV2, publicInteractiveAttempts } = useSettings(null);\n const { hasPermissions } = usePermissions();\n\n const isVideo = () => [ MasterType.Video, MasterType.Clip, MasterType.Interactive ].includes(props.typeId);\n const isSeries = () => props.typeId === MasterType.Series;\n const isPlaylist = () => props.typeId === MasterType.Playlist;\n\n const videoRequest = isVideo() && VideoHelper.getVideoRequest(props.objectId, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const seriesRequest = isSeries() && SeriesRequests.series(props.objectId);\n const series = Flight.useBasicFetch<Series>(seriesRequest);\n\n const playlistRequest = isPlaylist() && PlaylistRequests.getPlaylist(props.objectId);\n const playlist = Flight.useBasicFetch<Playlist>(playlistRequest);\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams,\n shareId: props.shareId\n };\n\n const requestFilter: AnalyticsRequestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n };\n\n const engagementRequest = currentUser.data &&\n VideoViewRequests.individualEngagement(\n props.objectId,\n requestFilter,\n currentUser.data?.id,\n publicInteractiveAttempts\n );\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(engagementRequest);\n usePolling(() => fetch(engagementRequest), 5000);\n\n const userIds = individualEngagement.data?.data?.map(d => d.userId).filter(Boolean) || [];\n \n const { users, isLoading } = useChunkedUsersResponse(userIds);\n const anonSessions = useAnonSessions(props.shareId);\n\n const fakeEngagement = useGetFakeEngagement(currentUser.data, shareLink.data, individualEngagement.data);\n\n useLockContentWidth();\n useSetPageMetadata({ title: video.data?.name ?? series.data?.name ?? playlist.data?.name });\n useHandleObjectError([ video, series, playlist ]);\n\n const tableDataLoaded = !!individualEngagement.data && (!userIds.length || !isLoading);\n const tableRowsWillBeEmpty = !fakeEngagement.length;\n const showTableEmptyState = !tableDataLoaded || tableRowsWillBeEmpty;\n\n console.log({\n individualEngagementLength: individualEngagement.data?.data.length,\n userIdsLength: userIds.length,\n anonSessionsLength: Object.keys(anonSessions).length,\n fakeEngagementLength: fakeEngagement.length\n });\n\n function getInsightsTabs() {\n if (props.typeId === MasterType.Interactive)\n return getInsightsInteractiveTabs(props.objectId, 'shareOptions', params, hasShareFlowV2);\n\n if (props.typeId === MasterType.Clip)\n return getInsightsClipTabs(props.objectId, 'shareOptions', params, hasShareFlowV2);\n\n if (props.typeId === MasterType.Video)\n return getInsightsVideoTabs(props.objectId, 'shareOptions', params, hasShareFlowV2);\n\n if (props.typeId === MasterType.Series)\n return getInsightsSeriesTabs(props.objectId, 'shareOptions', params);\n\n if (props.typeId === MasterType.Playlist)\n return getInsightsPlaylistTabs(props.objectId, 'shareOptions', params);\n }\n\n function renderEmptyState() {\n if (!shareLink.data) {\n return (\n <div style={{ minHeight: 400 }} className='border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center'>\n </div>\n );\n }\n\n if (shareLink.data?.type === ShareType.Open) {\n return (\n <div style={{ minHeight: 400 }} className='d-flex flex-column align-items-center border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center'>\n <img style={{ maxHeight: 200 }} src={ImageUrls.EmptyStates.SHARE_V2} />\n <h4 className='mt-4'>Share open session to start collecting student data</h4>\n </div>\n );\n }\n\n return (\n <div style={{ minHeight: 400 }} className='border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center'>\n <h4>Waiting for students to view...</h4>\n </div>\n );\n }\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data ?? series.data ?? playlist.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsTabs()}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n hasShareFlowV2={hasShareFlowV2}\n shareId={props.shareId}\n />\n <ShareOptions\n sharedObject={video.data ?? series.data ?? playlist.data}\n shareLink={shareLink.data}\n pinCode={pinCode.data}\n classroom={classroom.data}\n />\n <div className='d-flex align-items-center mt-5'>\n <h3 className='p-0 m-0'>{shareLink.data?.type === ShareType.Classroom ? 'All recipients' : 'Students who have viewed this video'}</h3>\n {shareLink.data?.type === ShareType.Classroom && (\n <IconButton\n svgName={cvSvgLibrary.Plus}\n onClick={() => console.log('Add new student..')}\n className='btn btn-outline-dark ms-auto'\n >\n Add new student\n </IconButton>\n )}\n </div>\n <div className='col-12 mt-2 mb-5'>\n <EngagementTable\n key={getFilterParamsKey({ ...audienceAppLinkParams, ...dateRangeAppLinkParams })}\n engagement={fakeEngagement}\n users={users ?? []}\n imageCdnUrl={config.data?.imageCdnUrl}\n anonymiseUsers={anonymiseUsers}\n border\n anonSessions={anonSessions}\n hideWhenEmpty={false}\n theme={{\n header: showTableEmptyState ? 'border-0' : 'border-bottom',\n table: showTableEmptyState ? 'bg-white rounded px-0 rounded-bottom-0' : 'bg-white rounded px-0'\n }}\n />\n {showTableEmptyState && renderEmptyState()}\n </div>\n </div>\n );\n}\n\nfunction useGetFakeEngagement(\n currentUser: CurrentUser,\n shareLink: ShareLink,\n individualEngagement: IndividualEngagementResponse\n) {\n const fetch = Flight.useGetFetch();\n\n const classroomId = shareLink?.recipients?.[0]?.recipientTypeId === MasterType.Classroom &&\n shareLink.recipients[0].recipientId;\n\n const getClassroomRequest = (cursor: string) => classroomId\n && ClassroomRequests.getClassroomStudents(classroomId, cursor);\n const clasroomStudents = useFetchAll<User>(\n getClassroomRequest,\n cursor => fetch(getClassroomRequest(cursor))\n );\n\n const engagementMap = individualEngagement?.data?.reduce<Record<string, Engagement>>((prev, next) =>\n ({ ...prev, [next.userId]: next }), {}) ?? {};\n \n const fakeEngagement = clasroomStudents.items?.length ?\n clasroomStudents.items.map<Engagement>(user => {\n const engagement = engagementMap[user.id];\n\n if (engagement)\n return null;\n\n return {\n customerId: currentUser?.customerId,\n engagementRate: 0,\n heatMap: [],\n userId: user.id,\n videoDuration: 500,\n viewCount: 0,\n videoId: null,\n userIds: [],\n sessionId: null,\n sessionIds: [],\n user\n };\n }).filter(e => !!e)\n : [];\n\n return [ ...individualEngagement?.data ?? [], ...fakeEngagement ];\n}","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\nimport { ShareLink } from '../interfaces/ShareLink';\n\ninterface ShareAvatarProps {\n shareLink: Partial<ShareLink>;\n classroomName?: string;\n hideSubtitle?: boolean;\n svgSize?: SvgContainerSize;\n svgWrapperClassName?: string;\n}\n\nexport function ShareAvatar(props: ShareAvatarProps): JSX.Element {\n return (\n <div className='d-flex align-items-center'>\n <div className='d-flex align-items-center justify-content-center'>\n <div>\n <IconCircle\n svgName={icons[props.shareLink.type]}\n variant={iconColours[props.shareLink.type]}\n textVariant='white'\n svgWrapperClassName={props.svgWrapperClassName ?? 'p-1'}\n svgSize={props.svgSize ?? SvgContainerSize.Standard}\n />\n </div>\n <div className='d-flex flex-column ms-2'>\n <label className='m-0'>{getTitle(props)}</label>\n {!props.hideSubtitle && <span className='text-secondary'>{getSubtitle(props)}</span>}\n </div>\n </div>\n </div>\n );\n}\n\nconst icons = {\n [ShareType.Open]: cvSvgLibrary.School,\n [ShareType.Link]: cvSvgLibrary.Link,\n [ShareType.Classroom]: cvSvgLibrary.Classrooms,\n [ShareType.Live]: cvSvgLibrary.Play\n};\n\nconst iconColours = {\n [ShareType.Open]: 'blue',\n [ShareType.Link]: 'black',\n [ShareType.Classroom]: 'teal',\n [ShareType.Live]: 'purple'\n};\n\nconst titles = {\n [ShareType.Open]: 'Open classroom',\n [ShareType.Link]: 'Link',\n [ShareType.Classroom]: 'Classroom',\n [ShareType.Live]: 'Live'\n};\n\nfunction pluralize(count: number, singular: string, plural: string) {\n return count === 1 ? singular : plural;\n}\n\nfunction getTitle({ shareLink, classroomName }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom && classroomName)\n return classroomName;\n\n return titles[shareLink.type];\n}\n\nfunction getSubtitle({ shareLink }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom) {\n const groupCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.ClassroomGroup).length ?? 0;\n const studentCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.User).length ?? 0;\n\n if (groupCount && studentCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')}, ${studentCount} ${pluralize(studentCount, 'student', 'students')} can view`;\n\n if (groupCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')} can view`;\n\n if (studentCount)\n return `${studentCount} ${pluralize(studentCount, 'student', 'students')} can view`;\n\n return `All students in classroom can view`;\n }\n\n if (shareLink.type === ShareType.Open)\n return 'Students watch using a PIN code';\n\n if (shareLink.type === ShareType.Link) {\n if ([ SharePrivacy.JustMySchool, SharePrivacy.Protected ].includes(shareLink.privacy))\n return 'Respect ratings and restrictions';\n\n if (shareLink.privacy === SharePrivacy.JustMySchoolOverrideRestriction)\n return 'Anyone in your school can view';\n\n if (shareLink.privacy === SharePrivacy.ProtectedOverrideRestriction)\n return 'Anyone signed into ClickView can view';\n\n if (shareLink.privacy === SharePrivacy.Public)\n return 'Anyone with a link can view';\n\n if (shareLink.privacy === SharePrivacy.PinCode)\n return 'Anyone with a PIN code can view';\n }\n\n if (shareLink.type === ShareType.Live)\n return 'Live now';\n\n return 'Anyone signed into ClickView can view';\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","export enum ShareType {\n Link = 'Link',\n Classroom = 'Classroom',\n Open = 'Open',\n Live = 'Live'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { CreateShareLinkRequest } from 'apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n scopeId?: string;\n}\n\nexport const ShareRequests = {\n createShareLink(\n data: CreateShareLinkRequest,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2:link',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [\n `share:link:object:${data.objectId}`,\n `privacy:${data.objectId}`,\n 'sent:shares',\n 'get:share-v2:shares:object'\n ],\n success,\n error,\n always\n };\n },\n\n getShareLink(\n shareId: string,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `get:share-v2:link:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSharesByObjectId(\n objectId: string | number,\n success?: (shares: ShareLink[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<ShareLink>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const adaptedParams = {\n scopeId: params.scopeId,\n limit: params.limit || 25,\n offset: parseInt(params.cursor) || 0\n };\n\n const key = Object.values(adaptedParams).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', adaptedParams),\n key: `sent:shares-v2:${key}`,\n formatData: (response: ShareLink[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: adaptedParams.offset + response.length\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n createPincode(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: 'create:share-v2:pincode',\n type: HttpVerbs.POST\n };\n },\n\n getPincode(code: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\nimport { ShareLink } from '../interfaces/ShareLink';\n\nconst namespace = 'share.shareLinkInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacy;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getClassroomId(shareLink: ShareLink | undefined): string {\n if (!shareLink)\n return '';\n\n if (shareLink.type !== ShareType.Classroom)\n return '';\n\n const classroom = shareLink.recipients?.find(r => r.recipientTypeId === MasterType.Classroom);\n\n if (classroom)\n return classroom.recipientId.toString();\n\n const recipientWithScope = shareLink.recipients?.find(r => r.scopeId);\n\n return recipientWithScope?.scopeId.toString() || '';\n }\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["DEFAULT_POLLING_INTERVAL","usePolling","callback","pollingInterval","pollingTrigger","setPollingTrigger","timeoutRef","t","current","window","setTimeout","clearTimeout","useAnonSessions","shareId","fetch","anonSessionsRequest","anonSessionsResponse","data","length","reduce","prev","sessionId","useChunkedUsersResponse","usersIds","userIdChunks","usersResponse","map","chunk","users","isLoading","hasCompleted","namespace","BASE_IMAGE_CLASS_NAME","InsightsMask","className","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","useVideoThumbnail","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","type","svgContainerClassName","url","getBgColorClass","name","extraClasses","getImageProps","metadataFlags","showVideoMetadata","hideDuration","hideMask","hideRating","hideVideoTypeBadge","showInsightsMask","AppLink","appLink","VideoThumbnail","video","size","thumbnailSize","imageOptions","textPosition","ThumbnailTextPosition","requireMarking","Text","phrase","options","smartCount","CollectionThumbnail","collection","analyticsData","id","analyticsOptions","entity","ShareViewHelper","actionType","location","locationContext","showMask","showCollectionMask","showVideoCount","BaseImage","defaultProps","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","count","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","svgName","hoverText","TitleSubText","subTextAppLink","titleAppLink","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","VideoViewRequests","individualEngagement","objectId","filter","sharerId","includeAnonViews","queryParams","key","formatData","d","heatMap","normalize","aggregateEngagement","views","timeOffset","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","ShareOptions","qrCodeValue","shareLink","link","shortenedUrl","videoAppLink","VideoAppLinkHelper","sharedObject","minWidth","href","IconButton","svgSize","S","customSize","ShareAvatar","classroomName","classroom","application","action","args","params","entityType","value","pinCode","target","code","CopyToClipboard","text","onClick","console","log","ShareOptionsView","anonymiseUsers","config","ConfigRequests","ShareRequests","classRoomId","ShareLinkHelper","ClassroomRequests","useSettings","hasShareFlowV2","publicInteractiveAttempts","hasPermissions","usePermissions","videoRequest","includes","currentUser","UserRequests","seriesRequest","SeriesRequests","series","playlistRequest","PlaylistRequests","audienceAppLinkParams","dateRangeAppLinkParams","requestFilter","engagementRequest","userIds","userId","Boolean","anonSessions","fakeEngagement","classroomId","recipients","recipientTypeId","recipientId","getClassroomRequest","cursor","clasroomStudents","engagementMap","next","items","user","customerId","engagementRate","videoDuration","viewCount","videoId","sessionIds","e","useGetFakeEngagement","useLockContentWidth","useSetPageMetadata","tableDataLoaded","tableRowsWillBeEmpty","showTableEmptyState","individualEngagementLength","userIdsLength","anonSessionsLength","Object","keys","fakeEngagementLength","InsightsHeader","tabs","hasAnalytics","PermissionName","analyticsWebUrl","ShareType","EngagementTable","engagement","imageCdnUrl","border","hideWhenEmpty","theme","header","table","minHeight","maxHeight","src","ImageUrls","renderEmptyState","icons","variant","iconColours","textVariant","svgWrapperClassName","titles","hideSubtitle","groupCount","r","studentCount","pluralize","getSubtitle","singular","plural","SharePrivacy","normalizeOptions","createShareLink","success","error","always","invalidationKeys","getShareLink","getSharesByObjectId","getSentShares","adaptedParams","scopeId","limit","offset","parseInt","values","response","pagination","cursors","createPincode","getPincode","getPincodeByShareId","getPhrase","getPrivateIconAndText","entityTypeId","hasStudentExp","yearGroups","icon","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","isToday","dayDifference","Date","days","restriction","_restrictions","yearGroup","maxYearGroup","minAllowedYearGroup","getClassroomId","find","recipientWithScope","deselectCurrent","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","preventDefault","clipboardData","warn","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","err","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","Symbol","iterator","constructor","prototype","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","i","arguments","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_assertThisInitialized","self","ReferenceError","_getPrototypeOf","getPrototypeOf","_React$PureComponent","subClass","superClass","TypeError","create","_inherits","Constructor","protoProps","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","valueOf","call","_isNativeReflectConstruct","result","Super","NewTarget","this","_possibleConstructorReturn","_this","instance","_classCallCheck","_len","_key","concat","event","_this$props","children","elem","Children","only","_this$props2","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8280],{24804:(e,a,t)=>{t.d(a,{X:()=>n});var i=t(32735);const r={video:"ekpg6",notice:"lQs4F",heading:"Gt6uV",interaction:"LEfYX",button:"caHP7",edit:"de4DP",questions:"XelbS"};function n(){return i.createElement("div",{className:"px-3 w-100"},i.createElement("div",{className:"partial-loading-background ".concat(r.notice)}),i.createElement("div",{className:"partial-loading-background mb-3 ".concat(r.video)},i.createElement("div",{className:"partial-loading-background ".concat(r.questions)})),i.createElement("div",{className:"partial-loading-background mb-3 ".concat(r.heading)}),i.createElement("div",null,Array(5).fill(null).map((function(e,a){return i.createElement("div",{key:a,className:"partial-loading-background my-2 ".concat(r.interaction)})}))))}},38280:(e,a,t)=>{t.r(a),t.d(a,{SharedInteractiveView:()=>M});var i=t(32735),r=t(20354),n=t(65858),c=t(30439),d=t(4594),s=t(60051),o=t(16714),l=t(39151),u=t(1666),v=t(20768),m=t(47812),h=t(31949),p=t(26304),b=t(91286),g=t(22902),I=t(79612),k=t(76753),P=t(58321),y=t(7179),V=t(36873),f=t(44110),C=t(53073),E=t(97816),F=t(24804),w=t(84062),q=t(25758),B=t(57426),A=t(16857),N=t(71214),S={notFound:B.k,forbidden:{privacy:A.m}};function x(e){return(null==e?void 0:e._parentClip)||(null==e?void 0:e._parentVideo)}function M(e){var a,t,B,M,j,U=(0,g.T)().hasPermissions,_=r.a.useBasicFetch(l.L.config()),L=r.a.useBasicFetch(h.N.token()),G=r.a.useBasicFetch(h.N.currentUser()),T=r.a.useBasicFetch(v.b.sharedInteractiveMetadata(e.objectId,e.shareId)),X=r.a.useBasicFetch(c.o.getShareObject(e.shareId)),K=X.data&&(X.data.objectTypeId===d.E.Interactive?m.k.createViewKey(e.shareId,s.f.Share):m.k.createViewKey(e.objectId,s.f.MasterObject,e.shareId)),O=r.a.useBasicFetch(K),Z=(0,f.i)(),D=r.a.useBasicFetch((null===(a=G.data)||void 0===a?void 0:a.isAuthenticated)&&u.h.yearGroups(G.data.customerId)),H=(0,C.f)(),Q=r.a.useBasicFetch(H&&T.data&&v.b.interactive(T.data.interactiveId)),R=r.a.useBasicFetch(H&&T.data&&v.b.videoInteractives(x(T.data).id)),Y=H?n.LZ.PreviewSharedInteractive:n.LZ.PlaySharedInteractive,z=(0,P.U)({locationContext:Y}),J=z.commonVideoProps,W=z.hasCommonVideoPropsCompleted,$=(0,V.k)({video:T.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:G.data}),ee=x(T.data);(0,b.v)(T,S),(0,p.b)(T,{private:A.m}),(0,y.P)({id:e.objectId,app:"interactives",shareId:e.shareId}),(0,E.V)(null!==(t=$.videos)&&void 0!==t?t:[]),(0,I.M)(k.CG.getInteractiveMetadata({content:T.data}));var ae=T.data&&_.hasCompleted&&G.hasCompleted&&(!H||Q.hasCompleted)&&X.hasCompleted&&O.hasCompleted&&L.hasCompleted&&W;return H?ae?i.createElement(q.x,{sourceVideo:ee,currentUser:G.data,queryParams:e.queryParams,interactive:T.data,interactives:null===(B=R.data)||void 0===B?void 0:B.data,isPreviewPreventScrubbingEnabled:Q.data.preventScrubbing,audiences:Z.data,relatedVideos:$,canManageVideoAccess:U(o.C.ManageVideoAccess),commonVideoProps:J}):i.createElement(F.X,null):ae?i.createElement(w.M,{interactive:T.data,currentUser:G.data,config:_.data,audiences:Z.data,yearGroups:D.data,queryParams:e.queryParams,viewKey:O.data,relatedVideos:$,shareLink:X.data,startTime:null===(M=e.queryParams)||void 0===M?void 0:M.t,token:L.data,commonVideoProps:J,collectAnonResults:!(null===(j=G.data)||void 0===j?void 0:j.isAuthenticated)&&!!N.h.getAnonUser(e.shareId)}):i.createElement(i.Fragment,null)}}}]);
2
- //# sourceMappingURL=8280-287760fb57-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8280],{24804:(e,a,t)=>{t.d(a,{X:()=>n});var i=t(32735);const r={video:"ekpg6",notice:"lQs4F",heading:"Gt6uV",interaction:"LEfYX",button:"caHP7",edit:"de4DP",questions:"XelbS"};function n(){return i.createElement("div",{className:"px-3 w-100"},i.createElement("div",{className:"partial-loading-background ".concat(r.notice)}),i.createElement("div",{className:"partial-loading-background mb-3 ".concat(r.video)},i.createElement("div",{className:"partial-loading-background ".concat(r.questions)})),i.createElement("div",{className:"partial-loading-background mb-3 ".concat(r.heading)}),i.createElement("div",null,Array(5).fill(null).map((function(e,a){return i.createElement("div",{key:a,className:"partial-loading-background my-2 ".concat(r.interaction)})}))))}},38280:(e,a,t)=>{t.r(a),t.d(a,{SharedInteractiveView:()=>M});var i=t(32735),r=t(20354),n=t(65858),c=t(30439),d=t(4594),s=t(60051),o=t(16714),l=t(39151),u=t(1666),v=t(20768),m=t(47812),h=t(31949),p=t(26304),b=t(91286),g=t(22902),I=t(79612),k=t(76753),P=t(58321),y=t(7179),V=t(36873),f=t(44110),C=t(53073),E=t(97816),F=t(24804),w=t(84062),q=t(25758),B=t(57426),A=t(16857),N=t(71214),S={notFound:B.k,forbidden:{privacy:A.m}};function x(e){return(null==e?void 0:e._parentClip)||(null==e?void 0:e._parentVideo)}function M(e){var a,t,B,M,j,U=(0,g.T)().hasPermissions,_=r.a.useBasicFetch(l.L.config()),L=r.a.useBasicFetch(h.N.token()),G=r.a.useBasicFetch(h.N.currentUser()),T=r.a.useBasicFetch(v.b.sharedInteractiveMetadata(e.objectId,e.shareId)),X=r.a.useBasicFetch(c.o.getShareObject(e.shareId)),K=X.data&&(X.data.objectTypeId===d.E.Interactive?m.k.createViewKey(e.shareId,s.f.Share):m.k.createViewKey(e.objectId,s.f.MasterObject,e.shareId)),O=r.a.useBasicFetch(K),Z=(0,f.i)(),D=r.a.useBasicFetch((null===(a=G.data)||void 0===a?void 0:a.isAuthenticated)&&u.h.yearGroups(G.data.customerId)),H=(0,C.f)(),Q=r.a.useBasicFetch(H&&T.data&&v.b.interactive(T.data.interactiveId)),R=r.a.useBasicFetch(H&&T.data&&v.b.videoInteractives(x(T.data).id)),Y=H?n.LZ.PreviewSharedInteractive:n.LZ.PlaySharedInteractive,z=(0,P.U)({locationContext:Y}),J=z.commonVideoProps,W=z.hasCommonVideoPropsCompleted,$=(0,V.k)({video:T.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:G.data}),ee=x(T.data);(0,b.v)(T,S),(0,p.b)(T,{private:A.m}),(0,y.P)({id:e.objectId,app:"interactives",shareId:e.shareId}),(0,E.V)(null!==(t=$.videos)&&void 0!==t?t:[]),(0,I.M)(k.CG.getInteractiveMetadata({content:T.data}));var ae=T.data&&_.hasCompleted&&G.hasCompleted&&(!H||Q.hasCompleted)&&X.hasCompleted&&O.hasCompleted&&L.hasCompleted&&W;return H?ae?i.createElement(q.x,{sourceVideo:ee,currentUser:G.data,queryParams:e.queryParams,interactive:T.data,interactives:null===(B=R.data)||void 0===B?void 0:B.data,isPreviewPreventScrubbingEnabled:Q.data.preventScrubbing,audiences:Z.data,relatedVideos:$,canManageVideoAccess:U(o.C.ManageVideoAccess),commonVideoProps:J}):i.createElement(F.X,null):ae?i.createElement(w.M,{interactive:T.data,currentUser:G.data,config:_.data,audiences:Z.data,yearGroups:D.data,queryParams:e.queryParams,viewKey:O.data,relatedVideos:$,shareLink:X.data,startTime:null===(M=e.queryParams)||void 0===M?void 0:M.t,token:L.data,collectAnonResults:!(null===(j=G.data)||void 0===j?void 0:j.isAuthenticated)&&!!N.h.getAnonUser(e.shareId),commonVideoProps:J}):i.createElement(i.Fragment,null)}}}]);
2
+ //# sourceMappingURL=8280-8bb89d0a89-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8280-8bb89d0a89-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/interactive-partial-loading.scss","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/InteractivePartialLoading.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-interactive/SharedInteractiveView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"video\":\"ekpg6\",\"notice\":\"lQs4F\",\"heading\":\"Gt6uV\",\"interaction\":\"LEfYX\",\"button\":\"caHP7\",\"edit\":\"de4DP\",\"questions\":\"XelbS\"};","import React from 'react';\n\nimport styles from './interactive-partial-loading.scss';\n\nexport function InteractivePartialLoading(): React.ReactElement {\n return (\n <div className='px-3 w-100'>\n <div className={`partial-loading-background ${styles.notice}`} />\n <div className={`partial-loading-background mb-3 ${styles.video}`}>\n <div className={`partial-loading-background ${styles.questions}`}></div>\n </div>\n <div className={`partial-loading-background mb-3 ${styles.heading}`}></div>\n <div>\n {Array(5).fill(null).map((_, i) => (\n <div key={i} className={`partial-loading-background my-2 ${styles.interaction}`}></div>\n ))}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, Interactive, InteractiveCollection, InteractiveMetadata, PlayerViewKey, UnionShareObject, Video, YearGroup } from 'libs/shared/interfaces';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShouldPreviewInteractive } from 'shared/hooks/useShouldPreviewInteractive';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { InteractivePartialLoading } from 'apps/interactives/components/interactive-partial-loading/InteractivePartialLoading';\nimport { PlayInteractive } from 'apps/interactives/components/play-interactive/PlayInteractive';\nimport { PreviewInteractive } from 'apps/interactives/components/preview-interactive/PreviewInteractive';\nimport { ShareLinkNotFoundError } from 'apps/share/errors/share-link-not-found/ShareLinkNotFoundError';\nimport { ShareLinkPrivateError } from 'apps/share/errors/share-link-private/ShareLinkPrivateError';\nimport { ShareLinkFilterHelpers } from 'apps/share/filters/share-link-filter/ShareLinkFilterHelpers';\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nconst videoErrors = {\n notFound: ShareLinkNotFoundError,\n forbidden: {\n privacy: ShareLinkPrivateError\n }\n};\n\nfunction getSourceVideo(interactive: InteractiveMetadata): Clip | Video {\n return interactive?._parentClip || interactive?._parentVideo;\n}\n\nexport function SharedInteractiveView(props: ShareLinkViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const token = Flight.useBasicFetch<AuthToken>(UserRequests.token());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.sharedInteractiveMetadata(props.objectId, props.shareId)\n );\n\n const shareLink = Flight.useBasicFetch<UnionShareObject>(\n ShareRequests.getShareObject(props.shareId)\n );\n\n /**\n * If the shareLink type isn't an interactive, then it's a playlist and needs to be\n * used as context for fetching\n */\n const viewKeyRequest = shareLink.data && (shareLink.data.objectTypeId === MasterType.Interactive\n ? PlayerRequests.createViewKey(props.shareId, MediaIdType.Share)\n : PlayerRequests.createViewKey(props.objectId, MediaIdType.MasterObject, props.shareId));\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(viewKeyRequest);\n const audiences = usePresentationAudiences();\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n /**\n * Authenticated staff with Lite product access get the interactive \"Preview\" view instead\n * of the usual play view.\n */\n const shouldPreviewInteractive = useShouldPreviewInteractive();\n const interactive = Flight.useBasicFetch<Interactive>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.videoInteractives(getSourceVideo(interactiveMetadata.data).id)\n );\n\n const locationContext = shouldPreviewInteractive\n ? LocationContext.PreviewSharedInteractive\n : LocationContext.PlaySharedInteractive;\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext });\n\n\n const relatedVideos = useGetRelatedVideos({\n video: interactiveMetadata.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n const sourceVideo = getSourceVideo(interactiveMetadata.data);\n\n useHandleObjectError(interactiveMetadata, videoErrors);\n useCannotConsumeError(interactiveMetadata, { private: ShareLinkPrivateError });\n useDeepLinks({ id: props.objectId, app: 'interactives', shareId: props.shareId });\n useVideoMixin(relatedVideos.videos ?? []);\n useSetPageMetadata(PageMetadataHelper.getInteractiveMetadata({ content: interactiveMetadata.data }));\n\n const hasLoaded = (\n interactiveMetadata.data &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!shouldPreviewInteractive || interactive.hasCompleted) &&\n shareLink.hasCompleted &&\n viewKey.hasCompleted &&\n token.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (shouldPreviewInteractive) {\n // For staff, the interactive is previewed\n if (!hasLoaded)\n return <InteractivePartialLoading />;\n\n return (\n <PreviewInteractive\n sourceVideo={sourceVideo}\n currentUser={currentUser.data}\n queryParams={props.queryParams}\n interactive={interactiveMetadata.data}\n interactives={interactives.data?.data}\n isPreviewPreventScrubbingEnabled={interactive.data.preventScrubbing}\n audiences={audiences.data}\n relatedVideos={relatedVideos}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n commonVideoProps={commonVideoProps}\n />\n );\n }\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayInteractive\n interactive={interactiveMetadata.data}\n currentUser={currentUser.data}\n config={config.data}\n audiences={audiences.data}\n yearGroups={yearGroups.data}\n queryParams={props.queryParams}\n viewKey={viewKey.data}\n relatedVideos={relatedVideos}\n shareLink={shareLink.data}\n startTime={props.queryParams?.t}\n token={token.data}\n collectAnonResults={!currentUser.data?.isAuthenticated && !!ShareLinkFilterHelpers.getAnonUser(props.shareId)}\n commonVideoProps={commonVideoProps}\n />\n );\n}"],"names":["InteractivePartialLoading","className","Array","fill","map","_","i","key","videoErrors","notFound","forbidden","privacy","getSourceVideo","interactive","_parentClip","_parentVideo","SharedInteractiveView","props","hasPermissions","config","token","currentUser","interactiveMetadata","objectId","shareId","shareLink","viewKeyRequest","data","objectTypeId","viewKey","audiences","yearGroups","isAuthenticated","customerId","shouldPreviewInteractive","interactiveId","interactives","id","locationContext","commonVideoProps","hasCommonVideoPropsCompleted","relatedVideos","video","context","queryParams","contextId","moviesAndTv","mtv","sourceVideo","private","app","videos","content","hasLoaded","hasCompleted","isPreviewPreventScrubbingEnabled","preventScrubbing","canManageVideoAccess","startTime","t","collectAnonResults"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8832],{78681:(e,a,t)=>{t.d(a,{Z:()=>r});var r={ratings:function(){return{url:"/api/domain/v2/me/ratings",key:"ratings"}}}},66446:(e,a,t)=>{t.r(a),t.d(a,{StudentManagerView:()=>W});var r=t(32735),s=t(70680),n=t(23481),o=t(20354),c=t(6289),u=t(75896),i=t(14604),l=t(18559),d=t(83345),m="userManager.unknownYearGroupWarning";function p(e){var a=e.ratings.filter((function(e){return!!e.code})),t=u.m.first(a.sort((function(e,a){return e.value-a.value})));return r.createElement(d.D.Provider,{value:m},r.createElement(i.W,null,r.createElement(d.x,{phrase:"unknownYearGroupStudents"}),r.createElement("div",{className:"d-inline-flex"},r.createElement(l.C,{data:t,type:l.g.Rating,className:" mx-2"})),r.createElement(d.x,{phrase:"unknownYearGroupPrompt"})))}var v=t(35495),y=t(26055),g=t(43820),E=t(56138),h=t(39739),f=t(37395),b=t(99705),k=t(76881),S=t(39151),T=t(70145),P=t(78681),A=t(44538),N=t(31949),R=t(69883),j=t(91286),x=t(79612),U=t(12778),w=t(99742),C=t(29613),I=t(48327),M=t(47288),B=t(51180),q=t(18087),G=t(97958),L=t(35223),_=t(14070),F=t(97291),Y="userManager.studentManagerEmptyState",J=k.Y.Learner;function O(){return r.createElement(d.D.Provider,{value:Y},r.createElement(G.u,null,r.createElement(G.u.Image,{src:w.W.EmptyStates.UserManager.STUDENTS,size:"small"}),r.createElement(G.u.Heading,null,r.createElement(d.x,{phrase:"heading"})),r.createElement(G.u.Info,null,r.createElement(d.x,{phrase:"info"})),r.createElement("div",{className:"d-flex justify-content-center align-items-center"},r.createElement("div",{className:"px-1"},r.createElement(G.u.Cta,{text:n.T.getPhrase(Y,"addNew"),icon:L.vn.Plus,appLink:{application:F.O.USER_MANAGER,action:_.e.UserManager.CREATE_USER,params:{userType:J}}})),r.createElement("div",{className:"px-1"},r.createElement(G.u.Cta,{text:n.T.getPhrase(Y,"uploadAList"),icon:L.vn.Upload,appLink:{application:F.O.USER_MANAGER,action:_.e.UserManager.USER_UPLOAD_POPUP,params:{userType:J}}})))))}var V=n.T.encloseNamespace("userManager.studentManager"),D=k.Y.Learner;function W(e){var a,t,n,u,i,l,d,m,G,L;(0,x.M)({title:V("pageTitle")});var _=(0,q.Y)(D,e.queryParams),F=(0,s.I0)(),Y=(0,R.Z)(),J=o.a.useBasicFetch(A.K.getRostering()),W=o.a.useBasicFetch(N.N.currentUser()),H=o.a.useBasicFetch(S.L.config()),Z=o.a.useBasicFetch(W.data&&M.N.yearGroups(W.data.customerId)),K=o.a.useBasicFetch(!!W.data&&C.q.getYearGroupRolloverStatus(W.data.customerId)),z=o.a.useBasicFetch(!!W.data&&M.N.getIdentityProviders(W.data.customerId)),Q=o.a.useBasicFetch(T.h.userProducts()),X=o.a.useBasicFetch(P.Z.ratings()),$=(null===(a=J.data)||void 0===a?void 0:a.status)&&"None"!==J.data.status,ee=(0,B.T)(W.data,e.queryParams,D),ae=function(e){return o.a.useBasicFetch(e&&M.N.userCount(e.customerId,e.id,k.Y.Learner,{yearGroup:["0"]}))}(W.data),te=ae.data&&(null===(t=ae.data)||void 0===t?void 0:t.count)>0,re=ee.data?"results"in ee.data?ee.data.results:ee.data.data:null;o.a.useBasicFetch(M.N.authenticationMethods(null!==(u=null===(n=null==re?void 0:re.map((function(e){return e.id})))||void 0===n?void 0:n.sort())&&void 0!==u?u:[]));var se=(0,E.x)({userType:D,queryParams:e.queryParams,getUserCountRequest:M.N.userCount});(0,j.v)(ee);var ne=h.P.showEmptyState(ee,e.queryParams);return r.createElement(y.A.Provider,{value:g.a.Primary},te&&r.createElement(p,{ratings:X.data}),r.createElement("div",{className:"px-3"},r.createElement(v.g,{userType:D,appLinks:_,users:re,userCount:se.data,hasRostering:$,hasSso:!!(null===(i=z.data)||void 0===i?void 0:i.length)}),ne?r.createElement(O,null):r.createElement("main",{className:"py-3 clearfix"},r.createElement(c.G,{users:re,userType:D,config:H.data,currentUser:W.data,appLinks:_,searchEmptyState:w.W.EmptyStates.UserManager.SEARCH,totalUsers:null===(l=se.data)||void 0===l?void 0:l.count,queryParams:e.queryParams,yearGroups:Z.data,yearGroupRolloverStatus:K.data,fetchUserIds:function(a){o.a.fetch(F,M.N.getSearchUserIds(W.data.customerId,W.data.id,D,e.queryParams,a))},ssoHelpArticle:U.o.getLiteArticle(b.b.EditSsoAccounts),onClickSendVerificationEmail:function(e){o.a.fetch(F,M.N.resendVerificationEmail(e.id,W.data.customerId,(function(){Y.success(V("resendVerificationEmailSuccess",{email:e.email,escapeText:!0}))}),(function(){Y.error(V("resendVerificationEmailError",{email:e.email,escapeText:!0}))})))},onClickResendActivationEmail:function(e){o.a.fetch(F,M.N.resendActivationEmail(e.id,(function(){Y.success(V("resendActivationEmailSuccess",{email:e.email,escapeText:!0}))}),(function(){Y.error(V("resendActivationEmailError",{email:e.email,escapeText:!0}))})))},hasSso:!!(null===(d=z.data)||void 0===d?void 0:d.length),userRequest:N.N.getUserIdByQuery,selectWithSpreadsheetTemplate:I.d,hasRostering:$,products:null!==(m=Q.data.map((function(e){return e.id})))&&void 0!==m?m:[]}),!!(null===(L=null===(G=ee.data)||void 0===G?void 0:G.pagination)||void 0===L?void 0:L.cursors)&&r.createElement(f.t,{appLink:_.search,cursors:ee.data.pagination.cursors,buttonVariant:"outline-dark",className:"py-2 float-end"}))))}},29613:(e,a,t)=>{t.d(a,{q:()=>o});var r=t(99940),s=t(97395),n=t(149),o={createJob:function(e,a,t){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:r.k.POST,data:e,success:a,error:t}},getJobs:function(e){var a={},t=[],r=[];return e.cursor&&(a.cursor=e.cursor),e.sort&&("oldest"===e.sort?a.order="ASC":a.order="DESC"),e.bulkActionType?(t=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],a.type=t):a.type=n.O,e.userType&&(r=Array.isArray(e.userType)?e.userType:[e.userType],a.dataType=r),{url:s._.urlBuilder("{gateway}/v1/batch/jobs",a),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(t.sort().join(":"),":").concat(r.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,a,t){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:a,error:t}},getJobResults:function(e,a,t,r,n){var o={status:a};return t&&(o.cursor=t),{url:s._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),o),key:"job:".concat(e,":results:").concat(a,":").concat(t),success:r,error:n}},getYearGroupRolloverStatus:function(e){return{url:"{gateway}/v1/batch/validations/customers/".concat(e,"/year-group-roll-over"),key:"year:group:rollover:status"}},sendJobReports:function(e){return{url:"{gateway}/v1/batch/results/export",key:"send:job:reports:".concat(e.sort().join(":")),type:r.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}}}]);
2
+ //# sourceMappingURL=8832-73ffd39e2a-lite.chunk.js.map