@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/{3057-1ae8087b3a-lite.chunk.js.map → 3057-a5bc753736-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/3057-1ae8087b3a-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/BulkUserUploadBackButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserUploadContinueButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/layout/bulk-user-upload-wizard-layout.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list-items/bulk-user-actions-user-item/BulkUserActionsUserItem.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/white-pill/WhitePill.tsx","file:///app/packages/libs/shared/src/apps/user-manager/context/UserManagerClientContext.ts","file:///app/packages/libs/shared/src/apps/user-manager/hooks/useBulkUploadUsers.ts","file:///app/packages/libs/shared/src/components/windowed-list/WindowedList.tsx","file:///app/packages/libs/shared/src/components/wizard/confirmation-header/WizardConfirmationHeader.tsx","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/apps/user-manager/components/bulk-upload/bulk-user-upload-account-info/bulk-user-upload-account-info.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/bulk-user-upload-account-info/BulkUserUploadAccountInfo.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/confirmation/BulkUserUploadConfirmation.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/bulk-user-upload/confirmation/BulkUserUploadConfirmationView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport { BulkUserUploadStepId } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.userWizardBackButtons';\n\ninterface BulkUserUploadBackButtonProps {\n currentStep: BulkUserUploadStepId;\n appLinks: UserManagerAppLinks;\n}\n\nexport function BulkUserUploadBackButton(props: BulkUserUploadBackButtonProps): JSX.Element {\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className='btn btn-link me-2'\n appLink={props.appLinks.userManager}\n >\n <Text namespace={namespace} phrase='cancel' />\n </AppLink>\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { ContextService } from 'libs/analytics/services/ContextService';\n\nimport { BulkUserUploadStepId } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\nconst namespace = 'userManager.userWizardHeader';\n\ninterface BulkUserUploadContinueButtonProps {\n currentStep: BulkUserUploadStepId;\n appLinks: UserManagerAppLinks;\n canAddExistingUsers: boolean;\n}\n\nexport function BulkUserUploadContinueButton(props: BulkUserUploadContinueButtonProps): JSX.Element {\n const { duplicateSets, hasExistingUsers } = useBulkUploadUsers();\n const { disableNext, onClickConfirm } = React.useContext(WizardLayoutContext);\n\n const spreadsheetHasDuplicates = !!duplicateSets?.length;\n\n const currentAppLink = ContextService.getCurrentContext().appLink;\n\n if (currentAppLink.action === props.appLinks.userUploadStatus.polling.action)\n return <></>;\n\n // we hide the button cuz we have one in the success component\n if (currentAppLink.action === props.appLinks.userUploadStatus.complete.action)\n return <></>;\n\n function willUploadOnNext(): boolean {\n switch (currentAppLink.action) {\n case props.appLinks.userUploadPopup.action:\n case props.appLinks.userUploadReviewAccounts.action:\n return !spreadsheetHasDuplicates && !hasExistingUsers;\n\n case props.appLinks.userUploadFixDuplicates.action:\n return !hasExistingUsers;\n\n case props.appLinks.userUploadReviewExistingAccounts.action:\n return !hasExistingUsers;\n\n default:\n return true;\n }\n }\n\n if (willUploadOnNext()) {\n return (\n <Button\n className={disableNext ? 'disabled' : ''}\n variant='dark'\n onClick={onClickConfirm}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='create'\n />\n </Button>\n );\n }\n\n function getNextAppLink() {\n switch (currentAppLink.action) {\n case props.appLinks.userUploadReviewAccounts.action:\n if (spreadsheetHasDuplicates)\n return props.appLinks.userUploadFixDuplicates;\n if (hasExistingUsers && props.canAddExistingUsers)\n return props.appLinks.userUploadReviewExistingAccounts;\n\n case props.appLinks.userUploadFixDuplicates.action:\n if (hasExistingUsers && props.canAddExistingUsers)\n return props.appLinks.userUploadReviewExistingAccounts;\n\n case props.appLinks.userUploadReviewExistingAccounts.action:\n if (props.canAddExistingUsers)\n return props.appLinks.userUploadConfirmation;\n\n default:\n return null;\n }\n }\n\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={getNextAppLink()}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='next'\n />\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wizardContent\":\"hHr3C\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { BulkUserUploadBackButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserUploadBackButton';\nimport { BulkUserUploadContinueButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserUploadContinueButton';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { WizardHeader } from 'libs/shared/components/wizard/header/WizardHeader';\nimport { WizardStepList } from 'libs/shared/components/wizard/step-list/WizardStepList';\nimport { WizardLayoutContextProvider } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\n\nimport styles from './bulk-user-upload-wizard-layout.scss';\n\nexport type BulkUserUploadStepId = 'review-accounts' | 'fix-duplicates' | 'review-existing-accounts' | 'confirmation' |'status';\n\nconst namespace = 'userManager.bulkUserUploadWizardLayout';\nexport const BULK_USER_UPLOAD_NAV_LOCK_ID = 'bulk:user:upload:nav:lock';\n\ntype BulkUserUploadWizardLayoutProps = React.PropsWithChildren<{\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n currentStep: BulkUserUploadStepId;\n canAddExistingUsers?: boolean;\n}>;\n\nexport function BulkUserUploadWizardLayout(props: BulkUserUploadWizardLayoutProps): JSX.Element {\n const { users, setUsers } = useBulkUploadUsers();\n\n const navLock = useNavLock();\n\n React.useEffect(() => {\n // If there is no view model, redirect away\n if (!users) {\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n return;\n }\n\n navLock.lock({\n id: BULK_USER_UPLOAD_NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody'),\n appLinkWhitelist: BulkUserUploadHelper.getWizardAppLinks(props.appLinks),\n onConfirmUnlock: () => {\n setUsers(null);\n }\n });\n\n return () => {\n navLock.unlock(BULK_USER_UPLOAD_NAV_LOCK_ID);\n };\n }, []);\n\n React.useEffect(() => {\n if (users?.length)\n return;\n\n navLock.unlock(BULK_USER_UPLOAD_NAV_LOCK_ID);\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n }, [users?.length]);\n\n if (!users)\n return <></>;\n\n return (\n <WizardLayoutContextProvider>\n <div className='px-3'>\n <WizardHeader<BulkUserUploadStepId>\n title={LanguageService.getPhrase(namespace, 'bulkUpload')}\n currentStep={props.currentStep}\n loaded\n continueButton={\n <BulkUserUploadContinueButton\n currentStep={props.currentStep}\n appLinks={props.appLinks}\n canAddExistingUsers={props.canAddExistingUsers}\n />\n }\n backButton={<BulkUserUploadBackButton currentStep={props.currentStep} appLinks={props.appLinks} />}\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, 'bulkUpload'),\n active: true\n }\n ]}\n />\n\n <div className='row g-0'>\n <div className='col-2'>\n <WizardStepList<BulkUserUploadStepId>\n steps={BulkUserUploadHelper.getSteps(props.userType, props.canAddExistingUsers)}\n currentStep={props.currentStep}\n />\n </div>\n\n <div className={`col-10 ${styles.wizardContent}`}>\n {props.children}\n </div>\n </div>\n </div>\n </WizardLayoutContextProvider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BaseUserItemProps } from 'libs/shared/apps/user-manager/components/user-list/UserList';\nimport { BasicUserDetails } from 'libs/shared/apps/user-manager/components/user-list-items/components/BasicUserDetails';\nimport { RoleOrYearGroup } from 'libs/shared/apps/user-manager/components/user-list-items/components/RoleOrYearGroup';\nimport { UserItemAvatar } from 'libs/shared/apps/user-manager/components/user-list-items/components/UserItemAvatar';\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.bulkUserActionsUserItem';\n\ninterface BulkUserActionsUserItemProps extends BaseUserItemProps {\n imageCdnUrl: string;\n customBadge?: () => JSX.Element;\n onClickRemoveUser?: (user: User) => void;\n}\n\nexport function BulkUserActionsUserItem(props: BulkUserActionsUserItemProps): JSX.Element {\n return (\n <li className='d-flex align-items-center p-2'>\n <UserItemAvatar user={props.user} imageCdnUrl={props.imageCdnUrl} />\n\n <BasicUserDetails user={props.user} />\n\n <RoleOrYearGroup userType={props.userType} user={props.user} />\n\n {props.customBadge && props.customBadge()}\n\n {props.onClickRemoveUser && (\n <Actions actions={[{\n svgName: cvSvgLibrary.Close,\n className: 'btn btn-link svg-container',\n tooltip: LanguageService.getPhrase(namespace, 'removeUser'),\n onClick: () => props.onClickRemoveUser(props.user),\n button: true\n }]} />\n )}\n </li>\n );\n}","import React from 'react';\n\ninterface WhitePillProps {\n className?: string;\n}\n\nexport function WhitePill(props: React.PropsWithChildren<WhitePillProps>): JSX.Element {\n return (\n <span className={`${props.className} rounded-pill px-2 text-nowrap bg-white border border-dark`}>\n {props.children}\n </span>\n );\n}","import React from 'react';\n\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\n\nexport const UserManagerClientContext = React.createContext<UserManagerClient>(null);","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\n\nimport { EditUserRequest } from '../interfaces';\nimport { BulkUserUploadViewModel, UserHash } from '../interfaces/viewmodels/BulkUserUploadViewModel';\nimport { UserManagerHelper } from '../utils/UserManagerHelper';\n\nfunction updateUserHash(userHash: UserHash, updatedUserIdsHash: HashObject<boolean>): UserHash {\n const updatedUsers = Object.keys(userHash || {}).reduce((updatedObj: UserHash, lookupId) => {\n if (!updatedUserIdsHash[lookupId])\n updatedObj[lookupId] = userHash[lookupId];\n return updatedObj;\n }, {});\n\n return updatedUsers;\n}\n\nexport const useBulkUploadUsers = () => {\n const [ viewModel, setViewModel ] = useViewModel<BulkUserUploadViewModel>(SharedViewModelKeys.BULK_USER_UPLOAD);\n\n function initializeUsers(users?: EditUserRequest[]): void {\n setViewModel({\n users,\n invalidUsers: null,\n existingUsersHash: null\n });\n\n updateDuplicates(users);\n }\n\n function updateUser(updatedUser: EditUserRequest): void {\n const updatedUsers = viewModel.users.map(user => {\n if (user.lookupId !== updatedUser.lookupId)\n return user;\n\n return updatedUser;\n });\n\n setViewModel({\n users: updatedUsers,\n invalidUsers: updateUserHash(viewModel?.invalidUsers, { [updatedUser.lookupId]: true }),\n existingUsersHash: viewModel?.existingUsersHash\n });\n\n updateDuplicates(updatedUsers);\n }\n\n function deleteUsers(deletedUsers: string[]): void {\n const userIdHash = deletedUsers.reduce((prev: HashObject, curr) => {\n prev[curr] = true;\n return prev;\n }, {});\n\n const updatedUsers = viewModel.users.filter(user => !userIdHash[user.lookupId]);\n\n setViewModel({\n users: updatedUsers,\n invalidUsers: updateUserHash(viewModel?.invalidUsers, userIdHash),\n existingUsersHash: updateUserHash(viewModel?.existingUsersHash, userIdHash),\n existingUserToAdd: viewModel?.existingUserToAdd?.filter(u => !!viewModel?.existingUsersHash[u.lookupId])\n });\n\n updateDuplicates(updatedUsers);\n }\n\n function updateDuplicates(users?: EditUserRequest[]): void {\n const duplicateSets = UserManagerHelper.getNewDuplicates(users);\n setViewModel('duplicateSets', duplicateSets);\n }\n\n return {\n users: viewModel?.users,\n invalidUsers: viewModel?.invalidUsers,\n hasValidatedUsers: !!viewModel?.invalidUsers,\n existingUsersHash: viewModel?.existingUsersHash || {},\n hasExistingUsers: !!Object.keys(viewModel?.existingUsersHash || {}).length,\n existingUserToAdd: viewModel?.existingUserToAdd,\n duplicateSets: viewModel?.duplicateSets,\n newUsers: viewModel?.users?.filter(u => !viewModel?.existingUsersHash?.[u.lookupId]) || [],\n\n setUsers: initializeUsers,\n setInvalidUsers: (invalidUsers: UserHash) => setViewModel('invalidUsers', invalidUsers),\n setExistingUsers: (existingUsers: UserHash) => setViewModel('existingUsersHash', existingUsers),\n updateUser,\n deleteUsers\n };\n};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\ninterface WindowedListProps<TObject> {\n items: TObject[];\n getComponent: (item: TObject, index: number) => JSX.Element;\n rowHeight: number;\n containerHeight?: number;\n\n staticComponentAboveRows?: JSX.Element;\n staticComponentBelowRows?: JSX.Element;\n}\n\nexport const WindowedList = React.forwardRef((\n props: WindowedListProps<any>,\n ref: React.Ref<Scrollbars>\n) => {\n const [ availableHeight, setAvailableHeight ] = React.useState<number>(props.containerHeight || 0);\n const [ scrollTop, setScrollTop ] = React.useState<number>(0);\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (props.containerHeight)\n return;\n\n setAvailableHeight(tableRef.current?.clientHeight ?? 0);\n }, [tableRef.current]);\n\n const numRows = props.items.length;\n const totalRowsVisible = Math.ceil(availableHeight / props.rowHeight);\n const totalHeight = props.rowHeight * numRows;\n\n const startIndex = Math.max(\n 0,\n Math.floor(scrollTop / props.rowHeight) - totalRowsVisible\n );\n\n const endIndex = Math.min(\n numRows,\n startIndex + (totalRowsVisible * 3)\n );\n\n function onScrollTable(e: React.UIEvent<HTMLDivElement>): void {\n setScrollTop(e.currentTarget.scrollTop);\n }\n\n function getTableStyles(): React.CSSProperties {\n const tablePosFromTop = tableRef.current?.getBoundingClientRect().top ?? 0;\n\n const height = props.containerHeight || `calc(100vh - ${window.pageYOffset + tablePosFromTop + 30}px)`;\n \n return {\n height,\n minHeight: `${props.rowHeight * 5}px`,\n overflow: 'auto'\n };\n }\n\n function getRows(): JSX.Element[] {\n const items = [];\n \n let index = startIndex;\n while (index < endIndex) {\n const item = props.items[index];\n\n if (item)\n items.push(props.getComponent(item, index));\n \n index++;\n }\n\n return items;\n }\n\n return (\n <div style={getTableStyles()} ref={tableRef}>\n <Scrollbars\n onScroll={onScrollTable}\n autoHeightMin={totalHeight}\n autoHeightMax={totalHeight}\n ref={ref}\n >\n <div style={{ height: totalHeight, paddingTop: startIndex * props.rowHeight }}>\n <ul className='w-100 position-relative d-table striped-list list-unstyled no-full-width'>\n {!!props.staticComponentAboveRows && props.staticComponentAboveRows}\n {getRows()}\n {!!props.staticComponentBelowRows && props.staticComponentBelowRows}\n </ul>\n </div>\n </Scrollbars>\n </div>\n );\n});","import React from 'react';\n\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'wizard.wizardConfirmationHeader';\n\ntype WizardConfirmationHeaderProps = React.PropsWithChildren<any>;\n\nexport function WizardConfirmationHeader(props: WizardConfirmationHeaderProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4'>\n <Text phrase='confirmation' />\n </h2>\n\n <h3 className='h6'>\n <Text phrase='changesToBeMade' />\n </h3>\n\n <div className='p-2 border rounded mb-2'>\n {props.children}\n </div>\n </LanguageNamespaceContext.Provider>\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}","// extracted by mini-css-extract-plugin\nexport default {\"noAccount\":\"RBzEA\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhitePill } from 'libs/shared/apps/user-manager/components/white-pill/WhitePill';\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport styles from './bulk-user-upload-account-info.scss';\n\nconst namespace = 'userManager.bulkUserUploadAccountInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BulkUserUploadAccountInfoProps {\n users: EditUserRequest[];\n existingUsers: EditUserRequest[];\n userType: UserGroup;\n}\n\nexport function BulkUseUploadAccountInfo(props: BulkUserUploadAccountInfoProps): JSX.Element {\n const noAccountCount = props.users.length - props.existingUsers.length;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Row className='mb-2'>\n <Col xs={4} className='font-weight-500'><Text phrase='statuses' /></Col>\n <Col xs={8} className='font-weight-500'><Text phrase='changesTo' /></Col>\n </Row>\n \n {!!noAccountCount && (\n <Row className='mb-2'>\n <Col xs={4}>\n <WhitePill className={styles.noAccount}>\n {getPhrase('noAccount')}\n </WhitePill>\n <div>\n <Text\n phrase={props.userType === UserGroup.Learner ? 'studentCount' : 'staffCount'}\n options={{ smartCount: noAccountCount }}\n />\n </div>\n </Col>\n\n <Col xs={8}>\n <div>\n <Text phrase={props.userType === UserGroup.Learner ? 'willCreate' : 'willInvite'} />\n </div>\n </Col>\n </Row>\n )}\n \n \n {!!props.existingUsers.length && (\n <Row className='mb-2'>\n <Col xs={4}>\n <WhitePill>\n {getPhrase('existingAccount')}\n </WhitePill>\n <div>\n <Text\n phrase={props.userType === UserGroup.Learner ? 'studentCount' : 'staffCount'}\n options={{ smartCount: props.existingUsers.length }}\n />\n </div>\n </Col>\n\n <Col xs={8}>\n <div>\n <Text phrase='willAdd' />\n </div>\n </Col>\n </Row>\n )}\n\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkUseUploadAccountInfo } from 'libs/shared/apps/user-manager/components/bulk-upload/bulk-user-upload-account-info/BulkUserUploadAccountInfo';\nimport { BulkUserActionsUserItem } from 'libs/shared/apps/user-manager/components/user-list-items/bulk-user-actions-user-item/BulkUserActionsUserItem';\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { UserHash } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserUploadViewModel';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WindowedList } from 'libs/shared/components/windowed-list/WindowedList';\nimport { WizardConfirmationHeader } from 'libs/shared/components/wizard/confirmation-header/WizardConfirmationHeader';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.bulkUserUploadConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BulkUserUploadConfirmationProps {\n users: EditUserRequest[];\n existingUsers: EditUserRequest[];\n existingUsersHash: UserHash;\n imageCdnUrl: string;\n userType: UserGroup;\n onClickConfirm: () => void;\n}\n\nexport function BulkUserUploadConfirmation(props: BulkUserUploadConfirmationProps): JSX.Element {\n const ref = React.useRef<any>(null);\n const [ , setViewModel ] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n const { setOnClickConfirm } = React.useContext(WizardLayoutContext);\n\n React.useEffect(() => {\n setViewModel('scrollContainer', ref.current?.view);\n }, [ref.current]);\n\n const isStudent = props.userType === UserGroup.Learner;\n\n React.useEffect(() => {\n setOnClickConfirm(() => props.onClickConfirm);\n }, [props.onClickConfirm]);\n\n function getBadge(user: EditUserRequest) {\n function getMessage(): string {\n if (props.existingUsersHash[user.lookupId])\n return isStudent ? getPhrase('existingStudentAccount') : getPhrase('existingStaffAccount');\n\n return getPhrase('noAccount');\n }\n\n return (\n <div className='flex-shrink-0 me-2'>\n {getMessage()}\n </div>\n );\n }\n\n return (\n <>\n <WizardConfirmationHeader>\n <h4 className='h6'>\n <Text namespace={namespace} phrase='heading' />\n </h4>\n <ul className='mt-1 ps-3 ms-1'>\n <li>\n <Text namespace={namespace} phrase={isStudent ? 'creationInfoStudent' : 'creationInfoStaff'}/>\n </li>\n <li>\n <Text namespace={namespace} phrase={isStudent ? 'addInfoStudent' : 'addInfoStaff'}/>\n </li>\n </ul>\n\n <div className='rounded p-2 bg-light-blue'>\n <BulkUseUploadAccountInfo users={props.users} existingUsers={props.existingUsers} userType={props.userType} />\n </div>\n </WizardConfirmationHeader>\n\n <h3 className='h6 mt-3'>\n <Text\n namespace={namespace}\n phrase={isStudent ? 'headingStudents' : 'headingStaff'}\n options={{ smartCount: props.users.length }}\n />\n </h3>\n\n <WindowedList\n items={props.users}\n rowHeight={55}\n ref={ref}\n getComponent={user => (\n <BulkUserActionsUserItem\n key={user.lookupId}\n user={{ ...user, name: user.firstName, id: user.lookupId, masterYearGroup: null }}\n userType={props.userType}\n imageCdnUrl={props.imageCdnUrl}\n customBadge={() => getBadge(user)}\n />\n )}\n />\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { BulkUserUploadConfirmation } from 'libs/shared/apps/user-manager/components/bulk-upload/confirmation/BulkUserUploadConfirmation';\nimport { BulkUserUploadWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserWizardParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJob, Config, CurrentUser, PropsWithPopupViewProps } from 'libs/shared/interfaces';\n\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.userUploadConfirmation';\n\nexport function BulkUserUploadConfirmationView(\n props: PropsWithPopupViewProps<UserWizardParams>\n): JSX.Element {\n const {\n users,\n existingUsersHash,\n existingUserToAdd,\n deleteUsers\n } = useBulkUploadUsers();\n\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n React.useEffect(() => {\n // remove users if they are unchecked from prev step\n if (existingUserToAdd?.length < Object.keys(existingUsersHash)?.length) {\n deleteUsers(\n BulkUserUploadHelper.getDeletedExistingUsers(users, existingUsersHash, existingUserToAdd).map(u => u.lookupId)\n );\n }\n }, []);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const appLinks = getUserManagerAppLinks(props.userType);\n const fetchAsync = Flight.useGetFetchAsync();\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n\n function startBulkUpload(): void {\n const jobData = BulkUserUploadHelper.getJobData({\n users: BulkUserUploadHelper.getNewUsers(users, existingUsersHash),\n existingUsers: existingUserToAdd,\n customerId: currentUser.data?.customerId,\n userType: props.userType\n });\n fetchAsync(JobRequests.createJob(jobData, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.userUploadStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n if (!currentUser.data || !config.data)\n return <></>;\n \n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <BulkUserUploadWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n currentStep='confirmation'\n canAddExistingUsers\n >\n <div className='px-3'>\n <BulkUserUploadConfirmation\n onClickConfirm={startBulkUpload}\n users={users}\n existingUsers={existingUserToAdd}\n existingUsersHash={existingUsersHash}\n userType={props.userType}\n imageCdnUrl={config.data?.imageCdnUrl}\n />\n </div>\n </BulkUserUploadWizardLayout>\n </UserManagerClientContext.Provider>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};"],"names":["namespace","BulkUserUploadBackButton","props","currentStep","AppLink","className","appLink","appLinks","userManager","Text","phrase","BulkUserUploadContinueButton","useBulkUploadUsers","duplicateSets","hasExistingUsers","WizardLayoutContext","disableNext","onClickConfirm","spreadsheetHasDuplicates","length","currentAppLink","ContextService","action","userUploadStatus","polling","complete","userUploadPopup","userUploadReviewAccounts","userUploadFixDuplicates","userUploadReviewExistingAccounts","willUploadOnNext","Button","variant","onClick","disabled","canAddExistingUsers","userUploadConfirmation","getNextAppLink","BULK_USER_UPLOAD_NAV_LOCK_ID","BulkUserUploadWizardLayout","users","setUsers","navLock","useNavLock","lock","id","title","LanguageService","text","appLinkWhitelist","BulkUserUploadHelper","onConfirmUnlock","unlock","replace","WizardHeader","loaded","continueButton","backButton","breadcrumbs","name","settings","userType","UserGroup","active","WizardStepList","steps","children","BulkUserActionsUserItem","user","imageCdnUrl","customBadge","onClickRemoveUser","actions","svgName","tooltip","button","WhitePill","UserManagerClientContext","updateUserHash","userHash","updatedUserIdsHash","Object","keys","reduce","updatedObj","lookupId","viewModel","setViewModel","updateDuplicates","invalidUsers","hasValidatedUsers","existingUsersHash","existingUserToAdd","newUsers","filter","u","setInvalidUsers","setExistingUsers","existingUsers","updateUser","updatedUser","updatedUsers","map","deleteUsers","deletedUsers","userIdHash","prev","curr","WindowedList","ref","containerHeight","availableHeight","setAvailableHeight","scrollTop","setScrollTop","tableRef","current","clientHeight","tablePosFromTop","numRows","items","totalRowsVisible","Math","ceil","rowHeight","totalHeight","startIndex","max","floor","endIndex","min","style","getBoundingClientRect","top","height","window","pageYOffset","minHeight","overflow","onScroll","e","currentTarget","autoHeightMin","autoHeightMax","paddingTop","staticComponentAboveRows","index","item","push","getComponent","getRows","staticComponentBelowRows","WizardConfirmationHeader","value","showButtons","hideHeader","getPhrase","WizardStepListItem","content","hideStepNumber","subText","isSelected","theme","isSelectedOverride","isCompleted","isCompletedOverride","itemContent","currentStepNumber","acc","step","i","totalSteps","itemsContainer","key","disableAppLinks","BulkUseUploadAccountInfo","noAccountCount","Row","Col","xs","options","smartCount","BulkUserUploadConfirmation","SharedViewModelKeys","setOnClickConfirm","view","isStudent","firstName","masterYearGroup","getBadge","BulkUserUploadConfirmationView","useSetPageMetadata","config","ConfigRequests","currentUser","UserRequests","fetchAsync","onCreateJobError","BulkUserActionsHelper","onCreateJob","job","params","jobId","data","UserManagerClient","jobData","customerId","JobRequests","createJob","success","error","url","type","getJobs","queryParams","bulkActionTypes","userTypes","cursor","sort","order","bulkActionType","Array","isArray","dataType","join","getJob","getJobProgress","invalidationKeys","getJobResults","status","getYearGroupRolloverStatus","sendJobReports","ids","jobIds","getJobSummary"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/3057-a5bc753736-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/BulkUserUploadBackButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserUploadContinueButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/layout/bulk-user-upload-wizard-layout.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list-items/bulk-user-actions-user-item/BulkUserActionsUserItem.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/white-pill/WhitePill.tsx","file:///app/packages/libs/shared/src/apps/user-manager/context/UserManagerClientContext.ts","file:///app/packages/libs/shared/src/apps/user-manager/hooks/useBulkUploadUsers.ts","file:///app/packages/libs/shared/src/components/windowed-list/WindowedList.tsx","file:///app/packages/libs/shared/src/components/wizard/confirmation-header/WizardConfirmationHeader.tsx","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/apps/user-manager/components/bulk-upload/bulk-user-upload-account-info/bulk-user-upload-account-info.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/bulk-user-upload-account-info/BulkUserUploadAccountInfo.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/confirmation/BulkUserUploadConfirmation.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/bulk-user-upload/confirmation/BulkUserUploadConfirmationView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport { BulkUserUploadStepId } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.userWizardBackButtons';\n\ninterface BulkUserUploadBackButtonProps {\n currentStep: BulkUserUploadStepId;\n appLinks: UserManagerAppLinks;\n}\n\nexport function BulkUserUploadBackButton(props: BulkUserUploadBackButtonProps): JSX.Element {\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className='btn btn-link me-2'\n appLink={props.appLinks.userManager}\n >\n <Text namespace={namespace} phrase='cancel' />\n </AppLink>\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { ContextService } from 'libs/analytics/services/ContextService';\n\nimport { BulkUserUploadStepId } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\nconst namespace = 'userManager.userWizardHeader';\n\ninterface BulkUserUploadContinueButtonProps {\n currentStep: BulkUserUploadStepId;\n appLinks: UserManagerAppLinks;\n canAddExistingUsers: boolean;\n}\n\nexport function BulkUserUploadContinueButton(props: BulkUserUploadContinueButtonProps): JSX.Element {\n const { duplicateSets, hasExistingUsers } = useBulkUploadUsers();\n const { disableNext, onClickConfirm } = React.useContext(WizardLayoutContext);\n\n const spreadsheetHasDuplicates = !!duplicateSets?.length;\n\n const currentAppLink = ContextService.getCurrentContext().appLink;\n\n if (currentAppLink.action === props.appLinks.userUploadStatus.polling.action)\n return <></>;\n\n // we hide the button cuz we have one in the success component\n if (currentAppLink.action === props.appLinks.userUploadStatus.complete.action)\n return <></>;\n\n function willUploadOnNext(): boolean {\n switch (currentAppLink.action) {\n case props.appLinks.userUploadPopup.action:\n case props.appLinks.userUploadReviewAccounts.action:\n return !spreadsheetHasDuplicates && !hasExistingUsers;\n\n case props.appLinks.userUploadFixDuplicates.action:\n return !hasExistingUsers;\n\n case props.appLinks.userUploadReviewExistingAccounts.action:\n return !hasExistingUsers;\n\n default:\n return true;\n }\n }\n\n if (willUploadOnNext()) {\n return (\n <Button\n className={disableNext ? 'disabled' : ''}\n variant='dark'\n onClick={onClickConfirm}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='create'\n />\n </Button>\n );\n }\n\n function getNextAppLink() {\n switch (currentAppLink.action) {\n case props.appLinks.userUploadReviewAccounts.action:\n if (spreadsheetHasDuplicates)\n return props.appLinks.userUploadFixDuplicates;\n if (hasExistingUsers && props.canAddExistingUsers)\n return props.appLinks.userUploadReviewExistingAccounts;\n\n case props.appLinks.userUploadFixDuplicates.action:\n if (hasExistingUsers && props.canAddExistingUsers)\n return props.appLinks.userUploadReviewExistingAccounts;\n\n case props.appLinks.userUploadReviewExistingAccounts.action:\n if (props.canAddExistingUsers)\n return props.appLinks.userUploadConfirmation;\n\n default:\n return null;\n }\n }\n\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={getNextAppLink()}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='next'\n />\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wizardContent\":\"hHr3C\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { BulkUserUploadBackButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserUploadBackButton';\nimport { BulkUserUploadContinueButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserUploadContinueButton';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { WizardHeader } from 'libs/shared/components/wizard/header/WizardHeader';\nimport { WizardStepList } from 'libs/shared/components/wizard/step-list/WizardStepList';\nimport { WizardLayoutContextProvider } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\n\nimport styles from './bulk-user-upload-wizard-layout.scss';\n\nexport type BulkUserUploadStepId = 'review-accounts' | 'fix-duplicates' | 'review-existing-accounts' | 'confirmation' |'status';\n\nconst namespace = 'userManager.bulkUserUploadWizardLayout';\nexport const BULK_USER_UPLOAD_NAV_LOCK_ID = 'bulk:user:upload:nav:lock';\n\ntype BulkUserUploadWizardLayoutProps = React.PropsWithChildren<{\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n currentStep: BulkUserUploadStepId;\n canAddExistingUsers?: boolean;\n}>;\n\nexport function BulkUserUploadWizardLayout(props: BulkUserUploadWizardLayoutProps): JSX.Element {\n const { users, setUsers } = useBulkUploadUsers();\n\n const navLock = useNavLock();\n\n React.useEffect(() => {\n // If there is no view model, redirect away\n if (!users) {\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n return;\n }\n\n navLock.lock({\n id: BULK_USER_UPLOAD_NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody'),\n appLinkWhitelist: BulkUserUploadHelper.getWizardAppLinks(props.appLinks),\n onConfirmUnlock: () => {\n setUsers(null);\n }\n });\n\n return () => {\n navLock.unlock(BULK_USER_UPLOAD_NAV_LOCK_ID);\n };\n }, []);\n\n React.useEffect(() => {\n if (users?.length)\n return;\n\n navLock.unlock(BULK_USER_UPLOAD_NAV_LOCK_ID);\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n }, [users?.length]);\n\n if (!users)\n return <></>;\n\n return (\n <WizardLayoutContextProvider>\n <div className='px-3'>\n <WizardHeader<BulkUserUploadStepId>\n title={LanguageService.getPhrase(namespace, 'bulkUpload')}\n currentStep={props.currentStep}\n loaded\n continueButton={\n <BulkUserUploadContinueButton\n currentStep={props.currentStep}\n appLinks={props.appLinks}\n canAddExistingUsers={props.canAddExistingUsers}\n />\n }\n backButton={<BulkUserUploadBackButton currentStep={props.currentStep} appLinks={props.appLinks} />}\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, 'bulkUpload'),\n active: true\n }\n ]}\n />\n\n <div className='row g-0'>\n <div className='col-2'>\n <WizardStepList<BulkUserUploadStepId>\n steps={BulkUserUploadHelper.getSteps(props.userType, props.canAddExistingUsers)}\n currentStep={props.currentStep}\n />\n </div>\n\n <div className={`col-10 ${styles.wizardContent}`}>\n {props.children}\n </div>\n </div>\n </div>\n </WizardLayoutContextProvider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BaseUserItemProps } from 'libs/shared/apps/user-manager/components/user-list/UserList';\nimport { BasicUserDetails } from 'libs/shared/apps/user-manager/components/user-list-items/components/BasicUserDetails';\nimport { RoleOrYearGroup } from 'libs/shared/apps/user-manager/components/user-list-items/components/RoleOrYearGroup';\nimport { UserItemAvatar } from 'libs/shared/apps/user-manager/components/user-list-items/components/UserItemAvatar';\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.bulkUserActionsUserItem';\n\ninterface BulkUserActionsUserItemProps extends BaseUserItemProps {\n imageCdnUrl: string;\n customBadge?: () => JSX.Element;\n onClickRemoveUser?: (user: User) => void;\n}\n\nexport function BulkUserActionsUserItem(props: BulkUserActionsUserItemProps): JSX.Element {\n return (\n <li className='d-flex align-items-center p-2'>\n <UserItemAvatar user={props.user} imageCdnUrl={props.imageCdnUrl} />\n\n <BasicUserDetails user={props.user} />\n\n <RoleOrYearGroup userType={props.userType} user={props.user} />\n\n {props.customBadge && props.customBadge()}\n\n {props.onClickRemoveUser && (\n <Actions actions={[{\n svgName: cvSvgLibrary.Close,\n className: 'btn btn-link svg-container',\n tooltip: LanguageService.getPhrase(namespace, 'removeUser'),\n onClick: () => props.onClickRemoveUser(props.user),\n button: true\n }]} />\n )}\n </li>\n );\n}","import React from 'react';\n\ninterface WhitePillProps {\n className?: string;\n}\n\nexport function WhitePill(props: React.PropsWithChildren<WhitePillProps>): JSX.Element {\n return (\n <span className={`${props.className} rounded-pill px-2 text-nowrap bg-white border border-dark`}>\n {props.children}\n </span>\n );\n}","import React from 'react';\n\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\n\nexport const UserManagerClientContext = React.createContext<UserManagerClient>(null);","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\n\nimport { EditUserRequest } from '../interfaces';\nimport { BulkUserUploadViewModel, UserHash } from '../interfaces/viewmodels/BulkUserUploadViewModel';\nimport { UserManagerHelper } from '../utils/UserManagerHelper';\n\nfunction updateUserHash(userHash: UserHash, updatedUserIdsHash: HashObject<boolean>): UserHash {\n const updatedUsers = Object.keys(userHash || {}).reduce((updatedObj: UserHash, lookupId) => {\n if (!updatedUserIdsHash[lookupId])\n updatedObj[lookupId] = userHash[lookupId];\n return updatedObj;\n }, {});\n\n return updatedUsers;\n}\n\nexport const useBulkUploadUsers = () => {\n const [ viewModel, setViewModel ] = useViewModel<BulkUserUploadViewModel>(SharedViewModelKeys.BULK_USER_UPLOAD);\n\n function initializeUsers(users?: EditUserRequest[]): void {\n setViewModel({\n users,\n invalidUsers: null,\n existingUsersHash: null\n });\n\n updateDuplicates(users);\n }\n\n function updateUser(updatedUser: EditUserRequest): void {\n const updatedUsers = viewModel.users.map(user => {\n if (user.lookupId !== updatedUser.lookupId)\n return user;\n\n return updatedUser;\n });\n\n setViewModel({\n users: updatedUsers,\n invalidUsers: updateUserHash(viewModel?.invalidUsers, { [updatedUser.lookupId]: true }),\n existingUsersHash: viewModel?.existingUsersHash\n });\n\n updateDuplicates(updatedUsers);\n }\n\n function deleteUsers(deletedUsers: string[]): void {\n const userIdHash = deletedUsers.reduce((prev: HashObject, curr) => {\n prev[curr] = true;\n return prev;\n }, {});\n\n const updatedUsers = viewModel.users.filter(user => !userIdHash[user.lookupId]);\n\n setViewModel({\n users: updatedUsers,\n invalidUsers: updateUserHash(viewModel?.invalidUsers, userIdHash),\n existingUsersHash: updateUserHash(viewModel?.existingUsersHash, userIdHash),\n existingUserToAdd: viewModel?.existingUserToAdd?.filter(u => !!viewModel?.existingUsersHash[u.lookupId])\n });\n\n updateDuplicates(updatedUsers);\n }\n\n function updateDuplicates(users?: EditUserRequest[]): void {\n const duplicateSets = UserManagerHelper.getNewDuplicates(users);\n setViewModel('duplicateSets', duplicateSets);\n }\n\n return {\n users: viewModel?.users,\n invalidUsers: viewModel?.invalidUsers,\n hasValidatedUsers: !!viewModel?.invalidUsers,\n existingUsersHash: viewModel?.existingUsersHash || {},\n hasExistingUsers: !!Object.keys(viewModel?.existingUsersHash || {}).length,\n existingUserToAdd: viewModel?.existingUserToAdd,\n duplicateSets: viewModel?.duplicateSets,\n newUsers: viewModel?.users?.filter(u => !viewModel?.existingUsersHash?.[u.lookupId]) || [],\n\n setUsers: initializeUsers,\n setInvalidUsers: (invalidUsers: UserHash) => setViewModel('invalidUsers', invalidUsers),\n setExistingUsers: (existingUsers: UserHash) => setViewModel('existingUsersHash', existingUsers),\n updateUser,\n deleteUsers\n };\n};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\ninterface WindowedListProps<TObject> {\n items: TObject[];\n getComponent: (item: TObject, index: number) => JSX.Element;\n rowHeight: number;\n containerHeight?: number;\n\n staticComponentAboveRows?: JSX.Element;\n staticComponentBelowRows?: JSX.Element;\n}\n\nexport const WindowedList = React.forwardRef((\n props: WindowedListProps<any>,\n ref: React.Ref<Scrollbars>\n) => {\n const [ availableHeight, setAvailableHeight ] = React.useState<number>(props.containerHeight || 0);\n const [ scrollTop, setScrollTop ] = React.useState<number>(0);\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (props.containerHeight)\n return;\n\n setAvailableHeight(tableRef.current?.clientHeight ?? 0);\n }, [tableRef.current]);\n\n const numRows = props.items.length;\n const totalRowsVisible = Math.ceil(availableHeight / props.rowHeight);\n const totalHeight = props.rowHeight * numRows;\n\n const startIndex = Math.max(\n 0,\n Math.floor(scrollTop / props.rowHeight) - totalRowsVisible\n );\n\n const endIndex = Math.min(\n numRows,\n startIndex + (totalRowsVisible * 3)\n );\n\n function onScrollTable(e: React.UIEvent<HTMLDivElement>): void {\n setScrollTop(e.currentTarget.scrollTop);\n }\n\n function getTableStyles(): React.CSSProperties {\n const tablePosFromTop = tableRef.current?.getBoundingClientRect().top ?? 0;\n\n const height = props.containerHeight || `calc(100vh - ${window.pageYOffset + tablePosFromTop + 30}px)`;\n \n return {\n height,\n minHeight: `${props.rowHeight * 5}px`,\n overflow: 'auto'\n };\n }\n\n function getRows(): JSX.Element[] {\n const items = [];\n \n let index = startIndex;\n while (index < endIndex) {\n const item = props.items[index];\n\n if (item)\n items.push(props.getComponent(item, index));\n \n index++;\n }\n\n return items;\n }\n\n return (\n <div style={getTableStyles()} ref={tableRef}>\n <Scrollbars\n onScroll={onScrollTable}\n autoHeightMin={totalHeight}\n autoHeightMax={totalHeight}\n ref={ref}\n >\n <div style={{ height: totalHeight, paddingTop: startIndex * props.rowHeight }}>\n <ul className='w-100 position-relative d-table striped-list list-unstyled no-full-width'>\n {!!props.staticComponentAboveRows && props.staticComponentAboveRows}\n {getRows()}\n {!!props.staticComponentBelowRows && props.staticComponentBelowRows}\n </ul>\n </div>\n </Scrollbars>\n </div>\n );\n});","import React from 'react';\n\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'wizard.wizardConfirmationHeader';\n\ntype WizardConfirmationHeaderProps = React.PropsWithChildren<any>;\n\nexport function WizardConfirmationHeader(props: WizardConfirmationHeaderProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4'>\n <Text phrase='confirmation' />\n </h2>\n\n <h3 className='h6'>\n <Text phrase='changesToBeMade' />\n </h3>\n\n <div className='p-2 border rounded mb-2'>\n {props.children}\n </div>\n </LanguageNamespaceContext.Provider>\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}","// extracted by mini-css-extract-plugin\nexport default {\"noAccount\":\"RBzEA\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhitePill } from 'libs/shared/apps/user-manager/components/white-pill/WhitePill';\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport styles from './bulk-user-upload-account-info.scss';\n\nconst namespace = 'userManager.bulkUserUploadAccountInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BulkUserUploadAccountInfoProps {\n users: EditUserRequest[];\n existingUsers: EditUserRequest[];\n userType: UserGroup;\n}\n\nexport function BulkUseUploadAccountInfo(props: BulkUserUploadAccountInfoProps): JSX.Element {\n const noAccountCount = props.users.length - props.existingUsers.length;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Row className='mb-2'>\n <Col xs={4} className='font-weight-500'><Text phrase='statuses' /></Col>\n <Col xs={8} className='font-weight-500'><Text phrase='changesTo' /></Col>\n </Row>\n \n {!!noAccountCount && (\n <Row className='mb-2'>\n <Col xs={4}>\n <WhitePill className={styles.noAccount}>\n {getPhrase('noAccount')}\n </WhitePill>\n <div>\n <Text\n phrase={props.userType === UserGroup.Learner ? 'studentCount' : 'staffCount'}\n options={{ smartCount: noAccountCount }}\n />\n </div>\n </Col>\n\n <Col xs={8}>\n <div>\n <Text phrase={props.userType === UserGroup.Learner ? 'willCreate' : 'willInvite'} />\n </div>\n </Col>\n </Row>\n )}\n \n \n {!!props.existingUsers.length && (\n <Row className='mb-2'>\n <Col xs={4}>\n <WhitePill>\n {getPhrase('existingAccount')}\n </WhitePill>\n <div>\n <Text\n phrase={props.userType === UserGroup.Learner ? 'studentCount' : 'staffCount'}\n options={{ smartCount: props.existingUsers.length }}\n />\n </div>\n </Col>\n\n <Col xs={8}>\n <div>\n <Text phrase='willAdd' />\n </div>\n </Col>\n </Row>\n )}\n\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkUseUploadAccountInfo } from 'libs/shared/apps/user-manager/components/bulk-upload/bulk-user-upload-account-info/BulkUserUploadAccountInfo';\nimport { BulkUserActionsUserItem } from 'libs/shared/apps/user-manager/components/user-list-items/bulk-user-actions-user-item/BulkUserActionsUserItem';\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { UserHash } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserUploadViewModel';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WindowedList } from 'libs/shared/components/windowed-list/WindowedList';\nimport { WizardConfirmationHeader } from 'libs/shared/components/wizard/confirmation-header/WizardConfirmationHeader';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.bulkUserUploadConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BulkUserUploadConfirmationProps {\n users: EditUserRequest[];\n existingUsers: EditUserRequest[];\n existingUsersHash: UserHash;\n imageCdnUrl: string;\n userType: UserGroup;\n onClickConfirm: () => void;\n}\n\nexport function BulkUserUploadConfirmation(props: BulkUserUploadConfirmationProps): JSX.Element {\n const ref = React.useRef<any>(null);\n const [ , setViewModel ] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n const { setOnClickConfirm } = React.useContext(WizardLayoutContext);\n\n React.useEffect(() => {\n setViewModel('scrollContainer', ref.current?.view);\n }, [ref.current]);\n\n const isStudent = props.userType === UserGroup.Learner;\n\n React.useEffect(() => {\n setOnClickConfirm(() => props.onClickConfirm);\n }, [props.onClickConfirm]);\n\n function getBadge(user: EditUserRequest) {\n function getMessage(): string {\n if (props.existingUsersHash[user.lookupId])\n return isStudent ? getPhrase('existingStudentAccount') : getPhrase('existingStaffAccount');\n\n return getPhrase('noAccount');\n }\n\n return (\n <div className='flex-shrink-0 me-2'>\n {getMessage()}\n </div>\n );\n }\n\n return (\n <>\n <WizardConfirmationHeader>\n <h4 className='h6'>\n <Text namespace={namespace} phrase='heading' />\n </h4>\n <ul className='mt-1 ps-3 ms-1'>\n <li>\n <Text namespace={namespace} phrase={isStudent ? 'creationInfoStudent' : 'creationInfoStaff'}/>\n </li>\n <li>\n <Text namespace={namespace} phrase={isStudent ? 'addInfoStudent' : 'addInfoStaff'}/>\n </li>\n </ul>\n\n <div className='rounded p-2 bg-light-blue'>\n <BulkUseUploadAccountInfo users={props.users} existingUsers={props.existingUsers} userType={props.userType} />\n </div>\n </WizardConfirmationHeader>\n\n <h3 className='h6 mt-3'>\n <Text\n namespace={namespace}\n phrase={isStudent ? 'headingStudents' : 'headingStaff'}\n options={{ smartCount: props.users.length }}\n />\n </h3>\n\n <WindowedList\n items={props.users}\n rowHeight={55}\n ref={ref}\n getComponent={user => (\n <BulkUserActionsUserItem\n key={user.lookupId}\n user={{ ...user, name: user.firstName, id: user.lookupId, masterYearGroup: null }}\n userType={props.userType}\n imageCdnUrl={props.imageCdnUrl}\n customBadge={() => getBadge(user)}\n />\n )}\n />\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { BulkUserUploadConfirmation } from 'libs/shared/apps/user-manager/components/bulk-upload/confirmation/BulkUserUploadConfirmation';\nimport { BulkUserUploadWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserWizardParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJob, Config, CurrentUser, PropsWithPopupViewProps } from 'libs/shared/interfaces';\n\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.userUploadConfirmation';\n\nexport function BulkUserUploadConfirmationView(\n props: PropsWithPopupViewProps<UserWizardParams>\n): JSX.Element {\n const {\n users,\n existingUsersHash,\n existingUserToAdd,\n deleteUsers\n } = useBulkUploadUsers();\n\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n React.useEffect(() => {\n // remove users if they are unchecked from prev step\n if (existingUserToAdd?.length < Object.keys(existingUsersHash)?.length) {\n deleteUsers(\n BulkUserUploadHelper.getDeletedExistingUsers(users, existingUsersHash, existingUserToAdd).map(u => u.lookupId)\n );\n }\n }, []);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const appLinks = getUserManagerAppLinks(props.userType);\n const fetchAsync = Flight.useGetFetchAsync();\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n\n function startBulkUpload(): void {\n const jobData = BulkUserUploadHelper.getJobData({\n users: BulkUserUploadHelper.getNewUsers(users, existingUsersHash),\n existingUsers: existingUserToAdd,\n customerId: currentUser.data?.customerId,\n userType: props.userType\n });\n fetchAsync(JobRequests.createJob(jobData, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.userUploadStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n if (!currentUser.data || !config.data)\n return <></>;\n \n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <BulkUserUploadWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n currentStep='confirmation'\n canAddExistingUsers\n >\n <div className='px-3'>\n <BulkUserUploadConfirmation\n onClickConfirm={startBulkUpload}\n users={users}\n existingUsers={existingUserToAdd}\n existingUsersHash={existingUsersHash}\n userType={props.userType}\n imageCdnUrl={config.data?.imageCdnUrl}\n />\n </div>\n </BulkUserUploadWizardLayout>\n </UserManagerClientContext.Provider>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};"],"names":["namespace","BulkUserUploadBackButton","props","currentStep","AppLink","className","appLink","appLinks","userManager","Text","phrase","BulkUserUploadContinueButton","useBulkUploadUsers","duplicateSets","hasExistingUsers","WizardLayoutContext","disableNext","onClickConfirm","spreadsheetHasDuplicates","length","currentAppLink","ContextService","action","userUploadStatus","polling","complete","userUploadPopup","userUploadReviewAccounts","userUploadFixDuplicates","userUploadReviewExistingAccounts","willUploadOnNext","Button","variant","onClick","disabled","canAddExistingUsers","userUploadConfirmation","getNextAppLink","BULK_USER_UPLOAD_NAV_LOCK_ID","BulkUserUploadWizardLayout","users","setUsers","navLock","useNavLock","lock","id","title","LanguageService","text","appLinkWhitelist","BulkUserUploadHelper","onConfirmUnlock","unlock","replace","WizardHeader","loaded","continueButton","backButton","breadcrumbs","name","settings","userType","UserGroup","active","WizardStepList","steps","children","BulkUserActionsUserItem","user","imageCdnUrl","customBadge","onClickRemoveUser","actions","svgName","tooltip","button","WhitePill","UserManagerClientContext","updateUserHash","userHash","updatedUserIdsHash","Object","keys","reduce","updatedObj","lookupId","viewModel","setViewModel","updateDuplicates","invalidUsers","hasValidatedUsers","existingUsersHash","existingUserToAdd","newUsers","filter","u","setInvalidUsers","setExistingUsers","existingUsers","updateUser","updatedUser","updatedUsers","map","deleteUsers","deletedUsers","userIdHash","prev","curr","WindowedList","ref","containerHeight","availableHeight","setAvailableHeight","scrollTop","setScrollTop","tableRef","current","clientHeight","tablePosFromTop","numRows","items","totalRowsVisible","Math","ceil","rowHeight","totalHeight","startIndex","max","floor","endIndex","min","style","getBoundingClientRect","top","height","window","pageYOffset","minHeight","overflow","onScroll","e","currentTarget","autoHeightMin","autoHeightMax","paddingTop","staticComponentAboveRows","index","item","push","getComponent","getRows","staticComponentBelowRows","WizardConfirmationHeader","value","showButtons","hideHeader","getPhrase","WizardStepListItem","content","hideStepNumber","subText","isSelected","theme","isSelectedOverride","isCompleted","isCompletedOverride","itemContent","currentStepNumber","acc","step","i","totalSteps","itemsContainer","key","disableAppLinks","BulkUseUploadAccountInfo","noAccountCount","Row","Col","xs","options","smartCount","BulkUserUploadConfirmation","SharedViewModelKeys","setOnClickConfirm","view","isStudent","firstName","masterYearGroup","getBadge","BulkUserUploadConfirmationView","useSetPageMetadata","config","ConfigRequests","currentUser","UserRequests","fetchAsync","onCreateJobError","BulkUserActionsHelper","onCreateJob","job","params","jobId","data","UserManagerClient","jobData","customerId","JobRequests","createJob","success","error","url","type","getJobs","queryParams","bulkActionTypes","userTypes","cursor","sort","order","bulkActionType","Array","isArray","dataType","join","getJob","getJobProgress","invalidationKeys","getJobResults","status","getYearGroupRolloverStatus","sendJobReports","ids","jobIds","getJobSummary"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 3268-7be966dc82-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3268],{25752:(e,t,n)=>{n.d(t,{q:()=>d});var r=n(32735),a=n(33518),i=n(8233),c=n(83914),o=n(35223),s=n(31138);const l={active:"NV2KW"};function u(e){var t=e.activePrivacy===e.sharePrivacy;return r.createElement("li",null,r.createElement("button",{className:"".concat(t?l.active:""," dropdown-item d-flex align-items-center justify-content-between py-2"),onClick:function(){t||e.onClick(e.sharePrivacy)}},r.createElement("div",{className:"me-4"},r.createElement("p",{className:"font-label mb-1"},e.title),r.createElement("p",{className:"font-size-sm mb-0"},e.description)),t&&r.createElement(c.x,{svgName:o.vn.Check})))}function d(e){var t=e.shareOverrideRestrictions&&!e.hasStudentExp,n=(0,s.f)({entity:e.entity,entityPrivacy:e.entityPrivacy,hasStudentExp:e.hasStudentExp,yearGroups:e.yearGroups,_showPasswordProtected:e.sharePrivacy===a.e.PasswordProtected}),o=i.R.getPrivateIconAndText({privacy:e.sharePrivacy,entityTypeId:e.entityTypeId,hasStudentExp:e.hasStudentExp,entity:e.entity,yearGroups:e.yearGroups}),l=o.icon,d=o.text;return t?r.createElement("div",{className:"btn-group"},r.createElement("button",{className:"btn border-0 info-link dropdown-toggle p-1 bg-light-blue-hover","data-bs-toggle":"dropdown"},r.createElement(c.x,{svgName:l,className:"svg-container me-1"}),r.createElement("span",{className:"me-1"},d)),r.createElement("ul",{className:"dropdown-menu cursor-pointer"},Object.values(a.e).map(function(t){var a=n[t],i=a.title,c=a.description;if((0,a.predicate)())return r.createElement(u,{key:t,sharePrivacy:t,activePrivacy:e.sharePrivacy,title:i,description:c,onClick:e.onClickSavePrivacy})}))):r.createElement("div",{className:"d-flex align-items-center"},r.createElement(c.x,{svgName:l,className:"svg-container me-1"}),r.createElement("span",null,d))}},81192:(e,t,n)=>{n.d(t,{Z:()=>v});var r=n(32735),a=n(80130),i=n(92802),c=n(23481),o=n(5173),s=(0,o.Ry)().shape({preventScrubbing:(0,o.O7)(),immediateFeedback:(0,o.O7)()}),l=n(82644),u=n(83345),d=n(83523);function p(e){return r.createElement("div",null,r.createElement("div",{className:"d-flex flex-row gap-1 justify-content-between align-items-center w-100 mb-1"},r.createElement("label",{className:"m-0 cursor-pointer",htmlFor:e.id,onClick:e.onClick},e.label),r.createElement(d.Z,{id:e.id,name:e.id,onClick:e.onClick,on:e.checked})),r.createElement("p",{className:"m-0 text-secondary"},e.description))}var m="sharev2.shareSettingsForm",f=c.T.encloseNamespace(m);function y(e){var t=(0,i.u6)();function n(e,n){t.setFieldValue(e,n),t.submitForm()}return r.createElement(a.Z,{className:"d-flex flex-column gap-2"},!e.hideFormHeading&&r.createElement("div",{className:"d-flex flex-row gap-2 justify-content-between align-items-center"},r.createElement("h3",{className:"h6 m-0"},r.createElement(u.x,{namespace:m,phrase:"heading"})),"function"==typeof e.onClickDelete&&r.createElement("a",{onClick:e.onClickDelete,className:"text-danger cursor-pointer"},r.createElement(u.x,{namespace:m,phrase:"delete"}))),r.createElement("div",{className:"d-flex flex-column gap-2"},e.showPreventScrubbingField&&r.createElement(p,{id:"prevent-scrubbing",label:f("preventScrubbingLabel"),description:f("preventScrubbingDescription"),checked:!!t.values.preventScrubbing,onClick:function(){return n("preventScrubbing",!t.values.preventScrubbing)}}),e.showImmediateFeedbackField&&r.createElement(p,{id:"immediate-feedback",label:f("immediateFeedbackLabel"),description:f("immediateFeedbackDescription"),checked:!!t.values.immediateFeedback,onClick:function(){return n("immediateFeedback",!t.values.immediateFeedback)}})))}function v(e){return!e.hideFormHeading||e.showImmediateFeedbackField||e.showPreventScrubbingField?r.createElement(l.n,{initialValues:e.initialValues,onSubmit:e.onSubmit,castInitialValues:!1,validationSchema:s},r.createElement(y,Object.assign({},e))):r.createElement(r.Fragment,null)}},31138:(e,t,n)=>{n.d(t,{B:()=>p,f:()=>d});var r=n(23481),a=n(75896),i=n(33518),c=n(8233);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function s(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 l(e,t,n){return(t=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var u=r.T.encloseNamespace("sharev2.getSharePrivacyConfig");function d(e){var t=c.R.getShareLinkAccessType(e.entityPrivacy),n=c.R.getRespectRatingText(e.entity,e.yearGroups,e.hasStudentExp);return l(l(l(l(l(l(l(l({},i.e.JustMySchool,{title:u("respectRatings"),description:n,predicate:function(){return"protected"!==t}}),i.e.Protected,{title:u("respectRatings"),description:n,predicate:function(){return"protected"===t}}),i.e.JustMySchoolOverrideRestriction,{title:u("justMySchool"),description:u("justMySchoolDescription"),predicate:function(){return"protected"!==t}}),i.e.ProtectedOverrideRestriction,{title:u("justMySchool"),description:u("clickViewOnly"),predicate:function(){return"protected"===t}}),i.e.Public,{title:u("public"),description:u("publicDescription"),predicate:function(){return"owner"===t}}),i.e.Direct,{title:"",description:"",predicate:function(){return!1}}),i.e.PasswordProtected,{title:u("passwordProtectedTitle"),description:u("passwordProtectedDescription"),predicate:function(){return e._showPasswordProtected}}),i.e.PinCode,{title:u("pinCode"),description:u("pinCodeDescription"),predicate:function(){return!1}})}function p(e){var t=d(e),n=Object.entries(t).filter(function(e){return(t=e,n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,c,o=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(o.push(r.value),o.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(l)throw a}}return o}}(t,n)||function(e,t){if(e){if("string"==typeof e)return s(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)?s(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.")}())[1].predicate();var t,n});if(n.length)return a.m.first(n)[0]}},28161:(e,t,n)=>{n.d(t,{F:()=>b});var r=n(23481),a=n(20354),i=n(93563),c=n(87265),o=n(2267),s=n(16714),l=n(1666),u=n(69883),d=n(22902),p=n(37802);function m(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function i(n,r,a,i){var s=r&&r.prototype instanceof o?r:o,l=Object.create(s.prototype);return f(l,"_invoke",function(n,r,a){var i,o,s,l=0,u=a||[],d=!1,p={p:0,n:0,v:e,a:m,f:m.bind(e,4),d:function(t,n){return i=t,o=0,s=e,p.n=n,c}};function m(n,r){for(o=n,s=r,t=0;!d&&l&&!a&&t<u.length;t++){var a,i=u[t],m=p.p,f=i[2];n>3?(a=f===r)&&(s=i[(o=i[4])?5:(o=3,3)],i[4]=i[5]=e):i[0]<=m&&((a=n<2&&m<i[1])?(o=0,p.v=r,p.n=i[1]):m<f&&(a=n<3||i[0]>r||r>f)&&(i[4]=n,i[5]=r,p.n=f,o=0))}if(a||n>1)return c;throw d=!0,r}return function(a,u,f){if(l>1)throw TypeError("Generator is already running");for(d&&1===u&&m(u,f),o=u,s=f;(t=o<2?e:s)||!d;){i||(o?o<3?(o>1&&(p.n=-1),m(o,s)):p.n=s:p.v=s);try{if(l=2,i){if(o||(a="next"),t=i[a]){if(!(t=t.call(i,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,o<2&&(o=0)}else 1===o&&(t=i.return)&&t.call(i),o<2&&(s=TypeError("The iterator does not provide a '"+a+"' method"),o=1);i=e}else if((t=(d=p.n<0)?s:n.call(r,p))!==c)break}catch(t){i=e,o=1,s=t}finally{l=1}}return{value:t,done:d}}}(n,a,i),!0),l}var c={};function o(){}function s(){}function l(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(f(t={},r,function(){return this}),t),d=l.prototype=o.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,f(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return s.prototype=l,f(d,"constructor",l),f(l,"constructor",s),s.displayName="GeneratorFunction",f(l,a,"GeneratorFunction"),f(d),f(d,a,"Generator"),f(d,r,function(){return this}),f(d,"toString",function(){return"[object Generator]"}),(m=function(){return{w:i,m:p}})()}function f(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}f=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var i=function(t,n){f(e,t,function(e){return this._invoke(t,n,e)})};i("next",0),i("throw",1),i("return",2)}},f(e,t,n,r)}var y=function(e,t,n,r){return new(n||(n=Promise))(function(a,i){function c(e){try{s(r.next(e))}catch(e){i(e)}}function o(e){try{s(r.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(c,o)}s((r=r.apply(e,t||[])).next())})},v=r.T.encloseNamespace("sharev2.useMainShareData");function b(e){var t=(0,u.Z)(),n=(0,d.T)().hasPermissions,r=(0,p.r)(null),f=r.shareToGoogleClassroom,b=r.shareToMicrosoftTeams,h=r.isLoadingSettings,g=r.shareOverrideRestrictions,S=(0,c.s)({entityId:e.entityId,entityType:e.entityType}),E=S.currentUser,k=S.entity,w=S.privacy,P=S.share,x=S.config,I=(0,i._)({entityId:e.entityId}),T=I.loaded,j=I.updateShareLink,O=a.a.useBasicFetch(E.data&&l.h.yearGroups(E.data.customerId)),C=o.I.canEmbed(e.entityType),N=o.I.getEnabledIntegrations(f,b),F=n(s.C.ManageIntegrations),A=n(s.C.StudentExperience),G=n(s.C.ManageShareLinkSettings),_=P.data&&o.I.canAddPolicies(e.entityType),M=T&&!!P.data&&!!k.data&&!!w.data&&!!x.data&&!!O&&!h;return{data:{share:P,loaded:M,entity:k,privacy:w,config:x,yearGroups:O,shareOverrideRestrictions:g},canEmbed:C,integrations:N,hasStudentExp:A,canAccessSettings:_,hasManageShareLinkSettings:G,hasManageIntegrationsPermission:F,onClickSavePrivacy:function(n){return y(this,void 0,void 0,m().m(function r(){var a;return m().w(function(r){for(;;)switch(r.n){case 0:return r.p=0,r.n=1,j(P.data.shareId,{privacy:n});case 1:a=r.v,e.log({type:"update-share-link",share:a}),t.success(v("privaciesSuccess",{name:k.data.name,escapeText:!0})),r.n=3;break;case 2:r.p=2,r.v,t.error(v("privaciesError",{name:k.data.name,escapeText:!0}));case 3:return r.a(2)}},r,null,[[0,2]])}))}}}},2867:(e,t,n)=>{n.d(t,{W:()=>m});var r=n(23481),a=n(20354),i=n(93563),c=n(87265),o=n(2267),s=n(4594),l=n(20768),u=n(69883),d=n(45778),p=r.T.encloseNamespace("sharev2.useShareSettingsData");function m(e){var t=(0,u.Z)(),n=(0,c.s)({entityId:e.entityId,entityType:e.entityType}),r=n.config,m=n.entity,f=n.share,y=(0,i._)({entityId:e.entityId}),v=y.loaded,b=y.updateShareLink,h=a.a.useBasicFetch(d.G.isType(m.data,s.E.Interactive)&&m.data.interactiveId&&l.b.interactive(m.data.interactiveId));function g(n){e.log({type:"update-share-link",share:n}),t.success(p("editSuccess",{name:m.data.name,escapeText:!0}))}var S=o.I.getShareSettingsInitialValues(f.data,h.data);return{data:{loaded:v&&!!f.data&&!!r.data&&!!m.data},initialValues:S,onClickSaveLink:function(e,n){b(f.data.shareId,e).then(g).catch(function(){t.error(p("editError",{name:m.data.name,escapeText:!0})),n()})}}}},89067:(e,t,n)=>{n.d(t,{r:()=>i});var r=n(32735);function a(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 i(e){var t,n,i,c,o=(i=r.useState(null===(t=e.animate)||void 0===t||t),c=2,function(e){if(Array.isArray(e))return e}(i)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,c,o=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(o.push(r.value),o.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(l)throw a}}return o}}(i,c)||function(e,t){if(e){if("string"==typeof e)return a(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)?a(e,t):void 0}}(i,c)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=o[0],l=o[1],u=e.steps[e.step],d=void 0!==e.loading?{loading:e.loading}:{},p=Object.assign(Object.assign(Object.assign({},e.data),d),{animate:null!==(n=e.animate)&&void 0!==n?n:s,closePopup:function(){e.closePopup()},setStep:function(t){l(!1),e.setStep(t)}});if(!u)return r.createElement(r.Fragment,null);var m=u.view;return r.createElement(m,Object.assign({},p))}}}]);
|
|
3
|
+
//# sourceMappingURL=3268-7be966dc82-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/3268-7be966dc82-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/components/share-link-privacy/share-link-privacy.scss","file:///app/packages/libs/shared/src/apps/share-v2/components/share-link-privacy/ShareLinkPrivacy.tsx","file:///app/packages/libs/shared/src/apps/share-v2/validation/ShareSettingsFormValidationSchema.ts","file:///app/packages/libs/shared/src/apps/share-v2/components/share-settings-field/ShareSettingsField.tsx","file:///app/packages/libs/shared/src/apps/share-v2/components/share-settings-form/ShareSettingsForm.tsx","file:///app/packages/libs/shared/src/apps/share-v2/utils/get-share-privacy-config/getSharePrivacyConfig.ts","file:///app/packages/libs/shared/src/apps/share-v2/views/main-share-view/hooks/use-main-share-data/useMainShareData.ts","file:///app/packages/libs/shared/src/apps/share-v2/views/share-settings-view/hooks/use-share-settings-data/useShareSettingsData.ts","file:///app/packages/libs/shared/src/components/multistep-popup/MultiStepPopup.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"active\":\"NV2KW\"};","import React from 'react';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { type SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { ShareLinkHelper } from 'libs/shared/apps/share-v2/utils/ShareLinkHelper';\nimport { type SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport type { YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getSharePrivacyConfig } from '../../utils/get-share-privacy-config/getSharePrivacyConfig';\n\nimport styles from './share-link-privacy.scss';\n\ninterface SharePrivacyItemProps {\n title: string;\n activePrivacy: SharePrivacy;\n description: string;\n sharePrivacy: SharePrivacy;\n onClick: (sharePrivacy: SharePrivacy) => void\n}\n\nfunction SharePrivacyItem(props: SharePrivacyItemProps) {\n const active = props.activePrivacy === props.sharePrivacy;\n\n function onClick() {\n if (active)\n return;\n\n props.onClick(props.sharePrivacy);\n }\n\n return (\n <li>\n <button\n className={`${active ? styles.active : ''} dropdown-item d-flex align-items-center justify-content-between py-2`}\n onClick={onClick}\n >\n <div className='me-4'>\n <p className='font-label mb-1'>{props.title}</p>\n <p className='font-size-sm mb-0'>{props.description}</p>\n </div>\n {active && <SvgContainer svgName={cvSvgLibrary.Check} />}\n </button>\n </li>\n );\n}\n\ninterface ShareLinkPrivacyProps {\n hasStudentExp: boolean;\n shareOverrideRestrictions: boolean;\n entity: SharableEntity;\n entityTypeId: MasterType;\n yearGroups: YearGroup[];\n sharePrivacy: SharePrivacy;\n entityPrivacy: SharePrivacyResponse;\n onClickSavePrivacy: (privacy: SharePrivacy) => void;\n}\n\nexport function ShareLinkPrivacy(props: ShareLinkPrivacyProps): JSX.Element {\n const canUpdatePrivacy = props.shareOverrideRestrictions && !props.hasStudentExp;\n\n const config = getSharePrivacyConfig({\n entity: props.entity,\n entityPrivacy: props.entityPrivacy,\n hasStudentExp: props.hasStudentExp,\n yearGroups: props.yearGroups,\n _showPasswordProtected: props.sharePrivacy === SharePrivacy.PasswordProtected\n });\n\n const { icon, text } = ShareLinkHelper.getPrivateIconAndText({\n privacy: props.sharePrivacy,\n entityTypeId: props.entityTypeId,\n hasStudentExp: props.hasStudentExp,\n entity: props.entity,\n yearGroups: props.yearGroups\n });\n\n if (!canUpdatePrivacy) {\n return (\n <div className='d-flex align-items-center'>\n <SvgContainer svgName={icon} className='svg-container me-1' />\n <span>{text}</span>\n </div>\n );\n }\n \n return (\n <div className='btn-group'>\n <button\n className={`btn border-0 info-link dropdown-toggle p-1 bg-light-blue-hover`}\n data-bs-toggle='dropdown'\n >\n <SvgContainer svgName={icon} className='svg-container me-1' />\n <span className='me-1'>{text}</span>\n </button>\n <ul className='dropdown-menu cursor-pointer'>\n {Object.values(SharePrivacy).map(sharePrivacy => {\n const { title, description, predicate } = config[sharePrivacy];\n \n if (!predicate())\n return;\n\n return (\n <SharePrivacyItem\n key={sharePrivacy}\n sharePrivacy={sharePrivacy}\n activePrivacy={props.sharePrivacy}\n title={title}\n description={description}\n onClick={props.onClickSavePrivacy}\n />\n );\n })}\n </ul>\n </div>\n );\n}","import { boolean, object } from 'yup';\n\nexport const ShareSettingsFormValidationSchema = object().shape({\n preventScrubbing: boolean(),\n immediateFeedback: boolean()\n});","import React from 'react';\n\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\ninterface ShareSettingsFieldProps {\n id: string;\n label: string;\n description: string;\n onClick: () => void;\n checked: boolean;\n}\n\nexport function ShareSettingsField(props: ShareSettingsFieldProps): JSX.Element {\n return (\n <div>\n <div className='d-flex flex-row gap-1 justify-content-between align-items-center w-100 mb-1'>\n <label className='m-0 cursor-pointer' htmlFor={props.id} onClick={props.onClick}>{props.label}</label>\n <ToggleSwitch\n id={props.id}\n name={props.id}\n onClick={props.onClick}\n on={props.checked}\n />\n </div>\n <p className='m-0 text-secondary'>{props.description}</p>\n </div>\n );\n}","import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareSettingsFormFields } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { ShareSettingsFormValidationSchema } from 'libs/shared/apps/share-v2/validation/ShareSettingsFormValidationSchema';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ShareSettingsField } from '../share-settings-field/ShareSettingsField';\n\nconst namespace = 'sharev2.shareSettingsForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ShareSettingsFormProps {\n initialValues: ShareSettingsFormFields;\n onSubmit: (\n data: ShareSettingsFormFields,\n onDone: (options?: FormSubmissionOptions<ShareSettingsFormFields>) => void\n ) => void;\n showPreventScrubbingField?: boolean;\n showImmediateFeedbackField?: boolean;\n hideFormHeading?: boolean;\n onClickDelete?: () => void;\n}\n\nfunction ShareSettingsFromComponent(props: ShareSettingsFormProps): JSX.Element {\n const formikProps = useFormikContext<ShareSettingsFormFields>();\n\n function setFormikFieldAndSave\n <T extends keyof ShareSettingsFormFields>(field: T, value: ShareSettingsFormFields[T]) {\n formikProps.setFieldValue(field, value);\n formikProps.submitForm();\n }\n\n return (\n <Form className='d-flex flex-column gap-2'>\n {!props.hideFormHeading &&\n <div className='d-flex flex-row gap-2 justify-content-between align-items-center'>\n <h3 className='h6 m-0'>\n <Text namespace={namespace} phrase='heading' />\n </h3>\n {typeof props.onClickDelete === 'function' &&\n <a onClick={props.onClickDelete} className='text-danger cursor-pointer'><Text namespace={namespace} phrase='delete' /></a>\n }\n </div>\n }\n <div className='d-flex flex-column gap-2'>\n {props.showPreventScrubbingField &&\n <ShareSettingsField\n id='prevent-scrubbing'\n label={getPhrase('preventScrubbingLabel')}\n description={getPhrase('preventScrubbingDescription')}\n checked={!!formikProps.values.preventScrubbing}\n onClick={() => setFormikFieldAndSave('preventScrubbing', !formikProps.values.preventScrubbing)}\n />\n }\n {props.showImmediateFeedbackField &&\n <ShareSettingsField\n id='immediate-feedback'\n label={getPhrase('immediateFeedbackLabel')}\n description={getPhrase('immediateFeedbackDescription')}\n checked={!!formikProps.values.immediateFeedback}\n onClick={() => setFormikFieldAndSave('immediateFeedback', !formikProps.values.immediateFeedback)}\n />\n }\n </div>\n </Form>\n );\n}\n\nexport function ShareSettingsForm(props: ShareSettingsFormProps): JSX.Element {\n const isEverythingHidden = props.hideFormHeading\n && !props.showImmediateFeedbackField\n && !props.showPreventScrubbingField;\n\n if (isEverythingHidden)\n return <></>;\n\n return (\n <FormWrapper<ShareSettingsFormFields>\n initialValues={props.initialValues}\n onSubmit={props.onSubmit}\n castInitialValues={false}\n validationSchema={ShareSettingsFormValidationSchema}\n >\n <ShareSettingsFromComponent {...props} />\n </FormWrapper>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { type SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { ShareLinkHelper } from 'libs/shared/apps/share-v2/utils/ShareLinkHelper';\nimport { type SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport type { YearGroup } from 'libs/shared/interfaces';\n\nconst namespace = 'sharev2.getSharePrivacyConfig';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype SharePrivacyConfigItem = {\n title: string;\n description: string;\n predicate: () => boolean;\n}\n\ninterface UseSharePrivacyConfigOptions {\n entityPrivacy: SharePrivacyResponse;\n entity: SharableEntity;\n yearGroups: YearGroup[];\n hasStudentExp: boolean;\n /**\n * To support legacy password protected share links\n */\n _showPasswordProtected?: boolean;\n}\n\nexport function getSharePrivacyConfig(\n options: UseSharePrivacyConfigOptions\n): {[key in SharePrivacy]: SharePrivacyConfigItem} {\n const accessType = ShareLinkHelper.getShareLinkAccessType(options.entityPrivacy);\n const respectRatingText = ShareLinkHelper.getRespectRatingText(\n options.entity,\n options.yearGroups,\n options.hasStudentExp\n );\n\n const SharePrivacyItemConfig: {[key in SharePrivacy]: SharePrivacyConfigItem} = {\n [SharePrivacy.JustMySchool]: {\n title: getPhrase('respectRatings'),\n description: respectRatingText,\n predicate: () => accessType !== 'protected'\n },\n [SharePrivacy.Protected]: {\n title: getPhrase('respectRatings'),\n description: respectRatingText,\n predicate: () => accessType === 'protected'\n },\n [SharePrivacy.JustMySchoolOverrideRestriction]: {\n title: getPhrase('justMySchool'),\n description: getPhrase('justMySchoolDescription'),\n predicate: () => accessType !== 'protected'\n },\n [SharePrivacy.ProtectedOverrideRestriction]: {\n title: getPhrase('justMySchool'),\n description: getPhrase('clickViewOnly'),\n predicate: () => accessType === 'protected'\n },\n [SharePrivacy.Public]: {\n title: getPhrase('public'),\n description: getPhrase('publicDescription'),\n predicate: () => accessType === 'owner'\n },\n /**\n * Not supported\n */\n [SharePrivacy.Direct]: {\n title: '',\n description: '',\n predicate: () => false\n },\n [SharePrivacy.PasswordProtected]: {\n title: getPhrase('passwordProtectedTitle'),\n description: getPhrase('passwordProtectedDescription'),\n predicate: () => options._showPasswordProtected\n },\n [SharePrivacy.PinCode]: {\n title: getPhrase('pinCode'),\n description: getPhrase('pinCodeDescription'),\n predicate: () => false\n }\n };\n\n return SharePrivacyItemConfig;\n}\n\nexport function getDefaultSharePrivacy(options: UseSharePrivacyConfigOptions): SharePrivacy {\n const items = getSharePrivacyConfig(options);\n\n const validItems = Object.entries(items).filter(([ , config ]) => config.predicate());\n\n if (!validItems.length)\n return;\n\n return ArrayHelper.first(validItems)[0] as SharePrivacy;\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { useShareLinkActions } from 'libs/shared/apps/share-v2/hooks/useShareLinkActions';\nimport { useShareLinkData } from 'libs/shared/apps/share-v2/hooks/useShareLinkData';\nimport { ShareLogFn } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport type { YearGroup } from 'libs/shared/interfaces';\n\nconst namespace = 'sharev2.useMainShareData';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UseMainShareDataOptions {\n entityId: string;\n entityType: SharableEntityType;\n log: ShareLogFn;\n}\n\nexport function useMainShareData(options: UseMainShareDataOptions) {\n const alerts = useAlerts();\n const { hasPermissions } = usePermissions();\n\n const {\n shareToGoogleClassroom,\n shareToMicrosoftTeams,\n isLoadingSettings,\n shareOverrideRestrictions\n } = useSettings(null);\n \n const {\n currentUser,\n entity,\n privacy,\n share,\n config\n } = useShareLinkData({ entityId: options.entityId, entityType: options.entityType });\n \n const {\n loaded: shareActionLoaded,\n updateShareLink\n } = useShareLinkActions({ entityId: options.entityId });\n \n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n async function onClickSavePrivacy(updatedPrivacy: SharePrivacy): Promise<void> {\n try {\n const updatedShare = await updateShareLink(share.data.shareId, { privacy: updatedPrivacy });\n options.log({\n type: 'update-share-link',\n share: updatedShare\n });\n alerts.success(getPhrase('privaciesSuccess', { name: entity.data.name, escapeText: true }));\n } catch {\n alerts.error(getPhrase('privaciesError', { name: entity.data.name, escapeText: true }));\n }\n }\n \n const canEmbed = ShareViewHelper.canEmbed(options.entityType);\n const integrations = ShareViewHelper.getEnabledIntegrations(shareToGoogleClassroom, shareToMicrosoftTeams);\n const hasManageIntegrationsPermission = hasPermissions(PermissionName.ManageIntegrations);\n const hasStudentExp = hasPermissions(PermissionName.StudentExperience);\n const hasManageShareLinkSettings = hasPermissions(PermissionName.ManageShareLinkSettings);\n const canAccessSettings = share.data && ShareViewHelper.canAddPolicies(options.entityType);\n \n const loaded = shareActionLoaded\n && !!share.data\n && !!entity.data\n && !!privacy.data\n && !!config.data\n && !!yearGroups\n && !isLoadingSettings;\n\n\n return {\n data: {\n share,\n loaded,\n entity,\n privacy,\n config,\n yearGroups,\n shareOverrideRestrictions\n },\n canEmbed,\n integrations,\n hasStudentExp,\n canAccessSettings,\n hasManageShareLinkSettings,\n hasManageIntegrationsPermission,\n onClickSavePrivacy\n };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { useShareLinkActions } from 'libs/shared/apps/share-v2/hooks/useShareLinkActions';\nimport { useShareLinkData } from 'libs/shared/apps/share-v2/hooks/useShareLinkData';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport type { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\nimport { ShareLogFn } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport type { Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nconst namespace = 'sharev2.useShareSettingsData';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UseShareSettingsDataOptions {\n entityId: string;\n entityType: SharableEntityType;\n log: ShareLogFn;\n}\n\nexport function useShareSettingsData(options: UseShareSettingsDataOptions) {\n const alerts = useAlerts();\n\n const { config, entity, share } = useShareLinkData({\n entityId: options.entityId,\n entityType: options.entityType\n });\n\n const { loaded: shareLinkActionsLoaded, updateShareLink } = useShareLinkActions({ entityId: options.entityId });\n \n /**\n * Fetch interactive videos options to set them as defaults\n * if the interactive share data does not have any options set\n */\n const interactive = Flight.useBasicFetch<Interactive>(\n MasterTypeHelper.isType<InteractiveMetadata>(entity.data, MasterType.Interactive) && entity.data.interactiveId &&\n InteractiveRequests.interactive(entity.data.interactiveId)\n );\n\n function onSuccess(updatedShare: Share) {\n options.log({\n type: 'update-share-link',\n share: updatedShare\n });\n \n alerts.success(getPhrase('editSuccess', { name: entity.data.name, escapeText: true }));\n }\n \n function onClickSaveLink(data: UpdateShareRequest, onError: () => void): void {\n updateShareLink(share.data.shareId, data)\n .then(onSuccess)\n .catch(() => {\n alerts.error(getPhrase('editError', { name: entity.data.name, escapeText: true }));\n onError();\n });\n }\n \n const initialValues = ShareViewHelper.getShareSettingsInitialValues(share.data, interactive.data);\n \n const loaded = shareLinkActionsLoaded\n && !!share.data\n && !!config.data\n && !!entity.data;\n\n return {\n data: {\n loaded\n },\n initialValues,\n onClickSaveLink\n };\n}","import React from 'react';\n\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nexport interface MultiStepPopupViewProps extends PopupViewProps {\n animate?: boolean;\n loading?: boolean;\n}\n\nexport type MultiStepItemConfig<TProps, TSteps extends string> = {\n [Key in TSteps]: {\n view: (props: TProps) => JSX.Element;\n }\n}\n\ninterface MultiStepPopupProps<\n TProps,\n TSteps extends string\n> {\n step: TSteps;\n data: TProps;\n steps: MultiStepItemConfig<TProps, TSteps>;\n loading?: boolean;\n animate?: boolean;\n setStep: (step: TSteps) => void;\n closePopup: () => void;\n}\n\nexport function MultiStepPopup<TProps, TSteps extends string>(\n props: MultiStepPopupProps<TProps, TSteps>\n): JSX.Element {\n const [ animate, setAnimate ] = React.useState<boolean>(props.animate ?? true);\n\n function setStep(step: TSteps) {\n /**\n * We want to animate the popup for the first time it loads in.\n * After that every step changes should not animate other popups\n */\n setAnimate(false);\n props.setStep(step);\n }\n\n function closePopup() {\n props.closePopup();\n }\n\n const stepConfig = props.steps[props.step];\n /**\n * This is so that we do not override `loading` prop \n * passed into `ViewComponent` from `props.data` if `props.loading` is undefined.\n * We only want to override the prop if this is set.\n */\n const loading = typeof props.loading !== 'undefined' ? { loading: props.loading } : {};\n \n const viewProps: TProps = {\n ...props.data,\n ...loading,\n animate: props.animate ?? animate,\n closePopup,\n setStep\n };\n\n if (!stepConfig)\n return <></>;\n\n const ViewComponent = stepConfig.view;\n\n return <ViewComponent {...viewProps} />;\n}"],"names":["SharePrivacyItem","props","active","activePrivacy","sharePrivacy","className","onClick","title","description","SvgContainer","svgName","ShareLinkPrivacy","canUpdatePrivacy","shareOverrideRestrictions","hasStudentExp","config","getSharePrivacyConfig","entity","entityPrivacy","yearGroups","_showPasswordProtected","SharePrivacy","ShareLinkHelper","privacy","entityTypeId","icon","text","Object","values","map","predicate","key","onClickSavePrivacy","ShareSettingsFormValidationSchema","shape","preventScrubbing","immediateFeedback","ShareSettingsField","htmlFor","id","label","ToggleSwitch","name","on","checked","namespace","getPhrase","LanguageService","ShareSettingsFromComponent","formikProps","setFormikFieldAndSave","field","value","setFieldValue","submitForm","Form","hideFormHeading","Text","phrase","onClickDelete","showPreventScrubbingField","showImmediateFeedbackField","ShareSettingsForm","FormWrapper","initialValues","onSubmit","castInitialValues","validationSchema","options","accessType","respectRatingText","getDefaultSharePrivacy","items","validItems","entries","filter","length","useMainShareData","alerts","hasPermissions","shareToGoogleClassroom","shareToMicrosoftTeams","isLoadingSettings","entityId","entityType","currentUser","share","shareActionLoaded","loaded","updateShareLink","data","customerId","canEmbed","integrations","hasManageIntegrationsPermission","hasManageShareLinkSettings","canAccessSettings","updatedPrivacy","shareId","updatedShare","log","type","success","escapeText","error","useShareSettingsData","shareLinkActionsLoaded","interactive","interactiveId","onSuccess","onClickSaveLink","onError","then","MultiStepPopup","animate","setAnimate","stepConfig","steps","step","loading","viewProps","closePopup","setStep","ViewComponent","view"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1243],{39157:(e,t,r)=>{r.d(t,{HI:()=>m,R6:()=>s,Rt:()=>v,UU:()=>d,Zs:()=>u,nq:()=>f});var n=r(75896),a=r(94892),i=r(28972),o=r(8246),l=r(83140),c=r(80845);function s(e,t,r){var i={markingRequired:[],lowScore:[],highScore:[],completed:[],notCompleted:[]},o=(0,c.Q)(e),l=new Set(o.map(function(e){return e.id}));t.students.forEach(function(t){var o=Object.assign(Object.assign({},t),{summary:v(e,t)});o.summary.awaitingMarking?i.markingRequired.push(o):n.m.last(t.results).attempts.filter(function(e){var t;return!!l.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)}).length===l.size?(i.completed.push(o),o.summary.percentCorrect>=((null==r?void 0:r.HIGH)||a.i.HIGH)&&i.highScore.push(o),o.summary.percentCorrect<((null==r?void 0:r.MODERATE)||a.i.MODERATE)&&i.lowScore.push(o)):i.notCompleted.push(o)});var s=n.m.sortBy(i.lowScore,function(e){return e.summary.percentCorrect}),u=n.m.sortBy(i.highScore,function(e){return-e.summary.percentCorrect});return Object.assign(Object.assign({},i),{lowScore:s,highScore:u})}function u(e,t){return(0,c.Wn)(e).find(function(e){return e.id.toString()===t.toString()})}function d(e){return"".concat(e.questionId,":").concat(e.resultId)}function m(e,t,r){var n=(0,c.j_)(t),a=(0,c.f6)(e,n);return(null==a?void 0:a.answers.every(function(e){var t;return(null===(t=r[d(e)])||void 0===t?void 0:t.status)===o.N.Correct}))?o.N.Correct:(null==a?void 0:a.answers.every(function(e){var t;return(null===(t=r[d(e)])||void 0===t?void 0:t.status)===o.N.Incorrect}))?o.N.Incorrect:void 0}function f(e,t){var r=t.students.length,n=0,a=0,o=0,s=0,u=0;return t.students.forEach(function(t){var r=(0,c.j_)(t);if(r){u+=t.results.length;var d=l.A.isInteractionCorrect(e,r);d===i.w.Correct&&n++,d===i.w.UnAnswered&&o++,d===i.w.AwaitingMarking&&s++,d!==i.w.UnAnswered&&a++}}),{percentCorrect:r>0?n/r:0,correct:n,answered:a,unanswered:o,awaitingMarking:s,attempts:u}}function v(e,t){var r=(0,c.j_)(t),n=(0,c.Q)(e),a=n.length,o=0,s=0;n.forEach(function(e){var t=l.A.isInteractionCorrect(e,r);t===i.w.Correct&&o++,t===i.w.AwaitingMarking&&s++});var u=a>0?o/a:0,d=new Set(n.map(function(e){return e.id})),m=r.attempts.filter(function(e){var t;return!!d.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)}).length;return{answered:m,attempts:t.results.length,unanswered:a-m,percentCorrect:u,correct:o,awaitingMarking:s}}},6748:(e,t,r)=>{r.d(t,{i:()=>I});var n=r(32735),a=r(42648),i=r(35509),o=r(91967),l=r(15611),c=r(17808),s=r(1287),u=r(83914),d=r(90281),m={opacity:"0.8",cursor:"grabbing"},f=r(35223);function v(e){return function(e){if(Array.isArray(e))return p(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(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 g(e,t){if(e){if("string"==typeof e)return p(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function h(e){var t,r,n,a;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(r=e.current)||void 0===r?void 0:r.scrollLeft)+1<(null===(n=e.current)||void 0===n?void 0:n.scrollWidth)-(null===(a=e.current)||void 0===a?void 0:a.clientWidth)}}const b={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var w=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function S(e){var t,r;return e.column.canSort?n.createElement("span",{className:"".concat(b.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(r=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==r?r:"")},n.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):n.createElement(n.Fragment,null)}function E(e){var t,r,a,u,d,f,g,p,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:(g=e.initialSelectedRowIds,p={},g.forEach(function(e){return p[e]=!0}),p)}),e.getRowId&&(h.getRowId=e.getRowId);var b,w=i.useTable.apply(void 0,[h].concat((b=function(e){var t=[i.useSortBy,i.useRowSelect,"flex"===e.layout?i.useFlexLayout:i.useBlockLayout];return e.allowFiltering&&(t=[].concat(v(t),[i.useFilters])),e.allowGlobalFiltering&&(t=[].concat(v(t),[i.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return y(e)}(b)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(b)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?y(e,t):void 0}}(b)||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.")}()))),E=w.getTableProps,I=w.getTableBodyProps,C=w.headerGroups,R=w.rows,k=w.prepareRow,A=w.toggleAllRowsSelected,N=w.setGlobalFilter,O=w.setHiddenColumns,j=w.state.sortBy;function M(){return!R.length&&e.emptyState?e.emptyState:R.map(function(t){k(t);var r=function(t){var r,n,a,i,l,c=o.q.isFunction(null===(r=e.theme)||void 0===r?void 0:r.row)?e.theme.row(t):null!==(a=null===(n=e.theme)||void 0===n?void 0:n.row)&&void 0!==a?a:"";return t.isSelected&&(null===(i=e.theme)||void 0===i?void 0:i.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),a=!!e.getRowAppLink&&e.getRowAppLink(t);function i(){e.onSelectRow&&(e.allowSelectMultipleRows||A(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,o){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,o);return a?n.createElement("div",{role:"row",key:t.id},n.createElement(l.F,Object.assign({},e,c,{className:r,appLink:a}),U(t))):n.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:r,onClick:i}),U(t))}var u=t.getRowProps();return e.enableSortableRows?n.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:n.forwardRef(function(e,t){return c(e,t)})}):c(u)})}function U(t){return t.cells.map(function(r){var a=function(t,r){var n,a,i="";return"function"==typeof(null===(n=e.theme)||void 0===n?void 0:n.cell)&&(i=e.theme.cell(t,r)),"string"==typeof(null===(a=e.theme)||void 0===a?void 0:a.cell)&&(i=e.theme.cell),e.onSelectCell&&(i+=" cursor-pointer"),i}(t,r);return n.createElement("div",Object.assign({key:r.column.id},r.getCellProps(),{className:a,onClick:function(){e.onSelectCell&&e.onSelectCell(r)}}),r.render("Cell"))})}return n.useEffect(function(){e.onSort&&e.onSort(j)},[j]),n.useEffect(function(){e.globalFilter&&N(e.globalFilter)},[e.globalFilter]),n.useEffect(function(){e.hiddenColumns&&O(e.hiddenColumns)},[e.hiddenColumns&&e.hiddenColumns.length]),n.createElement("div",Object.assign({},E(),{className:null!==(r=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==r?r:""}),n.createElement("div",{className:null!==(u=null===(a=e.theme)||void 0===a?void 0:a.header)&&void 0!==u?u:""},C.map(function(t){var r,a;return n.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(a=null===(r=e.theme)||void 0===r?void 0:r.headerRow)&&void 0!==a?a:""}),t.headers.map(function(t){var r,a;return n.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(a=null===(r=e.theme)||void 0===r?void 0:r.headerCell)&&void 0!==a?a:""}),t.render("Header",{renderSortIndicator:function(){return n.createElement(S,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&n.createElement(S,{column:t,theme:e.theme}))}))})),n.createElement("div",Object.assign({},I(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?n.createElement(c.Q,{ids:R.map(function(e){return e.original.id}),getDragOverlay:function(t){var r,a,i=R.findIndex(function(e){return e.original.id===t}),o=R[i];return n.createElement("div",Object.assign({},e,{className:(r=e.theme,a="g-0 ",r&&(a+=r.row),a),style:m}),U(o))},onSortEnd:e.onSortingRowsEnd},M()):M()))}function I(e){var t=e.enableSlider,r=e.scrollIncrement,i=e.scrollable,l=w(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,r=n.useRef(null),a=(e=n.useState(h(r)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,l=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||g(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.")}()),i=a[0],l=a[1],c=o.q.throttle(function(){l(h(r))},200),s=n.useCallback(function(e){var t;r.current&&(null===(t=r.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(l(h(r)),e.addEventListener("scroll",c)),r.current=e},[]);return n.useEffect(function(){(null==r?void 0:r.current)&&l(h(r))},[r]),{ref:s,scrollState:i,scroll:function(e){var t;null===(t=r.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=c.ref,u=c.scrollState,m=c.scroll;if(i)return n.createElement(a.$B,{renderTrackHorizontal:function(){return n.createElement("div",{className:b.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},n.createElement(E,Object.assign({},l)));if(!t)return n.createElement(E,Object.assign({},l));function f(e){m(r*("right"===e?1:-1))}return n.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},n.createElement("div",{className:"px-4"},n.createElement("div",{className:"position-relative"},n.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),n.createElement("div",{className:"".concat(b.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},n.createElement(E,Object.assign({},l))),n.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}I.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},28972:(e,t,r)=>{var n;r.d(t,{w:()=>n}),function(e){e[e.Correct=0]="Correct",e[e.Incorrect=1]="Incorrect",e[e.AwaitingMarking=2]="AwaitingMarking",e[e.Answered=3]="Answered",e[e.UnAnswered=4]="UnAnswered",e[e.NotApplicable=5]="NotApplicable"}(n||(n={}))},8246:(e,t,r)=>{var n;r.d(t,{N:()=>n}),function(e){e[e.Incorrect=0]="Incorrect",e[e.Correct=1]="Correct",e[e.PendingReview=2]="PendingReview"}(n||(n={}))},54405:(e,t,r)=>{r.d(t,{X:()=>n});var n={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},83140:(e,t,r)=>{r.d(t,{A:()=>g});var n=r(28972),a=r(8246),i=r(38129);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function l(e,t,r){return(t=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(){return n.w.NotApplicable}function s(e,t){var r=e.actionableItems.filter(function(e){return e.isCorrect});return r.every(function(e){return!t(e.id)})?n.w.UnAnswered:r.every(function(e){var r;return e.name.trim().toLowerCase()===(null===(r=t(e.id))||void 0===r?void 0:r.trim().toLowerCase())})?n.w.Correct:n.w.Incorrect}function u(e,t){return e.actionableItems.every(function(e){return!t(e.id)})?n.w.UnAnswered:e.actionableItems.filter(function(e){return e.isCorrect}).every(function(e){var r,n=t(e.id);return(null==n?void 0:n.toString())===(null===(r=e.id)||void 0===r?void 0:r.toString())||n===e.name})?n.w.Correct:n.w.Incorrect}function d(e,t){return function(r){var n=null==t?void 0:t.attempts.find(function(t){return t.id===e.id});return null==n?void 0:n.answers.find(function(e){return e.id===r})}}function m(e,t){var r=d(e,t);return u(e,function(e){var t=r(e);return null==t?void 0:t.text})}function f(e,t){return function(e,t){var r;return e.actionableItems.forEach(function(e){var i=t(e.id);r=i?i.status!==a.N.Correct?i.status!==a.N.Incorrect?n.w.AwaitingMarking:n.w.Incorrect:n.w.Correct:n.w.UnAnswered}),r}(e,d(e,t))}var v=l(l(l(l(l(l(l({},i.Z9.Annotation,c),i.Z9.Image,c),i.Z9.MissingWord,function(e,t){var r=d(e,t);return s(e,function(e){var t=r(e);return null==t?void 0:t.text})}),i.Z9.MultipleChoice,m),i.Z9.ShortAnswer,f),i.Z9.TrueOrFalse,m),i.Z9.Illustration,f),g={notApplicable:c,awaitingMarking:function(){return n.w.AwaitingMarking},isMissingWordCorrect:s,isMultipleChoiceCorrect:u,isInteractionCorrect:function(e,t){return(0,v[e.typeId])(e,t)}}},78057:(e,t,r)=>{r.d(t,{R:()=>C});var n=r(32735),a=r(75896),i=r(23481),o=r(97958),l=i.T.encloseNamespace("shared.studentResultsTable");function c(e){return"not_completed"===e.filter?n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.notCompletedImageUrl,size:"small"}),n.createElement(o.u.Info,null,l("notCompletedDescription"))):"marking_required"===e.filter?n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.markingRequiredImageUrl,size:"small"}),n.createElement(o.u.Info,null,l("markingRequiredDescription"))):"helping_hand"===e.filter?n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.helpingHandImageUrl,size:"small"}),n.createElement(o.u.Info,null,l("helpingHandDescription"))):n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.emptyStateImageUrl,size:"small"}),n.createElement(o.u.Heading,null,l("emptyStateHeading")),n.createElement(o.u.Info,null,l("emptyStateDescription")))}var s=r(83345),u="shared.studentResultsTable";function d(e){function t(t){var r=e.filter===t?null:t;e.setFilter(r)}function r(t){return"btn btn-outline-dark ".concat(function(t){return e.filter===t}(t)?"bg-dark text-white":"")}return n.createElement("div",{className:"d-flex align-items-center mb-3"},n.createElement("p",{className:"h6 mb-0"},n.createElement(s.x,{namespace:u,phrase:"filters"})),n.createElement("div",{className:"d-flex border-start ps-3 ms-3 gap-2"},n.createElement("button",{className:r("not_completed"),onClick:function(){return t("not_completed")}},n.createElement(s.x,{namespace:u,phrase:"notCompletedFilter"})),n.createElement("button",{className:r("marking_required"),onClick:function(){return t("marking_required")}},n.createElement(s.x,{namespace:u,phrase:"markingRequiredFilter"})),n.createElement("button",{className:r("helping_hand"),onClick:function(){return t("helping_hand")}},n.createElement(s.x,{namespace:u,phrase:"helpingHandFilter"}))))}var m=r(97364),f=r(6748),v=r(84806),g=r(19912);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,l=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}(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.")}()}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var b={table:"".concat(g.Z.fixedTable," bg-white rounded-start border border-end-0"),header:"".concat(g.Z.header," border-bottom"),headerRow:"h-100",headerCell:"d-flex align-items-center justify-content-start",row:g.Z.row},y={header:"".concat(g.Z.header," fw-bold"),headerRow:"h-100",headerCell:"".concat(g.Z.interactionHeaderCellOuter," bg-white border-bottom"),row:"".concat(g.Z.row," ").concat(g.Z.resultsRow),cell:g.Z.resultsCellOuter};function w(e){var t,r=p(n.useState((0,m.P)(e.sortBy,"score")),2),i=r[0],o=r[1],l=p(n.useState(e.filterBy),2),s=l[0],u=l[1],h=n.useRef(null),w=(0,v.R7)(e.results,e.anonymiseUsers,null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl),S=(0,v.lE)(e.interactive,e.interactiveMetadata,e.results,function(e){(0,v.bB)(h.current,e)},e.refreshTable),E=(0,v.Fx)(e.interactive,e.results,e.refreshTable,e.anonymiseUsers,a.m.first(i),s);function I(e){(0,v.l8)(h.current,e)}return n.createElement("div",null,!!e.results.students.length&&n.createElement(d,{filter:s,setFilter:u}),!E.length&&n.createElement(c,{emptyStateImageUrl:e.emptyStateImageUrl,helpingHandImageUrl:e.helpingHandImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,notCompletedImageUrl:e.notCompletedImageUrl,filter:s}),!!E.length&&n.createElement("div",{ref:h,className:"d-flex".concat(E.length?" ".concat(g.Z.hasResults):"")},n.createElement(f.i,{columns:w,data:E,theme:b,onSelectRow:function(t){var r=t.original;e.viewStudentResults(r.user,e.interactiveMetadata.id)},onRowMouseOver:function(e){return I(e.index)},onRowMouseLeave:function(){return I()},enableSort:!0,manualSort:!0,onSort:o,initialSortBy:i}),n.createElement(f.i,{columns:S,data:E,theme:y,enableSlider:!0,scrollIncrement:8*v.Ju,onSelectCell:function(t){e.viewStudentResults(t.row.original.user,e.interactiveMetadata.id,t.column.id)},scrollContainerClassName:"rounded-end border border-start-0 border"})))}var S=r(99742);const E={partialInsights:"qSeTe"};function I(){return n.createElement("div",null,n.createElement("div",{className:"d-flex align-items-center mb-3"},n.createElement("p",{className:"h6 px-4 mb-0 me-4 partial-loading-background"}," "),n.createElement("div",{className:"row g-2 w-50"},n.createElement("div",{className:"col-3"},n.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),n.createElement("div",{className:"col-3"},n.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),n.createElement("div",{className:"col-3"},n.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")))),n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-12"},n.createElement("div",{className:"".concat(E.partialInsights," rounded partial-loading-background")}))))}function C(e){return n.createElement(n.Fragment,null,!e.hasDataLoaded&&n.createElement(I,null),e.hasDataLoaded&&n.createElement(w,{interactive:e.interactive,interactiveMetadata:e.interactiveMetadata,results:e.results,refreshTable:e.isFetching,viewStudentResults:e.viewStudentResults,emptyStateImageUrl:S.W.Insights.NO_RESPONSES,sortBy:e.sortBy,filterBy:e.filterBy,anonymiseUsers:e.anonymiseUsers,notCompletedImageUrl:S.W.Insights.JIGSAW,markingRequiredImageUrl:S.W.Insights.CLIPBOARD,helpingHandImageUrl:S.W.Insights.SPEECH_BUBBLE_HEART,config:e.config}))}},9566:(e,t,r)=>{r.d(t,{G6:()=>m,GJ:()=>f,VE:()=>g});var n=r(23481),a=r(110),i=r(33518),o=r(2510),l=r(4594),c=r(35223),s=r(14070),u=r(97291),d=n.T.encloseNamespace("myShares.demoInsights"),m={type:o.y.Link,privacy:i.e.JustMySchool,objectId:"0",objectTypeId:l.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},f={share:m,sharedObject:null,shareRecipients:null,dateShared:a.O.subtract(new Date,7,"days").toISOString()},v={application:u.O.MY_SHARES,action:s.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},g={svgName:c.vn.Analytics,label:d("demoInsights"),appLink:v,group:"insights",className:"btn btn-outline-dark"}},82433:(e,t,r)=>{r.r(t),r.d(t,{InteractiveInsightsStudentsDemoView:()=>E});var n=r(32735),a=r(81886),i=r(23481),o=r(2948),l=r(20354),c=r(26025),s=r(38143),u=r(39151),d=r(54405),m=r(93322),f=r(79612),v=r(14070),g=r(97291),p=r(9540),h=r(78057),b=r(9566),y=r(10447);function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var S=i.T.encloseNamespace("insights.interactiveInsightsStudents");function E(e){var t,r,i,E,I,C=(E=(0,o.D)(s.g.ANONYMISE_USERS),I=1,function(e){if(Array.isArray(e))return e}(E)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,l=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(E,I)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?w(e,t):void 0}}(E,I)||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];(0,m.F)();var R=l.a.useBasicFetch(u.L.config()),k=l.a.useBasicFetch(d.X.interactiveMetadata()),A=l.a.useBasicFetch(d.X.interactive()),N=c.B.getAudienceAppLinkParams(),O=c.B.getDateRangeAppLinkParams(),j=l.a.useBasicFetch(d.X.interactiveResults()),M=A.data&&k.data&&!!j.data;(0,f.M)({title:k.data?S("pageTitle",{video:null===(t=k.data)||void 0===t?void 0:t.name}):null});var U=Object.assign(Object.assign({},N),O);return n.createElement("div",{className:"px-3"},n.createElement(p.j,{tabs:(0,y.aq)(null===(r=k.data)||void 0===r?void 0:r.id,"results",U),video:k.data,dateRangeAppLinkParams:O,share:Object.assign(Object.assign({},b.G6),{objectId:null===(i=k.data)||void 0===i?void 0:i.id}),yearGroups:[],isDemo:!0}),n.createElement(h.R,{interactiveMetadata:k.data,viewStudentResults:function(e,t,r){a.Q.C$.trigger({application:g.O.MY_SHARES,action:v.e.MyShares.INTERACTIVE_STUDENT_RESULTS_DEMO,params:{studentId:e.id,interactiveMetadataId:t,interactionId:r,sessionId:e.sessionId}})},interactive:A.data,results:j.data,filterBy:e.filterBy,sortBy:e.sortBy,isFetching:j.isFetching,anonymiseUsers:C,hasDataLoaded:M,config:R.data}))}}}]);
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3615],{39157:(e,t,r)=>{r.d(t,{HI:()=>m,R6:()=>s,Rt:()=>v,UU:()=>d,Zs:()=>u,nq:()=>f});var n=r(75896),a=r(94892),i=r(28972),o=r(8246),l=r(83140),c=r(80845);function s(e,t,r){var i={markingRequired:[],lowScore:[],highScore:[],completed:[],notCompleted:[]},o=(0,c.Q)(e),l=new Set(o.map(function(e){return e.id}));t.students.forEach(function(t){var o=Object.assign(Object.assign({},t),{summary:v(e,t)});o.summary.awaitingMarking?i.markingRequired.push(o):n.m.last(t.results).attempts.filter(function(e){var t;return!!l.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)}).length===l.size?(i.completed.push(o),o.summary.percentCorrect>=((null==r?void 0:r.HIGH)||a.i.HIGH)&&i.highScore.push(o),o.summary.percentCorrect<((null==r?void 0:r.MODERATE)||a.i.MODERATE)&&i.lowScore.push(o)):i.notCompleted.push(o)});var s=n.m.sortBy(i.lowScore,function(e){return e.summary.percentCorrect}),u=n.m.sortBy(i.highScore,function(e){return-e.summary.percentCorrect});return Object.assign(Object.assign({},i),{lowScore:s,highScore:u})}function u(e,t){return(0,c.Wn)(e).find(function(e){return e.id.toString()===t.toString()})}function d(e){return"".concat(e.questionId,":").concat(e.resultId)}function m(e,t,r){var n=(0,c.j_)(t),a=(0,c.f6)(e,n);return(null==a?void 0:a.answers.every(function(e){var t;return(null===(t=r[d(e)])||void 0===t?void 0:t.status)===o.N.Correct}))?o.N.Correct:(null==a?void 0:a.answers.every(function(e){var t;return(null===(t=r[d(e)])||void 0===t?void 0:t.status)===o.N.Incorrect}))?o.N.Incorrect:void 0}function f(e,t){var r=t.students.length,n=0,a=0,o=0,s=0,u=0;return t.students.forEach(function(t){var r=(0,c.j_)(t);if(r){u+=t.results.length;var d=l.A.isInteractionCorrect(e,r);d===i.w.Correct&&n++,d===i.w.UnAnswered&&o++,d===i.w.AwaitingMarking&&s++,d!==i.w.UnAnswered&&a++}}),{percentCorrect:r>0?n/r:0,correct:n,answered:a,unanswered:o,awaitingMarking:s,attempts:u}}function v(e,t){var r=(0,c.j_)(t),n=(0,c.Q)(e),a=n.length,o=0,s=0;n.forEach(function(e){var t=l.A.isInteractionCorrect(e,r);t===i.w.Correct&&o++,t===i.w.AwaitingMarking&&s++});var u=a>0?o/a:0,d=new Set(n.map(function(e){return e.id})),m=r.attempts.filter(function(e){var t;return!!d.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)}).length;return{answered:m,attempts:t.results.length,unanswered:a-m,percentCorrect:u,correct:o,awaitingMarking:s}}},6748:(e,t,r)=>{r.d(t,{i:()=>I});var n=r(32735),a=r(42648),i=r(35509),o=r(91967),l=r(15611),c=r(17808),s=r(1287),u=r(83914),d=r(90281),m={opacity:"0.8",cursor:"grabbing"},f=r(35223);function v(e){return function(e){if(Array.isArray(e))return p(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(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 g(e,t){if(e){if("string"==typeof e)return p(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function h(e){var t,r,n,a;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(r=e.current)||void 0===r?void 0:r.scrollLeft)+1<(null===(n=e.current)||void 0===n?void 0:n.scrollWidth)-(null===(a=e.current)||void 0===a?void 0:a.clientWidth)}}const b={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var w=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function S(e){var t,r;return e.column.canSort?n.createElement("span",{className:"".concat(b.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(r=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==r?r:"")},n.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):n.createElement(n.Fragment,null)}function E(e){var t,r,a,u,d,f,g,p,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:(g=e.initialSelectedRowIds,p={},g.forEach(function(e){return p[e]=!0}),p)}),e.getRowId&&(h.getRowId=e.getRowId);var b,w=i.useTable.apply(void 0,[h].concat((b=function(e){var t=[i.useSortBy,i.useRowSelect,"flex"===e.layout?i.useFlexLayout:i.useBlockLayout];return e.allowFiltering&&(t=[].concat(v(t),[i.useFilters])),e.allowGlobalFiltering&&(t=[].concat(v(t),[i.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return y(e)}(b)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(b)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?y(e,t):void 0}}(b)||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.")}()))),E=w.getTableProps,I=w.getTableBodyProps,C=w.headerGroups,R=w.rows,k=w.prepareRow,A=w.toggleAllRowsSelected,N=w.setGlobalFilter,O=w.setHiddenColumns,j=w.state.sortBy;function M(){return!R.length&&e.emptyState?e.emptyState:R.map(function(t){k(t);var r=function(t){var r,n,a,i,l,c=o.q.isFunction(null===(r=e.theme)||void 0===r?void 0:r.row)?e.theme.row(t):null!==(a=null===(n=e.theme)||void 0===n?void 0:n.row)&&void 0!==a?a:"";return t.isSelected&&(null===(i=e.theme)||void 0===i?void 0:i.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),a=!!e.getRowAppLink&&e.getRowAppLink(t);function i(){e.onSelectRow&&(e.allowSelectMultipleRows||A(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,o){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,o);return a?n.createElement("div",{role:"row",key:t.id},n.createElement(l.F,Object.assign({},e,c,{className:r,appLink:a}),U(t))):n.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:r,onClick:i}),U(t))}var u=t.getRowProps();return e.enableSortableRows?n.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:n.forwardRef(function(e,t){return c(e,t)})}):c(u)})}function U(t){return t.cells.map(function(r){var a=function(t,r){var n,a,i="";return"function"==typeof(null===(n=e.theme)||void 0===n?void 0:n.cell)&&(i=e.theme.cell(t,r)),"string"==typeof(null===(a=e.theme)||void 0===a?void 0:a.cell)&&(i=e.theme.cell),e.onSelectCell&&(i+=" cursor-pointer"),i}(t,r);return n.createElement("div",Object.assign({key:r.column.id},r.getCellProps(),{className:a,onClick:function(){e.onSelectCell&&e.onSelectCell(r)}}),r.render("Cell"))})}return n.useEffect(function(){e.onSort&&e.onSort(j)},[j]),n.useEffect(function(){e.globalFilter&&N(e.globalFilter)},[e.globalFilter]),n.useEffect(function(){e.hiddenColumns&&O(e.hiddenColumns)},[e.hiddenColumns&&e.hiddenColumns.length]),n.createElement("div",Object.assign({},E(),{className:null!==(r=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==r?r:""}),n.createElement("div",{className:null!==(u=null===(a=e.theme)||void 0===a?void 0:a.header)&&void 0!==u?u:""},C.map(function(t){var r,a;return n.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(a=null===(r=e.theme)||void 0===r?void 0:r.headerRow)&&void 0!==a?a:""}),t.headers.map(function(t){var r,a;return n.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(a=null===(r=e.theme)||void 0===r?void 0:r.headerCell)&&void 0!==a?a:""}),t.render("Header",{renderSortIndicator:function(){return n.createElement(S,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&n.createElement(S,{column:t,theme:e.theme}))}))})),n.createElement("div",Object.assign({},I(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?n.createElement(c.Q,{ids:R.map(function(e){return e.original.id}),getDragOverlay:function(t){var r,a,i=R.findIndex(function(e){return e.original.id===t}),o=R[i];return n.createElement("div",Object.assign({},e,{className:(r=e.theme,a="g-0 ",r&&(a+=r.row),a),style:m}),U(o))},onSortEnd:e.onSortingRowsEnd},M()):M()))}function I(e){var t=e.enableSlider,r=e.scrollIncrement,i=e.scrollable,l=w(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,r=n.useRef(null),a=(e=n.useState(h(r)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,l=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||g(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.")}()),i=a[0],l=a[1],c=o.q.throttle(function(){l(h(r))},200),s=n.useCallback(function(e){var t;r.current&&(null===(t=r.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(l(h(r)),e.addEventListener("scroll",c)),r.current=e},[]);return n.useEffect(function(){(null==r?void 0:r.current)&&l(h(r))},[r]),{ref:s,scrollState:i,scroll:function(e){var t;null===(t=r.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=c.ref,u=c.scrollState,m=c.scroll;if(i)return n.createElement(a.$B,{renderTrackHorizontal:function(){return n.createElement("div",{className:b.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},n.createElement(E,Object.assign({},l)));if(!t)return n.createElement(E,Object.assign({},l));function f(e){m(r*("right"===e?1:-1))}return n.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},n.createElement("div",{className:"px-4"},n.createElement("div",{className:"position-relative"},n.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),n.createElement("div",{className:"".concat(b.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},n.createElement(E,Object.assign({},l))),n.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}I.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},28972:(e,t,r)=>{var n;r.d(t,{w:()=>n}),function(e){e[e.Correct=0]="Correct",e[e.Incorrect=1]="Incorrect",e[e.AwaitingMarking=2]="AwaitingMarking",e[e.Answered=3]="Answered",e[e.UnAnswered=4]="UnAnswered",e[e.NotApplicable=5]="NotApplicable"}(n||(n={}))},8246:(e,t,r)=>{var n;r.d(t,{N:()=>n}),function(e){e[e.Incorrect=0]="Incorrect",e[e.Correct=1]="Correct",e[e.PendingReview=2]="PendingReview"}(n||(n={}))},54405:(e,t,r)=>{r.d(t,{X:()=>n});var n={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},83140:(e,t,r)=>{r.d(t,{A:()=>g});var n=r(28972),a=r(8246),i=r(38129);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function l(e,t,r){return(t=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(){return n.w.NotApplicable}function s(e,t){var r=e.actionableItems.filter(function(e){return e.isCorrect});return r.every(function(e){return!t(e.id)})?n.w.UnAnswered:r.every(function(e){var r;return e.name.trim().toLowerCase()===(null===(r=t(e.id))||void 0===r?void 0:r.trim().toLowerCase())})?n.w.Correct:n.w.Incorrect}function u(e,t){return e.actionableItems.every(function(e){return!t(e.id)})?n.w.UnAnswered:e.actionableItems.filter(function(e){return e.isCorrect}).every(function(e){var r,n=t(e.id);return(null==n?void 0:n.toString())===(null===(r=e.id)||void 0===r?void 0:r.toString())||n===e.name})?n.w.Correct:n.w.Incorrect}function d(e,t){return function(r){var n=null==t?void 0:t.attempts.find(function(t){return t.id===e.id});return null==n?void 0:n.answers.find(function(e){return e.id===r})}}function m(e,t){var r=d(e,t);return u(e,function(e){var t=r(e);return null==t?void 0:t.text})}function f(e,t){return function(e,t){var r;return e.actionableItems.forEach(function(e){var i=t(e.id);r=i?i.status!==a.N.Correct?i.status!==a.N.Incorrect?n.w.AwaitingMarking:n.w.Incorrect:n.w.Correct:n.w.UnAnswered}),r}(e,d(e,t))}var v=l(l(l(l(l(l(l({},i.Z9.Annotation,c),i.Z9.Image,c),i.Z9.MissingWord,function(e,t){var r=d(e,t);return s(e,function(e){var t=r(e);return null==t?void 0:t.text})}),i.Z9.MultipleChoice,m),i.Z9.ShortAnswer,f),i.Z9.TrueOrFalse,m),i.Z9.Illustration,f),g={notApplicable:c,awaitingMarking:function(){return n.w.AwaitingMarking},isMissingWordCorrect:s,isMultipleChoiceCorrect:u,isInteractionCorrect:function(e,t){return(0,v[e.typeId])(e,t)}}},78057:(e,t,r)=>{r.d(t,{R:()=>C});var n=r(32735),a=r(75896),i=r(23481),o=r(97958),l=i.T.encloseNamespace("shared.studentResultsTable");function c(e){return"not_completed"===e.filter?n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.notCompletedImageUrl,size:"small"}),n.createElement(o.u.Info,null,l("notCompletedDescription"))):"marking_required"===e.filter?n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.markingRequiredImageUrl,size:"small"}),n.createElement(o.u.Info,null,l("markingRequiredDescription"))):"helping_hand"===e.filter?n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.helpingHandImageUrl,size:"small"}),n.createElement(o.u.Info,null,l("helpingHandDescription"))):n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.emptyStateImageUrl,size:"small"}),n.createElement(o.u.Heading,null,l("emptyStateHeading")),n.createElement(o.u.Info,null,l("emptyStateDescription")))}var s=r(83345),u="shared.studentResultsTable";function d(e){function t(t){var r=e.filter===t?null:t;e.setFilter(r)}function r(t){return"btn btn-outline-dark ".concat(function(t){return e.filter===t}(t)?"bg-dark text-white":"")}return n.createElement("div",{className:"d-flex align-items-center mb-3"},n.createElement("p",{className:"h6 mb-0"},n.createElement(s.x,{namespace:u,phrase:"filters"})),n.createElement("div",{className:"d-flex border-start ps-3 ms-3 gap-2"},n.createElement("button",{className:r("not_completed"),onClick:function(){return t("not_completed")}},n.createElement(s.x,{namespace:u,phrase:"notCompletedFilter"})),n.createElement("button",{className:r("marking_required"),onClick:function(){return t("marking_required")}},n.createElement(s.x,{namespace:u,phrase:"markingRequiredFilter"})),n.createElement("button",{className:r("helping_hand"),onClick:function(){return t("helping_hand")}},n.createElement(s.x,{namespace:u,phrase:"helpingHandFilter"}))))}var m=r(97364),f=r(6748),v=r(84806),g=r(19912);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,l=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}(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.")}()}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var b={table:"".concat(g.Z.fixedTable," bg-white rounded-start border border-end-0"),header:"".concat(g.Z.header," border-bottom"),headerRow:"h-100",headerCell:"d-flex align-items-center justify-content-start",row:g.Z.row},y={header:"".concat(g.Z.header," fw-bold"),headerRow:"h-100",headerCell:"".concat(g.Z.interactionHeaderCellOuter," bg-white border-bottom"),row:"".concat(g.Z.row," ").concat(g.Z.resultsRow),cell:g.Z.resultsCellOuter};function w(e){var t,r=p(n.useState((0,m.P)(e.sortBy,"score")),2),i=r[0],o=r[1],l=p(n.useState(e.filterBy),2),s=l[0],u=l[1],h=n.useRef(null),w=(0,v.R7)(e.results,e.anonymiseUsers,null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl),S=(0,v.lE)(e.interactive,e.interactiveMetadata,e.results,function(e){(0,v.bB)(h.current,e)},e.refreshTable),E=(0,v.Fx)(e.interactive,e.results,e.refreshTable,e.anonymiseUsers,a.m.first(i),s);function I(e){(0,v.l8)(h.current,e)}return n.createElement("div",null,!!e.results.students.length&&n.createElement(d,{filter:s,setFilter:u}),!E.length&&n.createElement(c,{emptyStateImageUrl:e.emptyStateImageUrl,helpingHandImageUrl:e.helpingHandImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,notCompletedImageUrl:e.notCompletedImageUrl,filter:s}),!!E.length&&n.createElement("div",{ref:h,className:"d-flex".concat(E.length?" ".concat(g.Z.hasResults):"")},n.createElement(f.i,{columns:w,data:E,theme:b,onSelectRow:function(t){var r=t.original;e.viewStudentResults(r.user,e.interactiveMetadata.id)},onRowMouseOver:function(e){return I(e.index)},onRowMouseLeave:function(){return I()},enableSort:!0,manualSort:!0,onSort:o,initialSortBy:i}),n.createElement(f.i,{columns:S,data:E,theme:y,enableSlider:!0,scrollIncrement:8*v.Ju,onSelectCell:function(t){e.viewStudentResults(t.row.original.user,e.interactiveMetadata.id,t.column.id)},scrollContainerClassName:"rounded-end border border-start-0 border"})))}var S=r(99742);const E={partialInsights:"qSeTe"};function I(){return n.createElement("div",null,n.createElement("div",{className:"d-flex align-items-center mb-3"},n.createElement("p",{className:"h6 px-4 mb-0 me-4 partial-loading-background"}," "),n.createElement("div",{className:"row g-2 w-50"},n.createElement("div",{className:"col-3"},n.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),n.createElement("div",{className:"col-3"},n.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),n.createElement("div",{className:"col-3"},n.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")))),n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-12"},n.createElement("div",{className:"".concat(E.partialInsights," rounded partial-loading-background")}))))}function C(e){return n.createElement(n.Fragment,null,!e.hasDataLoaded&&n.createElement(I,null),e.hasDataLoaded&&n.createElement(w,{interactive:e.interactive,interactiveMetadata:e.interactiveMetadata,results:e.results,refreshTable:e.isFetching,viewStudentResults:e.viewStudentResults,emptyStateImageUrl:S.W.Insights.NO_RESPONSES,sortBy:e.sortBy,filterBy:e.filterBy,anonymiseUsers:e.anonymiseUsers,notCompletedImageUrl:S.W.Insights.JIGSAW,markingRequiredImageUrl:S.W.Insights.CLIPBOARD,helpingHandImageUrl:S.W.Insights.SPEECH_BUBBLE_HEART,config:e.config}))}},9566:(e,t,r)=>{r.d(t,{G6:()=>m,GJ:()=>f,VE:()=>g});var n=r(23481),a=r(110),i=r(33518),o=r(2510),l=r(4594),c=r(35223),s=r(14070),u=r(97291),d=n.T.encloseNamespace("myShares.demoInsights"),m={type:o.y.Link,privacy:i.e.JustMySchool,objectId:"0",objectTypeId:l.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},f={share:m,sharedObject:null,shareRecipients:null,dateShared:a.O.subtract(new Date,7,"days").toISOString()},v={application:u.O.MY_SHARES,action:s.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},g={svgName:c.vn.Analytics,label:d("demoInsights"),appLink:v,group:"insights",className:"btn btn-outline-dark"}},82433:(e,t,r)=>{r.r(t),r.d(t,{InteractiveInsightsStudentsDemoView:()=>E});var n=r(32735),a=r(81886),i=r(23481),o=r(2948),l=r(20354),c=r(26025),s=r(38143),u=r(39151),d=r(54405),m=r(93322),f=r(79612),v=r(14070),g=r(97291),p=r(63619),h=r(78057),b=r(9566),y=r(10447);function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var S=i.T.encloseNamespace("insights.interactiveInsightsStudents");function E(e){var t,r,i,E,I,C=(E=(0,o.D)(s.g.ANONYMISE_USERS),I=1,function(e){if(Array.isArray(e))return e}(E)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,l=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(E,I)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?w(e,t):void 0}}(E,I)||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];(0,m.F)();var R=l.a.useBasicFetch(u.L.config()),k=l.a.useBasicFetch(d.X.interactiveMetadata()),A=l.a.useBasicFetch(d.X.interactive()),N=c.B.getAudienceAppLinkParams(),O=c.B.getDateRangeAppLinkParams(),j=l.a.useBasicFetch(d.X.interactiveResults()),M=A.data&&k.data&&!!j.data;(0,f.M)({title:k.data?S("pageTitle",{video:null===(t=k.data)||void 0===t?void 0:t.name}):null});var U=Object.assign(Object.assign({},N),O);return n.createElement("div",{className:"px-3"},n.createElement(p.j,{tabs:(0,y.aq)(null===(r=k.data)||void 0===r?void 0:r.id,"results",U),video:k.data,dateRangeAppLinkParams:O,share:Object.assign(Object.assign({},b.G6),{objectId:null===(i=k.data)||void 0===i?void 0:i.id}),yearGroups:[],markingRequired:!0,isDemo:!0}),n.createElement(h.R,{interactiveMetadata:k.data,viewStudentResults:function(e,t,r){a.Q.C$.trigger({application:g.O.MY_SHARES,action:v.e.MyShares.INTERACTIVE_STUDENT_RESULTS_DEMO,params:{studentId:e.id,interactiveMetadataId:t,interactionId:r,sessionId:e.sessionId}})},interactive:A.data,results:j.data,filterBy:e.filterBy,sortBy:e.sortBy,isFetching:j.isFetching,anonymiseUsers:C,hasDataLoaded:M,config:R.data}))}}}]);
|
|
2
|
+
//# sourceMappingURL=3615-a0da361aa5-lite.chunk.js.map
|