@clickview/lite 0.75.0-rc.2 → 0.75.0-rc.3

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 (160) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{119-lite-a1f592f602.chunk.css → 1243-lite-13eda8f6a0.chunk.css} +2 -4
  3. package/dist/css/{7230-lite-36ff6e6d53.chunk.css → 1867-lite-8baa8af02b.chunk.css} +3 -5
  4. package/dist/css/{5241-lite-baab687563.chunk.css → 4203-lite-9ffab89741.chunk.css} +3 -5
  5. package/dist/css/{8364-lite-99938dea56.chunk.css → 5193-lite-d434056013.chunk.css} +1 -0
  6. package/dist/css/{7339-lite-05c396fed3.chunk.css → 6756-lite-839687d3d7.chunk.css} +1 -0
  7. package/dist/css/{9527-lite-1d2221b6a8.chunk.css → 7103-lite-fef3024f61.chunk.css} +2 -4
  8. package/dist/css/{8856-lite-827b34aed7.chunk.css → 8856-lite-c114ab5c89.chunk.css} +1 -1
  9. package/dist/languages/en.json +1 -1
  10. package/dist/scripts/104-7abe2b09dd-lite.chunk.js +2 -0
  11. package/dist/scripts/104-7abe2b09dd-lite.chunk.js.map +1 -0
  12. package/dist/scripts/1074-2ab8b03e30-lite.chunk.js +2 -0
  13. package/dist/scripts/1074-2ab8b03e30-lite.chunk.js.map +1 -0
  14. package/dist/scripts/1087-861be5211f-lite.chunk.js +2 -0
  15. package/dist/scripts/1087-861be5211f-lite.chunk.js.map +1 -0
  16. package/dist/scripts/1199-6522b1d291-lite.chunk.js +2 -0
  17. package/dist/scripts/1199-6522b1d291-lite.chunk.js.map +1 -0
  18. package/dist/scripts/121-1b744469ee-lite.chunk.js +2 -0
  19. package/dist/scripts/121-1b744469ee-lite.chunk.js.map +1 -0
  20. package/dist/scripts/{1221-502395e693-lite.chunk.js → 1221-894d8474d5-lite.chunk.js} +3 -3
  21. package/dist/scripts/1221-894d8474d5-lite.chunk.js.map +1 -0
  22. package/dist/scripts/1243-ede924125c-lite.chunk.js +2 -0
  23. package/dist/scripts/1243-ede924125c-lite.chunk.js.map +1 -0
  24. package/dist/scripts/147-44ee7e9a78-lite.chunk.js +2 -0
  25. package/dist/scripts/147-44ee7e9a78-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js → 1610-bf848cce4d-lite.chunk.js} +2 -2
  27. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js.map → 1610-bf848cce4d-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js → 1867-3b447a1b85-lite.chunk.js} +2 -2
  29. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js.map → 1867-3b447a1b85-lite.chunk.js.map} +1 -1
  30. package/dist/scripts/2258-ed7383502f-lite.chunk.js +3 -0
  31. package/dist/scripts/2258-ed7383502f-lite.chunk.js.map +1 -0
  32. package/dist/scripts/3268-2736356687-lite.chunk.js +2 -0
  33. package/dist/scripts/{3268-faca1bf46e-lite.chunk.js.map → 3268-2736356687-lite.chunk.js.map} +1 -1
  34. package/dist/scripts/3836-425334ab13-lite.chunk.js +2 -0
  35. package/dist/scripts/{3836-f2a0c9f713-lite.chunk.js.map → 3836-425334ab13-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js +2 -0
  37. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js.map +1 -0
  38. package/dist/scripts/4185-1f65c7adc9-lite.chunk.js +2 -0
  39. package/dist/scripts/4185-1f65c7adc9-lite.chunk.js.map +1 -0
  40. package/dist/scripts/4203-ee50e89841-lite.chunk.js +3 -0
  41. package/dist/scripts/4203-ee50e89841-lite.chunk.js.map +1 -0
  42. package/dist/scripts/4598-bcd3f6f8a7-lite.chunk.js +2 -0
  43. package/dist/scripts/{4598-2b1daca7ae-lite.chunk.js.map → 4598-bcd3f6f8a7-lite.chunk.js.map} +1 -1
  44. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js +2 -0
  45. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js.map +1 -0
  46. package/dist/scripts/{5153-079b4125ae-lite.chunk.js → 5153-acc6c13153-lite.chunk.js} +3 -3
  47. package/dist/scripts/5153-acc6c13153-lite.chunk.js.map +1 -0
  48. package/dist/scripts/6137-bc8b193237-lite.chunk.js +2 -0
  49. package/dist/scripts/6137-bc8b193237-lite.chunk.js.map +1 -0
  50. package/dist/scripts/6756-e90680dfcd-lite.chunk.js +3 -0
  51. package/dist/scripts/6756-e90680dfcd-lite.chunk.js.map +1 -0
  52. package/dist/scripts/6790-c8a9efba50-lite.chunk.js +2 -0
  53. package/dist/scripts/6790-c8a9efba50-lite.chunk.js.map +1 -0
  54. package/dist/scripts/705-10a85bae7a-lite.chunk.js +2 -0
  55. package/dist/scripts/705-10a85bae7a-lite.chunk.js.map +1 -0
  56. package/dist/scripts/7103-14bd3771d2-lite.chunk.js +2 -0
  57. package/dist/scripts/7103-14bd3771d2-lite.chunk.js.map +1 -0
  58. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js +2 -0
  59. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js.map +1 -0
  60. package/dist/scripts/7438-88d11bb89a-lite.chunk.js +2 -0
  61. package/dist/scripts/7438-88d11bb89a-lite.chunk.js.map +1 -0
  62. package/dist/scripts/7480-e0749592fc-lite.chunk.js +2 -0
  63. package/dist/scripts/7480-e0749592fc-lite.chunk.js.map +1 -0
  64. package/dist/scripts/8010-e9163f5bee-lite.chunk.js +2 -0
  65. package/dist/scripts/8010-e9163f5bee-lite.chunk.js.map +1 -0
  66. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js +3 -0
  67. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js.map +1 -0
  68. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js +2 -0
  69. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js.map +1 -0
  70. package/dist/scripts/8856-02dd2e486c-lite.chunk.js +2 -0
  71. package/dist/scripts/8856-02dd2e486c-lite.chunk.js.map +1 -0
  72. package/dist/scripts/9003-1db925f5ec-lite.chunk.js +2 -0
  73. package/dist/scripts/9003-1db925f5ec-lite.chunk.js.map +1 -0
  74. package/dist/scripts/9042-1a42fcbba2-lite.chunk.js +2 -0
  75. package/dist/scripts/9042-1a42fcbba2-lite.chunk.js.map +1 -0
  76. package/dist/scripts/9103-4eec16d73b-lite.chunk.js +2 -0
  77. package/dist/scripts/9103-4eec16d73b-lite.chunk.js.map +1 -0
  78. package/dist/scripts/9134-19912ca3ee-lite.chunk.js +2 -0
  79. package/dist/scripts/9134-19912ca3ee-lite.chunk.js.map +1 -0
  80. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js +2 -0
  81. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js.map +1 -0
  82. package/dist/scripts/9740-9d50d31b72-lite.chunk.js +2 -0
  83. package/dist/scripts/9740-9d50d31b72-lite.chunk.js.map +1 -0
  84. package/dist/scripts/{bundle-95a6fc2722.min.js → bundle-828ca65de8.min.js} +3 -3
  85. package/dist/scripts/{bundle-95a6fc2722.min.js.map → bundle-828ca65de8.min.js.map} +1 -1
  86. package/package.json +1 -1
  87. package/dist/scripts/104-b62a8447f0-lite.chunk.js +0 -2
  88. package/dist/scripts/104-b62a8447f0-lite.chunk.js.map +0 -1
  89. package/dist/scripts/107-989ac2dc47-lite.chunk.js +0 -2
  90. package/dist/scripts/107-989ac2dc47-lite.chunk.js.map +0 -1
  91. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js +0 -2
  92. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js.map +0 -1
  93. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js +0 -2
  94. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js.map +0 -1
  95. package/dist/scripts/121-bf7a153eb8-lite.chunk.js +0 -2
  96. package/dist/scripts/121-bf7a153eb8-lite.chunk.js.map +0 -1
  97. package/dist/scripts/1221-502395e693-lite.chunk.js.map +0 -1
  98. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js +0 -3
  99. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js.map +0 -1
  100. package/dist/scripts/3268-faca1bf46e-lite.chunk.js +0 -2
  101. package/dist/scripts/3836-f2a0c9f713-lite.chunk.js +0 -2
  102. package/dist/scripts/3837-fe321e8deb-lite.chunk.js +0 -2
  103. package/dist/scripts/3837-fe321e8deb-lite.chunk.js.map +0 -1
  104. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js +0 -2
  105. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js.map +0 -1
  106. package/dist/scripts/4164-5d3af57b67-lite.chunk.js +0 -2
  107. package/dist/scripts/4164-5d3af57b67-lite.chunk.js.map +0 -1
  108. package/dist/scripts/4185-e8e40dab72-lite.chunk.js +0 -2
  109. package/dist/scripts/4185-e8e40dab72-lite.chunk.js.map +0 -1
  110. package/dist/scripts/4562-545f04c53f-lite.chunk.js +0 -2
  111. package/dist/scripts/4562-545f04c53f-lite.chunk.js.map +0 -1
  112. package/dist/scripts/4598-2b1daca7ae-lite.chunk.js +0 -2
  113. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js +0 -2
  114. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js.map +0 -1
  115. package/dist/scripts/5153-079b4125ae-lite.chunk.js.map +0 -1
  116. package/dist/scripts/5241-163f5ac64c-lite.chunk.js +0 -3
  117. package/dist/scripts/5241-163f5ac64c-lite.chunk.js.map +0 -1
  118. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js +0 -2
  119. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js.map +0 -1
  120. package/dist/scripts/6135-a878a9cff0-lite.chunk.js +0 -3
  121. package/dist/scripts/6135-a878a9cff0-lite.chunk.js.map +0 -1
  122. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js +0 -2
  123. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js.map +0 -1
  124. package/dist/scripts/6790-5086b72662-lite.chunk.js +0 -2
  125. package/dist/scripts/6790-5086b72662-lite.chunk.js.map +0 -1
  126. package/dist/scripts/7205-2428f775a5-lite.chunk.js +0 -2
  127. package/dist/scripts/7205-2428f775a5-lite.chunk.js.map +0 -1
  128. package/dist/scripts/7339-5793c921bb-lite.chunk.js +0 -3
  129. package/dist/scripts/7339-5793c921bb-lite.chunk.js.map +0 -1
  130. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js +0 -2
  131. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js.map +0 -1
  132. package/dist/scripts/7926-6b040931aa-lite.chunk.js +0 -2
  133. package/dist/scripts/7926-6b040931aa-lite.chunk.js.map +0 -1
  134. package/dist/scripts/8536-f75009dd87-lite.chunk.js +0 -2
  135. package/dist/scripts/8536-f75009dd87-lite.chunk.js.map +0 -1
  136. package/dist/scripts/8856-df102acdff-lite.chunk.js +0 -2
  137. package/dist/scripts/8856-df102acdff-lite.chunk.js.map +0 -1
  138. package/dist/scripts/9134-42dc2390ce-lite.chunk.js +0 -2
  139. package/dist/scripts/9134-42dc2390ce-lite.chunk.js.map +0 -1
  140. package/dist/scripts/9266-c5d6705147-lite.chunk.js +0 -2
  141. package/dist/scripts/9266-c5d6705147-lite.chunk.js.map +0 -1
  142. package/dist/scripts/9284-402a14d41c-lite.chunk.js +0 -2
  143. package/dist/scripts/9284-402a14d41c-lite.chunk.js.map +0 -1
  144. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js +0 -2
  145. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js.map +0 -1
  146. package/dist/scripts/9527-111c8586a7-lite.chunk.js +0 -2
  147. package/dist/scripts/9527-111c8586a7-lite.chunk.js.map +0 -1
  148. package/dist/scripts/9591-230bcf0935-lite.chunk.js +0 -2
  149. package/dist/scripts/9591-230bcf0935-lite.chunk.js.map +0 -1
  150. /package/dist/css/{5349-lite-829df3b4e7.chunk.css → 6137-lite-829df3b4e7.chunk.css} +0 -0
  151. /package/dist/css/{9470-lite-edb2d29928.chunk.css → 8010-lite-edb2d29928.chunk.css} +0 -0
  152. /package/dist/css/{6135-lite-41bdd1c5a3.chunk.css → 8410-lite-41bdd1c5a3.chunk.css} +0 -0
  153. /package/dist/css/{121-lite-1337d9acf0.chunk.css → 9042-lite-1337d9acf0.chunk.css} +0 -0
  154. /package/dist/scripts/{1221-502395e693-lite.chunk.js.LICENSE.txt → 1221-894d8474d5-lite.chunk.js.LICENSE.txt} +0 -0
  155. /package/dist/scripts/{2258-4d0639c9fe-lite.chunk.js.LICENSE.txt → 2258-ed7383502f-lite.chunk.js.LICENSE.txt} +0 -0
  156. /package/dist/scripts/{5153-079b4125ae-lite.chunk.js.LICENSE.txt → 4203-ee50e89841-lite.chunk.js.LICENSE.txt} +0 -0
  157. /package/dist/scripts/{5241-163f5ac64c-lite.chunk.js.LICENSE.txt → 5153-acc6c13153-lite.chunk.js.LICENSE.txt} +0 -0
  158. /package/dist/scripts/{6135-a878a9cff0-lite.chunk.js.LICENSE.txt → 6756-e90680dfcd-lite.chunk.js.LICENSE.txt} +0 -0
  159. /package/dist/scripts/{7339-5793c921bb-lite.chunk.js.LICENSE.txt → 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt} +0 -0
  160. /package/dist/scripts/{bundle-95a6fc2722.min.js.LICENSE.txt → bundle-828ca65de8.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7205-12a6b2ac55-lite.chunk.js","mappings":"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","sources":["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/enums/SupportArticle.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/views/content-permissions/content-permissions.scss","file:///app/packages/projects/lite/src/apps/settings/views/content-permissions/partial-loading/PartialContentPermissionsTable.tsx","file:///app/packages/projects/lite/src/apps/settings/views/content-permissions/ContentPermissionsViewUtils.tsx","file:///app/packages/projects/lite/src/apps/settings/views/content-permissions/ContentPermissionsView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/RatingRequests.ts"],"sourcesContent":["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}","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '27927466562201',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097',\n ManageGroupPermissions = '35407217335705'\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"row\":\"jSsH6\",\"headerCell\":\"OiarJ\",\"opaqueRating\":\"JUpUV\",\"partialNameColumn\":\"SzdZi\",\"partialRatingColumn\":\"LEWRI\",\"partialHeading\":\"bE8aX\",\"partialName\":\"yKKFv\",\"partialRating\":\"zeYNd\"};","import React from 'react';\n\nimport styles from '../content-permissions.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded py-2 ${styles.row}`}>\n <div className={`d-flex align-items-center ps-3 me-n2 ${styles.partialNameColumn}`}>\n <div className={`partial-loading-background ${styles.partialName}`} />\n </div>\n <div className={`d-flex align-items-center pe-2 ${styles.partialRatingColumn}`}>\n <div className={`partial-loading-background ${styles.partialRating}`} />\n </div>\n </div>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex py-2 mb-1'>\n <div className={`${styles.partialNameColumn} ps-3 me-n2`}>\n <div className={`partial-loading-background ${styles.partialHeading}`} />\n </div>\n <div className={`${styles.partialRatingColumn} pe-2`}>\n <div className={`partial-loading-background ${styles.partialHeading}`} />\n </div>\n </div>\n );\n}\n\nexport function PartialContentPermissionsTable(): JSX.Element {\n return (\n <>\n <div className='mb-3'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\n );\n}","import React from 'react';\nimport { Column } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { RatingRangeSelector } from 'libs/shared/components/rating-range-selector/RatingRangeSelector';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Rating, YearGroup } from 'libs/shared/interfaces';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport styles from './content-permissions.scss';\n\nconst namespace = 'settings.contentPermissions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const STAFF_YEAR_GROUP_ID = 'staff';\n\ninterface MappedRating extends Rating {\n active?: boolean;\n}\n\ninterface TableData {\n yearGroup: YearGroup;\n ratings: {\n yearGroup: YearGroup;\n ratings: MappedRating[];\n };\n}\n\nexport function getContentPermissionsTableColumns(\n getSelections: (yearGroup: YearGroup) => Rating[],\n setSelections: (yearGroup: YearGroup, maxRating: Rating) => void,\n yearGroups: YearGroup[]\n): Column<TableData>[] {\n return [\n {\n Header: getPhrase('yearGroup'),\n id: 'yearGroup',\n accessor: 'yearGroup',\n Cell: ({ value: yearGroup }) => (\n <div className='w-100 ps-3'>\n {yearGroup.name}\n </div>\n ),\n width: 20\n },\n {\n Header: getPhrase('rating'),\n id: 'ratings',\n accessor: 'ratings',\n Cell: ({ value: ratings }) => {\n const isStaff = ratings.yearGroup.id === STAFF_YEAR_GROUP_ID;\n\n const ratingsList = (\n <div className='me-n1'>\n <RatingRangeSelector\n ratings={ratings.ratings}\n yearGroup={ratings.yearGroup}\n yearGroups={yearGroups}\n selections={getSelections(ratings.yearGroup)}\n onSelectRange={range => setSelections(ratings.yearGroup, ArrayHelper.last(range))}\n disabled={false}\n isDisabled={() => isStaff}\n getButtonClasses={(rating: Rating, isActive, isHovering) => {\n let className = 'badge rating-badge text-shadow d-flex justify-content-center me-1';\n\n const activeClass = VideoDetailsHelper.mapRatingToClass(rating.value);\n\n if (isStaff)\n className += ` ${styles.opaqueRating}`;\n\n if (isStaff) {\n className += ` cursor-default ${activeClass}`;\n return className;\n }\n\n if (isActive || isHovering)\n className += ' ' + activeClass;\n else\n className += ' bg-gray-500';\n \n return className;\n }}\n />\n </div>\n );\n\n if (isStaff) {\n return (\n <Tooltip title={getPhrase('staffTooltip')} spanHack>\n {ratingsList}\n </Tooltip>\n );\n }\n\n return ratingsList;\n },\n width: 40\n }\n ];\n}\n\nexport function getContentPermissionsTableData(\n yearGroups: YearGroup[],\n ratings: Rating[]\n): TableData[] {\n const rows = yearGroups.map(yearGroup => {\n return {\n yearGroup,\n ratings: {\n yearGroup,\n ratings: ratings.map(rating => {\n if (yearGroup.rating?.code === rating.code) {\n return {\n ...rating,\n active: true\n };\n }\n \n return rating;\n })\n }\n };\n });\n\n const staffYearGroup = { id: STAFF_YEAR_GROUP_ID, name: getPhrase('staff') } as YearGroup;\n\n rows.push({\n yearGroup: staffYearGroup,\n ratings: {\n yearGroup: staffYearGroup,\n ratings\n }\n });\n\n return rows;\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Rating, YearGroup } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\n\nimport { PartialContentPermissionsTable } from './partial-loading/PartialContentPermissionsTable';\nimport { getContentPermissionsTableColumns, getContentPermissionsTableData, STAFF_YEAR_GROUP_ID } from './ContentPermissionsViewUtils';\n\nimport styles from './content-permissions.scss';\n\nconst namespace = 'settings.contentPermissions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SaveButtonProps {\n onClick: () => void;\n showSpinner: boolean;\n isDisabled: boolean;\n}\n\nfunction SaveButton(props: SaveButtonProps): JSX.Element {\n return (\n <SpinnerButton\n onClick={props.onClick}\n showSpinner={props.showSpinner}\n disabled={props.isDisabled}\n className='text-nowrap me-2'\n variant='dark'\n >\n <Text namespace={namespace} phrase='save' />\n </SpinnerButton>\n );\n}\n\nconst theme: TableTheme = {\n table: 'striped-list no-full-width mb-3',\n header: 'fw-semibold pb-1',\n headerCell: `py-2 pe-2 ${styles.headerCell}`,\n row: `striped-row rounded ${styles.row}`,\n cell: 'd-flex align-items-center py-2 pe-2'\n};\n\nexport function ContentPermissionsView(): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const { isUpgrading } = useLiteUpgrade();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(currentUser.data &&\n CustomerRequests.yearGroups(currentUser.data.customerId));\n const validYearGroups = UserHelper.getValidYearGroups(yearGroups.data);\n\n const [ initialYearGroupRatingMappings, setInitialYearGroupRatingMappings ] = React.useState<YearGroup[]>(null);\n const [ draftYearGroupRatingMappings, setDraftYearGroupRatingMappings ] = React.useState<YearGroup[]>(null);\n const [ isContentPermissionsValid, setIsContentPermissionsValid ] = React.useState(false);\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n React.useEffect(() => {\n if (!yearGroups.hasCompleted)\n return;\n\n setInitialYearGroupRatingMappings(validYearGroups);\n setDraftYearGroupRatingMappings(validYearGroups);\n }, [yearGroups.hasCompleted]);\n\n React.useEffect(() => {\n if (draftYearGroupRatingMappings)\n setIsContentPermissionsValid(isRatingsAscending(draftYearGroupRatingMappings));\n }, [draftYearGroupRatingMappings]);\n\n const hasChanged = React.useMemo(() => {\n if (!initialYearGroupRatingMappings || !draftYearGroupRatingMappings)\n return false;\n\n return !ObjectHelper.isEqual(initialYearGroupRatingMappings, draftYearGroupRatingMappings);\n }, [ initialYearGroupRatingMappings, draftYearGroupRatingMappings ]);\n\n function getSelections(yearGroup: YearGroup): Rating[] {\n if (yearGroup.id === STAFF_YEAR_GROUP_ID)\n return ratings.data;\n\n const mapping = draftYearGroupRatingMappings.find(y => y.id === yearGroup.id);\n\n if (!mapping.rating)\n return [];\n\n return ratings.data.filter(r => {\n return r.value <= mapping.rating.value;\n });\n }\n\n function setSelections(selectedYearGroup: YearGroup, maxRating: Rating): void {\n if (selectedYearGroup.id === STAFF_YEAR_GROUP_ID)\n return;\n \n setDraftYearGroupRatingMappings(currentVal => {\n return currentVal.map(yearGroup => {\n if (!yearGroup)\n return;\n\n if (yearGroup.id === selectedYearGroup.id)\n return {\n ...yearGroup,\n rating: maxRating\n };\n\n if (yearGroup.value > selectedYearGroup.value && yearGroup.rating.value < maxRating.value) {\n return {\n ...yearGroup,\n rating: maxRating\n };\n }\n\n if (yearGroup.value < selectedYearGroup.value && yearGroup.rating.value > maxRating.value) {\n return {\n ...yearGroup,\n rating: maxRating\n };\n }\n \n return yearGroup;\n });\n });\n }\n\n function isRatingsAscending(yearGroupRatingMappings: YearGroup[]) {\n return yearGroupRatingMappings.every((yearGroup, index) => {\n if (index === 0) {\n return true;\n }\n \n const prevYearGroup = yearGroupRatingMappings[index - 1];\n return yearGroup.rating.value >= prevYearGroup.rating.value;\n });\n }\n\n function onSave(): void {\n setShowSpinner(true);\n\n const changes = draftYearGroupRatingMappings.filter(mapping => {\n return yearGroups.data.find(y => y.id === mapping.id && y.rating?.id !== mapping.rating?.id);\n });\n\n const request = CustomerRequests.updateYearGroupRatings(\n currentUser.data.customerId,\n changes,\n onSuccess,\n onError\n );\n\n Flight.fetch(dispatch, request);\n }\n\n function onSuccess(): void {\n alerts.success(getPhrase('success'));\n setShowSpinner(false);\n setInitialYearGroupRatingMappings(draftYearGroupRatingMappings);\n }\n\n function onError(): void {\n alerts.error(getPhrase('error'));\n setShowSpinner(false);\n }\n\n const dataLoaded = !!draftYearGroupRatingMappings && ratings.hasCompleted;\n\n const href = ArticleHelper.getLiteArticle(LiteSupportArticle.ContentPermissions);\n\n const isDisabled = isUpgrading || !hasChanged || !isContentPermissionsValid;\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n {isUpgrading && config.data?.onlineUrl &&\n <div className='alert alert-danger' role='alert'>\n <Text\n namespace={namespace}\n phrase='upgradeWarning'\n options={{ url: UrlHelper.safeUrlConcat(config.data.onlineUrl, '/ManageUsers/GroupAccess') }}\n />\n </div>\n }\n <div className='d-flex justify-content-between align-items-center'>\n <p><Text namespace={namespace} phrase={'description'} /></p>\n <SaveButton\n isDisabled={isDisabled}\n showSpinner={showSpinner}\n onClick={onSave}\n />\n </div>\n <p>\n <small><Text namespace={namespace} phrase={'note'} /></small>\n </p>\n <p>\n <ExternalLink\n href={href}\n className='info-link'\n newTab\n >\n <Text namespace={namespace} phrase='learnMore' />\n </ExternalLink>\n </p>\n {dataLoaded ? (\n <Table\n columns={getContentPermissionsTableColumns(getSelections, setSelections, draftYearGroupRatingMappings)}\n data={getContentPermissionsTableData(validYearGroups, ratings.data)}\n theme={theme}\n />\n ) : <PartialContentPermissionsTable />}\n\n {validYearGroups?.length > 1 && (\n <div className='d-flex justify-content-end pb-3'>\n <SaveButton\n isDisabled={isDisabled}\n showSpinner={showSpinner}\n onClick={onSave}\n />\n </div>\n )}\n </SettingsLayout>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { Rating } from 'libs/shared/interfaces';\n\nexport const RatingRequests = {\n ratings(countryCode?: string): Flight.PublicRequest {\n return {\n url: '/api/domain/v2/me/ratings',\n publicUrl: UrlHelper.urlBuilder('/api/domain/v2/me/ratings', { countryCode }),\n key: 'ratings',\n // v2/me/ratings doesn't support `query={orderby:value}`. Adding this due to time constraints\n formatData: (ratings: Rating[]) => {\n return ratings.sort((a, b) => a.value - b.value);\n }\n };\n }\n};"],"names":["DragOverlayStyles","opacity","cursor","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","props","column","canSort","className","isSorted","theme","sortIndicator","SvgContainer","svgName","isSortedDesc","size","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","sortBy","initialSortBy","initialSelectedRowIds","selectedRowIds","forEach","id","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","OnlineSupportArticle","LiteSupportArticle","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","breadcrumbs","name","i","active","heading","headingButton","description","children","PartialRow","PartialHeader","PartialContentPermissionsTable","getPhrase","LanguageService","STAFF_YEAR_GROUP_ID","getContentPermissionsTableColumns","getSelections","setSelections","yearGroups","Header","accessor","Cell","yearGroup","value","width","ratings","isStaff","ratingsList","RatingRangeSelector","selections","onSelectRange","range","ArrayHelper","disabled","isDisabled","getButtonClasses","rating","isActive","isHovering","activeClass","VideoDetailsHelper","Tooltip","title","spanHack","getContentPermissionsTableData","code","staffYearGroup","push","SaveButton","SpinnerButton","showSpinner","variant","Text","phrase","ContentPermissionsView","setShowSpinner","isUpgrading","config","ConfigRequests","currentUser","UserRequests","RatingRequests","CustomerRequests","customerId","validYearGroups","UserHelper","initialYearGroupRatingMappings","setInitialYearGroupRatingMappings","draftYearGroupRatingMappings","setDraftYearGroupRatingMappings","isContentPermissionsValid","setIsContentPermissionsValid","dispatch","alerts","useSetPageMetadata","hasCompleted","yearGroupRatingMappings","every","index","prevYearGroup","hasChanged","ObjectHelper","onSave","changes","filter","mapping","find","y","request","onSuccess","onError","success","error","dataLoaded","href","ArticleHelper","onlineUrl","options","url","UrlHelper","ExternalLink","newTab","r","selectedYearGroup","maxRating","currentVal","countryCode","publicUrl","formatData","sort","a","b"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7438],{29923:(e,t,r)=>{r.d(t,{F:()=>s});var n=r(32735),a=r(23481),o=r(89965),i=r(13876);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var l=a.T.encloseNamespace("sharev2.deleteShareContent");function s(e){var t,r,a,s=(r=n.useState(!1),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,c=[],l=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(r,a)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(r,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.")}()),u=s[0],d=s[1];return n.createElement("div",{className:"d-flex flex-column gap-3"},n.createElement("p",{className:"m-0"},e.phrases.leadingSentence),n.createElement("ul",{className:"m-0"},e.phrases.bulletPoints.map((function(e,t){return n.createElement("li",{key:t},e)}))),n.createElement(o.X,{id:"ack",checked:u,onChange:function(e){return d(e.target.checked)},label:e.phrases.acknowledgement}),n.createElement(i.u,null,e.onBack&&n.createElement(i.u.Cancel,{onClick:e.onBack,text:null!==(t=e.phrases.backButton)&&void 0!==t?t:l("backButton"),variant:"link"}),n.createElement(i.u.Submit,{onClick:function(){u&&!e.loading&&e.onDelete()},text:e.phrases.deleteButton,variant:"danger",disabled:!u||e.loading,showSpinner:e.loading})))}},33518:(e,t,r)=>{var n;r.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={}))},18488:(e,t,r)=>{r.d(t,{o:()=>i});var n=r(99940),a=r(97395),o={namespace:"share-v2"},i={createShare:function(e){return{url:"{gateway}/v2/shares",key:"create:share-v2",type:n.k.POST,data:e,normalizeOptions:o,invalidationKeys:["sent:share-v2","get:share-v2:shares:object:".concat(e.objectId)]}},updateShare:function(e,t){return{url:"{gateway}/v2/shares/".concat(e),key:"update:share-v2",type:n.k.PUT,data:t,normalizeOptions:o,invalidationKeys:["share-v2:permanent-link:object","share-v2:".concat(e)]}},deleteShare:function(e){return{type:n.k.DELETE,url:"{gateway}/v2/shares/".concat(e),key:"delete:share-v2",normalizeOptions:o,invalidationKeys:["share-v2:permanent-link:object","sent:share-v2","share-v2:".concat(e)]}},getShare:function(e){return{url:"{gateway}/v2/shares/".concat(e),key:"share-v2:".concat(e),bootstrapName:"share-v2:".concat(e),type:n.k.GET,normalizeOptions:o}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.values(e).sort().join(":");return{url:a._.urlBuilder("{gateway}/v2/shares/sent",e),key:"sent:share-v2:".concat(t),type:n.k.GET,normalize:!1}},getShareLink:function(e){return{url:a._.urlBuilder("{gateway}/v2/shares/permanent-link",{objectId:e}),key:"share-v2:permanent-link:object:".concat(e),normalizeOptions:o}},createShareLink:function(e){return{type:n.k.POST,url:a._.urlBuilder("{gateway}/v2/shares/permanent-link",Object.assign({},e)),key:"create:share-v2:permanent-link:object:".concat(e.objectId),invalidationKeys:["share-v2:permanent-link:object:".concat(e.objectId),"sent:share-v2"],normalizeOptions:o}},getPrivacy:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/access"),key:"privacy:".concat(e),normalize:!1}},getSharesByObjectId:function(e){return{url:"{gateway}/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:n.k.GET,normalizeOptions:o}},createSharePincode:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:".concat(e,":pincode"),type:n.k.POST}},getPincodeByShareId:function(e){return{url:"{gateway}/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}},getPincodeByCode:function(e){return{url:"{gateway}/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}}}},93563:(e,t,r)=>{r.d(t,{_:()=>c});var n=r(20354),a=r(33518),o=r(18488),i=r(8233);function c(e){var t=n.a.useGetFetchAsync(),r=n.a.useBasicFetch(o.o.getPrivacy(e.entityId));return{loaded:!!r.data,updateShareLink:function(e,r){return t(o.o.updateShare(e,r))},createShareLink:function(n){var c=null!=n?n:"protected"===i.R.getShareLinkAccessType(r.data)?a.e.Protected:a.e.JustMySchool;return t(o.o.createShareLink({objectId:e.entityId,privacy:c}))},deleteShareLink:function(e){return t(o.o.deleteShare(e))}}}},8233:(e,t,r)=>{r.d(t,{R:()=>y});var n=r(23481),a=r(110),o=r(33518),i=r(4594),c=r(49080),l=r(26361),s=r(35223),u=r(31908);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var v=n.T.encloseNamespace("sharev2.utils"),y={getPrivateIconAndText:function(e){var t=e.entityTypeId,r=e.privacy,n=e.hasStudentExp,a=e.entity,c=e.yearGroups;if(t===i.E.Topic||t===i.E.Series)return{icon:s.vn.VisibleOn,text:v(n?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(r))switch(r){case o.e.Public:return{icon:s.vn.VisibleOn,text:v("publicDescription")};case o.e.ProtectedOverrideRestriction:return{icon:s.vn.VisibleOn,text:v("clickViewOnly")};case o.e.Protected:return{icon:s.vn.Lock,text:y.getRespectRatingText(a,c,n)};case o.e.JustMySchoolOverrideRestriction:return{icon:s.vn.Lock,text:v(n?"justMySchoolTeachers":"justMySchoolDescription")};case o.e.JustMySchool:return{icon:s.vn.Lock,text:y.getRespectRatingText(a,c,n)};case o.e.PinCode:return{icon:s.vn.Lock,text:v("pinDescription")};case o.e.PasswordProtected:return{icon:s.vn.Lock,text:v("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,r=e.isPasswordProtected,n=e.status;if(!t&&!r)return y.getPrivateIconAndText(e);if(!t)return{icon:s.vn.Lock,text:v("password")};var o=a.O.isToday(t),i=a.O.diffBetween(t,new Date,"day");if(!r){var l=o?v("expiryToday"):v("expiry",{days:i});return n===c.F.Expired&&(l=v("expired")),{icon:s.vn.Timer,text:l}}var u=o?v("passwordExpiryToday"):v("passwordExpiry",{days:i});return n===c.F.Expired&&(u=v("passwordExpired")),{icon:s.vn.Lock,text:u}},getRespectRatingText:function(e,t,r){var n;if(!e||!t)return null;if(r)return v("justMySchoolTeachers");if(!u.M.isVideoType(e))return v("collectionRating");var a=l.l.getWeightedRestriction(null===(n=e._restrictions)||void 0===n?void 0:n.value);if(a&&!a.yearGroup)return v("onlyAdmins");var o,i,c,s=u.M.getRating(e),y=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return d(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){c=!0,o=e},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw o}}}}(t);try{for(y.s();!(c=y.n()).done;){var p=c.value;(!o||p.value>o.value)&&(o=p),a&&p.value<=a.yearGroup||s&&p.rating.value<s.value||(!i||p.value<i.value)&&(i=p)}}catch(e){y.e(e)}finally{y.f()}return i?1===t.length?v("clickViewOnly"):i.value===o.value?v("maxYearGroup",{yearGroup:o.name}):v("yearGroupRange",{yearGroup:i.name}):v("onlyStaff")},getShareLinkAccessType:function(e){return e.isTvContent||e.isClickViewContent?"protected":e.canManageAccess?"owner":"private"}}},17438:(e,t,r)=>{r.r(t),r.d(t,{DeleteOpenClassroomConfirmationView:()=>p});var n=r(32735),a=r(6044),o=r(23481),i=r(20354),c=r(29923),l=r(18488),s=r(93563),u=r(9111),d=r(69883);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var y=o.T.encloseNamespace("sharev2.deleteOpenClassroomConfirmation");function p(e){var t,r,o,p=(0,d.Z)(),h=i.a.useBasicFetch(l.o.getShare(e.shareId)),f=(r=n.useState(!1),o=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,c=[],l=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(r,o)||function(e,t){if(e){if("string"==typeof e)return v(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?v(e,t):void 0}}(r,o)||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=f[0],m=f[1],k=(0,s._)({entityId:null===(t=h.data)||void 0===t?void 0:t.objectId.toString()}).deleteShareLink,b=h.hasCompleted;return n.createElement(u.G,{title:y("title"),closePopup:e.closePopup,showLoadingSpinner:!b},n.createElement(c.F,{loading:g,phrases:{leadingSentence:y("intro"),bulletPoints:[y("loseAccessInfo"),y("loseAccessUsage")],acknowledgement:y("acknowledgement"),deleteButton:y("delete")},onDelete:function(){var t;m(!0),k(null===(t=h.data)||void 0===t?void 0:t.shareId).then((function(){m(!1),p.success(y("deleteSuccess")),e.closePopup(),e.previousAppLink&&a.C$.trigger(e.previousAppLink)})).catch((function(){p.error(y("deleteFailed"))})).finally((function(){m(!1)}))}}))}}}]);
2
+ //# sourceMappingURL=7438-88d11bb89a-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7438-88d11bb89a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/components/delete-share-content/DeleteShareContent.tsx","file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkActions.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/views/delete-open-classroom-confirmation-view/DeleteOpenClassroomConfirmationView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nconst namespace = 'sharev2.deleteShareContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteShareContentProps {\n loading: boolean;\n phrases: {\n leadingSentence: string;\n bulletPoints: string[];\n acknowledgement: string;\n deleteButton: string;\n backButton?: string;\n };\n onDelete: () => void;\n onBack?: () => void;\n}\n\nexport function DeleteShareContent(props: DeleteShareContentProps) {\n const [ ack, setAck ] = React.useState(false);\n\n function onDelete() {\n if (!ack || props.loading)\n return;\n\n props.onDelete();\n }\n\n return (\n <div className='d-flex flex-column gap-3'>\n <p className='m-0'>{props.phrases.leadingSentence}</p>\n <ul className='m-0'>\n {props.phrases.bulletPoints.map((phrase, index) => (\n <li key={index}>\n {phrase}\n </li>\n ))}\n </ul>\n <Checkbox\n id='ack'\n checked={ack}\n onChange={e => setAck(e.target.checked)}\n label={props.phrases.acknowledgement}\n />\n <PopupButtons>\n {props.onBack && (\n <PopupButtons.Cancel\n onClick={props.onBack}\n text={props.phrases.backButton ?? getPhrase('backButton')}\n variant='link'\n />\n )}\n <PopupButtons.Submit\n onClick={onDelete}\n text={props.phrases.deleteButton}\n variant='danger'\n disabled={!ack || props.loading}\n showSpinner={props.loading}\n />\n </PopupButtons>\n </div>\n );\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n scopeId?: string;\n objectTypeId?: number;\n type?: ShareType\n}\n\nexport const ShareRequests = {\n createShare(\n data: CreateShareRequest\n ): Flight.Request {\n return {\n url: '{gateway}/v2/shares',\n key: 'create:share-v2',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [ 'sent:share-v2', `get:share-v2:shares:object:${data.objectId}` ]\n };\n },\n\n updateShare(\n shareId: string,\n data: UpdateShareRequest\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `update:share-v2`,\n type: HttpVerbs.PUT,\n data,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', `share-v2:${shareId}` ]\n };\n },\n \n deleteShare(\n shareId: string\n ): Flight.Request {\n return {\n type: HttpVerbs.DELETE,\n url: `{gateway}/v2/shares/${shareId}`,\n key: `delete:share-v2`,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', 'sent:share-v2', `share-v2:${shareId}` ]\n };\n },\n\n getShare(\n shareId: string\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}`,\n key: `share-v2:${shareId}`,\n bootstrapName: `share-v2:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {}\n ): Flight.Request {\n const key = Object.values(params).sort().join(':');\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/sent', params),\n key: `sent:share-v2:${key}`,\n type: HttpVerbs.GET,\n normalize: false\n };\n },\n\n getShareLink(\n id: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { objectId: id }),\n key: `share-v2:permanent-link:object:${id}`,\n normalizeOptions\n };\n },\n\n createShareLink(\n data: CreateShareLinkRequest\n ): Flight.Request {\n return {\n type: HttpVerbs.POST,\n url: UrlHelper.urlBuilder('{gateway}/v2/shares/permanent-link', { ...data }),\n key: `create:share-v2:permanent-link:object:${data.objectId}`,\n invalidationKeys: [ `share-v2:permanent-link:object:${data.objectId}`, 'sent:share-v2' ],\n normalizeOptions\n };\n },\n\n getPrivacy(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/access`,\n key: `privacy:${id}`,\n normalize: false\n };\n },\n \n getSharesByObjectId(\n objectId: string | number\n ): Flight.Request {\n return {\n url: `{gateway}/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions\n };\n },\n\n createSharePincode(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `create:share-v2:${shareId}:pincode`,\n type: HttpVerbs.POST\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n },\n\n getPincodeByCode(code: string): Flight.Request {\n return {\n url: `{gateway}/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n }\n};\n","import { Flight } from 'libs/common/react/index';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { Share } from '../interfaces/Share';\nimport { SharePrivacyResponse } from '../interfaces/SharePrivacyResponse';\nimport { UpdateShareRequest } from '../interfaces/UpdateShareRequest';\nimport { ShareLinkHelper } from '../utils/ShareLinkHelper';\n\ninterface UseShareLinkActionsOptions {\n entityId: string;\n}\n\nexport function useShareLinkActions(options: UseShareLinkActionsOptions) {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const entityPrivacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n\n function getCreateSharePrivacy() {\n const accessType = ShareLinkHelper.getShareLinkAccessType(entityPrivacy.data);\n\n return accessType === 'protected'\n ? SharePrivacy.Protected\n : SharePrivacy.JustMySchool;\n }\n\n function updateShareLink(shareId: string, data: UpdateShareRequest): Promise<Share> {\n return fetchAsync<Share>(ShareRequests.updateShare(shareId, data));\n }\n\n function createShareLink(privacy?: SharePrivacy): Promise<Share> {\n const requestPrivacy = privacy ?? getCreateSharePrivacy();\n return fetchAsync<Share>(ShareRequests.createShareLink({ objectId: options.entityId, privacy: requestPrivacy }));\n }\n\n function deleteShareLink(shareId: string): Promise<void> {\n return fetchAsync(ShareRequests.deleteShare(shareId));\n }\n\n return {\n loaded: !!entityPrivacy.data,\n updateShareLink,\n createShareLink,\n deleteShareLink\n };\n}","import { 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\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetPrivateIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('pinDescription') };\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getShareLinkAccessType(privacy: SharePrivacyResponse): 'private' | 'owner' | 'protected' {\n /**\n * If an entity is not a ClickView content and they cannot manage access\n * settings of the entity (which they can if its their private entity)\n * it means that its a TV content\n */\n if (privacy.isTvContent || privacy.isClickViewContent)\n return 'protected';\n\n if (privacy.canManageAccess)\n return 'owner';\n\n return 'private';\n }\n};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { DeleteShareContent } from 'libs/shared/apps/share-v2/components/delete-share-content/DeleteShareContent';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { useShareLinkActions } from 'libs/shared/apps/share-v2/hooks/useShareLinkActions';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'sharev2.deleteOpenClassroomConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteOpenClassroomConfirmationViewProps extends PopupViewProps {\n shareId: string;\n previousAppLink?: Core.AppLink;\n}\n\nexport function DeleteOpenClassroomConfirmationView(props: DeleteOpenClassroomConfirmationViewProps) {\n const alerts = useAlerts();\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n\n const [ loading, setLoading ] = React.useState(false);\n\n const { deleteShareLink: deleteShare } = useShareLinkActions({\n entityId: share.data?.objectId.toString()\n });\n \n function onClickDelete() {\n setLoading(true);\n\n deleteShare(share.data?.shareId).then(() => {\n setLoading(false);\n alerts.success(getPhrase('deleteSuccess'));\n props.closePopup();\n\n if (props.previousAppLink) {\n AppLinkHelper.trigger(props.previousAppLink);\n }\n }).catch(() => {\n alerts.error(getPhrase('deleteFailed'));\n }).finally(() => {\n setLoading(false);\n });\n }\n\n const loaded = share.hasCompleted;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded}\n >\n <DeleteShareContent\n loading={loading}\n phrases={{\n leadingSentence: getPhrase('intro'),\n bulletPoints: [\n getPhrase('loseAccessInfo'),\n getPhrase('loseAccessUsage')\n ],\n acknowledgement: getPhrase('acknowledgement'),\n deleteButton: getPhrase('delete')\n }}\n onDelete={onClickDelete}\n />\n </Popup>\n );\n}"],"names":["getPhrase","DeleteShareContent","props","ack","setAck","className","phrases","leadingSentence","bulletPoints","map","phrase","index","key","id","checked","onChange","e","target","label","acknowledgement","onBack","onClick","text","backButton","variant","loading","onDelete","deleteButton","disabled","showSpinner","SharePrivacy","normalizeOptions","namespace","ShareRequests","createShare","data","url","type","invalidationKeys","objectId","updateShare","shareId","deleteShare","getShare","bootstrapName","getSentShares","params","Object","values","sort","join","normalize","getShareLink","createShareLink","getPrivacy","getSharesByObjectId","createSharePincode","getPincodeByShareId","getPincodeByCode","code","useShareLinkActions","options","fetchAsync","entityPrivacy","entityId","loaded","updateShareLink","privacy","requestPrivacy","deleteShareLink","ShareLinkHelper","getPrivateIconAndText","entityTypeId","hasStudentExp","entity","yearGroups","icon","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","Date","days","video","restriction","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","length","name","getShareLinkAccessType","isTvContent","isClickViewContent","canManageAccess","DeleteOpenClassroomConfirmationView","alerts","share","setLoading","toString","hasCompleted","title","closePopup","showLoadingSpinner","then","success","previousAppLink","error"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7480],{9806:(e,t,n)=>{n.d(t,{k:()=>w});var a=n(32735),i=n(65858),o=n(64249),l=n(15611),r=n(7432),c=n(11834),s=n(83345),u=n(56754),m=n(86348),d=n(7733),p=n(54610),v=n(4594),g=n(68626),h=n(9085),f=n(67453),b=n(31908);const y={thumbnailFallbackSvg:"D4JFs",posterFallbackSvg:"bjUWl",coverFallbackSvg:"kdLpt",thumbnailContainer:"d3CKN",insightsMask:"KM76U",requireMarking:"peLH7",badge:"mVu0E",bar:"zO3MS",a:"K1jW5",expandBar:"YITJl",b:"tCpLF",c:"lC0cq"};var E="shared.sharedObjectImage",C="rounded overflow-hidden";function k(){return a.createElement("div",{className:"d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center"},a.createElement("div",{className:"position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3"}),a.createElement("div",{className:"d-flex align-items-end gap-2 h-50 z-1"},a.createElement("div",{className:"d-flex align-items-end h-50"},a.createElement("div",{className:"".concat(y.bar," ").concat(y.a," rounded shadow")})),a.createElement("div",{className:"d-flex align-items-end h-75"},a.createElement("div",{className:"".concat(y.bar," ").concat(y.b," rounded shadow")})),a.createElement("div",{className:"d-flex align-items-end h-100"},a.createElement("div",{className:"".concat(y.bar," ").concat(y.c," rounded shadow")}))))}function w(e){var t=a.useCallback((function(t){var n;t&&e.fixedHeight&&(t.style.width="".concat(t.offsetHeight*(n=e.object,b.M.isVideoType(n)?16/9:n.typeId===v.E.Playlist?1:n.typeId===v.E.Series?9/16:void 0),"px"))}),[]),n=b.M.isVideoType(e.object),w=function(e){var t=f.j.getDisplayImageFromObject(e);if(b.M.isVideoType(e))return{image:t,imageType:p.__.Thumbnails,imageClassName:C,imageFallbackComponent:a.createElement(c.oy,{type:c.mS.Video})};switch(e.typeId){case v.E.Series:return{image:t,imageType:p.__.TallPosters,imageClassName:C,imageFallbackComponent:a.createElement(c.oy,{type:c.mS.Series,svgContainerClassName:y.posterFallbackSvg})};case v.E.Playlist:return{image:t,imageType:p.__.Covers,imageClassName:(null==t?void 0:t.url)?C:"".concat(C," ").concat((0,h.x)(e.name,d.o)),imageFallbackComponent:a.createElement(c.oy,{type:c.mS.Playlist,svgContainerClassName:(null==t?void 0:t.url)?y.coverFallbackSvg:"d-none",extraClasses:!(null==t?void 0:t.url)&&"bg-transparent"})}}}(e.object),x=w.image,N=w.imageType,T=w.imageClassName,S=w.imageFallbackComponent,j=e.showVideoMetadata?{hideBottomBar:e.hideBottomBar}:{hideDuration:!0,hideMask:!0,hideRating:!0,hideVideoBadgeType:!0,hideBottomBar:!0};return a.createElement("div",{className:"d-flex align-items-center justify-content-center w-100 h-100"},a.createElement("div",{ref:t,className:e.fixedHeight?"h-100":"w-100"},n&&a.createElement("div",{className:"".concat(y.thumbnailContainer," position-relative")},e.showInsightsMask&&a.createElement(k,null),a.createElement(l.F,{appLink:e.appLink},a.createElement(m.u,Object.assign({video:e.object,size:e.thumbnailSize,imageOptions:e.imageOptions,textPosition:g.z.Independent,type:"cosmetic",imageClassName:e.imageClassName},j))),!!e.requireMarking&&a.createElement("div",{className:"".concat(e.showInsightsMask&&y.requireMarking," position-absolute bottom-0 end-0 z-1 m-2")},a.createElement("div",{className:"".concat(y.badge," d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2")},a.createElement(s.x,{namespace:E,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))),!n&&a.createElement(a.Fragment,null,"videos"in e.object?a.createElement(u.I,{collection:e.object,imageOptions:e.imageOptions,appLink:e.appLink,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:o.I.getAnalyticsEntity(e.object.type),actionType:i.Vw.Click,location:e.locationContext},showMask:e.showCollectionMask,showVideoCount:e.showVideoCount,onlyCount:e.onlyCount}):a.createElement(r.Z,{data:null==x?void 0:x.url,imageType:N,imageOptions:e.imageOptions,appLink:e.appLink,className:T,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:o.I.getAnalyticsEntity(e.object.type),actionType:i.Vw.Click,location:e.locationContext}},S))))}w.defaultProps={imageOptions:{size:p.h2.Small}}},31754:(e,t,n)=>{n.d(t,{x:()=>r});var a=n(82602),i=n(75896),o=n(41859),l=n(11576),r={groupByDateShared:function(e){var t=i.m.groupBy(e,"dateShared");return Object.keys(t).sort().reverse().reduce((function(e,n){var i=(0,a.WU)(n);return e[i]||(e[i]=[]),e[i]=e[i].concat(t[n]),e}),{})},mapActivityStatusToCheckMarkStatus:function(e){switch(e){case l.T.Complete:return o.h.Complete;case l.T.Incomplete:return o.h.Incomplete;case l.T.None:return o.h.None}},mapCheckMarkStatusToActivityStatus:function(e){switch(e){case o.h.Complete:return l.T.Complete;case o.h.Incomplete:return l.T.Incomplete;case o.h.None:return l.T.None}}}},56754:(e,t,n)=>{n.d(t,{I:()=>E});var a=n(32735),i=n(75896),o=n(65858),l=n(15611),r=n(83914),c=n(83345);const s={thumbnailTitle:"OsWjL"};function u(e){return a.createElement("h3",{title:e.title,className:"h6"},e.title)}function m(e){return e.appLink?a.createElement(l.F,{appLink:e.appLink,className:"".concat(s.thumbnailTitle)},a.createElement(u,Object.assign({},e))):a.createElement(u,Object.assign({},e))}var d=n(86348),p=n(62335),v=n(4594),g=n(68626),h=n(45778),f=n(35223);const b={badge:"M4zat",mask:"r0Ztg",thumbnailContainer:"uD9dz"};var y="shared.collectionThumbnail";function E(e){var t,n,s,u,E=function(){var t,n=null===(t=e.collection)||void 0===t?void 0:t.videos;if(n){if(!n.count&&e.collection.typeId===v.E.Playlist){var a=e.collection;a.clips.count&&(n=a.clips),a.interactives.count&&(n=a.interactives)}return i.m.first(n.data)}}(),C=function(){var t,n,a=0;if(e.collection.videos&&e.collection.videos.count&&(a+=e.collection.videos.count),e.collection.typeId===v.E.Playlist){var i=e.collection;(null===(t=i.interactives)||void 0===t?void 0:t.count)&&(a+=i.interactives.count),(null===(n=i.clips)||void 0===n?void 0:n.count)&&(a+=i.clips.count)}return a}(),k=(null===(t=e.title)||void 0===t?void 0:t.length)||(null===(n=e.subText)||void 0===n?void 0:n.length),w=Object.assign({id:e.collection.id.toString(),name:e.collection.name},e.analyticsData),x=Object.assign({actionType:o.Vw.Click,entity:(u=e.collection,h.G.isType(u,v.E.Playlist)?o.py.Playlist:h.G.isType(u,v.E.Series)?o.py.Series:void 0)},e.analyticsOptions);return a.createElement("div",null,a.createElement("div",{className:"position-relative ".concat(b.thumbnailContainer," z-1")},a.createElement(l.F,{appLink:e.appLink,analyticsData:w,analyticsOptions:x,preventFocus:!0},e.showMask&&a.createElement("div",{className:"".concat(b.mask," position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none")},a.createElement("div",{className:"".concat(b.badge," d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2")},a.createElement(r.x,{svgName:f.vn.Play,className:"svg-container text-white"}),a.createElement("p",{className:"d-inline fw-medium text-white mb-0"},(null===(s=e.hoverText)||void 0===s?void 0:s.length)?a.createElement("span",null,e.hoverText):a.createElement(c.x,{namespace:y,phrase:"playAll"})))),E&&a.createElement(d.u,{video:E,imageOptions:e.imageOptions,textPosition:g.z.Independent,type:"cosmetic",hideMask:!0,hideRating:!0,hideDuration:!0,hideVideoTypeBadge:!0}),!E&&a.createElement("div",{className:"ratio ratio-16x9 bg-light rounded-3"},a.createElement("div",{className:"d-flex justify-content-center align-items-center"},a.createElement(r.x,{svgName:f.vn.Play,className:"w-33 opacity-25 text-gray-400"}))),e.showVideoCount&&a.createElement("div",{className:"".concat(b.badge," d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2")},a.createElement(r.x,{svgName:f.vn.Series,className:"svg-container text-white me-1"}),a.createElement("p",{className:"d-inline fw-semibold text-white mb-0"},e.onlyCount?a.createElement("span",null,C):a.createElement(c.x,{namespace:y,phrase:"videos",options:{count:C,smartCount:C}}))))),k&&a.createElement("div",{className:"mt-2 d-flex flex-column"},e.subText&&a.createElement(p.m,{title:e.subText,appLink:e.subTextAppLink},e.subText),e.title&&a.createElement(m,{title:e.collection.name,appLink:e.titleAppLink})))}},60115:(e,t,n)=>{n.d(t,{K:()=>s});var a=n(32735),i=n(50242),o=n(91967),l=400,r=n(45719);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function s(e,t,n,s,u,m){var d,p,v,g,h=(d=(0,a.useState)(0),p=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,o,l,r=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(r.push(a.value),r.length!==t);c=!0);}catch(e){s=!0,i=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw i}}return r}}(d,p)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(d,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=h[0],b=h[1],y=t,E=(0,r.P)((function(t){if(!e)return null;var n=e(t);return n?n.key:null}),s,u);return v={fetchNextPage:function(){if(t&&e&&E)return b((function(e){return e+1})),y(E.nextCursor)},hasMore:!!(null==E?void 0:E.nextCursor),isFetching:null==E?void 0:E.isFetching,scrollContainer:m},g=function(){if(!v.isFetching){if(v.scrollContainer){var e=v.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-l)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-l)return;v.fetchNextPage()}},(0,a.useEffect)((function(){var e=o.q.throttle(g,200),t=v.scrollContainer||window;return v.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}),[v.hasMore,v.fetchNextPage,v.scrollContainer]),(0,a.useEffect)((function(){E&&E.shouldInitialFetch&&t&&(y(),b((function(e){return e+1})))}),[null==E?void 0:E.shouldInitialFetch,t]),(0,a.useEffect)((function(){var e,t;if((null==E?void 0:E.statusCode)&&o.q.isFunction(n)){var a=+(null===(t=null===(e=E.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));a!==i.k.ClientError&&a!==i.k.ServerError||n(f,E.statusCode)}}),[null==E?void 0:E.statusCode]),{items:null==E?void 0:E.items,hasMore:!!(null==E?void 0:E.nextCursor),nextCursor:null==E?void 0:E.nextCursor,isFetching:null==E?void 0:E.isFetching,totalItems:null==E?void 0:E.totalItems,hasFirstPageCompleted:null==E?void 0:E.hasFirstPageCompleted}}},82602:(e,t,n)=>{n.d(t,{WU:()=>s});var a=["second","minute","hour","day","week","month","year"],i=["秒","分钟","小时","天","周","个月","年"],o={},l=function(e,t){o[e]=t},r=[60,60,24,7,365/7/12,12];function c(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var s=function(e,t,n){var a=function(e,t){return(+(t?c(t):new Date)-+c(e))/1e3}(e,n&&n.relativeDate);return function(e,t){for(var n=e<0?1:0,a=e=Math.abs(e),i=0;e>=r[i]&&i<r.length;i++)e/=r[i];return(e=Math.floor(e))>(0==(i*=2)?9:1)&&(i+=1),t(e,i,a)[n].replace("%s",e.toString())}(a,function(e){return o[e]||o.en_US}(t))};l("en_US",(function(e,t){if(0===t)return["just now","right now"];var n=a[Math.floor(t/2)];return e>1&&(n+="s"),[e+" "+n+" ago","in "+e+" "+n]})),l("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var n=i[~~(t/2)];return[e+" "+n+"前",e+" "+n+"后"]}))}}]);
2
+ //# sourceMappingURL=7480-e0749592fc-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7480-e0749592fc-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/apps/share/utils/ShareHelper.ts","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\",\"thumbnailContainer\":\"d3CKN\",\"insightsMask\":\"KM76U\",\"requireMarking\":\"peLH7\",\"badge\":\"mVu0E\",\"bar\":\"zO3MS\",\"a\":\"K1jW5\",\"expandBar\":\"YITJl\",\"b\":\"tCpLF\",\"c\":\"lC0cq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnail } from 'libs/shared/components/thumbnails/collection/CollectionThumbnail';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image, Playlist, Series } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst namespace = 'shared.sharedObjectImage';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction InsightsMask() {\n return (\n <div className={`d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center`}>\n <div className='position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3'></div>\n <div className='d-flex align-items-end gap-2 h-50 z-1'>\n <div className='d-flex align-items-end h-50'>\n <div className={`${styles.bar} ${styles.a} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-75'>\n <div className={`${styles.bar} ${styles.b} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-100'>\n <div className={`${styles.bar} ${styles.c} rounded shadow`}></div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\nSharedObjectImage.defaultProps = {\n imageOptions: { size: ImageSize.Small }\n};\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n requireMarking?: number;\n imageOptions?: ImageOptions;\n showInsightsMask?: boolean;\n showCollectionMask?: boolean;\n showVideoCount?: boolean;\n thumbnailSize?: 'sm' | 'md';\n imageClassName?: string;\n hideBottomBar?: boolean;\n onlyCount?: boolean;\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object);\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n const thumbnailMetadata = !props.showVideoMetadata ? {\n hideDuration: true,\n hideMask: true,\n hideRating: true,\n hideVideoBadgeType: true,\n hideBottomBar: true\n } : {\n hideBottomBar: props.hideBottomBar\n };\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <div className={`${styles.thumbnailContainer} position-relative`}>\n {props.showInsightsMask && <InsightsMask />}\n <AppLink appLink={props.appLink}>\n <VideoThumbnail\n video={props.object}\n size={props.thumbnailSize}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n imageClassName={props.imageClassName}\n {...thumbnailMetadata}\n />\n </AppLink>\n {!!props.requireMarking && (\n <div className={`${props.showInsightsMask && styles.requireMarking} position-absolute bottom-0 end-0 z-1 m-2`}>\n <div className={`${styles.badge} d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n </div>\n )}\n </div>\n }\n {!useVideoThumbnail &&\n <>\n {'videos' in (props.object as Playlist | Series) ? (\n <CollectionThumbnail\n collection={props.object}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n showMask={props.showCollectionMask}\n showVideoCount={props.showVideoCount}\n onlyCount={props.onlyCount}\n />\n ) : (\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n >\n {imageFallbackComponent}\n </BaseImage>\n )}\n </>\n }\n </div>\n </div>\n );\n}","import { format } from 'timeago.js';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { ShareActivityStatus } from 'libs/shared/enums/ShareActivityStatus';\n\ninterface ObjectWithDateShared {\n dateShared: string;\n}\n\ntype GroupedByDate<T extends ObjectWithDateShared> = { [date: string]: T[] };\n\nexport const ShareHelper = {\n groupByDateShared<T extends ObjectWithDateShared>(data: T[]): GroupedByDate<T> {\n const dateToObjectMapping: GroupedByDate<T> = ArrayHelper.groupBy(data, 'dateShared');\n\n const sortedDates = Object.keys(dateToObjectMapping).sort().reverse();\n\n // Create a sorted mapping between dates and the \"ObjectWithDateShared\" objects\n return sortedDates.reduce((acc: GroupedByDate<T>, date) => {\n const heading = format(date);\n\n if (!acc[heading])\n acc[heading] = [];\n\n acc[heading] = acc[heading].concat(dateToObjectMapping[date]);\n return acc;\n }, {});\n },\n\n mapActivityStatusToCheckMarkStatus(activityStatus: ShareActivityStatus): CheckMarkStatus {\n switch (activityStatus) {\n case ShareActivityStatus.Complete:\n return CheckMarkStatus.Complete;\n case ShareActivityStatus.Incomplete:\n return CheckMarkStatus.Incomplete;\n case ShareActivityStatus.None:\n return CheckMarkStatus.None;\n }\n },\n\n mapCheckMarkStatusToActivityStatus(checkMarkStatus: CheckMarkStatus): ShareActivityStatus {\n switch (checkMarkStatus) {\n case CheckMarkStatus.Complete:\n return ShareActivityStatus.Complete;\n case CheckMarkStatus.Incomplete:\n return ShareActivityStatus.Incomplete;\n case CheckMarkStatus.None:\n return ShareActivityStatus.None;\n }\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailTitle\":\"OsWjL\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './collection-thumbnail-title.scss';\n\ninterface BaseCollectionThumbnailTitleProps {\n title: string;\n}\n\nfunction BaseCollectionThumbnailTitle(props: BaseCollectionThumbnailTitleProps): JSX.Element {\n return (\n <h3 title={props.title} className='h6'>{props.title}</h3>\n );\n}\n\ninterface CollectionThumbnailTitleProps extends BaseCollectionThumbnailTitleProps {\n appLink: Core.AppLink;\n}\n\nexport function CollectionThumbnailTitle(props: CollectionThumbnailTitleProps) {\n if (!props.appLink) {\n return (\n <BaseCollectionThumbnailTitle {...props} />\n );\n }\n \n return (\n <AppLink appLink={props.appLink} className={`${styles.thumbnailTitle}`}>\n <BaseCollectionThumbnailTitle {...props} />\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"M4zat\",\"mask\":\"r0Ztg\",\"thumbnailContainer\":\"uD9dz\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnailTitle } from 'libs/shared/components/thumbnails/collection/title/CollectionThumbnailTitle';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Playlist, Series } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'shared.collectionThumbnail';\n\ntype SupportedContentType = Playlist | Series;\n\ninterface CollectionThumbnailProps {\n appLink?: Core.AppLink\n collection: SupportedContentType;\n imageOptions?: ImageOptions;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showMask?: boolean;\n showVideoCount?: boolean;\n onlyCount?: boolean;\n title?: string;\n titleAppLink?: Core.AppLink;\n subText?: string;\n subTextAppLink?: Core.AppLink;\n hoverText?: string;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps) {\n function getFirstVideo() {\n let collectionVideos = props.collection?.videos;\n\n if (!collectionVideos)\n return;\n\n if (!collectionVideos.count && props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.clips.count)\n collectionVideos = playlist.clips;\n\n if (playlist.interactives.count)\n collectionVideos = playlist.interactives;\n }\n\n return ArrayHelper.first(collectionVideos.data);\n }\n\n function getVideoCount() {\n let totalCount = 0;\n\n if (props.collection.videos && props.collection.videos.count) {\n totalCount += props.collection.videos.count;\n }\n\n if (props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.interactives?.count)\n totalCount += playlist.interactives.count;\n\n if (playlist.clips?.count)\n totalCount += playlist.clips.count;\n }\n\n return totalCount;\n }\n\n function getEntityType(collection: SupportedContentType) {\n if (MasterTypeHelper.isType<Playlist>(collection, MasterType.Playlist)) {\n return EntityType.Playlist;\n }\n\n if (MasterTypeHelper.isType<Series>(collection, MasterType.Series)) {\n return EntityType.Series;\n }\n }\n\n const firstVideo = getFirstVideo();\n const videoCount = getVideoCount();\n const showTexts = props.title?.length || props.subText?.length;\n\n const analyticsData = {\n id: props.collection.id.toString(),\n name: props.collection.name,\n\n ...props.analyticsData\n };\n\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: getEntityType(props.collection),\n \n ...props.analyticsOptions\n };\n\n return (\n <div>\n <div className={`position-relative ${styles.thumbnailContainer} z-1`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {props.showMask &&\n <div className={`${styles.mask} position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none`}>\n <div className={`${styles.badge} d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Play} className='svg-container text-white' />\n <p className='d-inline fw-medium text-white mb-0'>\n {props.hoverText?.length ?\n <span>{props.hoverText}</span> :\n <Text namespace={namespace} phrase='playAll' />\n }\n </p>\n </div>\n </div>\n }\n\n {firstVideo &&\n <VideoThumbnail\n video={firstVideo}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n hideRating\n hideDuration\n hideVideoTypeBadge\n />\n }\n\n {!firstVideo &&\n <div className='ratio ratio-16x9 bg-light rounded-3'>\n <div className='d-flex justify-content-center align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.Play} className='w-33 opacity-25 text-gray-400' />\n </div>\n </div>\n }\n\n {props.showVideoCount &&\n <div className={`${styles.badge} d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Series} className='svg-container text-white me-1' />\n <p className='d-inline fw-semibold text-white mb-0'>\n {props.onlyCount\n ? <span>{videoCount}</span>\n : <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n }\n </p>\n </div>\n }\n </AppLink>\n\n </div>\n \n {showTexts &&\n <div className='mt-2 d-flex flex-column'>\n {props.subText &&\n <TitleSubText title={props.subText} appLink={props.subTextAppLink}>\n {props.subText}\n </TitleSubText>\n }\n {props.title &&\n <CollectionThumbnailTitle\n title={props.collection.name}\n appLink={props.titleAppLink}\n />\n }\n </div>\n }\n </div>\n );\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"names":["namespace","BASE_IMAGE_CLASS_NAME","InsightsMask","className","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","useVideoThumbnail","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","type","svgContainerClassName","url","getBgColorClass","name","extraClasses","getImageProps","thumbnailMetadata","showVideoMetadata","hideBottomBar","hideDuration","hideMask","hideRating","hideVideoBadgeType","showInsightsMask","AppLink","appLink","VideoThumbnail","video","size","thumbnailSize","imageOptions","textPosition","ThumbnailTextPosition","requireMarking","Text","phrase","options","smartCount","CollectionThumbnail","collection","analyticsData","id","analyticsOptions","entity","ShareViewHelper","actionType","location","locationContext","showMask","showCollectionMask","showVideoCount","onlyCount","BaseImage","data","defaultProps","ShareHelper","groupByDateShared","dateToObjectMapping","Object","keys","sort","reverse","reduce","acc","date","heading","concat","mapActivityStatusToCheckMarkStatus","activityStatus","mapCheckMarkStatusToActivityStatus","checkMarkStatus","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","count","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","length","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","svgName","hoverText","hideVideoTypeBadge","TitleSubText","subTextAppLink","titleAppLink","SCROLL_TOLERANCE","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","scrollContainer","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","key","fetchNextPage","currentVal","nextCursor","hasMore","isFetching","getBoundingClientRect","height","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","statusCode","httpStatusClass","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","isNaN","test","parseInt","trim","replace","format","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","idx","floor","unit"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8010],{14604:(e,t,r)=>{r.d(t,{W:()=>i});var n=r(32735),l=r(83914),o=r(35223);const a={icon:"eCi4v"};function i(e){return n.createElement("div",{className:"alert alert-warning d-flex align-items-center px-2 mb-3 ".concat(e.className||"")},n.createElement(l.x,{svgName:o.vn.WarningOutline,className:"svg-container me-2 ".concat(a.icon)}),n.createElement("div",null,e.children))}},6748:(e,t,r)=>{r.d(t,{i:()=>O});var n=r(32735),l=r(42648),o=r(35509),a=r(91967),i=r(15611),c=r(17808),s=r(1287),u=r(83914),d=r(90281),m={opacity:"0.8",cursor:"grabbing"},f=r(35223);function v(e){return function(e){if(Array.isArray(e))return p(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return p(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function h(e){var t,r,n,l;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(r=e.current)||void 0===r?void 0:r.scrollLeft)+1<(null===(n=e.current)||void 0===n?void 0:n.scrollWidth)-(null===(l=e.current)||void 0===l?void 0:l.clientWidth)}}const b={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var y=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var l=0;for(n=Object.getOwnPropertySymbols(e);l<n.length;l++)t.indexOf(n[l])<0&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]])}return r};function E(e){var t,r;return e.column.canSort?n.createElement("span",{className:"".concat(b.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(r=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==r?r:"")},n.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):n.createElement(n.Fragment,null)}function w(e){var t,r,l,u,d,f,g,p,h={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(h.initialState={selectedRowIds:(g=e.initialSelectedRowIds,p={},g.forEach((function(e){return p[e]=!0})),p)}),e.getRowId&&(h.getRowId=e.getRowId);var b,y=o.useTable.apply(void 0,[h].concat((b=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 S(e)}(b)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(b)||function(e,t){if(e){if("string"==typeof e)return S(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?S(e,t):void 0}}(b)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))),w=y.getTableProps,O=y.getTableBodyProps,C=y.headerGroups,R=y.rows,A=y.prepareRow,I=y.toggleAllRowsSelected,N=y.setGlobalFilter,L=y.setHiddenColumns,k=y.state.sortBy;function j(){return!R.length&&e.emptyState?e.emptyState:R.map((function(t){A(t);var r=function(t){var r,n,l,o,i,c=a.q.isFunction(null===(r=e.theme)||void 0===r?void 0:r.row)?e.theme.row(t):null!==(l=null===(n=e.theme)||void 0===n?void 0:n.row)&&void 0!==l?l:"";return t.isSelected&&(null===(o=e.theme)||void 0===o?void 0:o.selectedRow)&&(c+=" ".concat(null===(i=e.theme)||void 0===i?void 0:i.selectedRow)),e.onSelectRow&&(c+=" cursor-pointer"),e.enableSortableRows&&(c+=" cursor-grab"),c}(t),l=!!e.getRowAppLink&&e.getRowAppLink(t);function o(){e.onSelectRow&&(e.allowSelectMultipleRows||I(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,a){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,a);return l?n.createElement("div",{role:"row",key:t.id},n.createElement(i.F,Object.assign({},e,c,{className:r,appLink:l}),T(t))):n.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:r,onClick:o}),T(t))}var u=t.getRowProps();return e.enableSortableRows?n.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:n.forwardRef((function(e,t){return c(e,t)}))}):c(u)}))}function T(t){return t.cells.map((function(r){var l=function(t,r){var n,l,o="";return"function"==typeof(null===(n=e.theme)||void 0===n?void 0:n.cell)&&(o=e.theme.cell(t,r)),"string"==typeof(null===(l=e.theme)||void 0===l?void 0:l.cell)&&(o=e.theme.cell),e.onSelectCell&&(o+=" cursor-pointer"),o}(t,r);return n.createElement("div",Object.assign({key:r.column.id},r.getCellProps(),{className:l,onClick:function(){e.onSelectCell&&e.onSelectCell(r)}}),r.render("Cell"))}))}return n.useEffect((function(){e.onSort&&e.onSort(k)}),[k]),n.useEffect((function(){e.globalFilter&&N(e.globalFilter)}),[e.globalFilter]),n.useEffect((function(){e.hiddenColumns&&L(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),n.createElement("div",Object.assign({},w(),{className:null!==(r=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==r?r:""}),n.createElement("div",{className:null!==(u=null===(l=e.theme)||void 0===l?void 0:l.header)&&void 0!==u?u:""},C.map((function(t){var r,l;return n.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(l=null===(r=e.theme)||void 0===r?void 0:r.headerRow)&&void 0!==l?l:""}),t.headers.map((function(t){var r,l;return n.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(l=null===(r=e.theme)||void 0===r?void 0:r.headerCell)&&void 0!==l?l:""}),t.render("Header",{renderSortIndicator:function(){return n.createElement(E,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&n.createElement(E,{column:t,theme:e.theme}))})))}))),n.createElement("div",Object.assign({},O(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?n.createElement(c.Q,{ids:R.map((function(e){return e.original.id})),getDragOverlay:function(t){var r,l,o=R.findIndex((function(e){return e.original.id===t})),a=R[o];return n.createElement("div",Object.assign({},e,{className:(r=e.theme,l="g-0 ",r&&(l+=r.row),l),style:m}),T(a))},onSortEnd:e.onSortingRowsEnd},j()):j()))}function O(e){var t=e.enableSlider,r=e.scrollIncrement,o=e.scrollable,i=y(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,r=n.useRef(null),l=(e=n.useState(h(r)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,l,o,a,i=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);c=!0);}catch(e){s=!0,l=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw l}}return i}}(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=l[0],i=l[1],c=a.q.throttle((function(){i(h(r))}),200),s=n.useCallback((function(e){var t;r.current&&(null===(t=r.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(i(h(r)),e.addEventListener("scroll",c)),r.current=e}),[]);return n.useEffect((function(){(null==r?void 0:r.current)&&i(h(r))}),[r]),{ref:s,scrollState:o,scroll:function(e){var t;null===(t=r.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=c.ref,u=c.scrollState,m=c.scroll;if(o)return n.createElement(l.$B,{renderTrackHorizontal:function(){return n.createElement("div",{className:b.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},n.createElement(w,Object.assign({},i)));if(!t)return n.createElement(w,Object.assign({},i));function f(e){m(r*("right"===e?1:-1))}return n.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},n.createElement("div",{className:"px-4"},n.createElement("div",{className:"position-relative"},n.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),n.createElement("div",{className:"".concat(b.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},n.createElement(w,Object.assign({},i))),n.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}O.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},81803:(e,t,r)=>{r.d(t,{d:()=>v});var n=r(32735),l=r(81886),o=r(23481),a=r(49935),i=r(22902),c=r(14070),s=r(97291),u=r(96368);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var m="settings.settingsLayout",f=function(e){var t=(0,i.T)().hasPermissions,r=(0,u.e)();if(e)return t(e);var n=l.Q.C$.getCurrentAppLink();return n.application!==s.O.SETTINGS||r.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===n.action}))}))};function v(e){var t,r=f(e.requiredPermissions);if(n.useEffect((function(){r||l.Q.C$.trigger({application:s.O.SETTINGS,action:c.e.Settings.HOME},{replace:!0})}),[r]),!r)return n.createElement(n.Fragment,null);var i,u=e.breadcrumbs.map((function(t,r){return{name:t,appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME},active:r===e.breadcrumbs.length-1}}));return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex align-items-center justify-content-between"},n.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),n.createElement("div",{className:"pb-3"},n.createElement(a.Oo,{breadcrumbs:[{name:o.T.getPhrase(m,"settingsBreadcrumb"),appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME}}].concat((i=u,function(e){if(Array.isArray(e))return d(e)}(i)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(i)||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.description&&n.createElement(n.Fragment,null,n.createElement("p",null,e.description),n.createElement("hr",null)),e.children)}},28875:(e,t,r)=>{r.r(t),r.d(t,{ArchivedClassroomsView:()=>L});var n=r(32735),l=r(70680),o=r(23481),a=r(20354),i=r(14604),c=r(87801),s=r(83345),u=r(94644),d=r(39151),m=r(31949),f=r(69883),v=r(60115),g=r(79612),p=r(14070),h=r(97291),b=r(90681),S=r(19948),y=r(88630),E=r(81803),w=r(97958),O=r(99742),C="settings.archivedClassroomsEmptyState";function R(){return n.createElement(s.D.Provider,{value:C},n.createElement(w.u,null,n.createElement(w.u.Image,{src:O.W.EmptyStates.Classrooms.CLASSROOMS}),n.createElement(w.u.Heading,null,n.createElement(s.x,{phrase:"heading"})),n.createElement(w.u.Info,null,n.createElement(s.x,{phrase:"info"})),n.createElement(w.u.Cta,{appLink:{application:h.O.CLASSROOMS,action:p.e.Classrooms.HOME},className:"btn btn-dark",text:o.T.getPhrase(C,"cta")})))}var A="settings.archivedClassrooms",I=o.T.encloseNamespace(A),N={delete:{application:h.O.CLASSROOMS,action:p.e.Classrooms.DELETE_CLASSROOM},retrieve:{application:h.O.CLASSROOMS,action:p.e.Classrooms.RETRIEVE_CLASSROOM}};function L(){(0,g.M)({title:I("pageTitle")});var e=(0,f.Z)(),t=(0,l.I0)(),r=function(e){return y.F.getArchived(e)},p=function(e){return a.a.getFetch(t)(r(e))},h=a.a.useBasicFetch(d.L.config()),w=a.a.useBasicFetch(m.N.currentUser()),O=(0,v.K)(r,p,(function(t,r){if(1===t)return(0,u.r)(r);e.error(o.T.getPhrase(A,"error"))})),C=O.items,L=O.hasMore,k=O.isFetching,j=O.nextCursor;return n.createElement(E.d,{heading:I("heading"),breadcrumbs:[I("breadcrumb")]},!!(null==C?void 0:C.length)&&n.createElement(i.W,null,n.createElement(s.x,{namespace:A,phrase:"note"})),C&&h.hasCompleted?C.length?n.createElement(n.Fragment,null,n.createElement(b.D,{allClassrooms:C,imageCdnUrl:h.data.imageCdnUrl,appLinks:N,refreshTable:k,currentUser:w.data}),(L||k)&&n.createElement(c._,{isFetching:k,fetchNext:p,nextCursor:j})):n.createElement(R,null):n.createElement(S.I,null))}}}]);
2
+ //# sourceMappingURL=8010-e9163f5bee-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8010-e9163f5bee-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/warning-alert/warning-alert.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/warning-alert/WarningAlert.tsx","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/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/views/archived-classrooms/empty-state/ArchivedClassroomsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/settings/views/archived-classrooms/ArchivedClassroomsView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"eCi4v\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './warning-alert.scss';\n\ninterface Props extends HashObject {\n className?: string;\n}\n\ntype WarningAlertProps = React.PropsWithChildren<Props>;\n\nexport function WarningAlert(props: WarningAlertProps): JSX.Element {\n return (\n <div className={`alert alert-warning d-flex align-items-center px-2 mb-3 ${props.className || ''}`}>\n <SvgContainer\n svgName={cvSvgLibrary.WarningOutline}\n className={`svg-container me-2 ${styles.icon}`}\n />\n <div>\n {props.children}\n </div>\n </div>\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 React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, 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 = 'settings.archivedClassroomsEmptyState';\n\nexport function ArchivedClassroomsEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Classrooms.CLASSROOMS} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n\n <EmptyState.Cta\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n }}\n className='btn btn-dark'\n text={LanguageService.getPhrase(namespace, 'cta')}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { WarningAlert } from 'libs/shared/apps/user-manager/components/warning-alert/WarningAlert';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Classroom, Config, CurrentUser } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomsTable } from 'apps/classrooms/components/classrooms-table/ClassroomsTable';\nimport { PartialClassroomsTable } from 'apps/classrooms/components/classrooms-table/partial-classrooms-table/PartialClassroomsTable';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { ArchivedClassroomsTableApplinks } from 'apps/classrooms/interfaces/ClassroomsTableApplinks';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\n\nimport { ArchivedClassroomsEmptyState } from './empty-state/ArchivedClassroomsEmptyState';\n\nconst namespace = 'settings.archivedClassrooms';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst applinks: ArchivedClassroomsTableApplinks = {\n delete: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.DELETE_CLASSROOM\n },\n retrieve: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.RETRIEVE_CLASSROOM\n }\n};\n\nexport function ArchivedClassroomsView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const alerts = useAlerts();\n const dispatch = useDispatch();\n\n const getClassroomsRequest = (cursor?: string) => ClassroomRequests.getArchived(cursor);\n const fetchNext = (cursor?: string) => Flight.getFetch(dispatch)(getClassroomsRequest(cursor));\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const {\n items,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<Classroom>(getClassroomsRequest, fetchNext, onError);\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n {!!items?.length && (\n <WarningAlert><Text namespace={namespace} phrase='note'/></WarningAlert>\n )}\n\n {(() => {\n if (!items || !config.hasCompleted)\n return <PartialClassroomsTable />;\n \n if (!items.length)\n return <ArchivedClassroomsEmptyState />;\n\n return (\n <>\n <ClassroomsTable\n allClassrooms={items}\n imageCdnUrl={config.data.imageCdnUrl}\n appLinks={applinks}\n refreshTable={isFetching}\n currentUser={currentUser.data}\n />\n\n {(hasMore || isFetching) && (\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} nextCursor={nextCursor} />\n )}\n </>\n );\n })()}\n </SettingsLayout>\n );\n}"],"names":["WarningAlert","props","className","SvgContainer","svgName","children","DragOverlayStyles","opacity","cursor","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","column","canSort","isSorted","theme","sortIndicator","isSortedDesc","size","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","sortBy","initialSortBy","initialSelectedRowIds","selectedRowIds","forEach","id","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","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","breadcrumbs","name","i","active","heading","headingButton","description","ArchivedClassroomsEmptyState","value","EmptyState","src","ImageUrls","Text","phrase","text","LanguageService","getPhrase","applinks","delete","retrieve","ArchivedClassroomsView","useSetPageMetadata","title","alerts","dispatch","getClassroomsRequest","ClassroomRequests","fetchNext","config","ConfigRequests","currentUser","UserRequests","pageNumber","httpStatus","error","items","hasMore","isFetching","nextCursor","hasCompleted","ClassroomsTable","allClassrooms","imageCdnUrl","appLinks","refreshTable","InfiniteScrollFooter","PartialClassroomsTable"],"sourceRoot":""}
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8410],{38502:(e,t,r)=>{r.d(t,{r:()=>m});var n=r(32735),a=r(49985),o=r(15611),i=r(18559),c=r(11607),s=r(83914),l=r(22771);function u(e){return n.createElement(n.Fragment,null,!!e.tab.svgName&&n.createElement("div",{className:e.tab.name?"pe-1":""},n.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&n.createElement("div",{className:"ps-2"},n.createElement(i.C,{type:i.g.Count,data:e.tab.count})))}function m(e){var t;return n.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},n.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return n.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?n.createElement(o.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},n.createElement(u,{tab:e})):n.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&a.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},n.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},59278:(e,t,r)=>{r.d(t,{d:()=>d});var n=r(32735),a=r(23481),o=r(83657),i=r(38502),c=r(28469),s=r(83345),l=r(79967),u=r(14070),m=r(97291);const h={searchContainer:"rwTB7"};var f="classrooms.classroomsHeader",p=a.T.encloseNamespace(f);function d(e){var t,r=(0,l.k)(),a=r.xs||r.sm,d=[{name:p("classroomsTab"),appLink:{application:m.O.CLASSROOMS,action:u.e.Classrooms.HOME},active:"classrooms"===e.activeTab}];return e.hasShareFlowV2&&d.push({name:p("openClassroomsTab"),appLink:{application:m.O.CLASSROOMS,action:u.e.Classrooms.OPEN_CLASSROOMS},active:"open-classrooms"===e.activeTab}),n.createElement("div",null,!!e.hasRostering&&n.createElement("div",{className:"my-3"},n.createElement(c.P,{type:"general"})),n.createElement("div",{className:"d-flex align-items-center mb-3"},n.createElement("h1",{className:"flex-fill h2 me-3 my-1"},n.createElement(s.x,{namespace:f,phrase:"heading"})),e.searchBar&&n.createElement("div",{className:"d-flex"},!a&&n.createElement("div",{className:"".concat(h.searchContainer," d-flex mb-2 mb-sm-0 me-2")},e.searchBar),n.createElement(o.e,{actions:null!==(t=e.actions)&&void 0!==t?t:[],actionsDropdownClassName:"btn btn-outline-dark"}))),d.length>1&&n.createElement("div",{className:"mb-3"},n.createElement(i.r,{tabs:d})),a&&e.searchBar?n.createElement("div",{className:"mb-3"},e.searchBar):null)}},63578:(e,t,r)=>{r.d(t,{Y:()=>h});var n=r(70680),a=r(23481),o=r(20354),i=r(94644),c=r(31949),s=r(69883),l=r(60115),u=r(88630),m=r(1211),h=function(e,t){var r=o.a.useBasicFetch(c.N.currentUser()),h=(0,s.Z)(),f=(0,n.I0)(),p=function(n){return e?(null==t?void 0:t.withStudentsCount)?m.J.searchClassroomsV4(e,n):m.J.searchClassrooms(e,r.data.customerId,n):(null==t?void 0:t.withStudentsCount)?u.F.getPublishedWithStudents(r.data.id,n):u.F.getPublished(r.data.id,n)},d=function(e){return o.a.getFetch(f)(p(e))},v=(0,l.K)(!!r.data&&p,d,(function(e,t){if(1===e)return(0,i.r)(t);h.error(a.T.getPhrase("classrooms.hooks","error"))}),(function(t){return e?t.results:t.data}));return Object.assign(Object.assign({},v),{fetchNext:d})}},86828:(e,t,r)=>{r.r(t),r.d(t,{ClassroomsView:()=>V});var n=r(32735),a=r(23481),o=r(81886),i=r(20354),c=r(65858),s=r(34055),l=r(87801),u=r(83345),m=r(16714),h=r(67058),f=r(39151),p=r(44538),d=r(31949),v=r(79967),y=r(91286),g=r(22902),E=r(79612),b=r(37802),w=r(35223),S=r(14070),C=r(97291),L=r(59278),x=r(90681),O=r(19948),N=r(88630),k=r(63578),F=r(97958),_=r(99742),P="classrooms.classroomsEmptyState";function T(e){var t=e.query;return n.createElement(u.D.Provider,{value:P},n.createElement(F.u,null,n.createElement(F.u.Image,{src:_.W.EmptyStates.Classrooms.CLASSROOMS}),n.createElement(F.u.Heading,null,n.createElement(u.x,{phrase:"empty",options:{query:t}}))))}var R="classrooms.classroomsEmptyState";function A(){return n.createElement(u.D.Provider,{value:R},n.createElement(F.u,null,n.createElement(F.u.Image,{src:_.W.EmptyStates.Classrooms.CLASSROOMS}),n.createElement(F.u.Heading,null,n.createElement(u.x,{phrase:"heading"})),n.createElement(F.u.Info,null,n.createElement(u.x,{phrase:"info"})),n.createElement(F.u.Cta,{text:a.T.getPhrase(R,"cta"),icon:w.vn.Plus,appLink:{application:C.O.CLASSROOMS,action:S.e.Classrooms.NEW_CLASSROOM}})))}function j(e){return j="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},j(e)}function M(){M=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var o=t&&t.prototype instanceof y?t:y,i=Object.create(o.prototype),c=new _(n||[]);return a(i,"_invoke",{value:O(e,r,c)}),i}function m(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var h="suspendedStart",f="suspendedYield",p="executing",d="completed",v={};function y(){}function g(){}function E(){}var b={};l(b,i,(function(){return this}));var w=Object.getPrototypeOf,S=w&&w(w(P([])));S&&S!==r&&n.call(S,i)&&(b=S);var C=E.prototype=y.prototype=Object.create(b);function L(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function r(a,o,i,c){var s=m(e[a],e,o);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==j(u)&&n.call(u,"__await")?t.resolve(u.__await).then((function(e){r("next",e,i,c)}),(function(e){r("throw",e,i,c)})):t.resolve(u).then((function(e){l.value=e,i(l)}),(function(e){return r("throw",e,i,c)}))}c(s.arg)}var o;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return o=o?o.then(a,a):a()}})}function O(t,r,n){var a=h;return function(o,i){if(a===p)throw Error("Generator is already running");if(a===d){if("throw"===o)throw i;return{value:e,done:!0}}for(n.method=o,n.arg=i;;){var c=n.delegate;if(c){var s=N(c,n);if(s){if(s===v)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===h)throw a=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=p;var l=m(t,r,n);if("normal"===l.type){if(a=n.done?d:f,l.arg===v)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(a=d,n.method="throw",n.arg=l.arg)}}}function N(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,N(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var o=m(a,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,v;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,v):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function F(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function P(t){if(t||""===t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function r(){for(;++a<t.length;)if(n.call(t,a))return r.value=t[a],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(j(t)+" is not iterable")}return g.prototype=E,a(C,"constructor",{value:E,configurable:!0}),a(E,"constructor",{value:g,configurable:!0}),g.displayName=l(E,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,E):(e.__proto__=E,l(e,s,"GeneratorFunction")),e.prototype=Object.create(C),e},t.awrap=function(e){return{__await:e}},L(x.prototype),l(x.prototype,c,(function(){return this})),t.AsyncIterator=x,t.async=function(e,r,n,a,o){void 0===o&&(o=Promise);var i=new x(u(e,r,n,a),o);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},L(C),l(C,s,"Generator"),l(C,i,(function(){return this})),l(C,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=P,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(F),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function a(n,a){return c.type="throw",c.arg=t,r.next=n,a&&(r.method="next",r.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(s&&l){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,v):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),v},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),F(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;F(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:P(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}var I=function(e,t,r,n){return new(r||(r=Promise))((function(a,o){function i(e){try{s(n.next(e))}catch(e){o(e)}}function c(e){try{s(n.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,c)}s((n=n.apply(e,t||[])).next())}))},B="classrooms.classrooms",G=a.T.encloseNamespace(B),q=C.O.CLASSROOMS,D={application:q,action:S.e.Classrooms.NEW_CLASSROOM},Z={link:{application:q,action:S.e.Classrooms.GENERATE_JOIN_LINK},archive:{application:q,action:S.e.Classrooms.ARCHIVE_CLASSROOM},edit:{application:q,action:S.e.Classrooms.EDIT_CLASSROOM},classroom:{application:q,action:S.e.Classrooms.CLASSROOM_HOME}};function H(){return n.createElement(s.W,{id:"classroom-search",searchAppLink:{application:C.O.CLASSROOMS,action:S.e.Classrooms.HOME},searchIndices:["classroom"],analyticsOptions:{entity:c.py.Classroom,location:c.LZ.ClassroomsList},placeholder:G("searchBarPlaceholder")})}function V(e){var t,r,s,S,C=(0,b.r)(null).hasShareFlowV2,F=(0,g.T)().hasPermissions,_=(0,v.k)();(0,E.M)({title:G("pageTitle")});var P=i.a.useGetFetchAsync(),R=i.a.useBasicFetch(d.N.currentUser()),j=i.a.useBasicFetch(f.L.config()),q=i.a.useBasicFetch(p.K.getRostering()),V=(null===(t=q.data)||void 0===t?void 0:t.status)&&"None"!==q.data.status,W=i.a.useBasicFetch(N.F.getPinnedClassrooms(null===(r=R.data)||void 0===r?void 0:r.id,null===(s=R.data)||void 0===s?void 0:s.customerId)),U=(0,k.Y)(e.query);function J(e,t,r,n){return I(this,void 0,void 0,M().mark((function a(){var o;return M().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return o=t?N.F.pinClassroom:N.F.unpinClassroom,a.prev=1,a.next=4,P(o(e));case 4:r(),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(1),n();case 10:case"end":return a.stop()}}),a,null,[[1,7]])})))}if((0,y.v)(W),!F(m.C.ViewClassrooms))return o.Q.Ry.throw(new h.d),n.createElement(n.Fragment,null);var Y=!!(null===(S=null==U?void 0:U.items)||void 0===S?void 0:S.length);return n.createElement(u.D.Provider,{value:B},n.createElement("div",{className:"px-3"},n.createElement(L.d,{searchBar:Y||e.query?n.createElement(H,null):null,actions:[{label:a.T.getPhrase(B,"newClassroom"),appLink:D,svgName:w.vn.Plus,className:"btn btn-outline-dark",disabled:V,tooltip:V?G("disabledByRostering"):"",analyticsOptions:{actionType:c.Vw.Create,entity:c.py.Classroom,workflowPhase:c.eu.Start,location:c.LZ.ClassroomsList},button:!_.xs}],activeTab:"classrooms",hasRostering:V,hasShareFlowV2:C}),function(){var t,r;return U.items&&W.hasCompleted&&q.hasCompleted?Y||e.query?!Y&&e.query?n.createElement(T,{query:e.query}):n.createElement(n.Fragment,null,n.createElement(x.D,{pinnedClassrooms:null!==(r=null===(t=W.data)||void 0===t?void 0:t.data)&&void 0!==r?r:[],allClassrooms:U.items,query:e.query,imageCdnUrl:j.data.imageCdnUrl,appLinks:Z,onTogglePin:J,refreshTable:U.isFetching,currentUser:R.data,hasRostering:V}),(U.isFetching||U.nextCursor)&&n.createElement(l._,{isFetching:U.isFetching,fetchNext:U.fetchNext,nextCursor:U.nextCursor})):n.createElement(A,null):n.createElement(O.I,null)}()))}},22771:(e,t,r)=>{r.d(t,{Z:()=>n});const n={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
3
+ //# sourceMappingURL=8410-1f1fd5ccf0-lite.chunk.js.map