@clickview/lite 0.52.3-rc.1 → 0.52.4-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{1329-lite-ed09e82f2b.chunk.css → 1329-lite-cdc45079de.chunk.css} +1 -1
- package/dist/css/{6094-lite-371570d4ad.chunk.css → 1760-lite-19ef9620ac.chunk.css} +1 -1
- package/dist/css/{5549-lite-9903803dfd.chunk.css → 3640-lite-d751a30ca4.chunk.css} +1 -1
- package/dist/css/{431-lite-49ed0485bd.chunk.css → 431-lite-c2c2516537.chunk.css} +1 -1
- package/dist/css/{5660-lite-3a211c1297.chunk.css → 4683-lite-15b9d982f3.chunk.css} +1 -1
- package/dist/css/{5466-lite-5d0d45cb7d.chunk.css → 5466-lite-1b4fd17947.chunk.css} +1 -1
- package/dist/css/{3640-lite-9903803dfd.chunk.css → 5549-lite-d751a30ca4.chunk.css} +1 -1
- package/dist/css/{5587-lite-6e77f9442a.chunk.css → 5587-lite-304279013c.chunk.css} +1 -1
- package/dist/css/{4683-lite-3a211c1297.chunk.css → 5660-lite-15b9d982f3.chunk.css} +1 -1
- package/dist/css/{6054-lite-fdc8362cf4.chunk.css → 6054-lite-0b2c72f84f.chunk.css} +1 -1
- package/dist/css/{1760-lite-371570d4ad.chunk.css → 6094-lite-19ef9620ac.chunk.css} +1 -1
- package/dist/css/{7954-lite-b5558736f9.chunk.css → 7954-lite-95ad75b04d.chunk.css} +1 -1
- package/dist/css/{9808-lite-5d0d45cb7d.chunk.css → 9808-lite-1b4fd17947.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1329-b3e3f5d25d-lite.chunk.js → 1329-57aa3d33cb-lite.chunk.js} +2 -2
- package/dist/scripts/{1329-b3e3f5d25d-lite.chunk.js.map → 1329-57aa3d33cb-lite.chunk.js.map} +1 -1
- package/dist/scripts/1518-c1105e83b0-lite.chunk.js +2 -0
- package/dist/scripts/1518-c1105e83b0-lite.chunk.js.map +1 -0
- package/dist/scripts/{1760-7218da90dd-lite.chunk.js → 1760-19e88443c6-lite.chunk.js} +1 -1
- package/dist/scripts/{1760-7218da90dd-lite.chunk.js.map → 1760-19e88443c6-lite.chunk.js.map} +1 -1
- package/dist/scripts/1798-fc93a2f7a6-lite.chunk.js +2 -0
- package/dist/scripts/1798-fc93a2f7a6-lite.chunk.js.map +1 -0
- package/dist/scripts/2094-0f30600b14-lite.chunk.js +2 -0
- package/dist/scripts/{5710-c2804ffafe-lite.chunk.js.map → 2094-0f30600b14-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3640-5b0a186dfd-lite.chunk.js → 3640-ac303efb99-lite.chunk.js} +1 -1
- package/dist/scripts/{3640-5b0a186dfd-lite.chunk.js.map → 3640-ac303efb99-lite.chunk.js.map} +1 -1
- package/dist/scripts/3969-c0160d0139-lite.chunk.js +2 -0
- package/dist/scripts/3969-c0160d0139-lite.chunk.js.map +1 -0
- package/dist/scripts/422-ee640f76c5-lite.chunk.js +2 -0
- package/dist/scripts/422-ee640f76c5-lite.chunk.js.map +1 -0
- package/dist/scripts/{431-5e609b8dbd-lite.chunk.js → 431-586d197eeb-lite.chunk.js} +1 -1
- package/dist/scripts/{431-5e609b8dbd-lite.chunk.js.map → 431-586d197eeb-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4683-be07f1375c-lite.chunk.js → 4683-ce52da47d8-lite.chunk.js} +1 -1
- package/dist/scripts/{4683-be07f1375c-lite.chunk.js.map → 4683-ce52da47d8-lite.chunk.js.map} +1 -1
- package/dist/scripts/5220-58d9529f21-lite.chunk.js +3 -0
- package/dist/scripts/5220-58d9529f21-lite.chunk.js.map +1 -0
- package/dist/scripts/{5466-0500ed8c29-lite.chunk.js → 5466-401f301cd1-lite.chunk.js} +1 -1
- package/dist/scripts/{5466-0500ed8c29-lite.chunk.js.map → 5466-401f301cd1-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5549-d19ed5a9c6-lite.chunk.js → 5549-ae40aeb0f8-lite.chunk.js} +1 -1
- package/dist/scripts/{5549-d19ed5a9c6-lite.chunk.js.map → 5549-ae40aeb0f8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5587-3de8761ca3-lite.chunk.js → 5587-d27030e106-lite.chunk.js} +1 -1
- package/dist/scripts/{5587-3de8761ca3-lite.chunk.js.map → 5587-d27030e106-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5660-268adb479d-lite.chunk.js → 5660-a356acdbca-lite.chunk.js} +1 -1
- package/dist/scripts/{5660-268adb479d-lite.chunk.js.map → 5660-a356acdbca-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6054-fcfe84a18d-lite.chunk.js → 6054-cf9311ce64-lite.chunk.js} +1 -1
- package/dist/scripts/{6054-fcfe84a18d-lite.chunk.js.map → 6054-cf9311ce64-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6094-063cffe417-lite.chunk.js → 6094-d5fa8b07dc-lite.chunk.js} +1 -1
- package/dist/scripts/{6094-063cffe417-lite.chunk.js.map → 6094-d5fa8b07dc-lite.chunk.js.map} +1 -1
- package/dist/scripts/6450-601f889072-lite.chunk.js +2 -0
- package/dist/scripts/6450-601f889072-lite.chunk.js.map +1 -0
- package/dist/scripts/6544-fd0c4d43c1-lite.chunk.js +2 -0
- package/dist/scripts/6544-fd0c4d43c1-lite.chunk.js.map +1 -0
- package/dist/scripts/6572-75c435eae1-lite.chunk.js +2 -0
- package/dist/scripts/6572-75c435eae1-lite.chunk.js.map +1 -0
- package/dist/scripts/{7954-9a3694b784-lite.chunk.js → 7954-87777549a2-lite.chunk.js} +1 -1
- package/dist/scripts/{7954-9a3694b784-lite.chunk.js.map → 7954-87777549a2-lite.chunk.js.map} +1 -1
- package/dist/scripts/8801-4b8d3958b4-lite.chunk.js +2 -0
- package/dist/scripts/8801-4b8d3958b4-lite.chunk.js.map +1 -0
- package/dist/scripts/{9674-1ce4fe796c-lite.chunk.js → 9674-f560ed51ea-lite.chunk.js} +2 -2
- package/dist/scripts/9674-f560ed51ea-lite.chunk.js.map +1 -0
- package/dist/scripts/{9808-5ce9fc5d84-lite.chunk.js → 9808-e80883e731-lite.chunk.js} +2 -2
- package/dist/scripts/{9808-5ce9fc5d84-lite.chunk.js.map → 9808-e80883e731-lite.chunk.js.map} +1 -1
- package/dist/scripts/{bundle-af42b7e6d6.min.js → bundle-507079f8c6.min.js} +3 -3
- package/dist/scripts/{bundle-af42b7e6d6.min.js.map → bundle-507079f8c6.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1518-8275a95d07-lite.chunk.js +0 -2
- package/dist/scripts/1518-8275a95d07-lite.chunk.js.map +0 -1
- package/dist/scripts/1798-972b0f3769-lite.chunk.js +0 -2
- package/dist/scripts/1798-972b0f3769-lite.chunk.js.map +0 -1
- package/dist/scripts/2120-2e824a172a-lite.chunk.js +0 -2
- package/dist/scripts/2120-2e824a172a-lite.chunk.js.map +0 -1
- package/dist/scripts/3969-525c157e0c-lite.chunk.js +0 -2
- package/dist/scripts/3969-525c157e0c-lite.chunk.js.map +0 -1
- package/dist/scripts/422-5773602f61-lite.chunk.js +0 -2
- package/dist/scripts/422-5773602f61-lite.chunk.js.map +0 -1
- package/dist/scripts/5710-c2804ffafe-lite.chunk.js +0 -2
- package/dist/scripts/6450-2745feb746-lite.chunk.js +0 -2
- package/dist/scripts/6450-2745feb746-lite.chunk.js.map +0 -1
- package/dist/scripts/6572-4dda098022-lite.chunk.js +0 -2
- package/dist/scripts/6572-4dda098022-lite.chunk.js.map +0 -1
- package/dist/scripts/9620-d6dd77fedc-lite.chunk.js +0 -3
- package/dist/scripts/9620-d6dd77fedc-lite.chunk.js.map +0 -1
- package/dist/scripts/9674-1ce4fe796c-lite.chunk.js.map +0 -1
- package/dist/scripts/999-1afd6be8dc-lite.chunk.js +0 -2
- package/dist/scripts/999-1afd6be8dc-lite.chunk.js.map +0 -1
- /package/dist/css/{9620-lite-8b4a93ca31.chunk.css → 5220-lite-8b4a93ca31.chunk.css} +0 -0
- /package/dist/css/{2120-lite-d46c2d634c.chunk.css → 6544-lite-d46c2d634c.chunk.css} +0 -0
- /package/dist/css/{999-lite-c88eb54bee.chunk.css → 8801-lite-c88eb54bee.chunk.css} +0 -0
- /package/dist/scripts/{1329-b3e3f5d25d-lite.chunk.js.LICENSE.txt → 1329-57aa3d33cb-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9620-d6dd77fedc-lite.chunk.js.LICENSE.txt → 5220-58d9529f21-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9808-5ce9fc5d84-lite.chunk.js.LICENSE.txt → 9808-e80883e731-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-af42b7e6d6.min.js.LICENSE.txt → bundle-507079f8c6.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/9674-f560ed51ea-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/sortable/SortableContainerWrapper.tsx","file:///app/packages/libs/shared/src/components/sortable/SortableItemWrapper.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/libs/shared/src/components/widgets/widget-button/widget-button.scss","file:///app/packages/libs/shared/src/components/widgets/widget-button/WidgetButton.tsx"],"sourcesContent":["import React from 'react';\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n DropAnimation,\n KeyboardSensor,\n Modifiers,\n PointerSensor,\n useSensor,\n useSensors } from '@dnd-kit/core';\nimport {\n restrictToVerticalAxis\n} from '@dnd-kit/modifiers';\nimport {\n rectSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n SortingStrategy,\n verticalListSortingStrategy } from '@dnd-kit/sortable';\n\ninterface SortableContainerWrapperProps {\n ids: string[];\n getDragOverlay: (id: string) => JSX.Element;\n onSortEnd: (event: DragEndEvent) => void;\n onSortStart?: (event: DragStartEvent) => void;\n dropAnimation?: DropAnimation;\n disabled?: boolean;\n vertical?: boolean;\n}\n\nSortableContainerWrapper.defaultProps = {\n dropAnimation: { duration: 250, easing: 'ease' },\n vertical: true\n};\n\nexport function SortableContainerWrapper(\n props: React.PropsWithChildren<SortableContainerWrapperProps>\n): JSX.Element {\n const [ activeId, setActiveId ] = React.useState(null);\n\n function onSortStart(event: DragStartEvent): void {\n setActiveId(event.active.id);\n props.onSortStart?.(event);\n }\n\n function onSortEnd(event: DragEndEvent): void {\n setActiveId(null);\n props.onSortEnd(event);\n }\n\n function getModifiers(): Modifiers {\n if (!props.vertical)\n return [];\n\n return [restrictToVerticalAxis];\n }\n\n function getSortingStrategy(): SortingStrategy {\n if (props.vertical)\n return verticalListSortingStrategy;\n\n return rectSortingStrategy;\n }\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 10\n }\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n \n if (props.disabled)\n return <>{props.children}</>;\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={onSortStart}\n onDragEnd={onSortEnd}\n modifiers={getModifiers()}\n >\n <SortableContext\n items={props.ids}\n strategy={getSortingStrategy()}\n >\n {props.children}\n </SortableContext>\n\n <DragOverlay dropAnimation={props.dropAnimation}>\n {activeId ? props.getDragOverlay(activeId) : null}\n </DragOverlay>\n </DndContext>\n );\n}","import React from 'react';\nimport { DraggableAttributes } from '@dnd-kit/core';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\ntype DragDirection = 'up' | 'down';\n\nexport type PropsWithSortableItemProps<T> = T & {\n dragAttributes?: DraggableAttributes;\n dragListeners?: HashObject;\n dragDirection?: DragDirection;\n};\n\ninterface SortableItemWrapperProps<TProps> {\n id: string;\n childProps: TProps;\n childComponent: (props: PropsWithSortableItemProps<TProps>) => JSX.Element;\n}\n\nfunction getDragDirection(index: number, activeIndex: number, overIndex: number): DragDirection {\n if (activeIndex !== index)\n return null;\n\n if (overIndex > activeIndex)\n return 'down';\n\n if (overIndex < activeIndex)\n return 'up';\n\n return null;\n}\n\nexport function SortableItemWrapper<TProps>(props: SortableItemWrapperProps<TProps>): JSX.Element {\n const {\n setNodeRef,\n transform,\n transition,\n isSorting,\n listeners,\n attributes,\n activeIndex,\n overIndex,\n index\n } = useSortable({ id: props.id });\n\n const style: HashObject = {\n transform: CSS.Transform.toString(transform),\n transition,\n touchAction: 'none',\n position: 'relative'\n };\n\n if (isSorting && index === activeIndex) {\n style.visibility = 'hidden';\n }\n\n const Children = props.childComponent;\n const dragDirection = getDragDirection(index, activeIndex, overIndex);\n\n return (\n <Children\n {...props.childProps}\n ref={setNodeRef}\n style={style}\n dragListeners={listeners}\n dragAttributes={attributes}\n dragDirection={dragDirection}\n />\n );\n}","export const DragOverlayStyles = { opacity: '0.8', cursor: 'grabbing' };","import React from 'react';\nimport { PluginHook, useBlockLayout, useFilters, useFlexLayout, useGlobalFilter, useRowSelect, useSortBy } from 'react-table';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface PluginOptions {\n allowFiltering?: boolean;\n allowGlobalFiltering?: boolean;\n layout?: 'flex' | 'block';\n}\n\nexport function getPlugins<T extends HashObject>(props: PluginOptions): PluginHook<T>[] {\n let plugins: PluginHook<T>[] = [\n useSortBy,\n useRowSelect,\n props.layout === 'flex' ? useFlexLayout : useBlockLayout\n ];\n\n if (props.allowFiltering)\n plugins = [\n ...plugins,\n useFilters\n ];\n\n if (props.allowGlobalFiltering)\n plugins = [\n ...plugins,\n useGlobalFilter\n ];\n\n return plugins;\n}\n\nexport function getSelectedRowIds(ids: string[]): Record<string, boolean> {\n const idHash: Record<string, boolean> = {};\n\n ids.forEach(id => idHash[id] = true);\n\n return idHash;\n}\n\ninterface TableScrollState {\n canScrollLeft: boolean;\n canScrollRight: boolean;\n}\n\nfunction calculateScrollState(ref: React.MutableRefObject<HTMLDivElement>): TableScrollState {\n const canScrollLeft = ref.current?.scrollLeft > 0;\n const canScrollRight = ref.current?.scrollLeft < 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>();\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 { 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;\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 \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 };\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 = 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(): JSX.Element[] {\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\n scrollable?: boolean;\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-n3 overflow-hidden-x'>\n <div className='px-3'>\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} 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}","// extracted by mini-css-extract-plugin\nexport default {\"buttonContainer\":\"_ejId\",\"left\":\"VSAPU\",\"right\":\"kgeXh\",\"button\":\"gAsE9\",\"hoverText\":\"APA36\",\"buttonHover\":\"cqD75\",\"chevron\":\"Ev4hr\",\"extendedClickableArea\":\"AtsWP\",\"gradientRight\":\"ZuAif\",\"gradientLeft\":\"Pt3nx\",\"topPos\":\"BVcIS\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { FixedWidgetState } from 'libs/shared/components/widgets/fixed-widget';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './widget-button.scss';\n\nconst namespace = 'shared.widgetButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum WidgetButtonDirection {\n Left,\n Right\n}\n\ninterface WidgetButtonProps {\n onClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n direction: WidgetButtonDirection;\n hide: boolean;\n contents?: WidgetContents;\n useGradientBackdrop?: boolean;\n className?: string;\n hoverText?: string;\n hideExtendedClickableArea?: boolean;\n state?: FixedWidgetState;\n\n leftButtonClassName?: string;\n rightButtonClassName?: string;\n leftGradientClassName?: string;\n rightGradientClassName?: string;\n}\n\nexport const WidgetButton = React.memo(function(props: WidgetButtonProps): JSX.Element {\n const isLeft = props.direction === WidgetButtonDirection.Left;\n\n const arrowSvg = isLeft ? cvSvgLibrary.ChevronLeft : cvSvgLibrary.ChevronRight;\n\n function getPositionClass(): string {\n let className = styles.topPos;\n \n // Left / Right\n if (isLeft)\n className += ` ${styles.left} ${props.leftButtonClassName}`;\n else\n className += ` ${styles.right} ${props.rightButtonClassName}`;\n \n return className;\n }\n\n function getStyle(): React.CSSProperties {\n if (props.state?.contents === 'videos')\n return { paddingBottom: (56.25 / props.state?.viewableItems) + '%' };\n\n return { height: '100%' };\n }\n\n if (props.hide)\n return <></>;\n\n return (\n <div className={styles.buttonContainer} style={getStyle()}>\n {props.useGradientBackdrop &&\n <div className={isLeft ? `${styles.gradientLeft} ${props.leftGradientClassName}` : `${styles.gradientRight} ${props.rightGradientClassName}`} />\n }\n\n {!props.hideExtendedClickableArea && (\n <button\n onClick={props.onClick}\n className={`${styles.extendedClickableArea} ${isLeft ? styles.left : styles.right}`}\n tabIndex={-1}\n />\n )}\n\n <button\n className={`${getPositionClass()} ${styles.button} ${props.className || ''}`}\n onClick={props.onClick}\n aria-label={isLeft ? getPhrase('previous') : getPhrase('next')}\n >\n {props.hoverText && (\n <span className={`ps-3 pe-2 ${styles.hoverText}`}>{props.hoverText}</span>\n )}\n <SvgContainer\n svgName={arrowSvg}\n size={SvgContainerSize.Medium}\n className={`svg-container d-inline-block ${styles.chevron}`}\n />\n </button>\n </div>\n );\n});"],"names":["SortableContainerWrapper","props","activeId","setActiveId","sensors","activationConstraint","distance","coordinateGetter","disabled","children","collisionDetection","onDragStart","event","active","id","onSortStart","onDragEnd","onSortEnd","modifiers","vertical","items","ids","strategy","dropAnimation","getDragOverlay","defaultProps","duration","easing","SortableItemWrapper","setNodeRef","transform","transition","isSorting","listeners","attributes","activeIndex","overIndex","index","style","touchAction","position","visibility","Children","childComponent","dragDirection","getDragDirection","childProps","ref","dragListeners","dragAttributes","DragOverlayStyles","opacity","cursor","calculateScrollState","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","column","canSort","className","isSorted","theme","sortIndicator","SvgContainer","svgName","isSortedDesc","size","S","BaseTable","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialSelectedRowIds","initialState","selectedRowIds","forEach","getRowId","useTable","plugins","useSortBy","useRowSelect","layout","useFlexLayout","useBlockLayout","allowFiltering","useFilters","allowGlobalFiltering","useGlobalFilter","getPlugins","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","toggleAllRowsSelected","setGlobalFilter","setHiddenColumns","sortBy","state","renderTableRows","map","row","isSelected","selectedRow","onSelectRow","enableSortableRows","getTableRowsClass","rowAppLink","getRowAppLink","onClickRow","allowSelectMultipleRows","toggleRowSelected","renderRow","sortableProps","getSortableProps","role","key","AppLink","appLink","renderCells","onClick","rowProps","getRowProps","original","cells","cell","cellClassName","onSelectCell","getCellClassName","getCellProps","render","onSort","globalFilter","hiddenColumns","length","table","header","headerGroup","getHeaderGroupProps","headerRow","headers","getHeaderProps","getSortByToggleProps","headerCell","renderSortIndicator","hideSortIndicator","body","rowIndex","findIndex","item","onSortingRowsEnd","Table","enableSlider","scrollIncrement","scrollable","tableProps","elRef","scrollState","setScrollState","throttledOnScroll","FunctionHelper","el","removeEventListener","addEventListener","scroll","scrollBy","left","top","behavior","useTableScroll","renderTrackHorizontal","autoHeightMax","autoHeight","onClickScroll","direction","WidgetButton","W","hide","WidgetButtonDirection","getPhrase","LanguageService","isLeft","Left","arrowSvg","contents","paddingBottom","viewableItems","height","useGradientBackdrop","leftGradientClassName","rightGradientClassName","hideExtendedClickableArea","tabIndex","leftButtonClassName","rightButtonClassName","hoverText"],"sourceRoot":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see 9808-
|
|
1
|
+
/*! For license information please see 9808-e80883e731-lite.chunk.js.LICENSE.txt */
|
|
2
2
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9808],{94644:(t,e,r)=>{r.d(e,{r:()=>l});var n=r(50242),a=r(81886),o=r(67058),i=r(14553),c=r(49267),u=r(49075),s={notFound:o.d,forbidden:{rating:i.q,yearLevel:i.q,region:c.a,privacy:i.q},badRequest:u._};function l(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){var o;o="number"==typeof t?t:t.status;var i=Object.assign(Object.assign({},s),e);o&&a.Q.Ry.isStatusCodeError(o)&&(o!==n.o.NotFound?o!==n.o.Forbidden?r.badRequest||a.Q.Ry.throw(new i.badRequest):r.forbidden||a.Q.Ry.throw(new i.forbidden.privacy):r.notFound||a.Q.Ry.throw(new i.notFound))}}},91286:(t,e,r)=>{r.d(e,{v:()=>i});var n=r(32735),a=r(94644);function o(t){return t.map((function(t){return t.statusCode})).join(":")}function i(t,e,r){var i=Array.isArray(t)?t:[t];(0,n.useEffect)((function(){i.forEach((function(t){(0,a.r)(t.statusCode,e,r)}))}),[o(i),e,r])}},69630:(t,e,r)=>{r.r(e),r.d(e,{PlayView:()=>z});var n=r(32735),a=r(50242),o=r(81886),i=r(23481),c=r(20354),u=r(28400),s=r(65858),l=r(78417),d=r(16714),f=r(67058),h=r(61990),p=r(33803),v=r(89454),y=r(21750),g=r(43012),m=r(39151),w=r(1666),b=r(20768),x=r(98064),L=r(28907),E=r(31949),F=r(1575),C=r(26304),P=r(91286),k=r(22902),O=r(79612),_=r(76753),I=r(5988),j=r(14070),A=r(97291),G=r(51855),S=r(82817),N=r(7179),V=r(49948),B=r(36873),R=r(27638),T=r(86698),q=r(35014),M=r(97816),Q=r(33192);function U(t){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},U(t)}function D(){D=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var o=e&&e.prototype instanceof g?e:g,i=Object.create(o.prototype),c=new I(n||[]);return a(i,"_invoke",{value:P(t,r,c)}),i}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var f="suspendedStart",h="suspendedYield",p="executing",v="completed",y={};function g(){}function m(){}function w(){}var b={};s(b,i,(function(){return this}));var x=Object.getPrototypeOf,L=x&&x(x(j([])));L&&L!==r&&n.call(L,i)&&(b=L);var E=w.prototype=g.prototype=Object.create(b);function F(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function C(t,e){function r(a,o,i,c){var u=d(t[a],t,o);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"==U(l)&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,i,c)}),(function(t){r("throw",t,i,c)})):e.resolve(l).then((function(t){s.value=t,i(s)}),(function(t){return r("throw",t,i,c)}))}c(u.arg)}var o;a(this,"_invoke",{value:function(t,n){function a(){return new e((function(e,a){r(t,n,e,a)}))}return o=o?o.then(a,a):a()}})}function P(e,r,n){var a=f;return function(o,i){if(a===p)throw Error("Generator is already running");if(a===v){if("throw"===o)throw i;return{value:t,done:!0}}for(n.method=o,n.arg=i;;){var c=n.delegate;if(c){var u=k(c,n);if(u){if(u===y)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===f)throw a=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=p;var s=d(e,r,n);if("normal"===s.type){if(a=n.done?v:h,s.arg===y)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(a=v,n.method="throw",n.arg=s.arg)}}}function k(e,r){var n=r.method,a=e.iterator[n];if(a===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,k(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var o=d(a,e.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,y;var i=o.arg;return i?i.done?(r[e.resultName]=i.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function _(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function j(e){if(e||""===e){var r=e[i];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,o=function r(){for(;++a<e.length;)if(n.call(e,a))return r.value=e[a],r.done=!1,r;return r.value=t,r.done=!0,r};return o.next=o}}throw new TypeError(U(e)+" is not iterable")}return m.prototype=w,a(E,"constructor",{value:w,configurable:!0}),a(w,"constructor",{value:m,configurable:!0}),m.displayName=s(w,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===m||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,s(t,u,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},F(C.prototype),s(C.prototype,c,(function(){return this})),e.AsyncIterator=C,e.async=function(t,r,n,a,o){void 0===o&&(o=Promise);var i=new C(l(t,r,n,a),o);return e.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},F(E),s(E,u,"Generator"),s(E,i,(function(){return this})),s(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=j,I.prototype={constructor:I,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(_),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function a(n,a){return c.type="throw",c.arg=e,r.next=n,a&&(r.method="next",r.arg=t),!!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 u=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(u&&s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(t,e){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"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),_(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var a=n.arg;_(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:j(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y}},e}var Y=function(t,e,r,n){return new(r||(r=Promise))((function(a,o){function i(t){try{u(n.next(t))}catch(t){o(t)}}function c(t){try{u(n.throw(t))}catch(t){o(t)}}function u(t){var e;t.done?a(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(i,c)}u((n=n.apply(t,e||[])).next())}))},H=i.T.encloseNamespace("shared.play"),Z={notFound:h.l,forbidden:{privacy:p.G}};function z(t){var e,r,i,h,p,U=t.queryParams,z=U.context,J=U.contextId,K=U.playNext,W=U.mtv,X=c.a.useGetFetchAsync(),$=(0,R.u)(s.LZ.PlayPage),tt=$.setFavourite,et=$.canFavourite,rt=(0,G.G)().isPlugin,nt=(0,k.T)().hasPermissions,at=(0,T.y)().activePresentation,ot=(0,q.I)(),it=c.a.useBasicFetch(x.D.streamableLearning()),ct=c.a.useBasicFetch(F.R.video(t.id)),ut=c.a.useBasicFetch(ot.canViewClips&&g.e.videoClips(t.id)),st=c.a.useBasicFetch(ot.canViewInteractives&&b.b.videoInteractives(t.id)),lt=c.a.useBasicFetch(E.N.currentUser()),dt=c.a.useBasicFetch(m.L.config()),ft=c.a.useBasicFetch((null===(e=lt.data)||void 0===e?void 0:e.isAuthenticated)&&w.h.yearGroups(lt.data.customerId)),ht=c.a.useBasicFetch(at&&v.O.audiencesByPresentationId(at.id)),pt=nt(d.C.ViewVideoGlance)&&(null===(i=null===(r=ct.data)||void 0===r?void 0:r.glance)||void 0===i?void 0:i.theme),vt=c.a.useBasicFetch(pt&&L.r.themeImages(ct.data.glance.theme,ct.data.glance.type)),yt=c.a.useBasicFetch(ct.statusCode===a.o.Forbidden&&F.R.video(t.id,l.r.StripMetadata)),gt=(0,S.M)(t.id),mt=(0,B.k)({video:ct.data,context:z,contextId:J,moviesAndTv:W,currentUser:lt.data}),wt=(0,V.l)(t.id,!0),bt=c.a.useBasicFetch(F.R.regionAlternatives(t.id));(0,O.M)(_.CG.getVideoMetadata({content:ct.data,regionAlternatives:bt.data,phraseContext:{phraseHandler:H,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:Q.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:Q.f.allowIndexing(),hrefLang:Q.f.getContentHrefLang(bt.data,(function(t,e){return{application:A.O.VIDEOS,action:j.e.Videos.PLAY_VIDEO,args:[t,u.m.slugify(e)]}}))})),(0,P.v)(ct,Z,{forbidden:!0}),(0,M.V)(null!==(h=mt.videos)&&void 0!==h?h:[]),(0,N.P)({id:t.id,app:"videos"}),(0,C.b)(yt),n.useEffect((function(){var t;ct.data&&it.data&&(null===(t=ct.data.libraries)||void 0===t?void 0:t.data.find((function(t){return t.id===it.data.objectId})))&&o.Q.Ry.throw(new f.d)}),[ct.hasCompleted,it.hasCompleted]);var xt=ct.data&<.hasCompleted&&dt.hasCompleted&&wt.hasCompleted;return xt?n.createElement("div",{className:"px-4"},n.createElement(I.j,{video:ct.data,interactives:st.data,clips:ut.data,yearGroups:ft.data,curriculums:gt,glanceTheme:vt.data,glanceLoaded:!pt||vt.hasCompleted,relatedVideos:mt,setFavourite:tt,canFavourite:et,imageCdnUrl:dt.data.imageCdnUrl,currentUser:lt.data,pointsOfInterest:wt.items,playNext:K,featureAccess:ot,audiences:ht.data,params:t.queryParams,canManageVideoAccess:nt(d.C.ManageVideoAccess),checkAllCurriculum:function(){return Y(this,void 0,void 0,D().mark((function e(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!xt||!gt.hasLoaded){e.next=4;break}return e.next=3,X(y.x.checkAllCurriculumsLinks(t.id,gt.availableCurriculums.map((function(t){return t.id}))));case 3:return e.abrupt("return",e.sent);case 4:return e.abrupt("return",[]);case 5:case"end":return e.stop()}}),e)})))},tableOfContentsId:null===(p=t.queryParams)||void 0===p?void 0:p.tocId,isPlugin:rt})):n.createElement(n.Fragment,null)}z.defaultProps={queryParams:{}}}}]);
|
|
3
|
-
//# sourceMappingURL=9808-
|
|
3
|
+
//# sourceMappingURL=9808-e80883e731-lite.chunk.js.map
|
package/dist/scripts/{9808-5ce9fc5d84-lite.chunk.js.map → 9808-e80883e731-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/9808-5ce9fc5d84-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/shared/views/play/PlayView.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { ThemeRequests } from 'libs/shared/flight-requests/ThemeRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, InteractiveMetadata, Presentation, PresentationAudience, RegionAlternative, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { PlayPage } from 'shared/components/play-page/PlayPage';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { PlayViewProps } from './PlayViewContainer';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nPlayView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayView(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv } = props.queryParams;\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.PlayPage);\n\n const { isPlugin } = usePluginHelper();\n\n const { hasPermissions } = usePermissions();\n\n const { activePresentation } = usePresentation();\n\n const featureAccess = useVideoFeatureAccess();\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const clips = Flight.useBasicFetch<Clip[]>(featureAccess.canViewClips && ClipRequests.videoClips(props.id));\n const interactives = Flight.useBasicFetch<InteractiveMetadata[]>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n \n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n const shouldFetchTheme = hasPermissions(PermissionName.ViewVideoGlance) &&\n video.data?.glance?.theme;\n \n const glanceTheme = Flight.useBasicFetch<Theme>(\n shouldFetchTheme &&\n ThemeRequests.themeImages(video.data.glance.theme, video.data.glance.type)\n );\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (!video.data || !streamableLibrary.data)\n return;\n\n if (video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n async function checkAllCurriculums(): Promise<Presentation[]> {\n if (dataLoaded && curriculums.hasLoaded) {\n return await fetchAsync<Presentation[]>(ClassificationRequests.checkAllCurriculumsLinks(\n props.id,\n curriculums.availableCurriculums.map(c => c.id)\n ));\n }\n return [];\n }\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-4'>\n <PlayPage\n video={video.data}\n interactives={interactives.data}\n clips={clips.data}\n yearGroups={yearGroups.data}\n curriculums={curriculums}\n glanceTheme={glanceTheme.data}\n glanceLoaded={!shouldFetchTheme || glanceTheme.hasCompleted}\n relatedVideos={relatedVideos}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n imageCdnUrl={config.data.imageCdnUrl}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n checkAllCurriculum={checkAllCurriculums}\n tableOfContentsId={props.queryParams?.tocId}\n isPlugin={isPlugin}\n />\n </div>\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","videoErrors","PlayView","props","queryParams","context","contextId","playNext","mtv","fetchAsync","u","setFavourite","canFavourite","isPlugin","hasPermissions","activePresentation","featureAccess","streamableLibrary","video","id","clips","canViewClips","interactives","canViewInteractives","currentUser","config","yearGroups","data","isAuthenticated","customerId","audiences","shouldFetchTheme","glance","theme","glanceTheme","type","strippedVideo","curriculums","relatedVideos","moviesAndTv","pointsOfInterest","regionAlternatives","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","stripPresentationSlug","allowIndexing","hrefLang","name","application","action","args","videos","app","libraries","find","library","objectId","hasCompleted","dataLoaded","className","glanceLoaded","imageCdnUrl","items","params","canManageVideoAccess","checkAllCurriculum","hasLoaded","availableCurriculums","c","tableOfContentsId","tocId","defaultProps"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/9808-e80883e731-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/shared/views/play/PlayView.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { ThemeRequests } from 'libs/shared/flight-requests/ThemeRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, InteractiveMetadata, Presentation, PresentationAudience, RegionAlternative, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { PlayPage } from 'shared/components/play-page/PlayPage';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { PlayViewProps } from './PlayViewContainer';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nPlayView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayView(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv } = props.queryParams;\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.PlayPage);\n\n const { isPlugin } = usePluginHelper();\n\n const { hasPermissions } = usePermissions();\n\n const { activePresentation } = usePresentation();\n\n const featureAccess = useVideoFeatureAccess();\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const clips = Flight.useBasicFetch<Clip[]>(featureAccess.canViewClips && ClipRequests.videoClips(props.id));\n const interactives = Flight.useBasicFetch<InteractiveMetadata[]>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n \n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n const shouldFetchTheme = hasPermissions(PermissionName.ViewVideoGlance) &&\n video.data?.glance?.theme;\n \n const glanceTheme = Flight.useBasicFetch<Theme>(\n shouldFetchTheme &&\n ThemeRequests.themeImages(video.data.glance.theme, video.data.glance.type)\n );\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (!video.data || !streamableLibrary.data)\n return;\n\n if (video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n async function checkAllCurriculums(): Promise<Presentation[]> {\n if (dataLoaded && curriculums.hasLoaded) {\n return await fetchAsync<Presentation[]>(ClassificationRequests.checkAllCurriculumsLinks(\n props.id,\n curriculums.availableCurriculums.map(c => c.id)\n ));\n }\n return [];\n }\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-4'>\n <PlayPage\n video={video.data}\n interactives={interactives.data}\n clips={clips.data}\n yearGroups={yearGroups.data}\n curriculums={curriculums}\n glanceTheme={glanceTheme.data}\n glanceLoaded={!shouldFetchTheme || glanceTheme.hasCompleted}\n relatedVideos={relatedVideos}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n imageCdnUrl={config.data.imageCdnUrl}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n checkAllCurriculum={checkAllCurriculums}\n tableOfContentsId={props.queryParams?.tocId}\n isPlugin={isPlugin}\n />\n </div>\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","videoErrors","PlayView","props","queryParams","context","contextId","playNext","mtv","fetchAsync","u","setFavourite","canFavourite","isPlugin","hasPermissions","activePresentation","featureAccess","streamableLibrary","video","id","clips","canViewClips","interactives","canViewInteractives","currentUser","config","yearGroups","data","isAuthenticated","customerId","audiences","shouldFetchTheme","glance","theme","glanceTheme","type","strippedVideo","curriculums","relatedVideos","moviesAndTv","pointsOfInterest","regionAlternatives","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","stripPresentationSlug","allowIndexing","hrefLang","name","application","action","args","videos","app","libraries","find","library","objectId","hasCompleted","dataLoaded","className","glanceLoaded","imageCdnUrl","items","params","canManageVideoAccess","checkAllCurriculum","hasLoaded","availableCurriculums","c","tableOfContentsId","tocId","defaultProps"],"sourceRoot":""}
|