@clickview/lite 0.75.0-rc.8 → 0.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{7103-lite-fef3024f61.chunk.css → 2878-lite-d8e0bf912a.chunk.css} +1 -1
  3. package/dist/css/{1243-lite-13eda8f6a0.chunk.css → 3615-lite-240342ff8e.chunk.css} +1 -1
  4. package/dist/css/{1867-lite-8baa8af02b.chunk.css → 4630-lite-0157b1c437.chunk.css} +1 -1
  5. package/dist/css/{4203-lite-9ffab89741.chunk.css → 8362-lite-10810fdef2.chunk.css} +1 -1
  6. package/dist/languages/en.json +1 -1
  7. package/dist/scripts/{104-7ee25cbbb8-lite.chunk.js → 104-da7394bcfa-lite.chunk.js} +2 -2
  8. package/dist/scripts/104-da7394bcfa-lite.chunk.js.map +1 -0
  9. package/dist/scripts/1192-bb27568f21-lite.chunk.js +2 -0
  10. package/dist/scripts/1192-bb27568f21-lite.chunk.js.map +1 -0
  11. package/dist/scripts/1199-cf2cb206b5-lite.chunk.js +2 -0
  12. package/dist/scripts/1199-cf2cb206b5-lite.chunk.js.map +1 -0
  13. package/dist/scripts/1502-9836df10cd-lite.chunk.js +2 -0
  14. package/dist/scripts/1502-9836df10cd-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{1610-9ccecc428a-lite.chunk.js → 1610-0edaa98d40-lite.chunk.js} +2 -2
  16. package/dist/scripts/{1610-9ccecc428a-lite.chunk.js.map → 1610-0edaa98d40-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/{7103-3b181ec69b-lite.chunk.js → 2878-487c4a8e1a-lite.chunk.js} +2 -2
  18. package/dist/scripts/2878-487c4a8e1a-lite.chunk.js.map +1 -0
  19. package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js → 3057-a5bc753736-lite.chunk.js} +1 -1
  20. package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js.map → 3057-a5bc753736-lite.chunk.js.map} +1 -1
  21. package/dist/scripts/3268-7be966dc82-lite.chunk.js +3 -0
  22. package/dist/scripts/3268-7be966dc82-lite.chunk.js.map +1 -0
  23. package/dist/scripts/{1243-72f3d31787-lite.chunk.js → 3615-a0da361aa5-lite.chunk.js} +2 -2
  24. package/dist/scripts/3615-a0da361aa5-lite.chunk.js.map +1 -0
  25. package/dist/scripts/{3872-6fe7371d39-lite.chunk.js → 3872-cf9a6bdae8-lite.chunk.js} +1 -1
  26. package/dist/scripts/{3872-6fe7371d39-lite.chunk.js.map → 3872-cf9a6bdae8-lite.chunk.js.map} +1 -1
  27. package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js +2 -0
  28. package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js.map +1 -0
  29. package/dist/scripts/4208-f22ed7a148-lite.chunk.js +2 -0
  30. package/dist/scripts/4208-f22ed7a148-lite.chunk.js.map +1 -0
  31. package/dist/scripts/4598-e25e9e03d6-lite.chunk.js +2 -0
  32. package/dist/scripts/4598-e25e9e03d6-lite.chunk.js.map +1 -0
  33. package/dist/scripts/{1867-0823a787c3-lite.chunk.js → 4630-4a35ecbf2b-lite.chunk.js} +2 -2
  34. package/dist/scripts/4630-4a35ecbf2b-lite.chunk.js.map +1 -0
  35. package/dist/scripts/6475-f019242ec2-lite.chunk.js +2 -0
  36. package/dist/scripts/6475-f019242ec2-lite.chunk.js.map +1 -0
  37. package/dist/scripts/6550-1d60d863e8-lite.chunk.js +2 -0
  38. package/dist/scripts/6550-1d60d863e8-lite.chunk.js.map +1 -0
  39. package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js → 6695-4ae0acad94-lite.chunk.js} +1 -1
  40. package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js.map → 6695-4ae0acad94-lite.chunk.js.map} +1 -1
  41. package/dist/scripts/6756-3c7f911759-lite.chunk.js +3 -0
  42. package/dist/scripts/6756-3c7f911759-lite.chunk.js.map +1 -0
  43. package/dist/scripts/6790-1695fcf576-lite.chunk.js +2 -0
  44. package/dist/scripts/6790-1695fcf576-lite.chunk.js.map +1 -0
  45. package/dist/scripts/{7148-50ccb48a44-lite.chunk.js → 7148-e314dd9a4e-lite.chunk.js} +2 -2
  46. package/dist/scripts/7148-e314dd9a4e-lite.chunk.js.map +1 -0
  47. package/dist/scripts/7438-35b887a48e-lite.chunk.js +2 -0
  48. package/dist/scripts/7438-35b887a48e-lite.chunk.js.map +1 -0
  49. package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js → 8323-5694456903-lite.chunk.js} +2 -2
  50. package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.map → 8323-5694456903-lite.chunk.js.map} +1 -1
  51. package/dist/scripts/{4203-83f90f92f3-lite.chunk.js → 8362-ed5df8f4fc-lite.chunk.js} +3 -3
  52. package/dist/scripts/8362-ed5df8f4fc-lite.chunk.js.LICENSE.txt +1 -0
  53. package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.map → 8362-ed5df8f4fc-lite.chunk.js.map} +1 -1
  54. package/dist/scripts/{8732-3e8332e620-lite.chunk.js → 8732-dc5182fb69-lite.chunk.js} +1 -1
  55. package/dist/scripts/{8732-3e8332e620-lite.chunk.js.map → 8732-dc5182fb69-lite.chunk.js.map} +1 -1
  56. package/dist/scripts/8856-08061bbec5-lite.chunk.js +2 -0
  57. package/dist/scripts/8856-08061bbec5-lite.chunk.js.map +1 -0
  58. package/dist/scripts/{8957-bc83ea1180-lite.chunk.js → 8957-b3f0dbb85d-lite.chunk.js} +1 -1
  59. package/dist/scripts/{8957-bc83ea1180-lite.chunk.js.map → 8957-b3f0dbb85d-lite.chunk.js.map} +1 -1
  60. package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js +2 -0
  61. package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js.map +1 -0
  62. package/dist/scripts/9134-b0ae877597-lite.chunk.js +2 -0
  63. package/dist/scripts/9134-b0ae877597-lite.chunk.js.map +1 -0
  64. package/dist/scripts/{bundle-58c25f6529.min.js → bundle-941a464ef0.min.js} +3 -3
  65. package/dist/scripts/{bundle-58c25f6529.min.js.map → bundle-941a464ef0.min.js.map} +1 -1
  66. package/package.json +1 -1
  67. package/dist/scripts/104-7ee25cbbb8-lite.chunk.js.map +0 -1
  68. package/dist/scripts/1074-6dadbd8187-lite.chunk.js +0 -2
  69. package/dist/scripts/1074-6dadbd8187-lite.chunk.js.map +0 -1
  70. package/dist/scripts/1192-6ac54d734b-lite.chunk.js +0 -2
  71. package/dist/scripts/1192-6ac54d734b-lite.chunk.js.map +0 -1
  72. package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js +0 -2
  73. package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js.map +0 -1
  74. package/dist/scripts/1243-72f3d31787-lite.chunk.js.map +0 -1
  75. package/dist/scripts/1867-0823a787c3-lite.chunk.js.map +0 -1
  76. package/dist/scripts/3268-aa893d0068-lite.chunk.js +0 -2
  77. package/dist/scripts/3268-aa893d0068-lite.chunk.js.map +0 -1
  78. package/dist/scripts/4208-3ba21abb7c-lite.chunk.js +0 -2
  79. package/dist/scripts/4208-3ba21abb7c-lite.chunk.js.map +0 -1
  80. package/dist/scripts/4598-f5120153c2-lite.chunk.js +0 -2
  81. package/dist/scripts/4598-f5120153c2-lite.chunk.js.map +0 -1
  82. package/dist/scripts/6475-502e390010-lite.chunk.js +0 -2
  83. package/dist/scripts/6475-502e390010-lite.chunk.js.map +0 -1
  84. package/dist/scripts/6550-c621babbcb-lite.chunk.js +0 -2
  85. package/dist/scripts/6550-c621babbcb-lite.chunk.js.map +0 -1
  86. package/dist/scripts/6756-20c0ab9591-lite.chunk.js +0 -3
  87. package/dist/scripts/6756-20c0ab9591-lite.chunk.js.map +0 -1
  88. package/dist/scripts/6790-df00506bec-lite.chunk.js +0 -2
  89. package/dist/scripts/6790-df00506bec-lite.chunk.js.map +0 -1
  90. package/dist/scripts/7103-3b181ec69b-lite.chunk.js.map +0 -1
  91. package/dist/scripts/7148-50ccb48a44-lite.chunk.js.map +0 -1
  92. package/dist/scripts/7438-1162aba8b6-lite.chunk.js +0 -2
  93. package/dist/scripts/7438-1162aba8b6-lite.chunk.js.map +0 -1
  94. package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js +0 -2
  95. package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js.map +0 -1
  96. package/dist/scripts/9003-36ab592cc5-lite.chunk.js +0 -2
  97. package/dist/scripts/9003-36ab592cc5-lite.chunk.js.map +0 -1
  98. package/dist/scripts/9042-3092af11d5-lite.chunk.js +0 -2
  99. package/dist/scripts/9042-3092af11d5-lite.chunk.js.map +0 -1
  100. package/dist/scripts/9134-7037c2c47a-lite.chunk.js +0 -2
  101. package/dist/scripts/9134-7037c2c47a-lite.chunk.js.map +0 -1
  102. /package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.LICENSE.txt → 3268-7be966dc82-lite.chunk.js.LICENSE.txt} +0 -0
  103. /package/dist/scripts/{6756-20c0ab9591-lite.chunk.js.LICENSE.txt → 6756-3c7f911759-lite.chunk.js.LICENSE.txt} +0 -0
  104. /package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.LICENSE.txt → 8323-5694456903-lite.chunk.js.LICENSE.txt} +0 -0
  105. /package/dist/scripts/{bundle-58c25f6529.min.js.LICENSE.txt → bundle-941a464ef0.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/1502-9836df10cd-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/utils/AnonymiseUserUtils.ts","file:///app/packages/libs/shared/src/apps/share-v2/components/share-avatar/ShareAvatar.tsx","file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/libs/shared/src/components/percentage-indicator/PercentageIndicator.tsx","file:///app/packages/libs/shared/src/components/percentage-indicator/PercentageIndicatorUtils.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/constants/ScoreThresholds.ts","file:///app/packages/libs/shared/src/hooks/useLockContentWidth.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/share-info/ShareInfo.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-header/insights-header.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-header/InsightsHeader.tsx","file:///app/packages/projects/lite/src/apps/my-shares/utils/InsightsAppLinkUtils.ts","file:///app/packages/libs/shared/src/components/percentage-indicator/percentage-indicator.scss","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import { animals, colors, Config as UniqueNamesConfig, uniqueNamesGenerator } from 'unique-names-generator';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst namespace = 'shared.analyticsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction guidToSeed(guid: string): number {\n if (!guid)\n return 0;\n\n // Simple hash function (DJB2-like) for browsers\n let hash = 0;\n for (let i = 0; i < guid.length; i++) {\n const char = guid.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n return Math.abs(hash);\n}\n\nfunction getUniqueNamesConfig(userId: string, sessionId: string): UniqueNamesConfig {\n /**\n * Generate a seed that is unique to each user but changes every 5 minutes.\n * \n * We use a seed so that if the same user's name is anonymised multiple times\n * in quick succession (e.g. multiple renders), the same name will be returned each time.\n * \n * We change the seed every 5 minutes so that students don't always have the same name.\n */\n const seed = +`${userId || guidToSeed(sessionId)}${Math.floor((new Date()).getMinutes() / 5)}`;\n\n return {\n dictionaries: [ colors, animals ],\n separator: ' ',\n length: 2,\n style: 'capital',\n seed\n };\n}\n\nexport function anonymiseUserName(user: AnonUser, shouldAnonymise: boolean): string {\n if (!user) {\n return getPhrase('anonUser');\n }\n\n if (!shouldAnonymise)\n return UserHelper.getFullName(user) || getPhrase('anonUser');\n\n return uniqueNamesGenerator(getUniqueNamesConfig(user.id, user.sessionId));\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 { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacy } from '../../enums/SharePrivacy';\nimport { ShareType } from '../../enums/ShareType';\n\nconst namespace = 'sharev2.shareAvatar';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst icons = {\n [ShareType.Open]: cvSvgLibrary.Classrooms,\n [ShareType.Link]: cvSvgLibrary.Link,\n [ShareType.Classroom]: cvSvgLibrary.Classrooms,\n [ShareType.Live]: cvSvgLibrary.Play,\n [ShareType.LegacyDirect]: cvSvgLibrary.Share\n};\n\nconst iconColours = {\n [ShareType.Open]: 'blue',\n [ShareType.Link]: 'black',\n [ShareType.Classroom]: 'teal',\n [ShareType.Live]: 'purple',\n [ShareType.LegacyDirect]: 'indigo'\n};\n\nconst shareTypeTitlePhraseMap = {\n [ShareType.Open]: 'openShareType',\n [ShareType.Link]: 'linkShareType',\n [ShareType.Classroom]: 'classroomShareType',\n [ShareType.Live]: 'liveShareType',\n [ShareType.LegacyDirect]: 'legacyDirectShareType'\n};\n\nfunction getTitle({ type, classroomName, additionalTitleText }: ShareAvatarProps) {\n if (type === ShareType.Classroom && classroomName)\n return classroomName;\n\n let title = getPhrase(shareTypeTitlePhraseMap[type]);\n\n if (additionalTitleText)\n title += ' ' + additionalTitleText;\n\n return title;\n}\n\nfunction getClassroomSubtitle(classroomGroupCount: number, studentCount: number): string {\n if (classroomGroupCount && studentCount)\n return `${getPhrase('classroomGroupCount', { smartCount: classroomGroupCount })}, ${getPhrase('studentSubTitle', { smartCount: studentCount })}`;\n\n if (classroomGroupCount)\n return getPhrase('groupSubTitle', { smartCount: classroomGroupCount });\n\n if (studentCount)\n return getPhrase('studentSubTitle', { smartCount: studentCount });\n\n return getPhrase('allStudentsSubTitle');\n}\n\nfunction getLinkSubtitle(privacy: SharePrivacy) {\n if ([ SharePrivacy.JustMySchool, SharePrivacy.Protected ].includes(privacy))\n return getPhrase('respectRatingsSubTitle');\n\n if (privacy === SharePrivacy.JustMySchoolOverrideRestriction)\n return getPhrase('anyoneInSchoolSubTitle');\n\n if (privacy === SharePrivacy.ProtectedOverrideRestriction)\n return getPhrase('anyoneSignedInSubTitle');\n\n if (privacy === SharePrivacy.Public)\n return getPhrase('anyoneWithLinkSubTitle');\n\n if (privacy === SharePrivacy.PinCode)\n return getPhrase('anyoneWithPinSubTitle');\n}\n\nfunction getSubtitle({ type, privacy, studentCount = 0, classroomGroupCount = 0 }: ShareAvatarProps) {\n switch (type) {\n case ShareType.Classroom:\n return getClassroomSubtitle(classroomGroupCount, studentCount);\n\n case ShareType.Open:\n return getPhrase('openShareTypeSubTitle');\n\n case ShareType.Link:\n return getLinkSubtitle(privacy);\n \n case ShareType.Live:\n return getPhrase('liveShareTypeSubTitle');\n\n case ShareType.LegacyDirect:\n return getPhrase('legacyDirectTypeSubTitle');\n\n default:\n return getPhrase('publicShareTypeSubTitle');\n }\n}\n\ninterface ShareAvatarProps {\n type: ShareType;\n privacy: SharePrivacy;\n studentCount?: number;\n classroomGroupCount?: number;\n classroomName?: string;\n hideSubtitle?: boolean;\n subtitleText?: string;\n svgSize?: SvgContainerSize;\n additionalTitleText?: string;\n className?: string;\n}\n\nexport function ShareAvatar(props: ShareAvatarProps): JSX.Element {\n return (\n <div className={classNames('d-flex align-items-center gap-2', props.className)}>\n <div>\n <IconCircle\n svgName={icons[props.type]}\n variant={iconColours[props.type]}\n textVariant='white'\n svgWrapperClassName='p-1'\n svgSize={props.svgSize ?? SvgContainerSize.Standard}\n />\n </div>\n <div className='d-flex flex-column'>\n <p className='m-0'>{getTitle(props)}</p>\n {!props.hideSubtitle && <span className='text-secondary'>{props.subtitleText ?? getSubtitle(props)}</span>}\n </div>\n </div>\n );\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","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('password') };\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 React from 'react';\n\nimport { ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\n\nimport {\n getCircleClassName,\n getCircleContainerClassName,\n getCircleRadius,\n getColouredLabelClassName,\n getFormattedPercentage,\n getPercentageToFixed,\n isPending,\n ProgressCircleSize\n} from './PercentageIndicatorUtils';\n\nimport styles from './percentage-indicator.scss';\n\ninterface ProgressCircleProps {\n size: ProgressCircleSize;\n scoreThresholds?: ScoreThresholds;\n percentage?: number;\n}\n\nfunction ProgressCircle(props: ProgressCircleProps): JSX.Element {\n const ref = React.useCallback((circle: SVGCircleElement) => {\n if (!circle)\n return;\n\n const radius = circle.r.baseVal.value;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - props.percentage * circumference;\n\n circle.style.strokeDasharray = `${circumference} ${circumference}`;\n circle.style.strokeDashoffset = offset.toString();\n }, [props.percentage]);\n\n return (\n <svg>\n <circle r={getCircleRadius(props.size)} className={styles.backgroundCircle} />\n {!isPending(props.percentage) &&\n <circle\n ref={ref}\n r={getCircleRadius(props.size)}\n className={getCircleClassName(props.percentage, props.scoreThresholds)}\n />\n }\n </svg>\n );\n}\n\nexport enum PercentageIndicatorLayout {\n CircleOnly = 'circle_only',\n LabelOnly = 'label_only',\n LabelBefore = 'label_before',\n LabelInside = 'label_inside'\n}\n\ninterface PercentageIndicatorProps {\n layout: PercentageIndicatorLayout;\n percentage?: number; // Between 0 and 1 or undefined for pending\n className?: string;\n customLabel?: string;\n scoreThresholds?: ScoreThresholds;\n size?: ProgressCircleSize;\n}\n\nPercentageIndicator.defaultProps = {\n layout: PercentageIndicatorLayout.CircleOnly\n};\n\nexport function PercentageIndicator(props: PercentageIndicatorProps): JSX.Element {\n const percentageToFixed = getPercentageToFixed(props.percentage);\n\n const size = props.size ||\n (props.layout === PercentageIndicatorLayout.LabelInside\n ? ProgressCircleSize.Large\n : ProgressCircleSize.Small\n );\n\n const label = props.customLabel || getFormattedPercentage(percentageToFixed);\n\n if (props.layout === PercentageIndicatorLayout.LabelOnly)\n return (\n <span className={getColouredLabelClassName(percentageToFixed)}>\n {label}\n </span>\n );\n\n return (\n <div className={`d-flex align-items-center justify-content-between ${props.className ?? ''}`}>\n {props.layout === PercentageIndicatorLayout.LabelBefore &&\n <span className='me-2'>\n {label}\n </span>\n }\n <div className={getCircleContainerClassName(size, percentageToFixed)}>\n <ProgressCircle percentage={percentageToFixed} size={size} scoreThresholds={props.scoreThresholds} />\n {props.layout === PercentageIndicatorLayout.LabelInside &&\n <span className={styles.centredPercentageText}>\n {label}\n </span>\n }\n </div>\n </div>\n );\n}","import { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\n\nimport styles from './percentage-indicator.scss';\n\n/**\n * Values for width and strokeWidth are taken from progress-circle.scss.\n * If either are changed, they must be updated in both places.\n */\nconst CIRCLE_WIDTH = 2; // rem\nconst CIRCLE_WIDTH_LG = 5.8; // rem\nconst CIRCLE_STROKE_WIDTH = 0.2; // rem\nconst CIRCLE_STROKE_WIDTH_LG = 0.36; // rem\n \nexport enum ProgressCircleSize {\n Small = 'small',\n Large = 'large',\n ExtraSmall = 'extraSmall'\n}\n\nconst ProgressCircleSizeMap = {\n [ProgressCircleSize.ExtraSmall]: {\n size: CIRCLE_WIDTH\n },\n [ProgressCircleSize.Small]: {\n size: CIRCLE_WIDTH\n },\n [ProgressCircleSize.Large]: {\n size: CIRCLE_WIDTH_LG\n }\n};\n\n/**\n * radius = width / 2 - strokeWidth * 2\n */\nexport function getCircleRadius(size: ProgressCircleSize): string {\n const width = ProgressCircleSizeMap[size].size;\n const strokeWidth = size === ProgressCircleSize.Large ? CIRCLE_STROKE_WIDTH_LG : CIRCLE_STROKE_WIDTH;\n return `${width / 2 - strokeWidth * 2}rem`;\n}\n \nexport function getCircleClassName(\n percentage: number,\n scoreThresholds: ScoreThresholds = ScoreThresholdDefaults\n): string {\n if (percentage >= scoreThresholds.HIGH)\n return styles.circleSuccess;\n \n if (percentage >= scoreThresholds.MODERATE)\n return styles.circleWarning;\n \n return styles.circleDanger;\n}\n \nexport function getColouredLabelClassName(\n percentage: number,\n scoreThresholds: ScoreThresholds = ScoreThresholdDefaults\n): string {\n if (percentage >= scoreThresholds.HIGH)\n return 'text-success';\n \n if (percentage >= scoreThresholds.MODERATE)\n return 'text-warning';\n \n return 'text-danger';\n}\n \nexport function getCircleContainerClassName(size: ProgressCircleSize, percentage?: number): string {\n let className = `d-inline-block ${styles.circleContainer}`;\n \n if (size === ProgressCircleSize.Large)\n className += ` ${styles.lgCircleContainer}`;\n\n if (size === ProgressCircleSize.ExtraSmall)\n className += ` ${styles.xsCircleContainer}`;\n\n if (isPending(percentage))\n className += ` ${styles.pendingCircle}`;\n \n return className;\n}\n\nexport function getPercentageToFixed(percentage?: number): number | undefined {\n if (isPending(percentage))\n return;\n \n return +percentage.toFixed(2);\n}\n \nexport function getFormattedPercentage(percentage?: number): string {\n if (isPending(percentage))\n return `--%`;\n\n return `${Math.round(percentage * 100)}%`;\n}\n\nexport function isPending(percentage?: number): boolean {\n return typeof percentage !== 'number';\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","export interface ScoreThresholds {\n HIGH: number;\n MODERATE: number;\n}\n\nexport const ScoreThresholdDefaults: ScoreThresholds = {\n HIGH: 0.75,\n MODERATE: 0.5\n};\n\nexport const ScoreThresholdInsights: ScoreThresholds = {\n HIGH: 0.7,\n MODERATE: 0.7\n};","import React from 'react';\n\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\n\nexport function useLockContentWidth(): void {\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n}","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ShareAvatar } from 'libs/shared/apps/share-v2/components/share-avatar/ShareAvatar';\nimport { ShareStatusIndicator } from 'libs/shared/apps/share-v2/components/share-status-indicator/ShareStatusIndicator';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { ShareLinkHelper } from 'libs/shared/apps/share-v2/utils/ShareLinkHelper';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\n\ninterface ShareInfoProps {\n sharedObject: SharableEntity;\n share: Share;\n entity: BaseObject;\n yearGroups: YearGroup[];\n className?: string;\n classroomName?: string;\n markingRequired?: boolean;\n}\n\nexport function ShareInfo(props: ShareInfoProps): JSX.Element {\n if (!props.sharedObject)\n return <></>;\n\n const hasExpired = ShareHelper.hasShareExpired(props.share);\n const { text: privacyText } = ShareLinkHelper.getPrivateIconAndText({\n privacy: props.share.privacy,\n entityTypeId: props.sharedObject.typeId,\n hasStudentExp: false,\n entity: props.entity,\n yearGroups: props.yearGroups\n });\n\n return (\n <div className={classNames('d-flex flex-row gap-2', props.className)}>\n <ShareAvatar\n className='border rounded-pill py-1 ps-1 pe-2'\n privacy={props.share.privacy}\n type={props.share.type}\n svgSize={SvgContainerSize.Small}\n classroomName={props.classroomName}\n hideSubtitle\n />\n {!hasExpired && !!privacyText && <p className='d-flex align-items-center mb-0 border rounded-pill px-2'>{privacyText}</p>}\n <ShareStatusIndicator share={props.share} markingRequired={props.markingRequired} className='cursor-default' />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"withDivider\":\"ZSzT3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { ActionsDropdown } from 'libs/shared/components/actions/ActionsDropdown';\nimport { Breadcrumb, Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Classroom, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { AnalyticsRouteHelper } from 'libs/shared/utils/AnalyticsRouteHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { getShareOptionsAppLink } from 'shared/utils/ObjectAppLinkHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { InsightsAdminAlert } from 'apps/my-shares/components/insights-admin-alert/InsightsAdminAlert';\nimport { ShareInfo } from 'apps/my-shares/components/share-info/ShareInfo';\nimport { getShareObjectActions } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\nimport styles from './insights-header.scss';\n\nconst namespace = 'insights.header';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AnonymiseNamesToggleProps {\n anonymiseUsers: boolean;\n toggleAnonymiseUsers: () => void;\n}\n\nfunction AnonymiseNamesToggle(props: AnonymiseNamesToggleProps) {\n return (\n <div>\n <label htmlFor='anonymiseNames' className='mb-0 pe-3'><Text namespace={namespace} phrase='anonymiseNames' /></label>\n <ToggleSwitch id='anonymiseNames' on={props.anonymiseUsers} onClick={props.toggleAnonymiseUsers} />\n </div>\n );\n}\n\ninterface DemoTooltipProps extends React.PropsWithChildren {\n isDemo: boolean;\n}\n\nfunction DemoTooltip(props: DemoTooltipProps) {\n return (\n <Tooltip\n id='audienceFilter'\n title={getPhrase('demoOnly')}\n spanHack={props.isDemo}\n >\n <div className={props.isDemo ? 'pointer-events-none' : ''}>\n {props.children}\n </div>\n </Tooltip>\n );\n}\n\ninterface InsightsHeaderProps {\n video: VideoTypes;\n hasClassrooms?: boolean;\n dateRangeAppLinkParams?: DateRangeQueryParams;\n tabs: PillTab[]\n isDemo?: boolean;\n analyticsWebUrl?: string;\n hasAnalytics?: boolean;\n share: Share;\n yearGroups: YearGroup[];\n classroom?: Classroom;\n markingRequired?: boolean;\n}\n\nexport function InsightsHeader(props: InsightsHeaderProps) {\n const [ anonymiseUsers, setAnonymiseUsers ] = useViewModel<boolean>(\n SharedViewModelKeys.ANONYMISE_USERS,\n false,\n { storage: StorageType.LocalStorage }\n );\n\n const { isPlugin } = usePluginHelper();\n const { hasPermissions } = usePermissions();\n\n const canViewSchoolAnalytics =\n hasPermissions(PermissionName.ViewAnalyticsProduct) &&\n hasPermissions(PermissionName.ViewCustomerAnalytics);\n\n const shareOptionsAppLink = getShareOptionsAppLink(props.share);\n\n function getBreadcrumbs(): Breadcrumb[] {\n if (!props.video) return [];\n if (!props.share) return [];\n\n let rootBreadcrumb: Breadcrumb = {\n name: getPhrase('shares'),\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME\n }\n };\n\n if (props.share.type === ShareType.Classroom) {\n rootBreadcrumb = {\n name: getPhrase('classrooms'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n }\n };\n }\n\n if (props.share.type === ShareType.Open) {\n rootBreadcrumb = {\n name: getPhrase('openClassrooms'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOMS\n }\n };\n }\n\n return [\n rootBreadcrumb,\n {\n name: props.video.name,\n active: true\n }\n ];\n }\n\n function getActions() {\n const actions: ActionOptions[] = [];\n\n if (props.video?.typeId === MasterType.Interactive) {\n actions.push({\n label: getPhrase('generateReport'),\n svgName: cvSvgLibrary.Print,\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_GENERATE_REPORT,\n args: [props.video.id]\n }\n });\n }\n\n if (canViewSchoolAnalytics) {\n actions.push({\n label: getPhrase('viewInAnalytics'),\n svgName: cvSvgLibrary.Analytics,\n href: AnalyticsRouteHelper.getObjectUrl(props.analyticsWebUrl, props.video, true),\n openInNewTab: true\n });\n }\n\n return [ ...actions, ...getShareObjectActions({\n share: props.share,\n sharedObject: props.video,\n isPlugin,\n hideShareOptionsActions: true\n }) ];\n }\n\n function getVideoEntityPhrase() {\n if (props.video.typeId === MasterType.Interactive) return 'viewInteractive';\n if (props.video.typeId === MasterType.Clip) return 'viewClip';\n\n return 'viewVideo';\n }\n\n return (\n <div>\n <InsightsAdminAlert\n analyticsUrl={props.analyticsWebUrl}\n hasAnalytics={props.hasAnalytics}\n video={props.video}\n />\n <section className='mb-4'>\n <div className='d-flex justify-content-between mb-3'>\n {props.video\n ? <Breadcrumbs breadcrumbs={getBreadcrumbs()} />\n : <PartialBreadcrumbs />\n }\n <div className='d-flex gap-2'>\n {!isPlugin && shareOptionsAppLink &&\n <DemoTooltip isDemo={props.isDemo}>\n <IconButton svgName={cvSvgLibrary.Share} className='btn btn-outline-dark' appLink={shareOptionsAppLink}>\n <Text namespace={namespace} phrase='shareOptions' />\n </IconButton>\n </DemoTooltip>\n }\n <DemoTooltip isDemo={props.isDemo}>\n <ActionsDropdown\n dropdownToggleClassName='btn btn-outline-dark'\n actions={getActions()}\n />\n </DemoTooltip>\n </div>\n </div>\n \n <div className='d-flex justify-content-between mb-3'>\n <div className='me-2'>\n {props.video && (\n <>\n <h1 className='mb-0 d-inline me-2'>{props.video.name}</h1>\n {!props.isDemo &&\n <Tooltip title={getPhrase(getVideoEntityPhrase())} type='text' spanHack spanHackClassName='d-inline-block align-text-bottom'>\n <IconButton\n svgName={cvSvgLibrary.NewWindow}\n appLink={VideoAppLinkHelper.getAppLink(props.video)}\n svgSize={SvgContainerSize.Large}\n className='d-inline-block'\n customSize\n />\n </Tooltip>\n }\n </>\n )}\n {!props.video && <h1 className='partial-loading-background' style={{ width: '20rem' }}>&nbsp;</h1>}\n </div>\n </div>\n <div className={classNames('d-flex flex-row align-items-center mb-3', styles.withDivider)}>\n <ShareInfo\n sharedObject={props.video}\n share={props.share}\n entity={props.video}\n yearGroups={props.yearGroups}\n classroomName={props.classroom?.name}\n markingRequired={props.markingRequired}\n />\n </div>\n <div className='d-flex align-items-center justify-content-between mb-4'>\n <PillTabSelector tabs={props.tabs} />\n <AnonymiseNamesToggle\n anonymiseUsers={anonymiseUsers}\n toggleAnonymiseUsers={() => setAnonymiseUsers(!anonymiseUsers)}\n />\n </div>\n </section>\n </div>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { getInsightsHeatmapAppLink, getInsightsOverviewAppLink, getInsightsQuestionsAppLink, getInsightsStudentsAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nconst namespace = 'shared.insightsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport type InsightsTabs = 'insights' | 'heatmap' | 'results' | 'questions';\n\nexport function getInsightsVideoTabs(share: Share, active: InsightsTabs, params?: HashObject) {\n return [\n {\n name: getPhrase('insights'),\n active: active === 'insights',\n appLink: getInsightsOverviewAppLink(share, params)\n },\n {\n name: getPhrase('heatmap'),\n active: active === 'heatmap',\n appLink: getInsightsHeatmapAppLink(share, params)\n }\n ];\n}\n\nexport function getInsightsInteractiveTabs(share: Share, active: InsightsTabs) {\n return [\n {\n name: getPhrase('insights'),\n active: active === 'insights',\n appLink: getInsightsOverviewAppLink(share)\n },\n {\n name: getPhrase('results'),\n active: active === 'results',\n appLink: getInsightsStudentsAppLink(share)\n },\n {\n name: getPhrase('questions'),\n active: active === 'questions',\n appLink: getInsightsQuestionsAppLink(share)\n },\n {\n name: getPhrase('heatmap'),\n active: active === 'heatmap',\n appLink: getInsightsHeatmapAppLink(share)\n }\n ];\n}\n\nexport function getInsightsDemoInteractiveTabs(id: string, active: InsightsTabs, params: HashObject) {\n return [\n {\n name: getPhrase('insights'),\n active: active === 'insights',\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO,\n args: [id],\n params\n }\n },\n {\n name: getPhrase('results'),\n active: active === 'results',\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_STUDENTS_DEMO,\n args: [id],\n params\n }\n },\n {\n name: getPhrase('questions'),\n active: active === 'questions',\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_QUESTIONS_DEMO,\n args: [id],\n params\n }\n },\n {\n name: getPhrase('heatmap'),\n active: active === 'heatmap',\n appLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_HEATMAP_DEMO,\n args: [id],\n params\n }\n }\n ];\n}","// extracted by mini-css-extract-plugin\nexport default {\"circleContainer\":\"p8Vgz\",\"backgroundCircle\":\"asGGE\",\"circleSuccess\":\"PXLNj\",\"circleWarning\":\"ZckRN\",\"circleDanger\":\"slBRg\",\"lgCircleContainer\":\"N8KCI\",\"xsCircleContainer\":\"RPqZ2\",\"pendingCircle\":\"DKrcq\",\"centredPercentageText\":\"tpmLR\"};","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["getPhrase","anonymiseUserName","user","shouldAnonymise","userId","id","sessionId","seed","guid","hash","i","length","charCodeAt","Math","abs","guidToSeed","floor","Date","getMinutes","dictionaries","separator","style","icons","iconColours","shareTypeTitlePhraseMap","ShareAvatar","props","className","svgName","type","variant","textVariant","svgWrapperClassName","svgSize","S","classroomName","additionalTitleText","title","getTitle","hideSubtitle","subtitleText","privacy","studentCount","classroomGroupCount","smartCount","getClassroomSubtitle","includes","getLinkSubtitle","getSubtitle","SharePrivacy","ShareLinkHelper","getPrivateIconAndText","options","entityTypeId","hasStudentExp","entity","yearGroups","icon","text","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","days","video","restriction","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","name","getShareLinkAccessType","isTvContent","isClickViewContent","canManageAccess","PercentageIndicatorLayout","ProgressCircle","ref","circle","radius","r","baseVal","circumference","PI","offset","percentage","strokeDasharray","strokeDashoffset","toString","size","scoreThresholds","PercentageIndicator","percentageToFixed","layout","LabelInside","label","customLabel","LabelOnly","LabelBefore","defaultProps","CircleOnly","ProgressCircleSize","CIRCLE_STROKE_WIDTH","CIRCLE_STROKE_WIDTH_LG","ProgressCircleSizeMap","ExtraSmall","Small","Large","getCircleRadius","width","strokeWidth","getCircleClassName","HIGH","MODERATE","getColouredLabelClassName","getCircleContainerClassName","isPending","getPercentageToFixed","toFixed","getFormattedPercentage","round","TabContents","tab","count","data","PillTabSelector","containerRef","borderRadius","listClassName","tabs","map","index","active","key","appLink","analyticsData","analyticsOptions","onClick","onSelect","onSelectTab","ScoreThresholdDefaults","ScoreThresholdInsights","useLockContentWidth","namespace","InsightsAdminAlert","storage","show","setShow","hasAnalytics","role","phrase","href","analyticsUrl","videoRoute","typeId","getAnalyticsUrl","target","ShareInfo","sharedObject","hasExpired","ShareHelper","share","privacyText","SvgContainer","ShareStatusIndicator","markingRequired","LanguageService","AnonymiseNamesToggle","htmlFor","Text","ToggleSwitch","on","anonymiseUsers","toggleAnonymiseUsers","DemoTooltip","Tooltip","spanHack","isDemo","children","InsightsHeader","SharedViewModelKeys","setAnonymiseUsers","isPlugin","usePluginHelper","hasPermissions","usePermissions","canViewSchoolAnalytics","PermissionName","shareOptionsAppLink","analyticsWebUrl","Breadcrumbs","breadcrumbs","rootBreadcrumb","application","action","ShareType","getBreadcrumbs","IconButton","ActionsDropdown","dropdownToggleClassName","actions","MasterType","push","args","AnalyticsRouteHelper","openInNewTab","hideShareOptionsActions","getActions","spanHackClassName","VideoAppLinkHelper","customSize","classroom","getInsightsVideoTabs","params","getInsightsInteractiveTabs","getInsightsDemoInteractiveTabs"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1610],{33518:(e,t,a)=>{var n;a.d(t,{e:()=>n}),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"}(n||(n={}))},54405:(e,t,a)=>{a.d(t,{X:()=>n});var n={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},99746:(e,t,a)=>{a.d(t,{p:()=>p});var n=a(32735),r=a(57900),i=a(97395),s=a(2948),c=a(91693),l=a(83345),o=a(4594),d=a(35223),m=a(86702);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var h="lite.insightsAdminAlert";function p(e){var t,a,p=(t=(0,s.D)(m.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,s,c=[],l=!0,o=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){o=!0,r=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(o)throw r}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?u(e,t):void 0}}(t,a)||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.")}()),g=p[0],v=p[1];return e.hasAnalytics&&g?n.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},n.createElement("div",null,n.createElement(l.x,{namespace:h,phrase:"adminAlert"}),n.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var t="";return e.video.typeId===o.E.Interactive&&(t="/interactives/".concat(e.video.id,"/views")),e.video.typeId===o.E.Video&&(t="/videos/".concat(e.video.id,"/views")),e.video.typeId===o.E.Clip&&(t="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,t)}(),target:"_blank"},n.createElement(l.x,{namespace:h,phrase:"analytics"})),"."),n.createElement(c.h,{svgName:d.vn.Close,className:"text-blue",onClick:function(){v(!1)}})):n.createElement(n.Fragment,null)}},18006:(e,t,a)=>{a.d(t,{c:()=>n,q:()=>r});var n="D8qRe7",r="GRWx6w"},9566:(e,t,a)=>{a.d(t,{G6:()=>u,GJ:()=>h,VE:()=>g});var n=a(23481),r=a(110),i=a(33518),s=a(2510),c=a(4594),l=a(35223),o=a(14070),d=a(97291),m=n.T.encloseNamespace("myShares.demoInsights"),u={type:s.y.Link,privacy:i.e.JustMySchool,objectId:"0",objectTypeId:c.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},h={share:u,sharedObject:null,shareRecipients:null,dateShared:r.O.subtract(new Date,7,"days").toISOString()},p={application:d.O.MY_SHARES,action:o.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},g={svgName:l.vn.Analytics,label:m("demoInsights"),appLink:p,group:"insights",className:"btn btn-outline-dark"}},39607:(e,t,a)=>{a.r(t),a.d(t,{MySharesView:()=>B});var n=a(32735),r=a(81886),i=a(23481),s=a(20354),c=a(2510),l=a(15611),o=a(87801),d=a(83345),m=a(16714),u=a(39151),h=a(1666),p=a(54405),g=a(31949),v=a(25882),y=a(79967),b=a(22902),f=a(79612),E=a(37802),S=a(14070),k=a(97291),I=a(46390),w=a(98623),C=a(99746),O=a(84073),P=a(18006),j=a(9566);const A={background:"HAuP3"};var N="myShares.demoInsights",x=i.T.encloseNamespace(N);function U(e){var t=e.liteUrl.includes("staging"),a=e.breakpoints.xs||e.breakpoints.sm;return n.createElement("div",null,n.createElement(O.g,{heading:x("demoHeading"),isFirst:!0}),n.createElement("div",{className:"".concat(A.background," rounded-3 border-md bg-light-orange mb-4")},n.createElement(O.F,{shareData:Object.assign(Object.assign({},j.GJ),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?P.c:P.q})}),getObjectActions:function(){return[Object.assign(Object.assign({},j.VE),{button:!a})]},imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,breakpoints:e.breakpoints},n.createElement("div",{className:"d-inline-block rounded-pill bg-light-blue text-info font-size-sm mt-1 px-2"},n.createElement(d.x,{namespace:N,phrase:"demoInsightPill"})))))}var M=a(67467),L=a(5056),R=a(28001),D=a(65858),V=a(97958),_=a(99742),F="myShares.mySharesEmptyState",T=i.T.encloseNamespace(F);function G(){return n.createElement(V.u,null,n.createElement(V.u.Image,{src:_.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:T("heading")}),n.createElement(V.u.Heading,null,n.createElement(d.x,{namespace:F,phrase:"heading"})),n.createElement(V.u.Info,null,n.createElement(d.x,{namespace:F,phrase:"info"})),n.createElement(V.u.Cta,{text:i.T.getPhrase(F,"cta"),appLink:{application:k.O.SIGN_UP,action:S.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:D.Vw.Click,location:D.LZ.MySharesLanding,entity:D.py.AppLink,workflowPhase:D.eu.Start,descriptor:D.Yu.SignUp}}))}var H=a(69003),z="myShares.myShares",J=i.T.encloseNamespace(z);function B(e){var t,a,i,O;(0,f.M)({title:J("myShares")});var P=(0,b.T)(),j=P.hasPermissions,A=P.hasLocalPermissions,N=(0,E.r)(null),x=N.hasShareFlowV2,D=N.hasClassrooms,V=(0,I.G)().isPlugin,_=(0,y.k)(),F=(0,v.v)().accessPolicy,T=(0,H.cl)(e.typeId),B=!A(m.E.ViewMySharesLanding)||j(m.C.ViewMyShares)&&x,W=x&&j(m.C.ViewInsights),q=null===(t=null==F?void 0:F.metadata)||void 0===t?void 0:t.hasDemoInsights,Y=s.a.useBasicFetch(u.L.config()),X=s.a.useBasicFetch(g.N.currentUser()),Z=s.a.useBasicFetch((null===(a=X.data)||void 0===a?void 0:a.isAuthenticated)&&h.h.yearGroups(X.data.customerId)),Q=s.a.useBasicFetch(q&&p.X.interactiveMetadata()),$=(0,w.a)({interactiveInsights:!0,shouldFetch:B,params:{type:[c.y.Link,c.y.LegacyDirect]}});return n.useEffect(function(){j(m.C.ViewMyShares)&&x||r.Q.Ab.PageLoad("/")},[B]),B?n.createElement("div",{className:"px-3"},n.createElement(C.p,{analyticsUrl:null===(i=Y.data)||void 0===i?void 0:i.analyticsWebUrl,hasAnalytics:j(m.C.ViewCustomerAnalytics)}),n.createElement("div",{className:"border-bottom pb-2 mb-4"},n.createElement("h1",{className:"mb-2"},n.createElement(d.x,{namespace:z,phrase:"myShares"})),D&&n.createElement("p",{className:"mb-0"},n.createElement(d.x,{namespace:z,phrase:"classroomsHint"})," ",n.createElement(l.F,{appLink:{application:k.O.CLASSROOMS,action:S.e.Classrooms.HOME},className:"info-link"},n.createElement(d.x,{namespace:z,phrase:"classroomsCta"})))),q&&Q.data&&n.createElement(U,{demoInteractive:Q.data,liteUrl:null===(O=Y.data)||void 0===O?void 0:O.liteUrl,breakpoints:_,imageCdnUrl:$.imageCdnUrl,yearGroups:Z.data}),function(){var e;return $.showPartialLoading?n.createElement(R.L,null):$.sentShares.length?n.createElement(n.Fragment,null,n.createElement(L.R,{sentShares:$.sentShares,sharedObjects:$.sharedObjects.items,shareRecipients:$.shareRecipients.items,interactivesPendingReview:$.interactivesPendingReview.itemsArr,getObjectActions:function(e){return(0,H.sD)({share:e.share,sharedObject:e.sharedObject,audienceParams:T.audienceAppLinkParams,hasInsights:W,isPlugin:V,breakpoints:_})},groupByDateShared:!0,breakpoints:_,hasDemoInsights:q,imageCdnUrl:null===(e=Y.data)||void 0===e?void 0:e.imageCdnUrl,yearGroups:Z.data}),($.hasMore||$.isFetching)&&n.createElement(o._,{isFetching:$.isFetching,fetchNext:$.fetchNext,nextCursor:$.nextCursor})):n.createElement(M.o,null)}()):n.createElement(G,null)}}}]);
2
- //# sourceMappingURL=1610-9ccecc428a-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1610],{33518:(e,t,a)=>{var n;a.d(t,{e:()=>n}),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"}(n||(n={}))},54405:(e,t,a)=>{a.d(t,{X:()=>n});var n={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},99746:(e,t,a)=>{a.d(t,{p:()=>p});var n=a(32735),r=a(57900),i=a(97395),s=a(2948),c=a(91693),l=a(83345),o=a(4594),d=a(35223),m=a(86702);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var h="lite.insightsAdminAlert";function p(e){var t,a,p=(t=(0,s.D)(m.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,s,c=[],l=!0,o=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){o=!0,r=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(o)throw r}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?u(e,t):void 0}}(t,a)||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.")}()),g=p[0],v=p[1];return e.hasAnalytics&&g?n.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},n.createElement("div",null,n.createElement(l.x,{namespace:h,phrase:"adminAlert"}),n.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var t="";return e.video.typeId===o.E.Interactive&&(t="/interactives/".concat(e.video.id,"/views")),e.video.typeId===o.E.Video&&(t="/videos/".concat(e.video.id,"/views")),e.video.typeId===o.E.Clip&&(t="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,t)}(),target:"_blank"},n.createElement(l.x,{namespace:h,phrase:"analytics"})),"."),n.createElement(c.h,{svgName:d.vn.Close,className:"text-blue",onClick:function(){v(!1)}})):n.createElement(n.Fragment,null)}},18006:(e,t,a)=>{a.d(t,{c:()=>n,q:()=>r});var n="D8qRe7",r="GRWx6w"},9566:(e,t,a)=>{a.d(t,{G6:()=>u,GJ:()=>h,VE:()=>g});var n=a(23481),r=a(110),i=a(33518),s=a(2510),c=a(4594),l=a(35223),o=a(14070),d=a(97291),m=n.T.encloseNamespace("myShares.demoInsights"),u={type:s.y.Link,privacy:i.e.JustMySchool,objectId:"0",objectTypeId:c.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},h={share:u,sharedObject:null,shareRecipients:null,dateShared:r.O.subtract(new Date,7,"days").toISOString()},p={application:d.O.MY_SHARES,action:o.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},g={svgName:l.vn.Analytics,label:m("demoInsights"),appLink:p,group:"insights",className:"btn btn-outline-dark"}},39607:(e,t,a)=>{a.r(t),a.d(t,{MySharesView:()=>B});var n=a(32735),r=a(81886),i=a(23481),s=a(20354),c=a(2510),l=a(15611),o=a(87801),d=a(83345),m=a(16714),u=a(39151),h=a(1666),p=a(54405),g=a(31949),v=a(25882),y=a(79967),b=a(22902),f=a(79612),E=a(37802),S=a(14070),k=a(97291),I=a(46390),w=a(98623),C=a(99746),O=a(55219),P=a(18006),j=a(9566);const A={background:"HAuP3"};var N="myShares.demoInsights",x=i.T.encloseNamespace(N);function U(e){var t=e.liteUrl.includes("staging"),a=e.breakpoints.xs||e.breakpoints.sm;return n.createElement("div",null,n.createElement(O.g,{heading:x("demoHeading"),isFirst:!0}),n.createElement("div",{className:"".concat(A.background," rounded-3 border-md bg-light-orange mb-4")},n.createElement(O.F,{shareData:Object.assign(Object.assign({},j.GJ),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?P.c:P.q})}),getObjectActions:function(){return[Object.assign(Object.assign({},j.VE),{button:!a})]},imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,breakpoints:e.breakpoints},n.createElement("div",{className:"d-inline-block rounded-pill bg-light-blue text-info font-size-sm mt-1 px-2"},n.createElement(d.x,{namespace:N,phrase:"demoInsightPill"})))))}var M=a(67467),L=a(5056),R=a(28001),D=a(65858),V=a(97958),_=a(99742),F="myShares.mySharesEmptyState",T=i.T.encloseNamespace(F);function G(){return n.createElement(V.u,null,n.createElement(V.u.Image,{src:_.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:T("heading")}),n.createElement(V.u.Heading,null,n.createElement(d.x,{namespace:F,phrase:"heading"})),n.createElement(V.u.Info,null,n.createElement(d.x,{namespace:F,phrase:"info"})),n.createElement(V.u.Cta,{text:i.T.getPhrase(F,"cta"),appLink:{application:k.O.SIGN_UP,action:S.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:D.Vw.Click,location:D.LZ.MySharesLanding,entity:D.py.AppLink,workflowPhase:D.eu.Start,descriptor:D.Yu.SignUp}}))}var H=a(69003),z="myShares.myShares",J=i.T.encloseNamespace(z);function B(e){var t,a,i,O;(0,f.M)({title:J("myShares")});var P=(0,b.T)(),j=P.hasPermissions,A=P.hasLocalPermissions,N=(0,E.r)(null),x=N.hasShareFlowV2,D=N.hasClassrooms,V=(0,I.G)().isPlugin,_=(0,y.k)(),F=(0,v.v)().accessPolicy,T=(0,H.cl)(e.typeId),B=!A(m.E.ViewMySharesLanding)||j(m.C.ViewMyShares)&&x,W=x&&j(m.C.ViewInsights),q=null===(t=null==F?void 0:F.metadata)||void 0===t?void 0:t.hasDemoInsights,Y=s.a.useBasicFetch(u.L.config()),X=s.a.useBasicFetch(g.N.currentUser()),Z=s.a.useBasicFetch((null===(a=X.data)||void 0===a?void 0:a.isAuthenticated)&&h.h.yearGroups(X.data.customerId)),Q=s.a.useBasicFetch(q&&p.X.interactiveMetadata()),$=(0,w.a)({interactiveInsights:!0,shouldFetch:B,params:{type:[c.y.Link,c.y.LegacyDirect]}});return n.useEffect(function(){j(m.C.ViewMyShares)&&x||r.Q.Ab.PageLoad("/")},[B]),B?n.createElement("div",{className:"px-3"},n.createElement(C.p,{analyticsUrl:null===(i=Y.data)||void 0===i?void 0:i.analyticsWebUrl,hasAnalytics:j(m.C.ViewCustomerAnalytics)}),n.createElement("div",{className:"border-bottom pb-2 mb-4"},n.createElement("h1",{className:"mb-2"},n.createElement(d.x,{namespace:z,phrase:"myShares"})),D&&n.createElement("p",{className:"mb-0"},n.createElement(d.x,{namespace:z,phrase:"classroomsHint"})," ",n.createElement(l.F,{appLink:{application:k.O.CLASSROOMS,action:S.e.Classrooms.HOME},className:"info-link"},n.createElement(d.x,{namespace:z,phrase:"classroomsCta"})))),q&&Q.data&&n.createElement(U,{demoInteractive:Q.data,liteUrl:null===(O=Y.data)||void 0===O?void 0:O.liteUrl,breakpoints:_,imageCdnUrl:$.imageCdnUrl,yearGroups:Z.data}),function(){var e;return $.showPartialLoading?n.createElement(R.L,null):$.sentShares.length?n.createElement(n.Fragment,null,n.createElement(L.R,{sentShares:$.sentShares,sharedObjects:$.sharedObjects.items,shareRecipients:$.shareRecipients.items,interactivesPendingReview:$.interactivesPendingReview.itemsArr,getObjectActions:function(e){return(0,H.sD)({share:e.share,sharedObject:e.sharedObject,audienceParams:T.audienceAppLinkParams,hasInsights:W,isPlugin:V,breakpoints:_})},groupByDateShared:!0,breakpoints:_,hasDemoInsights:q,imageCdnUrl:null===(e=Y.data)||void 0===e?void 0:e.imageCdnUrl,yearGroups:Z.data}),($.hasMore||$.isFetching)&&n.createElement(o._,{isFetching:$.isFetching,fetchNext:$.fetchNext,nextCursor:$.nextCursor})):n.createElement(M.o,null)}()):n.createElement(G,null)}}}]);
2
+ //# sourceMappingURL=1610-0edaa98d40-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/1610-9ccecc428a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/my-shares-demo-insights.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/empty-state/MySharesEmptyState.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesView.tsx"],"sourcesContent":["export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEMO_INSIGHT_DAYS_AGO = 7;\n\nexport const DEMO_INSIGHTS_SHARE: Share = {\n type: ShareType.Link,\n privacy: SharePrivacy.JustMySchool,\n objectId: '0',\n objectTypeId: MasterType.Interactive,\n viewCount: 28,\n accessCount: 15,\n dateCreated: new Date().toISOString(),\n expireDate: null,\n link: {\n shortenedEmbedUrl: '',\n shortenedUrl: ''\n },\n shareId: '0',\n ownerCustomerId: 0,\n ownerId: 0,\n recipients: [],\n options: {\n preventScrubbing: false,\n immediateFeedback: false\n }\n};\n\nexport const DEMO_INSIGHTS_SHARE_TABLE_DATA: MySharesTableData = {\n share: DEMO_INSIGHTS_SHARE,\n sharedObject: null,\n shareRecipients: null,\n dateShared: DateHelper.subtract(new Date(), DEMO_INSIGHT_DAYS_AGO, 'days').toISOString()\n};\n\nconst DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_ACTION: ActionOptions = {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n className: 'btn btn-outline-dark'\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"background\":\"HAuP3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_ACTION, DEMO_INSIGHTS_SHARE_TABLE_DATA } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nimport styles from './my-shares-demo-insights.scss';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n liteUrl: string;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n breakpoints: Breakpoints;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isStaging = props.liteUrl.includes('staging');\n\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: isStaging ? DEMO_INTERACTIVE_STAGING_ID : DEMO_INTERACTIVE_PROD_ID\n };\n }\n\n function getObjectActions() {\n return [\n {\n ...DEMO_INSIGHTS_ACTION,\n button: !isMobile\n }\n ];\n }\n\n return (\n <div>\n <MySharesTableHeading heading={getPhrase('demoHeading')} isFirst={true} />\n\n <div className={`${styles.background} rounded-3 border-md bg-light-orange mb-4`}>\n <MySharesTableRow\n shareData={{ ...DEMO_INSIGHTS_SHARE_TABLE_DATA, sharedObject: getDemoInteractive() }}\n getObjectActions={getObjectActions}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n breakpoints={props.breakpoints}\n >\n <div className='d-inline-block rounded-pill bg-light-blue text-info font-size-sm mt-1 px-2'>\n <Text namespace={namespace} phrase='demoInsightPill' />\n </div>\n </MySharesTableRow>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myShares.mySharesEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function MySharesEmptyState() {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.MY_VIDEOS_PUBLIC} altText={getPhrase('heading')} />\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.MySharesLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAccessPolicy } from 'libs/shared/hooks/useAccessPolicy';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { InsightsAdminAlert } from 'apps/my-shares/components/insights-admin-alert/InsightsAdminAlert';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\nimport { MySharesTableEmptyState } from 'apps/my-shares/components/my-shares-table/empty-state/MySharesTableEmptyState';\nimport { MySharesTable } from 'apps/my-shares/components/my-shares-table/MySharesTable';\nimport { PartialMySharesTable } from 'apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable';\nimport { MySharesEmptyState } from 'apps/my-shares/views/my-shares/empty-state/MySharesEmptyState';\nimport { getShareObjectActions, getSharesParams } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesViewProps {\n typeId: string | string[];\n}\n\nexport function MySharesView(props: MySharesViewProps) {\n // Shared hooks\n useSetPageMetadata({ title: getPhrase('myShares') });\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasShareFlowV2, hasClassrooms } = useSettings(null);\n const { isPlugin } = usePluginHelper();\n const breakpoints = useBreakpoints();\n const { accessPolicy } = useAccessPolicy();\n\n const sharesParams = getSharesParams(props.typeId);\n\n // Local variables\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMySharesLanding) ||\n hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2;\n const hasInsightsPermission = hasShareFlowV2 && hasPermissions(PermissionName.ViewInsights);\n const showDemoInsight = accessPolicy?.metadata?.hasDemoInsights;\n\n // Flight fetching\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(showDemoInsight &&\n InsightsDemoRequests.interactiveMetadata());\n\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch,\n params: {\n type: [ ShareType.Link, ShareType.LegacyDirect ]\n }\n });\n\n React.useEffect(() => {\n if (!(hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2))\n Core.LocationUtils.PageLoad('/');\n }, [shouldFetch]);\n\n if (!shouldFetch)\n return <MySharesEmptyState />;\n\n return (\n <div className='px-3'>\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n />\n\n <div className='border-bottom pb-2 mb-4'>\n <h1 className='mb-2'><Text namespace={namespace} phrase='myShares' /></h1>\n {hasClassrooms && (\n <p className='mb-0'>\n <Text namespace={namespace} phrase='classroomsHint'/>\n &nbsp;\n <AppLink\n appLink={{ application: AppChannels.CLASSROOMS, action: Actions.Classrooms.HOME }}\n className='info-link'\n >\n <Text namespace={namespace} phrase='classroomsCta'/>\n </AppLink>\n </p>\n )}\n </div>\n\n {showDemoInsight && demoInteractive.data &&\n <MySharesDemoInsight\n demoInteractive={demoInteractive.data}\n liteUrl={config.data?.liteUrl}\n breakpoints={breakpoints}\n imageCdnUrl={shareData.imageCdnUrl}\n yearGroups={yearGroups.data}\n />\n }\n\n {(() => {\n if (shareData.showPartialLoading)\n return <PartialMySharesTable />;\n\n if (!shareData.sentShares.length)\n return (\n <MySharesTableEmptyState />\n );\n\n return (\n <>\n <MySharesTable\n sentShares={shareData.sentShares}\n sharedObjects={shareData.sharedObjects.items}\n shareRecipients={shareData.shareRecipients.items}\n interactivesPendingReview={shareData.interactivesPendingReview.itemsArr}\n getObjectActions={row => getShareObjectActions({\n share: row.share,\n sharedObject: row.sharedObject,\n audienceParams: sharesParams.audienceAppLinkParams,\n hasInsights: hasInsightsPermission,\n isPlugin,\n breakpoints\n })}\n groupByDateShared\n breakpoints={breakpoints}\n hasDemoInsights={showDemoInsight}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n />\n {(shareData.hasMore || shareData.isFetching) &&\n <InfiniteScrollFooter\n isFetching={shareData.isFetching}\n fetchNext={shareData.fetchNext}\n nextCursor={shareData.nextCursor}\n />\n }\n </>\n );\n })()}\n </div>\n );\n}\n"],"names":["SharePrivacy","InsightsDemoRequests","interactive","url","key","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","namespace","InsightsAdminAlert","props","storage","show","setShow","hasAnalytics","role","className","phrase","href","video","analyticsUrl","videoRoute","typeId","id","getAnalyticsUrl","target","svgName","onClick","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID","getPhrase","DEMO_INSIGHTS_SHARE","type","privacy","objectId","objectTypeId","viewCount","accessCount","dateCreated","Date","toISOString","expireDate","link","shortenedEmbedUrl","shortenedUrl","shareId","ownerCustomerId","ownerId","recipients","options","preventScrubbing","immediateFeedback","DEMO_INSIGHTS_SHARE_TABLE_DATA","share","sharedObject","shareRecipients","dateShared","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_ACTION","label","appLink","group","LanguageService","MySharesDemoInsight","isStaging","liteUrl","includes","isMobile","breakpoints","xs","sm","heading","isFirst","MySharesTableRow","shareData","demoInteractive","getObjectActions","button","imageCdnUrl","yearGroups","Text","MySharesEmptyState","EmptyState","src","ImageUrls","altText","text","analyticsData","analyticsOptions","actionType","location","entity","workflowPhase","descriptor","SignUp","MySharesView","useSetPageMetadata","title","usePermissions","hasPermissions","hasLocalPermissions","useSettings","hasShareFlowV2","hasClassrooms","isPlugin","usePluginHelper","useBreakpoints","accessPolicy","useAccessPolicy","sharesParams","shouldFetch","PermissionName","hasInsightsPermission","showDemoInsight","metadata","hasDemoInsights","config","ConfigRequests","currentUser","UserRequests","data","isAuthenticated","CustomerRequests","customerId","useSharesTable","interactiveInsights","params","ShareType","analyticsWebUrl","AppLink","showPartialLoading","PartialMySharesTable","sentShares","length","MySharesTable","sharedObjects","items","interactivesPendingReview","itemsArr","row","audienceParams","audienceAppLinkParams","hasInsights","groupByDateShared","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","MySharesTableEmptyState"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/1610-0edaa98d40-lite.chunk.js","mappings":"mHAAA,IAAYA,E,iBAAZ,SAAYA,GACV,kBACA,oBACA,wCACA,8DACA,oEACA,wBACA,8BACA,iBACD,CATD,CAAYA,IAAAA,EAAY,I,mCCEjB,IAAMC,EAAuB,CAClCC,YAAW,WACT,MAAO,CACLC,IAAK,mCACLC,IAAK,mBACLC,WAAW,EAEf,EAEAC,oBAAmB,WACjB,MAAO,CACLH,IAAK,4CACLC,IAAK,4BACLC,WAAW,EAEf,EAEAE,mBAAkB,WAChB,MAAO,CACLJ,IAAK,2CACLC,IAAK,2BACLC,WAAW,EAEf,EAEAG,WAAU,WACR,MAAO,CACLL,IAAK,mCACLC,IAAK,mBACLC,WAAW,EAEf,EAEAI,MAAK,WACH,MAAO,CACLN,IAAK,6BACLC,IAAK,aACLC,WAAW,EAEf,EAEAK,kBAAiB,WACf,MAAO,CACLP,IAAK,0CACLC,IAAK,0BACLC,WAAW,EAEf,EAEAM,iBAAgB,WACd,MAAO,CACLR,IAAK,yCACLC,IAAK,yBACLC,WAAW,EAEf,E,8OC3CF,IAAMO,EAAY,0BASZ,SAAUC,EAAmBC,GACjC,I,IAIC,G,GAJyB,OACxB,0BACA,EACA,CAAEC,QAAS,oB,EACZ,E,o4BAJOC,EAAI,KAAEC,EAAO,KA2BrB,OAAKH,EAAMI,cAAiBF,EAI1B,uBAAKG,KAAK,QAAQC,UAAU,oFAC1B,2BACE,gBAAC,IAAI,CAACR,UAAWA,EAAWS,OAAO,eACnC,qBAAGD,UAAU,YAAYE,KAxB/B,WACE,IAAKR,EAAMS,MAAO,OAAOT,EAAMU,aAE/B,IAAIC,EAAa,GAWjB,OATIX,EAAMS,MAAMG,SAAW,kBACzBD,EAAa,iBAAH,OAAoBX,EAAMS,MAAMI,GAAE,WAE1Cb,EAAMS,MAAMG,SAAW,YACzBD,EAAa,WAAH,OAAcX,EAAMS,MAAMI,GAAE,WAEpCb,EAAMS,MAAMG,SAAW,WACzBD,EAAa,UAAH,OAAaX,EAAMS,MAAMI,GAAE,WAEhC,kBAAwBb,EAAMU,aAAcC,EACrD,CASqCG,GAAmBC,OAAO,UACvD,gBAAC,IAAI,CAACjB,UAAWA,EAAWS,OAAO,eACjC,KAEN,gBAAC,IAAU,CAACS,QAAS,WAAoBV,UAAU,YAAYW,QAhCnE,WACEd,GAAQ,EACV,KAoBS,gCAaX,C,2CCjEO,IAAMe,EAA8B,SAC9BC,EAA2B,Q,6ICgBlCC,EAAY,qBADA,yBAKLC,EAA6B,CACxCC,KAAM,SACNC,QAAS,iBACTC,SAAU,IACVC,aAAc,gBACdC,UAAW,GACXC,YAAa,GACbC,aAAa,IAAIC,MAAOC,cACxBC,WAAY,KACZC,KAAM,CACJC,kBAAmB,GACnBC,aAAc,IAEhBC,QAAS,IACTC,gBAAiB,EACjBC,QAAS,EACTC,WAAY,GACZC,QAAS,CACPC,kBAAkB,EAClBC,mBAAmB,IAIVC,EAAoD,CAC/DC,MAAOtB,EACPuB,aAAc,KACdC,gBAAiB,KACjBC,WAAY,aAAoB,IAAIjB,KA7BR,EA6BuC,QAAQC,eAGvEiB,EAAsC,CAC1CC,YAAa,cACbC,OAAQ,wCAGGC,EAAsC,CACjDlC,QAAS,eACTmC,MAAO/B,EAAU,gBACjBgC,QAASL,EACTM,MAAO,WACP/C,UAAW,uB,oVC5Db,SAAgB,WAAa,SCa7B,IAAMR,EAAY,wBACZsB,EAAYkC,EAAA,mBAAiCxD,GAU7C,SAAUyD,EAAoBvD,GAClC,IAAMwD,EAAYxD,EAAMyD,QAAQC,SAAS,WAEnCC,EAAW3D,EAAM4D,YAAYC,IAAM7D,EAAM4D,YAAYE,GAkB3D,OACE,2BACE,gBAAC,IAAoB,CAACC,QAAS3C,EAAU,eAAgB4C,SAAS,IAElE,uBAAK1D,UAAS,UAAK,aAAiB,8CAClC,gBAAC2D,EAAA,EAAgB,CACfC,UAAS,+BAAO,MAA8B,CAAEtB,aArB/C,OAAP,wBACK5C,EAAMmE,iBAAe,CACxBtD,GAAI2C,EAAY,IAA8B,QAoB1CY,iBAhBR,WACE,MAAO,CAAC,OAAD,wBAEA,MAAoB,CACvBC,QAASV,IAGf,EAUQW,YAAatE,EAAMsE,YACnBC,WAAYvE,EAAMuE,WAClBX,YAAa5D,EAAM4D,aAEnB,uBAAKtD,UAAU,8EACb,gBAACkE,EAAA,EAAI,CAAC1E,UAAWA,EAAWS,OAAO,uBAM/C,C,qECpDM,EAAY,8BACZ,EAAY+C,EAAA,mBAAiC,GAE7C,SAAUmB,IACd,OACE,gBAACC,EAAA,EAAU,KACT,gBAACA,EAAA,QAAgB,CAACC,IAAKC,EAAA,+BAAwCC,QAAS,EAAU,aAClF,gBAACH,EAAA,UAAkB,KAAC,gBAACF,EAAA,EAAI,CAAC1E,UAAW,EAAWS,OAAO,aACvD,gBAACmE,EAAA,OAAe,KAAC,gBAACF,EAAA,EAAI,CAAC1E,UAAW,EAAWS,OAAO,UACpD,gBAACmE,EAAA,MAAc,CACbI,KAAMxB,EAAA,YAA0B,EAAW,OAC3CF,QAAS,CACPJ,YAAa,YACbC,OAAQ,oBAEV8B,cAAe,CAAC,EAChBC,iBAAkB,CAChBC,WAAY,WACZC,SAAU,qBACVC,OAAQ,aACRC,cAAe,WACfC,WAAY,KAAAC,UAKtB,C,eCJM,EAAY,oBACZ,EAAYhC,EAAA,mBAAiC,GAM7C,SAAUiC,EAAavF,G,aAE3B,EAAAwF,EAAA,GAAmB,CAAEC,MAAO,EAAU,cACtC,OAAgD,EAAAC,EAAA,KAAxCC,EAAc,EAAdA,eAAgBC,EAAmB,EAAnBA,oBACxB,GAA0C,EAAAC,EAAA,GAAY,MAA9CC,EAAc,EAAdA,eAAgBC,EAAa,EAAbA,cAChBC,GAAa,EAAAC,EAAA,KAAbD,SACFpC,GAAc,EAAAsC,EAAA,KACZC,GAAiB,EAAAC,EAAA,KAAjBD,aAEFE,GAAe,QAAgBrG,EAAMY,QAGrC0F,GAAeV,EAAoB,0BACvCD,EAAeY,EAAA,iBAAgCT,EAC3CU,EAAwBV,GAAkBH,EAAeY,EAAA,gBACzDE,EAAwC,QAAtB,EAAAN,aAAY,EAAZA,EAAcO,gBAAQ,eAAEC,gBAG1CC,EAAS,kBAA6BC,EAAA,YACtCC,EAAc,kBAAkCC,EAAA,iBAChDxC,EAAa,mBACD,QAAhB,EAAAuC,EAAYE,YAAI,eAAEC,kBAAmBC,EAAA,aAA4BJ,EAAYE,KAAKG,aAE9EhD,EAAkB,kBAA0CsC,GAChEtH,EAAA,yBAEI+E,GAAY,EAAAkD,EAAA,GAAe,CAC/BC,qBAAqB,EACrBf,YAAAA,EACAgB,OAAQ,CACNhG,KAAM,CAAEiG,EAAA,OAAgBA,EAAA,mBAS5B,OALA,YAAgB,WACR5B,EAAeY,EAAA,iBAAgCT,GACnD,gBAA4B,IAChC,EAAG,CAACQ,IAECA,EAIH,uBAAKhG,UAAU,QACb,gBAACP,EAAA,EAAkB,CACjBW,aAAyB,QAAX,EAAAkG,EAAOI,YAAI,eAAEQ,gBAC3BpH,aAAcuF,EAAeY,EAAA,2BAG/B,uBAAKjG,UAAU,2BACb,sBAAIA,UAAU,QAAO,gBAACkE,EAAA,EAAI,CAAC1E,UAAW,EAAWS,OAAO,cACvDwF,GACC,qBAAGzF,UAAU,QACX,gBAACkE,EAAA,EAAI,CAAC1E,UAAW,EAAWS,OAAO,mBAAkB,IAErD,gBAACkH,EAAA,EAAO,CACNrE,QAAS,CAAEJ,YAAa,eAAwBC,OAAQ,qBACxD3C,UAAU,aAEV,gBAACkE,EAAA,EAAI,CAAC1E,UAAW,EAAWS,OAAO,qBAM1CkG,GAAmBtC,EAAgB6C,MAClC,gBAACzD,EAAmB,CAClBY,gBAAiBA,EAAgB6C,KACjCvD,QAAoB,QAAX,EAAAmD,EAAOI,YAAI,eAAEvD,QACtBG,YAAaA,EACbU,YAAaJ,EAAUI,YACvBC,WAAYA,EAAWyC,OAIzB,W,MACA,OAAI9C,EAAUwD,mBACL,gBAACC,EAAA,EAAoB,MAEzBzD,EAAU0D,WAAWC,OAMxB,gCACE,gBAACC,EAAA,EAAa,CACZF,WAAY1D,EAAU0D,WACtBG,cAAe7D,EAAU6D,cAAcC,MACvCnF,gBAAiBqB,EAAUrB,gBAAgBmF,MAC3CC,0BAA2B/D,EAAU+D,0BAA0BC,SAC/D9D,iBAAkB,SAAA+D,GAAG,OAAI,QAAsB,CAC7CxF,MAAOwF,EAAIxF,MACXC,aAAcuF,EAAIvF,aAClBwF,eAAgB/B,EAAagC,sBAC7BC,YAAa9B,EACbR,SAAAA,EACApC,YAAAA,GACA,EACF2E,mBAAiB,EACjB3E,YAAaA,EACb+C,gBAAiBF,EACjBnC,YAAwB,QAAX,EAAAsC,EAAOI,YAAI,eAAE1C,YAC1BC,WAAYA,EAAWyC,QAEvB9C,EAAUsE,SAAWtE,EAAUuE,aAC/B,gBAACC,EAAA,EAAoB,CACnBD,WAAYvE,EAAUuE,WACtBE,UAAWzE,EAAUyE,UACrBC,WAAY1E,EAAU0E,cA5B1B,gBAACC,EAAA,EAAuB,KAiC9B,CAvCE,IAnCG,gBAACpE,EAAkB,KA6E9B,C","sources":["file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/my-shares-demo-insights.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/empty-state/MySharesEmptyState.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesView.tsx"],"sourcesContent":["export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEMO_INSIGHT_DAYS_AGO = 7;\n\nexport const DEMO_INSIGHTS_SHARE: Share = {\n type: ShareType.Link,\n privacy: SharePrivacy.JustMySchool,\n objectId: '0',\n objectTypeId: MasterType.Interactive,\n viewCount: 28,\n accessCount: 15,\n dateCreated: new Date().toISOString(),\n expireDate: null,\n link: {\n shortenedEmbedUrl: '',\n shortenedUrl: ''\n },\n shareId: '0',\n ownerCustomerId: 0,\n ownerId: 0,\n recipients: [],\n options: {\n preventScrubbing: false,\n immediateFeedback: false\n }\n};\n\nexport const DEMO_INSIGHTS_SHARE_TABLE_DATA: MySharesTableData = {\n share: DEMO_INSIGHTS_SHARE,\n sharedObject: null,\n shareRecipients: null,\n dateShared: DateHelper.subtract(new Date(), DEMO_INSIGHT_DAYS_AGO, 'days').toISOString()\n};\n\nconst DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_ACTION: ActionOptions = {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n className: 'btn btn-outline-dark'\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"background\":\"HAuP3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_ACTION, DEMO_INSIGHTS_SHARE_TABLE_DATA } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nimport styles from './my-shares-demo-insights.scss';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n liteUrl: string;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n breakpoints: Breakpoints;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isStaging = props.liteUrl.includes('staging');\n\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: isStaging ? DEMO_INTERACTIVE_STAGING_ID : DEMO_INTERACTIVE_PROD_ID\n };\n }\n\n function getObjectActions() {\n return [\n {\n ...DEMO_INSIGHTS_ACTION,\n button: !isMobile\n }\n ];\n }\n\n return (\n <div>\n <MySharesTableHeading heading={getPhrase('demoHeading')} isFirst={true} />\n\n <div className={`${styles.background} rounded-3 border-md bg-light-orange mb-4`}>\n <MySharesTableRow\n shareData={{ ...DEMO_INSIGHTS_SHARE_TABLE_DATA, sharedObject: getDemoInteractive() }}\n getObjectActions={getObjectActions}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n breakpoints={props.breakpoints}\n >\n <div className='d-inline-block rounded-pill bg-light-blue text-info font-size-sm mt-1 px-2'>\n <Text namespace={namespace} phrase='demoInsightPill' />\n </div>\n </MySharesTableRow>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myShares.mySharesEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function MySharesEmptyState() {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.MY_VIDEOS_PUBLIC} altText={getPhrase('heading')} />\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.MySharesLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAccessPolicy } from 'libs/shared/hooks/useAccessPolicy';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { InsightsAdminAlert } from 'apps/my-shares/components/insights-admin-alert/InsightsAdminAlert';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\nimport { MySharesTableEmptyState } from 'apps/my-shares/components/my-shares-table/empty-state/MySharesTableEmptyState';\nimport { MySharesTable } from 'apps/my-shares/components/my-shares-table/MySharesTable';\nimport { PartialMySharesTable } from 'apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable';\nimport { MySharesEmptyState } from 'apps/my-shares/views/my-shares/empty-state/MySharesEmptyState';\nimport { getShareObjectActions, getSharesParams } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesViewProps {\n typeId: string | string[];\n}\n\nexport function MySharesView(props: MySharesViewProps) {\n // Shared hooks\n useSetPageMetadata({ title: getPhrase('myShares') });\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasShareFlowV2, hasClassrooms } = useSettings(null);\n const { isPlugin } = usePluginHelper();\n const breakpoints = useBreakpoints();\n const { accessPolicy } = useAccessPolicy();\n\n const sharesParams = getSharesParams(props.typeId);\n\n // Local variables\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMySharesLanding) ||\n hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2;\n const hasInsightsPermission = hasShareFlowV2 && hasPermissions(PermissionName.ViewInsights);\n const showDemoInsight = accessPolicy?.metadata?.hasDemoInsights;\n\n // Flight fetching\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(showDemoInsight &&\n InsightsDemoRequests.interactiveMetadata());\n\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch,\n params: {\n type: [ ShareType.Link, ShareType.LegacyDirect ]\n }\n });\n\n React.useEffect(() => {\n if (!(hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2))\n Core.LocationUtils.PageLoad('/');\n }, [shouldFetch]);\n\n if (!shouldFetch)\n return <MySharesEmptyState />;\n\n return (\n <div className='px-3'>\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n />\n\n <div className='border-bottom pb-2 mb-4'>\n <h1 className='mb-2'><Text namespace={namespace} phrase='myShares' /></h1>\n {hasClassrooms && (\n <p className='mb-0'>\n <Text namespace={namespace} phrase='classroomsHint'/>\n &nbsp;\n <AppLink\n appLink={{ application: AppChannels.CLASSROOMS, action: Actions.Classrooms.HOME }}\n className='info-link'\n >\n <Text namespace={namespace} phrase='classroomsCta'/>\n </AppLink>\n </p>\n )}\n </div>\n\n {showDemoInsight && demoInteractive.data &&\n <MySharesDemoInsight\n demoInteractive={demoInteractive.data}\n liteUrl={config.data?.liteUrl}\n breakpoints={breakpoints}\n imageCdnUrl={shareData.imageCdnUrl}\n yearGroups={yearGroups.data}\n />\n }\n\n {(() => {\n if (shareData.showPartialLoading)\n return <PartialMySharesTable />;\n\n if (!shareData.sentShares.length)\n return (\n <MySharesTableEmptyState />\n );\n\n return (\n <>\n <MySharesTable\n sentShares={shareData.sentShares}\n sharedObjects={shareData.sharedObjects.items}\n shareRecipients={shareData.shareRecipients.items}\n interactivesPendingReview={shareData.interactivesPendingReview.itemsArr}\n getObjectActions={row => getShareObjectActions({\n share: row.share,\n sharedObject: row.sharedObject,\n audienceParams: sharesParams.audienceAppLinkParams,\n hasInsights: hasInsightsPermission,\n isPlugin,\n breakpoints\n })}\n groupByDateShared\n breakpoints={breakpoints}\n hasDemoInsights={showDemoInsight}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n />\n {(shareData.hasMore || shareData.isFetching) &&\n <InfiniteScrollFooter\n isFetching={shareData.isFetching}\n fetchNext={shareData.fetchNext}\n nextCursor={shareData.nextCursor}\n />\n }\n </>\n );\n })()}\n </div>\n );\n}\n"],"names":["SharePrivacy","InsightsDemoRequests","interactive","url","key","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","namespace","InsightsAdminAlert","props","storage","show","setShow","hasAnalytics","role","className","phrase","href","video","analyticsUrl","videoRoute","typeId","id","getAnalyticsUrl","target","svgName","onClick","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID","getPhrase","DEMO_INSIGHTS_SHARE","type","privacy","objectId","objectTypeId","viewCount","accessCount","dateCreated","Date","toISOString","expireDate","link","shortenedEmbedUrl","shortenedUrl","shareId","ownerCustomerId","ownerId","recipients","options","preventScrubbing","immediateFeedback","DEMO_INSIGHTS_SHARE_TABLE_DATA","share","sharedObject","shareRecipients","dateShared","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_ACTION","label","appLink","group","LanguageService","MySharesDemoInsight","isStaging","liteUrl","includes","isMobile","breakpoints","xs","sm","heading","isFirst","MySharesTableRow","shareData","demoInteractive","getObjectActions","button","imageCdnUrl","yearGroups","Text","MySharesEmptyState","EmptyState","src","ImageUrls","altText","text","analyticsData","analyticsOptions","actionType","location","entity","workflowPhase","descriptor","SignUp","MySharesView","useSetPageMetadata","title","usePermissions","hasPermissions","hasLocalPermissions","useSettings","hasShareFlowV2","hasClassrooms","isPlugin","usePluginHelper","useBreakpoints","accessPolicy","useAccessPolicy","sharesParams","shouldFetch","PermissionName","hasInsightsPermission","showDemoInsight","metadata","hasDemoInsights","config","ConfigRequests","currentUser","UserRequests","data","isAuthenticated","CustomerRequests","customerId","useSharesTable","interactiveInsights","params","ShareType","analyticsWebUrl","AppLink","showPartialLoading","PartialMySharesTable","sentShares","length","MySharesTable","sharedObjects","items","interactivesPendingReview","itemsArr","row","audienceParams","audienceAppLinkParams","hasInsights","groupByDateShared","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","MySharesTableEmptyState"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7103],{34079:(e,t,n)=>{n.d(t,{O:()=>s});var r=n(32735),a=n(23481),o=n(40782),i=n(36532),l=a.T.encloseNamespace("interactives.pendingIndicator");function c(e){var t="d-flex align-items-center h-100";return t+=e.showLabel?" justify-content-between":" justify-content-center",e.className&&(t+=" ".concat(e.className)),t}function s(e){var t=function(){return r.createElement("div",{className:c(e)},!!e.showLabel&&r.createElement("em",null,l("pending")),r.createElement(o.O,null))};return e.title?r.createElement(i.u,{title:e.title,spanHack:!0,spanHackClassName:e.tooltipClassName||"h-100 w-100 d-flex align-items-center"},r.createElement(t,null)):r.createElement(t,null)}},97364:(e,t,n)=>{n.d(t,{C:()=>o,P:()=>a});var r=n(94892);function a(e,t){switch(e){case"score_desc":return[{id:t,desc:!0}];case"score_asc":return[{id:t,desc:!1}];default:return[]}}function o(e,t){return"marking_required"===e&&!t.awaitingMarking||"helping_hand"===e&&t.percentCorrect>=r.T.HIGH||"not_completed"===e&&!t.unanswered}},6748:(e,t,n)=>{n.d(t,{i:()=>I});var r=n(32735),a=n(42648),o=n(35509),i=n(91967),l=n(15611),c=n(17808),s=n(1287),u=n(83914),d=n(90281),m={opacity:"0.8",cursor:"grabbing"},f=n(35223);function v(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return 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}}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}function p(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 b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var S=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 w(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 E(e){var t,n,a,u,d,f,g,h,p={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(p.initialState={selectedRowIds:(g=e.initialSelectedRowIds,h={},g.forEach(function(e){return h[e]=!0}),h)}),e.getRowId&&(p.getRowId=e.getRowId);var y,S=o.useTable.apply(void 0,[p].concat((y=function(e){var t=[o.useSortBy,o.useRowSelect,"flex"===e.layout?o.useFlexLayout:o.useBlockLayout];return e.allowFiltering&&(t=[].concat(v(t),[o.useFilters])),e.allowGlobalFiltering&&(t=[].concat(v(t),[o.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return b(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 b(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}(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.")}()))),E=S.getTableProps,I=S.getTableBodyProps,j=S.headerGroups,k=S.rows,O=S.prepareRow,R=S.toggleAllRowsSelected,A=S.setGlobalFilter,C=S.setHiddenColumns,N=S.state.sortBy;function L(){return!k.length&&e.emptyState?e.emptyState:k.map(function(t){O(t);var n=function(t){var n,r,a,o,l,c=i.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)&&(c+=" ".concat(null===(l=e.theme)||void 0===l?void 0:l.selectedRow)),e.onSelectRow&&(c+=" cursor-pointer"),e.enableSortableRows&&(c+=" cursor-grab"),c}(t),a=!!e.getRowAppLink&&e.getRowAppLink(t);function o(){e.onSelectRow&&(e.allowSelectMultipleRows||R(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,i){var c=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,i);return a?r.createElement("div",{role:"row",key:t.id},r.createElement(l.F,Object.assign({},e,c,{className:n,appLink:a}),F(t))):r.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:n,onClick:o}),F(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 c(e,t)})}):c(u)})}function F(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(N)},[N]),r.useEffect(function(){e.globalFilter&&A(e.globalFilter)},[e.globalFilter]),r.useEffect(function(){e.hiddenColumns&&C(e.hiddenColumns)},[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},E(),{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:""},j.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(w,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(w,{column:t,theme:e.theme}))}))})),r.createElement("div",Object.assign({},I(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?r.createElement(c.Q,{ids:k.map(function(e){return e.original.id}),getDragOverlay:function(t){var n,a,o=k.findIndex(function(e){return e.original.id===t}),i=k[o];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,a="g-0 ",n&&(a+=n.row),a),style:m}),F(i))},onSortEnd:e.onSortingRowsEnd},L()):L()))}function I(e){var t=e.enableSlider,n=e.scrollIncrement,o=e.scrollable,l=S(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,n=r.useRef(null),a=(e=r.useState(p(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,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(e,t)||g(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],l=a[1],c=i.q.throttle(function(){l(p(n))},200),s=r.useCallback(function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(l(p(n)),e.addEventListener("scroll",c)),n.current=e},[]);return r.useEffect(function(){(null==n?void 0:n.current)&&l(p(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=c.ref,u=c.scrollState,m=c.scroll;if(o)return r.createElement(a.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:y.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(E,Object.assign({},l)));if(!t)return r.createElement(E,Object.assign({},l));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(E,Object.assign({},l))),r.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}I.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},54405:(e,t,n)=>{n.d(t,{X:()=>r});var r={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},9566:(e,t,n)=>{n.d(t,{G6:()=>m,GJ:()=>f,VE:()=>g});var r=n(23481),a=n(110),o=n(33518),i=n(2510),l=n(4594),c=n(35223),s=n(14070),u=n(97291),d=r.T.encloseNamespace("myShares.demoInsights"),m={type:i.y.Link,privacy:o.e.JustMySchool,objectId:"0",objectTypeId:l.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},f={share:m,sharedObject:null,shareRecipients:null,dateShared:a.O.subtract(new Date,7,"days").toISOString()},v={application:u.O.MY_SHARES,action:s.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},g={svgName:c.vn.Analytics,label:d("demoInsights"),appLink:v,group:"insights",className:"btn btn-outline-dark"}},71519:(e,t,n)=>{n.r(t),n.d(t,{InteractiveInsightsQuestionsDemoView:()=>b});var r=n(32735),a=n(23481),o=n(2948),i=n(20354),l=n(26025),c=n(38143),s=n(39151),u=n(54405),d=n(93322),m=n(79612),f=n(9540),v=n(48705),g=n(9566),h=n(10447);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 y=a.T.encloseNamespace("shared.interactiveInsightsQuestionsView");function b(e){var t,n,a,b,S,w=(b=(0,o.D)(c.g.ANONYMISE_USERS),S=1,function(e){if(Array.isArray(e))return e}(b)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(b,S)||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}}(b,S)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,d.F)();var E=i.a.useBasicFetch(s.L.config()),I=i.a.useBasicFetch(u.X.interactiveMetadata()),j=i.a.useBasicFetch(u.X.interactive()),k=l.B.getAudienceAppLinkParams(),O=l.B.getDateRangeAppLinkParams(),R=i.a.useBasicFetch(u.X.interactiveResults());(0,m.M)({title:I.data?y("pageTitle",{video:null===(t=I.data)||void 0===t?void 0:t.name}):null});var A=j.data&&I.data&&!!R.data,C=Object.assign(Object.assign({},k),O);return r.createElement("div",{className:"px-3"},r.createElement(f.j,{tabs:(0,h.aq)(null===(n=I.data)||void 0===n?void 0:n.id,"questions",C),video:I.data,dateRangeAppLinkParams:O,share:Object.assign(Object.assign({},g.G6),{objectId:null===(a=I.data)||void 0===a?void 0:a.id}),yearGroups:[],isDemo:!0}),r.createElement(v.x,{interactive:j.data,interactiveMetadata:I.data,interactionId:e.interactionId,config:E.data,sortBy:e.sortBy,isFetching:R.isFetching||j.isFetching,anonymiseUsers:w,results:R.data,hasDataLoaded:A,isDemo:!0}))}}}]);
2
- //# sourceMappingURL=7103-3b181ec69b-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2878],{34079:(e,t,n)=>{n.d(t,{O:()=>s});var r=n(32735),a=n(23481),o=n(40782),i=n(36532),l=a.T.encloseNamespace("interactives.pendingIndicator");function c(e){var t="d-flex align-items-center h-100";return t+=e.showLabel?" justify-content-between":" justify-content-center",e.className&&(t+=" ".concat(e.className)),t}function s(e){var t=function(){return r.createElement("div",{className:c(e)},!!e.showLabel&&r.createElement("em",null,l("pending")),r.createElement(o.O,null))};return e.title?r.createElement(i.u,{title:e.title,spanHack:!0,spanHackClassName:e.tooltipClassName||"h-100 w-100 d-flex align-items-center"},r.createElement(t,null)):r.createElement(t,null)}},97364:(e,t,n)=>{n.d(t,{C:()=>o,P:()=>a});var r=n(94892);function a(e,t){switch(e){case"score_desc":return[{id:t,desc:!0}];case"score_asc":return[{id:t,desc:!1}];default:return[]}}function o(e,t){return"marking_required"===e&&!t.awaitingMarking||"helping_hand"===e&&t.percentCorrect>=r.T.HIGH||"not_completed"===e&&!t.unanswered}},6748:(e,t,n)=>{n.d(t,{i:()=>k});var r=n(32735),a=n(42648),o=n(35509),i=n(91967),l=n(15611),c=n(17808),s=n(1287),u=n(83914),d=n(90281),m={opacity:"0.8",cursor:"grabbing"},f=n(35223);function v(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return 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}}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}function p(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 b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var S=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 w(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 E(e){var t,n,a,u,d,f,g,h,p={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(p.initialState={selectedRowIds:(g=e.initialSelectedRowIds,h={},g.forEach(function(e){return h[e]=!0}),h)}),e.getRowId&&(p.getRowId=e.getRowId);var y,S=o.useTable.apply(void 0,[p].concat((y=function(e){var t=[o.useSortBy,o.useRowSelect,"flex"===e.layout?o.useFlexLayout:o.useBlockLayout];return e.allowFiltering&&(t=[].concat(v(t),[o.useFilters])),e.allowGlobalFiltering&&(t=[].concat(v(t),[o.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return b(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 b(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}(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.")}()))),E=S.getTableProps,k=S.getTableBodyProps,I=S.headerGroups,j=S.rows,O=S.prepareRow,R=S.toggleAllRowsSelected,A=S.setGlobalFilter,C=S.setHiddenColumns,N=S.state.sortBy;function L(){return!j.length&&e.emptyState?e.emptyState:j.map(function(t){O(t);var n=function(t){var n,r,a,o,l,c=i.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)&&(c+=" ".concat(null===(l=e.theme)||void 0===l?void 0:l.selectedRow)),e.onSelectRow&&(c+=" cursor-pointer"),e.enableSortableRows&&(c+=" cursor-grab"),c}(t),a=!!e.getRowAppLink&&e.getRowAppLink(t);function o(){e.onSelectRow&&(e.allowSelectMultipleRows||R(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,i){var c=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,i);return a?r.createElement("div",{role:"row",key:t.id},r.createElement(l.F,Object.assign({},e,c,{className:n,appLink:a}),F(t))):r.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:n,onClick:o}),F(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 c(e,t)})}):c(u)})}function F(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(N)},[N]),r.useEffect(function(){e.globalFilter&&A(e.globalFilter)},[e.globalFilter]),r.useEffect(function(){e.hiddenColumns&&C(e.hiddenColumns)},[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},E(),{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:""},I.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(w,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(w,{column:t,theme:e.theme}))}))})),r.createElement("div",Object.assign({},k(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?r.createElement(c.Q,{ids:j.map(function(e){return e.original.id}),getDragOverlay:function(t){var n,a,o=j.findIndex(function(e){return e.original.id===t}),i=j[o];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,a="g-0 ",n&&(a+=n.row),a),style:m}),F(i))},onSortEnd:e.onSortingRowsEnd},L()):L()))}function k(e){var t=e.enableSlider,n=e.scrollIncrement,o=e.scrollable,l=S(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,n=r.useRef(null),a=(e=r.useState(p(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,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(e,t)||g(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],l=a[1],c=i.q.throttle(function(){l(p(n))},200),s=r.useCallback(function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(l(p(n)),e.addEventListener("scroll",c)),n.current=e},[]);return r.useEffect(function(){(null==n?void 0:n.current)&&l(p(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=c.ref,u=c.scrollState,m=c.scroll;if(o)return r.createElement(a.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:y.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(E,Object.assign({},l)));if(!t)return r.createElement(E,Object.assign({},l));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(E,Object.assign({},l))),r.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}k.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},54405:(e,t,n)=>{n.d(t,{X:()=>r});var r={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},9566:(e,t,n)=>{n.d(t,{G6:()=>m,GJ:()=>f,VE:()=>g});var r=n(23481),a=n(110),o=n(33518),i=n(2510),l=n(4594),c=n(35223),s=n(14070),u=n(97291),d=r.T.encloseNamespace("myShares.demoInsights"),m={type:i.y.Link,privacy:o.e.JustMySchool,objectId:"0",objectTypeId:l.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},f={share:m,sharedObject:null,shareRecipients:null,dateShared:a.O.subtract(new Date,7,"days").toISOString()},v={application:u.O.MY_SHARES,action:s.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},g={svgName:c.vn.Analytics,label:d("demoInsights"),appLink:v,group:"insights",className:"btn btn-outline-dark"}},71519:(e,t,n)=>{n.r(t),n.d(t,{InteractiveInsightsQuestionsDemoView:()=>b});var r=n(32735),a=n(23481),o=n(2948),i=n(20354),l=n(26025),c=n(38143),s=n(39151),u=n(54405),d=n(93322),m=n(79612),f=n(63619),v=n(48705),g=n(9566),h=n(10447);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 y=a.T.encloseNamespace("shared.interactiveInsightsQuestionsView");function b(e){var t,n,a,b,S,w=(b=(0,o.D)(c.g.ANONYMISE_USERS),S=1,function(e){if(Array.isArray(e))return e}(b)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(b,S)||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}}(b,S)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,d.F)();var E=i.a.useBasicFetch(s.L.config()),k=i.a.useBasicFetch(u.X.interactiveMetadata()),I=i.a.useBasicFetch(u.X.interactive()),j=l.B.getAudienceAppLinkParams(),O=l.B.getDateRangeAppLinkParams(),R=i.a.useBasicFetch(u.X.interactiveResults());(0,m.M)({title:k.data?y("pageTitle",{video:null===(t=k.data)||void 0===t?void 0:t.name}):null});var A=I.data&&k.data&&!!R.data,C=Object.assign(Object.assign({},j),O);return r.createElement("div",{className:"px-3"},r.createElement(f.j,{tabs:(0,h.aq)(null===(n=k.data)||void 0===n?void 0:n.id,"questions",C),video:k.data,dateRangeAppLinkParams:O,share:Object.assign(Object.assign({},g.G6),{objectId:null===(a=k.data)||void 0===a?void 0:a.id}),yearGroups:[],markingRequired:!0,isDemo:!0}),r.createElement(v.x,{interactive:I.data,interactiveMetadata:k.data,interactionId:e.interactionId,config:E.data,sortBy:e.sortBy,isFetching:R.isFetching||I.isFetching,anonymiseUsers:w,results:R.data,hasDataLoaded:A,isDemo:!0}))}}}]);
2
+ //# sourceMappingURL=2878-487c4a8e1a-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/2878-487c4a8e1a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/pending-indicator/PendingIndicator.tsx","file:///app/packages/libs/shared/src/apps/analytics/utils/StudentTableUtils.ts","file:///app/packages/libs/shared/src/constants/DragOverlayStyles.ts","file:///app/packages/libs/shared/src/components/table/TableUtils.ts","file:///app/packages/libs/shared/src/components/table/table.scss","file:///app/packages/libs/shared/src/components/table/Table.tsx","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/demo/questions/InteractiveInsightsQuestionsDemoView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'interactives.pendingIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getClassName(props: PendingIndicatorProps): string {\n let className = 'd-flex align-items-center h-100';\n\n className += props.showLabel ? ' justify-content-between' : ' justify-content-center';\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface PendingIndicatorProps {\n title?: string;\n className?: string;\n showLabel?: boolean;\n tooltipClassName?: string;\n}\n\nexport function PendingIndicator(props: PendingIndicatorProps): JSX.Element {\n const Indicator = () => (\n <div className={getClassName(props)}>\n {!!props.showLabel &&\n <em>{getPhrase('pending')}</em>\n }\n <PercentageIndicator />\n </div>\n );\n\n if (!props.title)\n return <Indicator />;\n\n return (\n <Tooltip title={props.title} spanHack spanHackClassName={props.tooltipClassName || 'h-100 w-100 d-flex align-items-center'}>\n <Indicator />\n </Tooltip>\n );\n}","import { SortingRule } from 'react-table';\n\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { ScoreThresholdInsights } from 'libs/shared/constants/ScoreThresholds';\n\nexport type SortStudentsBy = 'score_desc' | 'score_asc';\n\nexport function getSortStudents(sortBy: SortStudentsBy, id: string): SortingRule<any>[] {\n switch (sortBy) {\n case 'score_desc': return [{ id, desc: true }];\n case 'score_asc': return [{ id, desc: false }];\n default: return [];\n }\n}\n\nexport type FilterStudentsBy = 'not_completed' | 'marking_required' | 'helping_hand';\n\nexport function shouldFilterStudent(filter: FilterStudentsBy, summary: ResultsSummary): boolean {\n if (filter === 'marking_required' && !summary.awaitingMarking)\n return true;\n\n if (filter === 'helping_hand' && summary.percentCorrect >= ScoreThresholdInsights.HIGH)\n return true;\n\n if (filter === 'not_completed' && !summary.unanswered)\n return true;\n \n return false;\n}\n\n","export const DragOverlayStyles = { opacity: '0.8', cursor: 'grabbing' };","import React from 'react';\nimport { PluginHook, useBlockLayout, useFilters, useFlexLayout, useGlobalFilter, useRowSelect, useSortBy } from 'react-table';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface PluginOptions {\n allowFiltering?: boolean;\n allowGlobalFiltering?: boolean;\n layout?: 'flex' | 'block';\n}\n\nexport function getPlugins<T extends HashObject>(props: PluginOptions): PluginHook<T>[] {\n let plugins: PluginHook<T>[] = [\n useSortBy,\n useRowSelect,\n props.layout === 'flex' ? useFlexLayout : useBlockLayout\n ];\n\n if (props.allowFiltering)\n plugins = [\n ...plugins,\n useFilters\n ];\n\n if (props.allowGlobalFiltering)\n plugins = [\n ...plugins,\n useGlobalFilter\n ];\n\n return plugins;\n}\n\nexport function getSelectedRowIds(ids: string[]): Record<string, boolean> {\n const idHash: Record<string, boolean> = {};\n\n ids.forEach(id => idHash[id] = true);\n\n return idHash;\n}\n\ninterface TableScrollState {\n canScrollLeft: boolean;\n canScrollRight: boolean;\n}\n\nfunction calculateScrollState(ref: React.MutableRefObject<HTMLDivElement>): TableScrollState {\n const canScrollLeft = ref.current?.scrollLeft > 0;\n const canScrollRight = (ref.current?.scrollLeft + 1) < ref.current?.scrollWidth - ref.current?.clientWidth;\n\n return { canScrollLeft, canScrollRight };\n}\n\ninterface UseTableScroll {\n ref: (el: HTMLDivElement) => void;\n scrollState: TableScrollState;\n scroll: (scrollBy: number) => void;\n}\n\nexport function useTableScroll(): UseTableScroll {\n const elRef = React.useRef<HTMLDivElement>(null);\n const [ scrollState, setScrollState ] = React.useState<TableScrollState>(calculateScrollState(elRef));\n\n function onScroll(): void {\n setScrollState(calculateScrollState(elRef));\n }\n\n function scroll(scrollBy: number): void {\n elRef.current?.scrollBy({ left: scrollBy, top: 0, behavior: 'smooth' });\n }\n\n const throttledOnScroll = FunctionHelper.throttle(onScroll, 200);\n\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (elRef.current) {\n elRef.current?.removeEventListener('scroll', throttledOnScroll);\n }\n\n if (el) {\n setScrollState(calculateScrollState(elRef));\n el.addEventListener('scroll', throttledOnScroll);\n }\n\n elRef.current = el;\n }, []);\n\n React.useEffect(() => {\n if (elRef?.current) {\n setScrollState(calculateScrollState(elRef));\n }\n }, [elRef]);\n\n return { ref, scrollState, scroll };\n}","// extracted by mini-css-extract-plugin\nexport default {\"sortIndicator\":\"gFhu0\",\"scrollContainer\":\"sWUp9\",\"scrollbarTrack\":\"Vn2qM\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport {\n Cell,\n Column as BaseColumn,\n HeaderGroup,\n HeaderProps as BaseHeaderProps,\n IdType,\n Row,\n SortingRule,\n TableOptions,\n TableRowProps,\n useTable } from 'react-table';\nimport { DragEndEvent } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { PropsWithSortableItemProps, SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { DragOverlayStyles } from 'libs/shared/constants/DragOverlayStyles';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getPlugins, getSelectedRowIds, useTableScroll } from './TableUtils';\n\nimport styles from './table.scss';\n\nexport interface TableTheme {\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string | ((row: Row<any>) => string);\n selectedRow?: string;\n cell?: string | ((row?: Row<any>, cell?: Cell<any, any>) => string);\n sortIndicator?: string;\n}\n\nexport type HeaderProps<T extends HashObject> = BaseHeaderProps<T> & {\n renderSortIndicator: () => void;\n}\n\nexport type Column<T extends HashObject> = BaseColumn<T> & {\n hideSortIndicator?: boolean;\n}\n\ninterface SortIndicatorProps<T extends HashObject> {\n column: HeaderGroup<T>;\n theme?: TableTheme;\n}\n\nfunction SortIndicator<T extends HashObject>(props: SortIndicatorProps<T>): JSX.Element {\n if (!props.column.canSort)\n return <></>;\n\n return (\n <span\n className={\n `${styles.sortIndicator}\n ${!props.column.isSorted ? 'text-secondary' : ''}\n ${props.theme?.sortIndicator ?? ''}`\n }\n >\n <SvgContainer\n svgName={(props.column.isSortedDesc || !props.column.isSorted)\n ? cvSvgLibrary.ArrowRight\n : cvSvgLibrary.ArrowLeft\n }\n size={SvgContainerSize.Small}\n />\n </span>\n );\n}\n\ninterface BaseTableProps<T extends HashObject> {\n /**\n * Must be memoized.\n */\n data: T[];\n\n /**\n * Must be memoized.\n * \n * For documentation on Column Options, see https://react-table.tanstack.com/docs/api/useTable#column-options\n */\n columns: Column<T>[];\n\n theme?: TableTheme;\n\n onSelectRow?: (row: Row<T>) => void;\n\n onSelectCell?: (cell: Cell<T>) => void;\n\n onRowMouseOver?: (row: Row<T>) => void;\n\n onRowMouseLeave?: (row: Row<T>) => void;\n\n allowSelectMultipleRows?: boolean;\n\n initialSelectedRowIds?: string[];\n\n getRowId?: (row: T) => string;\n\n getRowAppLink?: (row: Row<T>) => Core.AppLink;\n\n enableSort?: boolean;\n\n manualSort?: boolean;\n\n onSort?: (sortingRule: SortingRule<T>[]) => void;\n \n // Opt-in to utilise react-table's useFilter hook.\n allowFiltering?: boolean;\n\n // Opt-in to utilise react-table's useGlobalFilter hook.\n allowGlobalFiltering?: boolean;\n\n // Use either a flex layout or a block layout. Default is flex.\n layout?: 'flex' | 'block';\n\n // Used by useGlobalFilter hook, needs to be enabled by prop above.\n globalFilter?: string;\n\n // Set initial state of hidden columns in react-table.\n hiddenColumns?: IdType<T>[];\n\n // Determine whether hidden columns should be preserved on a table update event.\n autoResetHiddenColumns?: boolean;\n\n // Determine whether sort order state should be preserved on a table update event.\n autoResetSortBy?: boolean;\n\n // Determine whether rows are sortable by drag and drop\n enableSortableRows?: boolean;\n\n onSortingRowsEnd?: (event: DragEndEvent) => void;\n\n // Set initial state of sorting in react-table\n initialSortBy?: SortingRule<T>[];\n\n emptyState?: JSX.Element;\n}\n \ntype SortableRowProps = PropsWithSortableItemProps<TableRowProps>;\n\nfunction BaseTable<T extends HashObject>(props: BaseTableProps<T>): JSX.Element {\n const tableOptions: TableOptions<T> = {\n columns: props.columns,\n data: props.data,\n disableSortBy: !props.enableSort,\n manualSortBy: props.manualSort,\n autoResetHiddenColumns: props.autoResetHiddenColumns,\n autoResetSortBy: props.autoResetSortBy,\n initialState: {\n sortBy: props.initialSortBy || []\n }\n };\n\n if (props.initialSelectedRowIds)\n tableOptions.initialState = { selectedRowIds: getSelectedRowIds(props.initialSelectedRowIds) };\n\n if (props.getRowId)\n tableOptions.getRowId = props.getRowId;\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n toggleAllRowsSelected,\n setGlobalFilter,\n setHiddenColumns,\n state: { sortBy }\n } = useTable<T>(tableOptions, ...getPlugins<T>({ ...props }));\n\n function getTableRowsClass(row: Row<T>) {\n let className = FunctionHelper.isFunction(props.theme?.row)\n ? props.theme.row(row)\n : props.theme?.row ?? '';\n\n if (row.isSelected && props.theme?.selectedRow)\n className += ` ${props.theme?.selectedRow}`;\n\n if (props.onSelectRow)\n className += ' cursor-pointer';\n\n if (props.enableSortableRows)\n className += ' cursor-grab';\n\n return className;\n }\n\n function renderTableRows() {\n if (!rows.length && props.emptyState)\n return props.emptyState;\n \n return rows.map(row => {\n prepareRow(row);\n \n const className = getTableRowsClass(row);\n const rowAppLink = !!props.getRowAppLink && props.getRowAppLink(row);\n\n function onClickRow(): void {\n if (!props.onSelectRow)\n return;\n\n if (!props.allowSelectMultipleRows)\n toggleAllRowsSelected(false);\n \n props.onSelectRow(row);\n row.toggleRowSelected(true);\n }\n\n function getSortableProps(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any) {\n if ('dragAttributes' in props && 'dragListeners' in props) {\n return {\n ...props.dragAttributes,\n ...props.dragListeners,\n 'aria-roledescription': 'Sortable row',\n ref\n };\n }\n\n return {};\n }\n\n function renderRow(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any): JSX.Element {\n const sortableProps = getSortableProps(props, ref);\n\n if (rowAppLink) {\n return (\n <div\n role='row'\n key={row.id}\n >\n <AppLink\n {...props}\n {...sortableProps}\n className={className}\n appLink={rowAppLink}\n >\n {renderCells(row)}\n </AppLink>\n </div>\n );\n }\n\n return (\n <div\n {...props}\n {...sortableProps}\n key={row.id}\n role='row'\n className={className}\n onClick={onClickRow}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n const rowProps = row.getRowProps();\n\n if (props.enableSortableRows) {\n return (\n <SortableItemWrapper\n id={row.original.id}\n key={row.id}\n childProps={rowProps}\n childComponent={React.forwardRef(\n (props: SortableRowProps, ref: React.LegacyRef<HTMLDivElement>) => (renderRow(props, ref))\n )}\n />\n );\n }\n\n return renderRow(rowProps);\n });\n }\n\n function getDragOverlayClassName(theme: TableTheme): string {\n let className = 'g-0 ';\n\n if (theme)\n className += theme.row;\n\n return className;\n }\n\n function getDragOverlay(id: string) {\n const rowIndex = rows.findIndex(item => item.original.id === id);\n const row = rows[rowIndex];\n \n return (\n <div\n {...props}\n className={getDragOverlayClassName(props.theme)}\n style={DragOverlayStyles}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n function getCellClassName(row: Row<T>, cell: Cell<T>): string {\n let cellClassName = '';\n\n if (typeof props.theme?.cell === 'function')\n cellClassName = props.theme.cell(row, cell);\n\n if (typeof props.theme?.cell === 'string')\n cellClassName = props.theme.cell;\n\n if (props.onSelectCell)\n cellClassName += ' cursor-pointer';\n\n return cellClassName;\n }\n\n function renderCells(row: Row<T>): JSX.Element[] {\n return row.cells.map(cell => {\n const cellClassName = getCellClassName(row, cell);\n\n function onClickCell(): void {\n props.onSelectCell && props.onSelectCell(cell);\n }\n\n return (\n <div key={cell.column.id} {...cell.getCellProps()} className={cellClassName} onClick={onClickCell} >\n {cell.render('Cell')}\n </div>\n );\n });\n }\n\n React.useEffect(() => {\n if (!props.onSort)\n return;\n\n props.onSort(sortBy);\n }, [sortBy]);\n\n React.useEffect(() => {\n if (!props.globalFilter)\n return;\n\n setGlobalFilter(props.globalFilter);\n }, [props.globalFilter]);\n\n React.useEffect(() => {\n if (!props.hiddenColumns)\n return;\n\n setHiddenColumns(props.hiddenColumns);\n }, [props.hiddenColumns && props.hiddenColumns.length]);\n\n return (\n <div {...getTableProps()} className={props.theme?.table ?? ''}>\n <div className={props.theme?.header ?? ''}>\n {headerGroups.map(headerGroup => (\n <div {...headerGroup.getHeaderGroupProps()} className={props.theme?.headerRow ?? ''}>\n {headerGroup.headers.map(column => (\n <div {...column.getHeaderProps(column.getSortByToggleProps())} className={props.theme?.headerCell ?? ''}>\n {column.render('Header', { renderSortIndicator: () => <SortIndicator column={column} theme={props.theme} /> })}\n {!(column as Column<T>).hideSortIndicator &&\n <SortIndicator column={column} theme={props.theme} />\n }\n </div>\n ))}\n </div>\n ))}\n </div>\n <div {...getTableBodyProps()} className={props.theme?.body ?? ''}>\n { props.enableSortableRows ? (\n <SortableContainerWrapper\n ids={rows.map(row => row.original.id)}\n getDragOverlay={getDragOverlay}\n onSortEnd={props.onSortingRowsEnd}\n >\n {renderTableRows()}\n </SortableContainerWrapper>\n ) : (\n renderTableRows()\n )}\n </div>\n </div>\n );\n}\n\ninterface TableProps<T extends HashObject> extends BaseTableProps<T> {\n enableSlider?: boolean;\n scrollIncrement?: number;\n scrollContainerClassName?: string;\n scrollable?: boolean;\n initialSortBy?: SortingRule<T>[];\n}\n\nTable.defaultProps = {\n scrollIncrement: 250,\n scrollable: false,\n layout: 'flex'\n};\n\nexport function Table<T extends HashObject>(props: TableProps<T>): JSX.Element {\n const { enableSlider, scrollIncrement, scrollable, ...tableProps } = props;\n\n const { ref, scrollState, scroll } = useTableScroll();\n\n if (scrollable) {\n return (\n <Scrollbars\n renderTrackHorizontal={() => <div className={styles.scrollbarTrack} />}\n autoHeightMax={10000}\n autoHeight\n >\n <BaseTable {...tableProps} />\n </Scrollbars>\n );\n }\n\n if (!enableSlider)\n return <BaseTable {...tableProps} />;\n\n function onClickScroll(direction: 'left' | 'right'): void {\n scroll(scrollIncrement * (direction === 'right' ? 1 : -1));\n }\n\n return (\n <div className='mx-n4 overflow-x-hidden overflow-y-hidden'>\n <div className='px-4'>\n <div className='position-relative'>\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => onClickScroll('left')}\n hide={!scrollState.canScrollLeft}\n />\n <div className={`${styles.scrollContainer} ${props.scrollContainerClassName}`} ref={ref}>\n <BaseTable {...tableProps } />\n </div>\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => onClickScroll('right')}\n hide={!scrollState.canScrollRight}\n />\n </div>\n </div>\n </div>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEMO_INSIGHT_DAYS_AGO = 7;\n\nexport const DEMO_INSIGHTS_SHARE: Share = {\n type: ShareType.Link,\n privacy: SharePrivacy.JustMySchool,\n objectId: '0',\n objectTypeId: MasterType.Interactive,\n viewCount: 28,\n accessCount: 15,\n dateCreated: new Date().toISOString(),\n expireDate: null,\n link: {\n shortenedEmbedUrl: '',\n shortenedUrl: ''\n },\n shareId: '0',\n ownerCustomerId: 0,\n ownerId: 0,\n recipients: [],\n options: {\n preventScrubbing: false,\n immediateFeedback: false\n }\n};\n\nexport const DEMO_INSIGHTS_SHARE_TABLE_DATA: MySharesTableData = {\n share: DEMO_INSIGHTS_SHARE,\n sharedObject: null,\n shareRecipients: null,\n dateShared: DateHelper.subtract(new Date(), DEMO_INSIGHT_DAYS_AGO, 'days').toISOString()\n};\n\nconst DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_ACTION: ActionOptions = {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n className: 'btn btn-outline-dark'\n};\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InteractiveInsightsQuestions } from 'apps/my-shares/components/interactive-insights-questions/InteractiveInsightsQuestions';\nimport { DEMO_INSIGHTS_SHARE } from 'apps/my-shares/constants/MySharesDemoInsights';\nimport { getInsightsDemoInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.interactiveInsightsQuestionsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsQuestionsViewProps {\n interactionId: string;\n sortBy: SortStudentsBy;\n}\n\nexport function InteractiveInsightsQuestionsDemoView(props: InteractiveInsightsQuestionsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(InsightsDemoRequests.interactive());\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = Flight.useBasicFetch<InteractiveResultSet>(InsightsDemoRequests.interactiveResults());\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n const hasDataLoaded = interactive.data && interactiveMetadata.data && !!results.data;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n return (\n <div className='px-3'>\n <InsightsHeader\n tabs={getInsightsDemoInteractiveTabs(interactiveMetadata.data?.id, 'questions', params)}\n video={interactiveMetadata.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n share={{\n ...DEMO_INSIGHTS_SHARE,\n objectId: interactiveMetadata.data?.id\n }}\n yearGroups={[]}\n markingRequired\n isDemo\n />\n\n <InteractiveInsightsQuestions\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n interactionId={props.interactionId}\n config={config.data}\n sortBy={props.sortBy}\n isFetching={results.isFetching || interactive.isFetching}\n anonymiseUsers={anonymiseUsers}\n results={results.data}\n hasDataLoaded={hasDataLoaded}\n isDemo\n />\n </div>\n );\n}"],"names":["getPhrase","getClassName","props","className","showLabel","PendingIndicator","Indicator","title","spanHack","spanHackClassName","tooltipClassName","getSortStudents","sortBy","id","desc","shouldFilterStudent","filter","summary","awaitingMarking","percentCorrect","unanswered","DragOverlayStyles","opacity","cursor","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","column","canSort","isSorted","theme","sortIndicator","SvgContainer","svgName","isSortedDesc","size","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","initialSortBy","initialSelectedRowIds","selectedRowIds","forEach","getRowId","useTable","plugins","useSortBy","useRowSelect","layout","useFlexLayout","useBlockLayout","allowFiltering","useFilters","allowGlobalFiltering","useGlobalFilter","getPlugins","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","toggleAllRowsSelected","setGlobalFilter","setHiddenColumns","state","renderTableRows","length","emptyState","map","row","FunctionHelper","isSelected","selectedRow","onSelectRow","enableSortableRows","getTableRowsClass","rowAppLink","getRowAppLink","onClickRow","allowSelectMultipleRows","toggleRowSelected","renderRow","sortableProps","dragAttributes","dragListeners","getSortableProps","role","key","AppLink","appLink","renderCells","onClick","rowProps","getRowProps","SortableItemWrapper","original","childProps","childComponent","cells","cell","cellClassName","onSelectCell","getCellClassName","getCellProps","render","onSort","globalFilter","hiddenColumns","table","header","headerGroup","getHeaderGroupProps","headerRow","headers","getHeaderProps","getSortByToggleProps","headerCell","renderSortIndicator","hideSortIndicator","body","SortableContainerWrapper","getDragOverlay","rowIndex","findIndex","item","style","onSortEnd","onSortingRowsEnd","Table","enableSlider","scrollIncrement","scrollable","tableProps","elRef","scrollState","setScrollState","throttledOnScroll","el","removeEventListener","addEventListener","scroll","scrollBy","left","top","behavior","useTableScroll","renderTrackHorizontal","autoHeightMax","autoHeight","onClickScroll","direction","WidgetButton","W","hide","scrollContainerClassName","defaultProps","InsightsDemoRequests","interactive","url","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","DEMO_INSIGHTS_SHARE","type","privacy","objectId","objectTypeId","viewCount","accessCount","dateCreated","Date","toISOString","expireDate","link","shortenedEmbedUrl","shortenedUrl","shareId","ownerCustomerId","ownerId","recipients","options","preventScrubbing","immediateFeedback","DEMO_INSIGHTS_SHARE_TABLE_DATA","share","sharedObject","shareRecipients","dateShared","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_ACTION","label","group","InteractiveInsightsQuestionsDemoView","anonymiseUsers","config","audienceAppLinkParams","dateRangeAppLinkParams","results","video","name","hasDataLoaded","params","tabs","yearGroups","markingRequired","isDemo","interactionId","isFetching"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3057],{27150:(e,t,n)=>{n.d(t,{A:()=>U,$:()=>C});var r=n(32735),a=n(23481),s=n(81886),i=n(15611),l=n(83345),o="userManager.userWizardBackButtons";function c(e){return"status"===e.currentStep?r.createElement(r.Fragment,null):r.createElement(i.F,{className:"btn btn-link me-2",appLink:e.appLinks.userManager},r.createElement(l.x,{namespace:o,phrase:"cancel"}))}var u=n(98269),d=n(24453),m=n(45541),p=n(96728),f="userManager.userWizardHeader";function v(e){var t=(0,m.V)(),n=t.duplicateSets,a=t.hasExistingUsers,s=r.useContext(p.e),o=s.disableNext,c=s.onClickConfirm,v=!!(null==n?void 0:n.length),g=d.O.getCurrentContext().appLink;return g.action===e.appLinks.userUploadStatus.polling.action||g.action===e.appLinks.userUploadStatus.complete.action?r.createElement(r.Fragment,null):function(){switch(g.action){case e.appLinks.userUploadPopup.action:case e.appLinks.userUploadReviewAccounts.action:return!v&&!a;case e.appLinks.userUploadFixDuplicates.action:case e.appLinks.userUploadReviewExistingAccounts.action:return!a;default:return!0}}()?r.createElement(u.Z,{className:o?"disabled":"",variant:"dark",onClick:c,disabled:o},r.createElement(l.x,{namespace:f,phrase:"create"})):r.createElement(i.F,{className:"btn btn-dark ".concat(o?"disabled":""),appLink:function(){switch(g.action){case e.appLinks.userUploadReviewAccounts.action:if(v)return e.appLinks.userUploadFixDuplicates;if(a&&e.canAddExistingUsers)return e.appLinks.userUploadReviewExistingAccounts;case e.appLinks.userUploadFixDuplicates.action:if(a&&e.canAddExistingUsers)return e.appLinks.userUploadReviewExistingAccounts;case e.appLinks.userUploadReviewExistingAccounts.action:if(e.canAddExistingUsers)return e.appLinks.userUploadConfirmation;default:return null}}(),disabled:o},r.createElement(l.x,{namespace:f,phrase:"next"}))}var g=n(19717),h=n(17291),b=n(79352),y=n(76881),E=n(89476);const k={wizardContent:"hHr3C"};var x="userManager.bulkUserUploadWizardLayout",U="bulk:user:upload:nav:lock";function C(e){var t=(0,m.V)(),n=t.users,i=t.setUsers,l=(0,E.f)();return r.useEffect(function(){if(n)return l.lock({id:U,title:a.T.getPhrase(x,"navLockTitle"),text:a.T.getPhrase(x,"navLockBody"),appLinkWhitelist:g.b.getWizardAppLinks(e.appLinks),onConfirmUnlock:function(){i(null)}}),function(){l.unlock(U)};s.Q.C$.trigger(e.appLinks.userManager,{replace:!0})},[]),r.useEffect(function(){(null==n?void 0:n.length)||(l.unlock(U),s.Q.C$.trigger(e.appLinks.userManager,{replace:!0}))},[null==n?void 0:n.length]),n?r.createElement(p.D,null,r.createElement("div",{className:"px-3"},r.createElement(h.C,{title:a.T.getPhrase(x,"bulkUpload"),currentStep:e.currentStep,loaded:!0,continueButton:r.createElement(v,{currentStep:e.currentStep,appLinks:e.appLinks,canAddExistingUsers:e.canAddExistingUsers}),backButton:r.createElement(c,{currentStep:e.currentStep,appLinks:e.appLinks}),breadcrumbs:[{name:a.T.getPhrase(x,"settingsBreadcrumb"),appLink:e.appLinks.settings},{name:a.T.getPhrase(x,e.userType===y.Y.Learner?"studentManager":"staffManager"),appLink:e.appLinks.userManager},{name:a.T.getPhrase(x,"bulkUpload"),active:!0}]}),r.createElement("div",{className:"row g-0"},r.createElement("div",{className:"col-2"},r.createElement(b.a,{steps:g.b.getSteps(e.userType,e.canAddExistingUsers),currentStep:e.currentStep})),r.createElement("div",{className:"col-10 ".concat(k.wizardContent)},e.children)))):r.createElement(r.Fragment,null)}},82780:(e,t,n)=>{n.d(t,{m:()=>d});var r=n(32735),a=n(23481),s=n(37967),i=n(85402),l=n(76314),o=n(83657),c=n(35223),u="userManager.bulkUserActionsUserItem";function d(e){return r.createElement("li",{className:"d-flex align-items-center p-2"},r.createElement(l.u,{user:e.user,imageCdnUrl:e.imageCdnUrl}),r.createElement(s.t,{user:e.user}),r.createElement(i.H,{userType:e.userType,user:e.user}),e.customBadge&&e.customBadge(),e.onClickRemoveUser&&r.createElement(o.e,{actions:[{svgName:c.vn.Close,className:"btn btn-link svg-container",tooltip:a.T.getPhrase(u,"removeUser"),onClick:function(){return e.onClickRemoveUser(e.user)},button:!0}]}))}},8612:(e,t,n)=>{n.d(t,{G:()=>a});var r=n(32735);function a(e){return r.createElement("span",{className:"".concat(e.className," rounded-pill px-2 text-nowrap bg-white border border-dark")},e.children)}},26055:(e,t,n)=>{n.d(t,{A:()=>r});var r=n(32735).createContext(null)},45541:(e,t,n)=>{n.d(t,{V:()=>u});var r=n(2948),a=n(38143),s=n(39739);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function l(e,t,n){return(t=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(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 c(e,t){return Object.keys(e||{}).reduce(function(n,r){return t[r]||(n[r]=e[r]),n},{})}var u=function(){var e,t,n,i=(t=(0,r.D)(a.g.BULK_USER_UPLOAD),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,s,i,l=[],o=!0,c=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=s.call(n)).done)&&(l.push(r.value),l.length!==t);o=!0);}catch(e){c=!0,a=e}finally{try{if(!o&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return o(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)?o(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=i[0],d=i[1];function m(e){var t=s.P.getNewDuplicates(e);d("duplicateSets",t)}return{users:null==u?void 0:u.users,invalidUsers:null==u?void 0:u.invalidUsers,hasValidatedUsers:!!(null==u?void 0:u.invalidUsers),existingUsersHash:(null==u?void 0:u.existingUsersHash)||{},hasExistingUsers:!!Object.keys((null==u?void 0:u.existingUsersHash)||{}).length,existingUserToAdd:null==u?void 0:u.existingUserToAdd,duplicateSets:null==u?void 0:u.duplicateSets,newUsers:(null===(e=null==u?void 0:u.users)||void 0===e?void 0:e.filter(function(e){var t;return!(null===(t=null==u?void 0:u.existingUsersHash)||void 0===t?void 0:t[e.lookupId])}))||[],setUsers:function(e){d({users:e,invalidUsers:null,existingUsersHash:null}),m(e)},setInvalidUsers:function(e){return d("invalidUsers",e)},setExistingUsers:function(e){return d("existingUsersHash",e)},updateUser:function(e){var t=u.users.map(function(t){return t.lookupId!==e.lookupId?t:e});d({users:t,invalidUsers:c(null==u?void 0:u.invalidUsers,l({},e.lookupId,!0)),existingUsersHash:null==u?void 0:u.existingUsersHash}),m(t)},deleteUsers:function(e){var t,n=e.reduce(function(e,t){return e[t]=!0,e},{}),r=u.users.filter(function(e){return!n[e.lookupId]});d({users:r,invalidUsers:c(null==u?void 0:u.invalidUsers,n),existingUsersHash:c(null==u?void 0:u.existingUsersHash,n),existingUserToAdd:null===(t=null==u?void 0:u.existingUserToAdd)||void 0===t?void 0:t.filter(function(e){return!!(null==u?void 0:u.existingUsersHash[e.lookupId])})}),m(r)}}}},61254:(e,t,n)=>{n.d(t,{s:()=>l});var r=n(32735),a=n(42648);function s(e,t){return 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,s,i,l=[],o=!0,c=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=s.call(n)).done)&&(l.push(r.value),l.length!==t);o=!0);}catch(e){c=!0,a=e}finally{try{if(!o&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var l=r.forwardRef(function(e,t){var n=s(r.useState(e.containerHeight||0),2),i=n[0],l=n[1],o=s(r.useState(0),2),c=o[0],u=o[1],d=r.useRef(null);r.useEffect(function(){var t,n;e.containerHeight||l(null!==(n=null===(t=d.current)||void 0===t?void 0:t.clientHeight)&&void 0!==n?n:0)},[d.current]);var m,p,f,v=e.items.length,g=Math.ceil(i/e.rowHeight),h=e.rowHeight*v,b=Math.max(0,Math.floor(c/e.rowHeight)-g),y=Math.min(v,b+3*g);return r.createElement("div",{style:(f=null!==(p=null===(m=d.current)||void 0===m?void 0:m.getBoundingClientRect().top)&&void 0!==p?p:0,{height:e.containerHeight||"calc(100vh - ".concat(window.pageYOffset+f+30,"px)"),minHeight:"".concat(5*e.rowHeight,"px"),overflow:"auto"}),ref:d},r.createElement(a.$B,{onScroll:function(e){u(e.currentTarget.scrollTop)},autoHeightMin:h,autoHeightMax:h,ref:t},r.createElement("div",{style:{height:h,paddingTop:b*e.rowHeight}},r.createElement("ul",{className:"w-100 position-relative d-table striped-list list-unstyled no-full-width"},!!e.staticComponentAboveRows&&e.staticComponentAboveRows,function(){for(var t=[],n=b;n<y;){var r=e.items[n];r&&t.push(e.getComponent(r,n)),n++}return t}(),!!e.staticComponentBelowRows&&e.staticComponentBelowRows))))})},36033:(e,t,n)=>{n.d(t,{s:()=>i});var r=n(32735),a=n(83345),s="wizard.wizardConfirmationHeader";function i(e){return r.createElement(a.D.Provider,{value:s},r.createElement("h2",{className:"h4"},r.createElement(a.x,{phrase:"confirmation"})),r.createElement("h3",{className:"h6"},r.createElement(a.x,{phrase:"changesToBeMade"})),r.createElement("div",{className:"p-2 border rounded mb-2"},e.children))}},17291:(e,t,n)=>{n.d(t,{C:()=>i});var r=n(32735),a=n(49935),s=n(96728);function i(e){var t=r.useContext(s.e).showButtons;return r.createElement("div",{className:"d-flex justify-content-between"},e.hideHeader?r.createElement("div",null):r.createElement("div",null,r.createElement("h1",{className:"h2"},e.title),e.breadcrumbs&&r.createElement("div",{className:"pb-3"},r.createElement(a.Oo,{breadcrumbs:e.breadcrumbs}))),e.loaded&&t&&r.createElement("div",{className:"d-flex align-items-center"},e.backButton,e.continueButton))}},79352:(e,t,n)=>{n.d(t,{a:()=>o});var r=n(32735),a=n(23481),s=n(15611),i=a.T.encloseNamespace("shared.wizardStepList");function l(e){var t,n,a,i,l,o=r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex"},!e.hideStepNumber&&r.createElement("div",{className:"flex-shrink-0 flex-grow-0"},"".concat(e.index+1,".")," "),r.createElement("div",null,e.text)),e.subText&&r.createElement("div",{className:"ms-2 ps-1 pt-1"},e.subText)),c="px-2 py-1 mb-1 rounded d-inline-block";return e.isSelected&&(c+=" ".concat((null===(t=e.theme)||void 0===t?void 0:t.isSelectedOverride)||"bg-light-blue fw-semibold")),!e.isSelected&&e.isCompleted&&(c+=" ".concat((null===(n=e.theme)||void 0===n?void 0:n.isCompletedOverride)||"text-info")),r.createElement("li",{className:null===(a=e.theme)||void 0===a?void 0:a.item},e.isCompleted&&e.appLink?r.createElement(s.F,{appLink:e.appLink,className:"".concat(c," ").concat((null===(i=e.theme)||void 0===i?void 0:i.itemContent)||"")},o):r.createElement("div",{className:"".concat(c," ").concat((null===(l=e.theme)||void 0===l?void 0:l.itemContent)||"")},o))}function o(e){var t,n=e.steps.reduce(function(t,n,r){return n.id===e.currentStep&&(t=r+1),t},1);return r.createElement(r.Fragment,null,r.createElement("h2",{className:"h4"},i("stepNumber",{currentStep:n,totalSteps:e.steps.length})),r.createElement("ol",{className:"list-unstyled ".concat((null===(t=e.theme)||void 0===t?void 0:t.itemsContainer)||"")},e.steps.map(function(t,a){var s=t.id===e.currentStep,i=n>a+1;return r.createElement(l,{index:a,key:t.id,text:t.text,subText:t.subText,isSelected:s,isCompleted:i,appLink:!e.disableAppLinks&&t.appLink,disabled:t.disabled,theme:e.theme})})))}},53057:(e,t,n)=>{n.r(t),n.d(t,{BulkUserUploadConfirmationView:()=>P});var r=n(32735),a=n(23481),s=n(81886),i=n(20354),l=n(2948),o=n(68050),c=n(69111),u=n(8612),d=n(83345),m=n(76881);const p={noAccount:"RBzEA"};var f="userManager.bulkUserUploadAccountInfo",v=a.T.encloseNamespace(f);function g(e){var t=e.users.length-e.existingUsers.length;return r.createElement(d.D.Provider,{value:f},r.createElement(o.Z,{className:"mb-2"},r.createElement(c.Z,{xs:4,className:"font-weight-500"},r.createElement(d.x,{phrase:"statuses"})),r.createElement(c.Z,{xs:8,className:"font-weight-500"},r.createElement(d.x,{phrase:"changesTo"}))),!!t&&r.createElement(o.Z,{className:"mb-2"},r.createElement(c.Z,{xs:4},r.createElement(u.G,{className:p.noAccount},v("noAccount")),r.createElement("div",null,r.createElement(d.x,{phrase:e.userType===m.Y.Learner?"studentCount":"staffCount",options:{smartCount:t}}))),r.createElement(c.Z,{xs:8},r.createElement("div",null,r.createElement(d.x,{phrase:e.userType===m.Y.Learner?"willCreate":"willInvite"})))),!!e.existingUsers.length&&r.createElement(o.Z,{className:"mb-2"},r.createElement(c.Z,{xs:4},r.createElement(u.G,null,v("existingAccount")),r.createElement("div",null,r.createElement(d.x,{phrase:e.userType===m.Y.Learner?"studentCount":"staffCount",options:{smartCount:e.existingUsers.length}}))),r.createElement(c.Z,{xs:8},r.createElement("div",null,r.createElement(d.x,{phrase:"willAdd"})))))}var h=n(82780),b=n(61254),y=n(36033),E=n(38143),k=n(96728);function x(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 U="userManager.bulkUserUploadConfirmation",C=a.T.encloseNamespace(U);function w(e){var t,n,a=r.useRef(null),s=(t=(0,l.D)(E.g.BULK_USER_ACTIONS),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,s,i,l=[],o=!0,c=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=s.call(n)).done)&&(l.push(r.value),l.length!==t);o=!0);}catch(e){c=!0,a=e}finally{try{if(!o&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return x(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)?x(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1],i=r.useContext(k.e).setOnClickConfirm;r.useEffect(function(){var e;s("scrollContainer",null===(e=a.current)||void 0===e?void 0:e.view)},[a.current]);var o=e.userType===m.Y.Learner;return r.useEffect(function(){i(function(){return e.onClickConfirm})},[e.onClickConfirm]),r.createElement(r.Fragment,null,r.createElement(y.s,null,r.createElement("h4",{className:"h6"},r.createElement(d.x,{namespace:U,phrase:"heading"})),r.createElement("ul",{className:"mt-1 ps-3 ms-1"},r.createElement("li",null,r.createElement(d.x,{namespace:U,phrase:o?"creationInfoStudent":"creationInfoStaff"})),r.createElement("li",null,r.createElement(d.x,{namespace:U,phrase:o?"addInfoStudent":"addInfoStaff"}))),r.createElement("div",{className:"rounded p-2 bg-light-blue"},r.createElement(g,{users:e.users,existingUsers:e.existingUsers,userType:e.userType}))),r.createElement("h3",{className:"h6 mt-3"},r.createElement(d.x,{namespace:U,phrase:o?"headingStudents":"headingStaff",options:{smartCount:e.users.length}})),r.createElement(b.s,{items:e.users,rowHeight:55,ref:a,getComponent:function(t){return r.createElement(h.m,{key:t.lookupId,user:Object.assign(Object.assign({},t),{name:t.firstName,id:t.lookupId,masterYearGroup:null}),userType:e.userType,imageCdnUrl:e.imageCdnUrl,customBadge:function(){return function(t){return r.createElement("div",{className:"flex-shrink-0 me-2"},e.existingUsersHash[t.lookupId]?C(o?"existingStudentAccount":"existingStaffAccount"):C("noAccount"))}(t)}})}}))}var S=n(27150),A=n(26055),T=n(43820),N=n(45541),L=n(149),j=n(19717),H=n(39151),I=n(31949),O=n(79612),B=n(29613),M=n(18087),R="userManager.userUploadConfirmation";function P(e){var t,n=(0,N.V)(),l=n.users,o=n.existingUsersHash,c=n.existingUserToAdd,u=n.deleteUsers;(0,O.M)({title:a.T.getPhrase(R,"pageTitle")}),r.useEffect(function(){var e;(null==c?void 0:c.length)<(null===(e=Object.keys(o))||void 0===e?void 0:e.length)&&u(j.b.getDeletedExistingUsers(l,o,c).map(function(e){return e.lookupId}))},[]);var d=i.a.useBasicFetch(H.L.config()),m=i.a.useBasicFetch(I.N.currentUser()),p=(0,M.Y)(e.userType),f=i.a.useGetFetchAsync(),v=L.b.useCreateJobErrorAlert();function g(t){s.Q.C$.trigger(Object.assign(Object.assign({},p.userUploadStatus.polling),{params:{userType:e.userType,jobId:t.id}}))}return m.data&&d.data?r.createElement(A.A.Provider,{value:T.a.Primary},r.createElement(S.$,{appLinks:p,userType:e.userType,currentStep:"confirmation",canAddExistingUsers:!0},r.createElement("div",{className:"px-3"},r.createElement(w,{onClickConfirm:function(){var t,n=j.b.getJobData({users:j.b.getNewUsers(l,o),existingUsers:c,customerId:null===(t=m.data)||void 0===t?void 0:t.customerId,userType:e.userType});f(B.q.createJob(n,g,v))},users:l,existingUsers:c,existingUsersHash:o,userType:e.userType,imageCdnUrl:null===(t=d.data)||void 0===t?void 0:t.imageCdnUrl})))):r.createElement(r.Fragment,null)}},29613:(e,t,n)=>{n.d(t,{q:()=>i});var r=n(99940),a=n(97395),s=n(149),i={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=s.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,s){var i={status:t};return n&&(i.cursor=n),{url:a._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),i),key:"job:".concat(e,":results:").concat(t,":").concat(n),success:r,error:s}},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=3057-1ae8087b3a-lite.chunk.js.map
2
+ //# sourceMappingURL=3057-a5bc753736-lite.chunk.js.map