@clickview/lite 0.64.0-rc.1 → 0.64.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.
- package/dist/bundles.json +1 -1
- package/dist/css/{7153-lite-0cc5db0db7.chunk.css → 2962-lite-2002c62a24.chunk.css} +0 -1
- package/dist/css/{1857-lite-324255d395.chunk.css → 6173-lite-911f35513f.chunk.css} +0 -1
- package/dist/css/{2083-lite-6cb1775e12.chunk.css → 7324-lite-238bd550b7.chunk.css} +0 -1
- package/dist/css/{9013-lite-620f218839.chunk.css → 9013-lite-3c31b606c5.chunk.css} +2 -2
- package/dist/languages/en.json +1 -1
- package/dist/scripts/1216-899540dc73-lite.chunk.js +2 -0
- package/dist/scripts/1216-899540dc73-lite.chunk.js.map +1 -0
- package/dist/scripts/1820-b572681b3a-lite.chunk.js +2 -0
- package/dist/scripts/1820-b572681b3a-lite.chunk.js.map +1 -0
- package/dist/scripts/229-ac9f12e165-lite.chunk.js +2 -0
- package/dist/scripts/229-ac9f12e165-lite.chunk.js.map +1 -0
- package/dist/scripts/2712-a851ddc3c3-lite.chunk.js +2 -0
- package/dist/scripts/2712-a851ddc3c3-lite.chunk.js.map +1 -0
- package/dist/scripts/{2788-eca70707c6-lite.chunk.js → 2788-c8ae3be73f-lite.chunk.js} +1 -1
- package/dist/scripts/2788-c8ae3be73f-lite.chunk.js.map +1 -0
- package/dist/scripts/{7153-0ed8513e59-lite.chunk.js → 2962-7f2e4412f0-lite.chunk.js} +2 -2
- package/dist/scripts/{7153-0ed8513e59-lite.chunk.js.map → 2962-7f2e4412f0-lite.chunk.js.map} +1 -1
- package/dist/scripts/2988-b602b64344-lite.chunk.js +2 -0
- package/dist/scripts/2988-b602b64344-lite.chunk.js.map +1 -0
- package/dist/scripts/3180-c1f065183d-lite.chunk.js +2 -0
- package/dist/scripts/3180-c1f065183d-lite.chunk.js.map +1 -0
- package/dist/scripts/3549-111225ff0e-lite.chunk.js +2 -0
- package/dist/scripts/3549-111225ff0e-lite.chunk.js.map +1 -0
- package/dist/scripts/4591-f78fa6c784-lite.chunk.js +2 -0
- package/dist/scripts/4591-f78fa6c784-lite.chunk.js.map +1 -0
- package/dist/scripts/4667-5101904582-lite.chunk.js +2 -0
- package/dist/scripts/4667-5101904582-lite.chunk.js.map +1 -0
- package/dist/scripts/4718-1426986e1d-lite.chunk.js +2 -0
- package/dist/scripts/4718-1426986e1d-lite.chunk.js.map +1 -0
- package/dist/scripts/{5056-6057435479-lite.chunk.js → 5056-65c739468f-lite.chunk.js} +1 -1
- package/dist/scripts/5056-65c739468f-lite.chunk.js.map +1 -0
- package/dist/scripts/5201-98ee21febb-lite.chunk.js +2 -0
- package/dist/scripts/5201-98ee21febb-lite.chunk.js.map +1 -0
- package/dist/scripts/5595-79068997ce-lite.chunk.js +2 -0
- package/dist/scripts/5595-79068997ce-lite.chunk.js.map +1 -0
- package/dist/scripts/5770-f88f6d9c00-lite.chunk.js +2 -0
- package/dist/scripts/5770-f88f6d9c00-lite.chunk.js.map +1 -0
- package/dist/scripts/5896-60133bfdad-lite.chunk.js +3 -0
- package/dist/scripts/5896-60133bfdad-lite.chunk.js.map +1 -0
- package/dist/scripts/6173-7f9939c29e-lite.chunk.js +3 -0
- package/dist/scripts/6173-7f9939c29e-lite.chunk.js.map +1 -0
- package/dist/scripts/6181-9d7668c9e4-lite.chunk.js +3 -0
- package/dist/scripts/6181-9d7668c9e4-lite.chunk.js.map +1 -0
- package/dist/scripts/6455-37039eb687-lite.chunk.js +2 -0
- package/dist/scripts/6455-37039eb687-lite.chunk.js.map +1 -0
- package/dist/scripts/6623-84b33c6856-lite.chunk.js +3 -0
- package/dist/scripts/6623-84b33c6856-lite.chunk.js.map +1 -0
- package/dist/scripts/6919-8f60ca2263-lite.chunk.js +2 -0
- package/dist/scripts/6919-8f60ca2263-lite.chunk.js.map +1 -0
- package/dist/scripts/7267-1f5006c9c5-lite.chunk.js +2 -0
- package/dist/scripts/7267-1f5006c9c5-lite.chunk.js.map +1 -0
- package/dist/scripts/{2083-7daacf0112-lite.chunk.js → 7324-ee20e73ac1-lite.chunk.js} +2 -2
- package/dist/scripts/{2083-7daacf0112-lite.chunk.js.map → 7324-ee20e73ac1-lite.chunk.js.map} +1 -1
- package/dist/scripts/7434-fef3ea4e89-lite.chunk.js +2 -0
- package/dist/scripts/7434-fef3ea4e89-lite.chunk.js.map +1 -0
- package/dist/scripts/7443-4866d0c9ab-lite.chunk.js +3 -0
- package/dist/scripts/7443-4866d0c9ab-lite.chunk.js.map +1 -0
- package/dist/scripts/8416-7d71a55a14-lite.chunk.js +2 -0
- package/dist/scripts/8416-7d71a55a14-lite.chunk.js.map +1 -0
- package/dist/scripts/8465-01b0f72699-lite.chunk.js +2 -0
- package/dist/scripts/8465-01b0f72699-lite.chunk.js.map +1 -0
- package/dist/scripts/9013-6fcc58f028-lite.chunk.js +2 -0
- package/dist/scripts/9013-6fcc58f028-lite.chunk.js.map +1 -0
- package/dist/scripts/9264-998d93d1c2-lite.chunk.js +2 -0
- package/dist/scripts/9264-998d93d1c2-lite.chunk.js.map +1 -0
- package/dist/scripts/9894-0fba5cf702-lite.chunk.js +3 -0
- package/dist/scripts/9894-0fba5cf702-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-48f54fe5c2.min.js +3 -0
- package/dist/scripts/bundle-48f54fe5c2.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/1755-462bcd99e9-lite.chunk.js +0 -2
- package/dist/scripts/1755-462bcd99e9-lite.chunk.js.map +0 -1
- package/dist/scripts/180-6c4779f6ab-lite.chunk.js +0 -2
- package/dist/scripts/180-6c4779f6ab-lite.chunk.js.map +0 -1
- package/dist/scripts/1820-3b5d0a340d-lite.chunk.js +0 -2
- package/dist/scripts/1820-3b5d0a340d-lite.chunk.js.map +0 -1
- package/dist/scripts/1857-d3af9d98eb-lite.chunk.js +0 -3
- package/dist/scripts/1857-d3af9d98eb-lite.chunk.js.map +0 -1
- package/dist/scripts/229-900e650427-lite.chunk.js +0 -2
- package/dist/scripts/229-900e650427-lite.chunk.js.map +0 -1
- package/dist/scripts/2788-eca70707c6-lite.chunk.js.map +0 -1
- package/dist/scripts/3180-22edf4c9fc-lite.chunk.js +0 -2
- package/dist/scripts/3180-22edf4c9fc-lite.chunk.js.map +0 -1
- package/dist/scripts/3549-30d3b1cd05-lite.chunk.js +0 -2
- package/dist/scripts/3549-30d3b1cd05-lite.chunk.js.map +0 -1
- package/dist/scripts/3776-0027340c98-lite.chunk.js +0 -2
- package/dist/scripts/3776-0027340c98-lite.chunk.js.map +0 -1
- package/dist/scripts/4591-3e8dddd0e9-lite.chunk.js +0 -2
- package/dist/scripts/4591-3e8dddd0e9-lite.chunk.js.map +0 -1
- package/dist/scripts/4667-f3882f2379-lite.chunk.js +0 -2
- package/dist/scripts/4667-f3882f2379-lite.chunk.js.map +0 -1
- package/dist/scripts/4718-16d6e39561-lite.chunk.js +0 -2
- package/dist/scripts/4718-16d6e39561-lite.chunk.js.map +0 -1
- package/dist/scripts/5056-6057435479-lite.chunk.js.map +0 -1
- package/dist/scripts/5201-7d3867d027-lite.chunk.js +0 -2
- package/dist/scripts/5201-7d3867d027-lite.chunk.js.map +0 -1
- package/dist/scripts/5595-10e586779d-lite.chunk.js +0 -2
- package/dist/scripts/5595-10e586779d-lite.chunk.js.map +0 -1
- package/dist/scripts/5896-5d2f32c59e-lite.chunk.js +0 -3
- package/dist/scripts/5896-5d2f32c59e-lite.chunk.js.map +0 -1
- package/dist/scripts/6181-50a39979ec-lite.chunk.js +0 -3
- package/dist/scripts/6181-50a39979ec-lite.chunk.js.map +0 -1
- package/dist/scripts/6455-2f45be17cf-lite.chunk.js +0 -2
- package/dist/scripts/6455-2f45be17cf-lite.chunk.js.map +0 -1
- package/dist/scripts/6623-ebbffb59b3-lite.chunk.js +0 -3
- package/dist/scripts/6623-ebbffb59b3-lite.chunk.js.map +0 -1
- package/dist/scripts/6919-cb2de57c2e-lite.chunk.js +0 -2
- package/dist/scripts/6919-cb2de57c2e-lite.chunk.js.map +0 -1
- package/dist/scripts/7267-c2d30dd339-lite.chunk.js +0 -2
- package/dist/scripts/7267-c2d30dd339-lite.chunk.js.map +0 -1
- package/dist/scripts/7434-c34ca23a21-lite.chunk.js +0 -2
- package/dist/scripts/7434-c34ca23a21-lite.chunk.js.map +0 -1
- package/dist/scripts/7443-7c72de0cb9-lite.chunk.js +0 -3
- package/dist/scripts/7443-7c72de0cb9-lite.chunk.js.map +0 -1
- package/dist/scripts/8022-0656cce655-lite.chunk.js +0 -2
- package/dist/scripts/8022-0656cce655-lite.chunk.js.map +0 -1
- package/dist/scripts/9013-adc5d3517a-lite.chunk.js +0 -2
- package/dist/scripts/9013-adc5d3517a-lite.chunk.js.map +0 -1
- package/dist/scripts/9155-87c9030ce9-lite.chunk.js +0 -2
- package/dist/scripts/9155-87c9030ce9-lite.chunk.js.map +0 -1
- package/dist/scripts/9264-750b3d6ea0-lite.chunk.js +0 -2
- package/dist/scripts/9264-750b3d6ea0-lite.chunk.js.map +0 -1
- package/dist/scripts/9894-bc34edcd67-lite.chunk.js +0 -3
- package/dist/scripts/9894-bc34edcd67-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-e02b7c5d7f.min.js +0 -3
- package/dist/scripts/bundle-e02b7c5d7f.min.js.map +0 -1
- package/dist/css/{6455-lite-fe0bc6d95f.chunk.css → 6455-lite-c07987d46c.chunk.css} +1 -1
- /package/dist/css/{9155-lite-447d345417.chunk.css → 8465-lite-447d345417.chunk.css} +0 -0
- /package/dist/scripts/{1857-d3af9d98eb-lite.chunk.js.LICENSE.txt → 5896-60133bfdad-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5896-5d2f32c59e-lite.chunk.js.LICENSE.txt → 6173-7f9939c29e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6181-50a39979ec-lite.chunk.js.LICENSE.txt → 6181-9d7668c9e4-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6623-ebbffb59b3-lite.chunk.js.LICENSE.txt → 6623-84b33c6856-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7443-7c72de0cb9-lite.chunk.js.LICENSE.txt → 7443-4866d0c9ab-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9894-bc34edcd67-lite.chunk.js.LICENSE.txt → 9894-0fba5cf702-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-e02b7c5d7f.min.js.LICENSE.txt → bundle-48f54fe5c2.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/9013-adc5d3517a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/useLockContentWidth.ts","file:///app/packages/projects/lite/src/apps/insights/components/insights-list/type-filter/insights-type-filters.scss","file:///app/packages/projects/lite/src/apps/insights/components/insights-list/type-filter/InsightsTypeFilters.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/empty-state/MySharesTableEmptyState.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/MySharesTableUtils.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/my-shares-table.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/MySharesTable.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/partial-loading/partial-my-shares-table.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/empty-state/MySharesEmptyState.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesViewUtils.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesView.tsx","file:///app/packages/libs/shared/src/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/shared/hooks/useSharesTable.ts"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MarkInteractiveAnswer } from 'libs/shared/apps/analytics/interfaces/MarkInteractiveAnswer';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\nimport { InteractivesPendingReviewsRequest } from 'libs/shared/apps/analytics/interfaces/requests/InteractivesPendingReviewsRequest';\nimport { AnalyticsRequestFilter, CurrentUser, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\ninterface InteractiveResultFilters {\n currentUserId: string;\n currentCustomerId: string;\n dateRange?: { start: string, end: string }\n userIds?: string | string[];\n classroomsAndGroups?: string | string[];\n}\n\nfunction getInteractiveResultFilters(\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter\n): InteractiveResultFilters {\n return {\n currentUserId: currentUser.id,\n currentCustomerId: currentUser.customerId,\n dateRange: { start: filter.start, end: filter.end },\n userIds: filter.userId,\n classroomsAndGroups: filter.groupId\n };\n}\n\nexport const InteractiveResultsRequests = {\n /** \n * This endpoint returns data with a lot of duplicated ids,\n * e.g. student answers to the same question will have the same id.\n * Because of that, we don't normalize.\n */\n interactiveResultSet(\n interactiveId: string,\n interactiveMetadataId: string,\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter,\n includePublicResults: boolean,\n success?: (data: InteractiveResultSet) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: includePublicResults ?\n `/api/domain/v3/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}` :\n `/api/domain/v2/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: getAnalyticsRequestKey(`interactive:result:set:${interactiveId}:${interactiveMetadataId}`, filter),\n data: getInteractiveResultFilters(currentUser, filter),\n type: HttpVerbs.POST,\n normalize: false,\n formatData: (data: any) => {\n return {\n ...data,\n students: data.students.map((student: any) => {\n if (!student.name || !student.profileId)\n return student;\n\n return {\n ...student,\n publicUser: {\n profileId: student.profileId,\n name: student.name\n }\n };\n })\n };\n },\n success,\n error,\n always\n };\n },\n \n /**\n * As the response from `interactiveResultSet` isn't normalised, we need to invalidate the cache\n * to update the results data.\n */\n mark(\n interactiveId: string,\n interactiveMetadataId: string,\n answerId: string,\n data: MarkInteractiveAnswer,\n success?: () => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/answers/${answerId}`,\n key: `mark:answer:${answerId}:${data.resultId}`,\n type: HttpVerbs.PUT,\n data,\n normalize: false,\n invalidationKeys: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`,\n success,\n error,\n always\n };\n },\n\n pendingReviews(data: InteractivesPendingReviewsRequest): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/pending-reviews/summary`,\n key: `interactives:pending:reviews`,\n type: HttpVerbs.POST,\n data\n };\n },\n\n interactiveResultsReport(data: InteractiveResultsReport): Flight.Request {\n return {\n url: '{gateway}/v2/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState, HashObject } from 'libs/common/react/interfaces';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const [ idBatches, setIdBatches ] = React.useState<string[][]>([]);\n\n React.useEffect(() => {\n if (!itemIds?.length)\n return;\n\n const newBatches = [...idBatches];\n newBatches.push([]);\n\n itemIds.forEach(id => {\n if (newBatches.find(batch => batch.find(_id => _id === id)))\n return;\n\n newBatches[newBatches.length - 1].push(id);\n });\n\n setIdBatches(newBatches.filter(batch => batch.length));\n }, [itemIds ? itemIds.join(',') : null]);\n\n const dispatch = useDispatch();\n\n const state = useSelector((state: ApplicationState) => state);\n\n React.useEffect(() => {\n idBatches.forEach(idBatch => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n\n if (response.shouldFetch)\n Flight.fetch(dispatch, request);\n });\n }, [idBatches?.length]);\n\n if (!idBatches?.length)\n return { items: null, isFetching: false };\n \n const items: { [key: string]: T} = {};\n\n /* Used locally to only return our items if we've fetched all of them */\n const responses: HashObject<Flight.Response<T[]>> = {};\n \n idBatches.forEach((idBatch, i) => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n responses[i] = response;\n\n if (response.data)\n response.data.forEach(v => items[v.id] = v);\n });\n\n return {\n items: Object.keys(responses).some(k => !!responses[k].data) ? items : null,\n isFetching: !!Object.keys(responses).some(k => responses[k].isFetching)\n };\n}","import React from 'react';\n\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\n\nexport function useLockContentWidth(): void {\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n}","// extracted by mini-css-extract-plugin\nexport default {\"noCaret\":\"TMpTN\"};","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\n\nimport styles from './insights-type-filters.scss';\n\nconst namespace = 'insights.insightsTypeFilters';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightsTypeFilterProps {\n appLink: Core.AppLink;\n typeIdParams: MasterType[];\n}\n\nexport function InsightsTypeFilters(props: InsightsTypeFilterProps) {\n const moreFilterOptions = [{\n label: getPhrase('playlists'),\n filter: MasterType.Playlist\n }, {\n label: getPhrase('series'),\n filter: MasterType.Series\n }];\n\n const moreFiltersSelected = getMoreFiltersSelected();\n\n const [ showDropdown, setShowDropdown ] = React.useState(false);\n const [ moreFilters, setMoreFilters ] = React.useState(moreFiltersSelected);\n\n function applyFilter() {\n const currentParams = props.appLink.params as HashObject;\n\n Core.AppLinkHelper.trigger({\n ...props.appLink,\n params: {\n ...currentParams,\n typeId: [\n ...props.typeIdParams.filter(filter => !moreFilterOptions.find(option => filter === option.filter)),\n ...moreFilters\n ]\n }\n });\n }\n\n function resetFilters() {\n setMoreFilters([]);\n\n const currentParams = props.appLink.params as HashObject;\n\n Core.AppLinkHelper.trigger({\n ...props.appLink,\n params: {\n ...currentParams,\n typeId: []\n }\n });\n }\n\n function onToggleDropdown(isShowing: boolean): void {\n setShowDropdown(isShowing);\n\n if (isShowing)\n return;\n\n applyFilter();\n }\n\n function onClickApply() {\n applyFilter();\n setShowDropdown(false);\n }\n\n function onSelectFilter(filter: MasterType) {\n setMoreFilters(ArrayHelper.addOrRemoveImmutable(moreFilters, filter));\n }\n\n function isFilterSelected(filter: MasterType) {\n return !!moreFilters.find(selectedFilter => selectedFilter === filter);\n }\n\n function getMoreFiltersSelected() {\n return props.typeIdParams.filter(typeId =>\n moreFilterOptions.some(option => typeId === option.filter));\n }\n\n return (\n <div className='d-flex align-items-center fw-semibold'>\n <p className='h6 mb-0'><Text namespace={namespace} phrase='filters' /></p>\n <div className='d-flex border-start border-light ps-3 ms-3 gap-2'>\n <InsightTypeFilterButton typeId={MasterType.Video} typeFilters={props.typeIdParams} appLink={props.appLink} />\n <InsightTypeFilterButton typeId={MasterType.Clip} typeFilters={props.typeIdParams} appLink={props.appLink} />\n <InsightTypeFilterButton\n typeId={MasterType.Interactive}\n typeFilters={props.typeIdParams}\n appLink={props.appLink}\n />\n <Dropdown onToggle={onToggleDropdown} show={showDropdown}>\n <Dropdown.Toggle\n className={styles.noCaret}\n variant={moreFiltersSelected.length ? 'dark' : 'outline-dark'}\n >\n <span className='fw-semibold mb-0'>\n <Text namespace={namespace} phrase='moreFilters' />\n {moreFiltersSelected.length ? ` - ${moreFiltersSelected.length}` : ''}\n </span>\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n <div className='mx-1 px-2 py-1 mb-0'>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='types' /></h2>\n <ul className='list-unstyled me-5'>\n {moreFilterOptions.map(option => (\n <li key={`${option.label}-filter`} className='my-1'>\n <Checkbox\n id={`${option.label}-filter`}\n label={option.label}\n onChange={() => onSelectFilter(option.filter)}\n checked={isFilterSelected(option.filter)}\n />\n </li>\n ))}\n </ul>\n <button onClick={() => onClickApply()} className='btn btn-link text-info float-end p-0 mb-0'>\n <Text namespace={namespace} phrase='apply' />\n </button>\n </div>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n {!!props.typeIdParams.length &&\n <button onClick={resetFilters} className='btn btn-link ms-1'>\n <Text namespace={namespace} phrase='resetAll' />\n </button>\n }\n </div>\n );\n}\n\ninterface InsightTypeFilterButtonProps {\n typeId: MasterType;\n typeFilters: MasterType[];\n appLink: Core.AppLink;\n}\n\nfunction InsightTypeFilterButton(props: InsightTypeFilterButtonProps) {\n const selected = props.typeFilters.includes(props.typeId);\n\n const currentAppLink = props.appLink;\n const currentParams = currentAppLink.params as HashObject;\n\n const newType: MasterType[] = ArrayHelper.addOrRemoveImmutable(props.typeFilters, props.typeId);\n\n const newAppLink = {\n ...currentAppLink,\n params: {\n ...currentParams,\n typeId: newType\n }\n };\n\n function getTypePhrase(): string {\n if (props.typeId === MasterType.Video) return 'videos';\n if (props.typeId === MasterType.Clip) return 'clips';\n if (props.typeId === MasterType.Interactive) return 'interactives';\n }\n\n return (\n <AppLink\n className={`btn ${selected ? 'btn-dark' : 'btn-outline-dark'} fw-semibold`}\n appLink={newAppLink}\n ariaLabel={`${getPhrase('ariaFilterBy')}: ${getPhrase(getTypePhrase())}`}\n >\n <Text namespace={namespace} phrase={getTypePhrase()} />\n </AppLink>\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';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myShares.mySharesTableEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function MySharesTableEmptyState(): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Share.SHARED_BY_ME} size='small' />\n <EmptyState.Heading>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info>{getPhrase('info')}</EmptyState.Info>\n <EmptyState.Cta appLink={{ application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME }} text={getPhrase('cta')} />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { InteractivesPendingReviews } from 'libs/shared/apps/analytics/interfaces/response/InteractivesPendingReviewsResponse';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { ShareHelper } from 'libs/shared/apps/share/utils/ShareHelper';\nimport { SharableEntity, SharableRecipient } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { InteractiveMetadata, UnionShareObject } from 'libs/shared/interfaces';\n\nconst namespace = 'myShares.mySharesTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getDateShared(share: UnionShareObject): string {\n if (share.type === ShareType.ShareLink || !share?.recipients?.length)\n return share.dateCreated;\n\n const datesShared = share.recipients.map(r => r.dateShared);\n\n datesShared.sort((date1, date2) => {\n if (DateHelper.isSame(date1, date2))\n return 0;\n\n return DateHelper.isAfter(date1, date2) ? 1 : -2;\n });\n\n\n if (!datesShared.length)\n return '';\n\n return ArrayHelper.last(datesShared);\n}\n\ninterface MySharesTableData {\n share: UnionShareObject;\n sharedObject: SharableEntity;\n dateShared: string;\n shareRecipients?: SharableRecipient[];\n viewCount: number;\n pendingReview: number;\n privacy?: SharePrivacy;\n overrideRestrictions?: boolean;\n}\n\ntype TableDataGroupings = { [date: string]: MySharesTableData[] };\n\nexport function useGetMySharesData(\n sentShares: UnionShareObject[],\n sharedObjects: SharableEntity[],\n shareRecipients: SharableRecipient[],\n groupByDate: boolean,\n interactivesPendingReviews: InteractivesPendingReviews[],\n dependencies: (string | boolean)[]\n): TableDataGroupings {\n return React.useMemo(() => {\n const tableData: MySharesTableData[] = [];\n\n const sharedObjectsMap = sharedObjects.reduce<Record<string, SharableEntity>>(\n (map, obj) => ({ [obj.id]: obj, ...map }),\n {}\n );\n const shareRecipientsMap = shareRecipients.reduce<Record<string, SharableRecipient>>(\n (map, obj) => ({ [obj.id]: obj, ...map }),\n {}\n );\n\n const interactivesPendingReviewsMap = interactivesPendingReviews?.reduce<\n Record<string, InteractivesPendingReviews>\n >(\n (map, obj) => ({ [obj.interactiveId]: obj, ...map }),\n {}\n );\n\n sentShares.forEach(s => {\n const sharedObject = sharedObjectsMap[s.objectId];\n\n let recipients: SharableRecipient[] | null = null;\n\n if (s.type === ShareType.DirectShare) {\n recipients = [];\n\n s.recipients?.forEach(r => {\n const recipient = shareRecipientsMap[r.id];\n\n if (recipient)\n recipients.push(recipient);\n });\n }\n\n // Skip if we don't have access to the shared object (e.g. if it's been deleted)\n if (sharedObject) {\n const pendingReview = sharedObject.typeId === MasterType.Interactive &&\n interactivesPendingReviewsMap?.[(sharedObject as InteractiveMetadata).interactiveId];\n\n tableData.push({\n share: s,\n sharedObject,\n shareRecipients: recipients,\n dateShared: getDateShared(s),\n viewCount: s.viewCount ?? 0,\n pendingReview: pendingReview?.pendingReviewCount,\n ...(s.type === ShareType.ShareLink ? {\n privacy: s.privacy,\n overrideRestrictions: s.overrideRestrictions\n } : {})\n });\n }\n });\n\n if (!groupByDate)\n return { [getPhrase('title')]: tableData };\n\n return ShareHelper.groupByDateShared(tableData);\n }, [...dependencies]);\n}","// extracted by mini-css-extract-plugin\nexport default {\"mySharesTable\":\"peXGl\"};","import React from 'react';\nimport { format as formatDate } from 'timeago.js';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { InteractivesPendingReviews } from 'libs/shared/apps/analytics/interfaces/response/InteractivesPendingReviewsResponse';\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { ShareLinkHelper } from 'libs/shared/apps/share/utils/ShareLinkHelper';\nimport { SharableEntity, SharableRecipient, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, UnionShareObject, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { useGetMySharesData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\nimport { SharedToPill } from 'apps/my-shares/components/shared-to-pill/SharedToPill';\n\nimport styles from './my-shares-table.scss';\n\nconst namespace = 'myShares.mySharesTable';\n\n\ninterface ShareObjectTitleProps {\n sharedObject: SharableEntity;\n requireMarking: number;\n}\n\nfunction ShareObjectTitle(props: ShareObjectTitleProps) {\n const { sharedObject } = props;\n\n if (!sharedObject.name) {\n return <Text namespace={namespace} phrase='videoUnavailable' />;\n }\n\n if (VideoHelper.isVideoType(sharedObject) &&\n !VideoHelper.getCanBeConsumed(sharedObject)?.canNavigate) {\n return (\n <span className='clamp-2'>\n {sharedObject.name}\n </span>\n );\n }\n\n function getSubTextPhrase(): string {\n switch (sharedObject.typeId) {\n case MasterType.Series: return 'series';\n case MasterType.Playlist: return 'playlist';\n }\n }\n\n const subTextPhrase = getSubTextPhrase();\n\n return (\n <div>\n {VideoHelper.isVideoType(sharedObject) && (\n <VideoSubText\n type='series'\n video={sharedObject}\n appLink={'series' in sharedObject && sharedObject.series ? getObjectAppLink(sharedObject.series) : null}\n analyticsOptions={{ location: LocationContext.Insights }}\n className='d-inline clamp-1'\n />\n )}\n\n {subTextPhrase &&\n <TitleSubText>\n <Text namespace={namespace} phrase={subTextPhrase} />\n </TitleSubText>\n }\n\n <AppLink\n appLink={getObjectAppLink(sharedObject)}\n className='clamp-1'\n analyticsData={{ id: sharedObject.id, name: sharedObject.name }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(sharedObject.type),\n actionType: UserAction.Click,\n location: LocationContext.MyShares\n }}\n >\n {sharedObject.name}\n </AppLink>\n\n {!!props.requireMarking && (\n <div className={`font-size-sm d-flex align-items-center bg-light-ultramarine text-ultramarine rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n )}\n </div>\n );\n}\n\ninterface MySharesTableProps {\n sentShares: UnionShareObject[];\n sharedObjects: SharableEntity[];\n shareRecipients: SharableRecipient[];\n interactivesPendingReview: InteractivesPendingReviews[];\n getObjectAppLink: (object: BaseObject) => Core.AppLink;\n getObjectActions: (object: BaseObject) => ActionOptions[];\n imageCdnUrl: string;\n groupByDateShared?: boolean;\n showStatus?: boolean;\n showViewCount?: boolean;\n dependencies?: (string | boolean)[];\n breakpoints?: Breakpoints;\n yearGroup?: YearGroup[];\n}\n\nexport function MySharesTable(props: MySharesTableProps): JSX.Element {\n const data = useGetMySharesData(\n props.sentShares,\n props.sharedObjects,\n props.shareRecipients,\n !!props.groupByDateShared,\n props.interactivesPendingReview,\n props.dependencies\n );\n\n return (\n <>\n {Object.keys(data).map((heading, i) => (\n <div key={heading}>\n <div className={`${styles.mySharesTable} gap-3 px-3`}>\n <p className='fw-semibold mb-2 ms-n3'>{heading}</p>\n {i === 0 &&\n <>\n <div />\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='sharedToHeading' /></p>\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='dateSharedHeading' /></p>\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='viewsHeading' /></p>\n </>\n }\n </div>\n\n <div className={`d-flex flex-column rounded-3 border border-light mb-4`}>\n {data[heading].map(shareData => {\n const sharedObject = shareData.sharedObject;\n\n const shareLinkText = shareData.share.type === ShareType.ShareLink &&\n ShareLinkHelper.getIconAndText({\n entity: sharedObject,\n entityTypeId: sharedObject.typeId,\n hasStudentExp: false,\n isPasswordProtected: shareData.share.isPasswordProtected,\n linkExpireDate: shareData.share.linkExpireDate,\n privacy: {\n privacy: shareData.privacy,\n overrideRestrictions: shareData.overrideRestrictions\n },\n status: shareData.share.status,\n yearGroups: props.yearGroup\n });\n\n return (\n <div key={shareData.share.id} className={`${styles.mySharesTable} align-items-center p-3 gap-3 border-light`}>\n <SharedObjectImage\n object={sharedObject}\n appLink={props.getObjectAppLink(sharedObject)}\n showVideoMetadata\n locationContext={LocationContext.MyShares}\n showCollectionMask\n showVideoCount\n />\n <ShareObjectTitle sharedObject={shareData.sharedObject} requireMarking={shareData.pendingReview} />\n\n <SharedToPill\n shareLinkText={shareLinkText?.text}\n shareRecipients={shareData.shareRecipients}\n imageCdnUrl={props.imageCdnUrl}\n />\n\n <p className='mb-0'>{formatDate(shareData.dateShared)}</p>\n\n <p className='mb-0'><Text namespace={namespace} phrase='views' options={{ count: shareData.viewCount }} /></p>\n\n <Actions className='justify-content-end gap-2' actions={props.getObjectActions(sharedObject)} />\n </div>\n );\n })}\n </div>\n </div>\n\n ))}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"table\":\"elIjR\",\"heading\":\"iWHol\",\"image\":\"TMQxq\",\"avatar\":\"_3GY1C\",\"date\":\"nz3va\",\"views\":\"FpDfX\",\"actions\":\"pOtyK\"};","import React from 'react';\n\nimport styles from './partial-my-shares-table.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`${styles.table} align-items-center striped-row rounded-3 gap-3 p-3`}>\n <div className={`partial-loading-background rounded ratio ratio-16x9 ${styles.image}`} />\n <div className={`partial-loading-background w-75 ${styles.name}`}> </div>\n <div className={`partial-loading-background w-75 rounded-pill ${styles.avatar}`} />\n <div className={`partial-loading-background ${styles.date}`}> </div>\n <div className={`partial-loading-background ${styles.views}`}> </div>\n <div className={`d-flex justify-content-end gap-2 p-3`}>\n <div className={`partial-loading-background rounded w-50 ${styles.actions}`} />\n <div className={`partial-loading-background rounded w-33 ${styles.actions}`} />\n </div>\n </div>\n );\n}\n\nexport function PartialMySharesTable(): JSX.Element {\n return (\n <>\n <div className='mb-3'>\n <div className='striped-list no-full-width'>\n <div className={`${styles.table} gap-3 px-3`}>\n <div className={`partial-loading-background mb-2 ms-n3 ${styles.date}`}> </div>\n <div />\n <div className={`partial-loading-background mb-2 ${styles.date}`}> </div>\n <div className={`partial-loading-background mb-2 ${styles.date}`}> </div>\n <div className={`partial-loading-background mb-2 ${styles.date}`}> </div>\n </div>\n\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n\n <div className='mb-3'>\n <div className={`partial-loading-background mb-2 ${styles.date}`}> </div>\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n\n <div className='mb-3'>\n <div className={`partial-loading-background mb-2 ${styles.date}`}> </div>\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 </div>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myShares.mySharesEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function MySharesEmptyState() {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.MY_VIDEOS_PUBLIC} altText={getPhrase('heading')} />\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.MySharesLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { getInsightsAppLink, getShareAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function getShareObjectActions(\n sharedObject: BaseObject,\n audienceParams: AudienceQueryParams\n): ActionOptions[] {\n const insightObjectActions: ActionOptions[] = [];\n\n const buttonProps = {\n button: true,\n className: 'btn btn-outline-dark'\n };\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n\n insightObjectActions.push({\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('viewInsights'),\n appLink: { ...getInsightsAppLink(sharedObject), params: audienceParams },\n group: 'insights',\n ...buttonProps\n });\n }\n\n insightObjectActions.push({\n label: getPhrase('share'),\n svgName: cvSvgLibrary.Share,\n appLink: getShareAppLink(sharedObject),\n group: 'share',\n ...buttonProps\n });\n\n return insightObjectActions;\n}\n\nexport function useGetShareObjectActions(\n audienceParams?: AudienceQueryParams\n): ((object: BaseObject) => ActionOptions[]) | null {\n const audienceParamsKey = JSON.stringify(audienceParams);\n\n return React.useCallback(\n (object: BaseObject) => getShareObjectActions(\n object,\n audienceParams\n ),\n [audienceParamsKey]\n );\n}\n\n\nexport function getTypeIdParams(params: HashObject): MasterType[] {\n const typeIdParams = params?.typeId;\n\n if (!typeIdParams) return [];\n\n if (typeof typeIdParams === 'string')\n return [+typeIdParams];\n\n return params?.typeId.map((typeId: MasterType) => +typeId) || [];\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { AudienceFilterView } from 'libs/shared/apps/analytics/views/audience-filter/AudienceFilterView';\nimport { GetSentItemsParams } from 'libs/shared/apps/share/interfaces/requests/GetSentItemsParams';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { InsightsTypeFilters } from 'apps/insights/components/insights-list/type-filter/InsightsTypeFilters';\nimport { InsightsAdminAlert } from 'apps/insights/views/insights-admin-alert/InsightsAdminAlert';\nimport { MySharesTableEmptyState } from 'apps/my-shares/components/my-shares-table/empty-state/MySharesTableEmptyState';\nimport { MySharesTable } from 'apps/my-shares/components/my-shares-table/MySharesTable';\nimport { PartialMySharesTable } from 'apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable';\nimport { MySharesEmptyState } from 'apps/my-shares/views/my-shares/empty-state/MySharesEmptyState';\nimport { getTypeIdParams, useGetShareObjectActions } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesViewProps {\n queryParams: HashObject;\n}\n\nexport function MySharesView(props: MySharesViewProps) {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasInsights } = useSettings(null);\n\n useLockContentWidth();\n\n const breakpoints = useBreakpoints();\n\n const typeIdAppLinkParams = getTypeIdParams(props.queryParams);\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const currentAppLink = getCurrentAppLink();\n const sentSharesParams = getSentSharesFilter();\n\n\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMySharesLanding) ||\n hasPermissions(PermissionName.ViewMyShares) && hasInsights;\n\n const {\n sentShares,\n sharedObjects,\n shareRecipients,\n interactivesPendingReview,\n isFetching,\n showPartialLoading,\n nextCursor,\n hasMore,\n fetchNext,\n imageCdnUrl,\n dependencies\n } = useSharesTable(sentSharesParams, true, shouldFetch);\n\n useSetPageMetadata({ title: getPhrase('myShares') });\n const { hasClassrooms } = useSettings(null);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const getSharedObjectActions = useGetShareObjectActions(audienceAppLinkParams);\n\n React.useEffect(() => {\n if (!(hasPermissions(PermissionName.ViewMyShares) && hasInsights))\n Core.LocationUtils.PageLoad('/');\n }, [shouldFetch]);\n\n function getSentSharesFilter(): GetSentItemsParams {\n return {\n recipientUserId: audienceAppLinkParams?.users,\n recipientGroupId: [ ...audienceAppLinkParams?.classroomGroups || [], ...audienceAppLinkParams?.classrooms || [] ],\n objectTypeId: typeIdAppLinkParams.length ? typeIdAppLinkParams : undefined\n };\n }\n\n function getCurrentAppLink(): Core.AppLink {\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME,\n params: {\n ...audienceAppLinkParams,\n typeId: typeIdAppLinkParams\n }\n };\n }\n\n if (!shouldFetch)\n return <MySharesEmptyState />;\n\n return (\n <div className='px-3'>\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n />\n\n <div className='d-flex justify-content-between border-bottom pb-3 mb-3'>\n <h1 className='mb-1'><Text namespace={namespace} phrase='myShares' /></h1>\n\n <AudienceFilterView hasClassroomsFeature={hasClassrooms} />\n </div>\n\n <div className='mb-3'>\n <InsightsTypeFilters appLink={currentAppLink} typeIdParams={typeIdAppLinkParams} />\n </div>\n\n {(() => {\n if (showPartialLoading)\n return <PartialMySharesTable />;\n\n if (!sentShares.length)\n return (\n <MySharesTableEmptyState />\n );\n\n return (\n <>\n <MySharesTable\n sentShares={sentShares}\n sharedObjects={sharedObjects}\n shareRecipients={shareRecipients}\n interactivesPendingReview={interactivesPendingReview}\n getObjectAppLink={getObjectAppLink}\n getObjectActions={getSharedObjectActions}\n imageCdnUrl={imageCdnUrl}\n groupByDateShared\n dependencies={dependencies}\n breakpoints={breakpoints}\n yearGroup={yearGroups.data}\n />\n {(hasMore || isFetching) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} nextCursor={nextCursor} />\n }\n </>\n );\n })()}\n </div>\n );\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { DirectShare, UnionShareObject } from 'libs/shared/interfaces';\n\nexport const ShareHelper = {\n getDirectShares(sentShares: UnionShareObject[]): DirectShare[] {\n return sentShares?.filter(s => s.type === ShareType.DirectShare) as DirectShare[] ?? [];\n },\n \n getRecipientIds(sentShares: UnionShareObject[]): string[] {\n return ArrayHelper.uniq(ArrayHelper.flatten(ShareHelper.getDirectShares(sentShares).map(d => d.recipients ?? [])), 'id').map(r => r.id);\n }\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractivesPendingReviews } from 'libs/shared/apps/analytics/interfaces/response/InteractivesPendingReviewsResponse';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { GetSentItemsParams } from 'libs/shared/apps/share/interfaces/requests/GetSentItemsParams';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBatchFetch, UseBatchFetchResult } from 'libs/shared/hooks/UseBatchFetch';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { BaseObject, Config, CurrentUser, InteractiveMetadata, UnionShareObject } from 'libs/shared/interfaces';\nimport { ShareHelper } from 'libs/shared/utils/ShareHelper';\n\n\nexport function getBatchFetchResultAsArray(result: UseBatchFetchResult<BaseObject>): BaseObject[] {\n return result.items ? Object.values(result.items) : [];\n}\n\n/**\n * As we are displaying data in an infinite list, we only want to show partial loading\n * on the initial fetch.\n * Whenever a new page is fetched, `sharedObjects.data` and `recipients.data` will be `undefined`,\n * as their key will change. So instead of using those values to determine whether or not to\n * show partial loading, we save the first time that they load in state and then use that.\n */\nexport function usePartialLoading(\n sentShare: UnionShareObject[],\n hasFetchedSharedObjects: boolean,\n recipientIds: string[],\n hasFetchedRecipients: boolean,\n config: Flight.Response<Config>\n): boolean {\n const [ initialSharedObjectsLoaded, setInitialSharedObjectsLoaded ] = React.useState(hasFetchedSharedObjects);\n const [ initialRecipientsLoaded, setInitialRecipientsLoaded ] = React.useState(hasFetchedRecipients);\n\n React.useEffect(() => {\n if (hasFetchedSharedObjects)\n setInitialSharedObjectsLoaded(true);\n }, [hasFetchedSharedObjects]);\n\n React.useEffect(() => {\n if (hasFetchedRecipients)\n setInitialRecipientsLoaded(true);\n }, [hasFetchedRecipients]);\n\n if (sentShare && !sentShare.length)\n return false;\n\n return !sentShare\n || !initialSharedObjectsLoaded\n || (recipientIds.length && !initialRecipientsLoaded)\n || !config.data;\n}\n\nexport function useSharesTable(\n params?: GetSentItemsParams,\n interactiveInsights?: boolean,\n shouldFetch: boolean = true\n) {\n const fetch = Flight.useGetFetch();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const getRequest = (cursor?: string) => shouldFetch && ShareRequests.sentShare({\n cursor,\n ...params\n });\n const fetchNext = (cursor?: string) => fetch(getRequest(cursor));\n\n const {\n items: sentShares,\n hasMore,\n isFetching: isFetchingSentShares,\n nextCursor\n } = useInfiniteList<UnionShareObject>(getRequest, fetchNext);\n\n const sharedObjectIds = ArrayHelper.uniq(sentShares?.map(s => s.objectId) ?? []);\n\n const sharedObjectsFetchResult = useBatchFetch(sharedObjectIds, (ids: string[]) => {\n return ShareRequests.sharedObjectsById(ids);\n });\n\n const recipientIds = ShareHelper.getRecipientIds(sentShares);\n\n const shareRecipientsFetchResult = useBatchFetch(recipientIds, (ids: string[]) => {\n return ShareRequests.getRecipientsById(ids, currentUser.data.customerId);\n });\n \n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const showPartialLoading = usePartialLoading(\n sentShares,\n !!sharedObjectsFetchResult.items,\n recipientIds,\n !!shareRecipientsFetchResult.items,\n config\n );\n\n const filterKey = JSON.stringify(params);\n\n // Wait until all data is fetched before telling the table to re-render\n const isFetching = isFetchingSentShares\n || sharedObjectsFetchResult.isFetching\n || shareRecipientsFetchResult.isFetching;\n\n const sharedObjects = getBatchFetchResultAsArray(sharedObjectsFetchResult);\n const shareRecipients = getBatchFetchResultAsArray(shareRecipientsFetchResult);\n \n const interactiveIds = getInteractiveIds();\n \n const interactivesPendingReview = Flight.useBasicFetch<InteractivesPendingReviews[]>(\n interactiveInsights && !!sharedObjectsFetchResult.items && currentUser.data &&\n InteractiveResultsRequests.pendingReviews({\n interactives: interactiveIds,\n filters: {\n currentCustomerId: currentUser.data.customerId,\n currentUserId: currentUser.data.id\n }\n })\n );\n \n const dependencies = [ isFetching, filterKey, interactivesPendingReview.isFetching ];\n \n function getInteractiveIds() {\n return interactiveInsights && sharedObjects?.length && sharedObjects.reduce(\n (acc, value) => {\n const isInteractive = value.typeId === MasterType.Interactive;\n\n if (!isInteractive) return acc;\n\n const interactive = value as InteractiveMetadata;\n return [ ...acc, { metadataId: interactive.id, interactiveId: interactive.interactiveId }];\n },\n []\n );\n }\n\n return {\n sentShares,\n sharedObjects,\n shareRecipients,\n interactivesPendingReview: interactivesPendingReview.data,\n isFetching,\n showPartialLoading,\n nextCursor,\n hasMore,\n fetchNext,\n imageCdnUrl: config.data?.imageCdnUrl,\n dependencies\n };\n}"],"names":["getInteractiveResultFilters","currentUser","filter","currentUserId","id","currentCustomerId","customerId","dateRange","start","end","userIds","userId","classroomsAndGroups","groupId","InteractiveResultsRequests","interactiveResultSet","interactiveId","interactiveMetadataId","includePublicResults","success","error","always","url","key","data","type","normalize","formatData","students","map","student","name","profileId","publicUser","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","Actions","props","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","idx","label","appLink","href","onClick","svgName","svgSize","dropdownToggleSvgSize","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","customSize","ariaLabel","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","fetchMore","useBatchFetch","itemIds","getRequest","idBatches","setIdBatches","newBatches","find","batch","_id","join","dispatch","state","idBatch","request","shouldFetch","items","isFetching","responses","i","response","v","Object","keys","some","k","useLockContentWidth","namespace","getPhrase","LanguageService","InsightsTypeFilters","moreFilterOptions","MasterType","moreFiltersSelected","typeIdParams","typeId","option","showDropdown","setShowDropdown","moreFilters","setMoreFilters","applyFilter","currentParams","params","Text","phrase","InsightTypeFilterButton","typeFilters","Dropdown","onToggle","isShowing","show","variant","Checkbox","onChange","ArrayHelper","checked","selectedFilter","selected","includes","currentAppLink","newType","newAppLink","getTypePhrase","AppLink","MySharesTableEmptyState","EmptyState","src","ImageUrls","size","application","action","text","getDateShared","share","ShareType","recipients","dateCreated","datesShared","r","dateShared","date1","date2","DateHelper","ShareObjectTitle","sharedObject","VideoHelper","canNavigate","subTextPhrase","getSubTextPhrase","VideoSubText","video","series","location","TitleSubText","entity","ShareViewHelper","actionType","requireMarking","options","smartCount","MySharesTable","sentShares","sharedObjects","shareRecipients","groupByDate","interactivesPendingReviews","dependencies","groupByDateShared","interactivesPendingReview","tableData","sharedObjectsMap","reduce","obj","shareRecipientsMap","interactivesPendingReviewsMap","s","objectId","recipient","pendingReview","viewCount","pendingReviewCount","privacy","overrideRestrictions","ShareHelper","heading","shareData","shareLinkText","ShareLinkHelper","entityTypeId","hasStudentExp","isPasswordProtected","linkExpireDate","status","yearGroups","yearGroup","SharedObjectImage","object","getObjectAppLink","showVideoMetadata","locationContext","showCollectionMask","showVideoCount","SharedToPill","imageCdnUrl","count","getObjectActions","PartialRow","PartialMySharesTable","MySharesEmptyState","altText","workflowPhase","descriptor","SignUp","MySharesView","usePermissions","hasPermissions","hasLocalPermissions","hasInsights","useSettings","breakpoints","useBreakpoints","typeIdAppLinkParams","queryParams","audienceAppLinkParams","sentSharesParams","recipientUserId","users","recipientGroupId","classroomGroups","classrooms","objectTypeId","undefined","PermissionName","useSharesTable","showPartialLoading","nextCursor","hasMore","fetchNext","useSetPageMetadata","audienceParams","audienceParamsKey","hasClassrooms","config","ConfigRequests","UserRequests","isAuthenticated","CustomerRequests","getSharedObjectActions","JSON","stringify","insightObjectActions","buttonProps","canConsume","group","getShareObjectActions","InsightsAdminAlert","analyticsUrl","analyticsWebUrl","hasAnalytics","AudienceFilterView","hasClassroomsFeature","InfiniteScrollFooter","getDirectShares","getRecipientIds","d","getBatchFetchResultAsArray","result","values","interactiveInsights","fetch","cursor","ShareRequests","isFetchingSentShares","sharedObjectIds","sharedObjectsFetchResult","ids","recipientIds","shareRecipientsFetchResult","sentShare","hasFetchedSharedObjects","hasFetchedRecipients","initialSharedObjectsLoaded","setInitialSharedObjectsLoaded","initialRecipientsLoaded","setInitialRecipientsLoaded","usePartialLoading","filterKey","interactiveIds","acc","value","interactive","metadataId","I","interactives","filters"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9155],{71553:(e,t,a)=>{a.d(t,{I:()=>c});var n=a(99940),r=a(62875);function i(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:t.start,end:t.end},userIds:t.userId,classroomsAndGroups:t.groupId}}var c={interactiveResultSet:function(e,t,a,c,l,s,o,u){return{url:l?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:(0,r.H)("interactive:result:set:".concat(e,":").concat(t),c),data:i(a,c),type:n.k.POST,normalize:!1,formatData:function(e){return Object.assign(Object.assign({},e),{students:e.students.map((function(e){return e.name&&e.profileId?Object.assign(Object.assign({},e),{publicUser:{profileId:e.profileId,name:e.name}}):e}))})},success:s,error:o,always:u}},mark:function(e,t,a,r,i,c,l){return{url:"/api/domain/v1/analytics/answers/".concat(a),key:"mark:answer:".concat(a,":").concat(r.resultId),type:n.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:i,error:c,always:l}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:n.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:n.k.POST,normalize:!1}}}},40391:(e,t,a)=>{a.d(t,{m9:()=>E,Ad:()=>b,Kh:()=>N});var n=a(32735),r=a(23481),i=a(75896),c=a(20789),l=a(18995),s=a(60376),o=a(83914),u=a(36532),m=a(4594),d=a(36511),p=a(35223),v=a(64818);const f={avatarContainer:"ByxQa",sm:"EgJ0v",sharedAvatar:"cW0NT"};var g=r.T.encloseNamespace("reportsShare.sharedToAvatarList");function h(e){var t=i.m.countBy(e,"typeId"),a=t[m.E.User],n=t[m.E.Classroom],r=t[m.E.ClassroomGroup];return a&&n&&r?g("classroomsGroupsAndUsers",{userCount:a,classroomCount:n,groupCount:r}):a&&n?g("classroomsAndUsers",{userCount:a,classroomCount:n}):a&&r?g("groupsAndUsers",{userCount:a,groupCount:r}):n&&r?g("classroomsAndGroups",{classroomCount:n,groupCount:r}):a?g("users",{userCount:a}):n?g("classrooms",{classroomCount:n}):r?g("groups",{groupCount:r}):void 0}function y(e){var t,a,r,i,l,g=(null===(t=e.item)||void 0===t?void 0:t.typeId)===m.E.User&&e.item,h=(null===(a=e.item)||void 0===a?void 0:a.typeId)===m.E.Classroom&&e.item,y=(null===(r=e.item)||void 0===r?void 0:r.typeId)===m.E.ClassroomGroup&&e.item,E="d-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100";return n.createElement(n.Fragment,null,!!g&&n.createElement(u.u,{title:"".concat(g.name," ").concat(g.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement(c.q,{imageUrl:null===(i=g.avatar)||void 0===i?void 0:i.url,imageCdnUrl:e.imageCdnUrl,initials:v.l.getInitials(g.name,g.surname),extraClasses:f.sharedAvatar})),!!h&&n.createElement(u.u,{title:h.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:E},n.createElement(s.f,{svgName:p.vn.Classrooms,svgSize:o.S.Large,variant:"teal"}))),!!y&&n.createElement(u.u,{title:y.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:E},n.createElement(s.f,{svgName:p.vn.Group,variant:(0,d.I)(null===(l=y.metadata)||void 0===l?void 0:l.colour)}))))}function E(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(u.u,{title:g("anonymous"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},n.createElement(o.x,{svgName:p.vn.Anonymous,size:"sm"===e.avatarSize?o.S.Small:null})))}function b(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(u.u,{title:e.text||g("sharedLink"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ".concat(e.className||"")},n.createElement(o.x,{svgName:p.vn.Link,size:"sm"===e.avatarSize?o.S.Small:null})))}function N(e){return n.createElement(l.e,Object.assign({},e,{items:e.recipients,avatarItem:y,avatarContainerClassname:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:""),getHiddenTooltip:h,hasShareLink:e.hasShareLink,shareLinkText:e.shareLinkText}))}N.defaultProps={maxAvatars:5}},95834:(e,t,a)=>{a.d(t,{J:()=>n});var n={table:"striped-list no-full-width pb-3",header:"fw-semibold pb-1",headerCell:"py-2 ps-2 text-nowrap",row:"striped-row rounded",cell:"d-flex align-items-center p-2"}},83657:(e,t,a)=>{a.d(t,{e:()=>o});var n=a(32735),r=a(91967),i=a(10874),c=a(36532),l=a(42735),s=a(86509);function o(e){var t=n.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),a=[],o=[];t.forEach((function(e){e.button?a.push(e):o.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),a.length||o.length?n.createElement("div",{className:u},a.length?a.map((function(t,a){return n.createElement(n.Fragment,{key:a},function(){if(t.label){var a=r.q.isFunction(t.label)?t.label:function(){return n.createElement(n.Fragment,null,t.label)};return n.createElement(l.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},a())}var s=n.createElement(i.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize,ariaLabel:t.tooltip});return t.tooltip?n.createElement(c.u,{title:t.tooltip,spanHack:!0},s):s}())})):n.createElement(n.Fragment,null),e.sortComponent&&e.sortComponent,o.length?n.createElement(s.m,{actions:o,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):n.createElement(n.Fragment,null)):n.createElement(n.Fragment,null)}},86509:(e,t,a)=>{a.d(t,{m:()=>g});var n=a(32735),r=a(91967),i=a(81886),c=a(45157),l=a(49985),s=a(36848),o=a(83914),u=a(36532),m=a(35223);const d={dropdownToggle:"UCAnJ"};function p(){return n.createElement(n.Fragment,null,n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function v(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function f(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return n.createElement(n.Fragment,null,e.action.label)};if(e.action.appLink)return n.createElement(s.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:v(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&n.createElement(o.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t()));function a(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&l.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&i.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?n.createElement("a",{className:v(e.action.className),onClick:a,href:e.action.href},e.action.svgName&&n.createElement(o.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t())):n.createElement("span",{className:"cursor-pointer ".concat(v(e.action.className)),onClick:a,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&a(e)}},e.action.svgName&&n.createElement(o.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function g(e){if(!e.actions||!e.actions.length)return n.createElement(n.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),a="dropdown";e.className&&(a+=" ".concat(e.className));var r,i="actions-dropdown-".concat(c.Y.getRandomInt()),l="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(l+=" ".concat(e.dropdownToggleClassName)),n.createElement("div",{className:a},n.createElement("button",{className:l,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:t?e.fetchMore:null},n.createElement(o.x,{svgName:m.vn.More,size:e.dropdownToggleSvgSize})),n.createElement("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i},t?n.createElement(p,null):e.actions.map((function(e,t){var a=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(u.u,{title:e.tooltip,spanHack:!0},n.createElement(f,{action:e}))):n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(f,{action:e}))}))))}g.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:o.S.Small}},18995:(e,t,a)=>{a.d(t,{e:()=>s});var n=a(32735),r=a(23481),i=a(40391),c=a(36532),l=r.T.encloseNamespace("shared.avatarList");function s(e){var t=e.items.length>e.maxAvatars?e.items.slice(0,e.maxAvatars-1):e.items,a=e.items.length>t.length?e.items.slice(e.maxAvatars-1):[],r=e.avatarItem,s=a.length,o="sm"===e.avatarSize?4:8;function u(t){return{transform:"translateX(".concat((e.hasShareLink?t+1:t)*-o,"px)"),zIndex:e.maxAvatars-t}}return 0===t.length&&0===a.length?n.createElement(n.Fragment,null):n.createElement("div",{className:"d-flex",style:{marginRight:"-".concat((t.length-1+(a.length?1:0)+(e.hasShareLink?1:0))*o,"px")}},e.hasShareLink&&n.createElement("div",{style:{zIndex:e.maxAvatars+1}},n.createElement(i.Ad,{text:e.shareLinkText,avatarSize:e.avatarSize,className:"bg-dark text-white"})),t.map((function(t,a){return n.createElement("div",{className:"".concat(e.avatarContainerClassname||""),key:t.id,style:u(a)},n.createElement(r,{item:t,imageCdnUrl:e.imageCdnUrl,index:a,maxAvatars:e.maxAvatars}))})),!!a.length&&n.createElement("div",{className:"".concat(e.avatarContainerClassname||""," bg-white rounded-circle"),style:{transform:"translateX(".concat(t.length*-o,"px)"),zIndex:e.maxAvatars-t.length}},n.createElement(c.u,{title:e.getHiddenTooltip?e.getHiddenTooltip(a):e.roleToDisplay?l("staff"===e.roleToDisplay?"staff":"student",{count:s,smartCount:s}):l("users",{count:s,smartCount:s}),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:"d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ".concat(e.numberClassname||"")},"+".concat(a.length)))))}s.defaultProps={maxAvatars:5}},38502:(e,t,a)=>{a.d(t,{r:()=>m});var n=a(32735),r=a(49985),i=a(36848),c=a(18559),l=a(11607),s=a(83914),o=a(87432);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(c.C,{type:c.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(o.Z.pillTabSelector,"\n ").concat(e.borderRadius?o.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return n.createElement("li",{className:"\n p-0 ".concat(o.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?o.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?n.createElement(i.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(o.Z.tabLink,"\n ")},n.createElement(u,{tab:e})):n.createElement(l.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},n.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},39902:(e,t,a)=>{a.d(t,{f:()=>s});var n=a(32735),r=a(70680),i=a(20354);function c(e,t){if(e){if("string"==typeof e)return l(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function s(e,t){var a,s,o=(a=n.useState([]),s=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,c,l=[],s=!0,o=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=i.call(a)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(o)throw r}}return l}}(a,s)||c(a,s)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=o[0],m=o[1];n.useEffect((function(){if(null==e?void 0:e.length){var t=function(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(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.")}()}(u);t.push([]),e.forEach((function(e){t.find((function(t){return t.find((function(t){return t===e}))}))||t[t.length-1].push(e)})),m(t.filter((function(e){return e.length})))}}),[e?e.join(","):null]);var d=(0,r.I0)(),p=(0,r.v9)((function(e){return e}));if(n.useEffect((function(){u.forEach((function(e){var a=t(e);i.a.getResponse(p,a.key).shouldFetch&&i.a.fetch(d,a)}))}),[null==u?void 0:u.length]),!(null==u?void 0:u.length))return{items:null,isFetching:!1};var v={},f={};return u.forEach((function(e,a){var n=t(e),r=i.a.getResponse(p,n.key);f[a]=r,r.data&&r.data.forEach((function(e){return v[e.id]=e}))})),{items:Object.keys(f).some((function(e){return!!f[e].data}))?v:null,isFetching:!!Object.keys(f).some((function(e){return f[e].isFetching}))}}},62875:(e,t,a)=>{function n(e,t,a){var n="".concat(e,":").concat(t.start,":").concat(t.end),r=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,i=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId;return r&&(n+=":".concat(r)),i&&(n+=":".concat(i)),a&&(n+=":".concat(a)),n}a.d(t,{H:()=>n})},70227:(e,t,a)=>{a.d(t,{c:()=>i});var n=a(97395),r=a(4594),i={getObjectUrl:function(e,t){var a=e.analyticsWebUrl;if(a){var i="";switch(t.typeId){case r.E.Video:i="/videos/".concat(t.id,"/overview");break;case r.E.Clip:i="/clips/".concat(t.id,"/overview");break;case r.E.Interactive:i="/interactives/".concat(t.id,"/overview")}if(i)return n._.safeUrlConcat(a,i)}}}},36511:(e,t,a)=>{a.d(t,{I:()=>r});var n=a(40424);function r(e){switch(e){case n.R.Pink:return"pink";case n.R.Orange:return"orange";case n.R.Green:return"green";case n.R.Blue:return"blue";case n.R.Purple:return"purple";case n.R.Indigo:return"indigo";default:return"pink"}}},2523:(e,t,a)=>{a.d(t,{w:()=>p});var n=a(32735),r=a(23481),i=a(81886),c=a(38502),l=a(75795),s=a(14070),o=a(97291),u=r.T.encloseNamespace("share.sharesHeader"),m={application:o.O.MY_SHARES,action:s.e.MyShares.SHARED_BY_ME},d={application:o.O.MY_SHARES,action:s.e.MyShares.SHARED_WITH_ME};function p(){return n.createElement("div",{className:"pb-3"},n.createElement("h1",{className:"h2 mb-3"},u("shares")),n.createElement(c.r,{tabs:(t=null===(e=l.O.getCurrentRoute())||void 0===e?void 0:e.appLink,[{name:u("sharedByMe"),onSelect:function(){return i.Q.C$.trigger(m)},active:(null==t?void 0:t.action)===m.action},{name:u("sharedWithMe"),onSelect:function(){return i.Q.C$.trigger(d)},active:(null==t?void 0:t.action)===d.action}])}));var e,t}},76233:(e,t,a)=>{a.r(t),a.d(t,{SharedByMeView:()=>ue});var n=a(32735),r=a(81886),i=a(23481),c=a(23232),l=i.T.encloseNamespace("share.sharedByMeEmptyState");function s(e){return n.createElement(c.u,null,n.createElement(c.u.Image,{src:e.imageUrl,size:"small"}),n.createElement(c.u.Heading,null,l(e.useInteractiveCopy?"interactivesHeading":"genericHeading")),n.createElement(c.u.Info,null,l(e.useInteractiveCopy?"interactivesInfo":"genericInfo")),!!e.appLink&&n.createElement(c.u.Cta,{appLink:e.appLink,text:l("cta")}))}var o=a(95834),u=a(69674),m=a(82602),d=a(75896),p=a(110),v=a(65858),f=a(83914),g=a(36532),h=a(49080),y=a(85063),E=a(35223);var b=i.T.encloseNamespace("share.shareStatusIndicator");function N(e){if(e.type===y.y.DirectShare)return b("active");switch(e.status){case h.F.Active:return b("active");case h.F.Expired:return b("expired")}}function S(e){if(e.type===y.y.DirectShare)return"bg-success";switch(e.status){case h.F.Active:return"bg-success";case h.F.Expired:return"bg-gray-500"}}function k(e){var t;return e.share.type!==y.y.DirectShare||(null===(t=e.share.recipients)||void 0===t?void 0:t.length)?e.share.type===y.y.ShareLink&&e.share.isPasswordProtected?n.createElement(g.u,{title:b("passwordProtected"),spanHack:!0},n.createElement(f.x,{svgName:E.vn.Lock,size:f.S.Small})):n.createElement(g.u,{title:N(e.share),spanHack:!0,spanHackClassName:"T6YAv"},n.createElement("div",{className:"".concat("_MRHG"," ").concat(S(e.share))})):n.createElement(n.Fragment,null)}var w=a(29024),C=a(40391),I=a(31754),x=a(64249),A=a(83657),T=a(36848),O=a(83345),j=a(11882),H=a(31908);function M(e){return M="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},M(e)}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var F="share.sharedByMeTable",R=i.T.encloseNamespace(F);function U(e){var t;if(e.type===y.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var a=e.recipients.map((function(e){return e.dateShared}));return a.sort((function(e,t){return p.O.isSame(e,t)?0:p.O.isAfter(e,t)?1:-2})),a.length?d.m.last(a):""}function D(e,t,a,r,i,c,l,s){var o=s&&(s.xs||s.sm),u=[{Header:c?"":t,accessor:"sharedObject",id:"image",Cell:function(e){var t=e.value;return n.createElement("div",{className:"w-100"},n.createElement(w.k,{object:t,appLink:a(t),showVideoMetadata:!0,locationContext:v.LZ.SharedByMe}))},minWidth:140,maxWidth:30},{accessor:"sharedObject",id:"name",Cell:function(e){var t,r=e.value;return r.name?H.M.isVideoType(r)&&!(null===(t=H.M.getCanBeConsumed(r))||void 0===t?void 0:t.canNavigate)?n.createElement("span",{className:"clamp-2"},r.name):n.createElement("div",{className:"clamp-2"},H.M.isVideoType(r)&&n.createElement(j.$,{type:"series",video:r,appLink:"series"in r&&r.series?a(r.series):null,analyticsOptions:{location:v.LZ.Insights}}),n.createElement(T.F,{appLink:a(r),analyticsData:{id:r.id,name:r.name},analyticsOptions:{entity:x.I.getAnalyticsEntity(r.type),actionType:v.Vw.Click,location:v.LZ.SharedByMe}},r.name)):n.createElement("span",null,n.createElement(O.x,{namespace:F,phrase:"videoUnavailable"}))},width:60},{Header:0===e?R("sharedTo"):"",accessor:"shareRecipients",Cell:function(e){var t=e.value;return t?t.length?n.createElement(C.Kh,{recipients:t,imageCdnUrl:i,maxAvatars:o?1:2}):n.createElement(C.m9,null):n.createElement(C.Ad,null)},width:40},!o&&{Header:0===e?R("shared"):"",id:"dateShared",accessor:function(e){return(0,m.WU)(e.dateShared)},width:40},{accessor:"sharedObject",id:"actions",Cell:function(e){var t=e.value;return n.createElement(A.e,{actions:r(t),className:"w-100 justify-content-end pe-2"})},width:20}],d={Header:t,accessor:"share",id:"status",Cell:function(e){var t=e.value;return n.createElement(k,{share:t})},width:5},p={Header:R("views"),accessor:"viewCount",width:30};return c&&u.splice(0,0,d),l&&u.splice(u.length-1,0,p),u.filter(Boolean)}var z=n.memo((function(e){var t,a,r,i,c,l,s=(t=e.sentShares,a=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,c=e.dependencies,n.useMemo((function(){var e,n,c,l=[];return t.forEach((function(e){var t,n,i=a.find((function(t){return t.id===e.objectId})),c=null;e.type===y.y.DirectShare&&(c=[],null===(t=e.recipients)||void 0===t||t.forEach((function(e){var t=r.find((function(t){return t.id===e.id}));t&&c.push(t)}))),i&&l.push({share:e,sharedObject:i,shareRecipients:c,dateShared:U(e),viewCount:null!==(n=e.viewCount)&&void 0!==n?n:0})})),i?I.x.groupByDateShared(l):(e={},n=R("title"),c=l,(n=function(e){var t=function(e){if("object"!=M(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=M(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==M(t)?t:t+""}(n))in e?Object.defineProperty(e,n,{value:c,enumerable:!0,configurable:!0,writable:!0}):e[n]=c,e)}),function(e){if(Array.isArray(e))return L(e)}(l=c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return L(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?L(e,t):void 0}}(l)||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.")}()));return n.createElement(n.Fragment,null,Object.keys(s).map((function(t,a){return n.createElement(u.i,{key:a,columns:D(a,t,e.getObjectAppLink,e.getObjectActions,e.imageCdnUrl,e.showStatus,e.showViewCount,e.breakpoints),data:s[t],theme:o.J})})))})),B=a(71020),P=a(16714),_=a(79967),V=a(22902),W=a(79612),Z=a(37802),G=a(99742),J=a(14070),K=a(97291),Y=a(64208),$=a(86099),q=a(2523);const Q={imageColumn:"uIOaA",nameColumn:"Nta2B",sharedToColumn:"XTJBC",dateSharedColumn:"HdARK",actionsColumn:"DXyZw",heading:"XZ6o7",image:"MolfU",name:"MM43m",avatar:"EboYM",date:"by_XM",actions:"_S2M_"};function X(){return n.createElement("div",{className:"d-flex striped-row rounded"},n.createElement("div",{className:"d-flex align-items-center justify-content-center p-2 ".concat(Q.imageColumn)},n.createElement("div",{className:"partial-loading-background rounded w-100 ".concat(Q.image)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(Q.nameColumn)},n.createElement("div",{className:"partial-loading-background w-75 ".concat(Q.name)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(Q.sharedToColumn)},n.createElement("div",{className:"partial-loading-background ".concat(Q.avatar)})),n.createElement("div",{className:"d-none d-md-flex align-items-center p-2 ".concat(Q.dateSharedColumn)},n.createElement("div",{className:"partial-loading-background ".concat(Q.date)})),n.createElement("div",{className:"d-flex align-items-center justify-content-end p-2 ".concat(Q.actionsColumn)},n.createElement("div",{className:"partial-loading-background rounded me-2 ".concat(Q.actions)})))}function ee(e){return n.createElement("div",{className:"d-flex mb-1"},n.createElement("div",{className:"".concat(Q.imageColumn," p-2")},n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)})),n.createElement("div",{className:"".concat(Q.nameColumn," p-2")}," "),n.createElement("div",{className:"".concat(Q.sharedToColumn," p-2")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(Q.dateSharedColumn," p-2 d-none d-md-flex")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(Q.actionsColumn," p-2")}," "))}function te(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"mb-3"},n.createElement(ee,{fullHeader:!0}),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(X,null),n.createElement(X,null),n.createElement(X,null))),n.createElement("div",{className:"mb-3"},n.createElement(ee,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null))),n.createElement("div",{className:"mb-3"},n.createElement(ee,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null),n.createElement(X,null))))}var ae=a(20354),ne=a(4594),re=a(39151),ie=a(70227),ce=i.T.encloseNamespace("liteShare.sharedByMe");function le(e,t){return{label:ce("editShareSettings"),appLink:{application:K.O.DEFAULT,action:J.e.Default.SHARE,args:[e.id],params:{entityType:t}}}}function se(e){return n.createElement(g.u,{title:e.label,spanHack:!0},n.createElement("a",{href:e.url,target:"_blank"},n.createElement(f.x,{svgName:E.vn.Analytics})))}var oe=i.T.encloseNamespace("liteShare.sharedByMe");function ue(){var e=(0,V.T)().hasPermissions,t=(0,Z.r)(null).hasInsights,a=(0,_.k)(),i=(0,Y.aH)(),c=i.sentShares,l=i.sharedObjects,o=i.shareRecipients,u=i.isFetching,m=i.showPartialLoading,d=i.nextCursor,p=i.hasMore,v=i.fetchNext,f=i.imageCdnUrl,g=e(P.C.ViewMyShares)&&t;n.useEffect((function(){g&&r.Q.C$.trigger({application:K.O.MY_SHARES,action:J.e.MyShares.HOME},{replace:!0})}),[g]),(0,W.M)({title:oe("sharedByMe")});var h=function(e){var t=ae.a.useBasicFetch(re.L.config()),a=(0,V.T)().hasPermissions,r=(0,Z.r)(null).hasInsights,i=a(P.C.ViewMyShares),c=r&&i,l=e.xs||e.sm;return n.useCallback((function(e){return function(e,t,a,r){var i,c="viewUsage";if(H.M.isVideo(e)&&(i="video"),H.M.isInteractive(e)&&(i="interactive",c="viewResults"),H.M.isClip(e)&&(i="clip"),e.typeId===ne.E.Series&&(i="series"),e.typeId===ne.E.Playlist&&(i="playlist"),H.M.isVideoType(e)&&!H.M.getCanBeConsumed(e).canConsume)return[];var l=[le(e,i)],s=ie.c.getObjectUrl(r,e);return!t&&s&&l.push({label:a?ce(c):function(){return n.createElement(se,{label:ce(c),url:s})},className:"btn btn-link",button:!a,href:ie.c.getObjectUrl(r,e),openInNewTab:!0}),l}(e,c,l,t.data)}),[l])}(a);return n.createElement("div",{className:"px-3"},!g&&n.createElement(q.w,null),m?n.createElement(te,null):c.length?n.createElement(n.Fragment,null,n.createElement(z,{sentShares:c,sharedObjects:l,shareRecipients:o,getObjectAppLink:$.Qh,getObjectActions:h,imageCdnUrl:f,groupByDateShared:!0,dependencies:[u],breakpoints:a}),(p||u)&&n.createElement(B._,{isFetching:u,fetchNext:v,nextCursor:d})):n.createElement(s,{appLink:{application:K.O.DASHBOARD,action:J.e.Dashboard.HOME},imageUrl:G.W.EmptyStates.Share.SHARED_WITH_ME}))}},64208:(e,t,a)=>{a.d(t,{aH:()=>E});var n=a(32735),r=a(20354),i=a(75896),c=a(71553),l=a(30439),s=a(4594),o=a(39151),u=a(31949),m=a(39902),d=a(60115),p=a(85063),v={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===p.y.DirectShare})))&&void 0!==t?t:[]},getRecipientIds:function(e){return i.m.uniq(i.m.flatten(v.getDirectShares(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))),"id").map((function(e){return e.id}))}};function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,c,l=[],s=!0,o=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=i.call(a)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(o)throw r}}return l}}(e,t)||g(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return h(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function y(e){return e.items?Object.values(e.items):[]}function E(e,t){var a,p,E=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],b=r.a.useGetFetch(),N=r.a.useBasicFetch(u.N.currentUser()),S=function(t){return E&&l.o.sentShare(Object.assign({cursor:t},e))},k=function(e){return b(S(e))},w=(0,d.K)(S,k),C=w.items,I=w.hasMore,x=w.isFetching,A=w.nextCursor,T=i.m.uniq(null!==(a=null==C?void 0:C.map((function(e){return e.objectId})))&&void 0!==a?a:[]),O=(0,m.f)(T,(function(e){return l.o.sharedObjectsById(e)})),j=v.getRecipientIds(C),H=(0,m.f)(j,(function(e){return l.o.getRecipientsById(e,N.data.customerId)})),M=r.a.useBasicFetch(o.L.config()),L=function(e,t,a,r,i){var c=f(n.useState(t),2),l=c[0],s=c[1],o=f(n.useState(r),2),u=o[0],m=o[1];return n.useEffect((function(){t&&s(!0)}),[t]),n.useEffect((function(){r&&m(!0)}),[r]),!(e&&!e.length)&&(!e||!l||a.length&&!u||!i.data)}(C,!!O.items,j,!!H.items,M),F=JSON.stringify(e),R=x||O.isFetching||H.isFetching,U=y(O),D=y(H),z=t&&(null==U?void 0:U.length)&&U.reduce((function(e,t){if(t.typeId!==s.E.Interactive)return e;var a,n=t;return[].concat(function(e){if(Array.isArray(e))return h(e)}(a=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||g(a)||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.")}(),[{metadataId:n.id,interactiveId:n.interactiveId}])}),[]),B=r.a.useBasicFetch(t&&!!O.items&&N.data&&c.I.pendingReviews({interactives:z,filters:{currentCustomerId:N.data.customerId,currentUserId:N.data.id}})),P=[R,F,B.isFetching];return{sentShares:C,sharedObjects:U,shareRecipients:D,interactivesPendingReview:B.data,isFetching:R,showPartialLoading:L,nextCursor:A,hasMore:I,fetchNext:k,imageCdnUrl:null===(p=M.data)||void 0===p?void 0:p.imageCdnUrl,dependencies:P}}},87432:(e,t,a)=>{a.d(t,{Z:()=>n});const n={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
|
|
2
|
-
//# sourceMappingURL=9155-87c9030ce9-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/9155-87c9030ce9-lite.chunk.js","mappings":"8JAiBA,SAASA,EACPC,EACAC,GAEA,MAAO,CACLC,cAAeF,EAAYG,GAC3BC,kBAAmBJ,EAAYK,WAC/BC,UAAW,CAAEC,MAAON,EAAOM,MAAOC,IAAKP,EAAOO,KAC9CC,QAASR,EAAOS,OAChBC,oBAAqBV,EAAOW,QAEhC,CAEO,IAAMC,EAA6B,CAMxCC,qBAAoB,SAClBC,EACAC,EACAhB,EACAC,EACAgB,EACAC,EACAC,EACAC,GAEA,MAAO,CACLC,IAAKJ,EAAoB,gDACkBF,EAAa,qBAAaC,GAAqB,gDAC/CD,EAAa,qBAAaC,GACrEM,KAAK,OAAuB,0BAAD,OAA2BP,EAAa,YAAIC,GAAyBf,GAChGsB,KAAMxB,EAA4BC,EAAaC,GAC/CuB,KAAM,SACNC,WAAW,EACXC,WAAY,SAACH,GACX,OAAO,OAAP,wBACKA,GAAI,CACPI,SAAUJ,EAAKI,SAASC,KAAI,SAACC,GAC3B,OAAKA,EAAQC,MAASD,EAAQE,UAGvB,OAAP,wBACKF,GAAO,CACVG,WAAY,CACVD,UAAWF,EAAQE,UACnBD,KAAMD,EAAQC,QANTD,CASX,KAEJ,EACAX,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAMAa,KAAI,SACFlB,EACAC,EACAkB,EACAX,EACAL,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,oCAAF,OAAsCa,GACzCZ,IAAK,eAAF,OAAiBY,EAAQ,YAAIX,EAAKY,UACrCX,KAAM,QACND,KAAAA,EACAE,WAAW,EACXW,iBAAkB,0BAAF,OAA4BrB,EAAa,YAAIC,GAC7DE,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAiB,eAAc,SAACd,GACb,MAAO,CACLF,IAAK,gEACLC,IAAK,+BACLE,KAAM,SACND,KAAAA,EAEJ,EAEAe,yBAAwB,SAACf,GACvB,MAAO,CACLF,IAAK,6CACLC,IAAK,6BACLC,KAAAA,EACAC,KAAM,SACNC,WAAW,EAEf,E,6LCvHF,SAAgB,gBAAkB,QAAQ,GAAK,QAAQ,aAAe,SCiBtE,IACMc,EAAYC,EAAA,mBADA,mCAGlB,SAASC,EAAuBC,GAC9B,IAAMC,EAASC,EAAA,UAAoBF,EAAkB,UAC/CG,EAAYF,EAAOG,EAAA,QACnBC,EAAiBJ,EAAOG,EAAA,aACxBE,EAAaL,EAAOG,EAAA,kBAE1B,OAAID,GAAaE,GAAkBC,EAC1BT,EAAU,2BAA4B,CAAEM,UAAAA,EAAWE,eAAAA,EAAgBC,WAAAA,IAExEH,GAAaE,EACRR,EAAU,qBAAsB,CAAEM,UAAAA,EAAWE,eAAAA,IAElDF,GAAaG,EACRT,EAAU,iBAAkB,CAAEM,UAAAA,EAAWG,WAAAA,IAE9CD,GAAkBC,EACbT,EAAU,sBAAuB,CAAEQ,eAAAA,EAAgBC,WAAAA,IAExDH,EACKN,EAAU,QAAS,CAAEM,UAAAA,IAE1BE,EACKR,EAAU,aAAc,CAAEQ,eAAAA,IAE/BC,EACKT,EAAU,SAAU,CAAES,WAAAA,SAD/B,CAEF,CAEA,SAASC,EAAeC,G,cAChBC,GAAuB,QAAV,EAAAD,EAAME,YAAI,eAAEC,UAAWP,EAAA,QAAmBI,EAAME,KAC7DE,GAAiC,QAAV,EAAAJ,EAAME,YAAI,eAAEC,UAAWP,EAAA,aAAwBI,EAAME,KAC5EG,GAA2C,QAAV,EAAAL,EAAME,YAAI,eAAEC,UAAWP,EAAA,kBACzDI,EAAME,KAELI,EAAwB,yFAE9B,OACE,kCACKL,GACD,gBAACM,EAAA,EAAO,CAACC,MAAK,UAAKP,EAAKrB,KAAI,YAAIqB,EAAKQ,SAAWC,UAAQ,EAACC,kBAAkB,eACzE,gBAACC,EAAA,EAAM,CACLC,SAAqB,QAAX,EAAAZ,EAAKa,cAAM,eAAE3C,IACvB4C,YAAaf,EAAMe,YACnBC,SAAUC,EAAA,cAAuBhB,EAAKrB,KAAMqB,EAAKQ,SACjDS,aAAc,oBAIjBd,GACD,gBAACG,EAAA,EAAO,CAACC,MAAOJ,EAAUxB,KAAM8B,UAAQ,EAACC,kBAAkB,eACzD,uBAAKQ,UAAWb,GACd,gBAACc,EAAA,EAAU,CACTC,QAAS,gBACTC,QAASC,EAAAC,EAAA,MACTC,QAAQ,aAKbpB,GACD,gBAACE,EAAA,EAAO,CAACC,MAAOH,EAAezB,KAAM8B,UAAQ,EAACC,kBAAkB,eAC9D,uBAAKQ,UAAWb,GACd,gBAACc,EAAA,EAAU,CACTC,QAAS,WACTI,SAAS,OAA4C,QAAvB,EAAApB,EAAeqB,gBAAQ,eAAEC,YAOrE,CAOM,SAAUC,EAAwB5B,GACtC,OACE,uBAAKmB,UAAS,UAAK,kBAAsB,YAAyB,OAArBnB,EAAM6B,WAAsB,KAAY,KACnF,gBAACtB,EAAA,EAAO,CACNC,MAAOnB,EAAU,aACjBqB,UAAQ,EACRC,kBAAkB,kGAElB,gBAACY,EAAA,EAAY,CAACF,QAAS,eAAwBS,KAA2B,OAArB9B,EAAM6B,WAAsBN,EAAAC,EAAA,MAAyB,QAIlH,CAQM,SAAUO,EAAiB/B,GAC/B,OACE,uBAAKmB,UAAS,UAAK,kBAAsB,YAAyB,OAArBnB,EAAM6B,WAAsB,KAAY,KACnF,gBAACtB,EAAA,EAAO,CACNC,MAAOR,EAAMgC,MAAQ3C,EAAU,cAC/BqB,UAAQ,EACRC,kBAAiB,yGAAoGX,EAAMmB,WAAa,KAExI,gBAACI,EAAA,EAAY,CAACF,QAAS,UAAmBS,KAA2B,OAArB9B,EAAM6B,WAAsBN,EAAAC,EAAA,MAAyB,QAI7G,CAeM,SAAUS,EAAmBjC,GACjC,OACE,gBAACkC,EAAA,EAAU,iBACLlC,EAAK,CACTmC,MAAOnC,EAAMoC,WACbC,WAAYtC,EACZuC,yBAAwB,UAAK,kBAAsB,YAAyB,OAArBtC,EAAM6B,WAAsB,KAAY,IAC/FU,iBAAkBhD,EAClBiD,aAAcxC,EAAMwC,aACpBC,cAAezC,EAAMyC,gBAG3B,CAhBAR,EAAmBS,aAAe,CAChCC,WAAY,E,mCC7IP,IAAMC,EAAiC,CAC5CC,MAAO,kCACPC,OAAQ,mBACRC,WAAY,wBACZC,IAAK,sBACLC,KAAM,gC,yGCyCF,SAAUC,EAAQlD,GACtB,IAAMmD,EAAiB,WAAc,kBAAMnD,EAAMoD,QAAQC,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEE,MAAQD,EAAEC,KAAK,GAAC,GAAE,CAACxD,EAAMoD,UAE7FK,EAAiC,GACjCC,EAA+B,GAErCP,EAAeQ,SAAQ,SAAAL,GACjBA,EAAEM,OACJH,EAAcI,KAAKP,GAEnBI,EAAYG,KAAKP,EACrB,IAEA,IAAInC,EAAY,SAKhB,OAHInB,EAAMmB,YACRA,GAAa,IAAJ,OAAQnB,EAAMmB,YAEpBsC,EAAcK,QAAWJ,EAAYI,OAIxC,uBAAK3C,UAAWA,GACbsC,EAAcK,OAASL,EAAc/E,KAAI,SAAC4E,EAAGS,GAAG,OAC/C,gBAAC,WAAc,CAAC3F,IAAK2F,GACjB,WACA,GAAIT,EAAEU,MAAO,CACX,IAAMA,EAAQ,eAA0BV,EAAEU,OACtCV,EAAEU,MACF,kBAAM,gCAAGV,EAAEU,MAAS,EAExB,OACE,gBAAC,IAAY,CACXC,QAASX,EAAEW,QACXC,KAAMZ,EAAEY,KACRC,QAASb,EAAEa,QACX9C,QAASiC,EAAEjC,QACXC,QAAStB,EAAMoE,sBACfjD,UAAWmC,EAAEnC,UACbkD,QAASf,EAAEe,QACXC,YAAahB,EAAEgB,YACfC,cAAejB,EAAEiB,cACjBC,iBAAkBlB,EAAEkB,iBACpBC,aAAcnB,EAAEmB,aAChBC,SAAUpB,EAAEoB,UAEXV,IAGN,CAED,IAAMW,EACJ,gBAAC,IAAU,CACTV,QAASX,EAAEW,QACXC,KAAMZ,EAAEY,KACRC,QAASb,EAAEa,QACX9C,QAASiC,EAAEjC,QACXF,UAAWmC,EAAEnC,UACboD,cAAejB,EAAEiB,cACjBC,iBAAkBlB,EAAEkB,iBACpBC,aAAcnB,EAAEmB,aAChBC,SAAUpB,EAAEoB,SACZE,WAAYtB,EAAEsB,WACdC,WAAY7E,EAAM6E,WAClBC,UAAWxB,EAAEe,UAIjB,OAAOf,EAAEe,QACL,gBAAC,IAAO,CAAC7D,MAAO8C,EAAEe,QAAS3D,UAAQ,GAAEiE,GACrCA,CACN,CA9CE,GA+Ca,IACd,iCACJ3E,EAAM+E,eAAiB/E,EAAM+E,cAC7BrB,EAAYI,OACX,gBAAC,IAAe,CACdV,QAASM,EACTsB,wBAAyBhF,EAAMiF,yBAC/Bb,sBAAuBpE,EAAMoE,sBAC7Bc,UAAWlF,EAAMkF,YAEjB,kCA/DC,gCAkEX,C,0ICpIA,SAAgB,eAAiB,SCgBjC,SAASC,IACP,OACE,gCACE,uBAAKC,MAAO,CAAEC,QAAS,oBACrB,uBAAKlE,UAAU,6BAA6BiE,MAAO,CAAEE,OAAQ,YAAaC,MAAO,WAEnF,uBAAKH,MAAO,CAAEC,QAAS,oBACrB,uBAAKlE,UAAU,6BAA6BiE,MAAO,CAAEE,OAAQ,YAAaC,MAAO,YAEnF,uBAAKH,MAAO,CAAEC,QAAS,oBACrB,uBAAKlE,UAAU,6BAA6BiE,MAAO,CAAEE,OAAQ,YAAaC,MAAO,YAEnF,uBAAKH,MAAO,CAAEC,QAAS,oBACrB,uBAAKlE,UAAU,6BAA6BiE,MAAO,CAAEE,OAAQ,YAAaC,MAAO,WAIzF,CAEA,SAASC,EAAyBC,GAChC,IAAItE,EAAY,gBAKhB,OAHIsE,IACFtE,GAAa,IAAJ,OAAQsE,IAEZtE,CACT,CAQA,SAASuE,EAAoB1F,GAC3B,IAAMgE,EAAQ2B,EAAA,aAA0B3F,EAAM4F,OAAO5B,OACjDhE,EAAM4F,OAAO5B,MACb,kBAAM,gCAAGhE,EAAM4F,OAAO5B,MAAS,EAEnC,GAAIhE,EAAM4F,OAAO3B,QACf,OACE,gBAAC4B,EAAA,EAAO,CACN5B,QAASjE,EAAM4F,OAAO3B,QACtBE,QAASnE,EAAM4F,OAAOzB,QACtBhD,UAAWqE,EAAyBxF,EAAM4F,OAAOzE,WACjDoD,cAAevE,EAAM4F,OAAOrB,cAC5BC,iBAAkBxE,EAAM4F,OAAOpB,iBAC/BC,aAAczE,EAAM4F,OAAOnB,aAC3BC,SAAU1E,EAAM4F,OAAOlB,UAEtB1E,EAAM4F,OAAOvE,SAAW,gBAACE,EAAA,EAAY,CAACF,QAASrB,EAAM4F,OAAOvE,QAASF,UAAU,mDAChF,wBAAMA,UAAU,gBAAgB6C,MAItC,SAASG,EAAQ2B,GACfA,EAAEC,iBAEE/F,EAAM4F,OAAOrB,eAAiBvE,EAAM4F,OAAOpB,kBAC7CwB,EAAA,gBAA8BhG,EAAM4F,OAAOrB,cAAevE,EAAM4F,OAAOpB,kBAErEmB,EAAA,aAA0B3F,EAAM4F,OAAOzB,UACzCnE,EAAM4F,OAAOzB,UAEXnE,EAAM4F,OAAO1B,MACf,gBAA4BlE,EAAM4F,OAAO1B,KAAMlE,EAAM4F,OAAOnB,aAChE,CAEA,OAAIzE,EAAM4F,OAAO1B,KAEb,qBACE/C,UAAWqE,EAAyBxF,EAAM4F,OAAOzE,WACjDgD,QAASA,EACTD,KAAMlE,EAAM4F,OAAO1B,MAElBlE,EAAM4F,OAAOvE,SAAW,gBAACE,EAAA,EAAY,CAACF,QAASrB,EAAM4F,OAAOvE,QAASF,UAAU,mDAChF,wBAAMA,UAAU,gBAAgB6C,MAMpC,wBACE7C,UAAS,yBAAoBqE,EAAyBxF,EAAM4F,OAAOzE,YACnEgD,QAASA,EACT8B,KAAK,SACLC,SAAU,EACVC,UAAW,SAACL,GAAsB,MAAe,UAAVA,EAAE1H,KAAmB+F,EAAQ2B,EAAE,GAErE9F,EAAM4F,OAAOvE,SAAW,gBAACE,EAAA,EAAY,CAACF,QAASrB,EAAM4F,OAAOvE,QAASF,UAAU,sCAC/E6C,IAGP,CAeM,SAAUoC,EAAgBpG,GAC9B,IAAKA,EAAMoD,UAAYpD,EAAMoD,QAAQU,OACnC,OAAO,iCAET,IAAMuC,EAASrG,EAAMoD,QAAQkD,MAAK,SAAAhD,GAAC,OAAIA,EAAEiD,eAAe,IAEpDpF,EAAY,WAEZnB,EAAMmB,YACRA,GAAa,IAAJ,OAAQnB,EAAMmB,YAGzB,IAOIqF,EAPEC,EAAmB,oBAAH,OAAuBC,EAAA,kBAEzC1B,EAA0B,wBAAH,OAA2B,kBAOtD,OALIhF,EAAMgF,0BACRA,GAA2B,IAAJ,OAAQhF,EAAMgF,0BAKrC,uBAAK7D,UAAWA,GACd,0BACEA,UAAW6D,EACX1G,KAAK,SACLrB,GAAIwJ,EAAgB,iBACL,WAAU,cACb,WAAU,gBACR,OAAM,gBACN,QAAO,aACT,wBACZtC,QAASkC,EAASrG,EAAMkF,UAAY,MAEpC,gBAAC3D,EAAA,EAAY,CAACF,QAAS,UAAmBS,KAAM9B,EAAMoE,yBAExD,sBAAIjD,UAAU,uEAAsE,kBAAkBsF,GACnGJ,EACC,gBAAClB,EAAiB,MAClBnF,EAAMoD,QAAQ1E,KAAI,SAAC4E,EAAGS,GACpB,IAAM4C,OAA+BC,IAAjBJ,GAA8BA,IAAiBlD,EAAEuD,MAGrE,OAFAL,EAAelD,EAAEuD,MAEbvD,EAAEe,QAEF,sBAAIjG,IAAK2F,GACN4C,GAAe,sBAAIxF,UAAU,mBAAmB8E,KAAK,cACtD,gBAAC1F,EAAA,EAAO,CAACC,MAAO8C,EAAEe,QAAS3D,UAAQ,GACjC,gBAACgF,EAAmB,CAACE,OAAQtC,MAQnC,sBAAIlF,IAAK2F,GACN4C,GAAe,sBAAIxF,UAAU,mBAAmB8E,KAAK,cACtD,gBAACP,EAAmB,CAACE,OAAQtC,IAGnC,KAKV,CAvEA8C,EAAgB1D,aAAe,CAC7BsC,wBAAyB,gBACzBZ,sBAAuB7C,EAAAC,EAAA,M,mFCjHnBnC,EAAY,qBADA,qBA6BZ,SAAU6C,EAAWlC,GACzB,IAAM8G,EAAiB9G,EAAMmC,MAAM2B,OAAS9D,EAAM2C,WAC9C3C,EAAMmC,MAAM4E,MAAM,EAAG/G,EAAM2C,WAAa,GACxC3C,EAAMmC,MAEJ6E,EAAchH,EAAMmC,MAAM2B,OAASgD,EAAehD,OACpD9D,EAAMmC,MAAM4E,MAAM/G,EAAM2C,WAAa,GACrC,GAEEsE,EAAajH,EAAMqC,WACnB6E,EAAoBF,EAAYlD,OAChCqD,EAAkC,OAArBnH,EAAM6B,WAAsB,EAAI,EAkBnD,SAASuF,EAAgBrD,GACvB,MAAO,CACLsD,UAAW,cAAF,QAAiBrH,EAAMwC,aAAeuB,EAAM,EAAIA,IAAQoD,EAAU,OAC3EG,OAAQtH,EAAM2C,WAAaoB,EAE/B,CAEA,OAA8B,IAA1B+C,EAAehD,QAAuC,IAAvBkD,EAAYlD,OACtC,iCAGP,uBACE3C,UAAU,SACViE,MAlBK,CACLmC,YAAa,IAAF,QAAQT,EAAehD,OAAS,GAAMkD,EAAYlD,OAAS,EAAI,IAAM9D,EAAMwC,aAAe,EAAI,IAAM2E,EAAU,QAmBxHnH,EAAMwC,cACL,uBAAK4C,MAAO,CAAEkC,OAAQtH,EAAM2C,WAAa,IACvC,gBAAC,KAAgB,CAACX,KAAMhC,EAAMyC,cAAeZ,WAAY7B,EAAM6B,WAAYV,UAAU,wBAGxF2F,EAAepI,KAAI,SAACwB,EAAM6D,GAAG,OAC5B,uBACE5C,UAAS,UAAKnB,EAAMsC,0BAA4B,IAAMlE,IAAK8B,EAAKjD,GAChEmI,MAAOgC,EAAgBrD,IAEvB,gBAACkD,EAAU,CACT/G,KAAMA,EACNa,YAAaf,EAAMe,YACnByG,MAAOzD,EACPpB,WAAY3C,EAAM2C,aAEhB,MAGLqE,EAAYlD,QACb,uBACE3C,UAAS,UAAKnB,EAAMsC,0BAA4B,GAAE,4BAClD8C,MAAO,CAAEiC,UAAW,cAAF,OAAgBP,EAAehD,QAAUqD,EAAU,OAAOG,OAAQtH,EAAM2C,WAAamE,EAAehD,SAEtH,gBAAC,IAAO,CAACtD,MAtDXR,EAAMuC,iBACDvC,EAAMuC,iBAAiByE,GAE5BhH,EAAMyH,cACDpI,EAAkC,UAAxBW,EAAMyH,cAA4B,QAAU,UAAW,CAAEC,MAAOR,EAAmBS,WAAYT,IAE3G7H,EAAU,QAAS,CAAEqI,MAAOR,EAAmBS,WAAYT,IAgD9BxG,UAAQ,EAACC,kBAAkB,eACvD,uBAAKQ,UAAS,yGAAoGnB,EAAM4H,iBAAmB,KAAI,WACxIZ,EAAYlD,WAO/B,CAjFA5B,EAAWQ,aAAe,CACxBC,WAAY,E,oHCdd,SAASkF,EAAY7H,GACnB,OACE,kCACKA,EAAM8H,IAAIzG,SACX,uBAAKF,UAAWnB,EAAM8H,IAAIlJ,KAAO,OAAS,IACxC,gBAAC,IAAY,CAACyC,QAASrB,EAAM8H,IAAIzG,WAIpCrB,EAAM8H,IAAIlJ,KAEmB,iBAArBoB,EAAM8H,IAAIJ,OACjB,uBAAKvG,UAAU,QACb,gBAAC,IAAK,CAAC7C,KAAM,UAAiBD,KAAM2B,EAAM8H,IAAIJ,SAKxD,CA8BM,SAAUK,EAAgB/H,G,MAW9B,OACE,uBAAKmB,UAA0B,QAAf,EAAAnB,EAAMmB,iBAAS,QAAI,GAAI6G,IAAKhI,EAAMiI,cAChD,sBAAI9G,UAAS,qDACwB,oBAAsB,qBACvDnB,EAAMkI,aAAe,gBAAqB,GAAE,qBAC5ClI,EAAMmI,cAAa,aAEpBnI,EAAMoI,KAAK1J,KAAI,SAACoJ,EAAKN,GACpB,OACE,sBACErG,UAAS,gCACD,QAAU,YAAI2G,EAAIO,OAAS,eAAiB,uBAAsB,6BACtEP,EAAIlJ,KAAO,aAAkB,GAAE,YAAIkJ,EAAI3G,UAAS,oBAEpD/C,IAAKoJ,GAEJM,EAAI7D,QACH,gBAAC,IAAO,CACNA,QAAS6D,EAAI7D,QACbM,cAAeuD,EAAIvD,cACnBC,iBAAkBsD,EAAItD,iBACtBrD,UAAS,sKAE4C,YAAc,yBAGnE,gBAAC0G,EAAW,CAACC,IAAKA,KAGpB,gBAAC,IAAS,CACR3G,UAAS,sKAE4C,YAAc,wBAEnEgD,QAAS,WAAF,OA5CvB,SAAqB2D,IACfA,EAAIO,QAAWP,EAAIQ,WAGvBR,EAAIQ,WAEAR,EAAIvD,eAAiBuD,EAAItD,kBAC3B,kBAA8BsD,EAAIvD,cAAeuD,EAAItD,kBACzD,CAoC+B+D,CAAYT,EAAI,GAE/B,gBAACD,EAAW,CAACC,IAAKA,KAK5B,KAIR,CA5DAC,EAAgBrF,aAAe,CAC7BwF,aAAc,K,8bC3CV,SAAUM,EACdC,EACAC,GAEA,I,IAAkE,G,EAA9B,WAA2B,I,EAAG,E,unBAA1DC,EAAS,KAAEC,EAAY,KAE/B,aAAgB,WACd,GAAKH,aAAO,EAAPA,EAAS3E,OAAd,CAGA,IAAM+E,E,yWAAa,CAAIF,GACvBE,EAAWhF,KAAK,IAEhB4E,EAAQ9E,SAAQ,SAAA1G,GACV4L,EAAWC,MAAK,SAAAC,GAAK,OAAIA,EAAMD,MAAK,SAAAE,GAAG,OAAIA,IAAQ/L,CAAE,GAAC,KAG1D4L,EAAWA,EAAW/E,OAAS,GAAGD,KAAK5G,EACzC,IAEA2L,EAAaC,EAAW9L,QAAO,SAAAgM,GAAK,OAAIA,EAAMjF,MAAM,IAZ5C,CAaV,GAAG,CAAC2E,EAAUA,EAAQQ,KAAK,KAAO,OAElC,IAAMC,GAAW,UAEXC,GAAQ,SAAY,SAACA,GAAuB,OAAKA,CAAK,IAY5D,GAVA,aAAgB,WACdR,EAAUhF,SAAQ,SAAAyF,GAChB,IAAMC,EAAUX,EAAWU,GACV,gBAAwBD,EAAOE,EAAQjL,KAE3CkL,aACX,UAAaJ,EAAUG,EAC3B,GACF,GAAG,CAACV,aAAS,EAATA,EAAW7E,WAEV6E,aAAS,EAATA,EAAW7E,QACd,MAAO,CAAE3B,MAAO,KAAMoH,YAAY,GAEpC,IAAMpH,EAA6B,CAAC,EAG9BqH,EAA8C,CAAC,EAWrD,OATAb,EAAUhF,SAAQ,SAACyF,EAASK,GAC1B,IAAMJ,EAAUX,EAAWU,GACrBM,EAAW,gBAAwBP,EAAOE,EAAQjL,KACxDoL,EAAUC,GAAKC,EAEXA,EAASrL,MACXqL,EAASrL,KAAKsF,SAAQ,SAAAgG,GAAC,OAAIxH,EAAMwH,EAAE1M,IAAM0M,CAAC,GAC9C,IAEO,CACLxH,MAAOyH,OAAOC,KAAKL,GAAWlD,MAAK,SAAAwD,GAAC,QAAMN,EAAUM,GAAGzL,IAAI,IAAI8D,EAAQ,KACvEoH,aAAcK,OAAOC,KAAKL,GAAWlD,MAAK,SAAAwD,GAAC,OAAIN,EAAUM,GAAGP,UAAU,IAE1E,C,kBC9EM,SAAUQ,EAAuBC,EAAiBjN,EAAgCkN,GACtF,IAAI7L,EAAM,GAAH,OAAM4L,EAAO,YAAIjN,EAAOM,MAAK,YAAIN,EAAOO,KAEzC4M,EAAYC,MAAMC,QAAQrN,EAAOS,QAAUT,EAAOS,OAAO6F,OAAO4F,KAAK,KAAOlM,EAAOS,OACnF6M,EAAaF,MAAMC,QAAQrN,EAAOW,SAAWX,EAAOW,QAAQ2F,OAAO4F,KAAK,KAAOlM,EAAOW,QAW5F,OATIwM,IACF9L,GAAO,IAAJ,OAAQ8L,IAETG,IACFjM,GAAO,IAAJ,OAAQiM,IAETJ,IACF7L,GAAO,IAAJ,OAAQ6L,IAEN7L,CACT,C,4ECbakM,EAAuB,CAClCC,aAAY,SAACC,EAAgBC,GAC3B,IAAMC,EAAUF,EAAOG,gBAEvB,GAAKD,EAAL,CAGA,IAAIE,EAAc,GAElB,OAAQH,EAAOtK,QACb,KAAK,UACHyK,EAAc,WAAH,OAAcH,EAAOxN,GAAE,aAClC,MAEF,KAAK,SACH2N,EAAc,UAAH,OAAaH,EAAOxN,GAAE,aACjC,MAEF,KAAK,gBACH2N,EAAc,iBAAH,OAAoBH,EAAOxN,GAAE,aAI5C,GAAK2N,EAGL,OAAO,kBAAwBF,EAASE,EArBhC,CAsBV,E,kDC5BI,SAAUC,EAAqBC,GACnC,OAAQA,GACN,KAAK,SACH,MAAO,OACT,KAAK,WACH,MAAO,SACT,KAAK,UACH,MAAO,QACT,KAAK,SACH,MAAO,OACT,KAAK,WACH,MAAO,SACT,KAAK,WACH,MAAO,SACT,QACE,MAAO,OAEb,C,mHCTMzL,EAAY,qBADA,sBAGZ0L,EAAwB,CAAEC,YAAa,cAAuBpF,OAAQ,2BACtEqF,EAA0B,CAAED,YAAa,cAAuBpF,OAAQ,6BAmBxE,SAAUsF,IACd,OACE,uBAAK/J,UAAU,QACb,sBAAIA,UAAU,WAAW9B,EAAU,WACnC,gBAAC,IAAe,CAAC+I,MApBf+C,EAAiD,QAAhC,+BAAgC,eAAElH,QAElD,CACL,CACErF,KAAMS,EAAU,cAChBiJ,SAAU,WAAF,OAAQ,eAA2ByC,EAAsB,EACjE1C,QAAQ8C,aAAc,EAAdA,EAAgBvF,UAAWmF,EAAsBnF,QAE3D,CACEhH,KAAMS,EAAU,gBAChBiJ,SAAU,WAAF,OAAQ,eAA2B2C,EAAwB,EACnE5C,QAAQ8C,aAAc,EAAdA,EAAgBvF,UAAWqF,EAAwBrF,aAZjE,I,EACQuF,CAuBR,C,wGCjCM9L,EAAYC,EAAA,mBADA,8BASZ,SAAU8L,EAAqBpL,GACnC,OACE,gBAACqL,EAAA,EAAU,KACT,gBAACA,EAAA,QAAgB,CAACC,IAAKtL,EAAMa,SAAUiB,KAAK,UAC5C,gBAACuJ,EAAA,UAAkB,KAChBhM,EAAUW,EAAMuL,mBAAqB,sBAAwB,mBAEhE,gBAACF,EAAA,OAAe,KAAEhM,EAAUW,EAAMuL,mBAAqB,mBAAqB,kBACzEvL,EAAMiE,SACP,gBAACoH,EAAA,MAAc,CAACpH,QAASjE,EAAMiE,QAASjC,KAAM3C,EAAU,SAIhE,C,2HChBA,IACM,EAAYC,EAAA,mBADA,8BAGlB,SAASkM,EAAgBC,GACvB,GAAIA,EAAMnN,OAASoN,EAAA,cACjB,OAAO,EAAU,UAEnB,OAAQD,EAAME,QACZ,KAAKC,EAAA,SACH,OAAO,EAAU,UAEnB,KAAKA,EAAA,UACH,OAAO,EAAU,WAEvB,CAEA,SAASC,EAAqBJ,GAC5B,GAAIA,EAAMnN,OAASoN,EAAA,cACjB,MAAO,aAET,OAAQD,EAAME,QACZ,KAAKC,EAAA,SACH,MAAO,aAET,KAAKA,EAAA,UACH,MAAO,cAEb,CASM,SAAUE,EAAqB9L,G,MACnC,OAAIA,EAAMyL,MAAMnN,OAASoN,EAAA,gBAAgD,QAAtB,EAAA1L,EAAMyL,MAAMrJ,kBAAU,eAAE0B,QAGvE9D,EAAMyL,MAAMnN,OAASoN,EAAA,aAAuB1L,EAAMyL,MAAMM,oBAExD,gBAACxL,EAAA,EAAO,CAACC,MAAO,EAAU,qBAAsBE,UAAQ,GACtD,gBAACa,EAAA,EAAY,CAACF,QAAS,UAAmBS,KAAMP,EAAAC,EAAA,SAMpD,gBAACjB,EAAA,EAAO,CACNC,MAAOgL,EAAgBxL,EAAMyL,OAC7B/K,UAAQ,EACRC,kBChE+B,SDkE/B,uBAAKQ,UAAS,UClEqC,QDkEhB,YAAI0K,EAAqB7L,EAAMyL,WAhB7D,gCAmBX,C,mbEvCA,IAAM,EAAY,wBACZ,EAAYnM,EAAA,mBAAiC,GAEnD,SAAS0M,EAAcP,G,MACrB,GAAIA,EAAMnN,OAASoN,EAAA,eAAyC,QAAjB,EAAAD,aAAK,EAALA,EAAOrJ,kBAAU,eAAE0B,QAC5D,OAAO2H,EAAMQ,YAEf,IAAMC,EAAcT,EAAMrJ,WAAW1D,KAAI,SAAAyN,GAAC,OAAIA,EAAEC,UAAU,IAU1D,OARAF,EAAY7I,MAAK,SAACgJ,EAAOC,GACvB,OAAIC,EAAA,SAAkBF,EAAOC,GACpB,EAEFC,EAAA,UAAmBF,EAAOC,GAAS,GAAK,CACjD,IAGKJ,EAAYpI,OAGVpE,EAAA,OAAiBwM,GAFf,EAGX,CAYM,SAAUM,EACdhF,EACAiF,EACAC,EACAC,EACA5L,EACA6L,EACAC,EACAC,GAEA,IAAMC,EAAWD,IAAgBA,EAAYE,IAAMF,EAAYG,IAEzDC,EAAyC,CAC7C,CACEC,OAAQP,EAAa,GAAKH,EAC1BW,SAAU,eACVnQ,GAAI,QACJoQ,KAAM,SAAF,OAAKC,EAAK,EAALA,MAAK,OACZ,uBAAKnM,UAAU,SACb,gBAACoM,EAAA,EAAiB,CAChB9C,OAAQ6C,EACRrJ,QAASyI,EAAiBY,GAC1BE,mBAAiB,EACjBC,gBAAiB,kBAEf,EAERC,SAAU,IACVC,SAAU,IAEZ,CACEP,SAAU,eACVnQ,GAAI,OACJoQ,KAAM,SAAF,GAAgB,I,EAAXC,EAAK,EAALA,MACP,OAAIA,EAAM1O,KACJgP,EAAA,cAAwBN,MAA8C,QAAnC,EAAAM,EAAA,mBAA6BN,UAAM,eAAEO,aAExE,wBAAM1M,UAAU,WACbmM,EAAM1O,MAMX,uBAAKuC,UAAU,WACZyM,EAAA,cAAwBN,IACvB,gBAACQ,EAAA,EAAY,CACXxP,KAAK,SACLyP,MAAOT,EACPrJ,QAAS,WAAYqJ,GAASA,EAAMU,OAAStB,EAAiBY,EAAMU,QAAU,KAC9ExJ,iBAAkB,CAAEyJ,SAAU,iBAGlC,gBAACpI,EAAA,EAAO,CACN5B,QAASyI,EAAiBY,GAC1B/I,cAAe,CAAEtH,GAAIqQ,EAAMrQ,GAAI2B,KAAM0O,EAAM1O,MAC3C4F,iBAAkB,CAChB0J,OAAQC,EAAA,qBAAmCb,EAAMhP,MACjD8P,WAAY,WACZH,SAAU,kBAGXX,EAAM1O,OAMR,4BAAM,gBAACyP,EAAA,EAAI,CAACC,UAAW,EAAWC,OAAO,qBAClD,EACAhJ,MAAO,IAET,CACE4H,OAAkB,IAAV3F,EAAc,EAAU,YAAc,GAC9C4F,SAAU,kBACVC,KAAM,SAAF,GAAgB,IAAXC,EAAK,EAALA,MACP,OAAKA,EAGAA,EAAMxJ,OAGJ,gBAAC7B,EAAA,GAAkB,CAACG,WAAYkL,EAAOvM,YAAaA,EAAa4B,WAAYoK,EAAW,EAAI,IAF1F,gBAAC,KAAuB,MAHxB,gBAAC,KAAgB,KAM5B,EACAxH,MAAO,KAERwH,GAAY,CACXI,OAAkB,IAAV3F,EAAc,EAAU,UAAY,GAC5CvK,GAAI,aACJmQ,SAAU,SAAAoB,GAAC,OAAI,QAAWA,EAAEpC,WAAW,EACvC7G,MAAO,IAET,CACE6H,SAAU,eACVnQ,GAAI,UACJoQ,KAAM,SAAF,OAAKC,EAAK,EAALA,MAAK,OACZ,gBAACpK,EAAA,EAAO,CACNE,QAASuJ,EAAiBW,GAC1BnM,UAAU,kCACV,EAEJoE,MAAO,KAILkJ,EAA4C,CAChDtB,OAAQV,EACRW,SAAU,QACVnQ,GAAI,SACJoQ,KAAM,SAAF,OAAKC,EAAK,EAALA,MAAK,OACZ,gBAACxB,EAAoB,CAACL,MAAO6B,GAAS,EAExC/H,MAAO,GAGHmJ,EAA+C,CACnDvB,OAAQ,EAAU,SAClBC,SAAU,YACV7H,MAAO,IAST,OANIqH,GACFM,EAAQyB,OAAO,EAAG,EAAGF,GAEnB5B,GACFK,EAAQyB,OAAOzB,EAAQpJ,OAAS,EAAG,EAAG4K,GAEjCxB,EAAQnQ,OAAQ6R,QACzB,CCtIO,IAAMC,EAAkB,QAhC/B,SAA6B7O,GAC3B,IDwKA8O,EACAC,EACAC,EACAC,EACAC,E,EC5KM7Q,GDwKNyQ,ECvKE9O,EAAM8O,WDwKRC,ECvKE/O,EAAM+O,cDwKRC,ECvKEhP,EAAMgP,gBDwKRC,ICvKIjP,EAAMmP,kBDwKVD,ECvKElP,EAAMkP,aDyKD,WAAc,WACnB,I,MAAME,EAAmC,GA6BzC,OA3BAN,EAAWnL,SAAQ,SAAA6K,G,QACXa,EAAeN,EAAcjG,MAAK,SAAAwG,GAAC,OAAIA,EAAErS,KAAOuR,EAAEe,QAAQ,IAE5DnN,EAAkC,KAElCoM,EAAElQ,OAASoN,EAAA,gBACbtJ,EAAa,GAED,QAAZ,EAAAoM,EAAEpM,kBAAU,SAAEuB,SAAQ,SAAAwI,GACpB,IAAMqD,EAAYR,EAAgBlG,MAAK,SAAA0F,GAAC,OAAIA,EAAEvR,KAAOkP,EAAElP,EAAE,IAErDuS,GACFpN,EAAWyB,KAAK2L,EACpB,KAIEH,GACFD,EAAUvL,KAAK,CACb4H,MAAO+C,EACPa,aAAAA,EACAL,gBAAiB5M,EACjBgK,WAAYJ,EAAcwC,GAC1BiB,UAAsB,QAAX,EAAAjB,EAAEiB,iBAAS,QAAI,GAEhC,IAEKR,EAGES,EAAA,oBAA8BN,I,EAFnC,G,EAAU,EAAU,S,EAAWA,G,oXAGnC,G,+CAAOF,I,ojBCxMP,OACE,gCACGtF,OAAOC,KAAKxL,GAAMK,KAAI,SAACiR,EAASnI,GAAK,OACpC,gBAACoI,EAAA,EAAK,CACJxR,IAAKoJ,EACL0F,QAASV,EACPhF,EACAmI,EACA3P,EAAM0M,iBACN1M,EAAM2M,iBACN3M,EAAMe,YACNf,EAAM4M,WACN5M,EAAM6M,cACN7M,EAAM8M,aAERzO,KAAMA,EAAKsR,GACXE,MAAO,KACP,IAIV,I,mICvDA,SAAgB,YAAc,QAAQ,WAAa,QAAQ,eAAiB,QAAQ,iBAAmB,QAAQ,cAAgB,QAAQ,QAAU,QAAQ,MAAQ,QAAQ,KAAO,QAAQ,OAAS,QAAQ,KAAO,QAAQ,QAAU,SCGlO,SAASC,IACP,OACE,uBAAK3O,UAAS,8BACZ,uBAAKA,UAAS,+DAA0D,gBACtE,uBAAKA,UAAS,mDAA8C,YAE9D,uBAAKA,UAAS,wCAAmC,eAC/C,uBAAKA,UAAS,0CAAqC,WAErD,uBAAKA,UAAS,wCAAmC,mBAC/C,uBAAKA,UAAS,qCAAgC,aAEhD,uBAAKA,UAAS,kDAA6C,qBACzD,uBAAKA,UAAS,qCAAgC,WAEhD,uBAAKA,UAAS,4DAAuD,kBACnE,uBAAKA,UAAS,kDAA6C,cAInE,CAMA,SAAS4O,GAAc/P,GACrB,OACE,uBAAKmB,UAAU,eACb,uBAAKA,UAAS,UAAK,cAAkB,SACnC,uBAAKA,UAAS,qCAAgC,cAEhD,uBAAKA,UAAS,UAAK,aAAiB,SAAM,KAG1C,uBAAKA,UAAS,UAAK,iBAAqB,SACrCnB,EAAMgQ,WACH,uBAAK7O,UAAS,qCAAgC,aAC9C,sCAGN,uBAAKA,UAAS,UAAK,mBAAuB,0BACvCnB,EAAMgQ,WACH,uBAAK7O,UAAS,qCAAgC,aAC9C,sCAGN,uBAAKA,UAAS,UAAK,gBAAoB,SAAM,KAKnD,CAEM,SAAU8O,KACd,OACE,gCACE,uBAAK9O,UAAU,QACb,gBAAC4O,GAAa,CAACC,YAAU,IAEzB,uBAAK7O,UAAU,8BACb,gBAAC2O,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,QAIf,uBAAK3O,UAAU,QACb,gBAAC4O,GAAa,MAEd,uBAAK5O,UAAU,8BACb,gBAAC2O,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,QAIf,uBAAK3O,UAAU,QACb,gBAAC4O,GAAa,MAEd,uBAAK5O,UAAU,8BACb,gBAAC2O,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,MACX,gBAACA,EAAU,QAKrB,C,mDC5EM,GAAYxQ,EAAA,mBADA,wBAGlB,SAAS4Q,GAAsBb,EAA0Bc,GACvD,MAAO,CACLnM,MAAO,GAAU,qBACjBC,QAAS,CACP+G,YAAa,YACbpF,OAAQ,kBACRwK,KAAM,CAACf,EAAapS,IACpBoT,OAAQ,CAAEF,WAAAA,IAGhB,CAOA,SAASG,GAAetQ,GACtB,OACE,gBAACO,EAAA,EAAO,CAACC,MAAOR,EAAMgE,MAAOtD,UAAQ,GACnC,qBACEwD,KAAMlE,EAAM7B,IACZoS,OAAO,UAEP,gBAAChP,EAAA,EAAY,CAACF,QAAS,kBAI/B,CC3BA,IACM,GAAY/B,EAAA,mBADA,wBAGZ,SAAUkR,KACd,IAAQC,GAAmB,EAAAC,EAAA,KAAnBD,eACAE,GAAgB,EAAAC,EAAA,GAAY,MAA5BD,YAEF7D,GAAc,EAAA+D,EAAA,KAEpB,GAUI,EAAAC,EAAA,MATFhC,EAAU,EAAVA,WACAC,EAAa,EAAbA,cACAC,EAAe,EAAfA,gBACAzF,EAAU,EAAVA,WACAwH,EAAkB,EAAlBA,mBACAC,EAAU,EAAVA,WACAC,EAAO,EAAPA,QACAC,EAAS,EAATA,UACAnQ,EAAW,EAAXA,YAGIoQ,EAAcV,EAAeW,EAAA,iBAAgCT,EAEnE,aAAgB,WACVQ,GACF,eAA2B,CACzBnG,YAAa,cACbpF,OAAQ,mBACP,CAAEyL,SAAS,GAClB,GAAG,CAACF,KAEJ,EAAAG,EAAA,GAAmB,CAAE9Q,MAAO,GAAU,gBAEtC,IAAM+Q,EDgDF,SAAoCzE,GACxC,IAAMtC,EAAS,mBAA6BgH,GAAA,YACpCf,GAAmB,EAAAC,EAAA,KAAnBD,eACAE,GAAgB,EAAAC,EAAA,GAAY,MAA5BD,YACFc,EAAqBhB,EAAeW,EAAA,gBACpCM,EAAef,GAAec,EAC9B1E,EAAWD,EAAYE,IAAMF,EAAYG,GAE/C,OAAO,eAAkB,SAACxC,GAAkB,OA5D9C,SACE4E,EACAqC,EACA3E,EACAvC,GAEA,IAAI2F,EACAwB,EAAkB,YAmBtB,GAjBI/D,EAAA,UAAoByB,KACtBc,EAAa,SAEXvC,EAAA,gBAA0ByB,KAC5Bc,EAAa,cACbwB,EAAkB,eAGhB/D,EAAA,SAAmByB,KACrBc,EAAa,QAEXd,EAAalP,SAAWP,GAAA,WAC1BuQ,EAAa,UAEXd,EAAalP,SAAWP,GAAA,aAC1BuQ,EAAa,YAEXvC,EAAA,cAAwByB,KACHzB,EAAA,mBAA6ByB,GAA5CuC,WAGN,MAAO,GAGX,IAAMC,EAAsB,CAAC3B,GAAsBb,EAAcc,IAE3D2B,EAAYxH,GAAA,eAAkCE,EAAQ6E,GAc5D,OAbKqC,GAAgBI,GACnBD,EAAoBhO,KAAK,CACvBG,MAAQ+I,EAEJ,GAAU4E,GADV,kBAAM,gBAACrB,GAAc,CAACtM,MAAO,GAAU2N,GAAkBxT,IAAK2T,GAAa,EAG/E3Q,UAAW,eACXyC,QAASmJ,EACT7I,KAAMoG,GAAA,eAAkCE,EAAQ6E,GAChD5K,cAAc,IAIXoN,CACT,CAWIN,CAAuB9G,EAAQiH,EAAc3E,EAAUvC,EAAOnM,KAAK,GAAE,CAAC0O,GAC1E,CC1DiCgF,CAA0BjF,GAEzD,OACE,uBAAK3L,UAAU,SACXgQ,GAAe,gBAACjG,EAAA,EAAY,MAGxB6F,EACK,gBAACd,GAAsB,MAE3BnB,EAAWhL,OASd,gCACE,gBAAC+K,EAAe,CACdC,WAAYA,EACZC,cAAeA,EACfC,gBAAiBA,EACjBtC,iBAAkB,KAClBC,iBAAkB4E,EAClBxQ,YAAaA,EACboO,mBAAiB,EACjBD,aAAc,CAAC3F,GACfuD,YAAaA,KAEbmE,GAAW1H,IACX,gBAACyI,EAAA,EAAoB,CAACzI,WAAYA,EAAY2H,UAAWA,EAAWF,WAAYA,KApBlF,gBAAC5F,EAAoB,CACnBnH,QAAS,CAAE+G,YAAa,cAAuBpF,OAAQ,oBACvD/E,SAAUoR,EAAA,qCAyBxB,C,gKC9FavC,EAAc,CACzBwC,gBAAe,SAACpD,G,MACd,OAAiF,QAA1E,EAAAA,aAAU,EAAVA,EAAY/R,QAAO,SAAAyR,GAAC,OAAIA,EAAElQ,OAASoN,EAAA,aAAqB,WAAkB,QAAI,EACvF,EAEAyG,gBAAe,SAACrD,GACd,OAAOpP,EAAA,OAAiBA,EAAA,UAAoBgQ,EAAYwC,gBAAgBpD,GAAYpQ,KAAI,SAAA0T,GAAI,MAAC,OAAY,QAAZ,EAAAA,EAAEhQ,kBAAU,QAAI,EAAE,KAAI,MAAM1D,KAAI,SAAAyN,GAAC,OAAIA,EAAElP,EAAE,GACxI,G,mgCCMI,SAAUoV,EAA2BC,GACzC,OAAOA,EAAOnQ,MAAQyH,OAAO2I,OAAOD,EAAOnQ,OAAS,EACtD,CAsCM,SAAU2O,EACdT,EACAmC,GAC2B,I,IAA3BlJ,IAAA,yDAEMmJ,EAAQ,kBAER3V,EAAc,kBAAkC4V,EAAA,iBAEhDhK,EAAa,SAACiK,GAAe,OAAKrJ,GAAesJ,EAAA,YAAwB,OAAD,QAC5ED,OAAAA,GACGtC,GACH,EACIa,EAAY,SAACyB,GAAe,OAAKF,EAAM/J,EAAWiK,GAAQ,EAEhE,GAKI,OAAkCjK,EAAYwI,GAJzCpC,EAAU,EAAjB3M,MACA8O,EAAO,EAAPA,QACY4B,EAAoB,EAAhCtJ,WACAyH,EAAU,EAAVA,WAGI8B,EAAkBpT,EAAA,OAAiD,QAAhC,EAAAoP,aAAU,EAAVA,EAAYpQ,KAAI,SAAA8P,GAAC,OAAIA,EAAEe,QAAQ,WAAC,QAAI,IAEvEwD,GAA2B,OAAcD,GAAiB,SAACE,GAC/D,OAAOJ,EAAA,oBAAgCI,EACzC,IAEMC,EAAevD,EAAYyC,gBAAgBrD,GAE3CoE,GAA6B,OAAcD,GAAc,SAACD,GAC9D,OAAOJ,EAAA,oBAAgCI,EAAKlW,EAAYuB,KAAKlB,WAC/D,IAEMqN,EAAS,kBAA6BgH,EAAA,YAEtCT,EAjEF,SACJoC,EACAC,EACAH,EACAI,EACA7I,GAEA,IAA6G,IAAvC,WAAe4I,GAAwB,GAArGE,EAA0B,KAAEC,EAA6B,KACmC,IAApC,WAAeF,GAAqB,GAA5FG,EAAuB,KAAEC,EAA0B,KAY3D,OAVA,aAAgB,WACVL,GACFG,GAA8B,EAClC,GAAG,CAACH,IAEJ,aAAgB,WACVC,GACFI,GAA2B,EAC/B,GAAG,CAACJ,MAEAF,IAAcA,EAAUrP,WAGpBqP,IACJG,GACAL,EAAanP,SAAW0P,IACxBhJ,EAAOnM,KACb,CAsC6BqV,CACzB5E,IACEiE,EAAyB5Q,MAC3B8Q,IACEC,EAA2B/Q,MAC7BqI,GAGImJ,EAAYC,KAAKC,UAAUxD,GAG3B9G,EAAasJ,GACdE,EAAyBxJ,YACzB2J,EAA2B3J,WAE1BwF,EAAgBsD,EAA2BU,GAC3C/D,EAAkBqD,EAA2Ba,GAE7CY,EAgBGtB,IAAuBzD,aAAa,EAAbA,EAAejL,SAAUiL,EAAcgF,QACnE,SAACC,EAAK1G,GAGJ,GAFsBA,EAAMnN,SAAWP,EAAA,cAEnB,OAAOoU,EAE3B,I,EAAMC,EAAc3G,EACpB,MAAO,GAAP,O,+CAAY0G,I,qSAAG,CAAE,CAAEE,WAAYD,EAAYhX,GAAIY,cAAeoW,EAAYpW,gBAC5E,GACA,IAvBEsW,EAA4B,kBAChC3B,KAAyBO,EAAyB5Q,OAASrF,EAAYuB,MACvEV,EAAAyW,EAAA,eAA0C,CACxCC,aAAcP,EACdQ,QAAS,CACPpX,kBAAmBJ,EAAYuB,KAAKlB,WACpCH,cAAeF,EAAYuB,KAAKpB,OAKhCiS,EAAe,CAAE3F,EAAYoK,EAAWQ,EAA0B5K,YAgBxE,MAAO,CACLuF,WAAAA,EACAC,cAAAA,EACAC,gBAAAA,EACAmF,0BAA2BA,EAA0B9V,KACrDkL,WAAAA,EACAwH,mBAAAA,EACAC,WAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAnQ,YAAwB,QAAX,EAAAyJ,EAAOnM,YAAI,eAAE0C,YAC1BmO,aAAAA,EAEJ,C,mCCzJA,SAAgB,gBAAkB,QAAQ,IAAM,QAAQ,SAAW,QAAQ,YAAc,QAAQ,QAAU,Q","sources":["file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/apps/share/components/shared-to-avatar-list/shared-to-avatar-list.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-to-avatar-list/SharedToAvatarList.tsx","file:///app/packages/libs/shared/src/apps/share/constants/TableTheme.ts","file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/components/avatar-list/AvatarList.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRouteHelper.ts","file:///app/packages/libs/shared/src/utils/GroupHelper.ts","file:///app/packages/projects/lite/src/apps/share/components/shares-header/SharesHeader.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/empty-state/SharedByMeEmptyState.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/share-status-indicator/ShareStatusIndicator.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/share-status-indicator/share-status-indicator.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/table/SharedByMeTableUtils.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-by-me/table/SharedByMeTable.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/partial-loading/partial-shared-by-me-table.scss","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/partial-loading/PartialSharedByMeTable.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/SharedByMeViewUtils.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/SharedByMeView.tsx","file:///app/packages/libs/shared/src/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/shared/hooks/useSharesTable.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MarkInteractiveAnswer } from 'libs/shared/apps/analytics/interfaces/MarkInteractiveAnswer';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\nimport { InteractivesPendingReviewsRequest } from 'libs/shared/apps/analytics/interfaces/requests/InteractivesPendingReviewsRequest';\nimport { AnalyticsRequestFilter, CurrentUser, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\ninterface InteractiveResultFilters {\n currentUserId: string;\n currentCustomerId: string;\n dateRange?: { start: string, end: string }\n userIds?: string | string[];\n classroomsAndGroups?: string | string[];\n}\n\nfunction getInteractiveResultFilters(\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter\n): InteractiveResultFilters {\n return {\n currentUserId: currentUser.id,\n currentCustomerId: currentUser.customerId,\n dateRange: { start: filter.start, end: filter.end },\n userIds: filter.userId,\n classroomsAndGroups: filter.groupId\n };\n}\n\nexport const InteractiveResultsRequests = {\n /** \n * This endpoint returns data with a lot of duplicated ids,\n * e.g. student answers to the same question will have the same id.\n * Because of that, we don't normalize.\n */\n interactiveResultSet(\n interactiveId: string,\n interactiveMetadataId: string,\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter,\n includePublicResults: boolean,\n success?: (data: InteractiveResultSet) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: includePublicResults ?\n `/api/domain/v3/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}` :\n `/api/domain/v2/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: getAnalyticsRequestKey(`interactive:result:set:${interactiveId}:${interactiveMetadataId}`, filter),\n data: getInteractiveResultFilters(currentUser, filter),\n type: HttpVerbs.POST,\n normalize: false,\n formatData: (data: any) => {\n return {\n ...data,\n students: data.students.map((student: any) => {\n if (!student.name || !student.profileId)\n return student;\n\n return {\n ...student,\n publicUser: {\n profileId: student.profileId,\n name: student.name\n }\n };\n })\n };\n },\n success,\n error,\n always\n };\n },\n \n /**\n * As the response from `interactiveResultSet` isn't normalised, we need to invalidate the cache\n * to update the results data.\n */\n mark(\n interactiveId: string,\n interactiveMetadataId: string,\n answerId: string,\n data: MarkInteractiveAnswer,\n success?: () => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/answers/${answerId}`,\n key: `mark:answer:${answerId}:${data.resultId}`,\n type: HttpVerbs.PUT,\n data,\n normalize: false,\n invalidationKeys: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`,\n success,\n error,\n always\n };\n },\n\n pendingReviews(data: InteractivesPendingReviewsRequest): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/pending-reviews/summary`,\n key: `interactives:pending:reviews`,\n type: HttpVerbs.POST,\n data\n };\n },\n\n interactiveResultsReport(data: InteractiveResultsReport): Flight.Request {\n return {\n url: '{gateway}/v2/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"ByxQa\",\"sm\":\"EgJ0v\",\"sharedAvatar\":\"cW0NT\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { AvatarItemProps, AvatarList } from 'libs/shared/components/avatar-list/AvatarList';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './shared-to-avatar-list.scss';\n\nconst namespace = 'reportsShare.sharedToAvatarList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getHiddenRecipientText(hiddenRecipients: BaseObject[]): string {\n const counts = ArrayHelper.countBy(hiddenRecipients, 'typeId');\n const userCount = counts[MasterType.User];\n const classroomCount = counts[MasterType.Classroom];\n const groupCount = counts[MasterType.ClassroomGroup];\n\n if (userCount && classroomCount && groupCount)\n return getPhrase('classroomsGroupsAndUsers', { userCount, classroomCount, groupCount });\n\n if (userCount && classroomCount)\n return getPhrase('classroomsAndUsers', { userCount, classroomCount });\n\n if (userCount && groupCount)\n return getPhrase('groupsAndUsers', { userCount, groupCount });\n\n if (classroomCount && groupCount)\n return getPhrase('classroomsAndGroups', { classroomCount, groupCount });\n\n if (userCount)\n return getPhrase('users', { userCount });\n\n if (classroomCount)\n return getPhrase('classrooms', { classroomCount });\n\n if (groupCount)\n return getPhrase('groups', { groupCount });\n}\n\nfunction SharedToAvatar(props: AvatarItemProps): JSX.Element {\n const user: User = props.item?.typeId === MasterType.User && props.item as User;\n const classroom: Classroom = props.item?.typeId === MasterType.Classroom && props.item as Classroom;\n const classroomGroup: ClassroomGroup = props.item?.typeId === MasterType.ClassroomGroup\n && props.item as ClassroomGroup;\n\n const svgContainerClassName = 'd-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100';\n\n return (\n <>\n {!!user &&\n <Tooltip title={`${user.name} ${user.surname}`} spanHack spanHackClassName='h-100 w-100'>\n <Avatar\n imageUrl={user.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(user.name, user.surname)}\n extraClasses={styles.sharedAvatar}\n />\n </Tooltip>\n }\n {!!classroom &&\n <Tooltip title={classroom.name} spanHack spanHackClassName='h-100 w-100'>\n <div className={svgContainerClassName}>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Large}\n variant='teal'\n />\n </div>\n </Tooltip>\n }\n {!!classroomGroup &&\n <Tooltip title={classroomGroup.name} spanHack spanHackClassName='h-100 w-100'>\n <div className={svgContainerClassName}>\n <IconCircle\n svgName={cvSvgLibrary.Group}\n variant={mapColourToBsVariant(classroomGroup.metadata?.colour)}\n />\n </div>\n </Tooltip>\n }\n </>\n );\n}\n\n\ninterface AnonymousSharedToAvatarProps {\n avatarSize?: 'md' | 'sm';\n}\n\nexport function AnonymousSharedToAvatar(props: AnonymousSharedToAvatarProps): JSX.Element {\n return (\n <div className={`${styles.avatarContainer} ${props.avatarSize === 'sm' ? styles.sm : ''}`}>\n <Tooltip\n title={getPhrase('anonymous')}\n spanHack\n spanHackClassName='bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100'\n >\n <SvgContainer svgName={cvSvgLibrary.Anonymous} size={props.avatarSize === 'sm' ? SvgContainerSize.Small : null} />\n </Tooltip>\n </div>\n );\n}\n\ninterface SharedLinkAvatarProps {\n text?: string;\n avatarSize?: 'md' | 'sm';\n className?: string;\n}\n\nexport function SharedLinkAvatar(props: SharedLinkAvatarProps): JSX.Element {\n return (\n <div className={`${styles.avatarContainer} ${props.avatarSize === 'sm' ? styles.sm : ''}`}>\n <Tooltip\n title={props.text || getPhrase('sharedLink')}\n spanHack\n spanHackClassName={`bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ${props.className || ''}`}\n >\n <SvgContainer svgName={cvSvgLibrary.Link} size={props.avatarSize === 'sm' ? SvgContainerSize.Small : null} />\n </Tooltip>\n </div>\n );\n}\n\ninterface SharedToAvatarListProps {\n recipients: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n hasShareLink?: boolean;\n avatarSize?: 'md' | 'sm';\n shareLinkText?: string;\n}\n\nSharedToAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function SharedToAvatarList(props: SharedToAvatarListProps): JSX.Element {\n return (\n <AvatarList\n {...props}\n items={props.recipients}\n avatarItem={SharedToAvatar}\n avatarContainerClassname={`${styles.avatarContainer} ${props.avatarSize === 'sm' ? styles.sm : ''}`}\n getHiddenTooltip={getHiddenRecipientText}\n hasShareLink={props.hasShareLink}\n shareLinkText={props.shareLinkText}\n />\n );\n}","import { TableTheme } from 'libs/shared/components/table/Table';\n\nexport const SHARES_TABLE_THEME: TableTheme = {\n table: 'striped-list no-full-width pb-3',\n header: 'fw-semibold pb-1',\n headerCell: `py-2 ps-2 text-nowrap`,\n row: 'striped-row rounded',\n cell: 'd-flex align-items-center p-2'\n};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharedLinkAvatar } from 'libs/shared/apps/share/components/shared-to-avatar-list/SharedToAvatarList';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.avatarList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AvatarItemProps {\n imageCdnUrl: string;\n index: number;\n item?: BaseObject;\n hiddenItems?: BaseObject[];\n maxAvatars?: number;\n}\n\ninterface AvatarListProps {\n items: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n avatarItem?: (props: AvatarItemProps) => JSX.Element;\n getHiddenTooltip?: (hiddenItems: BaseObject[]) => string;\n numberClassname?: string;\n avatarContainerClassname?: string;\n roleToDisplay?: 'student' | 'staff';\n hasShareLink?: boolean;\n avatarSize?: 'md' | 'sm';\n shareLinkText?: string;\n}\n\nAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function AvatarList(props: AvatarListProps): JSX.Element {\n const itemsToDisplay = props.items.length > props.maxAvatars\n ? props.items.slice(0, props.maxAvatars - 1)\n : props.items;\n\n const hiddenItems = props.items.length > itemsToDisplay.length\n ? props.items.slice(props.maxAvatars - 1)\n : [];\n\n const AvatarItem = props.avatarItem;\n const hiddenItemsCounts = hiddenItems.length;\n const translateX = props.avatarSize === 'sm' ? 4 : 8;\n\n function getTooltip() {\n if (props.getHiddenTooltip)\n return props.getHiddenTooltip(hiddenItems);\n\n if (props.roleToDisplay)\n return getPhrase(props.roleToDisplay === 'staff' ? 'staff' : 'student', { count: hiddenItemsCounts, smartCount: hiddenItemsCounts });\n\n return getPhrase('users', { count: hiddenItemsCounts, smartCount: hiddenItemsCounts });\n }\n\n function getContainerStyles() {\n return {\n marginRight: `-${((itemsToDisplay.length - 1) + (hiddenItems.length ? 1 : 0) + (props.hasShareLink ? 1 : 0)) * translateX}px`\n };\n }\n\n function getAvatarStyles(idx: number) {\n return {\n transform: `translateX(${(props.hasShareLink ? idx + 1 : idx) * -translateX}px)`,\n zIndex: props.maxAvatars - idx\n };\n }\n\n if (itemsToDisplay.length === 0 && hiddenItems.length === 0)\n return <></>;\n\n return (\n <div\n className='d-flex'\n style={getContainerStyles()}\n >\n {props.hasShareLink && (\n <div style={{ zIndex: props.maxAvatars + 1 }}>\n <SharedLinkAvatar text={props.shareLinkText} avatarSize={props.avatarSize} className='bg-dark text-white' />\n </div>\n )}\n {itemsToDisplay.map((item, idx) => (\n <div\n className={`${props.avatarContainerClassname || ''}`} key={item.id}\n style={getAvatarStyles(idx)}\n >\n <AvatarItem\n item={item}\n imageCdnUrl={props.imageCdnUrl}\n index={idx}\n maxAvatars={props.maxAvatars}\n />\n </div>\n ))}\n\n {!!hiddenItems.length && (\n <div\n className={`${props.avatarContainerClassname || ''} bg-white rounded-circle`}\n style={{ transform: `translateX(${itemsToDisplay.length * -translateX}px)`, zIndex: props.maxAvatars - itemsToDisplay.length }}\n >\n <Tooltip title={getTooltip()} spanHack spanHackClassName='h-100 w-100'>\n <div className={`d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ${props.numberClassname || ''}`}>\n {`+${hiddenItems.length}`}\n </div>\n </Tooltip>\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState, HashObject } from 'libs/common/react/interfaces';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const [ idBatches, setIdBatches ] = React.useState<string[][]>([]);\n\n React.useEffect(() => {\n if (!itemIds?.length)\n return;\n\n const newBatches = [...idBatches];\n newBatches.push([]);\n\n itemIds.forEach(id => {\n if (newBatches.find(batch => batch.find(_id => _id === id)))\n return;\n\n newBatches[newBatches.length - 1].push(id);\n });\n\n setIdBatches(newBatches.filter(batch => batch.length));\n }, [itemIds ? itemIds.join(',') : null]);\n\n const dispatch = useDispatch();\n\n const state = useSelector((state: ApplicationState) => state);\n\n React.useEffect(() => {\n idBatches.forEach(idBatch => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n\n if (response.shouldFetch)\n Flight.fetch(dispatch, request);\n });\n }, [idBatches?.length]);\n\n if (!idBatches?.length)\n return { items: null, isFetching: false };\n \n const items: { [key: string]: T} = {};\n\n /* Used locally to only return our items if we've fetched all of them */\n const responses: HashObject<Flight.Response<T[]>> = {};\n \n idBatches.forEach((idBatch, i) => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n responses[i] = response;\n\n if (response.data)\n response.data.forEach(v => items[v.id] = v);\n });\n\n return {\n items: Object.keys(responses).some(k => !!responses[k].data) ? items : null,\n isFetching: !!Object.keys(responses).some(k => responses[k].isFetching)\n };\n}","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, sharerId?: string): string {\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (sharerId)\n key += `:${sharerId}`;\n\n return key;\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Config } from 'libs/shared/interfaces';\n\nexport const AnalyticsRouteHelper = {\n getObjectUrl(config: Config, object: BaseObject): string {\n const baseUrl = config.analyticsWebUrl;\n\n if (!baseUrl)\n return;\n\n let relativeUrl = '';\n\n switch (object.typeId) {\n case MasterType.Video:\n relativeUrl = `/videos/${object.id}/overview`;\n break;\n\n case MasterType.Clip:\n relativeUrl = `/clips/${object.id}/overview`;\n break;\n\n case MasterType.Interactive:\n relativeUrl = `/interactives/${object.id}/overview`;\n break;\n }\n\n if (!relativeUrl)\n return;\n\n return UrlHelper.safeUrlConcat(baseUrl, relativeUrl);\n }\n};","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'share.sharesHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst SHARED_BY_ME_APP_LINK = { application: AppChannels.MY_SHARES, action: Actions.MyShares.SHARED_BY_ME };\nconst SHARED_WITH_ME_APP_LINK = { application: AppChannels.MY_SHARES, action: Actions.MyShares.SHARED_WITH_ME };\n\nfunction getPillTabs(): PillTab[] {\n const currentAppLink = ContextService.getCurrentRoute()?.appLink;\n\n return [\n {\n name: getPhrase('sharedByMe'),\n onSelect: () => Core.AppLinkHelper.trigger(SHARED_BY_ME_APP_LINK),\n active: currentAppLink?.action === SHARED_BY_ME_APP_LINK.action\n },\n {\n name: getPhrase('sharedWithMe'),\n onSelect: () => Core.AppLinkHelper.trigger(SHARED_WITH_ME_APP_LINK),\n active: currentAppLink?.action === SHARED_WITH_ME_APP_LINK.action\n }\n ];\n}\n\nexport function SharesHeader(): JSX.Element {\n return (\n <div className='pb-3'>\n <h1 className='h2 mb-3'>{getPhrase('shares')}</h1>\n <PillTabSelector tabs={getPillTabs()} />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nconst namespace = 'share.sharedByMeEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SharedByMeEmptyStateProps {\n imageUrl: string;\n appLink?: Core.AppLink;\n useInteractiveCopy?: boolean;\n}\n\nexport function SharedByMeEmptyState(props: SharedByMeEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} size='small'/>\n <EmptyState.Heading>\n {getPhrase(props.useInteractiveCopy ? 'interactivesHeading' : 'genericHeading')}\n </EmptyState.Heading>\n <EmptyState.Info>{getPhrase(props.useInteractiveCopy ? 'interactivesInfo' : 'genericInfo')}</EmptyState.Info>\n {!!props.appLink &&\n <EmptyState.Cta appLink={props.appLink} text={getPhrase('cta')} />\n }\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { UnionShareObject } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './share-status-indicator.scss';\n\nconst namespace = 'share.shareStatusIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getStatusPhrase(share: UnionShareObject): string {\n if (share.type === ShareType.DirectShare)\n return getPhrase('active');\n\n switch (share.status) {\n case ShareLinkStatus.Active:\n return getPhrase('active');\n\n case ShareLinkStatus.Expired:\n return getPhrase('expired');\n }\n}\n\nfunction getBgColourClassName(share: UnionShareObject): string {\n if (share.type === ShareType.DirectShare)\n return 'bg-success';\n \n switch (share.status) {\n case ShareLinkStatus.Active:\n return 'bg-success';\n\n case ShareLinkStatus.Expired:\n return 'bg-gray-500';\n }\n}\n\ninterface ShareStatusIndicatorProps {\n share: UnionShareObject;\n}\n\n/**\n * TODO: add support for deleted share links (currently the api doesn't return these.)\n */\nexport function ShareStatusIndicator(props: ShareStatusIndicatorProps): JSX.Element {\n if (props.share.type === ShareType.DirectShare && !props.share.recipients?.length)\n return <></>;\n\n if (props.share.type === ShareType.ShareLink && props.share.isPasswordProtected) {\n return (\n <Tooltip title={getPhrase('passwordProtected')} spanHack>\n <SvgContainer svgName={cvSvgLibrary.Lock} size={SvgContainerSize.Small} />\n </Tooltip>\n );\n }\n\n return (\n <Tooltip\n title={getStatusPhrase(props.share)}\n spanHack\n spanHackClassName={styles.indicatorContainer}\n >\n <div className={`${styles.indicator} ${getBgColourClassName(props.share)}`} />\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"indicatorContainer\":\"T6YAv\",\"indicator\":\"_MRHG\"};","import React from 'react';\nimport { Column } from 'react-table';\nimport { format as formatDate } from 'timeago.js';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport {\n ShareStatusIndicator\n} from 'libs/shared/apps/share/components/shared-by-me/share-status-indicator/ShareStatusIndicator';\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport {\n AnonymousSharedToAvatar,\n SharedLinkAvatar,\n SharedToAvatarList\n} from 'libs/shared/apps/share/components/shared-to-avatar-list/SharedToAvatarList';\nimport { ShareHelper } from 'libs/shared/apps/share/utils/ShareHelper';\nimport { SharableEntity, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, UnionShareObject } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'share.sharedByMeTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getDateShared(share: UnionShareObject): string {\n if (share.type === ShareType.ShareLink || !share?.recipients?.length)\n return share.dateCreated;\n\n const datesShared = share.recipients.map(r => r.dateShared);\n\n datesShared.sort((date1, date2) => {\n if (DateHelper.isSame(date1, date2))\n return 0;\n\n return DateHelper.isAfter(date1, date2) ? 1 : -2;\n });\n\n\n if (!datesShared.length)\n return '';\n\n return ArrayHelper.last(datesShared);\n}\n\ninterface SharedByMeTableData {\n share: UnionShareObject;\n sharedObject: SharableEntity;\n dateShared: string;\n shareRecipients?: BaseObject[];\n viewCount: number;\n}\n\ntype TableDataGroupings = { [date: string]: SharedByMeTableData[] };\n\nexport function getColumns(\n index: number,\n dateHeading: string,\n getObjectAppLink: (object: BaseObject) => Core.AppLink,\n getObjectActions: (object: BaseObject) => ActionOptions[],\n imageCdnUrl: string,\n showStatus?: boolean,\n showViewCount?: boolean,\n breakpoints?: Breakpoints\n): Column<SharedByMeTableData>[] {\n const isMobile = breakpoints && (breakpoints.xs || breakpoints.sm);\n\n const columns: Column<SharedByMeTableData>[] = [\n {\n Header: showStatus ? '' : dateHeading,\n accessor: 'sharedObject',\n id: 'image',\n Cell: ({ value }) => (\n <div className='w-100'>\n <SharedObjectImage\n object={value}\n appLink={getObjectAppLink(value)}\n showVideoMetadata\n locationContext={LocationContext.SharedByMe}\n />\n </div>\n ),\n minWidth: 140,\n maxWidth: 30\n },\n {\n accessor: 'sharedObject',\n id: 'name',\n Cell: ({ value }) => {\n if (value.name) {\n if (VideoHelper.isVideoType(value) && !VideoHelper.getCanBeConsumed(value)?.canNavigate) {\n return (\n <span className='clamp-2'>\n {value.name}\n </span>\n );\n }\n\n return (\n <div className='clamp-2'>\n {VideoHelper.isVideoType(value) && (\n <VideoSubText\n type='series'\n video={value}\n appLink={'series' in value && value.series ? getObjectAppLink(value.series) : null}\n analyticsOptions={{ location: LocationContext.Insights }}\n />\n )}\n <AppLink\n appLink={getObjectAppLink(value)}\n analyticsData={{ id: value.id, name: value.name }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(value.type),\n actionType: UserAction.Click,\n location: LocationContext.SharedByMe\n }}\n >\n {value.name}\n </AppLink>\n </div>\n );\n }\n\n return <span><Text namespace={namespace} phrase='videoUnavailable' /></span>;\n },\n width: 60\n },\n {\n Header: index === 0 ? getPhrase('sharedTo') : '',\n accessor: 'shareRecipients',\n Cell: ({ value }) => {\n if (!value)\n return <SharedLinkAvatar />;\n\n if (!value.length)\n return <AnonymousSharedToAvatar />;\n\n return <SharedToAvatarList recipients={value} imageCdnUrl={imageCdnUrl} maxAvatars={isMobile ? 1 : 2} />;\n },\n width: 40\n },\n !isMobile && {\n Header: index === 0 ? getPhrase('shared') : '',\n id: 'dateShared',\n accessor: s => formatDate(s.dateShared),\n width: 40\n },\n {\n accessor: 'sharedObject',\n id: 'actions',\n Cell: ({ value }) => (\n <Actions\n actions={getObjectActions(value)}\n className='w-100 justify-content-end pe-2'\n />\n ),\n width: 20\n }\n ];\n\n const statusColumn: Column<SharedByMeTableData> = {\n Header: dateHeading,\n accessor: 'share',\n id: 'status',\n Cell: ({ value }) => (\n <ShareStatusIndicator share={value} />\n ),\n width: 5\n };\n\n const viewCountColumn: Column<SharedByMeTableData> = {\n Header: getPhrase('views'),\n accessor: 'viewCount',\n width: 30\n };\n\n if (showStatus)\n columns.splice(0, 0, statusColumn);\n\n if (showViewCount)\n columns.splice(columns.length - 1, 0, viewCountColumn);\n\n return columns.filter((Boolean));\n}\n\nexport function useGetData(\n sentShares: UnionShareObject[],\n sharedObjects: BaseObject[],\n shareRecipients: BaseObject[],\n groupByDate: boolean,\n dependencies: (string | boolean)[]\n): TableDataGroupings {\n return React.useMemo(() => {\n const tableData: SharedByMeTableData[] = [];\n\n sentShares.forEach(s => {\n const sharedObject = sharedObjects.find(o => o.id === s.objectId);\n\n let recipients: BaseObject[] | null = null;\n\n if (s.type === ShareType.DirectShare) {\n recipients = [];\n\n s.recipients?.forEach(r => {\n const recipient = shareRecipients.find(s => s.id === r.id);\n\n if (recipient)\n recipients.push(recipient);\n });\n }\n\n // Skip if we don't have access to the shared object (e.g. if it's been deleted)\n if (sharedObject)\n tableData.push({\n share: s,\n sharedObject,\n shareRecipients: recipients,\n dateShared: getDateShared(s),\n viewCount: s.viewCount ?? 0\n });\n });\n\n if (!groupByDate)\n return { [getPhrase('title')]: tableData };\n\n return ShareHelper.groupByDateShared(tableData);\n }, [...dependencies]);\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { SHARES_TABLE_THEME } from 'libs/shared/apps/share/constants/TableTheme';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Table } from 'libs/shared/components/table/Table';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, UnionShareObject } from 'libs/shared/interfaces';\n\nimport { getColumns, useGetData } from './SharedByMeTableUtils';\n\ninterface SharedByMeTableProps {\n sentShares: UnionShareObject[];\n sharedObjects: BaseObject[];\n shareRecipients: BaseObject[];\n getObjectAppLink: (object: BaseObject) => Core.AppLink;\n getObjectActions: (object: BaseObject) => ActionOptions[];\n imageCdnUrl: string;\n groupByDateShared?: boolean;\n showStatus?: boolean;\n showViewCount?: boolean;\n dependencies?: (string | boolean)[];\n breakpoints?: Breakpoints;\n}\n\nfunction SharedByMeTableMemo(props: SharedByMeTableProps): JSX.Element {\n const data = useGetData(\n props.sentShares,\n props.sharedObjects,\n props.shareRecipients,\n !!props.groupByDateShared,\n props.dependencies\n );\n\n return (\n <>\n {Object.keys(data).map((heading, index) => (\n <Table\n key={index}\n columns={getColumns(\n index,\n heading,\n props.getObjectAppLink,\n props.getObjectActions,\n props.imageCdnUrl,\n props.showStatus,\n props.showViewCount,\n props.breakpoints\n )}\n data={data[heading]}\n theme={SHARES_TABLE_THEME}\n />\n ))}\n </>\n );\n}\n\nexport const SharedByMeTable = React.memo(SharedByMeTableMemo);","// extracted by mini-css-extract-plugin\nexport default {\"imageColumn\":\"uIOaA\",\"nameColumn\":\"Nta2B\",\"sharedToColumn\":\"XTJBC\",\"dateSharedColumn\":\"HdARK\",\"actionsColumn\":\"DXyZw\",\"heading\":\"XZ6o7\",\"image\":\"MolfU\",\"name\":\"MM43m\",\"avatar\":\"EboYM\",\"date\":\"by_XM\",\"actions\":\"_S2M_\"};","import React from 'react';\n\nimport styles from './partial-shared-by-me-table.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded`}>\n <div className={`d-flex align-items-center justify-content-center p-2 ${styles.imageColumn}`}>\n <div className={`partial-loading-background rounded w-100 ${styles.image}`} />\n </div>\n <div className={`d-flex align-items-center p-2 ${styles.nameColumn}`}>\n <div className={`partial-loading-background w-75 ${styles.name}`} />\n </div>\n <div className={`d-flex align-items-center p-2 ${styles.sharedToColumn}`}>\n <div className={`partial-loading-background ${styles.avatar}`} />\n </div>\n <div className={`d-none d-md-flex align-items-center p-2 ${styles.dateSharedColumn}`}>\n <div className={`partial-loading-background ${styles.date}`} />\n </div>\n <div className={`d-flex align-items-center justify-content-end p-2 ${styles.actionsColumn}`}>\n <div className={`partial-loading-background rounded me-2 ${styles.actions}`} />\n </div>\n </div>\n );\n}\n\ninterface PartialHeaderProps {\n fullHeader?: boolean;\n}\n\nfunction PartialHeader(props: PartialHeaderProps): JSX.Element {\n return (\n <div className='d-flex mb-1'>\n <div className={`${styles.imageColumn} p-2`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.nameColumn} p-2`}>\n \n </div>\n <div className={`${styles.sharedToColumn} p-2`}>\n {props.fullHeader\n ? <div className={`partial-loading-background ${styles.heading}`} />\n : <> </>\n }\n </div>\n <div className={`${styles.dateSharedColumn} p-2 d-none d-md-flex`}>\n {props.fullHeader\n ? <div className={`partial-loading-background ${styles.heading}`} />\n : <> </>\n }\n </div>\n <div className={`${styles.actionsColumn} p-2`}>\n \n </div>\n </div>\n );\n}\n\nexport function PartialSharedByMeTable(): JSX.Element {\n return (\n <>\n <div className='mb-3'>\n <PartialHeader fullHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\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 </div>\n </div>\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 </div>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { BaseObject, Config } from 'libs/shared/interfaces';\nimport { AnalyticsRouteHelper } from 'libs/shared/utils/AnalyticsRouteHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'liteShare.sharedByMe';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getShareActionOptions(sharedObject: BaseObject, entityType: SharableEntityType): ActionOptions {\n return {\n label: getPhrase('editShareSettings'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.SHARE,\n args: [sharedObject.id],\n params: { entityType }\n }\n };\n}\n\ninterface SeeUsageActionProps {\n label: string;\n url?: string;\n}\n\nfunction SeeUsageAction(props: SeeUsageActionProps): JSX.Element {\n return (\n <Tooltip title={props.label} spanHack>\n <a\n href={props.url}\n target='_blank'\n >\n <SvgContainer svgName={cvSvgLibrary.Analytics} />\n </a>\n </Tooltip>\n );\n}\n\nfunction getSharedObjectActions(\n sharedObject: BaseObject,\n showInsights: boolean,\n isMobile: boolean,\n config: Config\n): ActionOptions[] {\n let entityType: SharableEntityType;\n let analyticsPhrase = 'viewUsage';\n\n if (VideoHelper.isVideo(sharedObject))\n entityType = 'video';\n\n if (VideoHelper.isInteractive(sharedObject)) {\n entityType = 'interactive';\n analyticsPhrase = 'viewResults';\n }\n\n if (VideoHelper.isClip(sharedObject))\n entityType = 'clip';\n\n if (sharedObject.typeId === MasterType.Series)\n entityType = 'series';\n\n if (sharedObject.typeId === MasterType.Playlist)\n entityType = 'playlist';\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n }\n\n const sharedObjectActions = [getShareActionOptions(sharedObject, entityType)];\n\n const objectUrl = AnalyticsRouteHelper.getObjectUrl(config, sharedObject);\n if (!showInsights && objectUrl) {\n sharedObjectActions.push({\n label: !isMobile\n ? () => <SeeUsageAction label={getPhrase(analyticsPhrase)} url={objectUrl} />\n : getPhrase(analyticsPhrase),\n\n className: 'btn btn-link',\n button: !isMobile,\n href: AnalyticsRouteHelper.getObjectUrl(config, sharedObject),\n openInNewTab: true\n });\n }\n\n return sharedObjectActions;\n}\n\nexport function useGetSharedObjectActions(breakpoints: Breakpoints): ((object: BaseObject) => ActionOptions[]) | null {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const { hasPermissions } = usePermissions();\n const { hasInsights } = useSettings(null);\n const insightsPermission = hasPermissions(PermissionName.ViewMyShares);\n const showInsights = hasInsights && insightsPermission;\n const isMobile = breakpoints.xs || breakpoints.sm;\n\n return React.useCallback((object: BaseObject) =>\n getSharedObjectActions(object, showInsights, isMobile, config.data), [isMobile]);\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharedByMeEmptyState } from 'libs/shared/apps/share/components/shared-by-me/empty-state/SharedByMeEmptyState';\nimport { SharedByMeTable } from 'libs/shared/apps/share/components/shared-by-me/table/SharedByMeTable';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { SharesHeader } from 'apps/share/components/shares-header/SharesHeader';\n\nimport { PartialSharedByMeTable } from './partial-loading/PartialSharedByMeTable';\nimport {\n useGetSharedObjectActions\n} from './SharedByMeViewUtils';\n\nconst namespace = 'liteShare.sharedByMe';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SharedByMeView(): JSX.Element {\n const { hasPermissions } = usePermissions();\n const { hasInsights } = useSettings(null);\n\n const breakpoints = useBreakpoints();\n\n const {\n sentShares,\n sharedObjects,\n shareRecipients,\n isFetching,\n showPartialLoading,\n nextCursor,\n hasMore,\n fetchNext,\n imageCdnUrl\n } = useSharesTable();\n\n const hasMyShares = hasPermissions(PermissionName.ViewMyShares) && hasInsights;\n\n React.useEffect(() => {\n if (hasMyShares)\n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME\n }, { replace: true });\n }, [hasMyShares]);\n\n useSetPageMetadata({ title: getPhrase('sharedByMe') });\n\n const getSharedObjectActions = useGetSharedObjectActions(breakpoints);\n\n return (\n <div className='px-3'>\n {!hasMyShares && <SharesHeader />}\n\n {(() => {\n if (showPartialLoading)\n return <PartialSharedByMeTable />;\n\n if (!sentShares.length)\n return (\n <SharedByMeEmptyState\n appLink={{ application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME }}\n imageUrl={ImageUrls.EmptyStates.Share.SHARED_WITH_ME}\n />\n );\n\n return (\n <>\n <SharedByMeTable\n sentShares={sentShares}\n sharedObjects={sharedObjects}\n shareRecipients={shareRecipients}\n getObjectAppLink={getObjectAppLink}\n getObjectActions={getSharedObjectActions}\n imageCdnUrl={imageCdnUrl}\n groupByDateShared\n dependencies={[isFetching]}\n breakpoints={breakpoints}\n />\n {(hasMore || isFetching) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} nextCursor={nextCursor} />\n }\n </>\n );\n })()}\n </div>\n );\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { DirectShare, UnionShareObject } from 'libs/shared/interfaces';\n\nexport const ShareHelper = {\n getDirectShares(sentShares: UnionShareObject[]): DirectShare[] {\n return sentShares?.filter(s => s.type === ShareType.DirectShare) as DirectShare[] ?? [];\n },\n \n getRecipientIds(sentShares: UnionShareObject[]): string[] {\n return ArrayHelper.uniq(ArrayHelper.flatten(ShareHelper.getDirectShares(sentShares).map(d => d.recipients ?? [])), 'id').map(r => r.id);\n }\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractivesPendingReviews } from 'libs/shared/apps/analytics/interfaces/response/InteractivesPendingReviewsResponse';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { GetSentItemsParams } from 'libs/shared/apps/share/interfaces/requests/GetSentItemsParams';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBatchFetch, UseBatchFetchResult } from 'libs/shared/hooks/UseBatchFetch';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { BaseObject, Config, CurrentUser, InteractiveMetadata, UnionShareObject } from 'libs/shared/interfaces';\nimport { ShareHelper } from 'libs/shared/utils/ShareHelper';\n\n\nexport function getBatchFetchResultAsArray(result: UseBatchFetchResult<BaseObject>): BaseObject[] {\n return result.items ? Object.values(result.items) : [];\n}\n\n/**\n * As we are displaying data in an infinite list, we only want to show partial loading\n * on the initial fetch.\n * Whenever a new page is fetched, `sharedObjects.data` and `recipients.data` will be `undefined`,\n * as their key will change. So instead of using those values to determine whether or not to\n * show partial loading, we save the first time that they load in state and then use that.\n */\nexport function usePartialLoading(\n sentShare: UnionShareObject[],\n hasFetchedSharedObjects: boolean,\n recipientIds: string[],\n hasFetchedRecipients: boolean,\n config: Flight.Response<Config>\n): boolean {\n const [ initialSharedObjectsLoaded, setInitialSharedObjectsLoaded ] = React.useState(hasFetchedSharedObjects);\n const [ initialRecipientsLoaded, setInitialRecipientsLoaded ] = React.useState(hasFetchedRecipients);\n\n React.useEffect(() => {\n if (hasFetchedSharedObjects)\n setInitialSharedObjectsLoaded(true);\n }, [hasFetchedSharedObjects]);\n\n React.useEffect(() => {\n if (hasFetchedRecipients)\n setInitialRecipientsLoaded(true);\n }, [hasFetchedRecipients]);\n\n if (sentShare && !sentShare.length)\n return false;\n\n return !sentShare\n || !initialSharedObjectsLoaded\n || (recipientIds.length && !initialRecipientsLoaded)\n || !config.data;\n}\n\nexport function useSharesTable(\n params?: GetSentItemsParams,\n interactiveInsights?: boolean,\n shouldFetch: boolean = true\n) {\n const fetch = Flight.useGetFetch();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const getRequest = (cursor?: string) => shouldFetch && ShareRequests.sentShare({\n cursor,\n ...params\n });\n const fetchNext = (cursor?: string) => fetch(getRequest(cursor));\n\n const {\n items: sentShares,\n hasMore,\n isFetching: isFetchingSentShares,\n nextCursor\n } = useInfiniteList<UnionShareObject>(getRequest, fetchNext);\n\n const sharedObjectIds = ArrayHelper.uniq(sentShares?.map(s => s.objectId) ?? []);\n\n const sharedObjectsFetchResult = useBatchFetch(sharedObjectIds, (ids: string[]) => {\n return ShareRequests.sharedObjectsById(ids);\n });\n\n const recipientIds = ShareHelper.getRecipientIds(sentShares);\n\n const shareRecipientsFetchResult = useBatchFetch(recipientIds, (ids: string[]) => {\n return ShareRequests.getRecipientsById(ids, currentUser.data.customerId);\n });\n \n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const showPartialLoading = usePartialLoading(\n sentShares,\n !!sharedObjectsFetchResult.items,\n recipientIds,\n !!shareRecipientsFetchResult.items,\n config\n );\n\n const filterKey = JSON.stringify(params);\n\n // Wait until all data is fetched before telling the table to re-render\n const isFetching = isFetchingSentShares\n || sharedObjectsFetchResult.isFetching\n || shareRecipientsFetchResult.isFetching;\n\n const sharedObjects = getBatchFetchResultAsArray(sharedObjectsFetchResult);\n const shareRecipients = getBatchFetchResultAsArray(shareRecipientsFetchResult);\n \n const interactiveIds = getInteractiveIds();\n \n const interactivesPendingReview = Flight.useBasicFetch<InteractivesPendingReviews[]>(\n interactiveInsights && !!sharedObjectsFetchResult.items && currentUser.data &&\n InteractiveResultsRequests.pendingReviews({\n interactives: interactiveIds,\n filters: {\n currentCustomerId: currentUser.data.customerId,\n currentUserId: currentUser.data.id\n }\n })\n );\n \n const dependencies = [ isFetching, filterKey, interactivesPendingReview.isFetching ];\n \n function getInteractiveIds() {\n return interactiveInsights && sharedObjects?.length && sharedObjects.reduce(\n (acc, value) => {\n const isInteractive = value.typeId === MasterType.Interactive;\n\n if (!isInteractive) return acc;\n\n const interactive = value as InteractiveMetadata;\n return [ ...acc, { metadataId: interactive.id, interactiveId: interactive.interactiveId }];\n },\n []\n );\n }\n\n return {\n sentShares,\n sharedObjects,\n shareRecipients,\n interactivesPendingReview: interactivesPendingReview.data,\n isFetching,\n showPartialLoading,\n nextCursor,\n hasMore,\n fetchNext,\n imageCdnUrl: config.data?.imageCdnUrl,\n dependencies\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["getInteractiveResultFilters","currentUser","filter","currentUserId","id","currentCustomerId","customerId","dateRange","start","end","userIds","userId","classroomsAndGroups","groupId","InteractiveResultsRequests","interactiveResultSet","interactiveId","interactiveMetadataId","includePublicResults","success","error","always","url","key","data","type","normalize","formatData","students","map","student","name","profileId","publicUser","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","getPhrase","LanguageService","getHiddenRecipientText","hiddenRecipients","counts","ArrayHelper","userCount","MasterType","classroomCount","groupCount","SharedToAvatar","props","user","item","typeId","classroom","classroomGroup","svgContainerClassName","Tooltip","title","surname","spanHack","spanHackClassName","Avatar","imageUrl","avatar","imageCdnUrl","initials","UserHelper","extraClasses","className","IconCircle","svgName","svgSize","SvgContainer","S","variant","metadata","colour","AnonymousSharedToAvatar","avatarSize","size","SharedLinkAvatar","text","SharedToAvatarList","AvatarList","items","recipients","avatarItem","avatarContainerClassname","getHiddenTooltip","hasShareLink","shareLinkText","defaultProps","maxAvatars","SHARES_TABLE_THEME","table","header","headerCell","row","cell","Actions","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","length","idx","label","appLink","href","onClick","dropdownToggleSvgSize","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","customSize","ariaLabel","sortComponent","dropdownToggleClassName","actionsDropdownClassName","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","showDivider","undefined","group","itemsToDisplay","slice","hiddenItems","AvatarItem","hiddenItemsCounts","translateX","getAvatarStyles","transform","zIndex","marginRight","index","roleToDisplay","count","smartCount","numberClassname","TabContents","tab","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","active","onSelect","onSelectTab","useBatchFetch","itemIds","getRequest","idBatches","setIdBatches","newBatches","find","batch","_id","join","dispatch","state","idBatch","request","shouldFetch","isFetching","responses","i","response","v","Object","keys","k","getAnalyticsRequestKey","baseKey","sharerId","userIdKey","Array","isArray","groupIdKey","AnalyticsRouteHelper","getObjectUrl","config","object","baseUrl","analyticsWebUrl","relativeUrl","mapColourToBsVariant","groupColour","SHARED_BY_ME_APP_LINK","application","SHARED_WITH_ME_APP_LINK","SharesHeader","currentAppLink","SharedByMeEmptyState","EmptyState","src","useInteractiveCopy","getStatusPhrase","share","ShareType","status","ShareLinkStatus","getBgColourClassName","ShareStatusIndicator","isPasswordProtected","getDateShared","dateCreated","datesShared","r","dateShared","date1","date2","DateHelper","getColumns","dateHeading","getObjectAppLink","getObjectActions","showStatus","showViewCount","breakpoints","isMobile","xs","sm","columns","Header","accessor","Cell","value","SharedObjectImage","showVideoMetadata","locationContext","minWidth","maxWidth","VideoHelper","canNavigate","VideoSubText","video","series","location","entity","ShareViewHelper","actionType","Text","namespace","phrase","s","statusColumn","viewCountColumn","splice","Boolean","SharedByMeTable","sentShares","sharedObjects","shareRecipients","groupByDate","dependencies","groupByDateShared","tableData","sharedObject","o","objectId","recipient","viewCount","ShareHelper","heading","Table","theme","PartialRow","PartialHeader","fullHeader","PartialSharedByMeTable","getShareActionOptions","entityType","args","params","SeeUsageAction","target","SharedByMeView","hasPermissions","usePermissions","hasInsights","useSettings","useBreakpoints","useSharesTable","showPartialLoading","nextCursor","hasMore","fetchNext","hasMyShares","PermissionName","replace","useSetPageMetadata","getSharedObjectActions","ConfigRequests","insightsPermission","showInsights","analyticsPhrase","canConsume","sharedObjectActions","objectUrl","useGetSharedObjectActions","InfiniteScrollFooter","ImageUrls","getDirectShares","getRecipientIds","d","getBatchFetchResultAsArray","result","values","interactiveInsights","fetch","UserRequests","cursor","ShareRequests","isFetchingSentShares","sharedObjectIds","sharedObjectsFetchResult","ids","recipientIds","shareRecipientsFetchResult","sentShare","hasFetchedSharedObjects","hasFetchedRecipients","initialSharedObjectsLoaded","setInitialSharedObjectsLoaded","initialRecipientsLoaded","setInitialRecipientsLoaded","usePartialLoading","filterKey","JSON","stringify","interactiveIds","reduce","acc","interactive","metadataId","interactivesPendingReview","I","interactives","filters"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9264],{66122:(e,t,a)=>{a.d(t,{A:()=>n});var r=a(32735);function n(e){return r.createElement("span",{id:"".concat(e.name,"Error"),className:"".concat(e.className," invalid-feedback d-block"),role:"status"},e.children)}},59536:(e,t,a)=>{a.d(t,{o:()=>f});var r=a(32735);function n(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];if(!t.length)return"";var r=t.filter((function(e){return!!e}));return r.length?r.join(" "):""}var l=a(2786),c=a(4594);const o="s6wnJ",i="UFQ2T",s="Tp9_3";function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,l,c,o=[],i=!0,s=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;i=!1}else for(;!(i=(r=l.call(a)).done)&&(o.push(r.value),o.length!==t);i=!0);}catch(e){s=!0,n=e}finally{try{if(!i&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(s)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?m(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}function d(e){switch(e){case c.E.Video:case c.E.Interactive:case c.E.Clip:return"y0V3Z";case c.E.Subject:case c.E.Playlist:return"x3h8F";case c.E.Series:return"Wrg5x";default:return""}}function f(e){return r.createElement("div",{className:"d-flex"},e.children)}var g={cover:s,full:"AlF2T"},h={base:"uQ2rm",full:""};f.NarrowContent=function(e){return r.createElement("div",{className:"".concat("INvJ0"," mx-auto w-100 ").concat(e.className?e.className:"")},e.children)},f.Left=function(e){return r.createElement("div",{className:"".concat(o," ").concat(e.className?e.className:"")},e.children)},f.LeftImage=function(e){var t=u(r.useState(!1),2),a=t[0],n=t[1],l=u(r.useState(""),2),c=l[0],m=l[1];return r.useEffect((function(){if(e.imageUrl){var t=new Image;return t.onload=function(){return n(!0)},t.src=e.imageUrl,function(){return t.onload=null}}var a=e.fallbackImages[Math.floor(Math.random()*e.fallbackImages.length)];m(a.bgUrl)}),[e.imageUrl]),r.createElement("div",{className:"".concat(o," ").concat(i," ").concat(s," bg-light"),style:{backgroundImage:"url('".concat(c,"')")}},a&&r.createElement(r.Fragment,null,r.createElement("div",{className:"Mtlg9",style:{backgroundImage:"url('".concat(e.imageUrl,"')")}}),r.createElement("div",{className:"".concat("NxEjh"," ").concat(d(e.objectType))},r.createElement("div",{className:"NN9cV"},r.createElement("img",{className:"PkJ8J",src:e.imageUrl,alt:e.title})))))},f.LeftImageWithBackground=function(e){var t={backgroundImage:'url("'.concat(e.imageUrl,'")')};return e.backgroundColor&&(t.backgroundColor=e.backgroundColor),r.createElement("div",{className:"".concat(o," ").concat(i," ").concat(g[e.imageSize||"cover"]," d-flex align-items-center"),style:t,title:e.title})},f.Right=function(e){return r.createElement("div",{className:"".concat("eoZzJ"," ").concat(e.className?e.className:"")},e.children)},f.Header=function(e){var t=(null==e?void 0:e.logoComponent)||l.$S;return r.createElement("div",{className:"position-relative"},r.createElement("div",{className:"".concat("YHNgA"," position-absolute")},r.createElement(t,null)),e.children)},f.Content=function(e){return r.createElement("div",{className:n("RVyLM","d-flex flex-column justify-content-center h-100",null==e?void 0:e.className)},e.children)},f.ContentBody=function(e){var t=h[e.width||"base"];return r.createElement("div",{className:n("aLd5V",t,"m-auto p-3",e.className)},e.children)},f.Buttons=function(e){return r.createElement("div",{className:n("position-fixed bg-white d-flex align-items-center","ZW85Q",null==e?void 0:e.className)},e.children)}},75608:(e,t,a)=>{a.d(t,{a:()=>f});var r=a(20354),n=a(30439),l=a(4594),c=a(21750),o=a(43012),i=a(20768),s=a(5112),u=a(60011),m=a(31949),d=a(1575);function f(e){var t=r.a.useBasicFetch(m.N.currentUser()),a=r.a.useBasicFetch(n.o.getShareObject(e)),f=function(){if(!a.data||!t.data)return null;switch(a.data.objectTypeId){case l.E.Video:return d.R.publicVideo(a.data.objectId,e);case l.E.Clip:return o.e.publicClip(a.data.objectId,e);case l.E.Interactive:return i.b.publicInteractiveMetadata(a.data.objectId,e);case l.E.Playlist:return s.C.getSharedPlaylist(a.data.objectId,e);case l.E.Subject:return c.x.classification(a.data.objectId,t.data.id);case l.E.Series:return u.J.sharedSeries(a.data.objectId,e)}}();return r.a.useBasicFetch(f).data}},69264:(e,t,a)=>{a.r(t),a.d(t,{PasswordProtectedShareLinkView:()=>S});var r=a(32735),n=a(70680),l=a(23481),c=a(57900),o=a(81886),i=a(20354),s=a(30439),u=a(64249),m=a(11607),d=a(66122),f=a(59536),g=a(2102),h=a(83914),b=a(83345),v=a(54610),E=a(67453),p=a(35223),y=a(83421),N=a(75608);const C={formContainer:"ByuHb",toggleEye:"t0aye",input:"uEjp5"};function I(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,l,c,o=[],i=!0,s=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;i=!1}else for(;!(i=(r=l.call(a)).done)&&(o.push(r.value),o.length!==t);i=!0);}catch(e){s=!0,n=e}finally{try{if(!i&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(s)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return U(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?U(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var k="share.passwordProtectedShareLink",w=l.T.encloseNamespace(k);function S(e){var t=I(r.useState(""),2),a=t[0],l=t[1],U=I(r.useState(!1),2),S=U[0],P=U[1],j=I(r.useState(!1),2),x=j[0],L=j[1],A=I(r.useState(""),2),O=A[0],T=A[1],B=(0,N.a)(e.shareId),_=(0,n.I0)();if(!B)return r.createElement(r.Fragment,null);var W=E.j.createUrl(u.I.getImageUrl(B),{size:v.h2.Large});return r.createElement(f.o,null,r.createElement(f.o.LeftImage,{title:B.name,imageUrl:W,objectType:B.typeId,fallbackImages:y.Hq}),r.createElement(f.o.Right,null,r.createElement(f.o.Header,null),r.createElement(f.o.Content,null,r.createElement(f.o.NarrowContent,null,r.createElement("p",{className:"h2"},r.createElement(b.x,{namespace:k,phrase:"info"})),r.createElement("form",{onSubmit:function(t){t.preventDefault(),a&&(P(!0),i.a.fetch(_,s.o.checkPassword(e.shareId,a,(function(t){if(t.success){c.qS.set(e.shareId,a);var r=o.Q.C$.getHref(e.appLink);o.Q.Ab.PageLoad(r)}else T(w("incorrectPasswordErrorMessage")),P(!1)}),(function(){T(w("ajaxErrorMessage")),P(!1)}))))},className:"position-relative"},r.createElement("div",{className:"form-group"},r.createElement("label",{className:"h6",htmlFor:"link-password"},r.createElement(b.x,{namespace:k,phrase:"prompt"})),r.createElement("div",{className:"position-relative"},r.createElement("input",{id:"link-password",type:x?"text":"password",className:"form-control form-control-lg ".concat(C.input," ").concat(O?"is-invalid":""),placeholder:w("placeholder"),onChange:function(e){return l(e.target.value)},value:a,autoComplete:"off","aria-errormessage":"linkPasswordError"}),r.createElement(m.L,{className:"btn ".concat(C.toggleEye),onClick:function(){return L((function(e){return!e}))}},r.createElement(h.x,{svgName:x?p.vn.VisibleOn:p.vn.VisibleOff}))),O&&r.createElement(d.A,{className:"mb-3",name:"linkPassword"},O)),r.createElement(g.m,{variant:"dark",showSpinner:S,type:"submit",className:"w-100 mt-3 btn-lg",disabled:S||!a},r.createElement(b.x,{namespace:k,phrase:"confirm"})))))))}},83421:(e,t,a)=>{a.d(t,{Hq:()=>m,Zf:()=>g});var r=a(32735),n=a(54610),l=a(4594),c=a(67453),o=a(99742);const i={left:"vIypY",leftTextImage:"YViNj",right:"MkD4u",blur:"X6mCh",imageContainer:"bc7kz",imagePosition:"JOhEj",image:"Ef2QR",thumbnail:"Gdurb",tallposter:"fjVNK",cover:"o3j31",linksContainer:"AT9Dk"};function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,l,c,o=[],i=!0,s=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;i=!1}else for(;!(i=(r=l.call(a)).done)&&(o.push(r.value),o.length!==t);i=!0);}catch(e){s=!0,n=e}finally{try{if(!i&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(s)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?u(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}var m=[{bgUrl:o.W.LaunchPad.BG_1},{bgUrl:o.W.LaunchPad.BG_2},{bgUrl:o.W.LaunchPad.BG_3},{bgUrl:o.W.LaunchPad.BG_4},{bgUrl:o.W.LaunchPad.BG_5}],d=[{bgUrl:o.W.LaunchPad.PRODUCT.BG_1},{bgUrl:o.W.LaunchPad.PRODUCT.BG_2},{bgUrl:o.W.LaunchPad.PRODUCT.BG_3},{bgUrl:o.W.LaunchPad.PRODUCT.BG_4},{bgUrl:o.W.LaunchPad.PRODUCT.BG_5},{bgUrl:o.W.LaunchPad.PRODUCT.BG_6},{bgUrl:o.W.LaunchPad.PRODUCT.BG_7},{bgUrl:o.W.LaunchPad.PRODUCT.BG_8},{bgUrl:o.W.LaunchPad.PRODUCT.BG_9}];function f(e){switch(e){case l.E.Video:case l.E.Interactive:case l.E.Clip:return i.thumbnail;case l.E.Subject:case l.E.Playlist:return i.cover;case l.E.Series:return i.tallposter;default:return""}}function g(e){var t,a=s(r.useState(!1),2),l=a[0],o=a[1],u=s(r.useState(""),2),m=u[0],g=u[1],h=c.j.createUrl(e.imageUrl,{size:n.h2.Large}),b=d;return r.useEffect((function(){if(!h&&b&&0!==b.length){var e,t=(e=b)[Math.floor(Math.random()*e.length)];t.bgUrl&&g(t.bgUrl)}}),[]),r.useEffect((function(){if(h){var e=new Image;return e.onload=function(){return o(!0)},e.src=h,function(){return e.onload=null}}}),[]),r.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():r.createElement("div",{className:"".concat(i.left," ").concat(m?"bg-blue d-flex align-items-center":"bg-light")},m?r.createElement("img",{className:"img-fluid",src:m,draggable:!1}):l&&r.createElement(r.Fragment,null,r.createElement("div",{className:i.blur,style:{backgroundImage:"url('".concat(h,"')")}}),r.createElement("div",{className:"".concat(i.imageContainer," ").concat(f(e.objectType))},r.createElement("div",{className:i.imagePosition},r.createElement("img",{className:i.image,src:h,alt:e.title}))))),r.createElement("div",{className:"".concat(i.right," bg-white d-flex flex-column")},r.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(i.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map((function(e,t){return e.hide?r.createElement(r.Fragment,{key:t}):r.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)}))),e.children))}}}]);
|
|
2
|
-
//# sourceMappingURL=9264-750b3d6ea0-lite.chunk.js.map
|