@clickview/lite 0.75.0-rc.2 → 0.75.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{119-lite-a1f592f602.chunk.css → 1243-lite-13eda8f6a0.chunk.css} +2 -4
- package/dist/css/{7230-lite-36ff6e6d53.chunk.css → 1867-lite-8baa8af02b.chunk.css} +3 -5
- package/dist/css/{5241-lite-baab687563.chunk.css → 4203-lite-9ffab89741.chunk.css} +3 -5
- package/dist/css/{8364-lite-99938dea56.chunk.css → 5193-lite-d434056013.chunk.css} +1 -0
- package/dist/css/{7339-lite-05c396fed3.chunk.css → 6756-lite-839687d3d7.chunk.css} +1 -0
- package/dist/css/{9527-lite-1d2221b6a8.chunk.css → 7103-lite-fef3024f61.chunk.css} +2 -4
- package/dist/css/{8856-lite-827b34aed7.chunk.css → 8856-lite-c114ab5c89.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/104-0c03791b45-lite.chunk.js +2 -0
- package/dist/scripts/104-0c03791b45-lite.chunk.js.map +1 -0
- package/dist/scripts/1074-4f6b136f9a-lite.chunk.js +2 -0
- package/dist/scripts/1074-4f6b136f9a-lite.chunk.js.map +1 -0
- package/dist/scripts/1087-861be5211f-lite.chunk.js +2 -0
- package/dist/scripts/1087-861be5211f-lite.chunk.js.map +1 -0
- package/dist/scripts/1192-d409863a3c-lite.chunk.js +2 -0
- package/dist/scripts/1192-d409863a3c-lite.chunk.js.map +1 -0
- package/dist/scripts/1199-d2fcbb547e-lite.chunk.js +2 -0
- package/dist/scripts/1199-d2fcbb547e-lite.chunk.js.map +1 -0
- package/dist/scripts/121-1b744469ee-lite.chunk.js +2 -0
- package/dist/scripts/121-1b744469ee-lite.chunk.js.map +1 -0
- package/dist/scripts/{1221-502395e693-lite.chunk.js → 1221-1109d5379d-lite.chunk.js} +3 -3
- package/dist/scripts/1221-1109d5379d-lite.chunk.js.map +1 -0
- package/dist/scripts/1243-ede924125c-lite.chunk.js +2 -0
- package/dist/scripts/1243-ede924125c-lite.chunk.js.map +1 -0
- package/dist/scripts/147-44ee7e9a78-lite.chunk.js +2 -0
- package/dist/scripts/147-44ee7e9a78-lite.chunk.js.map +1 -0
- package/dist/scripts/1491-ab92a040e5-lite.chunk.js +2 -0
- package/dist/scripts/1491-ab92a040e5-lite.chunk.js.map +1 -0
- package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js → 1610-bb6eff2ff1-lite.chunk.js} +2 -2
- package/dist/scripts/1610-bb6eff2ff1-lite.chunk.js.map +1 -0
- package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js → 1867-3b447a1b85-lite.chunk.js} +2 -2
- package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js.map → 1867-3b447a1b85-lite.chunk.js.map} +1 -1
- package/dist/scripts/{218-297de74688-lite.chunk.js → 218-f6cc4a3b6a-lite.chunk.js} +2 -2
- package/dist/scripts/218-f6cc4a3b6a-lite.chunk.js.map +1 -0
- package/dist/scripts/2258-ed7383502f-lite.chunk.js +3 -0
- package/dist/scripts/2258-ed7383502f-lite.chunk.js.map +1 -0
- package/dist/scripts/{2968-c4c0114915-lite.chunk.js → 2968-13e56eeff8-lite.chunk.js} +1 -1
- package/dist/scripts/2968-13e56eeff8-lite.chunk.js.map +1 -0
- package/dist/scripts/3268-2736356687-lite.chunk.js +2 -0
- package/dist/scripts/{3268-faca1bf46e-lite.chunk.js.map → 3268-2736356687-lite.chunk.js.map} +1 -1
- package/dist/scripts/3597-eaae787997-lite.chunk.js +3 -0
- package/dist/scripts/3597-eaae787997-lite.chunk.js.map +1 -0
- package/dist/scripts/3836-425334ab13-lite.chunk.js +2 -0
- package/dist/scripts/{3836-f2a0c9f713-lite.chunk.js.map → 3836-425334ab13-lite.chunk.js.map} +1 -1
- package/dist/scripts/3837-e4c5bb738b-lite.chunk.js +2 -0
- package/dist/scripts/3837-e4c5bb738b-lite.chunk.js.map +1 -0
- package/dist/scripts/4185-7178e5a716-lite.chunk.js +2 -0
- package/dist/scripts/4185-7178e5a716-lite.chunk.js.map +1 -0
- package/dist/scripts/4203-ee50e89841-lite.chunk.js +3 -0
- package/dist/scripts/4203-ee50e89841-lite.chunk.js.map +1 -0
- package/dist/scripts/4598-bcd3f6f8a7-lite.chunk.js +2 -0
- package/dist/scripts/{4598-2b1daca7ae-lite.chunk.js.map → 4598-bcd3f6f8a7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4722-d96da2a258-lite.chunk.js → 4722-9eb591621a-lite.chunk.js} +3 -3
- package/dist/scripts/4722-9eb591621a-lite.chunk.js.map +1 -0
- package/dist/scripts/4948-f21dad2ca1-lite.chunk.js +2 -0
- package/dist/scripts/4948-f21dad2ca1-lite.chunk.js.map +1 -0
- package/dist/scripts/{5153-079b4125ae-lite.chunk.js → 5153-cf62a95421-lite.chunk.js} +3 -3
- package/dist/scripts/5153-cf62a95421-lite.chunk.js.map +1 -0
- package/dist/scripts/6137-bc8b193237-lite.chunk.js +2 -0
- package/dist/scripts/6137-bc8b193237-lite.chunk.js.map +1 -0
- package/dist/scripts/6756-cfd00009e4-lite.chunk.js +3 -0
- package/dist/scripts/6756-cfd00009e4-lite.chunk.js.map +1 -0
- package/dist/scripts/6790-36ce6dda04-lite.chunk.js +2 -0
- package/dist/scripts/6790-36ce6dda04-lite.chunk.js.map +1 -0
- package/dist/scripts/705-10a85bae7a-lite.chunk.js +2 -0
- package/dist/scripts/705-10a85bae7a-lite.chunk.js.map +1 -0
- package/dist/scripts/7103-14bd3771d2-lite.chunk.js +2 -0
- package/dist/scripts/7103-14bd3771d2-lite.chunk.js.map +1 -0
- package/dist/scripts/7148-d966512e45-lite.chunk.js +2 -0
- package/dist/scripts/7148-d966512e45-lite.chunk.js.map +1 -0
- package/dist/scripts/7205-12a6b2ac55-lite.chunk.js +2 -0
- package/dist/scripts/7205-12a6b2ac55-lite.chunk.js.map +1 -0
- package/dist/scripts/7438-38f60d3e8e-lite.chunk.js +2 -0
- package/dist/scripts/7438-38f60d3e8e-lite.chunk.js.map +1 -0
- package/dist/scripts/7480-e0749592fc-lite.chunk.js +2 -0
- package/dist/scripts/7480-e0749592fc-lite.chunk.js.map +1 -0
- package/dist/scripts/8010-e9163f5bee-lite.chunk.js +2 -0
- package/dist/scripts/8010-e9163f5bee-lite.chunk.js.map +1 -0
- package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js +3 -0
- package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js.map +1 -0
- package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js +2 -0
- package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js.map +1 -0
- package/dist/scripts/8856-4da691f96f-lite.chunk.js +2 -0
- package/dist/scripts/8856-4da691f96f-lite.chunk.js.map +1 -0
- package/dist/scripts/9003-fc8e674468-lite.chunk.js +2 -0
- package/dist/scripts/9003-fc8e674468-lite.chunk.js.map +1 -0
- package/dist/scripts/9042-add0f1c2e2-lite.chunk.js +2 -0
- package/dist/scripts/9042-add0f1c2e2-lite.chunk.js.map +1 -0
- package/dist/scripts/9103-4eec16d73b-lite.chunk.js +2 -0
- package/dist/scripts/9103-4eec16d73b-lite.chunk.js.map +1 -0
- package/dist/scripts/9134-a6a5fc92cf-lite.chunk.js +2 -0
- package/dist/scripts/9134-a6a5fc92cf-lite.chunk.js.map +1 -0
- package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js +2 -0
- package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js.map +1 -0
- package/dist/scripts/9620-3746c84350-lite.chunk.js +3 -0
- package/dist/scripts/9620-3746c84350-lite.chunk.js.map +1 -0
- package/dist/scripts/9740-9d50d31b72-lite.chunk.js +2 -0
- package/dist/scripts/9740-9d50d31b72-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-95a6fc2722.min.js → bundle-fc60888464.min.js} +3 -3
- package/dist/scripts/{bundle-95a6fc2722.min.js.map → bundle-fc60888464.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/104-b62a8447f0-lite.chunk.js +0 -2
- package/dist/scripts/104-b62a8447f0-lite.chunk.js.map +0 -1
- package/dist/scripts/107-989ac2dc47-lite.chunk.js +0 -2
- package/dist/scripts/107-989ac2dc47-lite.chunk.js.map +0 -1
- package/dist/scripts/119-e3a8bd94dd-lite.chunk.js +0 -2
- package/dist/scripts/119-e3a8bd94dd-lite.chunk.js.map +0 -1
- package/dist/scripts/1199-a2ac2338d0-lite.chunk.js +0 -2
- package/dist/scripts/1199-a2ac2338d0-lite.chunk.js.map +0 -1
- package/dist/scripts/121-bf7a153eb8-lite.chunk.js +0 -2
- package/dist/scripts/121-bf7a153eb8-lite.chunk.js.map +0 -1
- package/dist/scripts/1221-502395e693-lite.chunk.js.map +0 -1
- package/dist/scripts/1400-43b37bfa8d-lite.chunk.js +0 -2
- package/dist/scripts/1400-43b37bfa8d-lite.chunk.js.map +0 -1
- package/dist/scripts/1610-7f58bb25a9-lite.chunk.js.map +0 -1
- package/dist/scripts/218-297de74688-lite.chunk.js.map +0 -1
- package/dist/scripts/2258-4d0639c9fe-lite.chunk.js +0 -3
- package/dist/scripts/2258-4d0639c9fe-lite.chunk.js.map +0 -1
- package/dist/scripts/2968-c4c0114915-lite.chunk.js.map +0 -1
- package/dist/scripts/3268-faca1bf46e-lite.chunk.js +0 -2
- package/dist/scripts/3836-f2a0c9f713-lite.chunk.js +0 -2
- package/dist/scripts/3837-fe321e8deb-lite.chunk.js +0 -2
- package/dist/scripts/3837-fe321e8deb-lite.chunk.js.map +0 -1
- package/dist/scripts/4025-306e0fbdd5-lite.chunk.js +0 -2
- package/dist/scripts/4025-306e0fbdd5-lite.chunk.js.map +0 -1
- package/dist/scripts/4164-5d3af57b67-lite.chunk.js +0 -2
- package/dist/scripts/4164-5d3af57b67-lite.chunk.js.map +0 -1
- package/dist/scripts/4185-e8e40dab72-lite.chunk.js +0 -2
- package/dist/scripts/4185-e8e40dab72-lite.chunk.js.map +0 -1
- package/dist/scripts/4562-545f04c53f-lite.chunk.js +0 -2
- package/dist/scripts/4562-545f04c53f-lite.chunk.js.map +0 -1
- package/dist/scripts/4598-2b1daca7ae-lite.chunk.js +0 -2
- package/dist/scripts/4722-d96da2a258-lite.chunk.js.map +0 -1
- package/dist/scripts/4948-66ba60c8e3-lite.chunk.js +0 -2
- package/dist/scripts/4948-66ba60c8e3-lite.chunk.js.map +0 -1
- package/dist/scripts/5153-079b4125ae-lite.chunk.js.map +0 -1
- package/dist/scripts/5241-163f5ac64c-lite.chunk.js +0 -3
- package/dist/scripts/5241-163f5ac64c-lite.chunk.js.map +0 -1
- package/dist/scripts/5349-bc0fcb4083-lite.chunk.js +0 -2
- package/dist/scripts/5349-bc0fcb4083-lite.chunk.js.map +0 -1
- package/dist/scripts/6135-a878a9cff0-lite.chunk.js +0 -3
- package/dist/scripts/6135-a878a9cff0-lite.chunk.js.map +0 -1
- package/dist/scripts/6509-23fdb20a4b-lite.chunk.js +0 -2
- package/dist/scripts/6509-23fdb20a4b-lite.chunk.js.map +0 -1
- package/dist/scripts/6790-5086b72662-lite.chunk.js +0 -2
- package/dist/scripts/6790-5086b72662-lite.chunk.js.map +0 -1
- package/dist/scripts/7148-432ab72091-lite.chunk.js +0 -2
- package/dist/scripts/7148-432ab72091-lite.chunk.js.map +0 -1
- package/dist/scripts/7205-2428f775a5-lite.chunk.js +0 -2
- package/dist/scripts/7205-2428f775a5-lite.chunk.js.map +0 -1
- package/dist/scripts/7339-5793c921bb-lite.chunk.js +0 -3
- package/dist/scripts/7339-5793c921bb-lite.chunk.js.map +0 -1
- package/dist/scripts/7438-a5f96e58fc-lite.chunk.js +0 -2
- package/dist/scripts/7438-a5f96e58fc-lite.chunk.js.map +0 -1
- package/dist/scripts/7926-6b040931aa-lite.chunk.js +0 -2
- package/dist/scripts/7926-6b040931aa-lite.chunk.js.map +0 -1
- package/dist/scripts/8536-f75009dd87-lite.chunk.js +0 -2
- package/dist/scripts/8536-f75009dd87-lite.chunk.js.map +0 -1
- package/dist/scripts/8687-549a2d9278-lite.chunk.js +0 -3
- package/dist/scripts/8687-549a2d9278-lite.chunk.js.map +0 -1
- package/dist/scripts/8856-df102acdff-lite.chunk.js +0 -2
- package/dist/scripts/8856-df102acdff-lite.chunk.js.map +0 -1
- package/dist/scripts/9134-42dc2390ce-lite.chunk.js +0 -2
- package/dist/scripts/9134-42dc2390ce-lite.chunk.js.map +0 -1
- package/dist/scripts/9266-c5d6705147-lite.chunk.js +0 -2
- package/dist/scripts/9266-c5d6705147-lite.chunk.js.map +0 -1
- package/dist/scripts/9284-402a14d41c-lite.chunk.js +0 -2
- package/dist/scripts/9284-402a14d41c-lite.chunk.js.map +0 -1
- package/dist/scripts/9470-11c8c2ca71-lite.chunk.js +0 -2
- package/dist/scripts/9470-11c8c2ca71-lite.chunk.js.map +0 -1
- package/dist/scripts/9527-111c8586a7-lite.chunk.js +0 -2
- package/dist/scripts/9527-111c8586a7-lite.chunk.js.map +0 -1
- package/dist/scripts/9528-2b478f4ca8-lite.chunk.js +0 -3
- package/dist/scripts/9528-2b478f4ca8-lite.chunk.js.map +0 -1
- package/dist/scripts/9591-230bcf0935-lite.chunk.js +0 -2
- package/dist/scripts/9591-230bcf0935-lite.chunk.js.map +0 -1
- /package/dist/css/{8687-lite-6787cc731a.chunk.css → 3597-lite-6787cc731a.chunk.css} +0 -0
- /package/dist/css/{5349-lite-829df3b4e7.chunk.css → 6137-lite-829df3b4e7.chunk.css} +0 -0
- /package/dist/css/{9470-lite-edb2d29928.chunk.css → 8010-lite-edb2d29928.chunk.css} +0 -0
- /package/dist/css/{6135-lite-41bdd1c5a3.chunk.css → 8410-lite-41bdd1c5a3.chunk.css} +0 -0
- /package/dist/css/{121-lite-1337d9acf0.chunk.css → 9042-lite-1337d9acf0.chunk.css} +0 -0
- /package/dist/css/{9528-lite-6787cc731a.chunk.css → 9620-lite-6787cc731a.chunk.css} +0 -0
- /package/dist/scripts/{1221-502395e693-lite.chunk.js.LICENSE.txt → 1221-1109d5379d-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2258-4d0639c9fe-lite.chunk.js.LICENSE.txt → 2258-ed7383502f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4722-d96da2a258-lite.chunk.js.LICENSE.txt → 3597-eaae787997-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5153-079b4125ae-lite.chunk.js.LICENSE.txt → 4203-ee50e89841-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5241-163f5ac64c-lite.chunk.js.LICENSE.txt → 4722-9eb591621a-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6135-a878a9cff0-lite.chunk.js.LICENSE.txt → 5153-cf62a95421-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7339-5793c921bb-lite.chunk.js.LICENSE.txt → 6756-cfd00009e4-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8687-549a2d9278-lite.chunk.js.LICENSE.txt → 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9528-2b478f4ca8-lite.chunk.js.LICENSE.txt → 9620-3746c84350-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-95a6fc2722.min.js.LICENSE.txt → bundle-fc60888464.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/9103-4eec16d73b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/components/divider/divider.scss","file:///app/packages/libs/shared/src/components/divider/Divider.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///app/packages/libs/shared/src/utils/get-event-logger/getEventLogger.ts","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/integration-list/integration-list.scss","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/integration-list/IntegrationList.tsx","file:///app/packages/projects/lite/src/apps/assign/utils/AssignHelper.ts","file:///app/packages/projects/lite/src/apps/assign/utils/get-assign-event-logger/getAssignEventLogger.ts","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-embed/AssignEmbed.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-integrations/AssignIntegrations.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-overview/AssignOverview.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-overview/assign-overview.scss","file:///app/packages/libs/shared/src/components/full-screen/FullScreen.tsx","file:///app/packages/libs/shared/src/components/full-screen/hooks/useFullScreenActions.ts","file:///app/packages/libs/shared/src/components/qr-code/QrCode.tsx","file:///app/packages/libs/shared/src/components/qr-code/qr-code.scss","file:///app/packages/libs/shared/src/components/qr-code/images/Base64ClickViewLogo.ts","file:///app/packages/libs/shared/src/components/qr-code/hooks/useQrCodeActions.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-full-screen/AssignFullScreen.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-full-screen/assign-full-screen.scss","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-qr-code/AssignQrCode.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-share-link/AssignShareLink.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/AssignDetails.tsx","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-share-link/assign-share-link.scss","file:///app/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-qr-code/assign-qr-code.scss","file:///app/packages/projects/lite/src/apps/assign/views/assign-details-view/AssignDetailsView.tsx","file:///app/packages/projects/lite/src/shared/components/instructions/instructions.scss","file:///app/packages/projects/lite/src/shared/components/instructions/Instructions.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\",\"thumbnailContainer\":\"d3CKN\",\"insightsMask\":\"KM76U\",\"requireMarking\":\"peLH7\",\"badge\":\"mVu0E\",\"bar\":\"zO3MS\",\"a\":\"K1jW5\",\"expandBar\":\"YITJl\",\"b\":\"tCpLF\",\"c\":\"lC0cq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnail } from 'libs/shared/components/thumbnails/collection/CollectionThumbnail';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image, Playlist, Series } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst namespace = 'shared.sharedObjectImage';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction InsightsMask() {\n return (\n <div className={`d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center`}>\n <div className='position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3'></div>\n <div className='d-flex align-items-end gap-2 h-50 z-1'>\n <div className='d-flex align-items-end h-50'>\n <div className={`${styles.bar} ${styles.a} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-75'>\n <div className={`${styles.bar} ${styles.b} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-100'>\n <div className={`${styles.bar} ${styles.c} rounded shadow`}></div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\nSharedObjectImage.defaultProps = {\n imageOptions: { size: ImageSize.Small }\n};\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n requireMarking?: number;\n imageOptions?: ImageOptions;\n showInsightsMask?: boolean;\n showCollectionMask?: boolean;\n showVideoCount?: boolean;\n thumbnailSize?: 'sm' | 'md';\n imageClassName?: string;\n hideBottomBar?: boolean;\n onlyCount?: boolean;\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object);\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n const thumbnailMetadata = !props.showVideoMetadata ? {\n hideDuration: true,\n hideMask: true,\n hideRating: true,\n hideVideoBadgeType: true,\n hideBottomBar: true\n } : {\n hideBottomBar: props.hideBottomBar\n };\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <div className={`${styles.thumbnailContainer} position-relative`}>\n {props.showInsightsMask && <InsightsMask />}\n <AppLink appLink={props.appLink}>\n <VideoThumbnail\n video={props.object}\n size={props.thumbnailSize}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n imageClassName={props.imageClassName}\n {...thumbnailMetadata}\n />\n </AppLink>\n {!!props.requireMarking && (\n <div className={`${props.showInsightsMask && styles.requireMarking} position-absolute bottom-0 end-0 z-1 m-2`}>\n <div className={`${styles.badge} d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n </div>\n )}\n </div>\n }\n {!useVideoThumbnail &&\n <>\n {'videos' in (props.object as Playlist | Series) ? (\n <CollectionThumbnail\n collection={props.object}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n showMask={props.showCollectionMask}\n showVideoCount={props.showVideoCount}\n onlyCount={props.onlyCount}\n />\n ) : (\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n >\n {imageFallbackComponent}\n </BaseImage>\n )}\n </>\n }\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"divider\":\"rpkqv\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport styles from './divider.scss';\n\nconst namespace = 'shared.divider';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DividerProps {\n text?: string;\n noUpperCase?: boolean;\n className?: string;\n}\n\ninterface DividerCSSProperties extends React.CSSProperties {\n '--divider-content'?: string;\n '--divider-text-transform'?: React.CSSProperties['textTransform'];\n}\n\nfunction buildStyle(props: DividerProps) {\n const content = props.text || getPhrase('or');\n \n const style: DividerCSSProperties = {\n '--divider-content': `'${content}'`,\n '--divider-text-transform': props.noUpperCase ? 'none' : 'uppercase'\n };\n\n return style;\n}\n\nexport function Divider(props: DividerProps): JSX.Element {\n return <div className={classNames('my-2 w-100 border-bottom position-relative', styles.divider, props.className)} style={buildStyle(props)}></div>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailTitle\":\"OsWjL\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './collection-thumbnail-title.scss';\n\ninterface BaseCollectionThumbnailTitleProps {\n title: string;\n}\n\nfunction BaseCollectionThumbnailTitle(props: BaseCollectionThumbnailTitleProps): JSX.Element {\n return (\n <h3 title={props.title} className='h6'>{props.title}</h3>\n );\n}\n\ninterface CollectionThumbnailTitleProps extends BaseCollectionThumbnailTitleProps {\n appLink: Core.AppLink;\n}\n\nexport function CollectionThumbnailTitle(props: CollectionThumbnailTitleProps) {\n if (!props.appLink) {\n return (\n <BaseCollectionThumbnailTitle {...props} />\n );\n }\n \n return (\n <AppLink appLink={props.appLink} className={`${styles.thumbnailTitle}`}>\n <BaseCollectionThumbnailTitle {...props} />\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"M4zat\",\"mask\":\"r0Ztg\",\"thumbnailContainer\":\"uD9dz\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnailTitle } from 'libs/shared/components/thumbnails/collection/title/CollectionThumbnailTitle';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Playlist, Series } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'shared.collectionThumbnail';\n\ntype SupportedContentType = Playlist | Series;\n\ninterface CollectionThumbnailProps {\n appLink?: Core.AppLink\n collection: SupportedContentType;\n imageOptions?: ImageOptions;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showMask?: boolean;\n showVideoCount?: boolean;\n onlyCount?: boolean;\n title?: string;\n titleAppLink?: Core.AppLink;\n subText?: string;\n subTextAppLink?: Core.AppLink;\n hoverText?: string;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps) {\n function getFirstVideo() {\n let collectionVideos = props.collection?.videos;\n\n if (!collectionVideos)\n return;\n\n if (!collectionVideos.count && props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.clips.count)\n collectionVideos = playlist.clips;\n\n if (playlist.interactives.count)\n collectionVideos = playlist.interactives;\n }\n\n return ArrayHelper.first(collectionVideos.data);\n }\n\n function getVideoCount() {\n let totalCount = 0;\n\n if (props.collection.videos && props.collection.videos.count) {\n totalCount += props.collection.videos.count;\n }\n\n if (props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.interactives?.count)\n totalCount += playlist.interactives.count;\n\n if (playlist.clips?.count)\n totalCount += playlist.clips.count;\n }\n\n return totalCount;\n }\n\n function getEntityType(collection: SupportedContentType) {\n if (MasterTypeHelper.isType<Playlist>(collection, MasterType.Playlist)) {\n return EntityType.Playlist;\n }\n\n if (MasterTypeHelper.isType<Series>(collection, MasterType.Series)) {\n return EntityType.Series;\n }\n }\n\n const firstVideo = getFirstVideo();\n const videoCount = getVideoCount();\n const showTexts = props.title?.length || props.subText?.length;\n\n const analyticsData = {\n id: props.collection.id.toString(),\n name: props.collection.name,\n\n ...props.analyticsData\n };\n\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: getEntityType(props.collection),\n \n ...props.analyticsOptions\n };\n\n return (\n <div>\n <div className={`position-relative ${styles.thumbnailContainer} z-1`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {props.showMask &&\n <div className={`${styles.mask} position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none`}>\n <div className={`${styles.badge} d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Play} className='svg-container text-white' />\n <p className='d-inline fw-medium text-white mb-0'>\n {props.hoverText?.length ?\n <span>{props.hoverText}</span> :\n <Text namespace={namespace} phrase='playAll' />\n }\n </p>\n </div>\n </div>\n }\n\n {firstVideo &&\n <VideoThumbnail\n video={firstVideo}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n hideRating\n hideDuration\n hideVideoTypeBadge\n />\n }\n\n {!firstVideo &&\n <div className='ratio ratio-16x9 bg-light rounded-3'>\n <div className='d-flex justify-content-center align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.Play} className='w-33 opacity-25 text-gray-400' />\n </div>\n </div>\n }\n\n {props.showVideoCount &&\n <div className={`${styles.badge} d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Series} className='svg-container text-white me-1' />\n <p className='d-inline fw-semibold text-white mb-0'>\n {props.onlyCount\n ? <span>{videoCount}</span>\n : <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n }\n </p>\n </div>\n }\n </AppLink>\n\n </div>\n \n {showTexts &&\n <div className='mt-2 d-flex flex-column'>\n {props.subText &&\n <TitleSubText title={props.subText} appLink={props.subTextAppLink}>\n {props.subText}\n </TitleSubText>\n }\n {props.title &&\n <CollectionThumbnailTitle\n title={props.collection.name}\n appLink={props.titleAppLink}\n />\n }\n </div>\n }\n </div>\n );\n}","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\n/**\n * Base type that every event needs to extend from\n */\nexport interface BaseEventLogData<T extends string = string> {\n type: T;\n}\n\n/**\n * Utility type to map event types to config types\n */\nexport type EventLogConfig<TEvents extends BaseEventLogData> = {\n [K in TEvents['type']]: BaseConfigData<Extract<TEvents, { type: K }>>;\n};\n\ninterface BaseConfigData<T extends BaseEventLogData> {\n isValid?: (data: T) => boolean;\n analyticsOptions: AnalyticsOptions;\n}\n\ninterface GetEventLoggerOptions<TData extends HashObject, TEvents extends BaseEventLogData> {\n baseData: TData;\n /**\n * Event type config map\n */\n config: EventLogConfig<TEvents>;\n /**\n * Base analytics options\n */\n analyticsOptions: AnalyticsOptions;\n\n shouldLog?: boolean;\n}\n\n/**\n * Method build and log events which are typed using map\n * passed in from config\n */\nexport function getEventLogger<\n TData extends HashObject = HashObject,\n TEvents extends BaseEventLogData = BaseEventLogData\n>(\n options: GetEventLoggerOptions<TData, TEvents>\n) {\n /**\n * Types to assist hinting in our log / getData methods\n */\n type EventType = TEvents['type']; // type of event\n type EventData = Extract<TEvents, { type: EventType }>; // restrict the data to the passed type\n \n /**\n * Get analytics data and options for a given event type\n */\n function getData(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n const logDataConfig = options.config[data.type];\n\n if (!logDataConfig?.isValid(data))\n return;\n\n const mergedData = {\n ...options.baseData,\n ...data\n };\n \n const sanitizedData = ObjectHelper.omit<typeof data>(mergedData, ['type']);\n\n const analyticsOptions = AnalyticsHelper.mergeOptions(\n logDataConfig.analyticsOptions,\n [\n options.analyticsOptions,\n logAnalyticsOptions\n ]\n );\n\n return {\n data: sanitizedData,\n analyticsOptions\n };\n }\n\n /**\n * Similar to `getData` except it logs the analytics event\n * for a given type if its valid\n */\n function log(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n if (!options.shouldLog)\n return;\n\n const analytics = getData(data, logAnalyticsOptions);\n\n if (!analytics)\n return;\n\n AnalyticsHelper.logUserAction(analytics.data, analytics.analyticsOptions);\n }\n\n return {\n getData,\n log\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"integrationIcon\":\"_cwyZ\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport integrationsList from './integration-list.json';\n\nimport styles from './integration-list.scss';\n\nconst namespace = 'assign.integrationList';\ninterface IntegrationListProps {\n instanceRegion?: InstanceRegion;\n itemClassName?: string;\n maxHeight?: string | number;\n contactSupportLink: string;\n hideSupportLink?: boolean;\n}\n\nexport function IntegrationList(props: IntegrationListProps): JSX.Element {\n const integrations = integrationsList.filter(item => {\n let valid = !!item.icon && !!item.link;\n\n if (props.instanceRegion && item.instanceRegions.length)\n valid = item.instanceRegions.includes(props.instanceRegion);\n\n return valid;\n });\n \n return (\n <div className='bg-white rounded-3'>\n <Scrollbars autoHeight autoHeightMax={props.maxHeight || 308}>\n <div className='container-fluid py-3'>\n <div className='row mx-0 px-2'>\n {integrations.map((integration, index) => (\n <div className={classNames('col-6 mb-2', props.itemClassName)} key={index}>\n <a\n href={integration.link}\n className='d-flex align-items-center border rounded-1 p-2 text-decoration-none hover-bg-light-blue fw-medium'\n target='_blank'\n rel='noopener noreferrer'\n >\n <span\n className={`d-block ${styles.integrationIcon}`}\n style={{ backgroundImage: `url(${integration.icon})` }}\n />\n <span className='text-center flex-grow-1'>{integration.name}</span>\n </a>\n </div>\n ))}\n\n {!props.hideSupportLink &&\n <div className='col-12 text-center'>\n <ExternalLink href={props.contactSupportLink} className='btn btn-link text-info p-0' newTab>\n <Text namespace={namespace} phrase='cantFindIntegration' />\n </ExternalLink>\n </div>\n }\n </div>\n </div>\n </Scrollbars>\n </div>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { BaseObject, ClassroomGroup, User } from 'libs/shared/interfaces';\n\nexport const AssignHelper = {\n getRecipients(entities: ClassroomGroup[] | User[]): string[] {\n if (!entities.length)\n return [];\n \n return entities.map(e => e.id);\n },\n \n getLearnersForGroups(groups: ClassroomGroup[]): User[] {\n const learners = groups.reduce<User[]>((prev, curr) => ([\n ...prev, ...(curr.users.data ?? [])\n ]), []);\n\n return ArrayHelper.uniq(learners, 'id');\n },\n\n getSelectedEntities<T extends BaseObject>(selectedEntities: T[], entity: T): T[] {\n const selected = selectedEntities.find(e => e.id?.toString() === entity.id?.toString());\n\n if (selected)\n return selectedEntities.filter(e => e.id?.toString() !== entity.id?.toString());\n\n return [ ...selectedEntities, entity ];\n },\n\n getContactSupportUrl(marketingUrl: string, instanceRegion: InstanceRegion): string {\n if (!marketingUrl || !instanceRegion)\n return;\n \n let path = '/contact-us/support'; // new websites\n\n if (instanceRegion === InstanceRegion.NZ) {\n path = '/contact-us/';\n }\n \n return UrlHelper.safeUrlConcat(marketingUrl, path);\n }\n};","import { AnalyticsOptions, AssignDescriptors, EntityType, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { AssignLogData, BaseAssignData } from './interfaces/GetAssignEventLogger';\n\nexport type AssignLogFn = ReturnType<typeof getAssignEventLogger>['log'];\n\n// #region Validation Methods\nfunction isValidShare(data: AssignLogData): boolean {\n if (!('share' in data))\n return false;\n\n return !!data.share;\n}\n// #endregion\n\n// #region Config \nconst LogDataConfig: EventLogConfig<AssignLogData> = {\n /**\n * Share - Assign\n */\n 'create-existing-classroom': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.ExistingClassroom\n }\n },\n 'create-open-classroom': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.OpenClassroom\n }\n },\n 'view-assignment': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.ViewAssignment\n }\n },\n 'select-existing-classroom-flow': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Start,\n descriptor: AssignDescriptors.ExistingClassroom,\n entity: EntityType.Assign\n }\n },\n 'select-open-classroom-flow': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Start,\n descriptor: AssignDescriptors.OpenClassroom,\n entity: EntityType.Assign\n }\n },\n 'view-previous-assignment': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Discard,\n entity: EntityType.Assign,\n descriptor: AssignDescriptors.ViewPreviousAssignment\n }\n },\n 'close-assign-popup': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Discard, // Usually discarded unless called form 'assign-details' step\n entity: EntityType.Assign,\n descriptor: AssignDescriptors.ClosePopup\n }\n },\n 'create-new-classroom': {\n isValid: data => !!data.classroom,\n analyticsOptions: {\n actionType: UserAction.Create,\n workflowPhase: WorkflowPhase.Next,\n descriptor: AssignDescriptors.CreateClassroom,\n entity: EntityType.Assign\n }\n },\n 'select-narrow-selection': {\n isValid: data => !!data.classroom,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Next,\n descriptor: AssignDescriptors.NarrowSelection\n }\n },\n\n /**\n * General\n */\n 'copy-embed-html': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.Assign, // default\n descriptor: ShareDescriptors.CopyEmbedHtml\n }\n },\n 'copy-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.Assign, // default\n descriptor: ShareDescriptors.CopyLink\n }\n },\n 'print-qr-code': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Print,\n entity: EntityType.Assign, // default\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.PrintQrCode\n }\n },\n 'download-qr-code': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Download,\n entity: EntityType.Assign, // default\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.DownloadQrCode\n }\n },\n 'request-full-screen': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign, // default\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.FullScreen\n }\n }\n};\n\n// #endregion\n\n// #region Implementation\ninterface AssignEventLoggerOptions {\n data: BaseAssignData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport function getAssignEventLogger(options: AssignEventLoggerOptions) {\n const { getData, log } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: LogDataConfig,\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}\n// #endregion","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ShareIntegrationsStack } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsStack';\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\n\nconst namespace = 'assign.assignDetailsTabs';\n\ninterface TabItemProps {\n tab: AssignDetailsTab;\n active: AssignDetailsTab;\n onClick: (tab: AssignDetailsTab) => void;\n}\n\nfunction TabItem(props: React.PropsWithChildren<TabItemProps>): JSX.Element {\n const active = props.tab === props.active;\n\n return (\n <button\n className={classNames(\n 'rounded-pill d-flex align-items-center gap-1 ps-1',\n active ? 'bg-dark text-white' : 'bg-light'\n )}\n onClick={() => props.onClick(props.tab)}\n >\n {props.children}\n </button>\n );\n}\n\nexport type AssignDetailsTab = 'overview' | 'share-link' | 'qr-code' | 'embed' | 'integrations';\n\ninterface AssingDetailsTabsProps {\n active: AssignDetailsTab;\n onClick: (screen: AssignDetailsTab) => void;\n}\n\nexport function AssingDetailsTabs(props: AssingDetailsTabsProps): JSX.Element {\n return (\n <div className='d-flex justify-content-center mb-3 gap-3 flex-wrap'>\n <TabItem tab='share-link' {...props}>\n <SvgContainer svgName={cvSvgLibrary.Link} />\n <Text namespace={namespace} phrase='shareLink' />\n </TabItem>\n <TabItem tab='qr-code' {...props}>\n <SvgContainer svgName={cvSvgLibrary.QrCode} />\n <Text namespace={namespace} phrase='qrCode' />\n </TabItem>\n <TabItem tab='embed' {...props}>\n <SvgContainer svgName={cvSvgLibrary.Code} />\n <Text namespace={namespace} phrase='embed' />\n </TabItem>\n <TabItem tab='integrations' {...props}>\n <ShareIntegrationsStack size='sm' noTooltip />\n <Text namespace={namespace} phrase='integrations' />\n </TabItem>\n </div>\n );\n}\n","import React from 'react';\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 { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\n\nconst namespace = 'assign.assignEmbed';\n\nexport interface AssignEmbedProps {\n entity: BaseObject;\n entityId: string;\n entityType: SharableEntityType;\n embedUrl: string;\n liteUrl: string;\n shareId: string;\n joinCode?: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n}\n\nfunction JoinCodeInstructions() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nfunction SignInInstruction() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2SignIn' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignEmbed(props: AssignEmbedProps): JSX.Element {\n function onCopyLogEvent(embedDetails: EmbedDetails) {\n props.log && props.log({\n type: 'copy-embed-html',\n embedDetails,\n flow: props.flow\n });\n }\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='w-100'>\n <AssingDetailsTabs active='embed' onClick={props.onClickTab} />\n <div className='container-fluid bg-light py-3 bg-light rounded-3 p-3'>\n <div className='row gy-4'>\n <div className='col-lg-5 col-12 d-flex flex-column justify-content-center'>\n {props.joinCode ?\n <JoinCodeInstructions /> :\n <SignInInstruction />\n }\n </div>\n <div className='col-lg-7 col-12 d-flex flex-column-reverse gap-3'>\n <CopyEmbedHtml\n analyticsOptions={{}}\n embedUrl={props.embedUrl}\n entity={props.entity}\n entityId={props.entityId}\n entityType={props.entityType}\n liteUrl={props.liteUrl}\n shareId={props.shareId}\n hideLabel\n hasInputBg\n onCopy={onCopyLogEvent}\n />\n </div>\n </div>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\n\nimport { IntegrationList } from '../integration-list/IntegrationList';\n\nconst namespace = 'assign.assignIntegrations';\n\nexport interface AssignIntegrationsProps {\n entity: BaseObject;\n joinCode?: string;\n instanceRegion: InstanceRegion;\n contactSupportLink: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n}\n\nfunction JoinCodeInstructions() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1JoinCode' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2JoinCode' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='step4' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nfunction SignInInstructions() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1SignIn' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2SignIn' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='step3SignIn' />\n </Instructions.Step>\n <Instructions.Step number={4}>\n <Text phrase='step4' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignIntegrations(props: AssignIntegrationsProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='integrations' onClick={props.onClickTab} />\n <div className='container-fluid py-3 bg-light rounded-3 p-3'>\n <div className='row gy-4'>\n <div className='col-12 col-lg-5 d-flex flex-column justify-content-center'>\n {!props.joinCode ?\n <JoinCodeInstructions /> :\n <SignInInstructions />\n }\n </div>\n <div className='col-12 col-lg-7'>\n <IntegrationList instanceRegion={props.instanceRegion} contactSupportLink={props.contactSupportLink} />\n </div>\n </div>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { ShareIntegrationsStack } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsStack';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { Divider } from 'libs/shared/components/divider/Divider';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { AssignDetailsTab } from '../assign-details-tabs/AssignDetailsTabs';\n\nimport styles from './assign-overview.scss';\n\nconst namespace = 'assign.assignOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ShareLinkOptionProps {\n screen: AssignDetailsTab;\n onClick: (screen: AssignDetailsTab) => void;\n}\n\nfunction ShareLinkOption(props: React.PropsWithChildren<ShareLinkOptionProps>): JSX.Element {\n return (\n <button\n className={classNames(\n 'rounded ratio ratio-1x1 border border-light hover-bg-light-blue',\n styles.shareButton\n )}\n onClick={() => props.onClick(props.screen)}\n >\n <div className='d-flex flex-column align-items-center justify-content-center gap-1 p-2 '>\n {props.children}\n </div>\n </button>\n );\n}\n\ninterface AssignOverviewImageProps {\n entity: SharableEntity;\n}\n\nfunction AssignOverviewImage(props: AssignOverviewImageProps): JSX.Element {\n return (\n <div className={classNames('d-flex align-items-center justify-content-center', styles.overviewImage)}>\n <figure\n style={{ backgroundImage: `url(${ImageUrls.Assign.ASSIGN_DETAILS.OVERVIEW_TEXT})` }}\n className={classNames('m-0', styles.text)}\n />\n <figure\n style={{ backgroundImage: `url(${ImageUrls.Assign.ASSIGN_DETAILS.OVERVIEW_BG})` }}\n className={classNames('position-relative m-0', styles.background)}\n >\n <div className={classNames('position-absolute', styles.entity)}>\n <SharedObjectImage\n object={props.entity}\n locationContext={LocationContext.AssignFlowView}\n thumbnailSize='md'\n />\n </div>\n </figure>\n </div>\n );\n}\n\nexport interface AssignOverviewProps {\n entity: SharableEntity;\n onClickTab: (screen: AssignDetailsTab) => void;\n}\n\nexport function AssignOverview(props: AssignOverviewProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className={classNames('mx-auto', styles.wrapper)}>\n <div className='d-flex flex-column align-items-center text-center mb-4 gap-3'>\n\n <AssignOverviewImage entity={props.entity} />\n\n <h3 className='m-0 d-flex flex-column flex-md-row align-items-center gap-2'>\n <SvgContainer svgName={cvSvgLibrary.Check} className={classNames('d-inline-block svg-container md bg-green rounded-circle text-white')}/>\n <Text phrase='title' />\n </h3>\n <p className='m-0'>\n <Text phrase='description' />\n </p>\n </div>\n \n <Divider text={getPhrase('dividerText')} className='mb-4' noUpperCase />\n\n <div className='d-flex justify-content-center gap-3 flex-wrap'>\n <ShareLinkOption screen='share-link' onClick={props.onClickTab}>\n <SvgContainer svgName={cvSvgLibrary.Link} />\n <Text phrase='shareLink' />\n </ShareLinkOption>\n <ShareLinkOption screen='qr-code' onClick={props.onClickTab}>\n <SvgContainer svgName={cvSvgLibrary.QrCode} />\n <Text phrase='qrCode' />\n </ShareLinkOption>\n <ShareLinkOption screen='embed' onClick={props.onClickTab}>\n <SvgContainer svgName={cvSvgLibrary.Code} />\n <Text phrase='embed' />\n </ShareLinkOption>\n <ShareLinkOption screen='integrations' onClick={props.onClickTab}>\n <span className={classNames('d-inline-flex align-items-center', styles.integrations)}>\n <ShareIntegrationsStack size='sm' noTooltip />\n </span>\n <Text phrase='integrations' />\n </ShareLinkOption>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"QB4Pm\",\"shareButton\":\"r9K_x\",\"integrations\":\"tTimT\",\"overviewImage\":\"McyhP\",\"text\":\"u6Z4r\",\"background\":\"RtZpT\",\"entity\":\"m6eZK\"};","import React from 'react';\nimport { Button, ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Text } from '../text/Text';\n\nconst namespace = 'shared.fullScreen';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\ninterface FullScreenButtonProps {\n variant?: ButtonProps['variant'];\n text?: string;\n hideIcon?: boolean;\n onClick: () => void;\n}\n\nfunction FsButton(props: FullScreenButtonProps) {\n if (!document.fullscreenEnabled)\n return <></>;\n\n const buttonText = props.text || getPhrase('buttonText');\n \n return (\n <div className='w-100 text-center'>\n <Button variant={props.variant || 'link'} className='d-inline-flex justify-content-center text-info p-0' onClick={props.onClick}>\n <span>{buttonText}</span>\n {!props.hideIcon &&\n <SvgContainer svgName={cvSvgLibrary.NewWindow} />\n }\n </Button>\n </div>\n );\n}\n\ninterface FullScreenProps {\n isFullScreen: boolean;\n controlsRef: React.MutableRefObject<HTMLDivElement>;\n}\n\nexport function FullScreen(props: React.PropsWithChildren<FullScreenProps>) {\n if (!document.fullscreenEnabled)\n return <></>;\n \n function exitFullScreen() {\n document.exitFullscreen();\n }\n \n return (\n <div className={classNames('vw-100 vh-100 bg-white', !props.isFullScreen && 'd-none')} ref={props.controlsRef}>\n <div className='position-absolute top-0 end-0 pe-4 pt-4 z-1'>\n <Button variant='outline-dark' className='d-inline-flex align-items-center gap-1' onClick={exitFullScreen}>\n <Text namespace={namespace} phrase='exitFullScreen' />\n <SvgContainer svgName={cvSvgLibrary.Close} />\n </Button>\n </div>\n {props.children}\n </div>\n );\n}\n\nFullScreen.Button = FsButton;","import React from 'react';\n\nfunction handleFullScreenChange<T extends HTMLElement>(target: T, setIsFullScreen: (fullscreen: boolean) => void) {\n if (document.fullscreenElement === target) {\n setIsFullScreen(true);\n return;\n }\n\n setIsFullScreen(false);\n}\n\nexport function useFullScreenActions<T extends HTMLElement = HTMLDivElement>() {\n const ref = React.useRef<T>(null);\n \n const [ isFullScreen, setIsFullScreen ] = React.useState(false);\n\n const isSupported = document.fullscreenEnabled;\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n const onFullScreenChange = () => {\n handleFullScreenChange(ref.current, setIsFullScreen);\n };\n\n ref.current?.addEventListener('fullscreenchange', onFullScreenChange);\n\n return () => ref.current?.removeEventListener('fullscreenchange', onFullScreenChange);\n }, [ref.current]);\n \n function requestFullScreen() {\n if (!ref.current || !isSupported)\n return;\n\n ref.current.requestFullscreen && ref.current.requestFullscreen();\n }\n\n function exitFullScreen() {\n document.exitFullscreen().finally(() => {\n setIsFullScreen(false);\n });\n }\n \n return {\n ref,\n isFullScreen,\n isSupported,\n requestFullScreen,\n exitFullScreen\n };\n}","import React from 'react';\nimport { QRCode } from 'react-qrcode-logo';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Base64ClickViewLogo } from './images/Base64ClickViewLogo';\n\nimport styles from './qr-code.scss';\n\nexport type QrCodeSizePreset = 'sm' | 'md' | 'lg';\ntype QrCodeSizeCustom = 'custom';\ntype QrCodeSize = QrCodeSizePreset | QrCodeSizeCustom;\n\ninterface BaseQrCodeProps {\n id?: string;\n size: QrCodeSize;\n value: string;\n containerClassName?: string;\n qrRef?: React.MutableRefObject<QRCode>;\n}\n\ninterface DefaultQrCodeProps extends BaseQrCodeProps {\n size: QrCodeSizePreset;\n}\n\ninterface CustomQrCodeProps extends BaseQrCodeProps {\n size: QrCodeSizeCustom;\n customSize: number;\n}\n\ntype QrCodeProps = DefaultQrCodeProps | CustomQrCodeProps;\n\nconst sizeClassMap: {[key in QrCodeSizePreset]: string} = {\n sm: styles.containerSm,\n md: styles.containerMd,\n lg: styles.containerLg\n};\n\nconst qrSizeMap: {[key in QrCodeSize]: number} = {\n sm: 100, // px\n md: 200,\n lg: 400,\n custom: 0\n};\n\nconst OUTER_RADIUS = 10;\nconst INNER_RADIUS = 1;\n\nexport function QrCode(props: QrCodeProps): JSX.Element {\n const qrSize = props.size === 'custom' ? props.customSize : qrSizeMap[props.size];\n const qrSizeClass = props.size === 'custom' ? props.containerClassName : sizeClassMap[props.size];\n\n return (\n <div className={classNames(\n 'position-relative d-flex justify-content-center align-items-center flex-column',\n 'border border-dark rounded-3 bg-white',\n qrSizeClass\n )}>\n <QRCode\n id={props.id || 'cv-qr-code'}\n value={props.value}\n bgColor='white'\n size={qrSize}\n logoImage={Base64ClickViewLogo}\n logoPaddingStyle='circle'\n logoPadding={1}\n eyeRadius={[\n { outer: [ OUTER_RADIUS, 0, 0, 0 ], inner: [ INNER_RADIUS, 0, 0, 0 ]}, // top left\n { outer: [ 0, OUTER_RADIUS, 0, 0 ], inner: [ 0, INNER_RADIUS, 0, 0 ]}, // top right\n { outer: [ 0, 0, 0, OUTER_RADIUS ], inner: [ 0, 0, 0, INNER_RADIUS ]} // bottom left\n ]}\n removeQrCodeBehindLogo\n ref={props.qrRef}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"containerSm\":\"oAKIc\",\"containerMd\":\"Ml3L5\",\"containerLg\":\"cWnjp\"};","export const Base64ClickViewLogo = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAYFBMVEX////4mB34lhX5qEz4kQD4kwD4lAD+79/4lxf4jwD//vv938L5rFb96NP+9On4lQv6tWf+9/D5pUX8z6D6u3n4nzP82LP5pD/7xo/4nSr6s2X6vX77xpH5rVn5pED/+vVbzc80AAACrElEQVR4nO3di3LTMBSE4R7HDjEF3IaWlmvf/y0RlA4RjWNZHqHZo/97Au1k4m6OZPXqCgAAAAAAAAAAAAAAAAAAAAAAAP/BzW3tFZR2tDe1l1DYbhqua6+hrF1n48faiygqJLTxrvYqSvqV0IZ3b2uvo5zfCW26/1B7IcU8J7Ru/772Skr5k9AO/afaSynkJWF43jzWXksZfxNaf1N7MUWcJLT9w1Pt5RRwmtAmjxUuSmgHhxUuTmgOK9y/Cf1VuFcJ3VW41wm9VbgzCa2bPFW4cwntMDqqcGcTuqpwMwkdVbi5hLY/OpnCzSZ0U+HmE4bnjYsKdyFh+DJ6qHAXE1r/tfb6truc0Hr9CreQ0KbP6o/UpYTWDeIVbjGh/BRuOWH4MkpXuJSE1n+pvcwNkhJKT+HSElp3kK1wiQnD80a1wqUm1J3CpSdUncKtSCg6hVuTMFQ4wSncqoSSG6nrEipO4VYmFJzCrU4oN4Vbn1CtwmUkFKtwOQm1NlKzEoaWqlPh8hKG541MhctNaMNOpMJlJ5SpcPkJVTZSNyQUmcJtSahR4bYlVJjCbUwosJG6NaH1D7UjLOAzXPoEvX8PvT9L3f89dN9pVA74ZSeU2eHP/n0oc0qD3/jnA+6dz2ncz9rcz0vdz7zHb7WXvNLavSeJohZh/zCiMkCMsI9/YpQpahHO07yQ2lCLJCacpIpaJPFs4lGqqEXSzpeKFbUIZ4Qli1qEs/ru37fovysWtUjj7z0JTdTmtfz+oft3SAfhohZp9l1uuYnavDbvVBDZ+kzU4t0mDopapL07hlQnavMau+vLS1GLRHfu/XBS1CIt3ZuocEYtRzP3lypufSZq5B5hza3PRE3c5+2vqEX836vv/38j+P//FgAAAAAAAAAAAAAAAAAAAAAAALJ+AoAWHaLlWtXqAAAAAElFTkSuQmCC';\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { QRCode } from 'react-qrcode-logo';\nimport printJS from 'print-js';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Core } from 'libs/common/backbone/index';\n\nimport { QrCode, QrCodeSizePreset } from '../QrCode';\n\ninterface PrintOptions {\n id: string;\n name?: string;\n size?: QrCodeSizePreset;\n onDone?: () => void;\n}\n\ninterface DownloadOptions {\n type?: 'png' | 'jpg' | 'webp',\n name?: string;\n size?: QrCodeSizePreset;\n}\n\ninterface QrCodeDownloadProps {\n options: Required<DownloadOptions>;\n value: string;\n onDone?: () => void;\n}\n\nfunction QrCodeDownload(props: QrCodeDownloadProps): JSX.Element {\n const downloadRef = React.useRef<QRCode>();\n React.useEffect(() => {\n const timeout = setTimeout(() => {\n downloadRef.current?.download(props.options.type, props.options.name);\n typeof props.onDone === 'function' && props.onDone();\n }, 200); // Some delay is require for images to load\n\n return () => {\n clearTimeout(timeout);\n };\n }, []);\n \n return (\n <div className='d-none'>\n <QrCode size={props.options.size} value={props.value} qrRef={downloadRef} />\n </div>\n );\n}\n\nexport function useQrCodeActions() {\n const ref = React.useRef<QRCode>();\n const [ isPrinting, setIsPrinting ] = React.useState(false);\n const [ isDownloading, setIsDownloading ] = React.useState(false);\n\n /**\n * We render a different QR Code according to what we need\n */\n function download({ name, size = 'lg', type = 'png' }: DownloadOptions): void {\n if (!ref.current)\n return;\n \n const printRegion = document.getElementById('print-region');\n\n if (!printRegion)\n Core.ErrorHelper.throw(new DevError('Could not find print region in layout'));\n\n const root = createRoot(printRegion);\n\n setIsDownloading(true);\n \n root.render(\n <QrCodeDownload\n options={{ name, size, type }}\n value={ref.current.props.value}\n onDone={() => {\n root.unmount();\n setIsDownloading(false);\n }}\n />\n );\n }\n\n function print({ id, name, size = 'lg', onDone }: PrintOptions) {\n if (!ref.current)\n return;\n \n const printRegion = document.getElementById('print-region');\n\n if (!printRegion)\n Core.ErrorHelper.throw(new DevError('Could not find print region in layout'));\n\n const root = createRoot(printRegion);\n\n root.render(\n <div className='d-none vw-100 vh-100'>\n <div id={id} className='w-100 h-100 d-flex align-items-center justify-content-center'>\n <QrCode size={size} value={ref.current.props.value} />\n </div>\n </div>\n );\n\n setIsPrinting(true);\n\n window.setTimeout(() => {\n printJS({\n printable: id,\n type: 'html',\n documentTitle: name || 'ClickView - QRCode',\n targetStyles: ['*'],\n imageStyle: '*',\n style: '@page { size: A4; margin: 1.5cm 0; }',\n onLoadingEnd: () => {\n typeof onDone === 'function' && onDone();\n setIsPrinting(false);\n root.unmount();\n },\n onError: () => {\n setIsPrinting(false);\n root.unmount();\n }\n });\n }, 200); // Some delay is require for images to load\n }\n\n return { ref, isPrinting, isDownloading, download, print };\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { QrCode } from 'libs/shared/components/qr-code/QrCode';\nimport { QrCodeSizePreset } from 'libs/shared/components/qr-code/QrCode';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport styles from './assign-full-screen.scss';\n\nconst namespace = 'assign.fullScreen';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AssignQrDetailsProps {\n value: string;\n}\n\nfunction AssignQrDetails(props: AssignQrDetailsProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size: QrCodeSizePreset = (breakpoints.sm || breakpoints.xs) ? 'md' : 'lg';\n\n return (\n <Row>\n <Col xs={12} md={10} lg={8} xl={6} className='bg-light p-4 rounded mx-auto d-flex flex-column align-items-center'>\n <div className='mb-3 text-center'>\n <span className='fs-3 fw-bold'>\n <Text namespace={namespace} phrase='scanQr' />\n </span>\n </div>\n <QrCode size={size} value={props.value} />\n </Col>\n </Row>\n );\n}\n\ninterface AssignJoinCodeDetailsProps {\n link: string;\n joinCode: string;\n}\n\nfunction AssignJoinCodeDetails(props: AssignJoinCodeDetailsProps): JSX.Element {\n return (\n <Row>\n <Col xs={12} md={8} lg={5} className={'bg-light p-4 d-block rounded mx-auto'}>\n <Instructions>\n <Instructions.Step number={1}>\n <Text namespace={namespace} phrase='studentsGoToLink' />\n </Instructions.Step>\n <Instructions.Textbox value={props.link}/>\n <Instructions.Step number={2}>\n <Text namespace={namespace} phrase='enterJoinCode' />\n </Instructions.Step>\n <Instructions.Textbox value={props.joinCode} />\n <Instructions.Step number={3}>\n <Text namespace={namespace} phrase='studentsWatchVideo' />\n </Instructions.Step>\n </Instructions>\n </Col>\n </Row>\n );\n}\n\ninterface AssignLinkDetailsProps {\n link: string;\n}\n\nfunction AssignLinkDetails(props: AssignLinkDetailsProps): JSX.Element {\n return (\n <div className='d-flex align-items-center'>\n <div className={classNames('bg-light p-4 d-block rounded mx-auto w-auto', styles.assignLinkDetails)}>\n <Instructions bottomSpacing='none'>\n <Instructions.Textbox label={getPhrase('goToLink')} value={props.link} />\n </Instructions>\n </div>\n </div>\n );\n}\n\ninterface AssignFullScreen {\n entity: SharableEntity;\n locationContext: LocationContext;\n}\n\nexport function AssignFullScreen(props: React.PropsWithChildren<AssignFullScreen>): JSX.Element {\n return (\n <div className='container p-4'>\n <Row>\n <Col>\n <h3 className='text-center'>\n <Text namespace={namespace} phrase='watchVideo' />\n </h3>\n </Col>\n </Row>\n <Row className='mb-4'>\n <Col xs={12} sm={8} md={6} lg={3} className='mx-auto'>\n <SharedObjectImage\n object={props.entity}\n thumbnailSize='md'\n locationContext={props.locationContext}\n showVideoMetadata\n hideBottomBar\n />\n </Col>\n </Row>\n {props.children}\n </div>\n );\n}\n\nAssignFullScreen.QrDetails = AssignQrDetails;\nAssignFullScreen.JoinCode = AssignJoinCodeDetails;\nAssignFullScreen.LinkDetails = AssignLinkDetails;","// extracted by mini-css-extract-plugin\nexport default {\"assignLinkDetails\":\"P4XQf\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { FullScreen } from 'libs/shared/components/full-screen/FullScreen';\nimport { useFullScreenActions } from 'libs/shared/components/full-screen/hooks/useFullScreenActions';\nimport { useQrCodeActions } from 'libs/shared/components/qr-code/hooks/useQrCodeActions';\nimport { QrCode } from 'libs/shared/components/qr-code/QrCode';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\nimport { AssignFullScreen } from '../assign-full-screen/AssignFullScreen';\n\nimport styles from './assign-qr-code.scss';\n\nconst namespace = 'assign.assignQrCode';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AssignQrCodeProps {\n shareLink: string;\n entity: SharableEntity;\n joinCode?: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n}\n\nexport function AssignQrCode(props: AssignQrCodeProps): JSX.Element {\n const qrCode = useQrCodeActions();\n const fullScreen = useFullScreenActions();\n const fileName = getPhrase('fileName', { name: props.entity.name });\n \n function getSteps() {\n if (props.joinCode)\n return {\n 1: 'step1',\n 2: 'stepWatchVideo'\n };\n\n return {\n 1: 'step1',\n 2: 'step2SignIn',\n 3: 'stepWatchVideo'\n };\n }\n\n function getQrCodeValue() {\n if (props.joinCode) {\n return `${props.shareLink}?joinCode=${props.joinCode}`;\n }\n\n return props.shareLink;\n }\n\n function onClickDownload() {\n props.log && props.log({\n type: 'download-qr-code',\n entity: props.entity,\n flow: props.flow\n });\n \n qrCode.download({ name: fileName });\n }\n\n function onClickPrint() {\n props.log && props.log({\n type: 'print-qr-code',\n entity: props.entity,\n flow: props.flow\n });\n\n const name = fileName;\n qrCode.print({\n id: name,\n name: name\n });\n }\n\n function onClickFullScreen() {\n props.log && props.log({\n type: 'request-full-screen',\n entity: props.entity,\n flow: props.flow,\n tab: 'qr-code'\n });\n fullScreen.requestFullScreen();\n }\n\n const steps = getSteps();\n const qrValue = getQrCodeValue();\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='qr-code' onClick={props.onClickTab} />\n <div className={`d-block mx-auto ${styles.container}`}>\n <div className='container-fluid py-3 bg-light rounded-3 p-3'>\n <div className='row gy-4'>\n <div className='col-lg-7 col-12 d-flex flex-column justify-content-center'>\n <Instructions>\n {Object.entries(steps).map(([ step, phrase ]) => (\n <Instructions.Step number={step} key={step}>\n <Text phrase={phrase} />\n </Instructions.Step>\n ))}\n </Instructions>\n <div className='d-flex flex-column flex-md-row gap-2 mb-2'>\n <SpinnerButton\n variant='outline-dark'\n className='w-100'\n showSpinner={qrCode.isPrinting}\n spinnerText={getPhrase('printing')}\n onClick={onClickPrint}\n >\n <Text phrase='printButton' />\n </SpinnerButton>\n <SpinnerButton\n showSpinner={qrCode.isDownloading}\n variant='outline-dark'\n className='w-100'\n onClick={onClickDownload}\n spinnerText={getPhrase('downloading')}\n >\n <Text phrase='downloadButton' />\n </SpinnerButton>\n </div>\n <FullScreen.Button onClick={onClickFullScreen} hideIcon />\n </div>\n <div className='col-lg-5 col-12'>\n <QrCode\n size='md'\n value={qrValue}\n qrRef={qrCode.ref}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n <FullScreen isFullScreen={fullScreen.isFullScreen} controlsRef={fullScreen.ref}>\n <AssignFullScreen entity={props.entity} locationContext={LocationContext.AssignFlowView}>\n <AssignFullScreen.QrDetails value={qrValue} />\n </AssignFullScreen>\n </FullScreen>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { FullScreen } from 'libs/shared/components/full-screen/FullScreen';\nimport { useFullScreenActions } from 'libs/shared/components/full-screen/hooks/useFullScreenActions';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\nimport { AssignFullScreen } from '../assign-full-screen/AssignFullScreen';\n\nimport styles from './assign-share-link.scss';\n\nconst namespace = 'assign.assignShareLink';\n\nexport interface AssignShareLinkProps {\n entity: BaseObject;\n liteUrl: string;\n shareLink: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n joinCode?: string;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n}\n\ninterface JoinCodeInstructionsProps {\n link: string;\n}\n\nfunction JoinCodeInstructions(props: JoinCodeInstructionsProps) {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Textbox\n value={props.link}\n showCopyButton\n />\n <Instructions.Step number={2}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\ninterface SignInInstructionsProps {\n link: string;\n}\n\nfunction SignInInstructions(props: SignInInstructionsProps): JSX.Element {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Textbox\n value={props.link}\n showCopyButton\n />\n <Instructions.Step number={2}>\n <Text phrase='step2SignIn' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignShareLink(props: AssignShareLinkProps): JSX.Element {\n const fullScreen = useFullScreenActions();\n \n const link = props.joinCode\n ? UrlHelper.safeUrlConcat(props.liteUrl, `play/${props.joinCode}`)\n : props.shareLink;\n\n function onClickFullScreen() {\n typeof props.log === 'function' &&\n props.log({\n type: 'request-full-screen',\n entity: props.entity,\n flow: props.flow,\n tab: 'share-link'\n });\n fullScreen.requestFullScreen();\n }\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='share-link' onClick={props.onClickTab} />\n <div className={`bg-light rounded-3 mx-auto py-3 px-sm-5 px-3 d-block ${styles.container}`}>\n {props.joinCode\n ? <JoinCodeInstructions link={link} />\n : <SignInInstructions link={link} />\n }\n <FullScreen.Button onClick={onClickFullScreen} hideIcon />\n </div>\n </div>\n <FullScreen isFullScreen={fullScreen.isFullScreen} controlsRef={fullScreen.ref}>\n <AssignFullScreen entity={props.entity} locationContext={LocationContext.AssignFlowView}>\n <AssignFullScreen.LinkDetails link={link} />\n </AssignFullScreen>\n </FullScreen>\n </LanguageNamespaceContext.Provider>\n );\n}","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 { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharePincode } from 'libs/shared/apps/share-v2/interfaces/SharePincode';\nimport { SharableEntity, SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport { AssignDetailsTab } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignEmbed, AssignEmbedProps } from 'apps/assign/components/assign-details/components/assign-embed/AssignEmbed';\nimport { AssignIntegrations, AssignIntegrationsProps } from 'apps/assign/components/assign-details/components/assign-integrations/AssignIntegrations';\nimport { AssignOverview, AssignOverviewProps } from 'apps/assign/components/assign-details/components/assign-overview/AssignOverview';\nimport { AssignQrCode, AssignQrCodeProps } from 'apps/assign/components/assign-details/components/assign-qr-code/AssignQrCode';\nimport { AssignShareLink, AssignShareLinkProps } from 'apps/assign/components/assign-details/components/assign-share-link/AssignShareLink';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nconst namespace = 'assign.assignDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport type AssignDetailsFlow = 'existing-classroom' | 'open-classroom';\ninterface AssignDetailsProps {\n entityId: string;\n entity: SharableEntity;\n entityType: SharableEntityType;\n share: Share;\n liteUrl: string;\n instanceRegion: InstanceRegion;\n contactSupportLink: string;\n sharePincode?: SharePincode;\n initialScreen?: AssignDetailsTab;\n title?: string;\n hideTitle?: boolean;\n log?: AssignLogFn;\n}\n\ntype AllAssignDetailsScreenProps =\n & AssignOverviewProps\n & AssignShareLinkProps\n & AssignQrCodeProps\n & AssignEmbedProps\n & AssignIntegrationsProps;\n\nconst AssignDetailsConfig: {[key in AssignDetailsTab]: {\n component: (props: AllAssignDetailsScreenProps) => JSX.Element;\n}} = {\n 'overview': { component: AssignOverview },\n 'share-link': { component: AssignShareLink },\n 'qr-code': { component: AssignQrCode },\n 'embed': { component: AssignEmbed },\n 'integrations': { component: AssignIntegrations }\n};\n\nconst ShareTypeFlowMap: {[key in ShareType]?: 'existing-classroom' | 'open-classroom'} = {\n [ShareType.Open]: 'open-classroom',\n [ShareType.Classroom]: 'existing-classroom'\n};\n\nexport function AssignDetails(props: AssignDetailsProps): JSX.Element {\n const [ screen, setScreen ] = React.useState<AssignDetailsTab>(props.initialScreen ?? 'share-link');\n\n const shouldHideTitle = props.hideTitle || screen === 'overview';\n\n const data: AllAssignDetailsScreenProps = {\n entity: props.entity,\n onClickTab: setScreen,\n entityId: props.entityId,\n entityType: props.entityType,\n liteUrl: props.liteUrl,\n instanceRegion: props.instanceRegion,\n joinCode: props.sharePincode?.code,\n shareId: props.share.shareId,\n embedUrl: props.share.link.shortenedEmbedUrl,\n shareLink: props.share.link.shortenedUrl,\n contactSupportLink: props.contactSupportLink,\n flow: ShareTypeFlowMap[props.share.type],\n log: props.log\n };\n \n const Component = AssignDetailsConfig[screen].component;\n\n const title = props.title || getPhrase('title');\n \n return (\n <div className='d-flex flex-column align-items-center justify-content-center py-3 gap-4'>\n {!shouldHideTitle &&\n <h3 className='mb-0'><span>{title}</span></h3>\n }\n \n <Component {...data} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"HrK3n\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"OCQzr\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharePincode } from 'libs/shared/apps/share-v2/interfaces/SharePincode';\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';\n\nimport { getInsightsOverviewAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { AssignDetails } from 'apps/assign/components/assign-details/AssignDetails';\nimport { AssignDetailsTab } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\nimport { useAssignSharedData } from 'apps/assign/hooks/useAssignSharedData';\nimport { AssignHelper } from 'apps/assign/utils/AssignHelper';\nimport { getAssignEventLogger } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nconst namespace = 'assign.assignDetailsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AssignDetailsViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n shareId: string;\n initialDetailsScreen?: AssignDetailsTab;\n detailsTitle?: string;\n}\n\nexport function AssignDetailsView(\n props: AssignDetailsViewProps\n) {\n const { config, loaded, entity, currentUser } = useAssignSharedData({\n entityType: props.entityType,\n objectId: props.objectId\n });\n\n const { log } = getAssignEventLogger({\n data: {\n entity: {\n id: props.objectId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n entity: EntityType.Assign,\n location: LocationContext.Popup\n }\n });\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n \n const isPincodePrivacy = share.data?.privacy === SharePrivacy.PinCode;\n const pincode = Flight.useBasicFetch<SharePincode>(\n isPincodePrivacy && ShareRequests.getPincodeByShareId(props.shareId)\n );\n\n function onClickBack() {\n log({\n type: 'close-assign-popup',\n share: share.data\n }, {\n workflowPhase: WorkflowPhase.Complete\n });\n \n props.closePopup();\n }\n \n function onClickNext() {\n const appLink = getInsightsOverviewAppLink(share.data);\n\n if (!appLink)\n return;\n\n log({\n type: 'view-assignment',\n share: share.data\n });\n\n AppLinkHelper.trigger(appLink);\n props.closePopup();\n }\n\n const initialScreen: AssignDetailsTab = props.initialDetailsScreen || 'overview';\n\n const contactSupportLink = AssignHelper.getContactSupportUrl(\n config.data?.marketingSiteUrl,\n currentUser.data?.instanceRegion\n );\n \n const showLoadingSpinner = (\n !loaded ||\n props.loading ||\n !share.data ||\n (isPincodePrivacy && !pincode.data)\n );\n\n return (\n <Popup\n size='lg'\n showLoadingSpinner={showLoadingSpinner}\n closePopup={props.closePopup}\n bodyClassName='d-flex flex-column gap-3'\n animation={props.animate}\n hideTitle\n >\n <AssignDetails\n title={props.detailsTitle}\n entityId={props.objectId}\n entityType={props.entityType}\n share={share.data}\n sharePincode={pincode.data}\n entity={entity.data}\n liteUrl={config.data.liteUrl}\n instanceRegion={currentUser.data.instanceRegion}\n initialScreen={props.initialDetailsScreen || initialScreen}\n contactSupportLink={contactSupportLink}\n log={log}\n />\n <FlowControls\n backButtonText={getPhrase('backButtonText')}\n nextButtonText={getPhrase('nextButtonText')}\n onClickBack={onClickBack}\n onClickNext={onClickNext}\n hideCreateClassroomButton\n />\n </Popup>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"orderedListWithBackground\":\"ezbBL\",\"number\":\"hs0Fv\",\"code\":\"h0c9p\",\"large\":\"_leUV\",\"success\":\"f_XNL\"};","import React from 'react';\nimport CopyToClipboard from 'react-copy-to-clipboard';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\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 styles from './instructions.scss';\n\nconst COPY_TIMEOUT = 2000;\n\nconst namespace = 'shared.instructions';\n\ninterface BoxOverlayProps {\n show: boolean;\n text?: string;\n}\n\nfunction BoxOverlay(props: BoxOverlayProps): JSX.Element {\n return (\n <div className={classNames(\n styles.success,\n 'col-12 position-absolute w-100 h-100 start-0 top-0',\n 'd-inline-flex align-items-center text-white justify-content-center text-truncate bg-success fs-3',\n props.show ? 'opacity-1' : 'opacity-0'\n )}>\n {props.text ?? <Text namespace={namespace} phrase='copied' />}\n </div>\n );\n}\n\ninterface StepProps {\n number: number | string;\n}\n\nfunction Step(props: React.PropsWithChildren<StepProps>): JSX.Element {\n return (\n <li className='d-flex align-items-center'>\n <div className='align-self-start'>\n <span className={`${styles.number}`}>{props.number}</span>\n </div>\n <div className='w-100'>\n {props.children}\n </div>\n </li>\n );\n}\n\ninterface CodeProps {\n code: string;\n className?: string;\n size: 'md' | 'lg';\n}\n\nfunction Code(props: CodeProps): JSX.Element {\n const [ copied, setCopied ] = React.useState(false);\n\n function onCopy(): void {\n setCopied(true);\n\n setTimeout(() => setCopied(false), COPY_TIMEOUT);\n }\n\n return (\n <CopyToClipboard onCopy={onCopy} text={props.code}>\n <div className={classNames(\n `position-relative bg-white border rounded-3 text-center overflow-hidden fw-semibold cursor-pointer ${styles.code}`,\n props.size === 'lg' && `py-3 ${styles.large}`,\n props.size === 'md' && 'py-2',\n props.className\n )}>\n {props.code}\n <SvgContainer\n svgName={cvSvgLibrary.Copy}\n size={SvgContainerSize.Large}\n className='ms-2 svg-container d-inline-block lg align-middle'\n />\n <BoxOverlay show={copied} />\n </div>\n </CopyToClipboard>\n );\n}\n\ninterface TextboxProps {\n value: string;\n label?: string;\n className?: string;\n showCopyButton?: boolean;\n copiedText?: string;\n onCopy?: () => void;\n}\n\nfunction Textbox(props: TextboxProps): JSX.Element {\n const [ copied, setCopied ] = React.useState<boolean>(false);\n \n function onCopy(): void {\n if (!props.showCopyButton)\n return;\n\n setCopied(true);\n\n typeof props.onCopy === 'function' && props.onCopy();\n\n setTimeout(() => setCopied(false), COPY_TIMEOUT);\n }\n \n\n return (\n <CopyToClipboard onCopy={onCopy} text={props.value}>\n <div>\n {props.label && <h3 className='mb-3 text-center'>{props.label}</h3>}\n <div className={classNames(\n 'bg-white border rounded-3 overflow-hidden px-4 py-3 text-truncate h5 mb-0',\n 'position-relative row align-items-center gx-2 gy-0',\n props.showCopyButton ? 'text-left cursor-pointer' : 'text-center',\n props.className\n )}>\n <div className={classNames(\n props.showCopyButton ? 'col-11' : 'col-12',\n 'text-truncate'\n )}>\n {props.value}\n </div>\n {props.showCopyButton &&\n <div className='col-1'>\n <SvgContainer\n svgName={cvSvgLibrary.Copy}\n size={SvgContainerSize.Standard}\n className='svg-container d-inline-block std'\n onClick={onCopy}\n />\n </div>\n }\n {props.showCopyButton &&\n <BoxOverlay show={copied} />\n }\n </div>\n </div>\n </CopyToClipboard>\n );\n}\n\ntype InstructionsSpacing = 'none' | 'sm' | 'md' | 'lg';\n\ninterface InstructionsProps {\n spacing?: InstructionsSpacing;\n bottomSpacing?: InstructionsSpacing;\n className?: string;\n}\n\nconst bottomSpacingMap: {[key in InstructionsSpacing]: string} = {\n none: 'mb-0',\n md: 'mb-3',\n sm: 'mb-2',\n lg: 'mb-4'\n};\n\nconst itemSpacingMap: {[key in InstructionsSpacing]: string} = {\n none: '',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4'\n};\n\nexport function Instructions(props: React.PropsWithChildren<InstructionsProps>): JSX.Element {\n return (\n <ol className={classNames(\n 'd-flex flex-column',\n bottomSpacingMap[props.bottomSpacing || 'md'],\n itemSpacingMap[props.spacing || 'md'],\n styles.orderedListWithBackground,\n props.className\n )}>\n {props.children}\n </ol>\n );\n}\n\nInstructions.Step = Step;\nInstructions.Code = Code;\nInstructions.Textbox = Textbox;"],"names":["namespace","BASE_IMAGE_CLASS_NAME","InsightsMask","className","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","useVideoThumbnail","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","type","svgContainerClassName","url","getBgColorClass","name","extraClasses","getImageProps","thumbnailMetadata","showVideoMetadata","hideBottomBar","hideDuration","hideMask","hideRating","hideVideoBadgeType","showInsightsMask","AppLink","appLink","VideoThumbnail","video","size","thumbnailSize","imageOptions","textPosition","ThumbnailTextPosition","requireMarking","Text","phrase","options","smartCount","CollectionThumbnail","collection","analyticsData","id","analyticsOptions","entity","ShareViewHelper","actionType","location","locationContext","showMask","showCollectionMask","showVideoCount","onlyCount","BaseImage","data","defaultProps","getPhrase","LanguageService","buildStyle","content","text","noUpperCase","Divider","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","count","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","length","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","svgName","hoverText","hideVideoTypeBadge","TitleSubText","subTextAppLink","titleAppLink","getEventLogger","getData","logAnalyticsOptions","logDataConfig","config","isValid","mergedData","baseData","log","shouldLog","analytics","IntegrationList","integrations","item","valid","icon","link","instanceRegion","instanceRegions","includes","autoHeight","autoHeightMax","maxHeight","map","integration","index","itemClassName","key","href","target","rel","backgroundImage","hideSupportLink","ExternalLink","contactSupportLink","newTab","AssignHelper","getRecipients","entities","e","getLearnersForGroups","groups","learners","reduce","prev","curr","users","getSelectedEntities","selectedEntities","find","filter","getContactSupportUrl","marketingUrl","path","isValidShare","share","LogDataConfig","workflowPhase","descriptor","classroom","getAssignEventLogger","TabItem","active","tab","onClick","children","AssingDetailsTabs","ShareIntegrationsStack","noTooltip","JoinCodeInstructions","Instructions","number","SignInInstruction","SignInInstructions","ShareLinkOption","screen","AssignOverviewImage","ImageUrls","FullScreen","document","fullscreenEnabled","isFullScreen","controlsRef","Button","variant","exitFullscreen","useFullScreenActions","setIsFullScreen","isSupported","current","onFullScreenChange","fullscreenElement","handleFullScreenChange","addEventListener","removeEventListener","requestFullScreen","requestFullscreen","exitFullScreen","buttonText","hideIcon","sizeClassMap","sm","md","lg","qrSizeMap","custom","QrCode","qrSize","customSize","qrSizeClass","containerClassName","QRCode","value","bgColor","logoImage","logoPaddingStyle","logoPadding","eyeRadius","outer","inner","removeQrCodeBehindLogo","qrRef","QrCodeDownload","downloadRef","timeout","setTimeout","download","onDone","clearTimeout","AssignFullScreen","Row","Col","xs","QrDetails","breakpoints","useBreakpoints","xl","JoinCode","joinCode","LinkDetails","bottomSpacing","label","showCopyButton","AssignDetailsConfig","component","onClickTab","fullScreen","UrlHelper","liteUrl","shareLink","flow","isPrinting","setIsPrinting","isDownloading","setIsDownloading","qrCode","printRegion","getElementById","DevError","root","render","unmount","print","window","printable","documentTitle","targetStyles","imageStyle","onLoadingEnd","onError","fileName","steps","qrValue","Object","entries","step","SpinnerButton","showSpinner","spinnerText","CopyEmbedHtml","embedUrl","entityId","entityType","shareId","hideLabel","hasInputBg","onCopy","embedDetails","ShareTypeFlowMap","ShareType","AssignDetails","initialScreen","setScreen","shouldHideTitle","hideTitle","sharePincode","code","shortenedEmbedUrl","shortenedUrl","Component","AssignDetailsView","useAssignSharedData","objectId","loaded","currentUser","ShareRequests","isPincodePrivacy","privacy","SharePrivacy","pincode","initialDetailsScreen","marketingSiteUrl","showLoadingSpinner","loading","Popup","closePopup","bodyClassName","animation","animate","detailsTitle","FlowControls","backButtonText","nextButtonText","onClickBack","onClickNext","hideCreateClassroomButton","BoxOverlay","show","bottomSpacingMap","none","itemSpacingMap","spacing","Step","Code","copied","setCopied","S","Textbox"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9134],{33518:(e,t,n)=>{var r;n.d(t,{e:()=>r}),function(e){e.Public="Public",e.PinCode="PinCode",e.PasswordProtected="PasswordProtected",e.ProtectedOverrideRestriction="ProtectedOverrideRestriction",e.JustMySchoolOverrideRestriction="JustMySchoolOverrideRestriction",e.Protected="Protected",e.JustMySchool="JustMySchool",e.Direct="Direct"}(r||(r={}))},18488:(e,t,n)=>{n.d(t,{o:()=>o});var r=n(99940),a=n(97395),i={namespace:"share-v2"},o={createShare:function(e){return{url:"{gateway}/v2/shares",key:"create:share-v2",type:r.k.POST,data:e,normalizeOptions:i,invalidationKeys:["sent:share-v2","get:share-v2:shares:object:".concat(e.objectId)]}},updateShare:function(e,t){return{url:"{gateway}/v2/shares/".concat(e),key:"update:share-v2",type:r.k.PUT,data:t,normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","share-v2:".concat(e)]}},deleteShare:function(e){return{type:r.k.DELETE,url:"{gateway}/v2/shares/".concat(e),key:"delete:share-v2",normalizeOptions:i,invalidationKeys:["share-v2:permanent-link:object","sent:share-v2","share-v2:".concat(e)]}},getShare:function(e){return{url:"{gateway}/v2/shares/".concat(e),key:"share-v2:".concat(e),bootstrapName:"share-v2:".concat(e),type:r.k.GET,normalizeOptions:i}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.values(e).sort().join(":");return{url:a._.urlBuilder("{gateway}/v2/shares/sent",e),key:"sent:share-v2:".concat(t),type:r.k.GET,normalize:!1}},getShareLink:function(e){return{url:a._.urlBuilder("{gateway}/v2/shares/permanent-link",{objectId:e}),key:"share-v2:permanent-link:object:".concat(e),normalizeOptions:i}},createShareLink:function(e){return{type:r.k.POST,url:a._.urlBuilder("{gateway}/v2/shares/permanent-link",Object.assign({},e)),key:"create:share-v2:permanent-link:object:".concat(e.objectId),invalidationKeys:["share-v2:permanent-link:object:".concat(e.objectId),"sent:share-v2"],normalizeOptions:i}},getPrivacy:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/access"),key:"privacy:".concat(e),normalize:!1}},getSharesByObjectId:function(e){return{url:"{gateway}/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:r.k.GET,normalizeOptions:i}},createSharePincode:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:".concat(e,":pincode"),type:r.k.POST}},getPincodeByShareId:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}},getPincodeByCode:function(e){return{url:"{gateway}/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}}}},93563:(e,t,n)=>{n.d(t,{_:()=>c});var r=n(20354),a=n(33518),i=n(18488),o=n(8233);function c(e){var t=r.a.useGetFetchAsync(),n=r.a.useBasicFetch(i.o.getPrivacy(e.entityId));return{loaded:!!n.data,updateShareLink:function(e,n){return t(i.o.updateShare(e,n))},createShareLink:function(r){var c=null!=r?r:"protected"===o.R.getShareLinkAccessType(n.data)?a.e.Protected:a.e.JustMySchool;return t(i.o.createShareLink({objectId:e.entityId,privacy:c}))},deleteShareLink:function(e){return t(i.o.deleteShare(e))}}}},87265:(e,t,n)=>{n.d(t,{s:()=>s});var r=n(20354),a=n(18488),i=n(2267),o=n(39151),c=n(31949);function s(e){var t,n=r.a.useBasicFetch(c.N.currentUser()),s=i.I.getFetchFunctionByType(e.entityType)(e.entityId,null===(t=n.data)||void 0===t?void 0:t.id),u=r.a.useBasicFetch(a.o.getPrivacy(e.entityId)),l=r.a.useBasicFetch(a.o.getShareLink(e.entityId)),d=r.a.useBasicFetch(o.L.config());return{dataLoaded:!!(s.data&&n.data&&u.data&&l.data&&d.data),currentUser:n,entity:s,privacy:u,share:l,config:d}}},8233:(e,t,n)=>{n.d(t,{R:()=>v});var r=n(23481),a=n(110),i=n(33518),o=n(4594),c=n(49080),s=n(26361),u=n(35223),l=n(31908);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var y=r.T.encloseNamespace("sharev2.utils"),v={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,r=e.hasStudentExp,a=e.entity,c=e.yearGroups;if(t===o.E.Topic||t===o.E.Series)return{icon:u.vn.VisibleOn,text:y(r?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case i.e.Public:return{icon:u.vn.VisibleOn,text:y("publicDescription")};case i.e.ProtectedOverrideRestriction:return{icon:u.vn.VisibleOn,text:y("clickViewOnly")};case i.e.Protected:return{icon:u.vn.Lock,text:v.getRespectRatingText(a,c,r)};case i.e.JustMySchoolOverrideRestriction:return{icon:u.vn.Lock,text:y(r?"justMySchoolTeachers":"justMySchoolDescription")};case i.e.JustMySchool:return{icon:u.vn.Lock,text:v.getRespectRatingText(a,c,r)};case i.e.PinCode:return{icon:u.vn.Lock,text:y("pinDescription")};case i.e.PasswordProtected:return{icon:u.vn.Lock,text:y("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,r=e.status;if(!t&&!n)return v.getPrivateIconAndText(e);if(!t)return{icon:u.vn.Lock,text:y("password")};var i=a.O.isToday(t),o=a.O.diffBetween(t,new Date,"day");if(!n){var s=i?y("expiryToday"):y("expiry",{days:o});return r===c.F.Expired&&(s=y("expired")),{icon:u.vn.Timer,text:s}}var l=i?y("passwordExpiryToday"):y("passwordExpiry",{days:o});return r===c.F.Expired&&(l=y("passwordExpired")),{icon:u.vn.Lock,text:l}},getRespectRatingText:function(e,t,n){var r;if(!e||!t)return null;if(n)return y("justMySchoolTeachers");if(!l.M.isVideoType(e))return y("collectionRating");var a=s.l.getWeightedRestriction(null===(r=e._restrictions)||void 0===r?void 0:r.value);if(a&&!a.yearGroup)return y("onlyAdmins");var i,o,c,u=l.M.getRating(e),v=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(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)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}(t);try{for(v.s();!(c=v.n()).done;){var p=c.value;(!i||p.value>i.value)&&(i=p),a&&p.value<=a.yearGroup||u&&p.rating.value<u.value||(!o||p.value<o.value)&&(o=p)}}catch(e){v.e(e)}finally{v.f()}return o?1===t.length?y("clickViewOnly"):o.value===i.value?y("maxYearGroup",{yearGroup:i.name}):y("yearGroupRange",{yearGroup:o.name}):y("onlyStaff")},getShareLinkAccessType:function(e){return e.isTvContent||e.isClickViewContent?"protected":e.canManageAccess?"owner":"private"}}},2267:(e,t,n)=>{n.d(t,{I:()=>i});var r=n(64249),a=n(40841),i={canEmbed:function(e){return["video","interactive","clip"].includes(e)},canAddPolicies:function(e){return["interactive"].includes(e)},getEnabledIntegrations:function(e,t){return a._.getShareIntegrations(e,t).filter((function(e){return e.enabled})).map((function(e){return e.id}))},getShareSettingsInitialValues:function(e,t){var n,r,a,i,o,c;return{preventScrubbing:null!==(a=null!==(r=null===(n=null==e?void 0:e.options)||void 0===n?void 0:n.preventScrubbing)&&void 0!==r?r:null==t?void 0:t.preventScrubbing)&&void 0!==a&&a,immediateFeedback:null!==(c=null!==(o=null===(i=null==e?void 0:e.options)||void 0===i?void 0:i.immediateFeedback)&&void 0!==o?o:null==t?void 0:t.immediateFeedback)&&void 0!==c&&c}},getEnabledSettingsField:function(e){return{showImmediateFeedbackField:"interactive"===e,showPreventScrubbingField:"interactive"===e}},getFetchFunctionByType:function(e){return r.I.getFetchFunctionByType(e)},getAnalyticsEntity:function(e){return r.I.getAnalyticsEntity(e)},getAnalyticsOptions:function(e){return r.I.getAnalyticsOptions(e)}}},31121:(e,t,n)=>{n.d(t,{j:()=>c});var r=n(65858),a=n(84850);function i(e){return"share"in e&&!!e.share}var o={"create-share-link":{isValid:i,analyticsOptions:{actionType:r.Vw.Create,workflowPhase:r.eu.Complete,entity:r.py.ShareLink}},"update-share-link":{isValid:i,analyticsOptions:{actionType:r.Vw.Edit,entity:r.py.ShareLink,workflowPhase:r.eu.Complete}},"delete-share-link":{isValid:i,analyticsOptions:{actionType:r.Vw.Delete,entity:r.py.ShareLink,workflowPhase:r.eu.Complete}},"plugin-share-embed":{isValid:i,analyticsOptions:{actionType:r.Vw.Share,descriptor:r.YM.PluginEmbed,workflowPhase:r.eu.Complete,entity:r.py.ShareLink}},"copy-embed-html":{isValid:function(){return!0},analyticsOptions:{actionType:r.Vw.Share,workflowPhase:r.eu.Complete,entity:r.py.ShareLink,descriptor:r.YM.CopyEmbedHtml}},"copy-share-link":{isValid:i,analyticsOptions:{actionType:r.Vw.Share,workflowPhase:r.eu.Complete,entity:r.py.ShareLink,descriptor:r.YM.CopyLink}}};function c(e){var t,n=(0,a.X)({analyticsOptions:e.analyticsOptions,baseData:e.data,config:o,shouldLog:null===(t=e.shouldLog)||void 0===t||t});return{log:n.log,getData:n.getData}}},84850:(e,t,n)=>{n.d(t,{X:()=>i});var r=n(1048),a=n(49985);function i(e){function t(t,n){var i=e.config[t.type];if(null==i?void 0:i.isValid(t)){var o=Object.assign(Object.assign({},e.baseData),t);return{data:r.t.omit(o,["type"]),analyticsOptions:a.k.mergeOptions(i.analyticsOptions,[e.analyticsOptions,n])}}}return{getData:t,log:function(n,r){if(e.shouldLog){var i=t(n,r);i&&a.k.logUserAction(i.data,i.analyticsOptions)}}}}}}]);
|
|
2
|
+
//# sourceMappingURL=9134-a6a5fc92cf-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/9134-a6a5fc92cf-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/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkActions.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkData.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareViewHelper.tsx","file:///app/packages/libs/shared/src/apps/share-v2/utils/get-share-event-logger/getShareEventLogger.ts","file:///app/packages/libs/shared/src/utils/get-event-logger/getEventLogger.ts"],"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 { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n scopeId?: string;\n objectTypeId?: number;\n type?: ShareType[];\n}\n\nexport const ShareRequests = {\n createShare(\n data: CreateShareRequest\n ): Flight.Request {\n return {\n url: '{gateway}/v2/shares',\n key: 'create:share-v2',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [ 'sent:share-v2', `get:share-v2:shares:object:${data.objectId}` ]\n };\n },\n\n updateShare(\n shareId: string,\n data: UpdateShareRequest\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `update:share-v2`,\n type: HttpVerbs.PUT,\n data,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', `share-v2:${shareId}` ]\n };\n },\n \n deleteShare(\n shareId: string\n ): Flight.Request {\n return {\n type: HttpVerbs.DELETE,\n url: `{gateway}/v2/shares/${shareId}`,\n key: `delete:share-v2`,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', 'sent:share-v2', `share-v2:${shareId}` ]\n };\n },\n\n getShare(\n shareId: string\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `share-v2:${shareId}`,\n bootstrapName: `share-v2:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {}\n ): Flight.Request {\n const key = Object.values(params).sort().join(':');\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/sent', params),\n key: `sent:share-v2:${key}`,\n type: HttpVerbs.GET,\n normalize: false\n };\n },\n\n getShareLink(\n id: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { objectId: id }),\n key: `share-v2:permanent-link:object:${id}`,\n normalizeOptions\n };\n },\n\n createShareLink(\n data: CreateShareLinkRequest\n ): Flight.Request {\n return {\n type: HttpVerbs.POST,\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { ...data }),\n key: `create:share-v2:permanent-link:object:${data.objectId}`,\n invalidationKeys: [ `share-v2:permanent-link:object:${data.objectId}`, 'sent:share-v2' ],\n normalizeOptions\n };\n },\n\n getPrivacy(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/access`,\n key: `privacy:${id}`,\n normalize: false\n };\n },\n \n getSharesByObjectId(\n objectId: string | number\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n createSharePincode(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `create:share-v2:${shareId}:pincode`,\n type: HttpVerbs.POST\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n },\n\n getPincodeByCode(code: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n }\n};\n","import { Flight } from 'libs/common/react/index';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { Share } from '../interfaces/Share';\nimport { SharePrivacyResponse } from '../interfaces/SharePrivacyResponse';\nimport { UpdateShareRequest } from '../interfaces/UpdateShareRequest';\nimport { ShareLinkHelper } from '../utils/ShareLinkHelper';\n\ninterface UseShareLinkActionsOptions {\n entityId: string;\n}\n\nexport function useShareLinkActions(options: UseShareLinkActionsOptions) {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const entityPrivacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n\n function getCreateSharePrivacy() {\n const accessType = ShareLinkHelper.getShareLinkAccessType(entityPrivacy.data);\n\n return accessType === 'protected'\n ? SharePrivacy.Protected\n : SharePrivacy.JustMySchool;\n }\n\n function updateShareLink(shareId: string, data: UpdateShareRequest): Promise<Share> {\n return fetchAsync<Share>(ShareRequests.updateShare(shareId, data));\n }\n\n function createShareLink(privacy?: SharePrivacy): Promise<Share> {\n const requestPrivacy = privacy ?? getCreateSharePrivacy();\n return fetchAsync<Share>(ShareRequests.createShareLink({ objectId: options.entityId, privacy: requestPrivacy }));\n }\n\n function deleteShareLink(shareId: string): Promise<void> {\n return fetchAsync(ShareRequests.deleteShare(shareId));\n }\n\n return {\n loaded: !!entityPrivacy.data,\n updateShareLink,\n createShareLink,\n deleteShareLink\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport type { Config, CurrentUser } from 'libs/shared/interfaces';\n\nimport { Share } from '../interfaces/Share';\n\ninterface UseShareLinkDataOptions {\n entityId: string;\n entityType: SharableEntityType;\n}\n\nexport function useShareLinkData(options: UseShareLinkDataOptions) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(options.entityType)(options.entityId, currentUser.data?.id);\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShareLink(options.entityId));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n \n const dataLoaded = !!entity.data\n && !!currentUser.data\n && !!privacy.data\n && !!share.data\n && !!config.data;\n\n return {\n dataLoaded,\n currentUser: currentUser,\n entity: entity,\n privacy: privacy,\n share: share,\n config: config\n };\n}","import { 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 type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport type { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacy;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\ninterface GetPrivateIconAndTextOptions {\n privacy: SharePrivacy;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetPrivateIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('pinDescription') };\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getShareLinkAccessType(privacy: SharePrivacyResponse): 'private' | 'owner' | 'protected' {\n /**\n * If an entity is not a ClickView content and they cannot manage access\n * settings of the entity (which they can if its their private entity)\n * it means that its a TV content\n */\n if (privacy.isTvContent || privacy.isClickViewContent)\n return 'protected';\n\n if (privacy.canManageAccess)\n return 'owner';\n\n return 'private';\n }\n};","import { AnalyticsOptions, EntityType } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper as OldShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport type { Clip, Interactive, InteractiveMetadata, Playlist, Series, Subject, Video } from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport interface ShareSettingsFormFields {\n preventScrubbing: boolean;\n immediateFeedback: boolean;\n}\n\nexport const ShareViewHelper = {\n canEmbed(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n\n /**\n * Only interactive entities can update share settings currently\n */\n canAddPolicies(type: SharableEntityType): boolean {\n return ['interactive'].includes(type);\n },\n\n getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n },\n\n getShareSettingsInitialValues(share: Share, interactive: Interactive | null) {\n return {\n preventScrubbing: share?.options?.preventScrubbing ?? interactive?.preventScrubbing ?? false,\n immediateFeedback: share?.options?.immediateFeedback ?? interactive?.immediateFeedback ?? false\n };\n },\n \n getEnabledSettingsField(entityType: SharableEntityType): {[key in `show${Capitalize<keyof ShareSettingsFormFields>}Field`]: boolean} {\n return {\n showImmediateFeedbackField: entityType === 'interactive',\n showPreventScrubbingField: entityType === 'interactive'\n };\n },\n\n /**\n * Methods from old ShareViewHelper imported here for namespacing\n */\n getFetchFunctionByType: (type: SharableEntityType) => {\n return OldShareViewHelper.getFetchFunctionByType(type);\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n return OldShareViewHelper.getAnalyticsEntity(entityType);\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return OldShareViewHelper.getAnalyticsOptions(entityType);\n }\n};","import { AnalyticsOptions, EntityType, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { BaseShareData, ShareLogData } from './interfaces/GetShareEventLogger';\n\ninterface ShareEventLoggerOptions {\n data: BaseShareData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport type ShareLogFn = ReturnType<typeof getShareEventLogger>['log'];\n\nfunction isValidShare(data: ShareLogData): boolean {\n if (!('share' in data))\n return false;\n\n return !!data.share;\n}\n\nconst LogDataConfig: EventLogConfig<ShareLogData> = {\n /**\n * Share - Link\n */\n 'create-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink\n }\n },\n 'update-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n workflowPhase: WorkflowPhase.Complete\n }\n },\n 'delete-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Delete,\n entity: EntityType.ShareLink,\n workflowPhase: WorkflowPhase.Complete\n }\n },\n\n 'plugin-share-embed': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink\n }\n },\n\n /**\n * General\n */\n 'copy-embed-html': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink, // default\n descriptor: ShareDescriptors.CopyEmbedHtml\n }\n },\n 'copy-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink, // default\n descriptor: ShareDescriptors.CopyLink\n }\n }\n};\n\nexport function getShareEventLogger(options: ShareEventLoggerOptions) {\n const { log, getData } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: LogDataConfig,\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\n/**\n * Base type that every event needs to extend from\n */\nexport interface BaseEventLogData<T extends string = string> {\n type: T;\n}\n\n/**\n * Utility type to map event types to config types\n */\nexport type EventLogConfig<TEvents extends BaseEventLogData> = {\n [K in TEvents['type']]: BaseConfigData<Extract<TEvents, { type: K }>>;\n};\n\ninterface BaseConfigData<T extends BaseEventLogData> {\n isValid?: (data: T) => boolean;\n analyticsOptions: AnalyticsOptions;\n}\n\ninterface GetEventLoggerOptions<TData extends HashObject, TEvents extends BaseEventLogData> {\n baseData: TData;\n /**\n * Event type config map\n */\n config: EventLogConfig<TEvents>;\n /**\n * Base analytics options\n */\n analyticsOptions: AnalyticsOptions;\n\n shouldLog?: boolean;\n}\n\n/**\n * Method build and log events which are typed using map\n * passed in from config\n */\nexport function getEventLogger<\n TData extends HashObject = HashObject,\n TEvents extends BaseEventLogData = BaseEventLogData\n>(\n options: GetEventLoggerOptions<TData, TEvents>\n) {\n /**\n * Types to assist hinting in our log / getData methods\n */\n type EventType = TEvents['type']; // type of event\n type EventData = Extract<TEvents, { type: EventType }>; // restrict the data to the passed type\n \n /**\n * Get analytics data and options for a given event type\n */\n function getData(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n const logDataConfig = options.config[data.type];\n\n if (!logDataConfig?.isValid(data))\n return;\n\n const mergedData = {\n ...options.baseData,\n ...data\n };\n \n const sanitizedData = ObjectHelper.omit<typeof data>(mergedData, ['type']);\n\n const analyticsOptions = AnalyticsHelper.mergeOptions(\n logDataConfig.analyticsOptions,\n [\n options.analyticsOptions,\n logAnalyticsOptions\n ]\n );\n\n return {\n data: sanitizedData,\n analyticsOptions\n };\n }\n\n /**\n * Similar to `getData` except it logs the analytics event\n * for a given type if its valid\n */\n function log(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n if (!options.shouldLog)\n return;\n\n const analytics = getData(data, logAnalyticsOptions);\n\n if (!analytics)\n return;\n\n AnalyticsHelper.logUserAction(analytics.data, analytics.analyticsOptions);\n }\n\n return {\n getData,\n log\n };\n}"],"names":["SharePrivacy","normalizeOptions","namespace","ShareRequests","createShare","data","url","key","type","invalidationKeys","objectId","updateShare","shareId","deleteShare","getShare","bootstrapName","getSentShares","params","Object","values","sort","join","normalize","getShareLink","id","createShareLink","getPrivacy","getSharesByObjectId","createSharePincode","getPincodeByShareId","getPincodeByCode","code","useShareLinkActions","options","fetchAsync","entityPrivacy","entityId","loaded","updateShareLink","privacy","requestPrivacy","deleteShareLink","useShareLinkData","currentUser","entity","entityType","share","config","dataLoaded","getPhrase","ShareLinkHelper","getPrivateIconAndText","entityTypeId","hasStudentExp","yearGroups","icon","text","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","Date","days","video","restriction","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","length","name","getShareLinkAccessType","isTvContent","isClickViewContent","canManageAccess","ShareViewHelper","canEmbed","includes","canAddPolicies","getEnabledIntegrations","googleClassroomSetting","msftTeamsSetting","filter","i","enabled","map","getShareSettingsInitialValues","interactive","preventScrubbing","immediateFeedback","getEnabledSettingsField","showImmediateFeedbackField","showPreventScrubbingField","getFetchFunctionByType","getAnalyticsEntity","getAnalyticsOptions","isValidShare","LogDataConfig","isValid","analyticsOptions","actionType","workflowPhase","descriptor","getShareEventLogger","baseData","shouldLog","log","getData","getEventLogger","logAnalyticsOptions","logDataConfig","mergedData","analytics"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9266],{75097:(e,t,n)=>{n.d(t,{U:()=>o});var r=n(32735),a=n(13170);function o(e){var t=e.count,n=void 0===t?6:t;return r.createElement("div",{className:"d-flex"},r.createElement("div",{className:"d-flex ps-1"},Array(n).fill(null).map((function(e,t){return r.createElement("div",{key:t,className:"".concat(a.Z.partialButton," partial-loading-background mx-1")})}))))}},6748:(e,t,n)=>{n.d(t,{i:()=>w});var r=n(32735),a=n(42648),o=n(35509),l=n(91967),c=n(15611),i=n(17808),s=n(1287),u=n(83914),d=n(90281),m={opacity:"0.8",cursor:"grabbing"},f=n(35223);function p(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return g(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)?g(e,t):void 0}}function g(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 b(e){var t,n,r,a;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(n=e.current)||void 0===n?void 0:n.scrollLeft)+1<(null===(r=e.current)||void 0===r?void 0:r.scrollWidth)-(null===(a=e.current)||void 0===a?void 0:a.clientWidth)}}const y={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var E=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 a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function S(e){var t,n;return e.column.canSort?r.createElement("span",{className:"".concat(y.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(n=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==n?n:"")},r.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):r.createElement(r.Fragment,null)}function k(e){var t,n,a,u,d,f,v,g,b={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(b.initialState={selectedRowIds:(v=e.initialSelectedRowIds,g={},v.forEach((function(e){return g[e]=!0})),g)}),e.getRowId&&(b.getRowId=e.getRowId);var y,E=o.useTable.apply(void 0,[b].concat((y=function(e){var t=[o.useSortBy,o.useRowSelect,"flex"===e.layout?o.useFlexLayout:o.useBlockLayout];return e.allowFiltering&&(t=[].concat(p(t),[o.useFilters])),e.allowGlobalFiltering&&(t=[].concat(p(t),[o.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return h(e)}(y)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(y)||function(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}(y)||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.")}()))),k=E.getTableProps,w=E.getTableBodyProps,C=E.headerGroups,N=E.rows,j=E.prepareRow,x=E.toggleAllRowsSelected,A=E.setGlobalFilter,T=E.setHiddenColumns,R=E.state.sortBy;function L(){return!N.length&&e.emptyState?e.emptyState:N.map((function(t){j(t);var n=function(t){var n,r,a,o,c,i=l.q.isFunction(null===(n=e.theme)||void 0===n?void 0:n.row)?e.theme.row(t):null!==(a=null===(r=e.theme)||void 0===r?void 0:r.row)&&void 0!==a?a:"";return t.isSelected&&(null===(o=e.theme)||void 0===o?void 0:o.selectedRow)&&(i+=" ".concat(null===(c=e.theme)||void 0===c?void 0:c.selectedRow)),e.onSelectRow&&(i+=" cursor-pointer"),e.enableSortableRows&&(i+=" cursor-grab"),i}(t),a=!!e.getRowAppLink&&e.getRowAppLink(t);function o(){e.onSelectRow&&(e.allowSelectMultipleRows||x(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function i(e,l){var i=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,l);return a?r.createElement("div",{role:"row",key:t.id},r.createElement(c.F,Object.assign({},e,i,{className:n,appLink:a}),O(t))):r.createElement("div",Object.assign({},e,i,{key:t.id,role:"row",className:n,onClick:o}),O(t))}var u=t.getRowProps();return e.enableSortableRows?r.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:r.forwardRef((function(e,t){return i(e,t)}))}):i(u)}))}function O(t){return t.cells.map((function(n){var a=function(t,n){var r,a,o="";return"function"==typeof(null===(r=e.theme)||void 0===r?void 0:r.cell)&&(o=e.theme.cell(t,n)),"string"==typeof(null===(a=e.theme)||void 0===a?void 0:a.cell)&&(o=e.theme.cell),e.onSelectCell&&(o+=" cursor-pointer"),o}(t,n);return r.createElement("div",Object.assign({key:n.column.id},n.getCellProps(),{className:a,onClick:function(){e.onSelectCell&&e.onSelectCell(n)}}),n.render("Cell"))}))}return r.useEffect((function(){e.onSort&&e.onSort(R)}),[R]),r.useEffect((function(){e.globalFilter&&A(e.globalFilter)}),[e.globalFilter]),r.useEffect((function(){e.hiddenColumns&&T(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},k(),{className:null!==(n=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==n?n:""}),r.createElement("div",{className:null!==(u=null===(a=e.theme)||void 0===a?void 0:a.header)&&void 0!==u?u:""},C.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerRow)&&void 0!==a?a:""}),t.headers.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerCell)&&void 0!==a?a:""}),t.render("Header",{renderSortIndicator:function(){return r.createElement(S,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(S,{column:t,theme:e.theme}))})))}))),r.createElement("div",Object.assign({},w(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?r.createElement(i.Q,{ids:N.map((function(e){return e.original.id})),getDragOverlay:function(t){var n,a,o=N.findIndex((function(e){return e.original.id===t})),l=N[o];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,a="g-0 ",n&&(a+=n.row),a),style:m}),O(l))},onSortEnd:e.onSortingRowsEnd},L()):L()))}function w(e){var t=e.enableSlider,n=e.scrollIncrement,o=e.scrollable,c=E(e,["enableSlider","scrollIncrement","scrollable"]),i=function(){var e,t,n=r.useRef(null),a=(e=r.useState(b(n)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(e,t)||v(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],c=a[1],i=l.q.throttle((function(){c(b(n))}),200),s=r.useCallback((function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",i)),e&&(c(b(n)),e.addEventListener("scroll",i)),n.current=e}),[]);return r.useEffect((function(){(null==n?void 0:n.current)&&c(b(n))}),[n]),{ref:s,scrollState:o,scroll:function(e){var t;null===(t=n.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=i.ref,u=i.scrollState,m=i.scroll;if(o)return r.createElement(a.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:y.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(k,Object.assign({},c)));if(!t)return r.createElement(k,Object.assign({},c));function f(e){m(n*("right"===e?1:-1))}return r.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},r.createElement("div",{className:"px-4"},r.createElement("div",{className:"position-relative"},r.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),r.createElement("div",{className:"".concat(y.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},r.createElement(k,Object.assign({},c))),r.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}w.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},63112:(e,t,n)=>{n.d(t,{o:()=>o});var r=n(32735),a=n(14346),o=r.memo((function(e){var t=e.tagClass,n="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(a.Z.partialTag);return r.createElement("div",{className:"mt-1"},r.createElement("span",{className:n}," "))}))},30699:(e,t,n)=>{n.d(t,{a:()=>o});var r=n(32735),a=n(16035);function o(e){var t=e.selectedItems.find((function(t){return t.id===e.data.id}))?"bg-gray-900 text-white":"bg-light";return r.createElement(a.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," lh-1"),onClick:function(){return e.onClick(e.data)}})}},91286:(e,t,n)=>{n.d(t,{v:()=>l});var r=n(32735),a=n(94644);function o(e){return e.map((function(e){return e.statusCode})).join(":")}function l(e,t,n){var l=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){l.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[o(l),t,n])}},299:(e,t,n)=>{n.d(t,{X:()=>l});var r=n(32735),a=n(69217),o=n(94631),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.idField,l=void 0===n?"id":n,c=t.persistNamespace,i=t.initialState?t.initialState:new Map,s=r.useRef(i),u=(0,a.N)(),d=(0,o.D)(e),m=(0,o.D)(c);function f(){s.current.clear(),u()}function p(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),s.current.get(e)}function v(){return!!(null==e?void 0:e.length)&&e.every(p)}function g(e){e.forEach((function(e){s.current.set(e,!0)})),u()}return r.useEffect((function(){t.initialState||c&&m===c||(null==d?void 0:d.map((function(e){return e[l]})).join())!==(null==e?void 0:e.map((function(e){return e[l]})).join())&&f()}),[d,m,e,t.initialState]),r.useEffect((function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&g(t.preselectedIds)}),[]),{onToggleBulk:function(){var t=!v();e.forEach((function(e){t?s.current.set(e[l].toString(),!0):s.current.delete(e[l].toString())})),u()},onToggleItem:function(e){var t=!s.current.get(e.toString());t?s.current.set(e.toString(),t):s.current.delete(e.toString()),u()},getSelected:function(){return Array.from(s.current.keys())},isChecked:p,bulkChecked:v(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach((function(e){s.current.delete(e[l].toString())})),u())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find((function(e){return p(e)}))},setSelected:g,getSelectedCount:function(){return s.current.size},reset:f,getMap:function(){return s.current}}}},53088:(e,t,n)=>{n.r(t),n.d(t,{UserAuditLogView:()=>te});var r=n(32735),a=n(23481),o=n(57900),l=n(20354),c=n(75097),i=n(49935);const s={partialHeading:"rfiJl",partialJobCount:"h8k_u",partialCheckbox:"HkuOS",partialExportButton:"Iul7S",row:"mwigG",checkboxColumn:"Z5jLG",actionColumn:"rLxYh",usersColumn:"QZzab",dateColumn:"Wf_Jp",performedByColumn:"Ubtmj",seeMoreColumn:"XdP6u",heading:"kRMMH",action:"DvDvW",users:"goKpg",date:"ejYGb",performedBy:"NhjyL"};function u(){return r.createElement("div",{className:"d-flex striped-row rounded py-3 ".concat(s.row)},r.createElement("div",{className:"".concat(s.checkboxColumn," d-flex justify-content-center")},r.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox," ms-0")})),r.createElement("div",{className:"".concat(s.actionColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.action)})),r.createElement("div",{className:"".concat(s.usersColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.users)})),r.createElement("div",{className:"".concat(s.dateColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.date)})),r.createElement("div",{className:"".concat(s.performedByColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.performedBy)})),r.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function d(){return r.createElement("div",{className:"d-flex py-2 mb-1"},r.createElement("div",{className:"".concat(s.checkboxColumn)}," "),r.createElement("div",{className:"".concat(s.actionColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.usersColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.dateColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.performedByColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function m(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"mb-3 mt-n1"},r.createElement(d,null),r.createElement("div",{className:"striped-list no-full-width"},r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null))))}function f(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"partial-loading-background mb-2 ".concat(s.partialHeading)}),r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between"},r.createElement(i.b2,null),r.createElement("div",{className:"partial-loading-background ".concat(s.partialJobCount)}))),r.createElement("div",{className:"d-flex align-items-center pb-2"},r.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox)}),r.createElement("div",{className:"ms-4 ps-3"},r.createElement(c.U,{count:3})),r.createElement("div",{className:"ms-auto partial-loading-background ".concat(s.partialExportButton)})),r.createElement(m,null))}var p=n(89422),v=n(89965),g=n(37395),b=n(2102),y=n(83345),h=n(76881),E=n(69883),S=n(299),k=n(75795),w=n(65858),C=n(10638),N=n(70848),j="userManager.userAuditLogFilters";function x(e){var t=[N.x$.SortBy([{id:"newest",name:a.T.getPhrase(j,"newest"),default:!0},{id:"oldest",name:a.T.getPhrase(j,"oldest")}]),N.x$.BulkActionType(),N.x$.UserType()];return r.createElement(C.J,{queryParams:e.queryParams,mainFilters:t,appLink:e.appLinks.auditLog,analyticsOptions:{entity:w.py.BatchJob,location:w.LZ.UserAuditLog},hideHeading:!0,hideDivider:!0,constantIndices:[]})}var A=n(6748),T=n(110),R=n(149),L=n(15611),O=n(97392),I=n(83914),B=n(86794);const M={seeMore:"uymuO"};function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var F="userManager.userAuditLogTable",H=a.T.encloseNamespace(F),U={table:"striped-list no-full-width pb-3",header:"fw-semibold pb-1",headerCell:"px-2 py-1",row:"striped-row rounded audit-log-row",cell:"d-flex align-items-center py-3 px-2"};function J(e){var t,n,a,o,l=(t=e.jobs.data,n=e.isChecked,t.map((function(e){var t=T.O.format(e.dateCreated,"DD/MM/YYYY, hh:mmA");return{id:e.id,checked:n(e.id),actionType:R.b.mapJobTypeToName(e.type),userType:R.b.mapDataTypeToUserType(e.dataType),date:t,performedBy:{name:e.submitterName,submittedByClickView:e.submittedByClickView}}})));return r.createElement(A.i,{columns:(a=e.appLinks.bulkActionSummary,o=e.onToggleCheckbox,[{Header:"",id:"checkboxes",accessor:function(e){return{id:e.id,checked:e.checked}},Cell:function(e){return r.createElement("div",{className:"text-center mx-auto"},r.createElement(v.X,{id:e.value.id,checked:e.value.checked,onChange:function(){return o(e.value.id)}}))},width:10},{Header:H("action"),accessor:"actionType",id:"actionType",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},t)},width:20},{Header:H("users"),accessor:"userType",id:"userType",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},function(){switch(t){case h.Y.Learner:return H("students");case h.Y.Staff:return H("staff");case h.Y.Unknown:default:return H("unknown")}}())},width:10},{Header:H("date"),accessor:"date",id:"date",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},t)},width:20},{Header:H("performedBy"),accessor:"performedBy",id:"performedBy",Cell:function(e){return r.createElement("div",{className:"w-100 d-flex align-items-center"},e.value.submittedByClickView&&r.createElement(B.b,{className:"me-1",size:I.S.Small},r.createElement(O.F,null)),e.value.name)},width:20},{Header:"",accessor:"id",id:"seeMore",Cell:function(e){var t,n,o=e.value;return r.createElement("div",{className:"w-100 d-flex justify-content-end"},r.createElement(L.F,{className:"info-link text-end me-3 ms-auto ".concat(M.seeMore),appLink:Object.assign(Object.assign({},a),{args:(null===(t=a.args)||void 0===t?void 0:t.length)?[].concat((n=a.args,function(e){if(Array.isArray(e))return P(e)}(n)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?P(e,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),[o]):[o]})},r.createElement(y.x,{namespace:F,phrase:"seeMore"})))},width:30}]),data:l,theme:U})}var G=n(97958),Y="userManager.auditLogEmptyState";function _(e){return r.createElement(G.u,null,r.createElement(G.u.Image,{src:e.imageUrl}),r.createElement(G.u.Heading,null,r.createElement(y.x,{namespace:Y,phrase:"heading"})),r.createElement(G.u.Info,null,r.createElement(y.x,{namespace:Y,phrase:"info"})))}const q={bulkCheckbox:"NMw5T"};function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var W="userManager.auditLog",$=a.T.encloseNamespace(W);function V(e){var t,n,a,l,c=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),s=(a=r.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(a,l)||function(e,t){if(e){if("string"==typeof e)return D(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)?D(e,t):void 0}}(a,l)||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.")}()),u=s[0],d=s[1],m=(0,S.X)(e.jobs.data),f=(0,E.Z)();return r.createElement(r.Fragment,null,r.createElement("h1",{className:"h2"},r.createElement(y.x,{namespace:W,phrase:"heading"})),r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between"},r.createElement(i.Oo,{breadcrumbs:[{name:$("settingsBreadcrumb"),appLink:e.appLinks.settings},{name:$(c===h.Y.Learner?"studentManager":"staffManager"),appLink:e.appLinks.userManager},{name:$("heading"),active:!0}]}),r.createElement("p",{className:"mb-0 fw-semibold"},r.createElement(y.x,{namespace:W,phrase:"totalJobs",options:{showing:e.jobs.data.length,smartCount:e.jobs.count}})))),r.createElement("div",{className:"d-flex align-items-center pb-2"},r.createElement(v.X,{className:q.bulkCheckbox,id:"bulk-audit-log-checkbox",checked:m.bulkChecked,onChange:m.onToggleBulk,indeterminate:m.hasSomeSelections()}),r.createElement("div",{className:"ms-4 ps-1"},r.createElement(x,{queryParams:e.queryParams,appLinks:e.appLinks})),r.createElement(b.m,{variant:"dark",className:"ms-auto",onClick:function(){if(!u){d(!0);var t=m.getSelected();e.onClickExport(t).then((function(){return f.success($("exportSuccess"))})).catch((function(){return f.error($("exportError"))})).finally((function(){return d(!1)}))}},disabled:!m.hasSomeSelections()||u,showSpinner:u},r.createElement(y.x,{namespace:W,phrase:"export"}))),(null===(t=e.jobs.data)||void 0===t?void 0:t.length)?r.createElement(J,{jobs:e.jobs,appLinks:e.appLinks,onToggleCheckbox:m.onToggleItem,isChecked:m.isChecked}):r.createElement(_,{imageUrl:e.emptyStateImageUrl}),!!(null===(n=e.jobs.pagination)||void 0===n?void 0:n.cursors)&&r.createElement(g.t,{className:"p-0 text-end pb-3",cursors:e.jobs.pagination.cursors,appLink:k.O.getCurrentRoute().appLink,buttonVariant:"outline-dark"}))}var z=n(91286),K=n(79612),Z=n(99742),X=n(29613),Q=n(18087),ee="userManager.userAuditLogView";function te(e){var t=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),n=l.a.useBasicFetch(X.q.getJobs(e.queryParams));(0,z.v)(n),(0,K.M)({title:a.T.getPhrase(ee,"pageTitle")});var c=l.a.useGetFetchAsync(),i=(0,Q.Y)(t);return n.hasCompleted?r.createElement("div",{className:"px-3"},r.createElement(V,{jobs:n.data,appLinks:i,queryParams:e.queryParams,onClickExport:function(e){return c(X.q.sendJobReports(e))},emptyStateImageUrl:Z.W.EmptyStates.Search.RESULTS})):r.createElement("div",{className:"px-3"},r.createElement(f,null))}},29613:(e,t,n)=>{n.d(t,{q:()=>l});var r=n(99940),a=n(97395),o=n(149),l={createJob:function(e,t,n){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:r.k.POST,data:e,success:t,error:n}},getJobs:function(e){var t={},n=[],r=[];return e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.bulkActionType?(n=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],t.type=n):t.type=o.O,e.userType&&(r=Array.isArray(e.userType)?e.userType:[e.userType],t.dataType=r),{url:a._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(n.sort().join(":"),":").concat(r.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,t,n){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:t,error:n}},getJobResults:function(e,t,n,r,o){var l={status:t};return n&&(l.cursor=n),{url:a._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),l),key:"job:".concat(e,":results:").concat(t,":").concat(n),success:r,error:o}},getYearGroupRolloverStatus:function(e){return{url:"{gateway}/v1/batch/validations/customers/".concat(e,"/year-group-roll-over"),key:"year:group:rollover:status"}},sendJobReports:function(e){return{url:"{gateway}/v1/batch/results/export",key:"send:job:reports:".concat(e.sort().join(":")),type:r.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}}}]);
|
|
2
|
+
//# sourceMappingURL=9266-f0ad8d5cb3-lite.chunk.js.map
|