@clickview/lite 0.84.0 → 0.84.1-rc.1
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 +2 -2
- package/dist/css/4945-lite-72ae59fcab.chunk.css +2 -0
- package/dist/css/8852-lite-84d6357a79.chunk.css +1 -0
- package/dist/css/{lite-app-b4540a3be1.css → lite-app-084c45f90e.css} +2 -0
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1202-d96ad80884-lite.chunk.js → 1202-5473d9962d-lite.chunk.js} +2 -2
- package/dist/scripts/{1202-d96ad80884-lite.chunk.js.map → 1202-5473d9962d-lite.chunk.js.map} +1 -1
- package/dist/scripts/171-acb1ef0ae4-lite.chunk.js +2 -0
- package/dist/scripts/171-acb1ef0ae4-lite.chunk.js.map +1 -0
- package/dist/scripts/1726-b08dde1407-lite.chunk.js +2 -0
- package/dist/scripts/1726-b08dde1407-lite.chunk.js.map +1 -0
- package/dist/scripts/1912-52e57d9f16-lite.chunk.js +2 -0
- package/dist/scripts/1912-52e57d9f16-lite.chunk.js.map +1 -0
- package/dist/scripts/{289-669c0c8222-lite.chunk.js → 289-190caa6455-lite.chunk.js} +2 -2
- package/dist/scripts/{289-669c0c8222-lite.chunk.js.map → 289-190caa6455-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3249-0b55dec380-lite.chunk.js → 3249-08a22f8aaf-lite.chunk.js} +2 -2
- package/dist/scripts/3249-08a22f8aaf-lite.chunk.js.map +1 -0
- package/dist/scripts/3840-df2873e349-lite.chunk.js +2 -0
- package/dist/scripts/3840-df2873e349-lite.chunk.js.map +1 -0
- package/dist/scripts/4006-5078eb2c01-lite.chunk.js +3 -0
- package/dist/scripts/4006-5078eb2c01-lite.chunk.js.map +1 -0
- package/dist/scripts/4525-2ade147f5d-lite.chunk.js +2 -0
- package/dist/scripts/4525-2ade147f5d-lite.chunk.js.map +1 -0
- package/dist/scripts/4945-fbbb21cf54-lite.chunk.js +2 -0
- package/dist/scripts/4945-fbbb21cf54-lite.chunk.js.map +1 -0
- package/dist/scripts/4985-6bdacf82c1-lite.chunk.js +2 -0
- package/dist/scripts/4985-6bdacf82c1-lite.chunk.js.map +1 -0
- package/dist/scripts/5002-c0f45922c6-lite.chunk.js +2 -0
- package/dist/scripts/5002-c0f45922c6-lite.chunk.js.map +1 -0
- package/dist/scripts/516-94eeca32e7-lite.chunk.js +2 -0
- package/dist/scripts/516-94eeca32e7-lite.chunk.js.map +1 -0
- package/dist/scripts/5270-55334d53e9-lite.chunk.js +2 -0
- package/dist/scripts/5270-55334d53e9-lite.chunk.js.map +1 -0
- package/dist/scripts/5579-7d9081e134-lite.chunk.js +2 -0
- package/dist/scripts/{5579-a9c152057f-lite.chunk.js.map → 5579-7d9081e134-lite.chunk.js.map} +1 -1
- package/dist/scripts/5712-37a97adc65-lite.chunk.js +2 -0
- package/dist/scripts/5712-37a97adc65-lite.chunk.js.map +1 -0
- package/dist/scripts/639-0bf7cc53f9-lite.chunk.js +2 -0
- package/dist/scripts/639-0bf7cc53f9-lite.chunk.js.map +1 -0
- package/dist/scripts/6909-b5717e92e8-lite.chunk.js +2 -0
- package/dist/scripts/6909-b5717e92e8-lite.chunk.js.map +1 -0
- package/dist/scripts/7459-c1882c6f0d-lite.chunk.js +3 -0
- package/dist/scripts/7459-c1882c6f0d-lite.chunk.js.map +1 -0
- package/dist/scripts/7604-5d2ba346e2-lite.chunk.js +3 -0
- package/dist/scripts/7604-5d2ba346e2-lite.chunk.js.map +1 -0
- package/dist/scripts/{7617-9d34c841e6-lite.chunk.js → 7617-899a1d0cb1-lite.chunk.js} +2 -2
- package/dist/scripts/7617-899a1d0cb1-lite.chunk.js.map +1 -0
- package/dist/scripts/7742-95097c976d-lite.chunk.js +2 -0
- package/dist/scripts/7742-95097c976d-lite.chunk.js.map +1 -0
- package/dist/scripts/{7843-f6033528ce-lite.chunk.js → 7843-fc9ddb3b52-lite.chunk.js} +2 -2
- package/dist/scripts/7843-fc9ddb3b52-lite.chunk.js.map +1 -0
- package/dist/scripts/{7867-14c692e69c-lite.chunk.js → 7867-589c7bd788-lite.chunk.js} +3 -3
- package/dist/scripts/7867-589c7bd788-lite.chunk.js.map +1 -0
- package/dist/scripts/{787-dcb3a0a26c-lite.chunk.js → 787-5c7976e8cb-lite.chunk.js} +2 -2
- package/dist/scripts/{787-dcb3a0a26c-lite.chunk.js.map → 787-5c7976e8cb-lite.chunk.js.map} +1 -1
- package/dist/scripts/8056-a3d8fa8728-lite.chunk.js +2 -0
- package/dist/scripts/8056-a3d8fa8728-lite.chunk.js.map +1 -0
- package/dist/scripts/{8672-6967ce8a23-lite.chunk.js → 8672-5637204ae3-lite.chunk.js} +2 -2
- package/dist/scripts/{8672-6967ce8a23-lite.chunk.js.map → 8672-5637204ae3-lite.chunk.js.map} +1 -1
- package/dist/scripts/8852-c39595da59-lite.chunk.js +2 -0
- package/dist/scripts/8852-c39595da59-lite.chunk.js.map +1 -0
- package/dist/scripts/8944-022dbd6a0b-lite.chunk.js +2 -0
- package/dist/scripts/8944-022dbd6a0b-lite.chunk.js.map +1 -0
- package/dist/scripts/9742-c839ec5abb-lite.chunk.js +2 -0
- package/dist/scripts/9742-c839ec5abb-lite.chunk.js.map +1 -0
- package/dist/scripts/{8133-ffcff3b7fc-lite.chunk.js → 9803-9a666cfdef-lite.chunk.js} +3 -3
- package/dist/scripts/9803-9a666cfdef-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-375332cf3f.min.js +3 -0
- package/dist/scripts/{bundle-2bbba2aa8b.min.js.map → bundle-375332cf3f.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/171-36c7520c9c-lite.chunk.js +0 -2
- package/dist/scripts/171-36c7520c9c-lite.chunk.js.map +0 -1
- package/dist/scripts/1726-c79cf77a51-lite.chunk.js +0 -2
- package/dist/scripts/1726-c79cf77a51-lite.chunk.js.map +0 -1
- package/dist/scripts/1912-1f78dc635a-lite.chunk.js +0 -2
- package/dist/scripts/1912-1f78dc635a-lite.chunk.js.map +0 -1
- package/dist/scripts/2074-39b86b9a22-lite.chunk.js +0 -2
- package/dist/scripts/2074-39b86b9a22-lite.chunk.js.map +0 -1
- package/dist/scripts/3249-0b55dec380-lite.chunk.js.map +0 -1
- package/dist/scripts/3840-98c79fc0d8-lite.chunk.js +0 -2
- package/dist/scripts/3840-98c79fc0d8-lite.chunk.js.map +0 -1
- package/dist/scripts/3893-2856933742-lite.chunk.js +0 -2
- package/dist/scripts/3893-2856933742-lite.chunk.js.map +0 -1
- package/dist/scripts/4006-9dfe9cec1b-lite.chunk.js +0 -3
- package/dist/scripts/4006-9dfe9cec1b-lite.chunk.js.map +0 -1
- package/dist/scripts/4985-bdfa839f8f-lite.chunk.js +0 -2
- package/dist/scripts/4985-bdfa839f8f-lite.chunk.js.map +0 -1
- package/dist/scripts/5002-7514146621-lite.chunk.js +0 -2
- package/dist/scripts/5002-7514146621-lite.chunk.js.map +0 -1
- package/dist/scripts/5270-d407e1ae84-lite.chunk.js +0 -2
- package/dist/scripts/5270-d407e1ae84-lite.chunk.js.map +0 -1
- package/dist/scripts/5579-a9c152057f-lite.chunk.js +0 -2
- package/dist/scripts/5712-e784cfe89c-lite.chunk.js +0 -2
- package/dist/scripts/5712-e784cfe89c-lite.chunk.js.map +0 -1
- package/dist/scripts/6909-a9b8930e37-lite.chunk.js +0 -2
- package/dist/scripts/6909-a9b8930e37-lite.chunk.js.map +0 -1
- package/dist/scripts/7401-833bc4a088-lite.chunk.js +0 -2
- package/dist/scripts/7401-833bc4a088-lite.chunk.js.map +0 -1
- package/dist/scripts/7604-f664281904-lite.chunk.js +0 -3
- package/dist/scripts/7604-f664281904-lite.chunk.js.map +0 -1
- package/dist/scripts/7617-9d34c841e6-lite.chunk.js.map +0 -1
- package/dist/scripts/7742-342db3ce4f-lite.chunk.js +0 -2
- package/dist/scripts/7742-342db3ce4f-lite.chunk.js.map +0 -1
- package/dist/scripts/7843-f6033528ce-lite.chunk.js.map +0 -1
- package/dist/scripts/7867-14c692e69c-lite.chunk.js.map +0 -1
- package/dist/scripts/8056-eec7c2fda0-lite.chunk.js +0 -2
- package/dist/scripts/8056-eec7c2fda0-lite.chunk.js.map +0 -1
- package/dist/scripts/8133-ffcff3b7fc-lite.chunk.js.map +0 -1
- package/dist/scripts/8364-ff63447d36-lite.chunk.js +0 -3
- package/dist/scripts/8364-ff63447d36-lite.chunk.js.map +0 -1
- package/dist/scripts/8944-b56c3e61fc-lite.chunk.js +0 -2
- package/dist/scripts/8944-b56c3e61fc-lite.chunk.js.map +0 -1
- package/dist/scripts/9742-5f99d74bb0-lite.chunk.js +0 -2
- package/dist/scripts/9742-5f99d74bb0-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-2bbba2aa8b.min.js +0 -3
- /package/dist/css/{2074-lite-ac8da6c78b.chunk.css → 4525-lite-ac8da6c78b.chunk.css} +0 -0
- /package/dist/css/{8364-lite-db31e36b79.chunk.css → 7459-lite-db31e36b79.chunk.css} +0 -0
- /package/dist/scripts/{4006-9dfe9cec1b-lite.chunk.js.LICENSE.txt → 4006-5078eb2c01-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7604-f664281904-lite.chunk.js.LICENSE.txt → 7459-c1882c6f0d-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7867-14c692e69c-lite.chunk.js.LICENSE.txt → 7604-5d2ba346e2-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8133-ffcff3b7fc-lite.chunk.js.LICENSE.txt → 7867-589c7bd788-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8364-ff63447d36-lite.chunk.js.LICENSE.txt → 9803-9a666cfdef-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-2bbba2aa8b.min.js.LICENSE.txt → bundle-375332cf3f.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7604-f664281904-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/components/delete-share-content/DeleteShareContent.tsx","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/utils/get-share-privacy-config/getSharePrivacyConfig.ts","file:///app/packages/libs/shared/src/apps/share-v2/views/delete-share-link-confirmation-view/DeleteShareLinkConfirmationView.tsx","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/views/share/components/share-integrations/ShareIntegrationsHelper.ts","file:///app/packages/libs/shared/src/components/multistep-popup/MultiStepPopup.tsx","file:///app/packages/libs/shared/src/components/new-badge/NewBadge.tsx","file:///app/packages/libs/shared/src/apps/share-v2/views/copy-embed-view/CopyEmbedView.tsx","file:///app/packages/libs/shared/src/apps/share-v2/components/share-integrations/share-integrations.scss","file:///app/packages/libs/shared/src/apps/share-v2/components/share-integrations/ShareIntegrations.tsx","file:///app/packages/libs/shared/src/apps/share-v2/components/share-permanent-link-delete/SharePermanentLinkDelete.tsx","file:///app/packages/libs/shared/src/apps/share-v2/components/share-permanent-link-setting/SharePermanentLinkSetting.tsx","file:///app/packages/libs/shared/src/apps/share-v2/components/share-permanent-link-actions/SharePermanentLinkActions.tsx","file:///app/packages/libs/shared/src/hooks/useCopyToClipboard.ts","file:///app/packages/libs/shared/src/apps/share-v2/components/assign-prompt/assign-prompt.scss","file:///app/packages/libs/shared/src/apps/share-v2/components/assign-prompt/AssignPrompt.tsx","file:///app/packages/libs/shared/src/apps/share-v2/views/create-share-view/create-share.scss","file:///app/packages/libs/shared/src/apps/share-v2/views/create-share-view/CreateShareView.tsx","file:///app/packages/libs/shared/src/apps/share-v2/views/create-share-view/hooks/useCreateShareData.ts","file:///app/packages/libs/shared/src/apps/share-v2/components/share-permanent-link/SharePermanentLink.tsx","file:///app/packages/libs/shared/src/apps/share-v2/views/main-share-view/MainShareView.tsx","file:///app/packages/libs/shared/src/apps/share-v2/views/share-settings-view/ShareSettingsView.tsx","file:///app/packages/libs/shared/src/apps/share-v2/views/share-view/ShareView.tsx","file:///app/packages/projects/lite/src/apps/share/views/share-view/ShareView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nconst namespace = 'sharev2.deleteShareContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteShareContentProps {\n loading: boolean;\n phrases: {\n leadingSentence: string;\n bulletPoints: string[];\n acknowledgement: string;\n deleteButton: string;\n backButton?: string;\n };\n onDelete: () => void;\n onBack?: () => void;\n}\n\nexport function DeleteShareContent(props: DeleteShareContentProps) {\n const [ ack, setAck ] = React.useState(false);\n\n function onDelete() {\n if (!ack || props.loading)\n return;\n\n props.onDelete();\n }\n\n return (\n <div className='d-flex flex-column gap-3'>\n <p className='m-0'>{props.phrases.leadingSentence}</p>\n <ul className='m-0'>\n {props.phrases.bulletPoints.map((phrase, index) => (\n <li key={index}>\n {phrase}\n </li>\n ))}\n </ul>\n <Checkbox\n id='ack'\n checked={ack}\n onChange={e => setAck(e.target.checked)}\n label={props.phrases.acknowledgement}\n />\n <PopupButtons>\n {props.onBack && (\n <PopupButtons.Cancel\n onClick={props.onBack}\n text={props.phrases.backButton ?? getPhrase('backButton')}\n variant='link'\n />\n )}\n <PopupButtons.Submit\n onClick={onDelete}\n text={props.phrases.deleteButton}\n variant='danger'\n disabled={!ack || props.loading}\n showSpinner={props.loading}\n />\n </PopupButtons>\n </div>\n );\n}","// 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 { 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 React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EventVersion, LocationContext } from 'libs/analytics/interfaces';\n\nimport { DeleteShareContent } from 'libs/shared/apps/share-v2/components/delete-share-content/DeleteShareContent';\nimport { useShareLinkActions } from 'libs/shared/apps/share-v2/hooks/useShareLinkActions';\nimport { useShareLinkData } from 'libs/shared/apps/share-v2/hooks/useShareLinkData';\nimport { getShareEventLogger } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nconst namespace = 'sharev2.deleteShareLinkConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteShareLinkConfirmationViewProps extends MultiStepPopupViewProps {\n entityId: string;\n entityType: SharableEntityType;\n previousAppLink?: Core.AppLink;\n goToSettingsStep?: () => void;\n}\n\nexport function DeleteShareLinkConfirmationView(props: DeleteShareLinkConfirmationViewProps) {\n const alerts = useAlerts();\n\n const [ loading, setLoading ] = React.useState(false);\n\n const { share, entity } = useShareLinkData({\n entityId: props.entityId,\n entityType: props.entityType\n });\n\n const { deleteShareLink } = useShareLinkActions({\n entityId: props.entityId\n });\n\n const { log } = getShareEventLogger({\n data: {\n entity: {\n id: props.entityId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n location: LocationContext.Popup,\n eventVersion: EventVersion.V3\n }\n });\n \n function onClickDelete() {\n setLoading(true);\n\n deleteShareLink(share.data?.shareId).then(() => {\n log({\n type: 'delete-share-link',\n share: share.data\n });\n\n setLoading(false);\n alerts.success(getPhrase('deleteSuccess'));\n props.closePopup();\n\n if (props.previousAppLink) {\n AppLinkHelper.trigger(props.previousAppLink);\n }\n }).catch(() => {\n alerts.error(getPhrase('deleteFailed', { name: entity.data.name, escapeText: true }));\n }).finally(() => {\n setLoading(false);\n });\n }\n\n const loaded = !!share.data && !!entity.data;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded || props.loading}\n animation={props.animate}\n >\n <DeleteShareContent\n loading={loading}\n phrases={{\n leadingSentence: getPhrase('intro'),\n bulletPoints: [\n getPhrase('loseAccessInfo'),\n getPhrase('loseAccessUsage')\n ],\n acknowledgement: getPhrase('acknowledgement'),\n backButton: getPhrase('back'),\n deleteButton: getPhrase('delete')\n }}\n onDelete={onClickDelete}\n onBack={props.goToSettingsStep ? props.goToSettingsStep : undefined}\n />\n </Popup>\n );\n}\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 && !!currentUser.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 currentUser\n },\n canEmbed,\n integrations,\n hasStudentExp,\n canAccessSettings,\n hasManageShareLinkSettings,\n hasManageIntegrationsPermission,\n onClickSavePrivacy\n };\n}","import { LocationUtils } from 'libs/common/backbone/core/LocationUtils';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nconst POPUP_FEATURES = 'toolbar=0,location=0,menubar=0,width=600,height=600';\n\n/**\n * ⚠️ Hacky solution warning ⚠️\n * \n * Both Google Classroom and MS Teams provide an SDK to do essentially what this file does.\n * However when using their SDK, we lose control of how the items are displayed on our page.\n * \n * Ed-puzzle seems like it does what we've done here\n * so i've taken a leaf out of their book and taken a similar approach.\n * This puts us at risk of them changing their SDK and our implementation not changing\n * \n * If MS Teams or Google Classroom stop working, this is most likely why. But we should be able\n * to simply find out what their new parameters are and open a popup to the new shape in\n * order to fix any issues \n * \n * High risk, low reward 🤙\n * \n * - Sha\n */\nexport const ShareIntegrationsHelper = {\n launchGoogleClassroom(link: string) {\n const url = UrlHelper.urlBuilder('https://classroom.google.com/share', { link });\n LocationUtils.PageLoad(url, true, POPUP_FEATURES);\n },\n launchMicrosoftTeams(link: string) {\n const url = UrlHelper.urlBuilder('https://teams.microsoft.com/share', {\n href: link,\n preview: false,\n referrer: LocationUtils.GetCurrentHostname(),\n s: Date.now()\n });\n LocationUtils.PageLoad(url, true, POPUP_FEATURES);\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}","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.newBadge';\n\ninterface NewBadgeProps {\n size: 'sm' | 'std';\n invert?: boolean;\n text?: string;\n className?: string;\n}\n\nexport function NewBadge(props: NewBadgeProps): JSX.Element {\n return (\n <span className={classNames(\n 'badge badge-wrapper rounded-pill d-flex justify-content-center',\n 'fw-medium text-blue',\n props.size === 'sm' ? 'badge-sm' : 'badge-std',\n props.invert ? 'bg-white' : 'bg-light-blue',\n props.className\n )}>\n {props.text || <Text phrase='new' namespace={namespace} />}\n </span>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EventVersion, LocationContext } from 'libs/analytics/interfaces';\n\nimport { EmbedDetails } from 'libs/shared/apps/share/components/copy-embed-html/CopyEmbedHtml';\nimport { CopyEmbedHtml } from 'libs/shared/apps/share-v2/components/copy-embed-html/CopyEmbedHtml';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { useShareLinkData } from 'libs/shared/apps/share-v2/hooks/useShareLinkData';\nimport { getShareEventLogger } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { type SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nconst namespace = 'sharev2.copyEmbed';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface CopyEmbedViewProps extends MultiStepPopupViewProps{\n entityId: string;\n entityType: SharableEntityType;\n goToShareLinkStep: () => void;\n showEmbedCopiedText: boolean;\n}\n\nexport function CopyEmbedView(props: CopyEmbedViewProps): JSX.Element {\n const fetch = Flight.useGetFetch();\n const { config, share, entity } = useShareLinkData({\n entityId: props.entityId,\n entityType: props.entityType\n });\n\n const { log } = getShareEventLogger({\n data: {\n entity: {\n id: props.entityId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n location: LocationContext.Popup,\n eventVersion: EventVersion.V3\n }\n });\n\n function onCopy(embedDetails: EmbedDetails) {\n log({\n type: 'copy-embed-html',\n id: props.entityId,\n shareId: share.data.shareId,\n shareType: share.data.type,\n embedDetails\n });\n fetch(ShareRequests.updateDateShared(share.data.shareId));\n }\n \n const loaded = !!share.data\n && !!config.data;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded || props.loading}\n animation={props.animate}\n >\n {loaded &&\n <>\n <div className='mb-3'>\n <CopyEmbedHtml\n analyticsOptions={{}}\n entity={entity.data}\n embedUrl={share.data.link.shortenedEmbedUrl}\n entityId={props.entityId}\n entityType={props.entityType}\n liteUrl={config.data.liteUrl}\n shareId={share.data.shareId}\n onCopy={onCopy}\n showEmbedCopiedText={props.showEmbedCopiedText}\n styling='normal-v2'\n />\n </div>\n <PopupButtons>\n <PopupButtons.Cancel variant='link' onClick={props.goToShareLinkStep} text={getPhrase('back')} />\n </PopupButtons>\n </>\n }\n </Popup>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"integration\":\"pIUQ7\"};","import React from 'react';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\n\nimport styles from './share-integrations.scss';\n\ninterface ShareIntegrationsProps {\n integrations: IntegrationId[];\n onClickGoogleClassroom?: () => void;\n onClickMicrosoftTeams?: () => void;\n googleClassroomIcon: string;\n microsoftTeamsIcon: string;\n}\n\nexport function ShareIntegrations(props: ShareIntegrationsProps): JSX.Element {\n if (!props.integrations.length)\n return <></>;\n\n return (\n <div className='d-flex gap-1 align-items-start'>\n {props.integrations.includes(IntegrationId.GoogleClassroom) &&\n <button\n type='button'\n onClick={props.onClickGoogleClassroom}\n className={styles.integration}\n style={{ backgroundImage: `url(${props.googleClassroomIcon})` }}\n />\n }\n {props.integrations.includes(IntegrationId.MicrosoftTeams) &&\n <button\n type='button'\n onClick={props.onClickMicrosoftTeams}\n className={`${styles.integration} rounded`}\n style={{ backgroundImage: `url(${props.microsoftTeamsIcon})` }}\n />\n }\n </div>\n );\n}\n","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'sharev2.sharePermanentLinkDelete';\n\ninterface SharePermanentLinkDeleteProps {\n onClick: () => void;\n}\n\nexport function SharePermanentLinkDelete(props: SharePermanentLinkDeleteProps): JSX.Element {\n return (\n <div className='d-flex flex-row justify-content-between align-items-center'>\n <DivButton\n onClick={props.onClick}\n className='d-inline-block p-1 pe-2 rounded-1 hover-bg-light-blue'\n >\n <div className='d-flex align-items-center'>\n <div className='me-2'>\n <SvgContainer svgName={cvSvgLibrary.Delete} size={SvgContainerSize.Standard} />\n </div>\n <Text namespace={namespace} phrase='deleteLink' />\n </div>\n </DivButton>\n </div>\n );\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'sharev2.sharePermanentLinkSetting';\n\ninterface SharePermanentLinkSettingProps {\n manageShareLinkSettings: boolean;\n \n onClickEditSettings: () => void;\n}\n\nexport function SharePermanentLinkSetting(props: SharePermanentLinkSettingProps): JSX.Element {\n if (!props.manageShareLinkSettings)\n return null;\n \n return (\n <div className='d-flex flex-row justify-content-between align-items-center'>\n <DivButton\n onClick={props.onClickEditSettings}\n className={`d-inline-block p-1 pe-2 rounded-1 hover-bg-light-blue`}\n >\n <div className='d-flex align-items-center'>\n <div className='me-2'>\n <SvgContainer svgName={cvSvgLibrary.Cog} size={SvgContainerSize.Standard} />\n </div>\n <Text namespace={namespace} phrase='editSettings' />\n </div>\n </DivButton>\n </div>\n );\n}","import React from 'react';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\n\nimport { GetEmbedCode } from '../get-embed-code/GetEmbedCode';\nimport { ShareIntegrations } from '../share-integrations/ShareIntegrations';\nimport { SharePermanentLinkDelete } from '../share-permanent-link-delete/SharePermanentLinkDelete';\nimport { SharePermanentLinkSetting } from '../share-permanent-link-setting/SharePermanentLinkSetting';\n\ninterface SharePermanentLinkActionsProps {\n canEmbed: boolean;\n showIntegrations: boolean;\n canAccessSettings: boolean;\n integrations: IntegrationId[];\n hasManageShareLinkSettings: boolean;\n hideSettings?: boolean;\n goToDeleteStep: () => void;\n goToSettingsStep: () => void;\n onClickGetEmbedCode: () => void;\n onClickGoogleClassroom: () => void;\n onClickMicrosoftTeams: () => void;\n googleClassroomIcon: string;\n microsoftTeamsIcon: string;\n}\n\nexport function SharePermanentLinkActions(props: SharePermanentLinkActionsProps): JSX.Element {\n return (\n <div className='d-flex flex-row justify-content-between gap-2'>\n <div>\n {props.canEmbed &&\n <GetEmbedCode onClickGetEmbedCode={props.onClickGetEmbedCode} minimal />\n }\n\n {!props.hideSettings && (props.canAccessSettings ?\n <SharePermanentLinkSetting\n manageShareLinkSettings={props.hasManageShareLinkSettings}\n onClickEditSettings={props.goToSettingsStep}\n /> :\n <SharePermanentLinkDelete onClick={props.goToDeleteStep} />)}\n </div>\n <div>\n {props.showIntegrations && !!props.integrations.length &&\n <ShareIntegrations\n integrations={props.integrations}\n onClickGoogleClassroom={props.onClickGoogleClassroom}\n onClickMicrosoftTeams={props.onClickMicrosoftTeams}\n googleClassroomIcon={props.googleClassroomIcon}\n microsoftTeamsIcon={props.microsoftTeamsIcon}\n />\n }\n </div>\n </div>\n );\n}","import { useCallback, useState } from 'react';\n\n/**\n * The copied text as `string` or `null` if nothing has been copied yet.\n */\ntype CopiedValue = string | null\n\n/**\n * Function to copy text to the clipboard.\n * @param text - The text to copy to the clipboard.\n * @returns {Promise<boolean>} A promise that resolves to `true` if the text was copied successfully, or `false` otherwise.\n */\ntype CopyFn = (text: string) => Promise<boolean>\n\n/**\n * Custom hook that copies text to the clipboard using the [`Clipboard API`](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API)\n * if available else it falls back to [`document.execCommand`](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand)\n * @see [Documentation](https://usehooks-ts.com/react-hook/use-copy-to-clipboard)\n * @see [Documentation](https://github.com/jaredLunde/react-hook/blob/master/packages/copy/src/index.tsx)\n * @example\n * ```tsx\n * const [copiedText, copyToClipboard] = useCopyToClipboard();\n * const textToCopy = 'Hello, world!';\n *\n * // Attempt to copy text to the clipboard\n * copyToClipboard(textToCopy)\n * .then(success => {\n * if (success) {\n * console.log(`Text \"${textToCopy}\" copied to clipboard successfully.`);\n * } else {\n * console.error('Failed to copy text to clipboard.');\n * }\n * });\n * ```\n */\nexport function useCopyToClipboard(): {copiedText: CopiedValue, copyToClipboard: CopyFn} {\n const [ copiedText, setCopiedText ] = useState<CopiedValue>(null);\n\n const copy: CopyFn = useCallback(async text => {\n // Try to save to clipboard then save it in the state if worked\n try {\n await copyToClipboard(text);\n setCopiedText(text);\n return true;\n } catch (error) {\n console.warn('Copy failed', error);\n setCopiedText(null);\n return false;\n }\n }, []);\n\n return { copiedText, copyToClipboard: copy };\n}\n\nfunction copyToClipboard(text: string) {\n // uses the Async Clipboard API when available. Requires a secure browing\n // context (i.e. HTTPS)\n if (navigator.clipboard) return navigator.clipboard.writeText(text);\n // puts the text to copy into a <span>\n const span = document.createElement('span');\n span.textContent = text;\n // preserves consecutive spaces and newlines\n span.style.whiteSpace = 'pre';\n // adds the <span> to the page\n document.body.appendChild(span);\n // makes a selection object representing the range of text selected by the user\n const selection = window.getSelection();\n if (!selection) return Promise.reject();\n const range = window.document.createRange();\n selection.removeAllRanges();\n range.selectNode(span);\n selection.addRange(range);\n // copies text to the clipboard\n try {\n window.document.execCommand('copy');\n } catch (err) {\n return Promise.reject();\n }\n // cleans up the dom element and selection\n selection.removeAllRanges();\n window.document.body.removeChild(span);\n // the Async Clipboard API returns a promise that may reject with `undefined`\n // so we match that here for consistency\n return Promise.resolve();\n}","// extracted by mini-css-extract-plugin\nexport default {\"assignPrompt\":\"R73Xv\",\"badge\":\"urP15\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'sharev2.assignPrompt';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport { NewBadge } from 'libs/shared/components/new-badge/NewBadge';\n\nimport styles from './assign-prompt.scss';\n\ninterface AssignPromptProps {\n appLink: Core.AppLink;\n}\n\nexport function AssignPrompt(props: AssignPromptProps): JSX.Element {\n return (\n <AppLink\n appLink={props.appLink}\n className={classNames(\n 'd-flex flex-row gap-3 p-3 justify-content-between rounded-3 bg-white hover-bg-light-blue',\n styles.assignPrompt\n )}\n >\n <div className='d-flex flex-row gap-2 align-items-center fw-medium'>\n <Text namespace={namespace} phrase='title' />\n <NewBadge size='sm' text={getPhrase('badgeText')} className={styles.badge} />\n </div>\n <div>\n <SvgContainer svgName={cvSvgLibrary.ChevronRight} />\n </div>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"input\":\"mc17h\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EventVersion, LocationContext } from 'libs/analytics/interfaces';\n\nimport { ShareIntegrationsHelper } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsHelper';\nimport { SharePermanentLinkActions } from 'libs/shared/apps/share-v2/components/share-permanent-link-actions/SharePermanentLinkActions';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { getShareEventLogger } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { useCreateShareData } from 'libs/shared/apps/share-v2/views/create-share-view/hooks/useCreateShareData';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useCopyToClipboard } from 'libs/shared/hooks/useCopyToClipboard';\nimport { AssignHelper } from 'libs/shared/utils/AssignHelper';\nimport { EmbedHelper } from 'libs/shared/utils/EmbedHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { AssignPrompt } from '../../components/assign-prompt/AssignPrompt';\n\nimport styles from './create-share.scss';\n\ntype CreateLinkType = 'link' | 'embed' | 'google-classroom' | 'microsoft-teams';\n\nconst namespace = 'sharev2.createShare';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface CreateShareViewProps extends MultiStepPopupViewProps {\n entityId: string;\n entityType: SharableEntityType\n setShowCopiedText: (val: boolean) => void;\n setShowEmbedCopiedText: (val: boolean) => void;\n goToShareLinkStep: () => void;\n goToCopyEmbedStep: () => void;\n assignFlowSelectorAppLink?: Core.AppLink;\n enableIntegrationBanner: boolean;\n googleClassroomIcon: string;\n microsoftTeamsIcon: string;\n}\n\nconst PLACEHOLDER_TEXT = 'https://clickv.ie/...';\n\nexport function CreateShareView(props: CreateShareViewProps): JSX.Element {\n const alerts = useAlerts();\n const { copyToClipboard } = useCopyToClipboard();\n\n const {\n data,\n hasClassrooms,\n hasStudentExp,\n canEmbed,\n integrations,\n createShareLink\n } = useCreateShareData({\n entityId: props.entityId,\n entityType: props.entityType\n });\n\n const {\n entity,\n share,\n currentUser,\n config,\n loaded\n } = data;\n\n const { log } = getShareEventLogger({\n data: {\n entity: {\n id: props.entityId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n location: LocationContext.Popup,\n eventVersion: EventVersion.V4\n }\n });\n\n const [ loadingType, setLoadingType ] = React.useState<null | 'copy' | 'create'>(null);\n\n function onCreateLink(share: Share) {\n copyToClipboard(share.link?.shortenedUrl)\n .then(success => {\n /**\n * If the copy to clipboard somehow fails we still want to take\n * them to main share view where they can copy the link again.\n * Rather showing 'Copied' falsely we show them a toast that\n * says share link has been created.\n * - Nish\n */\n if (!success) {\n alerts.success(getPhrase('createSuccess', { name: entity.data.name, escapeText: true }));\n return;\n }\n \n /**\n * If we successfully copy the share link we show 'Copied' in the\n * button in main share link view\n * - Nish\n */\n log({\n type: 'copy-share-link',\n id: entity.data.id,\n shareId: share.shareId,\n shareType: share.type\n });\n props.setShowCopiedText(true);\n setTimeout(() => props.setShowCopiedText(false), 3000);\n })\n .finally(() => {\n props.goToShareLinkStep();\n });\n }\n\n function onCreateEmbed(share: Share) {\n const videoSizes = EmbedHelper.getEmbedResolutions();\n const url = EmbedHelper.buildEmbedUrl({\n embedUrl: share.link.shortenedEmbedUrl,\n host: config.data.liteUrl,\n shareId: share.shareId,\n autoplay: false\n });\n const embedString = EmbedHelper.getEmbedString({\n url,\n size: videoSizes[0]\n });\n \n copyToClipboard(embedString)\n .then(success => {\n if (!success) {\n alerts.success(getPhrase('createSuccess', { name: entity.data.name, escapeText: true }));\n return;\n }\n\n /**\n * If we successfully copy the share link we show 'Copied' in the\n * button in the embed view\n * - Nish\n */\n log({\n type: 'copy-embed-html',\n id: props.entityId,\n shareId: share.shareId,\n shareType: share.type,\n embedDetails: {\n size: videoSizes[0],\n autoplay: false\n }\n });\n props.setShowEmbedCopiedText(true);\n setTimeout(() => props.setShowEmbedCopiedText(false), 3000);\n })\n .finally(() => {\n props.goToCopyEmbedStep();\n });\n }\n\n function onCreateGoogleClassroom(share: Share) {\n ShareIntegrationsHelper.launchGoogleClassroom(share.link.shortenedUrl);\n props.goToShareLinkStep();\n }\n\n function onCreateMicrosoftTeams(share: Share) {\n ShareIntegrationsHelper.launchMicrosoftTeams(share.link.shortenedUrl);\n props.goToShareLinkStep();\n }\n\n function onSuccess(share: Share, type: CreateLinkType) {\n log({\n type: 'create-share-link',\n share\n });\n \n const handler: Record<CreateLinkType, (share: Share) => void> = {\n 'link': onCreateLink,\n 'embed': onCreateEmbed,\n 'google-classroom': onCreateGoogleClassroom,\n 'microsoft-teams': onCreateMicrosoftTeams\n };\n\n handler[type](share);\n }\n\n function getOnClickCreateLink(type: CreateLinkType) {\n return () => {\n setLoadingType(type === 'link' ? 'copy' : 'create');\n\n createShareLink()\n .then(share => onSuccess(share, type))\n .catch(() => {\n alerts.error(getPhrase('createError', { name: entity.data.name, escapeText: true }));\n })\n .finally(() => {\n setLoadingType(null);\n });\n };\n }\n\n React.useEffect(() => {\n if (!share.data)\n return;\n \n props.goToShareLinkStep();\n }, [share.data]);\n\n /**\n * We intentionally show the prompt here if hideAssignButtonOnVideoActions is true\n * This is the entry to assign when the assign button is hidden - Sha\n * \n * However, we do not want to show the prompt if the customer does\n * not have access to classrooms (like tertiary customers for example)\n * or if the user is a student - Boris\n */\n const showAssignPrompt = AssignHelper.hideAssignButtonOnVideoActions(currentUser.data)\n && hasClassrooms\n && !hasStudentExp;\n\n function getModalClassNames() {\n if (!showAssignPrompt || !loaded)\n return {\n topContentClassName: 'd-flex flex-column gap-2'\n };\n\n return {\n popupContentClassName: 'bg-transparent border-0',\n popupBodyClassName: 'p-0',\n topContentClassName: 'bg-white rounded-bottom-3 p-3 mb-3 d-flex flex-column gap-2'\n };\n }\n\n const modalClassNames = getModalClassNames();\n \n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded || props.loading}\n animation={props.animate}\n contentClassName={modalClassNames?.popupContentClassName}\n bodyClassName={modalClassNames?.popupBodyClassName}\n >\n <div className={modalClassNames?.topContentClassName}>\n <p className='mb-2'><Text namespace={namespace} phrase='info' /></p>\n <div className='d-flex gap-2 position-relative w-100'>\n <input\n type='text'\n autoComplete='off'\n className={`form-control ${styles.input}`}\n spellCheck={false}\n placeholder={PLACEHOLDER_TEXT}\n readOnly\n />\n <SpinnerButton\n variant='dark'\n showSpinner={!!loadingType}\n className='text-nowrap d-flex align-items-center gap-1'\n onClick={getOnClickCreateLink('link')}\n spinnerText={loadingType === 'copy' ? getPhrase('buttonLoading') : getPhrase('buttonLoadingCreate')}\n >\n <SvgContainer svgName={cvSvgLibrary.Link} />\n <Text namespace={namespace} phrase='button' />\n </SpinnerButton>\n </div>\n <SharePermanentLinkActions\n canEmbed={canEmbed}\n integrations={integrations}\n canAccessSettings={false}\n showIntegrations={props.enableIntegrationBanner}\n hasManageShareLinkSettings={false}\n goToDeleteStep={null}\n goToSettingsStep={null}\n onClickGetEmbedCode={getOnClickCreateLink('embed')}\n onClickGoogleClassroom={getOnClickCreateLink('google-classroom')}\n onClickMicrosoftTeams={getOnClickCreateLink('microsoft-teams')}\n hideSettings\n googleClassroomIcon={props.googleClassroomIcon}\n microsoftTeamsIcon={props.microsoftTeamsIcon}\n />\n </div>\n\n {showAssignPrompt && props.assignFlowSelectorAppLink && (\n <AssignPrompt appLink={props.assignFlowSelectorAppLink} />\n )}\n </Popup>\n );\n}","import { useShareLinkActions } from 'libs/shared/apps/share-v2/hooks/useShareLinkActions';\nimport { useShareLinkData } from 'libs/shared/apps/share-v2/hooks/useShareLinkData';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\ninterface UseCreateShareDataOptions {\n entityId: string;\n entityType: SharableEntityType;\n}\n\nexport function useCreateShareData(options: UseCreateShareDataOptions) {\n const { hasPermissions } = usePermissions();\n\n const {\n shareToGoogleClassroom,\n shareToMicrosoftTeams,\n hasClassrooms,\n isLoadingSettings\n } = useSettings(null);\n\n const canEmbed = ShareViewHelper.canEmbed(options.entityType);\n const integrations = ShareViewHelper.getEnabledIntegrations(shareToGoogleClassroom, shareToMicrosoftTeams);\n\n const { entity, share, currentUser, config } = useShareLinkData({\n entityId: options.entityId,\n entityType: options.entityType\n });\n\n const { loaded: shareLinkActionsLoaded, createShareLink } = useShareLinkActions({\n entityId: options.entityId\n });\n\n const hasStudentExp = hasPermissions(PermissionName.StudentExperience);\n\n const loaded = (\n !isLoadingSettings &&\n !!entity.data &&\n !!currentUser.data &&\n !!config.data &&\n !!shareLinkActionsLoaded\n );\n\n return {\n data: {\n entity,\n share,\n currentUser,\n config,\n loaded\n },\n hasClassrooms,\n hasStudentExp,\n canEmbed,\n integrations,\n createShareLink\n };\n}","import React from 'react';\n\nimport { ShareLinkPrivacy } from 'libs/shared/apps/share-v2/components/share-link-privacy/ShareLinkPrivacy';\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { type SharableEntity, SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { CopyInput } from 'libs/shared/components/copy-input/CopyInput';\nimport type { YearGroup } from 'libs/shared/interfaces';\n\ninterface SharePermanentLinkProps {\n share: Share;\n entityType: SharableEntityType;\n hasStudentExp: boolean;\n shareOverrideRestrictions: boolean;\n entity: SharableEntity;\n yearGroups: YearGroup[];\n privacy: SharePrivacyResponse;\n onClickSavePrivacy: (privacy: SharePrivacy) => void;\n showCopiedText: boolean;\n onCopy?: () => void;\n}\n\nexport function SharePermanentLink(props: SharePermanentLinkProps): JSX.Element {\n const [ logged, setLogged ] = React.useState(false);\n \n function onCopy() {\n if (logged)\n return;\n\n setLogged(true);\n \n typeof props.onCopy === 'function' && props.onCopy();\n }\n\n return (\n <div className='d-flex justify-content-start align-items-start flex-column gap-2'>\n <ShareLinkPrivacy\n sharePrivacy={props.share.privacy}\n entityPrivacy={props.privacy}\n entityTypeId={props.entity.typeId}\n entity={props.entity}\n yearGroups={props.yearGroups}\n \n hasStudentExp={props.hasStudentExp}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n onClickSavePrivacy={props.onClickSavePrivacy}\n />\n <CopyInput\n styling='normal-v2'\n value={props.share.link.shortenedUrl}\n showCopiedText={props.showCopiedText}\n onCopy={onCopy}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { EventVersion, LocationContext } from 'libs/analytics/interfaces';\n\nimport { ShareIntegrationsHelper } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsHelper';\nimport { SharePermanentLink } from 'libs/shared/apps/share-v2/components/share-permanent-link/SharePermanentLink';\nimport { SharePermanentLinkActions } from 'libs/shared/apps/share-v2/components/share-permanent-link-actions/SharePermanentLinkActions';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { getShareEventLogger } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { type SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { LookingForIntegration } from 'libs/shared/components/looking-for-integration/LookingForIntegration';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { AssignHelper } from 'libs/shared/utils/AssignHelper';\n\nimport { AssignPrompt } from '../../components/assign-prompt/AssignPrompt';\n\nimport { useMainShareData } from './hooks/use-main-share-data/useMainShareData';\n\nconst namespace = 'sharev2.mainShareView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface MainShareViewProps extends MultiStepPopupViewProps {\n entityId: string;\n showCopiedText?: boolean;\n entityType: SharableEntityType;\n enableIntegrationBanner: boolean;\n messagePopupAppLink?: Core.AppLink;\n integrationSettingAppLink?: Core.AppLink;\n assignFlowSelectorAppLink?: Core.AppLink;\n goToDeleteStep: () => void;\n goToSettingsStep: () => void;\n goToCopyEmbedStep: () => void;\n googleClassroomIcon: string;\n microsoftTeamsIcon: string;\n}\n\nexport function MainShareView(props: MainShareViewProps): JSX.Element {\n const fetch = Flight.useGetFetch();\n const { hasClassrooms } = useSettings(null);\n const { hasPermissions } = usePermissions();\n \n const { log } = getShareEventLogger({\n data: {\n entity: {\n id: props.entityId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n eventVersion: EventVersion.V3,\n location: LocationContext.Popup\n }\n });\n \n const {\n data,\n canEmbed,\n integrations,\n hasStudentExp,\n canAccessSettings,\n hasManageShareLinkSettings,\n hasManageIntegrationsPermission,\n onClickSavePrivacy\n } = useMainShareData({\n entityId: props.entityId,\n entityType: props.entityType,\n log\n });\n\n const {\n share,\n loaded,\n entity,\n privacy,\n yearGroups,\n shareOverrideRestrictions,\n currentUser\n } = data;\n\n /**\n * We intentionally show the prompt here if hideAssignButtonOnVideoActions is true\n * This is the entry to assign when the assign button is hidden - Sha\n * \n * However, we do not want to show the prompt if the customer does\n * not have access to classrooms (like tertiary customers for example)\n * or if the user is a student - Boris\n */\n const showAssignPrompt = AssignHelper.hideAssignButtonOnVideoActions(currentUser.data)\n && hasClassrooms\n && !hasPermissions(PermissionName.StudentExperience);\n\n function onCopy() {\n log({\n type: 'copy-share-link',\n id: entity.data.id,\n shareId: share.data.shareId,\n shareType: share.data.type\n });\n fetch(ShareRequests.updateDateShared(share.data.shareId));\n }\n\n function getModalClassNames() {\n if (!showAssignPrompt || !loaded)\n return null;\n\n return {\n popupContentClassName: 'bg-transparent border-0',\n popupBodyClassName: 'p-0',\n topContentClassName: 'bg-white rounded-bottom-3 p-3 mb-3'\n };\n }\n\n const modalClassNames = getModalClassNames();\n\n const integrationAppLink = hasManageIntegrationsPermission\n ? props.integrationSettingAppLink\n : props.messagePopupAppLink;\n\n return (\n <Popup\n animation={props.animate}\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded || props.loading}\n contentClassName={modalClassNames?.popupContentClassName}\n bodyClassName={modalClassNames?.popupBodyClassName}\n >\n <div className={classNames('d-flex flex-column gap-2', modalClassNames?.topContentClassName)}>\n <SharePermanentLink\n share={share.data}\n entity={entity.data}\n privacy={privacy.data}\n yearGroups={yearGroups.data}\n entityType={props.entityType}\n hasStudentExp={hasStudentExp}\n showCopiedText={props.showCopiedText}\n shareOverrideRestrictions={shareOverrideRestrictions}\n onCopy={onCopy}\n onClickSavePrivacy={onClickSavePrivacy}\n />\n <SharePermanentLinkActions\n canEmbed={canEmbed}\n integrations={integrations}\n canAccessSettings={canAccessSettings}\n showIntegrations={props.enableIntegrationBanner}\n hasManageShareLinkSettings={hasManageShareLinkSettings}\n goToDeleteStep={props.goToDeleteStep}\n goToSettingsStep={props.goToSettingsStep}\n onClickGetEmbedCode={props.goToCopyEmbedStep}\n onClickGoogleClassroom={() => ShareIntegrationsHelper.launchGoogleClassroom(share.data.link.shortenedUrl)}\n onClickMicrosoftTeams={() => ShareIntegrationsHelper.launchMicrosoftTeams(share.data.link.shortenedUrl)}\n googleClassroomIcon={props.googleClassroomIcon}\n microsoftTeamsIcon={props.microsoftTeamsIcon}\n />\n {props.enableIntegrationBanner && !integrations.length &&\n <LookingForIntegration\n normalText\n hideDismiss\n hideBackground\n appLink={integrationAppLink}\n closePopup={props.closePopup}\n />\n }\n </div>\n\n {showAssignPrompt && props.assignFlowSelectorAppLink && (\n <AssignPrompt appLink={props.assignFlowSelectorAppLink} />\n )}\n </Popup>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EventVersion, LocationContext } from 'libs/analytics/interfaces';\n\nimport { ShareSettingsForm } from 'libs/shared/apps/share-v2/components/share-settings-form/ShareSettingsForm';\nimport { getShareEventLogger } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { SharableEntityType, type ShareSettingsFormFields, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { type FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nimport { useShareSettingsData } from './hooks/use-share-settings-data/useShareSettingsData';\n\nconst namespace = 'sharev2.shareSettingsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ShareSettingsViewProps extends MultiStepPopupViewProps {\n entityId: string;\n entityType: SharableEntityType;\n goToShareLinkStep: () => void;\n goToDeleteStep: () => void;\n}\n\n\nexport function ShareSettingsView(props: ShareSettingsViewProps): JSX.Element {\n const { log } = getShareEventLogger({\n data: {\n entity: {\n id: props.entityId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n location: LocationContext.Popup,\n eventVersion: EventVersion.V3\n }\n });\n \n const { initialValues, onClickSaveLink } = useShareSettingsData({\n entityId: props.entityId,\n entityType: props.entityType,\n log\n });\n \n function onSubmit(\n data: ShareSettingsFormFields,\n onDone: (options?: FormSubmissionOptions<ShareSettingsFormFields>) => void\n ): void {\n onClickSaveLink({\n options: {\n immediateFeedback: data.immediateFeedback,\n preventScrubbing: data.preventScrubbing\n }\n }, onDone);\n }\n\n const {\n showImmediateFeedbackField,\n showPreventScrubbingField\n } = ShareViewHelper.getEnabledSettingsField(props.entityType);\n\n return (\n <Popup\n title={getPhrase('title')}\n showLoadingSpinner={props.loading}\n closePopup={props.closePopup}\n animation={props.animate}\n >\n <ShareSettingsForm\n initialValues={initialValues}\n onSubmit={onSubmit}\n onClickDelete={props.goToDeleteStep}\n showImmediateFeedbackField={showImmediateFeedbackField}\n showPreventScrubbingField={showPreventScrubbingField}\n />\n <PopupButtons className='mt-3'>\n <PopupButtons.Cancel onClick={props.goToShareLinkStep} text={getPhrase('back')} variant='link' />\n </PopupButtons>\n </Popup>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { useShareLinkData } from 'libs/shared/apps/share-v2/hooks/useShareLinkData';\nimport { AllShareLinkViewProps } from 'libs/shared/apps/share-v2/interfaces/MultiStepPopup';\nimport { ShareScreen } from 'libs/shared/apps/share-v2/interfaces/ShareScreen';\nimport { type SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { CopyEmbedView } from 'libs/shared/apps/share-v2/views/copy-embed-view/CopyEmbedView';\nimport { CreateShareView } from 'libs/shared/apps/share-v2/views/create-share-view/CreateShareView';\nimport { DeleteShareLinkConfirmationView } from 'libs/shared/apps/share-v2/views/delete-share-link-confirmation-view/DeleteShareLinkConfirmationView';\nimport { MainShareView } from 'libs/shared/apps/share-v2/views/main-share-view/MainShareView';\nimport { ShareSettingsView } from 'libs/shared/apps/share-v2/views/share-settings-view/ShareSettingsView';\nimport { MultiStepPopup } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport type { PopupViewProps } from 'libs/shared/interfaces';\n\ninterface ShareViewProps extends PopupViewProps {\n entityId: string;\n entityType: SharableEntityType\n enableIntegrationBanner: boolean;\n assignFlowSelectorAppLink?: Core.AppLink;\n integrationSettingAppLink?: Core.AppLink;\n messagePopupAppLink?: Core.AppLink;\n googleClassroomIcon?: string;\n microsoftTeamsIcon?: string;\n}\n\nexport function ShareView(props: ShareViewProps): JSX.Element {\n const { share } = useShareLinkData({ entityId: props.entityId, entityType: props.entityType });\n\n const [ animate, setAnimate ] = React.useState<boolean>(true);\n const [ screen, setScreen ] = React.useState<ShareScreen>(share.data ? 'share-link' : 'create-link');\n const [ showCopiedText, setShowCopiedText ] = React.useState(false);\n const [ showEmbedCopiedText, setShowEmbedCopiedText ] = React.useState(false);\n\n const canAccessSettings = ShareViewHelper.canAddPolicies(props.entityType);\n\n function setStep(step: ShareScreen) {\n setAnimate(false);\n setScreen(step);\n }\n\n function goToSettingsStep() {\n if (!canAccessSettings) {\n setStep('share-link');\n return;\n }\n \n setStep('link-settings');\n }\n\n const data: AllShareLinkViewProps = {\n entityId: props.entityId,\n entityType: props.entityType,\n showCopiedText: showCopiedText,\n showEmbedCopiedText: showEmbedCopiedText,\n messagePopupAppLink: props.messagePopupAppLink,\n enableIntegrationBanner: props.enableIntegrationBanner,\n integrationSettingAppLink: props.integrationSettingAppLink,\n assignFlowSelectorAppLink: props.assignFlowSelectorAppLink,\n goToShareLinkStep: () => setStep('share-link'),\n goToDeleteStep: () => setStep('delete-confirmation'),\n goToCopyEmbedStep: () => setStep('copy-embed'),\n goToSettingsStep,\n closePopup: props.closePopup,\n setShowCopiedText: setShowCopiedText,\n setShowEmbedCopiedText: setShowEmbedCopiedText,\n googleClassroomIcon: props.googleClassroomIcon,\n microsoftTeamsIcon: props.microsoftTeamsIcon\n };\n\n return (\n <MultiStepPopup<AllShareLinkViewProps, ShareScreen>\n step={screen}\n animate={animate}\n setStep={setStep}\n loading={!share.hasCompleted}\n closePopup={props.closePopup}\n data={data}\n steps={{\n 'create-link': {\n view: CreateShareView\n },\n 'share-link': {\n view: MainShareView\n },\n 'link-settings': {\n view: ShareSettingsView\n },\n 'copy-embed': {\n view: CopyEmbedView\n },\n 'delete-confirmation': {\n view: DeleteShareLinkConfirmationView\n }\n }}\n />\n );\n}\n","import React from 'react';\n\nimport { ShareView as OldShareView } from 'libs/shared/apps/share/views/share/ShareView';\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ShareView as NewShareView } from 'libs/shared/apps/share-v2/views/share-view/ShareView';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { AssignAppLinkHelper } from 'apps/assign/utils/AssignAppLinkHelper';\n\ninterface ShareViewProps extends PopupViewProps {\n entityId: string;\n entityType: SharableEntityType;\n enableIntegrationBanner?: boolean\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ShareView(props: ShareViewProps) {\n const { hasShareFlowV2, isLoadingSettings } = useSettings(null);\n\n if (isLoadingSettings)\n return <></>;\n\n if (!hasShareFlowV2) {\n return (\n <OldShareView\n entityId={props.entityId}\n entityType={props.entityType}\n closePopup={props.closePopup}\n emptyStateImageUrl={ImageUrls.EmptyStates.TYPEAHEAD_RESULTS}\n errorStateImageUrl={ImageUrls.TYPEAHEAD_ERROR}\n messagePopupAppLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.INTEGRATIONS_INFO\n }}\n integrationSettingAppLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.INTEGRATIONS\n }}\n enableIntegrationBanner={props.enableIntegrationBanner}\n />\n );\n }\n\n /**\n * Series can only be assigned to existing classrooms.\n */\n const assignFlowSelectorAppLink = props.entityType === 'series'\n ? AssignAppLinkHelper.existingClassroom({\n entityType: 'series',\n objectId: props.entityId\n })\n : AssignAppLinkHelper.flowSelector({\n entityType: props.entityType,\n objectId: props.entityId\n });\n\n return (\n <NewShareView\n entityId={props.entityId}\n entityType={props.entityType}\n closePopup={props.closePopup}\n messagePopupAppLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.INTEGRATIONS_INFO\n }}\n integrationSettingAppLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.INTEGRATIONS\n }}\n enableIntegrationBanner={props.enableIntegrationBanner}\n assignFlowSelectorAppLink={assignFlowSelectorAppLink}\n googleClassroomIcon={ImageUrls.ShareIntegrations.GoogleClassroom}\n microsoftTeamsIcon={ImageUrls.ShareIntegrations.MicrosoftTeams}\n />\n );\n}"],"names":["getPhrase","DeleteShareContent","props","ack","setAck","className","phrases","leadingSentence","bulletPoints","map","phrase","index","key","id","checked","onChange","e","target","label","acknowledgement","onBack","onClick","text","backButton","variant","loading","onDelete","deleteButton","disabled","showSpinner","SharePrivacyItem","active","activePrivacy","sharePrivacy","title","description","SvgContainer","svgName","ShareLinkPrivacy","canUpdatePrivacy","shareOverrideRestrictions","hasStudentExp","config","getSharePrivacyConfig","entity","entityPrivacy","yearGroups","_showPasswordProtected","SharePrivacy","ShareLinkHelper","privacy","entityTypeId","icon","Object","values","predicate","onClickSavePrivacy","options","accessType","respectRatingText","getDefaultSharePrivacy","items","validItems","entries","filter","length","DeleteShareLinkConfirmationView","alerts","setLoading","entityId","entityType","share","deleteShareLink","log","data","type","analyticsOptions","location","eventVersion","loaded","closePopup","showLoadingSpinner","animation","animate","shareId","then","success","previousAppLink","error","name","escapeText","goToSettingsStep","undefined","useMainShareData","hasPermissions","shareToGoogleClassroom","shareToMicrosoftTeams","isLoadingSettings","currentUser","shareActionLoaded","updateShareLink","customerId","canEmbed","integrations","hasManageIntegrationsPermission","hasManageShareLinkSettings","canAccessSettings","updatedPrivacy","updatedShare","POPUP_FEATURES","ShareIntegrationsHelper","launchGoogleClassroom","link","url","launchMicrosoftTeams","href","preview","referrer","s","Date","now","MultiStepPopup","setAnimate","stepConfig","steps","step","viewProps","setStep","ViewComponent","view","namespace","NewBadge","size","invert","LanguageService","CopyEmbedView","fetch","useShareLinkData","getShareEventLogger","Popup","CopyEmbedHtml","embedUrl","shortenedEmbedUrl","liteUrl","onCopy","embedDetails","shareType","ShareRequests","showEmbedCopiedText","styling","PopupButtons","goToShareLinkStep","ShareIntegrations","includes","IntegrationId","onClickGoogleClassroom","style","backgroundImage","googleClassroomIcon","onClickMicrosoftTeams","microsoftTeamsIcon","SharePermanentLinkDelete","DivButton","S","Text","SharePermanentLinkSetting","manageShareLinkSettings","onClickEditSettings","SharePermanentLinkActions","GetEmbedCode","onClickGetEmbedCode","minimal","hideSettings","goToDeleteStep","showIntegrations","useCopyToClipboard","useState","copiedText","setCopiedText","copyToClipboard","useCallback","console","warn","navigator","clipboard","writeText","span","document","createElement","textContent","whiteSpace","body","appendChild","selection","window","getSelection","Promise","reject","range","createRange","removeAllRanges","selectNode","addRange","execCommand","err","removeChild","resolve","AssignPrompt","AppLink","appLink","PLACEHOLDER_TEXT","CreateShareView","usePermissions","useSettings","hasClassrooms","ShareViewHelper","useShareLinkActions","shareLinkActionsLoaded","createShareLink","PermissionName","useCreateShareData","loadingType","setLoadingType","onCreateLink","shortenedUrl","setShowCopiedText","setTimeout","onCreateEmbed","videoSizes","EmbedHelper","host","autoplay","embedString","setShowEmbedCopiedText","goToCopyEmbedStep","onCreateGoogleClassroom","onCreateMicrosoftTeams","getOnClickCreateLink","onSuccess","showAssignPrompt","AssignHelper","modalClassNames","popupContentClassName","popupBodyClassName","topContentClassName","contentClassName","bodyClassName","autoComplete","spellCheck","placeholder","readOnly","SpinnerButton","spinnerText","enableIntegrationBanner","assignFlowSelectorAppLink","SharePermanentLink","logged","setLogged","typeId","CopyInput","value","showCopiedText","MainShareView","integrationAppLink","integrationSettingAppLink","messagePopupAppLink","LookingForIntegration","normalText","hideDismiss","hideBackground","ShareSettingsView","useShareSettingsData","initialValues","onClickSaveLink","showImmediateFeedbackField","showPreventScrubbingField","ShareSettingsForm","onSubmit","onDone","immediateFeedback","preventScrubbing","onClickDelete","screen","setScreen","hasCompleted","hasShareFlowV2","emptyStateImageUrl","ImageUrls","errorStateImageUrl","application","action","AssignAppLinkHelper","objectId"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7617-9d34c841e6-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/my-shares-demo-insights.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight.tsx","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/empty-state/MySharesEmptyState.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesView.tsx","file:///app/packages/projects/lite/src/apps/sign-up/components/soft-gate-banner/SoftGateBanner.tsx"],"sourcesContent":["export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"background\":\"HAuP3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INTERACTIVE_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_ACTION, DEMO_INSIGHTS_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA, DEMO_INSIGHTS_SHARE_TABLE_DATA } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nimport { MySharesTableData } from '../my-shares-table/MySharesTableUtils';\n\nimport styles from './my-shares-demo-insights.scss';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n breakpoints: Breakpoints;\n className?: string;\n heading?: string;\n shareType?: ShareType;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n const appLink = props.shareType === ShareType.Open ? DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK : DEMO_INSIGHTS_APPLINK;\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: DEMO_INTERACTIVE_ID\n };\n }\n\n function getObjectActions() {\n return [\n {\n ...DEMO_INSIGHTS_ACTION,\n button: !isMobile,\n appLink\n }\n ];\n }\n\n const demoShareTableData = props.shareType === ShareType.Open\n ? DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA\n : DEMO_INSIGHTS_SHARE_TABLE_DATA;\n\n const shareData: MySharesTableData = {\n ...demoShareTableData,\n sharedObject: getDemoInteractive()\n };\n\n return (\n <div className={props.className}>\n <MySharesTableHeading heading={props.heading ?? getPhrase('demoHeading')} isFirst={true} />\n\n <div className={`${styles.background} rounded-3 mb-4`}>\n <MySharesTableRow\n shareData={shareData}\n getObjectActions={getObjectActions}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n breakpoints={props.breakpoints}\n className='bg-light-orange'\n appLink={(() => appLink)}\n />\n </div>\n </div>\n );\n}","export const DEMO_INTERACTIVE_ID = 'GRWx6w';","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEMO_INSIGHT_DAYS_AGO = 7;\n\nexport const DEMO_INSIGHTS_SHARE: Share = {\n type: ShareType.Link,\n privacy: SharePrivacy.JustMySchool,\n objectId: '0',\n objectTypeId: MasterType.Interactive,\n viewCount: 28,\n accessCount: 15,\n dateCreated: new Date().toISOString(),\n dateShared: new Date().toISOString(),\n expireDate: null,\n link: {\n shortenedEmbedUrl: '',\n shortenedUrl: ''\n },\n shareId: '0',\n ownerCustomerId: 0,\n ownerId: 0,\n recipients: [],\n options: {\n preventScrubbing: false,\n immediateFeedback: false\n }\n};\n\nexport const DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE: Share = {\n ...DEMO_INSIGHTS_SHARE,\n type: ShareType.Open,\n expireDate: DateHelper.add(new Date(DEMO_INSIGHTS_SHARE.dateCreated), 30, 'days').toISOString(),\n privacy: SharePrivacy.PinCode\n};\n\nexport const DEMO_INSIGHTS_SHARE_TABLE_DATA: MySharesTableData = {\n share: DEMO_INSIGHTS_SHARE,\n sharedObject: null,\n shareRecipients: null,\n dateShared: DateHelper.subtract(new Date(), DEMO_INSIGHT_DAYS_AGO, 'days').toISOString()\n};\n\nexport const DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA: MySharesTableData = {\n ...DEMO_INSIGHTS_SHARE_TABLE_DATA,\n share: DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE\n};\n\nexport const DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_OPEN_CLASSROOM_DEMO\n};\n\nexport const DEMO_INSIGHTS_ACTION: ActionOptions = {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n className: 'btn btn-outline-dark'\n};\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myShares.mySharesEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function MySharesEmptyState() {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.MY_VIDEOS_PUBLIC} altText={getPhrase('heading')} />\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.MySharesLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAccessPolicy } from 'libs/shared/hooks/useAccessPolicy';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useClassroomExperience } from 'shared/hooks/useClassroomExperience';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { InsightsAdminAlert } from 'apps/my-shares/components/insights-admin-alert/InsightsAdminAlert';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\nimport { MySharesTableEmptyState } from 'apps/my-shares/components/my-shares-table/empty-state/MySharesTableEmptyState';\nimport { MySharesTable } from 'apps/my-shares/components/my-shares-table/MySharesTable';\nimport { PartialMySharesTable } from 'apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable';\nimport { MySharesEmptyState } from 'apps/my-shares/views/my-shares/empty-state/MySharesEmptyState';\nimport { getShareObjectActions, getSharesParams } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\nimport { SoftGateBanner } from 'apps/sign-up/components/soft-gate-banner/SoftGateBanner';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesViewProps {\n typeId: string | string[];\n}\n\nexport function MySharesView(props: MySharesViewProps) {\n // Shared hooks\n useSetPageMetadata({ title: getPhrase('myShares') });\n const { hasPermissions, hasLocalPermissions, getGatedPermission } = usePermissions();\n const { hasShareFlowV2, hasClassrooms } = useSettings(null);\n const { isPlugin } = usePluginHelper();\n const breakpoints = useBreakpoints();\n const { accessPolicy } = useAccessPolicy();\n const { experience } = useClassroomExperience();\n\n const sharesParams = getSharesParams(props.typeId);\n\n // Local variables\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMySharesLanding) ||\n hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2;\n const hasInsightsPermission = hasShareFlowV2 && hasPermissions(PermissionName.ViewInsights);\n const showDemoInsight = accessPolicy?.metadata?.hasDemoInsights || experience === 'minimal';\n\n // Flight fetching\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(showDemoInsight &&\n InsightsDemoRequests.interactiveMetadata());\n\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch,\n params: {\n type: [ ShareType.Link, ShareType.LegacyDirect ]\n }\n });\n\n React.useEffect(() => {\n if (!(hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2))\n Core.LocationUtils.PageLoad('/');\n }, [shouldFetch]);\n\n if (!shouldFetch)\n return <MySharesEmptyState />;\n\n return (\n <div className='px-3'>\n {getGatedPermission(PermissionName.ViewMyShares) === 'soft-gate' && <SoftGateBanner />}\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n />\n\n <div className='border-bottom pb-2 mb-4'>\n <h1 className='mb-2'><Text namespace={namespace} phrase='myShares' /></h1>\n {hasClassrooms && (\n <p className='mb-0'>\n <Text namespace={namespace} phrase='classroomsHint'/>\n \n <AppLink\n appLink={{ application: AppChannels.CLASSROOMS, action: Actions.Classrooms.HOME }}\n className='info-link'\n >\n <Text namespace={namespace} phrase='classroomsCta'/>\n </AppLink>\n </p>\n )}\n </div>\n\n {showDemoInsight && demoInteractive.data &&\n <MySharesDemoInsight\n demoInteractive={demoInteractive.data}\n breakpoints={breakpoints}\n imageCdnUrl={shareData.imageCdnUrl}\n yearGroups={yearGroups.data}\n shareType={ShareType.Link}\n />\n }\n\n {(() => {\n if (shareData.showPartialLoading)\n return <PartialMySharesTable />;\n\n if (!shareData.sentShares.length)\n return <MySharesTableEmptyState />;\n\n return (\n <>\n <MySharesTable\n sentShares={shareData.sentShares}\n sharedObjects={shareData.sharedObjects.items}\n shareRecipients={shareData.shareRecipients.items}\n interactivesPendingReview={shareData.interactivesPendingReview.itemsArr}\n getObjectActions={row => getShareObjectActions({\n share: row.share,\n sharedObject: row.sharedObject,\n audienceParams: sharesParams.audienceAppLinkParams,\n hasInsights: hasInsightsPermission,\n isPlugin,\n breakpoints\n })}\n groupByDateShared\n breakpoints={breakpoints}\n hasDemoInsights={showDemoInsight}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n />\n {(shareData.hasMore || shareData.isFetching) &&\n <InfiniteScrollFooter\n isFetching={shareData.isFetching}\n fetchNext={shareData.fetchNext}\n nextCursor={shareData.nextCursor}\n />\n }\n </>\n );\n })()}\n </div>\n );\n}\n","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'signUp.softGateBanner';\n\nexport function SoftGateBanner(): JSX.Element {\n return (\n <div role='alert' className='bg-light-indigo text-indigo rounded p-2 mb-4 d-flex align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.StarOutline} size={SvgContainerSize.Large} />\n <Text namespace={namespace} phrase='softGate' /> \n <AppLink\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.PREMIUM_FEATURES\n }}\n className='indigo-link text-indigo text-underline d-inline'\n >\n <Text namespace={namespace} phrase='learnMore' />\n </AppLink>\n </div>\n );\n}"],"names":["SharePrivacy","InsightsDemoRequests","interactive","url","key","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","namespace","InsightsAdminAlert","props","storage","show","setShow","hasAnalytics","role","className","phrase","href","video","analyticsUrl","videoRoute","typeId","id","getAnalyticsUrl","target","svgName","onClick","getPhrase","LanguageService","MySharesDemoInsight","isMobile","breakpoints","xs","sm","shareType","ShareType","demoShareTableData","shareData","sharedObject","demoInteractive","heading","isFirst","MySharesTableRow","getObjectActions","button","appLink","imageCdnUrl","yearGroups","DEMO_INTERACTIVE_ID","DEMO_INSIGHTS_SHARE","type","privacy","objectId","objectTypeId","viewCount","accessCount","dateCreated","Date","toISOString","dateShared","expireDate","link","shortenedEmbedUrl","shortenedUrl","shareId","ownerCustomerId","ownerId","recipients","options","preventScrubbing","immediateFeedback","DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE","DEMO_INSIGHTS_SHARE_TABLE_DATA","share","shareRecipients","DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK","DEMO_INSIGHTS_ACTION","label","group","MySharesEmptyState","EmptyState","src","ImageUrls","altText","Text","text","analyticsData","analyticsOptions","actionType","location","entity","workflowPhase","descriptor","SignUp","MySharesView","useSetPageMetadata","title","usePermissions","hasPermissions","hasLocalPermissions","getGatedPermission","useSettings","hasShareFlowV2","hasClassrooms","isPlugin","usePluginHelper","useBreakpoints","accessPolicy","useAccessPolicy","experience","useClassroomExperience","sharesParams","shouldFetch","PermissionName","hasInsightsPermission","showDemoInsight","metadata","hasDemoInsights","config","ConfigRequests","currentUser","UserRequests","data","isAuthenticated","CustomerRequests","customerId","useSharesTable","interactiveInsights","params","SoftGateBanner","analyticsWebUrl","AppLink","showPartialLoading","PartialMySharesTable","sentShares","length","MySharesTable","sharedObjects","items","interactivesPendingReview","itemsArr","row","audienceParams","audienceAppLinkParams","hasInsights","groupByDateShared","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","MySharesTableEmptyState","size","S"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7742],{39902:(e,t,n)=>{n.d(t,{FN:()=>f,SW:()=>v,fh:()=>p});var r=n(32735),i=n(20354),a=n(75896);function o(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(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 l(e,t){if(e){if("string"==typeof e)return c(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)?c(e,t):void 0}}function c(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 u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function s(e,t,n){return(t=function(e){var t=function(e){if("object"!=u(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==u(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n},m=50;function p(e,t){var n=a.m.chunk(e,m).map(function(e){return t(a.m.uniq(e))}),r=i.a.useBasicFetchAll(n),o=a.m.flatten(r.data),l=r.data.length?o.reduce(function(e,t){return Object.assign(Object.assign({},e),s({},t.id,t))},{}):null;return{itemsArr:o,items:l,isFetching:r.isFetching,hasCompleted:r.hasCompleted}}function f(e,t,n){var i=null!=n?n:function(e){return"object"===u(e)?e.id:e},a=v({getRequest:t,_getKey:n}),o=a.fetchItems,l=d(a,["fetchItems"]);return r.useEffect(function(){(null==e?void 0:e.length)&&o(e)},[null==e?void 0:e.map(i).join(",")]),l}function v(e){var t,n,c,d,p,f=null!==(t=e._getKey)&&void 0!==t?t:function(e){return"object"===u(e)?e.id:e},v=r.useRef(new Set),y=(d=r.useState([]),p=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,l=[],c=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw i}}return l}}(d,p)||l(d,p)||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.")}()),h=y[0],g=y[1],b=i.a.useBasicFetchAll(h),E=a.m.flatten(b.data),k=b.data.length?E.reduce(function(e,t){return Object.assign(Object.assign({},e),s({},f(t),t))},{}):null;return{hasFirstRequestCompleted:!!(null===(c=null===(n=b.responses)||void 0===n?void 0:n[0])||void 0===c?void 0:c.hasCompleted),itemsArr:E,items:k,isFetching:b.isFetching,fetchItems:function(t){if(null==t?void 0:t.length){var n=[];t.forEach(function(e){var t=f(e);v.current.has(t)||(n.push(e),v.current.add(t))}),n.length&&g(function(t){return[].concat(o(t),o(a.m.chunk(n,m).map(e.getRequest)))})}}}}},37788:(e,t,n)=>{n.r(t),n.d(t,{MyVideosView:()=>Z});var r=n(32735),i=n(70680),a=n(23481),o=n(20354),l=n(28400),c=n(65858),u=n(43500),s=n(73518),d=n(39958),m=n(1302),p=n(91693),f=n(37395),v=n(4201),y=n(83345),h=n(1860),g=n(30254),b=n(3534),E=n(51365),k=n(16714),V=n(183),A=n(31949),O=n(299),S=n(91286),w=n(22902),C=n(79612),F=n(35223),M=n(58535),j=n(14070),x=n(97291),I=n(58321),L=n(44110),N=n(97816),P=n(10741),D=n(22490),B=n(98860),R=n(12617),_=n(45967),T=n(65202),U=n(74796),q=n(14305),H=n(72363),Y=n(12909),W=n(9218),K=n(18097);const Q={uploadingList:"wg7hV"};var X="default.myVideos";function Z(e){var t,n,Z,$,G,J,z,ee;(0,C.M)({title:a.T.getPhrase(X,"pageTitle")});var te=(0,i.I0)(),ne=(0,I.U)({locationContext:c.LZ.VideoThumbnail}).commonVideoProps,re=(0,w.T)(),ie=re.hasPermissions,ae=re.hasLocalPermissions,oe=re.getGatedPermission,le=(0,_.q)().handleDragEnd,ce=(0,v.of)().focusSearchBar,ue=o.a.useBasicFetch(A.N.currentUser()),se=o.a.useBasicFetch((null===(t=ue.data)||void 0===t?void 0:t.isAuthenticated)&&A.N.workspace()),de=null===(Z=null===(n=se.data)||void 0===n?void 0:n.categoryTree)||void 0===Z?void 0:Z.id,me=(0,B.P)(de),pe=(0,H.y)(),fe=(0,H.W)(null===($=se.data)||void 0===$?void 0:$.id,null===(G=se.data)||void 0===G?void 0:G.categoryTree.id),ve=(0,L.i)(),ye=(0,U.f)(),he=function(e,t){return se.data?R.E.videos(de,e,t):null},ge=!ae(k.E.ViewMyVideosLanding)&&ue.hasCompleted,be=o.a.useBasicFetch(ge&&he(e.cursor,e.typeFilter));(0,S.v)(be);var Ee=(0,T.J)({onRemove:function(e,t){return o.a.getFetch(te)(he(e,t))}}),ke=Ee.uploadingVideos,Ve=Ee.onClickAlternate,Ae=Ee.onClickDelete,Oe=Ee.processingIds,Se=(null===(J=be.data)||void 0===J?void 0:J.data.length)&&Oe?be.data.data.filter(function(e){return!Oe[e.id]}):[];(0,N.V)(Se);var we=(0,O.X)(Se);if(ae(k.E.ViewMyVideosLanding))return r.createElement(q.V,null);function Ce(){return{action:j.e.MyVideos.MY_VIDEOS,application:x.O.MY_VIDEOS,params:{cursor:e.cursor,previous:e.previous,type:e.typeFilter}}}var Fe=!!(null===(z=null==me?void 0:me.items)||void 0===z?void 0:z.length);return r.createElement(E.M.Provider,{value:pe},r.createElement("div",{className:"px-3"},"soft-gate"===oe(k.C.UploadVideo)&&r.createElement(Y.H,null),r.createElement("div",{className:"d-flex justify-content-between"},r.createElement("h1",{className:"h2 mb-0"},r.createElement(y.x,{namespace:X,phrase:"header"})),r.createElement("div",null,r.createElement("div",{className:"d-sm-none"},r.createElement(W.c,{canUpload:ie(k.C.UploadVideo)})),r.createElement("div",{className:"ms-2 d-sm-inline-block d-none"},r.createElement(p.h,{svgName:F.vn.Search,appLink:{application:x.O.SEARCH,action:j.e.Search.HOME,params:{source:u.fi.MyVideos}},className:"btn btn-outline-dark me-2",onClick:ce,analyticsData:{},analyticsOptions:{entity:c.py.SearchResults,location:c.LZ.MyVideos,actionType:c.Vw.Click,descriptor:c.Bk.MyVideos}},r.createElement(y.x,{namespace:X,phrase:"searchMyVideos"})),r.createElement(p.h,{svgName:F.vn.Plus,appLink:{application:x.O.MY_VIDEOS,action:j.e.MyVideos.ADD_FOLDER,args:[null===(ee=se.data)||void 0===ee?void 0:ee.id]},className:"btn btn-outline-dark"},r.createElement(y.x,{namespace:X,phrase:"addFolder"}))))),r.createElement("hr",null),r.createElement(s.p,{handleDragEnd:le,dragOverlayComponent:M.U,source:se.data},r.createElement("div",null,!(null==me?void 0:me.hasCompleted)&&r.createElement(m.i,null),Fe&&r.createElement("div",{className:"mx-n2"},r.createElement(d.$,{folders:me.items,getAppLink:function(e){return{application:x.O.MY_VIDEOS,action:j.e.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,l.m.slugify(e.name)]}},expandFolders:!1,getFolderActions:function(e){return ye("folder",e)},drag:!0,drop:!0})),r.createElement(g.X,{allowBulkAction:!0,allowFilter:!0,checkboxHelper:we,getVideosBulkAction:fe,locationContext:c.LZ.MyVideos,typeFilter:e.typeFilter,getAppLink:function(){return Ce()}}),!!(null==ke?void 0:ke.length)&&r.createElement("div",{className:"position-relative ".concat(Q.uploadingList)},ke.map(function(e){return r.createElement(K.X,{item:e,onClickAlternate:Ve,onClickDelete:Ae,key:e.id,allowBulkAction:!0,categoryId:null})})),function(){var t,n;return ue.data&&be.data?(null==Se?void 0:Se.length)||(null==ke?void 0:ke.length)?r.createElement(r.Fragment,null,r.createElement(b.E4,{videos:Se,getVideoAppLink:function(e,t){var n,r;return D.W.getAppLink(e,Object.assign(Object.assign({},t),{context:V.Q.CategoryTree,contextId:null===(n=se.data)||void 0===n?void 0:n.categoryTree.id,includeContext:null===(r=ue.data)||void 0===r?void 0:r.isAuthenticated}))},presentationAudiences:ve.data,canRemovePrivateVideos:!0,allowBulkAction:!0,getVideosBulkAction:fe,typeFilter:e.typeFilter,checkboxHelper:we,hasPermissions:ie,drag:Fe,getPreviewQuestionsAppLink:function(e){return P.j.getPreviewQuestionsAppLink(e)},commonVideoProps:ne}),!!(null===(n=null===(t=be.data)||void 0===t?void 0:t.pagination)||void 0===n?void 0:n.cursors)&&r.createElement(f.t,{appLink:Ce(),cursors:{next:be.data.pagination.cursors.next,previous:e.cursor},buttonVariant:"outline-dark",className:"py-2 float-end",prevHack:!0})):r.createElement(q.K,{canUpload:ie(k.C.UploadVideo)}):r.createElement("div",{className:"mx-n2"},r.createElement(h.S,{allowBulkActions:!0}))}()))))}},97816:(e,t,n)=>{n.d(t,{V:()=>l,l:()=>c});var r=n(1575),i=n(39902),a=n(31908);function o(e){return e?Array.isArray(e)?e.filter(function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))}):"data"in e?e.data.filter(function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))}):[]:[]}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=o(e).map(function(e){return e.id});(0,i.FN)(n,function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)},null)}function c(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,i.SW)({getRequest:function(t){return r.R.videoMixinAssocs(t,e.flightNamespace)}}).fetchItems;return{fetchObjects:function(e){return t(o(e).map(function(e){return e.id}))}}}}}]);
|
|
2
|
-
//# sourceMappingURL=7742-342db3ce4f-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7742-342db3ce4f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos/my-videos.scss","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos/MyVideosView.tsx","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\n items: { [key: string]: T} | null;\n isFetching: boolean;\n hasCompleted: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching,\n hasCompleted: responses.hasCompleted\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<TResponse, TObjects = string>(\n objs: TObjects[],\n getRequest: (items: TObjects[]) => Flight.Request,\n _getKey?: (obj: TObjects) => string\n) {\n const getKey = _getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const { fetchItems, ...data } = useGrowingBatchFetchFunc<TResponse, TObjects>({ getRequest, _getKey });\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n fetchItems(objs);\n }, [objs?.map(getKey).join(',')]);\n\n return data;\n}\n\ninterface UseGrowingBatchFetchFuncOptions<TObjects> {\n getRequest: (items: TObjects[]) => Flight.Request;\n _getKey?: (obj: TObjects) => string;\n}\n\n/**\n * When you need the useGrowingBatchFetch() behaviour, but need to trigger the\n * fetch manually and update the objects - Nish \n */\nexport function useGrowingBatchFetchFunc<TResponse, TObjects = string>(\n options: UseGrowingBatchFetchFuncOptions<TObjects>\n) {\n const getKey = options._getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n function fetchItems(objs: TObjects[]) {\n if (!objs?.length)\n return;\n\n const unfetchedItems: TObjects[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n \n setRequests(r => ([ ...r, ...ArrayHelper.chunk<TObjects>(unfetchedItems, CHUNK_SIZE).map(options.getRequest) ]));\n }\n\n const responses = Flight.useBasicFetchAll<TResponse[]>(requests);\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce<Record<string, TResponse>>((acc, item) => ({ ...acc, [getKey(item)]: item }), {})\n : null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching,\n fetchItems\n };\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"uploadingList\":\"wg7hV\"};","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { SearchIndices, SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { DragDropMoveContext } from 'libs/shared/components/drag-drop-move/DragDropMoveContext';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoListActions } from 'libs/shared/components/video-list/video-list-actions/VideoListActions';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { BulkCheckboxManager, useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BasePaginatedCollection, CurrentUser, Folder, Library, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DragDropOverlay } from 'shared/components/drag-drop-overlay/DragDropOverlay';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { MyVideosRequests } from 'apps/my-videos/flight-requests/MyVideosRequests';\nimport { useDragDropMove } from 'apps/my-videos/hooks/useDragDropMove';\nimport { useUploadItems } from 'apps/my-videos/hooks/useUploadItems';\nimport { useGetFolderActions } from 'apps/my-videos/utils/getFolderActions';\nimport { MyVideosEmptyState, MyVideosPublicEmptyState } from 'apps/my-videos/views/my-videos/empty-state/MyVideosEmptyState';\nimport { useMyVideosViewActions, useMyVideosViewBulkActions } from 'apps/my-videos/views/my-videos/MyVideosViewUtils';\nimport { SoftGateBanner } from 'apps/sign-up/components/soft-gate-banner/SoftGateBanner';\nimport { UploadFileSelect } from 'apps/upload/components/upload-file-select/UploadFileSelect';\nimport { UploadingItem } from 'apps/upload/components/uploading-item/UploadingItem';\n\nimport styles from './my-videos.scss';\n\nconst namespace = 'default.myVideos';\n\ninterface MyVideosViewProps {\n cursor?: string;\n previous?: string;\n typeFilter?: SearchIndices[];\n}\n\nexport function MyVideosView(props: MyVideosViewProps): JSX.Element {\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n const dispatch = useDispatch();\n\n const { commonVideoProps } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n const { hasPermissions, hasLocalPermissions, getGatedPermission } = usePermissions();\n const { handleDragEnd } = useDragDropMove();\n\n const { focusSearchBar } = useFocusSearchBar();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const workspace = Flight.useBasicFetch<Library>(\n currentUser.data?.isAuthenticated && UserRequests.workspace()\n );\n const folderId = workspace.data?.categoryTree?.id;\n const folders = useFetchAllChildFolders(folderId);\n \n const videoActions = useMyVideosViewActions();\n const getVideosAction = useMyVideosViewBulkActions(workspace.data?.id, workspace.data?.categoryTree.id);\n\n const audiences = usePresentationAudiences();\n const getFolderActions = useGetFolderActions();\n\n const getMyVideosRequest = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n if (!workspace.data)\n return null;\n\n // Delete the above when master supports the new assoc types.\n return MyVideosRequests.videos(folderId, cursor, typeFilter);\n };\n\n const fetchNext = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n return Flight.getFetch(dispatch)(getMyVideosRequest(cursor, typeFilter));\n };\n\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMyVideosLanding) && currentUser.hasCompleted;\n\n const videos = Flight.useBasicFetch<BasePaginatedCollection<VideoTypes>>(\n shouldFetch && getMyVideosRequest(props.cursor, props.typeFilter)\n );\n\n useHandleObjectError(videos);\n\n const {\n uploadingVideos,\n onClickAlternate,\n onClickDelete,\n processingIds\n } = useUploadItems({ onRemove: fetchNext });\n\n const omittedVideos = videos.data?.data.length && processingIds\n ? videos.data.data.filter(v => !processingIds[v.id])\n : [];\n \n useVideoMixin(omittedVideos);\n\n const CheckboxHelper: BulkCheckboxManager = useBulkCheckboxManager(omittedVideos);\n\n if (hasLocalPermissions(LocalPermissionName.ViewMyVideosLanding))\n return <MyVideosPublicEmptyState />;\n\n function getMyVideosAppLink(): Core.AppLink {\n return {\n action: Actions.MyVideos.MY_VIDEOS,\n application: AppChannels.MY_VIDEOS,\n params: { cursor: props.cursor, previous: props.previous, type: props.typeFilter }\n };\n }\n\n function getCursors(): Cursors {\n return { next: videos.data.pagination.cursors.next, previous: props.cursor };\n }\n \n const hasFolders = !!folders?.items?.length;\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='px-3'>\n {getGatedPermission(PermissionName.UploadVideo) === 'soft-gate' && <SoftGateBanner />}\n <div className='d-flex justify-content-between'>\n <h1 className='h2 mb-0'><Text namespace={namespace} phrase='header' /></h1>\n <div>\n <div className='d-sm-none'>\n <UploadFileSelect canUpload={hasPermissions(PermissionName.UploadVideo)} />\n </div>\n <div className='ms-2 d-sm-inline-block d-none'>\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.MyVideos\n }\n }}\n className='btn btn-outline-dark me-2'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.MyVideos,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.MyVideos\n }}\n >\n <Text namespace={namespace} phrase='searchMyVideos' />\n </IconButton>\n <IconButton\n svgName={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.ADD_FOLDER,\n args: [workspace.data?.id]\n }}\n className='btn btn-outline-dark'\n >\n <Text namespace={namespace} phrase='addFolder' />\n </IconButton>\n </div>\n </div>\n </div>\n <hr />\n <DragDropMoveContext\n handleDragEnd={handleDragEnd}\n dragOverlayComponent={DragDropOverlay}\n source={workspace.data}>\n <div>\n {!folders?.hasCompleted && <PartialFolderList />}\n {hasFolders &&\n <div className='mx-n2'>\n <FolderList\n folders={folders.items}\n getAppLink={(f: Folder) => ({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ f.id, TextHelper.slugify(f.name) ]\n })}\n expandFolders={false}\n getFolderActions={f => getFolderActions('folder', f)}\n drag\n drop\n />\n </div>\n }\n <VideoListActions\n allowBulkAction\n allowFilter\n checkboxHelper={CheckboxHelper}\n getVideosBulkAction={getVideosAction}\n locationContext={LocationContext.MyVideos}\n typeFilter={props.typeFilter}\n getAppLink={() => getMyVideosAppLink()}\n />\n {!!uploadingVideos?.length && (\n <div className={`position-relative ${styles.uploadingList}`}>\n {uploadingVideos.map(uploadingVideo => (\n <UploadingItem\n item={uploadingVideo}\n onClickAlternate={onClickAlternate}\n onClickDelete={onClickDelete}\n key={uploadingVideo.id}\n allowBulkAction\n categoryId={null}\n />\n ))}\n </div>\n )}\n {(() => {\n if (!currentUser.data || !videos.data)\n return <div className='mx-n2'><PartialVideoList allowBulkActions /></div>;\n\n if (!omittedVideos?.length && !uploadingVideos?.length)\n return <MyVideosEmptyState canUpload={hasPermissions(PermissionName.UploadVideo)} />;\n\n return (\n <>\n <VideoList\n videos={omittedVideos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: RelatedVideosContext.CategoryTree,\n contextId: workspace.data?.categoryTree.id,\n includeContext: currentUser.data?.isAuthenticated\n })}\n presentationAudiences={audiences.data}\n canRemovePrivateVideos\n allowBulkAction\n getVideosBulkAction={getVideosAction}\n typeFilter={props.typeFilter}\n checkboxHelper={CheckboxHelper}\n hasPermissions={hasPermissions}\n drag={hasFolders}\n getPreviewQuestionsAppLink={interactive =>\n InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={commonVideoProps}\n />\n {!!videos.data?.pagination?.cursors && (\n <Pagination\n appLink={getMyVideosAppLink()}\n cursors={getCursors()}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n prevHack\n />\n )}\n </>\n );\n })()}\n </div>\n </DragDropMoveContext>\n </div>\n </VideoActionsContext.Provider>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGrowingBatchFetch, useGrowingBatchFetchFunc } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}) {\n const videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(\n videoIds,\n ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace),\n null\n );\n}\n\nexport function useVideoMixinFunc(options: VideoMixinOptions = {}) {\n function getRequest(ids: string[]): Flight.Request {\n return VideoRequests.videoMixinAssocs(ids, options.flightNamespace);\n }\n \n function fetchObjects(items: Types) {\n return fetchItems(getValidObjects(items).map(v => v.id));\n }\n\n const { fetchItems } = useGrowingBatchFetchFunc({ getRequest });\n\n return { fetchObjects };\n}"],"names":["CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","itemsArr","data","items","length","reduce","acc","item","id","isFetching","hasCompleted","useGrowingBatchFetch","objs","_getKey","getKey","obj","useGrowingBatchFetchFunc","fetchItems","join","options","fetchedItems","Set","setRequests","hasFirstRequestCompleted","unfetchedItems","forEach","key","current","has","push","add","r","namespace","MyVideosView","props","useSetPageMetadata","title","LanguageService","dispatch","commonVideoProps","useCommonVideoProps","locationContext","usePermissions","hasPermissions","hasLocalPermissions","getGatedPermission","handleDragEnd","useDragDropMove","focusSearchBar","currentUser","UserRequests","workspace","isAuthenticated","folderId","categoryTree","folders","videoActions","getVideosAction","audiences","usePresentationAudiences","getMyVideosRequest","cursor","typeFilter","MyVideosRequests","shouldFetch","videos","useUploadItems","onRemove","uploadingVideos","onClickAlternate","onClickDelete","processingIds","omittedVideos","filter","v","useVideoMixin","CheckboxHelper","useBulkCheckboxManager","getMyVideosAppLink","action","application","params","previous","type","hasFolders","VideoActionsContext","value","className","PermissionName","SoftGateBanner","Text","phrase","UploadFileSelect","canUpload","IconButton","svgName","appLink","source","onClick","analyticsData","analyticsOptions","entity","location","actionType","descriptor","args","DragDropMoveContext","dragOverlayComponent","DragDropOverlay","PartialFolderList","FolderList","getAppLink","f","TextHelper","name","expandFolders","getFolderActions","drag","drop","VideoListActions","allowBulkAction","allowFilter","checkboxHelper","getVideosBulkAction","uploadingVideo","UploadingItem","categoryId","VideoList","getVideoAppLink","opts","VideoAppLinkHelper","context","RelatedVideosContext","contextId","includeContext","presentationAudiences","canRemovePrivateVideos","getPreviewQuestionsAppLink","interactive","InteractiveHelper","pagination","cursors","Pagination","next","buttonVariant","prevHack","MyVideosEmptyState","PartialVideoList","allowBulkActions","getValidObjects","objects","Array","isArray","o","videoIds","ids","flightNamespace","useVideoMixinFunc","fetchObjects"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7843-f6033528ce-lite.chunk.js","mappings":"mHAAA,IAAYA,E,iBAAZ,SAAYA,GACV,kBACA,oBACA,wCACA,8DACA,oEACA,wBACA,8BACA,iBACD,CATD,CAAYA,IAAAA,EAAY,I,mCCEjB,IAAMC,EAAuB,CAClCC,YAAW,WACT,MAAO,CACLC,IAAK,mCACLC,IAAK,mBACLC,WAAW,EAEf,EAEAC,oBAAmB,WACjB,MAAO,CACLH,IAAK,4CACLC,IAAK,4BACLC,WAAW,EAEf,EAEAE,mBAAkB,WAChB,MAAO,CACLJ,IAAK,2CACLC,IAAK,2BACLC,WAAW,EAEf,EAEAG,WAAU,WACR,MAAO,CACLL,IAAK,mCACLC,IAAK,mBACLC,WAAW,EAEf,EAEAI,MAAK,WACH,MAAO,CACLN,IAAK,6BACLC,IAAK,aACLC,WAAW,EAEf,EAEAK,kBAAiB,WACf,MAAO,CACLP,IAAK,0CACLC,IAAK,0BACLC,WAAW,EAEf,EAEAM,iBAAgB,WACd,MAAO,CACLR,IAAK,yCACLC,IAAK,yBACLC,WAAW,EAEf,E,mHCzBI,SAAUO,EAAoBC,G,QAC5BC,EAAwBD,EAAME,gBAAkBF,EAAMG,eAAe,kBACrEC,GAAe,QAAgB,IAE/BC,EAAqC,QAAlB,EAAAL,EAAMM,oBAAY,QAAI,IACzCC,EAAsC,QAAhB,EAAAP,EAAMQ,kBAAU,QAAI,IAEhD,OAAIR,EAAMS,SAAWT,EAAMU,UAAUC,mBAC5B,gBAACN,EAAgB,MAErBL,EAAMU,UAAUE,WAAWC,OAI9B,uBAAKC,UAAWd,EAAMc,WACpB,gBAAC,IAAa,CACZF,WAAYZ,EAAMU,UAAUE,WAC5BG,cAAef,EAAMU,UAAUK,cAAcC,MAC7CC,gBAAiBjB,EAAMU,UAAUO,gBAAgBD,MACjDE,0BAA2BlB,EAAMU,UAAUQ,0BAA0BC,SACrEC,iBAAkB,SAAAC,GAAG,OAAI,QAAsB,CAC7CC,MAAOD,EAAIC,MACXC,aAAcF,EAAIE,aAClBC,eAAgBpB,EAAaqB,sBAC7BC,YAAazB,EACb0B,SAAU3B,EAAM2B,SAChBC,YAAa5B,EAAM4B,aACnB,EACFC,mBAAiB,EACjBD,YAAa5B,EAAM4B,YACnBE,YAAa9B,EAAM8B,YACnBC,WAAY/B,EAAM+B,WAClBC,gBAAiBhC,EAAMiC,kBAEvBjC,EAAMU,UAAUwB,SAAWlC,EAAMU,UAAUyB,aAC3C,gBAAC,IAAoB,CACnBA,WAAYnC,EAAMU,UAAUyB,WAC5BC,UAAWpC,EAAMU,UAAU0B,UAC3BC,WAAYrC,EAAMU,UAAU2B,cA3B3B,gBAAC9B,EAAmB,KAgC/B,C,mWChEM+B,EAAYC,EAAA,mBADA,6BAWZC,EAAuD,CAC3D,uBAAwB,qBACxB,sBAAuB,qBACvB,iBAAkB,iBAGdC,EAAwE,CAC5E,uBAAwB,SACxB,sBAAuB,SACvB,iBAAkB,QAGd,SAAUC,EAAe1C,G,MAC7B,OACE,uBAAKc,WAAW,OAAW,kCAAmCd,EAAMc,YAClE,2BACE,gBAAC6B,EAAA,EAAU,CACTC,QAAS,gBACTC,QAASC,EAAAC,EAAA,SACTC,QAASP,EAAezC,EAAMiD,MAC9BC,YAAY,QACZC,oBAAoB,SAGxB,sBAAIrC,UAAU,UACD,QAAV,EAAAd,EAAMoD,YAAI,QAAId,EAAUE,EAAcxC,EAAMiD,QAIrD,C,yDC9CM,EAAY,mCAEZ,SAAUI,IACd,OACE,uBAAKvC,UAAU,MACb,gBAACwC,EAAA,EAAI,CAACC,UAAW,EAAWC,OAAO,0BAGzC,CCXA,SAAgB,oBAAsB,QAAQ,yBAA2B,SCSzE,SAASC,IACP,OACE,uBACE3C,WAAW,OAAW,oEAAqE,wBAE3F,0BACEA,WAAW,OAAW,MAAO,8BAG/B,uBAAKA,UAAU,gCACb,wBAAMA,UAAU,wCAChB,wBAAMA,UAAU,oCAKxB,CAEM,SAAU4C,EAA6B1D,GAC3C,OACE,uBAAKc,UAAU,mCACZ6C,MAAMC,KAAK,CAAE/C,OAAQb,EAAM6D,OAAQC,IAAI,SAACC,EAAGC,GAAK,OAAK,gBAACP,EAA2B,CAAClE,IAAKyE,GAAS,GAGvG,CChBA,IAAM,EAAY,mCAMlB,SAASC,EAAqBjE,GAC5B,IAAMkE,EAAgBlE,EAAMmE,UAAUC,WAAWC,KAAKC,OAAO,SAAAC,GAAC,OAAIA,EAAEC,OAAS,YAAqB,GAAE3D,OAE9F4D,GAAmB,OAA6BzE,EAAMmE,UAAUO,KAAM,KAE5E,OACE,gBAACC,EAAA,EAAO,CACN7D,WAAW,OAAW,oEAAqE,uBAC3F8D,QAAS,CACPC,YAAa,eACbC,OAAQ,8BACRC,KAAM,CAAC/E,EAAMmE,UAAUa,MAGzB,0BACElE,WAAW,OAAW,MAAO,2BAAiC2D,KAGhE,uBAAK3D,UAAU,gCACb,wBAAMA,UAAU,aAAad,EAAMmE,UAAUO,MAC7C,wBAAM5D,UAAU,cACboD,EACG,gBAACZ,EAAA,EAAI,CAACC,UAAW,EAAWC,OAAO,gBAAgByB,QAAS,CAAEC,WAAYhB,KAC1E,gBAACZ,EAAA,EAAI,CAACC,UAAW,EAAWC,OAAO,iBAMjD,CASM,SAAU2B,EAAsBnF,G,QAC9BoF,EAAsC,QAAzB,EAAApF,EAAMqF,2BAAmB,QAAIhC,EAC1CiC,EAA0C,QAA3B,EAAAtF,EAAMuF,6BAAqB,QAAI7B,EAEpD,OAAI1D,EAAMW,mBACD,gBAAC2E,EAAY,CAACzB,KAAM,IAExB7D,EAAMwF,YAAexF,EAAMwF,WAAW3E,OAIzC,uBAAKC,UAAU,mCACZd,EAAMwF,WAAW1B,IAAI,SAAAK,GAAS,OAC7B,gBAACF,EAAoB,CAAC1E,IAAK4E,EAAUa,GAAIb,UAAWA,GAAa,IAL9D,gBAACiB,EAAU,KAStB,C,0BC3CM,EAAY,gCACZ,EAAY7C,EAAA,mBAAiC,GAQnD,SAASkD,EAAwBzF,GAC/B,OACE,uBAAKc,UAAU,mEACb,gBAAC4B,EAAc,CAACO,KAAMjD,EAAMiD,OAC3BjD,EAAM4E,UAAY5E,EAAM0F,YACvB,gBAACf,EAAA,EAAO,CAACC,QAAS5E,EAAM4E,SACtB,gBAACtB,EAAA,EAAI,CAACC,UAAW,EAAWC,OAAO,YAK7C,CAEM,SAAUmC,I,uBACd,EAAAC,EAAA,GAAmB,CACjBC,MAAO,EAAU,eAGnB,IAAMjE,GAAc,EAAAkE,EAAA,KACZnE,GAAa,EAAAoE,EAAA,KAAbpE,SACAxB,GAAmB,EAAA6F,EAAA,KAAnB7F,eACAD,GAAmB,EAAA+F,EAAA,GAAY,MAA/B/F,eAEFgG,EAAc,kBAAkCC,EAAA,iBAChDC,EAAS,kBAA6BC,EAAA,YACtCC,EAAkB,kBACtBlH,EAAA,yBAEI2C,EAAa,mBACD,QAAhB,EAAAmE,EAAY7B,YAAI,eAAEkC,kBAAmBC,EAAA,aAA4BN,EAAY7B,KAAKoC,aAE9EC,EAAY,kBAAwCC,EAAA,kBACpDC,GAA6B,QAAd,EAAAF,EAAUrC,YAAI,eAAEwC,SAAoC,SAA1BH,EAAUrC,KAAKwC,OACxDnG,GAAY,EAAAoG,EAAA,GAAe,CAC/BC,qBAAqB,EACrBC,YAAa9G,EACb+G,OAAQ,CACNhE,KAAM,CAACiE,EAAA,WAGLC,EAAsB,kBAC1BC,EAAA,sBACkB,QAAhB,EAAAlB,EAAY7B,YAAI,eAAEW,GACF,QAAhB,EAAAkB,EAAY7B,YAAI,eAAEoC,WAClB,CAAEY,cAAc,EAAMC,MAAO,KAyB3BC,KAAWnB,EAAO/B,MAAUiC,EAAgBjC,MAAUtC,EAAWsC,MAAU8C,EAAoB9C,MAErG,OACE,uBAAKvD,UAAU,QACb,gBAAC0G,EAAA,EAAgB,CACfC,UAAU,WACVC,QA1BG,CAAC,CACNC,MAAOpF,EAAA,YAA0B,EAAW,gBAC5CqC,QAAS,CACPC,YAAa,eACbC,OAAQ,8BAEVlC,QAAS,UACT9B,UAAW,uBACX8G,SAAUhB,EACViB,QAASjB,EAAe,EAAU,uBAAyB,GAC3DkB,iBAAkB,CAChBC,WAAY,YACZC,OAAQ,eACRC,cAAe,WACfC,SAAU,qBAEZC,QAASvG,EAAYwG,KAWnBxB,aAAcA,EACd1G,eAAgBA,IAGlB,2BAASY,UAAU,QACjB,gBAAC2E,EAAuB,CACtBxC,KAAK,sBACL2B,QAAS,CACPC,YAAa,eACbC,OAAQ,yBAEVY,aAA2C,QAA9B,EAAwB,QAAxB,EAAAyB,EAAoB9C,YAAI,eAAEA,YAAI,eAAExD,UAG/C,gBAACsE,EAAqB,CACpBxE,oBAAqB4G,EACrB/B,WAAoC,QAAxB,EAAA2B,EAAoB9C,YAAI,eAAEA,QAI1C,2BAASvD,UAAU,QACjB,gBAAC2E,EAAuB,CACtBxC,KAAK,iBACL2B,QAAS,CACPC,YAAa,eACbC,OAAQ,gCAEVY,aAAiC,QAApB,EAAAhF,EAAUE,kBAAU,eAAEC,UAGrC,gBAACd,EAAA,EAAmB,CAClBU,SAAU8G,EACV7G,UAAWA,EACXR,eAAgBA,EAChBC,eAAgBA,EAChByB,YAAaA,EACbD,SAAUA,EACVG,YAAwB,QAAX,EAAAsE,EAAO/B,YAAI,eAAEvC,YAC1BC,WAAYA,EAAWsC,KACvBvD,UAAU,OACVN,WAAY,W,MAAM,OAChB,gBAAC6H,EAAA,EAAmB,CAClBC,QAAS,EAAU,eACnBhC,gBAAiBA,EAAgBjC,KACjCzC,YAAaA,EACbE,YAAwB,QAAX,EAAAsE,EAAO/B,YAAI,eAAEvC,YAC1BC,WAAYA,EAAWsC,KACvBvD,UAAU,OACVyH,UAAWrB,EAAA,QAEd,KAMX,C,+DC/IM,GAAY,yCACZ,GAAY3E,EAAA,mBAAiC,IAC7CiG,GAA0B,wBAE1B,SAAUC,K,aACd,EAAA7C,EAAA,GAAmB,CACjBC,MAAO,GAAU,eAGnB,IAAMjE,GAAc,EAAAkE,EAAA,KACZnE,GAAa,EAAAoE,EAAA,KAAbpE,SACR,GAA+C,EAAAqE,EAAA,KAAvC7F,EAAc,EAAdA,eAAgBuI,EAAkB,EAAlBA,mBAChBxI,GAAmB,EAAA+F,EAAA,GAAY,MAA/B/F,eAEFyI,EAAgCD,EAAmBE,GAAA,kBAEnD1C,EAAc,kBAAkCC,EAAA,iBAChDC,EAAS,kBAA6BC,EAAA,YACtCC,EAAkB,kBACtBlH,EAAA,yBAEI2C,EAAa,mBACD,QAAhB,EAAAmE,EAAY7B,YAAI,eAAEkC,kBAAmBC,EAAA,aAA4BN,EAAY7B,KAAKoC,aAE9E/F,GAAY,EAAAoG,EAAA,GAAe,CAC/BC,qBAAqB,EACrBC,YAAa9G,EACb+G,OAAQ,CACNhE,KAAM,CAACiE,EAAA,WAILK,IAAWnB,EAAO/B,QAAUiC,EAAgBjC,QAAUtC,EAAWsC,KAEvE,OACE,uBAAKvD,UAAU,QACsB,cAAlC6H,GAAiD,gBAACE,GAAA,EAAc,MACjE,gBAACrB,EAAA,EAAgB,CACfC,UAAU,aACVb,cAAc,EACd1G,eAAgBA,EAChB4I,UAAQ,IAGyB,cAAlCH,GAAmF,cAAlCA,GAChD,2BAAS7H,UAAU,QACjB,gBAAC4B,EAAc,CAACO,KAAK,yBAErB,uBAAKnC,UAAU,kHACb,2BACE,gBAACwC,EAAA,EAAI,CAACC,UAAW,GAAWC,OAAO,uBAAuB,IAC1D,gBAACuF,GAAA,EAAY,CACXC,KAAMC,GAAA,gBAAmC,QAAX,EAAA7C,EAAO/B,YAAI,eAAE6E,iBAAkBV,IAA0B1H,UAAU,iBACjGqI,QAAM,GAEN,gBAAC7F,EAAA,EAAI,CAACC,UAAW,GAAWC,OAAO,gBAGvC,2BACE,gBAACmB,EAAA,EAAO,CACN7D,UAAU,sCACV8D,QAAS,CACPC,YAAa,YACbC,OAAQ,oBAEVsE,cAAe,CAAC,EAChBtB,iBAAkB,CAChBC,WAAY,WACZG,SAAU,eACVF,OAAQ,aACRqB,WAAY,aACZpB,cAAe,aAGjB,gBAAC3E,EAAA,EAAI,CAACC,UAAW,GAAWC,OAAO,0BAO7C,2BAAS1C,UAAU,QACkB,cAAlC6H,GAAmF,cAAlCA,GAChD,gBAACjG,EAAc,CAACO,KAAK,mBAGtBsE,GACD,gCACE,gBAACc,EAAA,EAAmB,CAClBC,QAAS,GAAU,eACnBhC,gBAAiBA,EAAgBjC,KACjCzC,YAAaA,EACbE,YAAwB,QAAX,EAAAsE,EAAO/B,YAAI,eAAEvC,YAC1BC,WAAYA,EAAWsC,KACvBvD,UAAU,OACVyH,UAAWrB,EAAA,SAGb,gBAACnH,EAAA,EAAmB,CAClBW,UAAWA,EACXR,eAAgBA,EAChBC,eAAgBA,EAChByB,YAAaA,EACbD,SAAUA,EACVG,YAAwB,QAAX,EAAAsE,EAAO/B,YAAI,eAAEvC,YAC1BC,WAAYA,EAAWsC,KACvBvD,UAAU,OACVN,WAAY,WAAF,OAAQ,gCAAK,EACvByB,gBAAc,MAQ1B,CCpIM,SAAUqH,GAAetJ,GAC7B,OAAgC,EAAAuJ,EAAA,KAAxBC,EAAU,EAAVA,WAAY/I,EAAO,EAAPA,QACZP,GAAmB,EAAA+F,EAAA,GAAY,MAA/B/F,eAER,OAAIO,EACK,iCAEU,SAAf+I,GACF,aAAuB,IAAIC,EAAA,GACpB,kCAGU,SAAfD,GAAyBtJ,EACpB,gBAACyF,EAAsB,MAGb,SAAf6D,GAA0BtJ,EAIvB,gBAACuI,GAA+B,MAH9B,gBAACiB,EAAAA,6BAA4B,CAACC,MAAO3J,EAAM2J,OAItD,C,uGCtCA,SAAgB,WAAa,SCe7B,IACMrH,EAAYC,EAAA,mBADA,yBAaZ,SAAU8F,EAAoBrI,G,MAC5B4J,EAAW5J,EAAM4B,YAAYwG,IAAMpI,EAAM4B,YAAYiI,GAErD,EAAU7J,EAAMuI,YAAcrB,EAAA,OAAiB,KAAuC,KAmBtF4C,EAAqB9J,EAAMuI,YAAcrB,EAAA,OAC3C,KACA,KAEExG,EAAS,+BACVoJ,GAAkB,CACrBvI,aAtBO,OAAP,wBACKvB,EAAMsG,iBAAe,CACxBtB,GAAI,QAuBR,OACE,uBAAKlE,UAAWd,EAAMc,WACpB,gBAAC,IAAoB,CAACwH,QAAsB,QAAb,EAAAtI,EAAMsI,eAAO,QAAIhG,EAAU,eAAgByH,SAAS,IAEnF,uBAAKjJ,UAAS,UAAK,aAAiB,oBAClC,gBAACkJ,EAAA,EAAgB,CACftJ,UAAWA,EACXU,iBA1BR,WACE,MAAO,CAAC,OAAD,wBAEA,MAAoB,CACvB+G,QAASyB,EACThF,QAAA,IAGN,EAmBQ9C,YAAa9B,EAAM8B,YACnBC,WAAY/B,EAAM+B,WAClBH,YAAa5B,EAAM4B,YACnBd,UAAU,kBACV8D,QAAU,WAAH,OAAS,CAAO,KAKjC,C,mCC7EO,IAAMqF,EAAsB,Q,iLCiB7B3H,EAAY,qBADA,yBAKL4H,EAA6B,CACxCjH,KAAM,SACNkH,QAAS,iBACTC,SAAU,IACVC,aAAc,gBACdC,UAAW,GACXC,YAAa,GACbC,aAAa,IAAIC,MAAOC,cACxBC,YAAY,IAAIF,MAAOC,cACvBE,WAAY,KACZC,KAAM,CACJC,kBAAmB,GACnBC,aAAc,IAEhBC,QAAS,IACTC,gBAAiB,EACjBC,QAAS,EACTC,WAAY,GACZlG,QAAS,CACPmG,kBAAkB,EAClBC,mBAAmB,IAIVC,EAAkC,+BAC1CpB,GAAmB,CACtBjH,KAAM,SACN2H,WAAY,QAAe,IAAIH,KAAKP,EAAoBM,aAAc,GAAI,QAAQE,cAClFP,QAAS,cAGEoB,EAAoD,CAC/DjK,MAAO4I,EACP3I,aAAc,KACdN,gBAAiB,KACjB0J,WAAY,aAAoB,IAAIF,KArCR,EAqCuC,QAAQC,eAGhEc,EAA6C,+BACrDD,GAA8B,CACjCjK,MAAOgK,IAGIG,EAAsC,CACjD5G,YAAa,cACbC,OAAQ,wCAGG4G,EAAqD,CAChE7G,YAAa,cACbC,OAAQ,uDAGG6G,EAAsC,CACjD/I,QAAS,eACT+E,MAAOrF,EAAU,gBACjBsC,QAAS6G,EACTG,MAAO,WACP9K,UAAW,uB,oHCrEPyC,EAAY,wBAEZ,SAAUsF,IACd,OACE,uBAAKrE,KAAK,QAAQ1D,UAAU,0EAC1B,gBAAC,IAAY,CAAC8B,QAAS,iBAA0BiB,KAAM,EAAAd,EAAA,QACvD,gBAAC,IAAI,CAACQ,UAAWA,EAAWC,OAAO,aAAa,IAChD,gBAAC,IAAO,CACNoB,QAAS,CACPC,YAAa,YACbC,OAAQ,6BAEVhE,UAAU,mDAEV,gBAAC,IAAI,CAACyC,UAAWA,EAAWC,OAAO,eAI3C,C","sources":["file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/classrooms/components/open-classrooms-table/OpenClassroomsTable.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-label/ClassroomLabel.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/pinned-classrooms-tiles/empty-state/EmptyPinnedClassroomsTiles.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/pinned-classrooms-tiles/pinned-classrooms-tiles.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/pinned-classrooms-tiles/partial-loading/PartialPinnedClassroomsTiles.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/pinned-classrooms-tiles/PinnedClassroomsTiles.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/classrooms-overview/ClassroomsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/minimal-classrooms-experience/MinimalClassroomsExperienceView.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/classrooms/ClassroomsView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/my-shares-demo-insights.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight.tsx","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/sign-up/components/soft-gate-banner/SoftGateBanner.tsx"],"sourcesContent":["export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","import React from 'react';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { YearGroup } from 'libs/shared/interfaces';\n\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { MySharesTableEmptyState } from 'apps/my-shares/components/my-shares-table/empty-state/MySharesTableEmptyState';\nimport { MySharesTable } from 'apps/my-shares/components/my-shares-table/MySharesTable';\nimport { PartialMySharesTable } from 'apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable';\nimport { getShareObjectActions, getSharesParams } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\ninterface OpenClassroomsTableProps {\n shareData: ReturnType<typeof useSharesTable>;\n hasShareFlowV2: boolean;\n hasPermissions: HasPermissionsFunc;\n breakpoints: Breakpoints;\n isPlugin: boolean;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n hasDemoInsight?: boolean;\n\n emptyState?: () => JSX.Element;\n loadingState?: () => JSX.Element;\n\n className?: string;\n loading?: boolean;\n}\n\nexport function OpenClassroomsTable(props: OpenClassroomsTableProps) {\n const hasInsightsPermission = props.hasShareFlowV2 && props.hasPermissions(PermissionName.ViewInsights);\n const sharesParams = getSharesParams([]);\n\n const LoadingComponent = props.loadingState ?? PartialMySharesTable;\n const EmptyStateComponent = props.emptyState ?? MySharesTableEmptyState;\n \n if (props.loading || props.shareData.showPartialLoading)\n return <LoadingComponent />;\n\n if (!props.shareData.sentShares.length)\n return <EmptyStateComponent />;\n\n return (\n <div className={props.className}>\n <MySharesTable\n sentShares={props.shareData.sentShares}\n sharedObjects={props.shareData.sharedObjects.items}\n shareRecipients={props.shareData.shareRecipients.items}\n interactivesPendingReview={props.shareData.interactivesPendingReview.itemsArr}\n getObjectActions={row => getShareObjectActions({\n share: row.share,\n sharedObject: row.sharedObject,\n audienceParams: sharesParams.audienceAppLinkParams,\n hasInsights: hasInsightsPermission,\n isPlugin: props.isPlugin,\n breakpoints: props.breakpoints\n })}\n groupByDateShared\n breakpoints={props.breakpoints}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n hasDemoInsights={props.hasDemoInsight}\n />\n {(props.shareData.hasMore || props.shareData.isFetching) &&\n <InfiniteScrollFooter\n isFetching={props.shareData.isFetching}\n fetchNext={props.shareData.fetchNext}\n nextCursor={props.shareData.nextCursor}\n />\n }\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'classrooms.classroomLabel';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport type ClassroomLabelType = 'my-school-classrooms' | 'favourite-classroom' | 'open-classroom';\n\ninterface ClassroomLabelProps {\n type: ClassroomLabelType;\n className?: string;\n text?: string;\n}\n\nconst TypePhraseMap: {[key in ClassroomLabelType]: string} = {\n 'my-school-classrooms': 'mySchoolClassrooms',\n 'favourite-classroom': 'favouriteClassroom',\n 'open-classroom': 'openClassroom'\n};\n\nconst TypeVariantMap: {[key in ClassroomLabelType]: ButtonProps['variant']} = {\n 'my-school-classrooms': 'purple',\n 'favourite-classroom': 'purple',\n 'open-classroom': 'blue'\n};\n\nexport function ClassroomLabel(props: ClassroomLabelProps): JSX.Element {\n return (\n <div className={classNames('d-flex align-items-center gap-2', props.className)}>\n <div>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Standard}\n variant={TypeVariantMap[props.type]}\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n <h2 className='h4 m-0'>\n {props.text ?? getPhrase(TypePhraseMap[props.type])}\n </h2>\n </div>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'classrooms.pinnedClassroomsTiles';\n\nexport function EmptyPinnedClassroomsTiles(): JSX.Element {\n return (\n <div className='py'>\n <Text namespace={namespace} phrase='emptyPinnedClassrooms' />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pinnedClassroomTile\":\"jgtOl\",\"pinnedClassroomTileImage\":\"TRhIX\"};","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport styles from '../pinned-classrooms-tiles.scss';\n\ninterface PartialPinnedClassroomsTilesProps {\n size: number;\n}\n\nfunction PartialPinnedClassroomsTile(): JSX.Element {\n return (\n <div\n className={classNames('d-flex flex-column rounded overflow-hidden border border-gray-200', styles.pinnedClassroomTile)}\n >\n <figure\n className={classNames('m-0', styles.pinnedClassroomTileImage)}\n />\n\n <div className='d-flex flex-column gap-2 p-2'>\n <span className='partial-loading-background p-2 w-50'></span>\n <span className='partial-loading-background p-2'>\n </span>\n </div>\n </div>\n );\n}\n\nexport function PartialPinnedClassroomsTiles(props: PartialPinnedClassroomsTilesProps): JSX.Element {\n return (\n <div className='d-flex flex-row flex-wrap gap-3'>\n {Array.from({ length: props.size }).map((_, index) => <PartialPinnedClassroomsTile key={index} />)}\n </div>\n );\n}","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { Classroom, EnrolmentRole } from 'libs/shared/interfaces';\nimport { getDeterministicBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { EmptyPinnedClassroomsTiles } from './empty-state/EmptyPinnedClassroomsTiles';\nimport { PartialPinnedClassroomsTiles } from './partial-loading/PartialPinnedClassroomsTiles';\n\nimport styles from './pinned-classrooms-tiles.scss';\n\nconst namespace = 'classrooms.pinnedClassroomsTiles';\n\ninterface PinnedClassroomsTileProps {\n classroom: Classroom;\n}\n\nfunction PinnedClassroomsTile(props: PinnedClassroomsTileProps): JSX.Element {\n const studentsCount = props.classroom.enrolments.data.filter(e => e.role === EnrolmentRole.Student).length;\n\n const bgColorClassName = getDeterministicBgColorClass(props.classroom.name, BG_COLOUR_CLASS_NAMES);\n\n return (\n <AppLink\n className={classNames('d-flex flex-column rounded overflow-hidden border border-gray-400', styles.pinnedClassroomTile)}\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.CLASSROOM_HOME,\n args: [props.classroom.id]\n }}\n >\n <figure\n className={classNames('m-0', styles.pinnedClassroomTileImage, bgColorClassName)}\n />\n\n <div className='d-flex flex-column gap-1 p-2'>\n <span className='fw-medium'>{props.classroom.name}</span>\n <span className='text-muted'>\n {studentsCount\n ? <Text namespace={namespace} phrase='studentsCount' options={{ smartCount: studentsCount }} />\n : <Text namespace={namespace} phrase='noStudents' />\n }\n </span>\n </div>\n </AppLink>\n );\n}\n\ninterface PinnedClassroomsTilesProps {\n classrooms: Classroom[];\n showPartialLoading: boolean;\n emptyStateComponent?: () => JSX.Element;\n loadingStateComponent?: () => JSX.Element;\n}\n\nexport function PinnedClassroomsTiles(props: PinnedClassroomsTilesProps): JSX.Element {\n const EmptyState = props.emptyStateComponent ?? EmptyPinnedClassroomsTiles;\n const LoadingState = props.loadingStateComponent ?? PartialPinnedClassroomsTiles;\n\n if (props.showPartialLoading)\n return <LoadingState size={5} />;\n \n if (!props.classrooms || !props.classrooms.length)\n return <EmptyState />;\n \n return (\n <div className='d-flex flex-row flex-wrap gap-3'>\n {props.classrooms.map(classroom => (\n <PinnedClassroomsTile key={classroom.id} classroom={classroom} />\n ))}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClassroomCollection, Config, CurrentUser, InteractiveMetadata, RosteringResponse, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { ClassroomLabel, ClassroomLabelType } from 'apps/classrooms/components/classroom-label/ClassroomLabel';\nimport { ClassroomsHeader } from 'apps/classrooms/components/classrooms-header/ClassroomsHeader';\nimport { OpenClassroomsTable } from 'apps/classrooms/components/open-classrooms-table/OpenClassroomsTable';\nimport { PinnedClassroomsTiles } from 'apps/classrooms/components/pinned-classrooms-tiles/PinnedClassroomsTiles';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\n\nconst namespace = 'classrooms.classroomsOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClassroomSectionHeadingProps {\n type: ClassroomLabelType;\n appLink?: Core.AppLink;\n hideSeeAll?: boolean;\n}\n\nfunction ClassroomSectionHeading(props: ClassroomSectionHeadingProps): JSX.Element {\n return (\n <div className='d-flex flex-row justify-content-between align-items-center mb-3'>\n <ClassroomLabel type={props.type} />\n {props.appLink && !props.hideSeeAll && (\n <AppLink appLink={props.appLink}>\n <Text namespace={namespace} phrase='seeAll' />\n </AppLink>\n )}\n </div>\n );\n}\n\nexport function ClassroomsOverviewView(): JSX.Element {\n useSetPageMetadata({\n title: getPhrase('pageTitle')\n });\n\n const breakpoints = useBreakpoints();\n const { isPlugin } = usePluginHelper();\n const { hasPermissions } = usePermissions();\n const { hasShareFlowV2 } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch: hasShareFlowV2,\n params: {\n type: [ShareType.Open]\n }\n });\n const favouriteClassrooms = Flight.useBasicFetch<ClassroomCollection>(\n ClassroomRequests.getPinnedClassrooms(\n currentUser.data?.id,\n currentUser.data?.customerId,\n { withStudents: true, limit: 5 }\n )\n );\n\n function getActions(): ActionOptions[] {\n return [{\n label: LanguageService.getPhrase(namespace, 'newClassroom'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.NEW_CLASSROOM\n },\n svgName: cvSvgLibrary.Plus,\n className: 'btn btn-outline-dark',\n disabled: hasRostering,\n tooltip: hasRostering ? getPhrase('disabledByRostering') : '',\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Start,\n location: LocationContext.ClassroomsList\n },\n button: !breakpoints.xs\n }];\n }\n \n const loaded = !!config.data && !!demoInteractive.data && !!yearGroups.data && !!favouriteClassrooms.data;\n\n return (\n <div className='px-3'>\n <ClassroomsHeader\n activeTab='overview'\n actions={getActions()}\n hasRostering={hasRostering}\n hasShareFlowV2={hasShareFlowV2}\n />\n\n <section className='mb-4'>\n <ClassroomSectionHeading\n type='favourite-classroom'\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.VIEW_ALL\n }}\n hideSeeAll={!favouriteClassrooms.data?.data?.length}\n />\n\n <PinnedClassroomsTiles\n showPartialLoading={!loaded}\n classrooms={favouriteClassrooms.data?.data}\n />\n </section>\n\n <section className='mb-4'>\n <ClassroomSectionHeading\n type='open-classroom'\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOMS\n }}\n hideSeeAll={!shareData.sentShares?.length}\n />\n\n <OpenClassroomsTable\n loading={!loaded}\n shareData={shareData}\n hasShareFlowV2={hasShareFlowV2}\n hasPermissions={hasPermissions}\n breakpoints={breakpoints}\n isPlugin={isPlugin}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n emptyState={() => (\n <MySharesDemoInsight\n heading={getPhrase('demoHeading')}\n demoInteractive={demoInteractive.data}\n breakpoints={breakpoints}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n shareType={ShareType.Open}\n />\n )}\n />\n\n </section>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\nimport { UrlHelper } from 'libs/analytics/utils/UrlHelper';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { ClassroomLabel } from 'apps/classrooms/components/classroom-label/ClassroomLabel';\nimport { ClassroomsHeader } from 'apps/classrooms/components/classrooms-header/ClassroomsHeader';\nimport { OpenClassroomsTable } from 'apps/classrooms/components/open-classrooms-table/OpenClassroomsTable';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\nimport { SoftGateBanner } from 'apps/sign-up/components/soft-gate-banner/SoftGateBanner';\n\nconst namespace = 'classrooms.minimalClassroomsExperience';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\nconst productIntegrationsPath = '/product/integrations';\n\nexport function MinimalClassroomsExperienceView(): JSX.Element {\n useSetPageMetadata({\n title: getPhrase('pageTitle')\n });\n\n const breakpoints = useBreakpoints();\n const { isPlugin } = usePluginHelper();\n const { hasPermissions, getGatedPermission } = usePermissions();\n const { hasShareFlowV2 } = useSettings(null);\n\n const viewClassroomsGatedPermission = getGatedPermission(PermissionName.ViewClassrooms);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch: hasShareFlowV2,\n params: {\n type: [ShareType.Open]\n }\n });\n \n const loaded = !!config.data && !!demoInteractive.data && !!yearGroups.data;\n\n return (\n <div className='px-3'>\n {viewClassroomsGatedPermission === 'soft-gate' && <SoftGateBanner />}\n <ClassroomsHeader\n activeTab='classrooms'\n hasRostering={false}\n hasShareFlowV2={hasShareFlowV2}\n hideTabs\n />\n\n {viewClassroomsGatedPermission !== 'hard-gate' && viewClassroomsGatedPermission !== 'soft-gate' &&\n <section className='mb-4'>\n <ClassroomLabel type='my-school-classrooms' />\n\n <div className='d-flex flex-column flex-sm-row justify-content-between gap-2 bg-light-blue rounded p-3 align-items-center mt-3'>\n <div>\n <Text namespace={namespace} phrase='myClassroomsNotice' /> \n <ExternalLink\n href={UrlHelper.safeUrlConcat(config.data?.marketingSiteUrl, productIntegrationsPath)} className='text-underline'\n newTab\n >\n <Text namespace={namespace} phrase='learnMore' />\n </ExternalLink>\n </div>\n <div>\n <AppLink\n className='btn btn-outline-dark hover-bg-white'\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.UPGRADE\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.Classroom,\n entity: EntityType.AppLink,\n descriptor: SignUpDescriptors.Upgrade,\n workflowPhase: WorkflowPhase.Start\n }}\n >\n <Text namespace={namespace} phrase='requestFullAccess' />\n </AppLink>\n </div>\n </div>\n </section>\n }\n\n <section className='mb-4'>\n {viewClassroomsGatedPermission !== 'hard-gate' && viewClassroomsGatedPermission !== 'soft-gate' &&\n <ClassroomLabel type='open-classroom' />\n }\n\n {loaded &&\n <>\n <MySharesDemoInsight\n heading={getPhrase('demoHeading')}\n demoInteractive={demoInteractive.data}\n breakpoints={breakpoints}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n shareType={ShareType.Open}\n />\n \n <OpenClassroomsTable\n shareData={shareData}\n hasShareFlowV2={hasShareFlowV2}\n hasPermissions={hasPermissions}\n breakpoints={breakpoints}\n isPlugin={isPlugin}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n emptyState={() => <></>}\n hasDemoInsight\n />\n </>\n\n }\n </section>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { useClassroomExperience } from 'shared/hooks/useClassroomExperience';\n\nimport { ClassroomsOverviewView } from '../classrooms-overview/ClassroomsOverviewView';\nimport { FullClassroomsExperienceView } from '../full-classrooms-experience/FullClassroomsExperienceView';\nimport { MinimalClassroomsExperienceView } from '../minimal-classrooms-experience/MinimalClassroomsExperienceView';\n\ninterface ClassroomsViewProps {\n query: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ClassroomsView(props: ClassroomsViewProps): JSX.Element {\n const { experience, loading } = useClassroomExperience();\n const { hasShareFlowV2 } = useSettings(null);\n\n if (loading)\n return <></>;\n \n if (experience === 'none') {\n Core.ErrorHelper.throw(new NotFoundError());\n return <></>;\n }\n \n if (experience === 'full' && hasShareFlowV2) {\n return <ClassroomsOverviewView />;\n }\n\n if (experience === 'full' && !hasShareFlowV2) {\n return <FullClassroomsExperienceView query={props.query} />;\n }\n\n return <MinimalClassroomsExperienceView />;\n}","// extracted by mini-css-extract-plugin\nexport default {\"background\":\"HAuP3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INTERACTIVE_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_ACTION, DEMO_INSIGHTS_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA, DEMO_INSIGHTS_SHARE_TABLE_DATA } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nimport { MySharesTableData } from '../my-shares-table/MySharesTableUtils';\n\nimport styles from './my-shares-demo-insights.scss';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n breakpoints: Breakpoints;\n className?: string;\n heading?: string;\n shareType?: ShareType;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n const appLink = props.shareType === ShareType.Open ? DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK : DEMO_INSIGHTS_APPLINK;\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: DEMO_INTERACTIVE_ID\n };\n }\n\n function getObjectActions() {\n return [\n {\n ...DEMO_INSIGHTS_ACTION,\n button: !isMobile,\n appLink\n }\n ];\n }\n\n const demoShareTableData = props.shareType === ShareType.Open\n ? DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA\n : DEMO_INSIGHTS_SHARE_TABLE_DATA;\n\n const shareData: MySharesTableData = {\n ...demoShareTableData,\n sharedObject: getDemoInteractive()\n };\n\n return (\n <div className={props.className}>\n <MySharesTableHeading heading={props.heading ?? getPhrase('demoHeading')} isFirst={true} />\n\n <div className={`${styles.background} rounded-3 mb-4`}>\n <MySharesTableRow\n shareData={shareData}\n getObjectActions={getObjectActions}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n breakpoints={props.breakpoints}\n className='bg-light-orange'\n appLink={(() => appLink)}\n />\n </div>\n </div>\n );\n}","export const DEMO_INTERACTIVE_ID = 'GRWx6w';","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEMO_INSIGHT_DAYS_AGO = 7;\n\nexport const DEMO_INSIGHTS_SHARE: Share = {\n type: ShareType.Link,\n privacy: SharePrivacy.JustMySchool,\n objectId: '0',\n objectTypeId: MasterType.Interactive,\n viewCount: 28,\n accessCount: 15,\n dateCreated: new Date().toISOString(),\n dateShared: new Date().toISOString(),\n expireDate: null,\n link: {\n shortenedEmbedUrl: '',\n shortenedUrl: ''\n },\n shareId: '0',\n ownerCustomerId: 0,\n ownerId: 0,\n recipients: [],\n options: {\n preventScrubbing: false,\n immediateFeedback: false\n }\n};\n\nexport const DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE: Share = {\n ...DEMO_INSIGHTS_SHARE,\n type: ShareType.Open,\n expireDate: DateHelper.add(new Date(DEMO_INSIGHTS_SHARE.dateCreated), 30, 'days').toISOString(),\n privacy: SharePrivacy.PinCode\n};\n\nexport const DEMO_INSIGHTS_SHARE_TABLE_DATA: MySharesTableData = {\n share: DEMO_INSIGHTS_SHARE,\n sharedObject: null,\n shareRecipients: null,\n dateShared: DateHelper.subtract(new Date(), DEMO_INSIGHT_DAYS_AGO, 'days').toISOString()\n};\n\nexport const DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA: MySharesTableData = {\n ...DEMO_INSIGHTS_SHARE_TABLE_DATA,\n share: DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE\n};\n\nexport const DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_OPEN_CLASSROOM_DEMO\n};\n\nexport const DEMO_INSIGHTS_ACTION: ActionOptions = {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n className: 'btn btn-outline-dark'\n};\n","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'signUp.softGateBanner';\n\nexport function SoftGateBanner(): JSX.Element {\n return (\n <div role='alert' className='bg-light-indigo text-indigo rounded p-2 mb-4 d-flex align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.StarOutline} size={SvgContainerSize.Large} />\n <Text namespace={namespace} phrase='softGate' /> \n <AppLink\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.PREMIUM_FEATURES\n }}\n className='indigo-link text-indigo text-underline d-inline'\n >\n <Text namespace={namespace} phrase='learnMore' />\n </AppLink>\n </div>\n );\n}"],"names":["SharePrivacy","InsightsDemoRequests","interactive","url","key","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","OpenClassroomsTable","props","hasInsightsPermission","hasShareFlowV2","hasPermissions","sharesParams","LoadingComponent","loadingState","EmptyStateComponent","emptyState","loading","shareData","showPartialLoading","sentShares","length","className","sharedObjects","items","shareRecipients","interactivesPendingReview","itemsArr","getObjectActions","row","share","sharedObject","audienceParams","audienceAppLinkParams","hasInsights","isPlugin","breakpoints","groupByDateShared","imageCdnUrl","yearGroups","hasDemoInsights","hasDemoInsight","hasMore","isFetching","fetchNext","nextCursor","getPhrase","LanguageService","TypePhraseMap","TypeVariantMap","ClassroomLabel","IconCircle","svgName","svgSize","SvgContainer","S","variant","type","textVariant","svgWrapperClassName","text","EmptyPinnedClassroomsTiles","Text","namespace","phrase","PartialPinnedClassroomsTile","PartialPinnedClassroomsTiles","Array","from","size","map","_","index","PinnedClassroomsTile","studentsCount","classroom","enrolments","data","filter","e","role","bgColorClassName","name","AppLink","appLink","application","action","args","id","options","smartCount","PinnedClassroomsTiles","EmptyState","emptyStateComponent","LoadingState","loadingStateComponent","classrooms","ClassroomSectionHeading","hideSeeAll","ClassroomsOverviewView","useSetPageMetadata","title","useBreakpoints","usePluginHelper","usePermissions","useSettings","currentUser","UserRequests","config","ConfigRequests","demoInteractive","isAuthenticated","CustomerRequests","customerId","rostering","RosteringRequests","hasRostering","status","useSharesTable","interactiveInsights","shouldFetch","params","ShareType","favouriteClassrooms","ClassroomRequests","withStudents","limit","loaded","ClassroomsHeader","activeTab","actions","label","disabled","tooltip","analyticsOptions","actionType","entity","workflowPhase","location","button","xs","MySharesDemoInsight","heading","shareType","productIntegrationsPath","MinimalClassroomsExperienceView","getGatedPermission","viewClassroomsGatedPermission","PermissionName","SoftGateBanner","hideTabs","ExternalLink","href","UrlHelper","marketingSiteUrl","newTab","analyticsData","descriptor","ClassroomsView","useClassroomExperience","experience","NotFoundError","FullClassroomsExperienceView","query","isMobile","sm","demoShareTableData","isFirst","MySharesTableRow","DEMO_INTERACTIVE_ID","DEMO_INSIGHTS_SHARE","privacy","objectId","objectTypeId","viewCount","accessCount","dateCreated","Date","toISOString","dateShared","expireDate","link","shortenedEmbedUrl","shortenedUrl","shareId","ownerCustomerId","ownerId","recipients","preventScrubbing","immediateFeedback","DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE","DEMO_INSIGHTS_SHARE_TABLE_DATA","DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA","DEMO_INSIGHTS_APPLINK","DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK","DEMO_INSIGHTS_ACTION","group"],"sourceRoot":""}
|