@clickview/lite 0.75.0-rc.8 → 0.75.0
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.
- package/dist/bundles.json +1 -1
- package/dist/css/{7103-lite-fef3024f61.chunk.css → 2878-lite-d8e0bf912a.chunk.css} +1 -1
- package/dist/css/{1243-lite-13eda8f6a0.chunk.css → 3615-lite-240342ff8e.chunk.css} +1 -1
- package/dist/css/{1867-lite-8baa8af02b.chunk.css → 4630-lite-0157b1c437.chunk.css} +1 -1
- package/dist/css/{4203-lite-9ffab89741.chunk.css → 8362-lite-10810fdef2.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{104-7ee25cbbb8-lite.chunk.js → 104-da7394bcfa-lite.chunk.js} +2 -2
- package/dist/scripts/104-da7394bcfa-lite.chunk.js.map +1 -0
- package/dist/scripts/1192-bb27568f21-lite.chunk.js +2 -0
- package/dist/scripts/1192-bb27568f21-lite.chunk.js.map +1 -0
- package/dist/scripts/1199-cf2cb206b5-lite.chunk.js +2 -0
- package/dist/scripts/1199-cf2cb206b5-lite.chunk.js.map +1 -0
- package/dist/scripts/1502-9836df10cd-lite.chunk.js +2 -0
- package/dist/scripts/1502-9836df10cd-lite.chunk.js.map +1 -0
- package/dist/scripts/{1610-9ccecc428a-lite.chunk.js → 1610-0edaa98d40-lite.chunk.js} +2 -2
- package/dist/scripts/{1610-9ccecc428a-lite.chunk.js.map → 1610-0edaa98d40-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7103-3b181ec69b-lite.chunk.js → 2878-487c4a8e1a-lite.chunk.js} +2 -2
- package/dist/scripts/2878-487c4a8e1a-lite.chunk.js.map +1 -0
- package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js → 3057-a5bc753736-lite.chunk.js} +1 -1
- package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js.map → 3057-a5bc753736-lite.chunk.js.map} +1 -1
- package/dist/scripts/3268-7be966dc82-lite.chunk.js +3 -0
- package/dist/scripts/3268-7be966dc82-lite.chunk.js.map +1 -0
- package/dist/scripts/{1243-72f3d31787-lite.chunk.js → 3615-a0da361aa5-lite.chunk.js} +2 -2
- package/dist/scripts/3615-a0da361aa5-lite.chunk.js.map +1 -0
- package/dist/scripts/{3872-6fe7371d39-lite.chunk.js → 3872-cf9a6bdae8-lite.chunk.js} +1 -1
- package/dist/scripts/{3872-6fe7371d39-lite.chunk.js.map → 3872-cf9a6bdae8-lite.chunk.js.map} +1 -1
- package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js +2 -0
- package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js.map +1 -0
- package/dist/scripts/4208-f22ed7a148-lite.chunk.js +2 -0
- package/dist/scripts/4208-f22ed7a148-lite.chunk.js.map +1 -0
- package/dist/scripts/4598-e25e9e03d6-lite.chunk.js +2 -0
- package/dist/scripts/4598-e25e9e03d6-lite.chunk.js.map +1 -0
- package/dist/scripts/{1867-0823a787c3-lite.chunk.js → 4630-4a35ecbf2b-lite.chunk.js} +2 -2
- package/dist/scripts/4630-4a35ecbf2b-lite.chunk.js.map +1 -0
- package/dist/scripts/6475-f019242ec2-lite.chunk.js +2 -0
- package/dist/scripts/6475-f019242ec2-lite.chunk.js.map +1 -0
- package/dist/scripts/6550-1d60d863e8-lite.chunk.js +2 -0
- package/dist/scripts/6550-1d60d863e8-lite.chunk.js.map +1 -0
- package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js → 6695-4ae0acad94-lite.chunk.js} +1 -1
- package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js.map → 6695-4ae0acad94-lite.chunk.js.map} +1 -1
- package/dist/scripts/6756-3c7f911759-lite.chunk.js +3 -0
- package/dist/scripts/6756-3c7f911759-lite.chunk.js.map +1 -0
- package/dist/scripts/6790-1695fcf576-lite.chunk.js +2 -0
- package/dist/scripts/6790-1695fcf576-lite.chunk.js.map +1 -0
- package/dist/scripts/{7148-50ccb48a44-lite.chunk.js → 7148-e314dd9a4e-lite.chunk.js} +2 -2
- package/dist/scripts/7148-e314dd9a4e-lite.chunk.js.map +1 -0
- package/dist/scripts/7438-35b887a48e-lite.chunk.js +2 -0
- package/dist/scripts/7438-35b887a48e-lite.chunk.js.map +1 -0
- package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js → 8323-5694456903-lite.chunk.js} +2 -2
- package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.map → 8323-5694456903-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4203-83f90f92f3-lite.chunk.js → 8362-ed5df8f4fc-lite.chunk.js} +3 -3
- package/dist/scripts/8362-ed5df8f4fc-lite.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.map → 8362-ed5df8f4fc-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8732-3e8332e620-lite.chunk.js → 8732-dc5182fb69-lite.chunk.js} +1 -1
- package/dist/scripts/{8732-3e8332e620-lite.chunk.js.map → 8732-dc5182fb69-lite.chunk.js.map} +1 -1
- package/dist/scripts/8856-08061bbec5-lite.chunk.js +2 -0
- package/dist/scripts/8856-08061bbec5-lite.chunk.js.map +1 -0
- package/dist/scripts/{8957-bc83ea1180-lite.chunk.js → 8957-b3f0dbb85d-lite.chunk.js} +1 -1
- package/dist/scripts/{8957-bc83ea1180-lite.chunk.js.map → 8957-b3f0dbb85d-lite.chunk.js.map} +1 -1
- package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js +2 -0
- package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js.map +1 -0
- package/dist/scripts/9134-b0ae877597-lite.chunk.js +2 -0
- package/dist/scripts/9134-b0ae877597-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-58c25f6529.min.js → bundle-941a464ef0.min.js} +3 -3
- package/dist/scripts/{bundle-58c25f6529.min.js.map → bundle-941a464ef0.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/104-7ee25cbbb8-lite.chunk.js.map +0 -1
- package/dist/scripts/1074-6dadbd8187-lite.chunk.js +0 -2
- package/dist/scripts/1074-6dadbd8187-lite.chunk.js.map +0 -1
- package/dist/scripts/1192-6ac54d734b-lite.chunk.js +0 -2
- package/dist/scripts/1192-6ac54d734b-lite.chunk.js.map +0 -1
- package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js +0 -2
- package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js.map +0 -1
- package/dist/scripts/1243-72f3d31787-lite.chunk.js.map +0 -1
- package/dist/scripts/1867-0823a787c3-lite.chunk.js.map +0 -1
- package/dist/scripts/3268-aa893d0068-lite.chunk.js +0 -2
- package/dist/scripts/3268-aa893d0068-lite.chunk.js.map +0 -1
- package/dist/scripts/4208-3ba21abb7c-lite.chunk.js +0 -2
- package/dist/scripts/4208-3ba21abb7c-lite.chunk.js.map +0 -1
- package/dist/scripts/4598-f5120153c2-lite.chunk.js +0 -2
- package/dist/scripts/4598-f5120153c2-lite.chunk.js.map +0 -1
- package/dist/scripts/6475-502e390010-lite.chunk.js +0 -2
- package/dist/scripts/6475-502e390010-lite.chunk.js.map +0 -1
- package/dist/scripts/6550-c621babbcb-lite.chunk.js +0 -2
- package/dist/scripts/6550-c621babbcb-lite.chunk.js.map +0 -1
- package/dist/scripts/6756-20c0ab9591-lite.chunk.js +0 -3
- package/dist/scripts/6756-20c0ab9591-lite.chunk.js.map +0 -1
- package/dist/scripts/6790-df00506bec-lite.chunk.js +0 -2
- package/dist/scripts/6790-df00506bec-lite.chunk.js.map +0 -1
- package/dist/scripts/7103-3b181ec69b-lite.chunk.js.map +0 -1
- package/dist/scripts/7148-50ccb48a44-lite.chunk.js.map +0 -1
- package/dist/scripts/7438-1162aba8b6-lite.chunk.js +0 -2
- package/dist/scripts/7438-1162aba8b6-lite.chunk.js.map +0 -1
- package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js +0 -2
- package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js.map +0 -1
- package/dist/scripts/9003-36ab592cc5-lite.chunk.js +0 -2
- package/dist/scripts/9003-36ab592cc5-lite.chunk.js.map +0 -1
- package/dist/scripts/9042-3092af11d5-lite.chunk.js +0 -2
- package/dist/scripts/9042-3092af11d5-lite.chunk.js.map +0 -1
- package/dist/scripts/9134-7037c2c47a-lite.chunk.js +0 -2
- package/dist/scripts/9134-7037c2c47a-lite.chunk.js.map +0 -1
- /package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.LICENSE.txt → 3268-7be966dc82-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6756-20c0ab9591-lite.chunk.js.LICENSE.txt → 6756-3c7f911759-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.LICENSE.txt → 8323-5694456903-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-58c25f6529.min.js.LICENSE.txt → bundle-941a464ef0.min.js.LICENSE.txt} +0 -0
package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.map → 8323-5694456903-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8323-d6d1d07ce5-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserActionsBackButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserActionsContinueButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayoutPartialLoading.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/layout/bulk-user-actions-wizard-layout.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout.tsx","file:///app/packages/libs/shared/src/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel.ts","file:///app/packages/libs/shared/src/apps/user-manager/utils/BulkUserActionsAnalyticsHelper.ts","file:///app/packages/libs/shared/src/components/wizard/header/WizardHeader.tsx","file:///app/packages/libs/shared/src/components/wizard/step-list/WizardStepList.tsx","file:///app/packages/libs/shared/src/enums/BatchJobStatus.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/apps/user-manager/hooks/useBulkActionsUsers.ts","file:///app/packages/projects/lite/src/apps/user-manager/hooks/useBulkActionsUsersWrapper.ts"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkUserActionStepId } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\n\nconst namespace = 'userManager.userWizardBackButtons';\n\ninterface BulkUserActionsBackButtonProps {\n currentStep: BulkUserActionStepId;\n appLinks: UserManagerAppLinks;\n}\n\nexport function BulkUserActionsBackButton(props: BulkUserActionsBackButtonProps): JSX.Element {\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n\n function getActionDetailsAppLink(): Core.AppLink {\n if (!viewModel?.action)\n return null;\n \n switch (viewModel.action) {\n case 'delete':\n return props.appLinks.bulkActionsActionDetails.delete;\n case 'activation':\n return props.appLinks.bulkActionsActionDetails.activation;\n case 'yearGroupRollover':\n return props.appLinks.bulkActionsActionDetails.yearGroupRollover;\n case 'changeYearGroup':\n return props.appLinks.bulkActionsActionDetails.changeYearGroup;\n case 'addToClassroom':\n return props.appLinks.bulkActionsActionDetails.addToClassroom;\n case 'resetPassword':\n return props.appLinks.bulkActionsActionDetails.resetPassword;\n case 'resetEmail':\n return props.appLinks.bulkActionsSelectAction;\n case 'activationEmail':\n return props.appLinks.bulkActionsSelectAction;\n case 'removeFromSchool':\n return props.appLinks.bulkActionsActionDetails.removeFromSchool;\n }\n }\n\n function getAppLink(): Core.AppLink {\n switch (props.currentStep) {\n case 'review-accounts':\n return props.appLinks.userManager;\n \n case 'select-action':\n return props.appLinks.bulkActionsReviewAccounts;\n\n case 'action-details':\n return props.appLinks.bulkActionsSelectAction;\n\n case 'confirmation':\n return getActionDetailsAppLink();\n }\n }\n\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className='btn btn-link me-2'\n appLink={getAppLink()}\n >\n <Text namespace={namespace} phrase={props.currentStep === 'review-accounts' ? 'cancel' : 'back'} />\n </AppLink>\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ContextService } from 'libs/analytics/services/ContextService';\n\nimport { BulkUserActionStepId } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\nconst namespace = 'userManager.userWizardHeader';\n\ninterface BulkUserActionsContinueButtonProps {\n currentStep: BulkUserActionStepId;\n appLinks: UserManagerAppLinks;\n onFinish: () => void;\n}\n\nexport function BulkUserActionsContinueButton(props: BulkUserActionsContinueButtonProps): JSX.Element {\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n\n const { disableNext, onClickConfirm, showButtons } = React.useContext(WizardLayoutContext);\n\n const currentAppLink = ContextService.getCurrentContext().appLink;\n\n function getContinueAppLink(): Core.AppLink {\n switch (props.currentStep) {\n case 'review-accounts':\n return props.appLinks.bulkActionsSelectAction;\n case 'select-action':\n return getSelectActionAppLink();\n case 'action-details':\n return props.appLinks.bulkActionsConfirmation[viewModel?.subAction];\n default:\n return null;\n }\n }\n\n function getSelectActionAppLink(): Core.AppLink {\n if (!viewModel?.action)\n return null;\n \n switch (viewModel.action) {\n case 'delete':\n return props.appLinks.bulkActionsActionDetails.delete;\n case 'activation':\n return props.appLinks.bulkActionsActionDetails.activation;\n case 'yearGroupRollover':\n return props.appLinks.bulkActionsActionDetails.yearGroupRollover;\n case 'changeYearGroup':\n return props.appLinks.bulkActionsActionDetails.changeYearGroup;\n case 'addToClassroom':\n return props.appLinks.bulkActionsActionDetails.addToClassroom;\n case 'resetPassword':\n return props.appLinks.bulkActionsActionDetails.resetPassword;\n case 'resetEmail':\n return props.appLinks.bulkActionsConfirmation.resetEmail;\n case 'activationEmail':\n return props.appLinks.bulkActionsConfirmation.activationEmail;\n case 'removeFromSchool':\n return props.appLinks.bulkActionsActionDetails.removeFromSchool;\n }\n \n Core.ErrorHelper.throw(new DevError(`Missing switch statement case for ${viewModel.action} in BulkUserActionsContinueButton.tsx`));\n }\n\n if (currentAppLink.action === props.appLinks.bulkActionsStatus.complete.action && showButtons) {\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={props.appLinks.userManager}\n disabled={disableNext}\n onClick={props.onFinish}\n >\n <Text\n namespace={namespace}\n phrase={'finish'}\n />\n </AppLink>\n );\n }\n\n if (props.currentStep === 'confirmation') {\n return (\n <Button\n className={disableNext ? 'disabled' : ''}\n variant='dark'\n onClick={() => {\n BulkUserActionsAnalyticsHelper.onClickNext(viewModel, props.currentStep);\n onClickConfirm();\n }}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='confirm'\n />\n </Button>\n );\n }\n\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={getContinueAppLink()}\n onClick={() => BulkUserActionsAnalyticsHelper.onClickNext(viewModel, props.currentStep)}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='next'\n />\n </AppLink>\n );\n}","import React from 'react';\n\nexport function BulkUserActionsWizardLayoutPartialLoading(): React.ReactElement {\n return (\n <>\n <div className={`partial-loading-background mb-2`} style={{ height: '1.75rem', width: '15rem' }} />\n <div className={`partial-loading-background mb-3`} style={{ height: '1.5rem', width: '12rem' }} />\n <div className={`partial-loading-background mb-2`} style={{ height: '8em', width: '40rem' }} />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wizardContent\":\"UBwkq\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { BulkUserActionsBackButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserActionsBackButton';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { WizardHeader } from 'libs/shared/components/wizard/header/WizardHeader';\nimport { WizardStepList } from 'libs/shared/components/wizard/step-list/WizardStepList';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { WizardLayoutContextProvider } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { User } from 'libs/shared/interfaces';\n\nimport { BulkUserActionsContinueButton } from '../header/continue-buttons/BulkUserActionsContinueButton';\n\nimport { BulkUserActionsWizardLayoutPartialLoading } from './BulkUserActionsWizardLayoutPartialLoading';\n\nimport styles from './bulk-user-actions-wizard-layout.scss';\n\nconst namespace = 'userManager.bulkUserActionsWizardLayout';\n\nexport type BulkUserActionStepId = 'review-accounts' | 'select-action' | 'action-details' | 'confirmation' | 'status';\nexport type BulkUserActionOptions = 'delete' | 'activation' | 'changeYearGroup' | 'yearGroupRollover' | 'addToClassroom' | 'resetPassword' | 'resetEmail' | 'activationEmail' | 'removeFromSchool';\nexport type BulkUserSubAction = 'delete' | 'deactivate' | 'reactivate' | 'changeYearGroup' | 'yearGroupRollover' | 'addToClassroom' | 'resetPassword' | 'resetEmail' | 'activationEmail' | 'removeFromSchool';\n\nexport const BULK_USER_ACTIONS_NAV_LOCK_ID = 'bulk-user-actions-wizard';\n\ntype BulkUserActionsWizardLayoutProps = React.PropsWithChildren<{\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n currentStep: BulkUserActionStepId;\n users: User[];\n userCount: number;\n \n preventNavLock?: boolean;\n disableAppLinks?: boolean;\n hideHeader?: boolean;\n loaded: boolean;\n\n /**\n * Used by year level rollover to allow loading straight into the details view\n */\n preventRedirect?: boolean;\n}>;\n\nexport function BulkUserActionsWizardLayout(props: BulkUserActionsWizardLayoutProps): JSX.Element {\n const [ viewModel, setViewModel ] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const navLock = useNavLock();\n\n React.useEffect(() => {\n // If there is no view model, redirect away\n if (!viewModel?.userIdMap?.size && !props.preventRedirect) {\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n logWizardExitEvent();\n return;\n }\n\n if (props.preventNavLock)\n return;\n\n navLock.lock({\n id: BULK_USER_ACTIONS_NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody'),\n appLinkWhitelist: BulkUserActionsHelper.getWizardAppLinks(props.appLinks),\n onConfirmUnlock: () => {\n logWizardExitEvent();\n setViewModel({});\n }\n });\n\n return () => {\n navLock.unlock(BULK_USER_ACTIONS_NAV_LOCK_ID);\n };\n }, []);\n\n function onFinish(): void {\n setViewModel({});\n }\n function logWizardExitEvent(): void {\n /**\n * If there is no viewmodel present when this is called, it means the viewmodel was never\n * initialized with data. This can happen for example if the user page loads onto the wizard.\n * In this case, we don't log an exit event.\n */\n if (!viewModel)\n return;\n\n const analyticsData: HashObject = {\n step: props.currentStep,\n userCount: viewModel?.userIdMap?.size ?? 0\n };\n\n const actionName: string | null = BulkUserActionsAnalyticsHelper.getAnalyticsActionName(viewModel);\n\n if (actionName)\n analyticsData.action = actionName;\n\n AnalyticsHelper.logUserAction(analyticsData, {\n workflowPhase: WorkflowPhase.Discard,\n actionType: UserAction.BulkAction,\n location: LocationContext.BulkUserActionsWizard,\n entity: EntityType.User\n });\n }\n\n const loaded = props.loaded && !!props.users?.length;\n\n return (\n <WizardLayoutContextProvider>\n <div className='px-3'>\n <WizardHeader\n title={LanguageService.getPhrase(namespace, 'bulkActions')}\n currentStep={props.currentStep}\n hideHeader={props.hideHeader}\n loaded={props.loaded}\n continueButton={\n <BulkUserActionsContinueButton\n currentStep={props.currentStep}\n appLinks={props.appLinks}\n onFinish={onFinish}\n />\n }\n backButton={\n <BulkUserActionsBackButton currentStep={props.currentStep} appLinks={props.appLinks} />\n }\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: props.appLinks.settings\n },\n {\n name: LanguageService.getPhrase(namespace, props.userType === UserGroup.Learner ? 'studentManager' : 'staffManager'),\n appLink: props.appLinks.userManager\n },\n {\n name: LanguageService.getPhrase(namespace, 'bulkActions'),\n active: true\n }\n ]}\n />\n\n <div className='row g-0'>\n <div className='col-3'>\n <WizardStepList<BulkUserActionStepId>\n steps={BulkUserActionsHelper.getSteps(\n props.userType,\n props.userCount,\n props.appLinks,\n viewModel?.action\n )}\n currentStep={props.currentStep}\n disableAppLinks={!loaded || props.disableAppLinks}\n />\n </div>\n\n <div className={`col-9 ${styles.wizardContent}`}>\n {loaded ?\n props.children :\n <BulkUserActionsWizardLayoutPartialLoading />\n }\n </div>\n </div>\n </div>\n </WizardLayoutContextProvider>\n );\n}\n","import { Classroom, YearGroup } from 'libs/shared/interfaces';\n\nimport { BulkUserActionOptions, BulkUserSubAction } from '../../components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerQueryParams } from '../query-params/UserManagerQueryParams';\n\n// Please keep this array up to date with the interface below, so that the data we log to analytics remains accurate\nexport const BaseBulkUserActionsViewModelKeys: Array<keyof BulkUserActionsViewModel> = [\n 'userIdMap', 'params', 'action', 'subAction', 'allUsersSelected', 'allUsersCount', 'scrollContainer'\n];\n\nexport interface BulkUserActionsViewModel {\n userIdMap?: Map<string, boolean>;\n params?: UserManagerQueryParams;\n\n action?: BulkUserActionOptions; // TODO: Rename this to \"actionCategory\"\n subAction?: BulkUserSubAction; // TODO: Rename this to \"action\"\n\n // Used to determine if we can show year level rollover\n allUsersSelected?: boolean;\n allUsersCount?: number;\n scrollContainer?: HTMLElement;\n}\n\nexport interface BulkUserActionsYearGroupRolloverViewModel extends BulkUserActionsViewModel {\n yearGroup: YearGroup;\n}\n\nexport interface BulkUserActionsAddToClassroomViewModel extends BulkUserActionsViewModel {\n classroom: Classroom;\n}\n\nexport interface BulkUserActionsResetPasswordViewModel extends BulkUserActionsViewModel {\n password: string;\n changeOnNextLogin: boolean;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\n\nimport { BulkUserActionStepId } from '../components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { BaseBulkUserActionsViewModelKeys, BulkUserActionsViewModel } from '../interfaces/viewmodels/BulkUserActionsViewModel';\n\nexport const BulkUserActionsAnalyticsHelper = {\n getAnalyticsActionName(viewModel: BulkUserActionsViewModel): string | null {\n if (!viewModel?.action)\n return null;\n\n switch (viewModel.action) {\n case 'activation': {\n if (!viewModel?.subAction)\n return 'Deactivate / reactivate';\n\n if (viewModel.subAction === 'deactivate')\n return 'Deactivate';\n\n return 'Reactivate';\n }\n case 'addToClassroom':\n return 'Add to classroom';\n case 'changeYearGroup':\n return 'Change year level';\n case 'delete':\n return 'Delete user';\n case 'resetEmail':\n return 'Send password reset email';\n case 'activationEmail':\n return 'Send account activation email';\n case 'resetPassword':\n return 'Reset password';\n case 'yearGroupRollover':\n return 'Annual year level rollover';\n case 'removeFromSchool':\n return 'Remove user';\n default:\n return null;\n }\n },\n\n onClickNext(viewModel: BulkUserActionsViewModel, currentStep: BulkUserActionStepId): void {\n if (!viewModel)\n return;\n\n const analyticsData: HashObject = {\n userCount: viewModel.userIdMap.size,\n step: currentStep\n };\n\n const actionName = BulkUserActionsAnalyticsHelper.getAnalyticsActionName(viewModel);\n\n if (actionName)\n analyticsData.action = actionName;\n\n const actionData = ObjectHelper.omit(viewModel, BaseBulkUserActionsViewModelKeys);\n\n // Adds extra items like the `yearGroup` on year level actions or `password` on the reset pw action\n if (Object.keys(actionData).length)\n analyticsData.actionData = actionData;\n\n AnalyticsHelper.logUserAction(analyticsData, {\n location: LocationContext.BulkUserActionsWizard,\n workflowPhase: WorkflowPhase.Next,\n actionType: UserAction.BulkAction,\n entity: EntityType.User\n });\n },\n\n logYearGroupRolloverEntry(location: LocationContext): void {\n AnalyticsHelper.logUserAction({\n action: BulkUserActionsAnalyticsHelper.getAnalyticsActionName({ action: 'yearGroupRollover' })\n }, {\n entity: EntityType.User,\n actionType: UserAction.BulkAction,\n workflowPhase: WorkflowPhase.Start,\n location\n });\n },\n\n getJobStatus(status: BatchJobStatus): string | null {\n switch (status) {\n case BatchJobStatus.Completed:\n return 'Success';\n case BatchJobStatus.CompletedWithError:\n return 'Completed with some errors';\n case BatchJobStatus.Failed:\n return 'Failed';\n default:\n return null;\n }\n }\n};","import React from 'react';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\ninterface WizardHeaderProps<TStepId> {\n currentStep: TStepId;\n title: string;\n continueButton: JSX.Element;\n backButton: JSX.Element;\n breadcrumbs?: Breadcrumb[];\n hideHeader?: boolean;\n loaded: boolean;\n}\n\nexport function WizardHeader<TStepId>(props: WizardHeaderProps<TStepId>): JSX.Element {\n const { showButtons } = React.useContext(WizardLayoutContext);\n\n return (\n <div className='d-flex justify-content-between'>\n {!props.hideHeader ? (\n <div>\n <h1 className='h2'>{props.title}</h1>\n\n {props.breadcrumbs &&\n <div className='pb-3'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n }\n </div>\n ) : <div/>}\n\n {props.loaded && showButtons && (\n <div className='d-flex align-items-center'>\n {props.backButton}\n {props.continueButton}\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nconst namespace = 'shared.wizardStepList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface WizardStep<StepId extends string> {\n id: StepId;\n text: string;\n appLink?: Core.AppLink;\n subText?: string;\n disabled?: boolean;\n}\n\ninterface WizardStepListTheme {\n item?: string;\n itemsContainer?: string;\n itemContent?: string;\n isSelectedOverride?: string;\n isCompletedOverride?: string;\n}\n\ninterface WizardStepListItemProps {\n appLink: Core.AppLink;\n isSelected: boolean;\n isCompleted: boolean;\n text: string;\n subText?: string;\n disabled: boolean;\n index: number;\n hideStepNumber?: boolean;\n theme?: WizardStepListTheme;\n}\n\nfunction WizardStepListItem(props: WizardStepListItemProps): JSX.Element {\n const content = (\n <>\n <div className='d-flex'>\n {!props.hideStepNumber && <div className='flex-shrink-0 flex-grow-0'>{`${props.index + 1}.`} </div>}\n <div>{props.text}</div>\n </div>\n\n {props.subText && (\n <div className='ms-2 ps-1 pt-1'>\n {props.subText}\n </div>\n )}\n </>\n );\n\n \n let className = 'px-2 py-1 mb-1 rounded d-inline-block';\n\n if (props.isSelected) {\n className += ` ${props.theme?.isSelectedOverride || 'bg-light-blue fw-semibold'}`;\n }\n\n if ((!props.isSelected && props.isCompleted))\n className += ` ${props.theme?.isCompletedOverride || 'text-info'}`;\n\n return (\n <li className={props.theme?.item}>\n {(props.isCompleted && props.appLink)\n ? (\n <AppLink appLink={props.appLink} className={`${className} ${props.theme?.itemContent || ''}`}>\n {content}\n </AppLink>\n ) : (\n <div className={`${className} ${props.theme?.itemContent || ''}`}>\n {content}\n </div>\n )\n }\n </li>\n );\n}\n\ninterface WizardStepListProps<StepId extends string> {\n currentStep: StepId;\n steps: WizardStep<StepId>[];\n disableAppLinks?: boolean;\n theme?: WizardStepListTheme;\n}\n\nexport function WizardStepList<StepId extends string>(props: WizardStepListProps<StepId>): JSX.Element {\n const currentStepNumber = props.steps.reduce((acc, step, i) => {\n if (step.id === props.currentStep)\n acc = i + 1;\n\n return acc;\n }, 1);\n\n return (\n <>\n <h2 className='h4'>\n {getPhrase('stepNumber', { currentStep: currentStepNumber, totalSteps: props.steps.length })}\n </h2>\n\n <ol className={`list-unstyled ${props.theme?.itemsContainer || ''}`}>\n {props.steps.map((step, i) => {\n const isSelected = step.id === props.currentStep;\n const isCompleted = currentStepNumber > i + 1;\n\n return (\n <WizardStepListItem\n index={i}\n key={step.id}\n text={step.text}\n subText={step.subText}\n isSelected={isSelected}\n isCompleted={isCompleted}\n appLink={!props.disableAppLinks && step.appLink}\n disabled={step.disabled}\n theme={props.theme}\n />\n );\n })}\n </ol>\n </>\n );\n}","export enum BatchJobStatus {\n Submitted = 0,\n Queued = 1,\n Pending = 2,\n InProgress = 3,\n Completed = 4,\n CompletedWithError = 5,\n Failed = 6\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { BULK_USER_ACTIONS_NAV_LOCK_ID } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { User } from 'libs/shared/interfaces';\n\ninterface Options {\n customerId: string;\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n\n getUsersRequest: (\n userIds: string[],\n success?: (users: User[]) => void,\n error?: () => void\n ) => Flight.Request;\n}\n\nexport const useBulkActionsUsers = (options: Options) => {\n const { appLinks, getUsersRequest } = options;\n\n const [ viewModel, setViewModel ] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const dispatch = useDispatch();\n const navLock = useNavLock();\n\n function getCursor(items: User[]): string {\n return items[items.length - 1]?.id;\n }\n\n /**\n * We can't rely on the non-existance of a next cursor to determine if we have more items to fetch\n * so instead we assume we have more, and then set it to false when we don't in getRequest\n * - Sha\n */\n const [ hasMore, setHasMore ] = React.useState(true);\n const pagination = React.useRef<{ pages: HashObject<string[]>, keys: IterableIterator<string>}>({\n keys: viewModel?.userIdMap?.keys(),\n pages: {}\n });\n\n function* nextIds(iterable: IterableIterator<string>, take: number): Generator<string> {\n while (take-- > 0) {\n const next = iterable.next().value;\n if (!next) return;\n yield next;\n }\n }\n\n function getRequest(lastId?: string): Flight.Request {\n if (!viewModel?.userIdMap?.size || !pagination.current.keys)\n return null;\n\n if (pagination.current.pages[lastId]) {\n const ids = pagination.current.pages[lastId];\n\n if (!ids.length) return null;\n return getUsersRequest(ids);\n }\n\n const ids = [...nextIds(pagination.current.keys, UserManagerConstants.USER_PAGE_LIMIT)];\n pagination.current.pages[lastId] = ids;\n\n if (!ids.length) {\n setHasMore(false);\n return null;\n }\n return getUsersRequest(ids);\n }\n\n function fetchNext(cursor?: string) {\n const request = getRequest(cursor);\n\n if (!request)\n return;\n\n return Flight.getFetch(dispatch)(request);\n }\n\n const {\n items,\n isFetching,\n nextCursor\n } = useInfiniteList<User, User[]>(getRequest, fetchNext, null, d => d, getCursor, viewModel?.scrollContainer);\n\n const forceUpdate = useForceUpdate();\n function removeUser(user: User): void {\n viewModel.userIdMap.delete(user.id.toString());\n setViewModel('allUsersSelected', false);\n forceUpdate();\n\n AnalyticsHelper.logUserAction({\n id: user.id.toString(),\n userCount: getCount()\n }, {\n location: LocationContext.BulkUserActionsWizard,\n entity: EntityType.User,\n actionType: UserAction.Remove\n });\n }\n\n function getCount(): number {\n return viewModel?.userIdMap?.size;\n }\n\n /**\n * Should only be used by the year level rollover details page\n */\n function setAllUserIds(userIds: string[]): void {\n const map = new Map<string, boolean>();\n userIds.forEach(id => {\n map.set(id, true);\n });\n setViewModel({\n userIdMap: map,\n allUsersSelected: true,\n allUsersCount: map.size\n });\n pagination.current.keys = map.keys();\n forceUpdate();\n }\n\n const users = items?.filter(u => viewModel.userIdMap.has(u.id.toString())) ?? [];\n\n // This hook detects if the user has removed all users\n React.useEffect(() => {\n if (!viewModel?.userIdMap || viewModel.userIdMap.size)\n return;\n\n // If this is reached, it means the admin has removed all users from the selected list.\n // The setTimeout here allows react to run it's final UI updates with the new state before we dispose of the view.\n setTimeout(() => {\n navLock.unlock(BULK_USER_ACTIONS_NAV_LOCK_ID);\n Core.AppLinkHelper.trigger(appLinks.userManager, { replace: true });\n }, 0);\n }, [ viewModel?.userIdMap?.size, isFetching ]);\n\n return {\n users,\n isFetching,\n removeUser,\n hasMore,\n fetchNext: () => fetchNext(nextCursor),\n count: getCount(),\n setAllUserIds\n };\n};","import { Flight } from 'libs/common/flight';\n\nimport { useBulkActionsUsers } from 'libs/shared/apps/user-manager/hooks/useBulkActionsUsers';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nexport const useBulkActionsUsersWrapper = (userType: UserGroup) => {\n const appLinks = getUserManagerAppLinks(userType);\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n return useBulkActionsUsers({\n customerId: currentUser.data?.customerId,\n userType,\n appLinks,\n getUsersRequest: UserRequests.usersById\n });\n};"],"names":["namespace","BulkUserActionsBackButton","props","viewModel","SharedViewModelKeys","currentStep","AppLink","className","appLink","appLinks","userManager","bulkActionsReviewAccounts","bulkActionsSelectAction","action","bulkActionsActionDetails","activation","yearGroupRollover","changeYearGroup","addToClassroom","resetPassword","removeFromSchool","getActionDetailsAppLink","getAppLink","Text","phrase","BulkUserActionsContinueButton","WizardLayoutContext","disableNext","onClickConfirm","showButtons","ContextService","bulkActionsStatus","complete","disabled","onClick","onFinish","Button","variant","BulkUserActionsAnalyticsHelper","bulkActionsConfirmation","resetEmail","activationEmail","DevError","getSelectActionAppLink","subAction","getContinueAppLink","BulkUserActionsWizardLayoutPartialLoading","style","height","width","BULK_USER_ACTIONS_NAV_LOCK_ID","BulkUserActionsWizardLayout","setViewModel","navLock","useNavLock","logWizardExitEvent","analyticsData","step","userCount","userIdMap","size","actionName","AnalyticsHelper","workflowPhase","actionType","location","entity","preventRedirect","preventNavLock","lock","id","title","LanguageService","text","appLinkWhitelist","BulkUserActionsHelper","onConfirmUnlock","unlock","replace","loaded","users","length","WizardHeader","hideHeader","continueButton","backButton","breadcrumbs","name","settings","userType","UserGroup","active","WizardStepList","steps","disableAppLinks","children","BaseBulkUserActionsViewModelKeys","getAnalyticsActionName","onClickNext","actionData","ObjectHelper","Object","keys","logYearGroupRolloverEntry","getJobStatus","status","BatchJobStatus","getPhrase","WizardStepListItem","content","hideStepNumber","index","subText","isSelected","theme","isSelectedOverride","isCompleted","isCompletedOverride","item","itemContent","currentStepNumber","reduce","acc","i","totalSteps","itemsContainer","map","key","SCROLL_TOLERANCE","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","nextCursor","hasMore","isFetching","getBoundingClientRect","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","statusCode","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","useBulkActionsUsersWrapper","nextIds","getUsersRequest","dispatch","setHasMore","pagination","pages","iterable","take","next","value","lastId","current","ids","UserManagerConstants","d","forceUpdate","useForceUpdate","getCount","filter","u","has","setTimeout","removeUser","user","count","setAllUserIds","userIds","Map","forEach","set","allUsersSelected","allUsersCount","useBulkActionsUsers","customerId","UserRequests","data"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/8323-5694456903-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserActionsBackButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserActionsContinueButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayoutPartialLoading.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/layout/bulk-user-actions-wizard-layout.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout.tsx","file:///app/packages/libs/shared/src/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel.ts","file:///app/packages/libs/shared/src/apps/user-manager/utils/BulkUserActionsAnalyticsHelper.ts","file:///app/packages/libs/shared/src/components/wizard/header/WizardHeader.tsx","file:///app/packages/libs/shared/src/components/wizard/step-list/WizardStepList.tsx","file:///app/packages/libs/shared/src/enums/BatchJobStatus.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/apps/user-manager/hooks/useBulkActionsUsers.ts","file:///app/packages/projects/lite/src/apps/user-manager/hooks/useBulkActionsUsersWrapper.ts"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkUserActionStepId } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\n\nconst namespace = 'userManager.userWizardBackButtons';\n\ninterface BulkUserActionsBackButtonProps {\n currentStep: BulkUserActionStepId;\n appLinks: UserManagerAppLinks;\n}\n\nexport function BulkUserActionsBackButton(props: BulkUserActionsBackButtonProps): JSX.Element {\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n\n function getActionDetailsAppLink(): Core.AppLink {\n if (!viewModel?.action)\n return null;\n \n switch (viewModel.action) {\n case 'delete':\n return props.appLinks.bulkActionsActionDetails.delete;\n case 'activation':\n return props.appLinks.bulkActionsActionDetails.activation;\n case 'yearGroupRollover':\n return props.appLinks.bulkActionsActionDetails.yearGroupRollover;\n case 'changeYearGroup':\n return props.appLinks.bulkActionsActionDetails.changeYearGroup;\n case 'addToClassroom':\n return props.appLinks.bulkActionsActionDetails.addToClassroom;\n case 'resetPassword':\n return props.appLinks.bulkActionsActionDetails.resetPassword;\n case 'resetEmail':\n return props.appLinks.bulkActionsSelectAction;\n case 'activationEmail':\n return props.appLinks.bulkActionsSelectAction;\n case 'removeFromSchool':\n return props.appLinks.bulkActionsActionDetails.removeFromSchool;\n }\n }\n\n function getAppLink(): Core.AppLink {\n switch (props.currentStep) {\n case 'review-accounts':\n return props.appLinks.userManager;\n \n case 'select-action':\n return props.appLinks.bulkActionsReviewAccounts;\n\n case 'action-details':\n return props.appLinks.bulkActionsSelectAction;\n\n case 'confirmation':\n return getActionDetailsAppLink();\n }\n }\n\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className='btn btn-link me-2'\n appLink={getAppLink()}\n >\n <Text namespace={namespace} phrase={props.currentStep === 'review-accounts' ? 'cancel' : 'back'} />\n </AppLink>\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ContextService } from 'libs/analytics/services/ContextService';\n\nimport { BulkUserActionStepId } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\nconst namespace = 'userManager.userWizardHeader';\n\ninterface BulkUserActionsContinueButtonProps {\n currentStep: BulkUserActionStepId;\n appLinks: UserManagerAppLinks;\n onFinish: () => void;\n}\n\nexport function BulkUserActionsContinueButton(props: BulkUserActionsContinueButtonProps): JSX.Element {\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n\n const { disableNext, onClickConfirm, showButtons } = React.useContext(WizardLayoutContext);\n\n const currentAppLink = ContextService.getCurrentContext().appLink;\n\n function getContinueAppLink(): Core.AppLink {\n switch (props.currentStep) {\n case 'review-accounts':\n return props.appLinks.bulkActionsSelectAction;\n case 'select-action':\n return getSelectActionAppLink();\n case 'action-details':\n return props.appLinks.bulkActionsConfirmation[viewModel?.subAction];\n default:\n return null;\n }\n }\n\n function getSelectActionAppLink(): Core.AppLink {\n if (!viewModel?.action)\n return null;\n \n switch (viewModel.action) {\n case 'delete':\n return props.appLinks.bulkActionsActionDetails.delete;\n case 'activation':\n return props.appLinks.bulkActionsActionDetails.activation;\n case 'yearGroupRollover':\n return props.appLinks.bulkActionsActionDetails.yearGroupRollover;\n case 'changeYearGroup':\n return props.appLinks.bulkActionsActionDetails.changeYearGroup;\n case 'addToClassroom':\n return props.appLinks.bulkActionsActionDetails.addToClassroom;\n case 'resetPassword':\n return props.appLinks.bulkActionsActionDetails.resetPassword;\n case 'resetEmail':\n return props.appLinks.bulkActionsConfirmation.resetEmail;\n case 'activationEmail':\n return props.appLinks.bulkActionsConfirmation.activationEmail;\n case 'removeFromSchool':\n return props.appLinks.bulkActionsActionDetails.removeFromSchool;\n }\n \n Core.ErrorHelper.throw(new DevError(`Missing switch statement case for ${viewModel.action} in BulkUserActionsContinueButton.tsx`));\n }\n\n if (currentAppLink.action === props.appLinks.bulkActionsStatus.complete.action && showButtons) {\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={props.appLinks.userManager}\n disabled={disableNext}\n onClick={props.onFinish}\n >\n <Text\n namespace={namespace}\n phrase={'finish'}\n />\n </AppLink>\n );\n }\n\n if (props.currentStep === 'confirmation') {\n return (\n <Button\n className={disableNext ? 'disabled' : ''}\n variant='dark'\n onClick={() => {\n BulkUserActionsAnalyticsHelper.onClickNext(viewModel, props.currentStep);\n onClickConfirm();\n }}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='confirm'\n />\n </Button>\n );\n }\n\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={getContinueAppLink()}\n onClick={() => BulkUserActionsAnalyticsHelper.onClickNext(viewModel, props.currentStep)}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='next'\n />\n </AppLink>\n );\n}","import React from 'react';\n\nexport function BulkUserActionsWizardLayoutPartialLoading(): React.ReactElement {\n return (\n <>\n <div className={`partial-loading-background mb-2`} style={{ height: '1.75rem', width: '15rem' }} />\n <div className={`partial-loading-background mb-3`} style={{ height: '1.5rem', width: '12rem' }} />\n <div className={`partial-loading-background mb-2`} style={{ height: '8em', width: '40rem' }} />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wizardContent\":\"UBwkq\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { BulkUserActionsBackButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserActionsBackButton';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { WizardHeader } from 'libs/shared/components/wizard/header/WizardHeader';\nimport { WizardStepList } from 'libs/shared/components/wizard/step-list/WizardStepList';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { WizardLayoutContextProvider } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { User } from 'libs/shared/interfaces';\n\nimport { BulkUserActionsContinueButton } from '../header/continue-buttons/BulkUserActionsContinueButton';\n\nimport { BulkUserActionsWizardLayoutPartialLoading } from './BulkUserActionsWizardLayoutPartialLoading';\n\nimport styles from './bulk-user-actions-wizard-layout.scss';\n\nconst namespace = 'userManager.bulkUserActionsWizardLayout';\n\nexport type BulkUserActionStepId = 'review-accounts' | 'select-action' | 'action-details' | 'confirmation' | 'status';\nexport type BulkUserActionOptions = 'delete' | 'activation' | 'changeYearGroup' | 'yearGroupRollover' | 'addToClassroom' | 'resetPassword' | 'resetEmail' | 'activationEmail' | 'removeFromSchool';\nexport type BulkUserSubAction = 'delete' | 'deactivate' | 'reactivate' | 'changeYearGroup' | 'yearGroupRollover' | 'addToClassroom' | 'resetPassword' | 'resetEmail' | 'activationEmail' | 'removeFromSchool';\n\nexport const BULK_USER_ACTIONS_NAV_LOCK_ID = 'bulk-user-actions-wizard';\n\ntype BulkUserActionsWizardLayoutProps = React.PropsWithChildren<{\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n currentStep: BulkUserActionStepId;\n users: User[];\n userCount: number;\n \n preventNavLock?: boolean;\n disableAppLinks?: boolean;\n hideHeader?: boolean;\n loaded: boolean;\n\n /**\n * Used by year level rollover to allow loading straight into the details view\n */\n preventRedirect?: boolean;\n}>;\n\nexport function BulkUserActionsWizardLayout(props: BulkUserActionsWizardLayoutProps): JSX.Element {\n const [ viewModel, setViewModel ] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const navLock = useNavLock();\n\n React.useEffect(() => {\n // If there is no view model, redirect away\n if (!viewModel?.userIdMap?.size && !props.preventRedirect) {\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n logWizardExitEvent();\n return;\n }\n\n if (props.preventNavLock)\n return;\n\n navLock.lock({\n id: BULK_USER_ACTIONS_NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody'),\n appLinkWhitelist: BulkUserActionsHelper.getWizardAppLinks(props.appLinks),\n onConfirmUnlock: () => {\n logWizardExitEvent();\n setViewModel({});\n }\n });\n\n return () => {\n navLock.unlock(BULK_USER_ACTIONS_NAV_LOCK_ID);\n };\n }, []);\n\n function onFinish(): void {\n setViewModel({});\n }\n function logWizardExitEvent(): void {\n /**\n * If there is no viewmodel present when this is called, it means the viewmodel was never\n * initialized with data. This can happen for example if the user page loads onto the wizard.\n * In this case, we don't log an exit event.\n */\n if (!viewModel)\n return;\n\n const analyticsData: HashObject = {\n step: props.currentStep,\n userCount: viewModel?.userIdMap?.size ?? 0\n };\n\n const actionName: string | null = BulkUserActionsAnalyticsHelper.getAnalyticsActionName(viewModel);\n\n if (actionName)\n analyticsData.action = actionName;\n\n AnalyticsHelper.logUserAction(analyticsData, {\n workflowPhase: WorkflowPhase.Discard,\n actionType: UserAction.BulkAction,\n location: LocationContext.BulkUserActionsWizard,\n entity: EntityType.User\n });\n }\n\n const loaded = props.loaded && !!props.users?.length;\n\n return (\n <WizardLayoutContextProvider>\n <div className='px-3'>\n <WizardHeader\n title={LanguageService.getPhrase(namespace, 'bulkActions')}\n currentStep={props.currentStep}\n hideHeader={props.hideHeader}\n loaded={props.loaded}\n continueButton={\n <BulkUserActionsContinueButton\n currentStep={props.currentStep}\n appLinks={props.appLinks}\n onFinish={onFinish}\n />\n }\n backButton={\n <BulkUserActionsBackButton currentStep={props.currentStep} appLinks={props.appLinks} />\n }\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: props.appLinks.settings\n },\n {\n name: LanguageService.getPhrase(namespace, props.userType === UserGroup.Learner ? 'studentManager' : 'staffManager'),\n appLink: props.appLinks.userManager\n },\n {\n name: LanguageService.getPhrase(namespace, 'bulkActions'),\n active: true\n }\n ]}\n />\n\n <div className='row g-0'>\n <div className='col-3'>\n <WizardStepList<BulkUserActionStepId>\n steps={BulkUserActionsHelper.getSteps(\n props.userType,\n props.userCount,\n props.appLinks,\n viewModel?.action\n )}\n currentStep={props.currentStep}\n disableAppLinks={!loaded || props.disableAppLinks}\n />\n </div>\n\n <div className={`col-9 ${styles.wizardContent}`}>\n {loaded ?\n props.children :\n <BulkUserActionsWizardLayoutPartialLoading />\n }\n </div>\n </div>\n </div>\n </WizardLayoutContextProvider>\n );\n}\n","import { Classroom, YearGroup } from 'libs/shared/interfaces';\n\nimport { BulkUserActionOptions, BulkUserSubAction } from '../../components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerQueryParams } from '../query-params/UserManagerQueryParams';\n\n// Please keep this array up to date with the interface below, so that the data we log to analytics remains accurate\nexport const BaseBulkUserActionsViewModelKeys: Array<keyof BulkUserActionsViewModel> = [\n 'userIdMap', 'params', 'action', 'subAction', 'allUsersSelected', 'allUsersCount', 'scrollContainer'\n];\n\nexport interface BulkUserActionsViewModel {\n userIdMap?: Map<string, boolean>;\n params?: UserManagerQueryParams;\n\n action?: BulkUserActionOptions; // TODO: Rename this to \"actionCategory\"\n subAction?: BulkUserSubAction; // TODO: Rename this to \"action\"\n\n // Used to determine if we can show year level rollover\n allUsersSelected?: boolean;\n allUsersCount?: number;\n scrollContainer?: HTMLElement;\n}\n\nexport interface BulkUserActionsYearGroupRolloverViewModel extends BulkUserActionsViewModel {\n yearGroup: YearGroup;\n}\n\nexport interface BulkUserActionsAddToClassroomViewModel extends BulkUserActionsViewModel {\n classroom: Classroom;\n}\n\nexport interface BulkUserActionsResetPasswordViewModel extends BulkUserActionsViewModel {\n password: string;\n changeOnNextLogin: boolean;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\n\nimport { BulkUserActionStepId } from '../components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { BaseBulkUserActionsViewModelKeys, BulkUserActionsViewModel } from '../interfaces/viewmodels/BulkUserActionsViewModel';\n\nexport const BulkUserActionsAnalyticsHelper = {\n getAnalyticsActionName(viewModel: BulkUserActionsViewModel): string | null {\n if (!viewModel?.action)\n return null;\n\n switch (viewModel.action) {\n case 'activation': {\n if (!viewModel?.subAction)\n return 'Deactivate / reactivate';\n\n if (viewModel.subAction === 'deactivate')\n return 'Deactivate';\n\n return 'Reactivate';\n }\n case 'addToClassroom':\n return 'Add to classroom';\n case 'changeYearGroup':\n return 'Change year level';\n case 'delete':\n return 'Delete user';\n case 'resetEmail':\n return 'Send password reset email';\n case 'activationEmail':\n return 'Send account activation email';\n case 'resetPassword':\n return 'Reset password';\n case 'yearGroupRollover':\n return 'Annual year level rollover';\n case 'removeFromSchool':\n return 'Remove user';\n default:\n return null;\n }\n },\n\n onClickNext(viewModel: BulkUserActionsViewModel, currentStep: BulkUserActionStepId): void {\n if (!viewModel)\n return;\n\n const analyticsData: HashObject = {\n userCount: viewModel.userIdMap.size,\n step: currentStep\n };\n\n const actionName = BulkUserActionsAnalyticsHelper.getAnalyticsActionName(viewModel);\n\n if (actionName)\n analyticsData.action = actionName;\n\n const actionData = ObjectHelper.omit(viewModel, BaseBulkUserActionsViewModelKeys);\n\n // Adds extra items like the `yearGroup` on year level actions or `password` on the reset pw action\n if (Object.keys(actionData).length)\n analyticsData.actionData = actionData;\n\n AnalyticsHelper.logUserAction(analyticsData, {\n location: LocationContext.BulkUserActionsWizard,\n workflowPhase: WorkflowPhase.Next,\n actionType: UserAction.BulkAction,\n entity: EntityType.User\n });\n },\n\n logYearGroupRolloverEntry(location: LocationContext): void {\n AnalyticsHelper.logUserAction({\n action: BulkUserActionsAnalyticsHelper.getAnalyticsActionName({ action: 'yearGroupRollover' })\n }, {\n entity: EntityType.User,\n actionType: UserAction.BulkAction,\n workflowPhase: WorkflowPhase.Start,\n location\n });\n },\n\n getJobStatus(status: BatchJobStatus): string | null {\n switch (status) {\n case BatchJobStatus.Completed:\n return 'Success';\n case BatchJobStatus.CompletedWithError:\n return 'Completed with some errors';\n case BatchJobStatus.Failed:\n return 'Failed';\n default:\n return null;\n }\n }\n};","import React from 'react';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\ninterface WizardHeaderProps<TStepId> {\n currentStep: TStepId;\n title: string;\n continueButton: JSX.Element;\n backButton: JSX.Element;\n breadcrumbs?: Breadcrumb[];\n hideHeader?: boolean;\n loaded: boolean;\n}\n\nexport function WizardHeader<TStepId>(props: WizardHeaderProps<TStepId>): JSX.Element {\n const { showButtons } = React.useContext(WizardLayoutContext);\n\n return (\n <div className='d-flex justify-content-between'>\n {!props.hideHeader ? (\n <div>\n <h1 className='h2'>{props.title}</h1>\n\n {props.breadcrumbs &&\n <div className='pb-3'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n }\n </div>\n ) : <div/>}\n\n {props.loaded && showButtons && (\n <div className='d-flex align-items-center'>\n {props.backButton}\n {props.continueButton}\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nconst namespace = 'shared.wizardStepList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface WizardStep<StepId extends string> {\n id: StepId;\n text: string;\n appLink?: Core.AppLink;\n subText?: string;\n disabled?: boolean;\n openInNewTab?: boolean;\n}\n\ninterface WizardStepListTheme {\n item?: string;\n itemsContainer?: string;\n itemContent?: string;\n isSelectedOverride?: string;\n isCompletedOverride?: string;\n}\n\ninterface WizardStepListItemProps {\n appLink: Core.AppLink;\n isSelected: boolean;\n isCompleted: boolean;\n text: string;\n subText?: string;\n disabled: boolean;\n index: number;\n hideStepNumber?: boolean;\n theme?: WizardStepListTheme;\n}\n\nfunction WizardStepListItem(props: WizardStepListItemProps): JSX.Element {\n const content = (\n <>\n <div className='d-flex'>\n {!props.hideStepNumber && <div className='flex-shrink-0 flex-grow-0'>{`${props.index + 1}.`} </div>}\n <div>{props.text}</div>\n </div>\n\n {props.subText && (\n <div className='ms-2 ps-1 pt-1'>\n {props.subText}\n </div>\n )}\n </>\n );\n\n \n let className = 'px-2 py-1 mb-1 rounded d-inline-block';\n\n if (props.isSelected) {\n className += ` ${props.theme?.isSelectedOverride || 'bg-light-blue fw-semibold'}`;\n }\n\n if ((!props.isSelected && props.isCompleted))\n className += ` ${props.theme?.isCompletedOverride || 'text-info'}`;\n\n return (\n <li className={props.theme?.item}>\n {(props.isCompleted && props.appLink)\n ? (\n <AppLink appLink={props.appLink} className={`${className} ${props.theme?.itemContent || ''}`}>\n {content}\n </AppLink>\n ) : (\n <div className={`${className} ${props.theme?.itemContent || ''}`}>\n {content}\n </div>\n )\n }\n </li>\n );\n}\n\ninterface WizardStepListProps<StepId extends string> {\n currentStep: StepId;\n steps: WizardStep<StepId>[];\n disableAppLinks?: boolean;\n theme?: WizardStepListTheme;\n}\n\nexport function WizardStepList<StepId extends string>(props: WizardStepListProps<StepId>): JSX.Element {\n const currentStepNumber = props.steps.reduce((acc, step, i) => {\n if (step.id === props.currentStep)\n acc = i + 1;\n\n return acc;\n }, 1);\n\n return (\n <>\n <h2 className='h4'>\n {getPhrase('stepNumber', { currentStep: currentStepNumber, totalSteps: props.steps.length })}\n </h2>\n\n <ol className={`list-unstyled ${props.theme?.itemsContainer || ''}`}>\n {props.steps.map((step, i) => {\n const isSelected = step.id === props.currentStep;\n const isCompleted = currentStepNumber > i + 1;\n\n return (\n <WizardStepListItem\n index={i}\n key={step.id}\n text={step.text}\n subText={step.subText}\n isSelected={isSelected}\n isCompleted={isCompleted}\n appLink={!props.disableAppLinks && step.appLink}\n disabled={step.disabled}\n theme={props.theme}\n />\n );\n })}\n </ol>\n </>\n );\n}","export enum BatchJobStatus {\n Submitted = 0,\n Queued = 1,\n Pending = 2,\n InProgress = 3,\n Completed = 4,\n CompletedWithError = 5,\n Failed = 6\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { BULK_USER_ACTIONS_NAV_LOCK_ID } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { User } from 'libs/shared/interfaces';\n\ninterface Options {\n customerId: string;\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n\n getUsersRequest: (\n userIds: string[],\n success?: (users: User[]) => void,\n error?: () => void\n ) => Flight.Request;\n}\n\nexport const useBulkActionsUsers = (options: Options) => {\n const { appLinks, getUsersRequest } = options;\n\n const [ viewModel, setViewModel ] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const dispatch = useDispatch();\n const navLock = useNavLock();\n\n function getCursor(items: User[]): string {\n return items[items.length - 1]?.id;\n }\n\n /**\n * We can't rely on the non-existance of a next cursor to determine if we have more items to fetch\n * so instead we assume we have more, and then set it to false when we don't in getRequest\n * - Sha\n */\n const [ hasMore, setHasMore ] = React.useState(true);\n const pagination = React.useRef<{ pages: HashObject<string[]>, keys: IterableIterator<string>}>({\n keys: viewModel?.userIdMap?.keys(),\n pages: {}\n });\n\n function* nextIds(iterable: IterableIterator<string>, take: number): Generator<string> {\n while (take-- > 0) {\n const next = iterable.next().value;\n if (!next) return;\n yield next;\n }\n }\n\n function getRequest(lastId?: string): Flight.Request {\n if (!viewModel?.userIdMap?.size || !pagination.current.keys)\n return null;\n\n if (pagination.current.pages[lastId]) {\n const ids = pagination.current.pages[lastId];\n\n if (!ids.length) return null;\n return getUsersRequest(ids);\n }\n\n const ids = [...nextIds(pagination.current.keys, UserManagerConstants.USER_PAGE_LIMIT)];\n pagination.current.pages[lastId] = ids;\n\n if (!ids.length) {\n setHasMore(false);\n return null;\n }\n return getUsersRequest(ids);\n }\n\n function fetchNext(cursor?: string) {\n const request = getRequest(cursor);\n\n if (!request)\n return;\n\n return Flight.getFetch(dispatch)(request);\n }\n\n const {\n items,\n isFetching,\n nextCursor\n } = useInfiniteList<User, User[]>(getRequest, fetchNext, null, d => d, getCursor, viewModel?.scrollContainer);\n\n const forceUpdate = useForceUpdate();\n function removeUser(user: User): void {\n viewModel.userIdMap.delete(user.id.toString());\n setViewModel('allUsersSelected', false);\n forceUpdate();\n\n AnalyticsHelper.logUserAction({\n id: user.id.toString(),\n userCount: getCount()\n }, {\n location: LocationContext.BulkUserActionsWizard,\n entity: EntityType.User,\n actionType: UserAction.Remove\n });\n }\n\n function getCount(): number {\n return viewModel?.userIdMap?.size;\n }\n\n /**\n * Should only be used by the year level rollover details page\n */\n function setAllUserIds(userIds: string[]): void {\n const map = new Map<string, boolean>();\n userIds.forEach(id => {\n map.set(id, true);\n });\n setViewModel({\n userIdMap: map,\n allUsersSelected: true,\n allUsersCount: map.size\n });\n pagination.current.keys = map.keys();\n forceUpdate();\n }\n\n const users = items?.filter(u => viewModel.userIdMap.has(u.id.toString())) ?? [];\n\n // This hook detects if the user has removed all users\n React.useEffect(() => {\n if (!viewModel?.userIdMap || viewModel.userIdMap.size)\n return;\n\n // If this is reached, it means the admin has removed all users from the selected list.\n // The setTimeout here allows react to run it's final UI updates with the new state before we dispose of the view.\n setTimeout(() => {\n navLock.unlock(BULK_USER_ACTIONS_NAV_LOCK_ID);\n Core.AppLinkHelper.trigger(appLinks.userManager, { replace: true });\n }, 0);\n }, [ viewModel?.userIdMap?.size, isFetching ]);\n\n return {\n users,\n isFetching,\n removeUser,\n hasMore,\n fetchNext: () => fetchNext(nextCursor),\n count: getCount(),\n setAllUserIds\n };\n};","import { Flight } from 'libs/common/flight';\n\nimport { useBulkActionsUsers } from 'libs/shared/apps/user-manager/hooks/useBulkActionsUsers';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nexport const useBulkActionsUsersWrapper = (userType: UserGroup) => {\n const appLinks = getUserManagerAppLinks(userType);\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n return useBulkActionsUsers({\n customerId: currentUser.data?.customerId,\n userType,\n appLinks,\n getUsersRequest: UserRequests.usersById\n });\n};"],"names":["namespace","BulkUserActionsBackButton","props","viewModel","SharedViewModelKeys","currentStep","AppLink","className","appLink","appLinks","userManager","bulkActionsReviewAccounts","bulkActionsSelectAction","action","bulkActionsActionDetails","activation","yearGroupRollover","changeYearGroup","addToClassroom","resetPassword","removeFromSchool","getActionDetailsAppLink","getAppLink","Text","phrase","BulkUserActionsContinueButton","WizardLayoutContext","disableNext","onClickConfirm","showButtons","ContextService","bulkActionsStatus","complete","disabled","onClick","onFinish","Button","variant","BulkUserActionsAnalyticsHelper","bulkActionsConfirmation","resetEmail","activationEmail","DevError","getSelectActionAppLink","subAction","getContinueAppLink","BulkUserActionsWizardLayoutPartialLoading","style","height","width","BULK_USER_ACTIONS_NAV_LOCK_ID","BulkUserActionsWizardLayout","setViewModel","navLock","useNavLock","logWizardExitEvent","analyticsData","step","userCount","userIdMap","size","actionName","AnalyticsHelper","workflowPhase","actionType","location","entity","preventRedirect","preventNavLock","lock","id","title","LanguageService","text","appLinkWhitelist","BulkUserActionsHelper","onConfirmUnlock","unlock","replace","loaded","users","length","WizardHeader","hideHeader","continueButton","backButton","breadcrumbs","name","settings","userType","UserGroup","active","WizardStepList","steps","disableAppLinks","children","BaseBulkUserActionsViewModelKeys","getAnalyticsActionName","onClickNext","actionData","ObjectHelper","Object","keys","logYearGroupRolloverEntry","getJobStatus","status","BatchJobStatus","getPhrase","WizardStepListItem","content","hideStepNumber","index","subText","isSelected","theme","isSelectedOverride","isCompleted","isCompletedOverride","item","itemContent","currentStepNumber","reduce","acc","i","totalSteps","itemsContainer","map","key","SCROLL_TOLERANCE","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","nextCursor","hasMore","isFetching","getBoundingClientRect","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","statusCode","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","useBulkActionsUsersWrapper","nextIds","getUsersRequest","dispatch","setHasMore","pagination","pages","iterable","take","next","value","lastId","current","ids","UserManagerConstants","d","forceUpdate","useForceUpdate","getCount","filter","u","has","setTimeout","removeUser","user","count","setAllUserIds","userIds","Map","forEach","set","allUsersSelected","allUsersCount","useBulkActionsUsers","customerId","UserRequests","data"],"sourceRoot":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see
|
|
2
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4203],{38307:(e,t,n)=>{n.d(t,{c:()=>h,l:()=>y});var r=n(32735),o=n(232),a=n.n(o),i=n(8604),l=n(83345);const c={heatMap:"epapa",legend:"uhH4p"};function u(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 s="shared.engagementHeatMap",f="#f1f1f1",d=a().scale(["#daf07d","#08bd1a"]),m=[0,.01,.25,.5,.75,1];function p(e,t){return e?d(e/t).hex():f}function v(e,t){for(var n=[],r=0;r<e.length;r++){var o=r>0&&e[r-1],a=e[r],i=r<e.length-1&&e[r+1];a===o&&a===i||n.push("".concat(p(a,t)," ").concat(100/e.length*r,"%"))}return"linear-gradient(to right, ".concat(n.join(","),")")}function y(){var e=Math.max.apply(Math,m),t=100/m.length;return r.createElement("div",{className:"d-flex justify-content-between w-100"},r.createElement(l.x,{namespace:s,phrase:"less"}),r.createElement("div",{className:"d-flex mx-1 flex-grow-1 ".concat(c.legend)},m.map(function(n,o){return r.createElement("div",{key:o,style:{width:"".concat(t,"%"),backgroundColor:p(n,e)}})})),r.createElement(l.x,{namespace:s,phrase:"more"}))}function h(e){var t,n,o,a=(0,i.O)(e.engagement),l=null!==(t=e.max)&&void 0!==t?t:Math.max.apply(Math,function(e){if(Array.isArray(e))return u(e)}(o=a)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||function(e,t){if(e){if("string"==typeof e)return u(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)?u(e,t):void 0}}(o)||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.")}());return r.createElement("div",{className:"border rounded ".concat(c.heatMap," ").concat(null!==(n=e.className)&&void 0!==n?n:""),style:{background:v(a,l)}})}},84621:(e,t,n)=>{n.d(t,{L:()=>i});var r=n(32735),o=n(83914);const a={icon:"sAmpy",count:"faDs4"};function i(e){return r.createElement("section",{className:"d-flex flex-column border rounded p-3 h-100"},r.createElement("div",{className:"d-flex ".concat(e.subtitle?"align-items-top":"align-items-center"," mb-2")},r.createElement("div",{className:"".concat(a.icon," ").concat(e.svgClassName," rounded-circle d-flex justify-content-center align-items-center")},r.createElement(o.x,{svgName:e.svgName,size:o.S.Small})),r.createElement("div",{className:"d-flex flex-column ms-2"},r.createElement("h2",{className:"h6 mb-0"},e.title)),"number"==typeof e.count&&r.createElement("div",{className:"".concat(a.count," d-flex justify-content-center align-items-center bg-light rounded-circle ms-auto")},e.count)),e.children)}},70072:(e,t,n)=>{n.d(t,{d:()=>r});var r={fontSize:"12px",fontFamily:'"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',fontWeight:"400",color:"#313543"}},8604:(e,t,n)=>{function r(e){var t=e.videoDuration||0;return new Array(Math.ceil(t)).fill(null).map(function(t,n){return(null==e?void 0:e.heatMap[n])||0})}function o(e){return null==e?void 0:e.reduce(function(t,n){return t+n.engagementRate/e.length},0)}n.d(t,{O:()=>r,Q:()=>o})},6748:(e,t,n)=>{n.d(t,{i:()=>S});var r=n(32735),o=n(42648),a=n(35509),i=n(91967),l=n(15611),c=n(17808),u=n(1287),s=n(83914),f=n(90281),d={opacity:"0.8",cursor:"grabbing"},m=n(35223);function p(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(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 v(e,t){if(e){if("string"==typeof e)return y(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)?y(e,t):void 0}}function y(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 h(e){var t,n,r,o;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(n=e.current)||void 0===n?void 0:n.scrollLeft)+1<(null===(r=e.current)||void 0===r?void 0:r.scrollWidth)-(null===(o=e.current)||void 0===o?void 0:o.clientWidth)}}const g={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function b(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 w=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};function E(e){var t,n;return e.column.canSort?r.createElement("span",{className:"".concat(g.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(n=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==n?n:"")},r.createElement(s.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?m.vn.ArrowRight:m.vn.ArrowLeft,size:s.S.Small})):r.createElement(r.Fragment,null)}function O(e){var t,n,o,s,f,m,v,y,h={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(h.initialState={selectedRowIds:(v=e.initialSelectedRowIds,y={},v.forEach(function(e){return y[e]=!0}),y)}),e.getRowId&&(h.getRowId=e.getRowId);var g,w=a.useTable.apply(void 0,[h].concat((g=function(e){var t=[a.useSortBy,a.useRowSelect,"flex"===e.layout?a.useFlexLayout:a.useBlockLayout];return e.allowFiltering&&(t=[].concat(p(t),[a.useFilters])),e.allowGlobalFiltering&&(t=[].concat(p(t),[a.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return b(e)}(g)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(g)||function(e,t){if(e){if("string"==typeof e)return b(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)?b(e,t):void 0}}(g)||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.")}()))),O=w.getTableProps,S=w.getTableBodyProps,j=w.headerGroups,C=w.rows,k=w.prepareRow,P=w.toggleAllRowsSelected,N=w.setGlobalFilter,T=w.setHiddenColumns,x=w.state.sortBy;function I(){return!C.length&&e.emptyState?e.emptyState:C.map(function(t){k(t);var n=function(t){var n,r,o,a,l,c=i.q.isFunction(null===(n=e.theme)||void 0===n?void 0:n.row)?e.theme.row(t):null!==(o=null===(r=e.theme)||void 0===r?void 0:r.row)&&void 0!==o?o:"";return t.isSelected&&(null===(a=e.theme)||void 0===a?void 0:a.selectedRow)&&(c+=" ".concat(null===(l=e.theme)||void 0===l?void 0:l.selectedRow)),e.onSelectRow&&(c+=" cursor-pointer"),e.enableSortableRows&&(c+=" cursor-grab"),c}(t),o=!!e.getRowAppLink&&e.getRowAppLink(t);function a(){e.onSelectRow&&(e.allowSelectMultipleRows||P(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,i){var c=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,i);return o?r.createElement("div",{role:"row",key:t.id},r.createElement(l.F,Object.assign({},e,c,{className:n,appLink:o}),M(t))):r.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:n,onClick:a}),M(t))}var s=t.getRowProps();return e.enableSortableRows?r.createElement(u.W,{id:t.original.id,key:t.id,childProps:s,childComponent:r.forwardRef(function(e,t){return c(e,t)})}):c(s)})}function M(t){return t.cells.map(function(n){var o=function(t,n){var r,o,a="";return"function"==typeof(null===(r=e.theme)||void 0===r?void 0:r.cell)&&(a=e.theme.cell(t,n)),"string"==typeof(null===(o=e.theme)||void 0===o?void 0:o.cell)&&(a=e.theme.cell),e.onSelectCell&&(a+=" cursor-pointer"),a}(t,n);return r.createElement("div",Object.assign({key:n.column.id},n.getCellProps(),{className:o,onClick:function(){e.onSelectCell&&e.onSelectCell(n)}}),n.render("Cell"))})}return r.useEffect(function(){e.onSort&&e.onSort(x)},[x]),r.useEffect(function(){e.globalFilter&&N(e.globalFilter)},[e.globalFilter]),r.useEffect(function(){e.hiddenColumns&&T(e.hiddenColumns)},[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},O(),{className:null!==(n=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==n?n:""}),r.createElement("div",{className:null!==(s=null===(o=e.theme)||void 0===o?void 0:o.header)&&void 0!==s?s:""},j.map(function(t){var n,o;return r.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(o=null===(n=e.theme)||void 0===n?void 0:n.headerRow)&&void 0!==o?o:""}),t.headers.map(function(t){var n,o;return r.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(o=null===(n=e.theme)||void 0===n?void 0:n.headerCell)&&void 0!==o?o:""}),t.render("Header",{renderSortIndicator:function(){return r.createElement(E,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(E,{column:t,theme:e.theme}))}))})),r.createElement("div",Object.assign({},S(),{className:null!==(m=null===(f=e.theme)||void 0===f?void 0:f.body)&&void 0!==m?m:""}),e.enableSortableRows?r.createElement(c.Q,{ids:C.map(function(e){return e.original.id}),getDragOverlay:function(t){var n,o,a=C.findIndex(function(e){return e.original.id===t}),i=C[a];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,o="g-0 ",n&&(o+=n.row),o),style:d}),M(i))},onSortEnd:e.onSortingRowsEnd},I()):I()))}function S(e){var t=e.enableSlider,n=e.scrollIncrement,a=e.scrollable,l=w(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,n=r.useRef(null),o=(e=r.useState(h(n)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],c=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(e,t)||v(e,t)||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.")}()),a=o[0],l=o[1],c=i.q.throttle(function(){l(h(n))},200),u=r.useCallback(function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(l(h(n)),e.addEventListener("scroll",c)),n.current=e},[]);return r.useEffect(function(){(null==n?void 0:n.current)&&l(h(n))},[n]),{ref:u,scrollState:a,scroll:function(e){var t;null===(t=n.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),u=c.ref,s=c.scrollState,d=c.scroll;if(a)return r.createElement(o.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:g.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(O,Object.assign({},l)));if(!t)return r.createElement(O,Object.assign({},l));function m(e){d(n*("right"===e?1:-1))}return r.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},r.createElement("div",{className:"px-4"},r.createElement("div",{className:"position-relative"},r.createElement(f.W,{direction:f.f.Left,onClick:function(){return m("left")},hide:!s.canScrollLeft}),r.createElement("div",{className:"".concat(g.scrollContainer," ").concat(e.scrollContainerClassName),ref:u},r.createElement(O,Object.assign({},l))),r.createElement(f.W,{direction:f.f.Right,onClick:function(){return m("right")},hide:!s.canScrollRight}))))}S.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},17132:(e,t,n)=>{n.d(t,{w:()=>qe});var r=n(32735),o=n(6748),a=n(23481),i=n(38307),l=n(26136),c=n(97408),u=n(40782),s=n(64818);const f={heatMap:"rwDjh",avatarContainer:"kW4ZM"};function d(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}(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 m(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 p=a.T.encloseNamespace("shared.engagementTable"),v={heatMap:[],engagementRate:0,viewCount:0};function y(e){var t;return r.createElement("div",{className:"".concat(null!==(t=e.className)&&void 0!==t?t:"")},e.children)}function h(e){return r.createElement(y,{className:"d-inline-block ".concat(e.column.isSorted?"fw-bold":"")},p(e.phraseKey))}var g={table:"bg-white rounded px-0",header:"border-bottom",headerCell:"m-3",cell:"mx-3 my-2"};function b(e){var t,n,a,m=function(e){return r.useMemo(function(){var t,n,o=(t=e.engagement,n=0,t.forEach(function(e){var t=Math.max.apply(Math,d(e.heatMap));t>n&&(n=t)}),n);return[{Header:function(e){var t=e.column;return r.createElement(h,{column:t,phraseKey:"name"})},width:22,accessor:"user",sortType:function(t,n){return(0,l.B)(t.values.user,e.anonymiseUsers)>(0,l.B)(n.values.user,e.anonymiseUsers)?1:-1},Cell:function(t){var n,o,a,i,u=t.value,d=(o=u,a=e.anonymiseUsers,{name:(i=(0,l.B)(o,a).split(" ").filter(function(e){return!!e}))[0],surname:i.slice(1).join(" ")}),m=d.name,p=d.surname;return r.createElement(y,{className:"d-flex align-items-center h-100"},r.createElement("span",{className:f.avatarContainer},r.createElement(c.q,{imageCdnUrl:e.imageCdnUrl,initials:s.l.getInitials(m,p),imageUrl:!e.anonymiseUsers&&(null===(n=null==u?void 0:u.avatar)||void 0===n?void 0:n.url),showAnonymousUser:!(e.anonymiseUsers||u&&!u.sessionId)})),r.createElement("span",{className:"ms-2 clamp-1"},m," ",p))}},{Header:function(e){var t=e.column;return r.createElement(h,{column:t,phraseKey:"views"})},accessor:"viewCount",width:15,sortType:"basic",sortDescFirst:!0,Cell:function(e){var t=e.value;return r.createElement(y,{className:"d-flex align-items-center h-100"},r.createElement("div",null,t))}},{Header:function(e){var t=e.column;return r.createElement(h,{column:t,phraseKey:"engagement"})},accessor:"engagementRate",width:20,sortType:"basic",sortDescFirst:!0,Cell:function(e){var t=e.value;return r.createElement(y,{className:"w-33"},r.createElement(u.O,{percentage:t,layout:u.I.LabelBefore}))}},{Header:function(e){var t=e.column;return r.createElement(h,{column:t,phraseKey:"heatMap"})},accessor:"heatMap",width:48,disableSortBy:!0,Cell:function(e){var t=e.row.original;return r.createElement(y,{className:"d-flex align-items-center h-100"},r.createElement(i.c,{engagement:t,max:o,className:"".concat(f.heatMap," flex-grow-1")}))}}]},[e.anonymiseUsers])}({engagement:e.engagement,imageCdnUrl:e.imageCdnUrl,anonymiseUsers:e.anonymiseUsers}),p=(t=e.engagement,n=e.users,a=e.classroomStudents,r.useMemo(function(){if(!(null==t?void 0:t.length))return[];var e=[],r=new Set;if(t.forEach(function(t){var o=null==n?void 0:n.find(function(e){return e.id&&e.id===t.userId?(r.add(e.id),!0):!(!e.sessionId||e.sessionId!==t.sessionId)});e.push(Object.assign(Object.assign({},t),{user:o}))}),null==a?void 0:a.length){var o=a.filter(function(e){return!r.has(e.id)}).map(function(e){return Object.assign(Object.assign({},v),{user:e})});e.push.apply(e,d(o))}return e},[null==n?void 0:n.length]));return p.length?r.createElement(o.i,{columns:m,data:p,theme:Object.assign(Object.assign({},g),{table:e.border?"".concat(g.table," border"):g.table}),enableSort:e.enableSort}):r.createElement(r.Fragment,null)}var w=n(84621),E=n(8604);function O(e){return r.createElement(u.O,{layout:e.layout,className:e.className,percentage:0,customLabel:"--%"})}var S=n(83345),j=n(35223),C="shared.insightAmountWatched",k=a.T.encloseNamespace(C);function P(e){var t=(0,E.Q)(e.engagement),n=Math.round(100*t);return r.createElement(w.L,{title:k("title"),svgName:j.vn.Timer,svgClassName:"bg-light-green text-green"},r.createElement("div",{className:"d-flex flex-column align-items-center my-auto gap-2"},!!e.engagement&&r.createElement(r.Fragment,null,r.createElement(u.O,{percentage:t,layout:u.I.LabelInside}),r.createElement("p",{className:"text-center"},"number"==typeof t?r.createElement(S.x,{namespace:C,phrase:"everyoneWatched",options:{percentage:n}}):r.createElement(S.x,{namespace:C,phrase:"notWatched"}))),!e.engagement&&r.createElement(r.Fragment,null,r.createElement(O,{layout:u.I.LabelInside}))))}var N=n(72306),T=n.n(N),x=n(70312),I=n.n(x),M=n(70072),A=n(75896),R=["#FF9300","#38A2E8","#7A76E8","#B679C7","#F7847B","#D9584F","#FFCD52","#5DC786","#40BCC3","#40C2BB"];function _(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 B=n(97958),L="shared.insightTotalViews",U=a.T.encloseNamespace(L),D={title:{text:null},credits:{enabled:!1},chart:{backgroundColor:"transparent",spacing:[0,0,0,0]},legend:{itemStyle:M.d,itemDistance:8},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!1},showInLegend:!0,borderWidth:0,size:"80%"}}};function H(e){var t,n,o,a,i,l,c,u=function(e){var t,n,r=e.findIndex(function(e){return"Staff"===e.name});if(r>-1){var o=(t=e.splice(r,1),n=1,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,o,a,i,l=[],c=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return _(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)?_(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.")}())[0];e.push(o)}return e.sort(function(e,t){var n,r;return parseInt(null===(n=e.name.match(/\d+/))||void 0===n?void 0:n[0])-parseInt(null===(r=t.name.match(/\d+/))||void 0===r?void 0:r[0])})}((o=e.events,a=[],l={},null==(c=o["yearGroupCount"])||c.forEach(function(e){var t,n=e.name||"Unknown";n&&!(null==a?void 0:a.includes(n.toLowerCase()))&&(l[n]=null!==(t=l[n])&&void 0!==t?t:0,l[n]+=e.count)}),A.m.sortBy(Object.keys(l).map(function(e){return{name:i?i(e):e,y:l[e],type:"pie"}}),"name").map(function(e,t){return Object.assign(Object.assign({},e),{color:R[t%R.length]})}))),s=null!==(n=null==(t=u)?void 0:t.reduce(function(e,t){return e+t.y},0))&&void 0!==n?n:null;return r.createElement(w.L,{title:U("title"),svgClassName:"bg-light-blue text-blue",svgName:j.vn.VisibleOn},(null==u?void 0:u.length)?r.createElement(r.Fragment,null,r.createElement("p",{className:"mb-0"},r.createElement(S.x,{namespace:L,phrase:"totalViews",options:{totalViews:s}})),r.createElement("div",{className:"d-flex justify-content-center h-75"},r.createElement(I(),{highcharts:T(),options:function(e){return Object.assign(Object.assign({},D),{series:[{type:"pie",name:U("title"),data:e}]})}(u),containerProps:{className:"w-100"}}))):r.createElement(B.u,{className:"pt-0 my-auto"},r.createElement(B.u.Image,{src:e.emptyStateImage,className:"w-75 h-auto"}),r.createElement(B.u.Heading,{className:"h4"},r.createElement(S.x,{namespace:L,phrase:"noViews"})),r.createElement(B.u.Info,{className:"w-100"},r.createElement(S.x,{namespace:L,phrase:"notWatched"}))))}var F=n(99742);const V={partialInsights:"nKLWa",videoContainer:"WF2iA"};function W(){return r.createElement("div",null,r.createElement("div",{className:"row g-3 mb-3"},r.createElement("div",{className:"col"},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col"},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:V.videoContainer},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")}))),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")}))))}var z=n(87252),G=n(41386),Z=n(76032);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,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,q(r.key),r)}}function q(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+""}function Q(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(Q=function(){return!!e})()}function X(){return X="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=Y(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},X.apply(null,arguments)}function Y(e){return Y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Y(e)}function J(e,t){return J=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},J(e,t)}var ee=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=Y(t),function(e,t){if(t&&("object"==K(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Q()?Reflect.construct(t,n||[],Y(e).constructor):t.apply(e,n))}(this,t,[e,n])).overlayVisible=n.overlayVisible,r.toggle(r.overlayVisible),r}return 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&&J(e,t)}(t,e),n=t,r=[{key:"handleToggle",value:function(){this.toggle(!this.overlayVisible)}},{key:"toggle",value:function(e){e?this.toggleOn():this.toggleOff()}},{key:"toggleOn",value:function(){Z.Z.dom.addClass(this.toggleEl,"on"),this.overlayVisible=!0,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().addClass("cv-reports-player-overlay-visible")}},{key:"toggleOff",value:function(){Z.Z.dom.removeClass(this.toggleEl,"on"),this.overlayVisible=!1,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().removeClass("cv-reports-player-overlay-visible")}},{key:"handleClick",value:function(e){e.stopImmediatePropagation()}},{key:"createEl",value:function(e,n,r){this.handlerBound||(this.handleToggle=this.handleToggle.bind(this),this.handlerBound=!0),this.toggleEl&&this.toggleEl.removeEventListener("click",this.handleToggle),this.toggleEl=Z.Z.dom.createEl("div",{className:"custom-toggle custom-toggle-info toggle-option float-end",innerHTML:'<span class="handle"></span></div>'}),this.toggleEl.addEventListener("click",this.handleToggle);var o,a,i,l=(o=t,a=this,"function"==typeof(i=X(Y(1&3?o.prototype:o),"createEl",a))?function(e){return i.apply(a,e)}:i)([e,{className:"vjs-menu-item cv-cog-menu-item",innerHTML:'\n <span class="vjs-menu-item-text">Heat Map</span>\n <span class="cv-toggle-container"></span>'},r]);return l.children[1].appendChild(this.toggleEl),l}}],r&&$(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Z.Z.getComponent("MenuItem"));Z.Z.registerComponent("EngagementOverlayMenuItem",ee);var te=n(74161),ne=n(86572);function re(e){var t,n=e.interactive.timepoints.find(function(t){var n=t.visibleAt/1e3;return Math.floor(e.time)===Math.floor(n)||Math.ceil(e.time)===Math.ceil(n)});if(!(null===(t=null==n?void 0:n.interactions)||void 0===t?void 0:t.length))return r.createElement(r.Fragment,null);var o=n.interactions.length>3?n.interactions.slice(0,2):n.interactions,a=n.interactions.length-o.length;return r.createElement("div",{className:"d-flex justify-content-end ms-2"},o.map(function(e,t){return r.createElement(ne.y,{key:t,interaction:e,showQuestion:!1,iconClassName:"ms-1"})}),!!a&&r.createElement("div",{className:"interaction-type-icon d-flex justify-content-center align-items-center border border-dark text-body ms-1"},"+".concat(a)))}var oe=n(42503);function ae(e){return function(e){if(Array.isArray(e))return ie(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return ie(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)?ie(e,t):void 0}}(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 ie(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 le={title:{text:null},xAxis:{visible:!1,minPadding:0,maxPadding:0},legend:{enabled:!1},credits:{enabled:!1},defs:{gradient:{tagName:"linearGradient",id:"area-gradient",x1:0,y1:1,x2:0,y2:0,children:[{tagName:"stop",offset:0},{tagName:"stop",offset:1}]}}};function ce(e,t){return{styledMode:!0,spacing:[15,0,0,0],width:e,height:t}}function ue(e){return ue="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},ue(e)}function se(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,fe(r.key),r)}}function fe(e){var t=function(e){if("object"!=ue(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ue(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ue(t)?t:t+""}function de(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(de=function(){return!!e})()}function me(){return me="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=pe(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},me.apply(null,arguments)}function pe(e){return pe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},pe(e)}function ve(e,t){return ve=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ve(e,t)}var ye=Z.Z.getComponent("Component");T().AST.allowedTags.push("g"),T().AST.allowedAttributes.push("viewBox","transform");var he=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=pe(t),function(e,t){if(t&&("object"==ue(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,de()?Reflect.construct(t,n||[],pe(e).constructor):t.apply(e,n))}(this,t,[e,n])).initialize(),r.bindListeners(),r}return 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&&ve(e,t)}(t,e),n=t,o=[{key:"initialize",value:function(){var e=this;this.player().ready(function(){return e.buildChart()})}},{key:"buildCSSClass",value:function(){return"cv-engagement-overlay"}},{key:"createEl",value:function(e,n,r){var o,a,i;return(o=t,a=this,"function"==typeof(i=me(pe(1&3?o.prototype:o),"createEl",a))?function(e){return i.apply(a,e)}:i)([e,Object.assign(Object.assign({},n),{className:this.buildCSSClass(),innerHTML:'<div class="cv-engagement-chart"></div><div class="cv-engagement-timepoint-indicator"></div>'}),r])}},{key:"toggleChart",value:function(e){e?this.buildChart():this.destroyChart()}},{key:"bindListeners",value:function(){var e=this;this.handleClick=this.handleClick.bind(this),this.resizeChart=this.resizeChart.bind(this),this.player().on("playerresize",this.resizeChart),this.on(this.el(),"mouseup",this.handleClick),this.player().on("dispose",function(){e.player().off("playerresize",e.resizeChart),e.off(e.el(),"mouseup",e.handleClick)})}},{key:"handleClick",value:function(e){Z.Z.dom.isSingleLeftClick(e)&&(this.player().paused()?this.player().play():this.player().pause())}},{key:"buildChart",value:function(){var e=this;if(!this.chart){var t=this.getChartDimensions();if(t){var n=this.el().querySelector(".cv-engagement-chart");this.chart=T().chart(n,this.getHighchartOptions(t))}else this.player().one("play",function(){return e.buildChart()})}}},{key:"resizeChart",value:function(){var e=this.getChartDimensions();this.chart&&e&&this.chart.setSize(e.width,e.height)}},{key:"destroyChart",value:function(){var e;null===(e=this.chart)||void 0===e||e.destroy(),this.chart=null}},{key:"getChartDimensions",value:function(){var e=this.player().getChild("collapserator"),t=null==e?void 0:e.currentHeight(),n=this.el().clientWidth;return t&&n?{width:n,height:this.player().currentDimensions().height-t}:null}},{key:"getHighchartOptions",value:function(e){var t,n,o,a=e.width,i=e.height;return Object.assign(Object.assign({},le),{chart:ce(a,i),yAxis:(n=this.options_.heatMap,{max:1.05*Math.max.apply(Math,ae(n)),min:0,minPadding:0,maxPadding:0,allowDecimals:!0,startOnTick:!1,endOnTick:!1,visible:!1}),tooltip:(o=this.options_.interactive,{formatter:function(){var e=o?function(e,t){return(0,te.renderToStaticMarkup)(r.createElement(re,{time:t,interactive:e}))}(o,this.x):"";return'<div class="cv-engagement-tooltip bg-white rounded"><div class="d-flex justify-content-between">'+"<strong>".concat((0,oe.m)(this.x),"</strong>")+"".concat(e)+'</div><div class="d-flex justify-content-between rounded bg-light cv-view-count-container">'+'<strong>Views</strong> <span class="cv-view-count">'.concat(this.y,"</span>")+"</div></div>"},positioner:function(e,t,n){var r=this.chart.plotWidth-e,o=n.plotX-e/2;return{x:Math.min(Math.max(o,0),r),y:this.chart.plotTop}},useHTML:!0,padding:0}),plotOptions:(t=this.moveTimepointIndicator.bind(this),{area:{point:{events:{mouseOver:function(){t(this.x)},mouseOut:function(){t(null)}}}},series:{marker:{enabled:!1}}}),series:[{type:"area",data:this.options_.heatMap}]})}},{key:"moveTimepointIndicator",value:function(e){this.options_.onTimepointHover&&this.options_.onTimepointHover(e);var t=this.el().querySelector(".cv-engagement-timepoint-indicator");null!==e?(Z.Z.dom.addClass(t,"cv-engagement-timepoint-indicator-visible"),t.style.left="".concat(e/this.options_.heatMap.length*100,"%")):Z.Z.dom.removeClass(t,"cv-engagement-timepoint-indicator-visible")}}],o&&se(n.prototype,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,o}(ye);function ge(e){return ge="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},ge(e)}function be(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,we(r.key),r)}}function we(e){var t=function(e){if("object"!=ge(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ge(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ge(t)?t:t+""}function Ee(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(Ee=function(){return!!e})()}function Oe(e){return Oe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Oe(e)}function Se(e,t){return Se=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Se(e,t)}Z.Z.registerComponent("EngagementOverlay",he);var je=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=Oe(t),function(e,t){if(t&&("object"==ge(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Ee()?Reflect.construct(t,n||[],Oe(e).constructor):t.apply(e,n))}(this,t,[e,n])).options=n,e.ready(function(){r.initialize()}),r}return 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&&Se(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(){var e;this.hasHeatMapData()&&(this.player.addChild("engagementOverlay",{heatMap:this.options.heatMap,interactive:this.options.interactive,onTimepointHover:this.options.onTimepointHover}),(null===(e=this.player.getChild("collapserator"))||void 0===e?void 0:e.getChild("cogButton")).addItem({index:0,ctor:ee,name:"EngagementOverlayMenuItem",options:{overlayVisible:!0}}))}},{key:"toggleOverlay",value:function(e){var t=this.player.getChild("engagementOverlay");null==t||t.toggleChart(e)}},{key:"hasHeatMapData",value:function(){var e;return(null===(e=this.options.heatMap)||void 0===e?void 0:e.reduce(function(e,t){return e+t},0))>0}}])&&be(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Z.Z.getPlugin("plugin"));Z.Z.registerPlugin("engagementOverlayPlugin",je),n(16852);var Ce=n(4271),ke=n(10463);function Pe(e){return Pe="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},Pe(e)}function Ne(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,Te(r.key),r)}}function Te(e){var t=function(e){if("object"!=Pe(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Pe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Pe(t)?t:t+""}function xe(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(xe=function(){return!!e})()}function Ie(e){return Ie=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Ie(e)}function Me(e,t){return Me=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Me(e,t)}n(6994);var Ae=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=Ie(t),function(e,t){if(t&&("object"==Pe(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,xe()?Reflect.construct(t,n||[],Ie(e).constructor):t.apply(e,n))}(this,t,[e])).options=n,r.player.one("loadedmetadata",function(){return r.player.ready(r.initialize.bind(r))}),r}return 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&&Me(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(){ke.O.useMetadataTrack(this.player,"interactive",this.onTrackLoaded.bind(this)),this.player.addClass("cv-interactive-plugin")}},{key:"onTrackLoaded",value:function(e){this.addChildren(e)}},{key:"addChildren",value:function(e){this.player.controlBar.getChild("progressControl").getChild("SeekBar").addChild(new Ce.N(this.player,{interactive:this.options.interactive,track:e}))}}])&&Ne(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Z.Z.getPlugin("plugin"));function Re(e){return Re="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},Re(e)}function _e(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function a(n,r,o,a){var c=r&&r.prototype instanceof l?r:l,u=Object.create(c.prototype);return Be(u,"_invoke",function(n,r,o){var a,l,c,u=0,s=o||[],f=!1,d={p:0,n:0,v:e,a:m,f:m.bind(e,4),d:function(t,n){return a=t,l=0,c=e,d.n=n,i}};function m(n,r){for(l=n,c=r,t=0;!f&&u&&!o&&t<s.length;t++){var o,a=s[t],m=d.p,p=a[2];n>3?(o=p===r)&&(c=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=e):a[0]<=m&&((o=n<2&&m<a[1])?(l=0,d.v=r,d.n=a[1]):m<p&&(o=n<3||a[0]>r||r>p)&&(a[4]=n,a[5]=r,d.n=p,l=0))}if(o||n>1)return i;throw f=!0,r}return function(o,s,p){if(u>1)throw TypeError("Generator is already running");for(f&&1===s&&m(s,p),l=s,c=p;(t=l<2?e:c)||!f;){a||(l?l<3?(l>1&&(d.n=-1),m(l,c)):d.n=c:d.v=c);try{if(u=2,a){if(l||(o="next"),t=a[o]){if(!(t=t.call(a,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,l<2&&(l=0)}else 1===l&&(t=a.return)&&t.call(a),l<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=e}else if((t=(f=d.n<0)?c:n.call(r,d))!==i)break}catch(t){a=e,l=1,c=t}finally{u=1}}return{value:t,done:f}}}(n,o,a),!0),u}var i={};function l(){}function c(){}function u(){}t=Object.getPrototypeOf;var s=[][r]?t(t([][r]())):(Be(t={},r,function(){return this}),t),f=u.prototype=l.prototype=Object.create(s);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,Be(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=u,Be(f,"constructor",u),Be(u,"constructor",c),c.displayName="GeneratorFunction",Be(u,o,"GeneratorFunction"),Be(f),Be(f,o,"Generator"),Be(f,r,function(){return this}),Be(f,"toString",function(){return"[object Generator]"}),(_e=function(){return{w:a,m:d}})()}function Be(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}Be=function(e,t,n,r){if(t)o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var a=function(t,n){Be(e,t,function(e){return this._invoke(t,n,e)})};a("next",0),a("throw",1),a("return",2)}},Be(e,t,n,r)}function Le(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,Ue(r.key),r)}}function Ue(e){var t=function(e){if("object"!=Re(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Re(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Re(t)?t:t+""}function De(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(De=function(){return!!e})()}function He(){return He="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=Fe(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},He.apply(null,arguments)}function Fe(e){return Fe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Fe(e)}function Ve(e,t){return Ve=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ve(e,t)}Z.Z.registerPlugin("interactiveSeekBarPlugin",Ae);var We=function(e){function t(e,n){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=Fe(t),function(e,t){if(t&&("object"==Re(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,De()?Reflect.construct(t,n||[],Fe(e).constructor):t.apply(e,n))}(this,t,[e,n])}return 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&&Ve(e,t)}(t,e),n=t,r=[{key:"getPlayerClassName",value:function(){return"cv-reports-player"}},{key:"getAnalyticsPlayerType",value:function(){return"reports-player"}},{key:"additionalSetup",value:function(e){var n,r,o,a,i=this,l=Object.create(null,{additionalSetup:{get:function(){return e=t,n=i,He(Fe(1&1?e.prototype:e),"additionalSetup",n);var e,n}}});return n=this,r=void 0,o=void 0,a=_e().m(function t(){return _e().w(function(t){for(;;)switch(t.n){case 0:l.additionalSetup.call(this,e),this.setupEngagementOverlayPlugin(e),this.setupUpClipPlugin(e),this.setupInteractiveSeekBarPlugin(e);case 1:return t.a(2)}},t,this)}),new(o||(o=Promise))(function(e,t){function i(e){try{c(a.next(e))}catch(e){t(e)}}function l(e){try{c(a.throw(e))}catch(e){t(e)}}function c(t){var n;t.done?e(t.value):(n=t.value,n instanceof o?n:new o(function(e){e(n)})).then(i,l)}c((a=a.apply(n,r||[])).next())})}},{key:"setupEngagementOverlayPlugin",value:function(e){var t;this.player.engagementOverlayPlugin({heatMap:this.options.heatMap,interactive:null===(t=e.additionalData)||void 0===t?void 0:t.interactive,onTimepointHover:this.options.onTimepointHover})}},{key:"setupUpClipPlugin",value:function(e){var t,n,r="MasterClip"===e.mediaType,o="MasterInteractive"===e.mediaType;if((r||o)&&(r&&(n=e.additionalData),!o||(n=null===(t=e.additionalData)||void 0===t?void 0:t.clipData))){if(!n)throw Error("Invalid clip data");this.player.clipPlugin({startTime:n.startTime,endTime:n.endTime})}}},{key:"setupInteractiveSeekBarPlugin",value:function(e){var t,n,r=null===(t=e.additionalData)||void 0===t?void 0:t.interactive;(null===(n=e.additionalData)||void 0===n?void 0:n.interactive)&&(this.track=G.h.getInteractiveTrack(this.player,e),this.player.interactiveSeekBarPlugin({interactive:r}))}},{key:"getSeekBarOptions",value:function(){return{ignoreChapters:!0}}}],r&&Le(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(z.r);function ze(e){var t=r.useRef(null),n=r.useRef(null);return r.useEffect(function(){n.current=new We(t.current,e)},[]),r.createElement("div",{ref:t})}const Ge={playerContainer:"fGWsk",playerPlaceholder:"v1MjE",heatMap:"lp1Yn",heatMapTimepointIndicator:"yOOK6",heatMapTimepointIndicatorVisible:"rTXmB",partialLoadingContainer:"gW1HU"};var Ze=a.T.encloseNamespace("shared.videoEngagementOverlay");function Ke(e){var t=r.useRef(null),n=(0,E.O)(e.engagement);return r.createElement("div",{className:"bg-white border rounded overflow-hidden h-100"},r.createElement("div",{className:"position-relative"},r.createElement("div",{className:Ge.playerPlaceholder}),r.createElement("div",{className:Ge.playerContainer},r.createElement(ze,{viewKey:e.viewKey,playerApi:new URL(e.playerApiUrl),hotkeyElQuerySelector:"body",heatMap:n,onTimepointHover:function(e){var r=t.current;r&&(null!==e?(r.classList.add(Ge.heatMapTimepointIndicatorVisible),r.style.left="".concat(e/n.length*100,"%")):r.classList.remove(Ge.heatMapTimepointIndicatorVisible))},aspectRatio:"16:9"}))),r.createElement("div",{className:"p-3"},r.createElement("div",{className:"position-relative"},r.createElement(i.c,{engagement:e.engagement,className:Ge.heatMap}),r.createElement("div",{ref:t,className:Ge.heatMapTimepointIndicator})),r.createElement("div",{className:"d-flex justify-content-between mt-2"},r.createElement("strong",null,Ze("heatmap")),r.createElement("div",{className:"w-33"},r.createElement(i.l,null)))))}const $e={videoContainer:"cpl68"};function qe(e){var t;return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(W,null),r.createElement("div",{className:"row g-3 mb-3"},e.hasDataLoaded&&r.createElement(r.Fragment,null,r.createElement("div",{className:"col"},r.createElement(H,{events:{yearGroupCount:e.yearGroups},emptyStateImage:F.W.EmptyStates.MY_VIDEOS})),r.createElement("div",{className:"col"},r.createElement(P,{engagement:e.individualEngagement})),r.createElement("div",{className:$e.videoContainer},r.createElement(Ke,{engagement:e.aggregateEngagement,viewKey:e.viewKey.viewKey,playerApiUrl:e.config.playerApiUrl,imageCdnUrl:e.config.imageCdnUrl}))),e.tableDataLoaded&&r.createElement("div",{className:"col-12"},r.createElement(b,{engagement:e.individualEngagement,users:e.users,imageCdnUrl:null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,classroomStudents:e.classroomStudents,border:!0,enableSort:!0}))))}}}]);
|
|
3
|
-
//# sourceMappingURL=
|
|
1
|
+
/*! For license information please see 8362-ed5df8f4fc-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8362],{38307:(e,t,n)=>{n.d(t,{c:()=>h,l:()=>y});var r=n(32735),o=n(232),a=n.n(o),i=n(8604),l=n(83345);const c={heatMap:"epapa",legend:"uhH4p"};function u(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 s="shared.engagementHeatMap",f="#f1f1f1",d=a().scale(["#daf07d","#08bd1a"]),m=[0,.01,.25,.5,.75,1];function p(e,t){return e?d(e/t).hex():f}function v(e,t){for(var n=[],r=0;r<e.length;r++){var o=r>0&&e[r-1],a=e[r],i=r<e.length-1&&e[r+1];a===o&&a===i||n.push("".concat(p(a,t)," ").concat(100/e.length*r,"%"))}return"linear-gradient(to right, ".concat(n.join(","),")")}function y(){var e=Math.max.apply(Math,m),t=100/m.length;return r.createElement("div",{className:"d-flex justify-content-between w-100"},r.createElement(l.x,{namespace:s,phrase:"less"}),r.createElement("div",{className:"d-flex mx-1 flex-grow-1 ".concat(c.legend)},m.map(function(n,o){return r.createElement("div",{key:o,style:{width:"".concat(t,"%"),backgroundColor:p(n,e)}})})),r.createElement(l.x,{namespace:s,phrase:"more"}))}function h(e){var t,n,o,a=(0,i.O)(e.engagement),l=null!==(t=e.max)&&void 0!==t?t:Math.max.apply(Math,function(e){if(Array.isArray(e))return u(e)}(o=a)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||function(e,t){if(e){if("string"==typeof e)return u(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)?u(e,t):void 0}}(o)||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.")}());return r.createElement("div",{className:"border rounded ".concat(c.heatMap," ").concat(null!==(n=e.className)&&void 0!==n?n:""),style:{background:v(a,l)}})}},84621:(e,t,n)=>{n.d(t,{L:()=>i});var r=n(32735),o=n(83914);const a={icon:"sAmpy",count:"faDs4"};function i(e){return r.createElement("section",{className:"d-flex flex-column border rounded p-3 h-100"},r.createElement("div",{className:"d-flex ".concat(e.subtitle?"align-items-top":"align-items-center"," mb-2")},r.createElement("div",{className:"".concat(a.icon," ").concat(e.svgClassName," rounded-circle d-flex justify-content-center align-items-center")},r.createElement(o.x,{svgName:e.svgName,size:o.S.Small})),r.createElement("div",{className:"d-flex flex-column ms-2"},r.createElement("h2",{className:"h6 mb-0"},e.title)),"number"==typeof e.count&&r.createElement("div",{className:"".concat(a.count," d-flex justify-content-center align-items-center bg-light rounded-circle ms-auto")},e.count)),e.children)}},70072:(e,t,n)=>{n.d(t,{d:()=>r});var r={fontSize:"12px",fontFamily:'"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',fontWeight:"400",color:"#313543"}},8604:(e,t,n)=>{function r(e){var t=e.videoDuration||0;return new Array(Math.ceil(t)).fill(null).map(function(t,n){return(null==e?void 0:e.heatMap[n])||0})}function o(e){return null==e?void 0:e.reduce(function(t,n){return t+n.engagementRate/e.length},0)}n.d(t,{O:()=>r,Q:()=>o})},6748:(e,t,n)=>{n.d(t,{i:()=>S});var r=n(32735),o=n(42648),a=n(35509),i=n(91967),l=n(15611),c=n(17808),u=n(1287),s=n(83914),f=n(90281),d={opacity:"0.8",cursor:"grabbing"},m=n(35223);function p(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(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 v(e,t){if(e){if("string"==typeof e)return y(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)?y(e,t):void 0}}function y(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 h(e){var t,n,r,o;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(n=e.current)||void 0===n?void 0:n.scrollLeft)+1<(null===(r=e.current)||void 0===r?void 0:r.scrollWidth)-(null===(o=e.current)||void 0===o?void 0:o.clientWidth)}}const g={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function b(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 w=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};function E(e){var t,n;return e.column.canSort?r.createElement("span",{className:"".concat(g.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(n=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==n?n:"")},r.createElement(s.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?m.vn.ArrowRight:m.vn.ArrowLeft,size:s.S.Small})):r.createElement(r.Fragment,null)}function O(e){var t,n,o,s,f,m,v,y,h={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(h.initialState={selectedRowIds:(v=e.initialSelectedRowIds,y={},v.forEach(function(e){return y[e]=!0}),y)}),e.getRowId&&(h.getRowId=e.getRowId);var g,w=a.useTable.apply(void 0,[h].concat((g=function(e){var t=[a.useSortBy,a.useRowSelect,"flex"===e.layout?a.useFlexLayout:a.useBlockLayout];return e.allowFiltering&&(t=[].concat(p(t),[a.useFilters])),e.allowGlobalFiltering&&(t=[].concat(p(t),[a.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return b(e)}(g)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(g)||function(e,t){if(e){if("string"==typeof e)return b(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)?b(e,t):void 0}}(g)||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.")}()))),O=w.getTableProps,S=w.getTableBodyProps,j=w.headerGroups,C=w.rows,k=w.prepareRow,P=w.toggleAllRowsSelected,N=w.setGlobalFilter,T=w.setHiddenColumns,x=w.state.sortBy;function I(){return!C.length&&e.emptyState?e.emptyState:C.map(function(t){k(t);var n=function(t){var n,r,o,a,l,c=i.q.isFunction(null===(n=e.theme)||void 0===n?void 0:n.row)?e.theme.row(t):null!==(o=null===(r=e.theme)||void 0===r?void 0:r.row)&&void 0!==o?o:"";return t.isSelected&&(null===(a=e.theme)||void 0===a?void 0:a.selectedRow)&&(c+=" ".concat(null===(l=e.theme)||void 0===l?void 0:l.selectedRow)),e.onSelectRow&&(c+=" cursor-pointer"),e.enableSortableRows&&(c+=" cursor-grab"),c}(t),o=!!e.getRowAppLink&&e.getRowAppLink(t);function a(){e.onSelectRow&&(e.allowSelectMultipleRows||P(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,i){var c=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,i);return o?r.createElement("div",{role:"row",key:t.id},r.createElement(l.F,Object.assign({},e,c,{className:n,appLink:o}),M(t))):r.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:n,onClick:a}),M(t))}var s=t.getRowProps();return e.enableSortableRows?r.createElement(u.W,{id:t.original.id,key:t.id,childProps:s,childComponent:r.forwardRef(function(e,t){return c(e,t)})}):c(s)})}function M(t){return t.cells.map(function(n){var o=function(t,n){var r,o,a="";return"function"==typeof(null===(r=e.theme)||void 0===r?void 0:r.cell)&&(a=e.theme.cell(t,n)),"string"==typeof(null===(o=e.theme)||void 0===o?void 0:o.cell)&&(a=e.theme.cell),e.onSelectCell&&(a+=" cursor-pointer"),a}(t,n);return r.createElement("div",Object.assign({key:n.column.id},n.getCellProps(),{className:o,onClick:function(){e.onSelectCell&&e.onSelectCell(n)}}),n.render("Cell"))})}return r.useEffect(function(){e.onSort&&e.onSort(x)},[x]),r.useEffect(function(){e.globalFilter&&N(e.globalFilter)},[e.globalFilter]),r.useEffect(function(){e.hiddenColumns&&T(e.hiddenColumns)},[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},O(),{className:null!==(n=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==n?n:""}),r.createElement("div",{className:null!==(s=null===(o=e.theme)||void 0===o?void 0:o.header)&&void 0!==s?s:""},j.map(function(t){var n,o;return r.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(o=null===(n=e.theme)||void 0===n?void 0:n.headerRow)&&void 0!==o?o:""}),t.headers.map(function(t){var n,o;return r.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(o=null===(n=e.theme)||void 0===n?void 0:n.headerCell)&&void 0!==o?o:""}),t.render("Header",{renderSortIndicator:function(){return r.createElement(E,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(E,{column:t,theme:e.theme}))}))})),r.createElement("div",Object.assign({},S(),{className:null!==(m=null===(f=e.theme)||void 0===f?void 0:f.body)&&void 0!==m?m:""}),e.enableSortableRows?r.createElement(c.Q,{ids:C.map(function(e){return e.original.id}),getDragOverlay:function(t){var n,o,a=C.findIndex(function(e){return e.original.id===t}),i=C[a];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,o="g-0 ",n&&(o+=n.row),o),style:d}),M(i))},onSortEnd:e.onSortingRowsEnd},I()):I()))}function S(e){var t=e.enableSlider,n=e.scrollIncrement,a=e.scrollable,l=w(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,n=r.useRef(null),o=(e=r.useState(h(n)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],c=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(e,t)||v(e,t)||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.")}()),a=o[0],l=o[1],c=i.q.throttle(function(){l(h(n))},200),u=r.useCallback(function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(l(h(n)),e.addEventListener("scroll",c)),n.current=e},[]);return r.useEffect(function(){(null==n?void 0:n.current)&&l(h(n))},[n]),{ref:u,scrollState:a,scroll:function(e){var t;null===(t=n.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),u=c.ref,s=c.scrollState,d=c.scroll;if(a)return r.createElement(o.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:g.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(O,Object.assign({},l)));if(!t)return r.createElement(O,Object.assign({},l));function m(e){d(n*("right"===e?1:-1))}return r.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},r.createElement("div",{className:"px-4"},r.createElement("div",{className:"position-relative"},r.createElement(f.W,{direction:f.f.Left,onClick:function(){return m("left")},hide:!s.canScrollLeft}),r.createElement("div",{className:"".concat(g.scrollContainer," ").concat(e.scrollContainerClassName),ref:u},r.createElement(O,Object.assign({},l))),r.createElement(f.W,{direction:f.f.Right,onClick:function(){return m("right")},hide:!s.canScrollRight}))))}S.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},17132:(e,t,n)=>{n.d(t,{w:()=>qe});var r=n(32735),o=n(6748),a=n(23481),i=n(38307),l=n(26136),c=n(97408),u=n(40782),s=n(64818);const f={heatMap:"rwDjh",avatarContainer:"kW4ZM"};function d(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}(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 m(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 p=a.T.encloseNamespace("shared.engagementTable"),v={heatMap:[],engagementRate:0,viewCount:0};function y(e){var t;return r.createElement("div",{className:"".concat(null!==(t=e.className)&&void 0!==t?t:"")},e.children)}function h(e){return r.createElement(y,{className:"d-inline-block ".concat(e.column.isSorted?"fw-bold":"")},p(e.phraseKey))}var g={table:"bg-white rounded px-0",header:"border-bottom",headerCell:"m-3",cell:"mx-3 my-2"};function b(e){var t,n,a,m=function(e){return r.useMemo(function(){var t,n,o=(t=e.engagement,n=0,t.forEach(function(e){var t=Math.max.apply(Math,d(e.heatMap));t>n&&(n=t)}),n);return[{Header:function(e){var t=e.column;return r.createElement(h,{column:t,phraseKey:"name"})},width:22,accessor:"user",sortType:function(t,n){return(0,l.B)(t.values.user,e.anonymiseUsers)>(0,l.B)(n.values.user,e.anonymiseUsers)?1:-1},Cell:function(t){var n,o,a,i,u=t.value,d=(o=u,a=e.anonymiseUsers,{name:(i=(0,l.B)(o,a).split(" ").filter(function(e){return!!e}))[0],surname:i.slice(1).join(" ")}),m=d.name,p=d.surname;return r.createElement(y,{className:"d-flex align-items-center h-100"},r.createElement("span",{className:f.avatarContainer},r.createElement(c.q,{imageCdnUrl:e.imageCdnUrl,initials:s.l.getInitials(m,p),imageUrl:!e.anonymiseUsers&&(null===(n=null==u?void 0:u.avatar)||void 0===n?void 0:n.url),showAnonymousUser:!(e.anonymiseUsers||u&&!u.sessionId)})),r.createElement("span",{className:"ms-2 clamp-1"},m," ",p))}},{Header:function(e){var t=e.column;return r.createElement(h,{column:t,phraseKey:"views"})},accessor:"viewCount",width:15,sortType:"basic",sortDescFirst:!0,Cell:function(e){var t=e.value;return r.createElement(y,{className:"d-flex align-items-center h-100"},r.createElement("div",null,t))}},{Header:function(e){var t=e.column;return r.createElement(h,{column:t,phraseKey:"engagement"})},accessor:"engagementRate",width:20,sortType:"basic",sortDescFirst:!0,Cell:function(e){var t=e.value;return r.createElement(y,{className:"w-33"},r.createElement(u.O,{percentage:t,layout:u.I.LabelBefore}))}},{Header:function(e){var t=e.column;return r.createElement(h,{column:t,phraseKey:"heatMap"})},accessor:"heatMap",width:48,disableSortBy:!0,Cell:function(e){var t=e.row.original;return r.createElement(y,{className:"d-flex align-items-center h-100"},r.createElement(i.c,{engagement:t,max:o,className:"".concat(f.heatMap," flex-grow-1")}))}}]},[e.anonymiseUsers])}({engagement:e.engagement,imageCdnUrl:e.imageCdnUrl,anonymiseUsers:e.anonymiseUsers}),p=(t=e.engagement,n=e.users,a=e.classroomStudents,r.useMemo(function(){if(!(null==t?void 0:t.length))return[];var e=[],r=new Set;if(t.forEach(function(t){var o=null==n?void 0:n.find(function(e){return e.id&&e.id===t.userId?(r.add(e.id),!0):!(!e.sessionId||e.sessionId!==t.sessionId)});e.push(Object.assign(Object.assign({},t),{user:o}))}),null==a?void 0:a.length){var o=a.filter(function(e){return!r.has(e.id)}).map(function(e){return Object.assign(Object.assign({},v),{user:e})});e.push.apply(e,d(o))}return e},[null==n?void 0:n.length]));return p.length?r.createElement(o.i,{columns:m,data:p,theme:Object.assign(Object.assign({},g),{table:e.border?"".concat(g.table," border"):g.table}),enableSort:e.enableSort}):r.createElement(r.Fragment,null)}var w=n(84621),E=n(8604);function O(e){return r.createElement(u.O,{layout:e.layout,className:e.className,percentage:0,customLabel:"--%"})}var S=n(83345),j=n(35223),C="shared.insightAmountWatched",k=a.T.encloseNamespace(C);function P(e){var t=(0,E.Q)(e.engagement),n=Math.round(100*t);return r.createElement(w.L,{title:k("title"),svgName:j.vn.Timer,svgClassName:"bg-light-green text-green"},r.createElement("div",{className:"d-flex flex-column align-items-center my-auto gap-2"},!!e.engagement&&r.createElement(r.Fragment,null,r.createElement(u.O,{percentage:t,layout:u.I.LabelInside}),r.createElement("p",{className:"text-center"},"number"==typeof t?r.createElement(S.x,{namespace:C,phrase:"everyoneWatched",options:{percentage:n}}):r.createElement(S.x,{namespace:C,phrase:"notWatched"}))),!e.engagement&&r.createElement(r.Fragment,null,r.createElement(O,{layout:u.I.LabelInside}))))}var N=n(72306),T=n.n(N),x=n(70312),I=n.n(x),M=n(70072),A=n(75896),R=["#FF9300","#38A2E8","#7A76E8","#B679C7","#F7847B","#D9584F","#FFCD52","#5DC786","#40BCC3","#40C2BB"];function _(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 B=n(97958),L="shared.insightTotalViews",U=a.T.encloseNamespace(L),D={title:{text:null},credits:{enabled:!1},chart:{backgroundColor:"transparent",spacing:[0,0,0,0]},legend:{itemStyle:M.d,itemDistance:8},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!1},showInLegend:!0,borderWidth:0,size:"80%"}}};function H(e){var t,n,o,a,i,l,c,u=function(e){var t,n,r=e.findIndex(function(e){return"Staff"===e.name});if(r>-1){var o=(t=e.splice(r,1),n=1,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,o,a,i,l=[],c=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return _(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)?_(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.")}())[0];e.push(o)}return e.sort(function(e,t){var n,r;return parseInt(null===(n=e.name.match(/\d+/))||void 0===n?void 0:n[0])-parseInt(null===(r=t.name.match(/\d+/))||void 0===r?void 0:r[0])})}((o=e.events,a=[],l={},null==(c=o["yearGroupCount"])||c.forEach(function(e){var t,n=e.name||"Unknown";n&&!(null==a?void 0:a.includes(n.toLowerCase()))&&(l[n]=null!==(t=l[n])&&void 0!==t?t:0,l[n]+=e.count)}),A.m.sortBy(Object.keys(l).map(function(e){return{name:i?i(e):e,y:l[e],type:"pie"}}),"name").map(function(e,t){return Object.assign(Object.assign({},e),{color:R[t%R.length]})}))),s=null!==(n=null==(t=u)?void 0:t.reduce(function(e,t){return e+t.y},0))&&void 0!==n?n:null;return r.createElement(w.L,{title:U("title"),svgClassName:"bg-light-blue text-blue",svgName:j.vn.VisibleOn},(null==u?void 0:u.length)?r.createElement(r.Fragment,null,r.createElement("p",{className:"mb-0"},r.createElement(S.x,{namespace:L,phrase:"totalViews",options:{totalViews:s}})),r.createElement("div",{className:"d-flex justify-content-center h-75"},r.createElement(I(),{highcharts:T(),options:function(e){return Object.assign(Object.assign({},D),{series:[{type:"pie",name:U("title"),data:e}]})}(u),containerProps:{className:"w-100"}}))):r.createElement(B.u,{className:"pt-0 my-auto"},r.createElement(B.u.Image,{src:e.emptyStateImage,className:"w-75 h-auto"}),r.createElement(B.u.Heading,{className:"h4"},r.createElement(S.x,{namespace:L,phrase:"noViews"})),r.createElement(B.u.Info,{className:"w-100"},r.createElement(S.x,{namespace:L,phrase:"notWatched"}))))}var F=n(99742);const V={partialInsights:"nKLWa",videoContainer:"WF2iA"};function W(){return r.createElement("div",null,r.createElement("div",{className:"row g-3 mb-3"},r.createElement("div",{className:"col"},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col"},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:V.videoContainer},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")}))),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(V.partialInsights," rounded partial-loading-background")}))))}var z=n(87252),G=n(41386),Z=n(76032);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,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,q(r.key),r)}}function q(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+""}function Q(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(Q=function(){return!!e})()}function X(){return X="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=Y(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},X.apply(null,arguments)}function Y(e){return Y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Y(e)}function J(e,t){return J=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},J(e,t)}var ee=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=Y(t),function(e,t){if(t&&("object"==K(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Q()?Reflect.construct(t,n||[],Y(e).constructor):t.apply(e,n))}(this,t,[e,n])).overlayVisible=n.overlayVisible,r.toggle(r.overlayVisible),r}return 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&&J(e,t)}(t,e),n=t,r=[{key:"handleToggle",value:function(){this.toggle(!this.overlayVisible)}},{key:"toggle",value:function(e){e?this.toggleOn():this.toggleOff()}},{key:"toggleOn",value:function(){Z.Z.dom.addClass(this.toggleEl,"on"),this.overlayVisible=!0,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().addClass("cv-reports-player-overlay-visible")}},{key:"toggleOff",value:function(){Z.Z.dom.removeClass(this.toggleEl,"on"),this.overlayVisible=!1,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().removeClass("cv-reports-player-overlay-visible")}},{key:"handleClick",value:function(e){e.stopImmediatePropagation()}},{key:"createEl",value:function(e,n,r){this.handlerBound||(this.handleToggle=this.handleToggle.bind(this),this.handlerBound=!0),this.toggleEl&&this.toggleEl.removeEventListener("click",this.handleToggle),this.toggleEl=Z.Z.dom.createEl("div",{className:"custom-toggle custom-toggle-info toggle-option float-end",innerHTML:'<span class="handle"></span></div>'}),this.toggleEl.addEventListener("click",this.handleToggle);var o,a,i,l=(o=t,a=this,"function"==typeof(i=X(Y(1&3?o.prototype:o),"createEl",a))?function(e){return i.apply(a,e)}:i)([e,{className:"vjs-menu-item cv-cog-menu-item",innerHTML:'\n <span class="vjs-menu-item-text">Heat Map</span>\n <span class="cv-toggle-container"></span>'},r]);return l.children[1].appendChild(this.toggleEl),l}}],r&&$(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Z.Z.getComponent("MenuItem"));Z.Z.registerComponent("EngagementOverlayMenuItem",ee);var te=n(74161),ne=n(86572);function re(e){var t,n=e.interactive.timepoints.find(function(t){var n=t.visibleAt/1e3;return Math.floor(e.time)===Math.floor(n)||Math.ceil(e.time)===Math.ceil(n)});if(!(null===(t=null==n?void 0:n.interactions)||void 0===t?void 0:t.length))return r.createElement(r.Fragment,null);var o=n.interactions.length>3?n.interactions.slice(0,2):n.interactions,a=n.interactions.length-o.length;return r.createElement("div",{className:"d-flex justify-content-end ms-2"},o.map(function(e,t){return r.createElement(ne.y,{key:t,interaction:e,showQuestion:!1,iconClassName:"ms-1"})}),!!a&&r.createElement("div",{className:"interaction-type-icon d-flex justify-content-center align-items-center border border-dark text-body ms-1"},"+".concat(a)))}var oe=n(42503);function ae(e){return function(e){if(Array.isArray(e))return ie(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return ie(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)?ie(e,t):void 0}}(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 ie(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 le={title:{text:null},xAxis:{visible:!1,minPadding:0,maxPadding:0},legend:{enabled:!1},credits:{enabled:!1},defs:{gradient:{tagName:"linearGradient",id:"area-gradient",x1:0,y1:1,x2:0,y2:0,children:[{tagName:"stop",offset:0},{tagName:"stop",offset:1}]}}};function ce(e,t){return{styledMode:!0,spacing:[15,0,0,0],width:e,height:t}}function ue(e){return ue="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},ue(e)}function se(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,fe(r.key),r)}}function fe(e){var t=function(e){if("object"!=ue(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ue(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ue(t)?t:t+""}function de(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(de=function(){return!!e})()}function me(){return me="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=pe(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},me.apply(null,arguments)}function pe(e){return pe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},pe(e)}function ve(e,t){return ve=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ve(e,t)}var ye=Z.Z.getComponent("Component");T().AST.allowedTags.push("g"),T().AST.allowedAttributes.push("viewBox","transform");var he=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=pe(t),function(e,t){if(t&&("object"==ue(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,de()?Reflect.construct(t,n||[],pe(e).constructor):t.apply(e,n))}(this,t,[e,n])).initialize(),r.bindListeners(),r}return 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&&ve(e,t)}(t,e),n=t,o=[{key:"initialize",value:function(){var e=this;this.player().ready(function(){return e.buildChart()})}},{key:"buildCSSClass",value:function(){return"cv-engagement-overlay"}},{key:"createEl",value:function(e,n,r){var o,a,i;return(o=t,a=this,"function"==typeof(i=me(pe(1&3?o.prototype:o),"createEl",a))?function(e){return i.apply(a,e)}:i)([e,Object.assign(Object.assign({},n),{className:this.buildCSSClass(),innerHTML:'<div class="cv-engagement-chart"></div><div class="cv-engagement-timepoint-indicator"></div>'}),r])}},{key:"toggleChart",value:function(e){e?this.buildChart():this.destroyChart()}},{key:"bindListeners",value:function(){var e=this;this.handleClick=this.handleClick.bind(this),this.resizeChart=this.resizeChart.bind(this),this.player().on("playerresize",this.resizeChart),this.on(this.el(),"mouseup",this.handleClick),this.player().on("dispose",function(){e.player().off("playerresize",e.resizeChart),e.off(e.el(),"mouseup",e.handleClick)})}},{key:"handleClick",value:function(e){Z.Z.dom.isSingleLeftClick(e)&&(this.player().paused()?this.player().play():this.player().pause())}},{key:"buildChart",value:function(){var e=this;if(!this.chart){var t=this.getChartDimensions();if(t){var n=this.el().querySelector(".cv-engagement-chart");this.chart=T().chart(n,this.getHighchartOptions(t))}else this.player().one("play",function(){return e.buildChart()})}}},{key:"resizeChart",value:function(){var e=this.getChartDimensions();this.chart&&e&&this.chart.setSize(e.width,e.height)}},{key:"destroyChart",value:function(){var e;null===(e=this.chart)||void 0===e||e.destroy(),this.chart=null}},{key:"getChartDimensions",value:function(){var e=this.player().getChild("collapserator"),t=null==e?void 0:e.currentHeight(),n=this.el().clientWidth;return t&&n?{width:n,height:this.player().currentDimensions().height-t}:null}},{key:"getHighchartOptions",value:function(e){var t,n,o,a=e.width,i=e.height;return Object.assign(Object.assign({},le),{chart:ce(a,i),yAxis:(n=this.options_.heatMap,{max:1.05*Math.max.apply(Math,ae(n)),min:0,minPadding:0,maxPadding:0,allowDecimals:!0,startOnTick:!1,endOnTick:!1,visible:!1}),tooltip:(o=this.options_.interactive,{formatter:function(){var e=o?function(e,t){return(0,te.renderToStaticMarkup)(r.createElement(re,{time:t,interactive:e}))}(o,this.x):"";return'<div class="cv-engagement-tooltip bg-white rounded"><div class="d-flex justify-content-between">'+"<strong>".concat((0,oe.m)(this.x),"</strong>")+"".concat(e)+'</div><div class="d-flex justify-content-between rounded bg-light cv-view-count-container">'+'<strong>Views</strong> <span class="cv-view-count">'.concat(this.y,"</span>")+"</div></div>"},positioner:function(e,t,n){var r=this.chart.plotWidth-e,o=n.plotX-e/2;return{x:Math.min(Math.max(o,0),r),y:this.chart.plotTop}},useHTML:!0,padding:0}),plotOptions:(t=this.moveTimepointIndicator.bind(this),{area:{point:{events:{mouseOver:function(){t(this.x)},mouseOut:function(){t(null)}}}},series:{marker:{enabled:!1}}}),series:[{type:"area",data:this.options_.heatMap}]})}},{key:"moveTimepointIndicator",value:function(e){this.options_.onTimepointHover&&this.options_.onTimepointHover(e);var t=this.el().querySelector(".cv-engagement-timepoint-indicator");null!==e?(Z.Z.dom.addClass(t,"cv-engagement-timepoint-indicator-visible"),t.style.left="".concat(e/this.options_.heatMap.length*100,"%")):Z.Z.dom.removeClass(t,"cv-engagement-timepoint-indicator-visible")}}],o&&se(n.prototype,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,o}(ye);function ge(e){return ge="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},ge(e)}function be(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,we(r.key),r)}}function we(e){var t=function(e){if("object"!=ge(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ge(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ge(t)?t:t+""}function Ee(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(Ee=function(){return!!e})()}function Oe(e){return Oe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Oe(e)}function Se(e,t){return Se=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Se(e,t)}Z.Z.registerComponent("EngagementOverlay",he);var je=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=Oe(t),function(e,t){if(t&&("object"==ge(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Ee()?Reflect.construct(t,n||[],Oe(e).constructor):t.apply(e,n))}(this,t,[e,n])).options=n,e.ready(function(){r.initialize()}),r}return 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&&Se(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(){var e;this.hasHeatMapData()&&(this.player.addChild("engagementOverlay",{heatMap:this.options.heatMap,interactive:this.options.interactive,onTimepointHover:this.options.onTimepointHover}),(null===(e=this.player.getChild("collapserator"))||void 0===e?void 0:e.getChild("cogButton")).addItem({index:0,ctor:ee,name:"EngagementOverlayMenuItem",options:{overlayVisible:!0}}))}},{key:"toggleOverlay",value:function(e){var t=this.player.getChild("engagementOverlay");null==t||t.toggleChart(e)}},{key:"hasHeatMapData",value:function(){var e;return(null===(e=this.options.heatMap)||void 0===e?void 0:e.reduce(function(e,t){return e+t},0))>0}}])&&be(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Z.Z.getPlugin("plugin"));Z.Z.registerPlugin("engagementOverlayPlugin",je),n(16852);var Ce=n(4271),ke=n(10463);function Pe(e){return Pe="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},Pe(e)}function Ne(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,Te(r.key),r)}}function Te(e){var t=function(e){if("object"!=Pe(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Pe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Pe(t)?t:t+""}function xe(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(xe=function(){return!!e})()}function Ie(e){return Ie=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Ie(e)}function Me(e,t){return Me=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Me(e,t)}n(6994);var Ae=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=Ie(t),function(e,t){if(t&&("object"==Pe(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,xe()?Reflect.construct(t,n||[],Ie(e).constructor):t.apply(e,n))}(this,t,[e])).options=n,r.player.one("loadedmetadata",function(){return r.player.ready(r.initialize.bind(r))}),r}return 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&&Me(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(){ke.O.useMetadataTrack(this.player,"interactive",this.onTrackLoaded.bind(this)),this.player.addClass("cv-interactive-plugin")}},{key:"onTrackLoaded",value:function(e){this.addChildren(e)}},{key:"addChildren",value:function(e){this.player.controlBar.getChild("progressControl").getChild("SeekBar").addChild(new Ce.N(this.player,{interactive:this.options.interactive,track:e}))}}])&&Ne(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Z.Z.getPlugin("plugin"));function Re(e){return Re="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},Re(e)}function _e(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function a(n,r,o,a){var c=r&&r.prototype instanceof l?r:l,u=Object.create(c.prototype);return Be(u,"_invoke",function(n,r,o){var a,l,c,u=0,s=o||[],f=!1,d={p:0,n:0,v:e,a:m,f:m.bind(e,4),d:function(t,n){return a=t,l=0,c=e,d.n=n,i}};function m(n,r){for(l=n,c=r,t=0;!f&&u&&!o&&t<s.length;t++){var o,a=s[t],m=d.p,p=a[2];n>3?(o=p===r)&&(c=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=e):a[0]<=m&&((o=n<2&&m<a[1])?(l=0,d.v=r,d.n=a[1]):m<p&&(o=n<3||a[0]>r||r>p)&&(a[4]=n,a[5]=r,d.n=p,l=0))}if(o||n>1)return i;throw f=!0,r}return function(o,s,p){if(u>1)throw TypeError("Generator is already running");for(f&&1===s&&m(s,p),l=s,c=p;(t=l<2?e:c)||!f;){a||(l?l<3?(l>1&&(d.n=-1),m(l,c)):d.n=c:d.v=c);try{if(u=2,a){if(l||(o="next"),t=a[o]){if(!(t=t.call(a,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,l<2&&(l=0)}else 1===l&&(t=a.return)&&t.call(a),l<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=e}else if((t=(f=d.n<0)?c:n.call(r,d))!==i)break}catch(t){a=e,l=1,c=t}finally{u=1}}return{value:t,done:f}}}(n,o,a),!0),u}var i={};function l(){}function c(){}function u(){}t=Object.getPrototypeOf;var s=[][r]?t(t([][r]())):(Be(t={},r,function(){return this}),t),f=u.prototype=l.prototype=Object.create(s);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,Be(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=u,Be(f,"constructor",u),Be(u,"constructor",c),c.displayName="GeneratorFunction",Be(u,o,"GeneratorFunction"),Be(f),Be(f,o,"Generator"),Be(f,r,function(){return this}),Be(f,"toString",function(){return"[object Generator]"}),(_e=function(){return{w:a,m:d}})()}function Be(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}Be=function(e,t,n,r){if(t)o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var a=function(t,n){Be(e,t,function(e){return this._invoke(t,n,e)})};a("next",0),a("throw",1),a("return",2)}},Be(e,t,n,r)}function Le(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,Ue(r.key),r)}}function Ue(e){var t=function(e){if("object"!=Re(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Re(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Re(t)?t:t+""}function De(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(De=function(){return!!e})()}function He(){return He="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=Fe(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},He.apply(null,arguments)}function Fe(e){return Fe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Fe(e)}function Ve(e,t){return Ve=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ve(e,t)}Z.Z.registerPlugin("interactiveSeekBarPlugin",Ae);var We=function(e){function t(e,n){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=Fe(t),function(e,t){if(t&&("object"==Re(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,De()?Reflect.construct(t,n||[],Fe(e).constructor):t.apply(e,n))}(this,t,[e,n])}return 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&&Ve(e,t)}(t,e),n=t,r=[{key:"getPlayerClassName",value:function(){return"cv-reports-player"}},{key:"getAnalyticsPlayerType",value:function(){return"reports-player"}},{key:"additionalSetup",value:function(e){var n,r,o,a,i=this,l=Object.create(null,{additionalSetup:{get:function(){return e=t,n=i,He(Fe(1&1?e.prototype:e),"additionalSetup",n);var e,n}}});return n=this,r=void 0,o=void 0,a=_e().m(function t(){return _e().w(function(t){for(;;)switch(t.n){case 0:l.additionalSetup.call(this,e),this.setupEngagementOverlayPlugin(e),this.setupUpClipPlugin(e),this.setupInteractiveSeekBarPlugin(e);case 1:return t.a(2)}},t,this)}),new(o||(o=Promise))(function(e,t){function i(e){try{c(a.next(e))}catch(e){t(e)}}function l(e){try{c(a.throw(e))}catch(e){t(e)}}function c(t){var n;t.done?e(t.value):(n=t.value,n instanceof o?n:new o(function(e){e(n)})).then(i,l)}c((a=a.apply(n,r||[])).next())})}},{key:"setupEngagementOverlayPlugin",value:function(e){var t;this.player.engagementOverlayPlugin({heatMap:this.options.heatMap,interactive:null===(t=e.additionalData)||void 0===t?void 0:t.interactive,onTimepointHover:this.options.onTimepointHover})}},{key:"setupUpClipPlugin",value:function(e){var t,n,r="MasterClip"===e.mediaType,o="MasterInteractive"===e.mediaType;if((r||o)&&(r&&(n=e.additionalData),!o||(n=null===(t=e.additionalData)||void 0===t?void 0:t.clipData))){if(!n)throw Error("Invalid clip data");this.player.clipPlugin({startTime:n.startTime,endTime:n.endTime})}}},{key:"setupInteractiveSeekBarPlugin",value:function(e){var t,n,r=null===(t=e.additionalData)||void 0===t?void 0:t.interactive;(null===(n=e.additionalData)||void 0===n?void 0:n.interactive)&&(this.track=G.h.getInteractiveTrack(this.player,e),this.player.interactiveSeekBarPlugin({interactive:r}))}},{key:"getSeekBarOptions",value:function(){return{ignoreChapters:!0}}}],r&&Le(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(z.r);function ze(e){var t=r.useRef(null),n=r.useRef(null);return r.useEffect(function(){n.current=new We(t.current,e)},[]),r.createElement("div",{ref:t})}const Ge={playerContainer:"fGWsk",playerPlaceholder:"v1MjE",heatMap:"lp1Yn",heatMapTimepointIndicator:"yOOK6",heatMapTimepointIndicatorVisible:"rTXmB",partialLoadingContainer:"gW1HU"};var Ze=a.T.encloseNamespace("shared.videoEngagementOverlay");function Ke(e){var t=r.useRef(null),n=(0,E.O)(e.engagement);return r.createElement("div",{className:"bg-white border rounded overflow-hidden h-100"},r.createElement("div",{className:"position-relative"},r.createElement("div",{className:Ge.playerPlaceholder}),r.createElement("div",{className:Ge.playerContainer},r.createElement(ze,{viewKey:e.viewKey,playerApi:new URL(e.playerApiUrl),hotkeyElQuerySelector:"body",heatMap:n,onTimepointHover:function(e){var r=t.current;r&&(null!==e?(r.classList.add(Ge.heatMapTimepointIndicatorVisible),r.style.left="".concat(e/n.length*100,"%")):r.classList.remove(Ge.heatMapTimepointIndicatorVisible))},aspectRatio:"16:9"}))),r.createElement("div",{className:"p-3"},r.createElement("div",{className:"position-relative"},r.createElement(i.c,{engagement:e.engagement,className:Ge.heatMap}),r.createElement("div",{ref:t,className:Ge.heatMapTimepointIndicator})),r.createElement("div",{className:"d-flex justify-content-between mt-2"},r.createElement("strong",null,Ze("heatmap")),r.createElement("div",{className:"w-33"},r.createElement(i.l,null)))))}const $e={videoContainer:"cpl68"};function qe(e){var t;return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(W,null),r.createElement("div",{className:"row g-3 mb-3"},e.hasDataLoaded&&r.createElement(r.Fragment,null,r.createElement("div",{className:"col"},r.createElement(H,{events:{yearGroupCount:e.yearGroups},emptyStateImage:F.W.EmptyStates.MY_VIDEOS})),r.createElement("div",{className:"col"},r.createElement(P,{engagement:e.individualEngagement})),r.createElement("div",{className:$e.videoContainer},r.createElement(Ke,{engagement:e.aggregateEngagement,viewKey:e.viewKey.viewKey,playerApiUrl:e.config.playerApiUrl,imageCdnUrl:e.config.imageCdnUrl}))),e.tableDataLoaded&&r.createElement("div",{className:"col-12"},r.createElement(b,{engagement:e.individualEngagement,users:e.users,imageCdnUrl:null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,classroomStudents:e.classroomStudents,border:!0,enableSort:!0}))))}}}]);
|
|
3
|
+
//# sourceMappingURL=8362-ed5df8f4fc-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|