@clickview/lite 0.77.0-rc.2 → 0.77.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickview/lite",
3
- "version": "0.77.0-rc.2",
3
+ "version": "0.77.0-rc.3",
4
4
  "description": "ClickView Lite",
5
5
  "main": "dist/scripts/bundle.js",
6
6
  "types": "dist/projects/lite/src/index.d.ts",
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/218-e2f474ccb6-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/components/rostering/rostering-alert/RosteringAlert.tsx","file:///app/packages/libs/shared/src/enums/BatchJobStatus.ts","file:///app/packages/libs/shared/src/flight-requests/RosteringRequests.ts","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-header/classrooms-header.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-header/ClassroomsHeader.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/open-classrooms-table/OpenClassroomsTable.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/open-classrooms/OpenClassroomsView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/my-shares-demo-insights.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight.tsx","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["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';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'rostering.alert';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RosteringAlertProps {\n type?: 'classroom' | 'general';\n}\n\nexport function RosteringAlert(props: RosteringAlertProps) {\n const text = props.type === 'classroom' ? getPhrase('classroom') : getPhrase('hasRostering');\n\n return (\n <div className='alert text-info bg-light-blue px-2 rounded-3 fw-semibold py-2 d-flex flex-wrap'>\n {text}&nbsp;\n {/* todo add it back when KB article link is ready */}\n {/* <ExternalLink\n className='text-info text-underline'\n href={''}\n newTab\n >\n {LanguageService.getPhrase(namespace, 'learnMore')}\n </ExternalLink> */}\n </div>\n );\n}","export enum BatchJobStatus {\n Submitted = 0,\n Queued = 1,\n Pending = 2,\n InProgress = 3,\n Completed = 4,\n CompletedWithError = 5,\n Failed = 6\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { BatchJob, ScheduleSettingRequest } from 'libs/shared/interfaces';\nimport { CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const RosteringRequests = {\n getRostering(): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/rostering`,\n key: `rostering`\n };\n },\n\n getSyncList(queryParams: BulkJobsQueryParams): Flight.Request {\n const params: HashObject = {};\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.jobStatus) {\n const statuses = [];\n if (queryParams.jobStatus.includes('completed')) {\n statuses.push(...[ BatchJobStatus.Completed, BatchJobStatus.CompletedWithError ]);\n }\n if (queryParams.jobStatus.includes('failed')) {\n statuses.push(BatchJobStatus.Failed);\n }\n if (queryParams.jobStatus.includes('inProgress')) {\n statuses.push(...[\n BatchJobStatus.Submitted,\n BatchJobStatus.Queued,\n BatchJobStatus.Pending,\n BatchJobStatus.InProgress ]);\n }\n params.status = statuses;\n }\n\n params.type = BatchJobType.Rostering;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `rostering:sync:${queryParams.cursor}:${queryParams.sort}:${queryParams.jobStatus}`\n };\n },\n\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'rostering:sync',\n type: HttpVerbs.POST,\n invalidationKeys: ['rostering:sync'],\n data,\n success,\n error\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n },\n\n getSyncScheduleSettings(integrationId: string): Flight.SimulatedRequest {\n return {\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `sync-settings:${integrationId}`\n };\n },\n\n updateScheduleSetting(\n data: ScheduleSettingRequest,\n integrationId: string,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n type: HttpVerbs.PUT,\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `update:sync-settings:${data.customerId}:${integrationId}`,\n invalidationKeys: [`sync-settings:${integrationId}`],\n data,\n success,\n error,\n always\n };\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"searchContainer\":\"rwTB7\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ActionOptions, Actions as ActionButton } from 'libs/shared/components/actions/Actions';\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { RosteringAlert } from 'libs/shared/components/rostering/rostering-alert/RosteringAlert';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport styles from './classrooms-header.scss';\n\nconst namespace = 'classrooms.classroomsHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClassroomsHeaderProps {\n activeTab: 'overview' | 'classrooms' | 'open-classrooms';\n hideTabs?: boolean;\n actions?: ActionOptions[];\n searchBar?: React.ReactNode;\n hasRostering: boolean;\n hasShareFlowV2: boolean;\n}\n\nexport function ClassroomsHeader(props: ClassroomsHeaderProps): JSX.Element {\n const breakpoints = useBreakpoints();\n const isMobile = breakpoints.xs || breakpoints.sm;\n \n const tabs: PillTab[] = [];\n\n if (props.hasShareFlowV2) {\n tabs.push({\n name: getPhrase('overviewTab'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n },\n active: props.activeTab === 'overview'\n });\n \n tabs.push({\n name: getPhrase('classroomsTab'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.VIEW_ALL\n },\n active: props.activeTab === 'classrooms'\n });\n \n tabs.push({\n name: getPhrase('openClassroomsTab'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOMS\n },\n active: props.activeTab === 'open-classrooms'\n });\n }\n\n const hideTabs = props.hideTabs || tabs.length === 1;\n\n return (\n <div>\n {!!props.hasRostering && (\n <div className='my-3'>\n <RosteringAlert type='general' />\n </div>\n )}\n\n <div className='d-flex align-items-center mb-3'>\n <h1 className='flex-fill h2 me-3 my-1'><Text namespace={namespace} phrase='heading' /></h1>\n\n <div className='d-flex'>\n {props.searchBar && !isMobile && (\n <div className={`${styles.searchContainer} d-flex mb-2 mb-sm-0 me-2`}>\n {props.searchBar}\n </div>\n )}\n\n <ActionButton\n actions={props.actions ?? []}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n </div>\n\n {!hideTabs && (\n <div className='mb-3'>\n <PillTabSelector tabs={tabs} />\n </div>\n )}\n\n {isMobile && props.searchBar ? (\n <div className='mb-3'>\n {props.searchBar}\n </div>\n ) : null}\n </div>\n );\n}","import React from 'react';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { YearGroup } from 'libs/shared/interfaces';\n\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\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 { getShareObjectActions, getSharesParams } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\ninterface OpenClassroomsTableProps {\n shareData: ReturnType<typeof useSharesTable>;\n hasShareFlowV2: boolean;\n hasPermissions: HasPermissionsFunc;\n breakpoints: Breakpoints;\n isPlugin: boolean;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n hasDemoInsight?: boolean;\n\n emptyState?: () => JSX.Element;\n loadingState?: () => JSX.Element;\n\n className?: string;\n loading?: boolean;\n}\n\nexport function OpenClassroomsTable(props: OpenClassroomsTableProps) {\n const hasInsightsPermission = props.hasShareFlowV2 && props.hasPermissions(PermissionName.ViewInsights);\n const sharesParams = getSharesParams([]);\n\n const LoadingComponent = props.loadingState ?? PartialMySharesTable;\n const EmptyStateComponent = props.emptyState ?? MySharesTableEmptyState;\n \n if (props.loading || props.shareData.showPartialLoading)\n return <LoadingComponent />;\n\n if (!props.shareData.sentShares.length)\n return <EmptyStateComponent />;\n\n return (\n <div className={props.className}>\n <MySharesTable\n sentShares={props.shareData.sentShares}\n sharedObjects={props.shareData.sharedObjects.items}\n shareRecipients={props.shareData.shareRecipients.items}\n interactivesPendingReview={props.shareData.interactivesPendingReview.itemsArr}\n getObjectActions={row => getShareObjectActions({\n share: row.share,\n sharedObject: row.sharedObject,\n audienceParams: sharesParams.audienceAppLinkParams,\n hasInsights: hasInsightsPermission,\n isPlugin: props.isPlugin,\n breakpoints: props.breakpoints\n })}\n groupByDateShared\n breakpoints={props.breakpoints}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n hasDemoInsights={props.hasDemoInsight}\n />\n {(props.shareData.hasMore || props.shareData.isFetching) &&\n <InfiniteScrollFooter\n isFetching={props.shareData.isFetching}\n fetchNext={props.shareData.fetchNext}\n nextCursor={props.shareData.nextCursor}\n />\n }\n </div>\n );\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, RosteringResponse, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useClassroomExperience } from 'shared/hooks/useClassroomExperience';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { ClassroomsHeader } from 'apps/classrooms/components/classrooms-header/ClassroomsHeader';\nimport { OpenClassroomsTable } from 'apps/classrooms/components/open-classrooms-table/OpenClassroomsTable';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\n\nconst namespace = 'classrooms.openClassrooms';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function OpenClassroomsView(): JSX.Element {\n const breakpoints = useBreakpoints();\n const { hasPermissions } = usePermissions();\n const { hasShareFlowV2 } = useSettings(null);\n const { isPlugin } = usePluginHelper();\n const { experience, loading } = useClassroomExperience();\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch: hasShareFlowV2,\n params: {\n type: [ShareType.Open]\n }\n });\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n if (!loading && experience === 'minimal') {\n AppLinkHelper.trigger({\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n });\n return <></>;\n }\n\n const loaded = !!config.data\n && !!demoInteractive.data\n && !!yearGroups.data\n && !!rostering.hasCompleted\n && !loading;\n\n return (\n <div className='px-3'>\n <ClassroomsHeader\n actions={[]}\n activeTab='open-classrooms'\n hasRostering={hasRostering}\n hasShareFlowV2={hasShareFlowV2}\n />\n\n <OpenClassroomsTable\n loading={!loaded}\n shareData={shareData}\n hasShareFlowV2={hasShareFlowV2}\n hasPermissions={hasPermissions}\n breakpoints={breakpoints}\n isPlugin={isPlugin}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n emptyState={() => (\n <MySharesDemoInsight\n heading={getPhrase('demoHeading')}\n demoInteractive={demoInteractive.data}\n liteUrl={config.data?.liteUrl}\n breakpoints={breakpoints}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n shareType={ShareType.Open}\n />\n )}\n />\n \n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"background\":\"HAuP3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_ACTION, DEMO_INSIGHTS_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA, DEMO_INSIGHTS_SHARE_TABLE_DATA } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nimport { MySharesTableData } from '../my-shares-table/MySharesTableUtils';\n\nimport styles from './my-shares-demo-insights.scss';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n liteUrl: string;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n breakpoints: Breakpoints;\n className?: string;\n heading?: string;\n shareType?: ShareType;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isStaging = props.liteUrl.includes('staging');\n\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n const appLink = props.shareType === ShareType.Open ? DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK : DEMO_INSIGHTS_APPLINK;\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: isStaging ? DEMO_INTERACTIVE_STAGING_ID : DEMO_INTERACTIVE_PROD_ID\n };\n }\n\n function getObjectActions() {\n return [\n {\n ...DEMO_INSIGHTS_ACTION,\n button: !isMobile,\n appLink\n }\n ];\n }\n\n const demoShareTableData = props.shareType === ShareType.Open\n ? DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA\n : DEMO_INSIGHTS_SHARE_TABLE_DATA;\n\n const shareData: MySharesTableData = {\n ...demoShareTableData,\n sharedObject: getDemoInteractive()\n };\n\n return (\n <div className={props.className}>\n <MySharesTableHeading heading={props.heading ?? getPhrase('demoHeading')} isFirst={true} />\n\n <div className={`${styles.background} rounded-3 mb-4`}>\n <MySharesTableRow\n shareData={shareData}\n getObjectActions={getObjectActions}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n breakpoints={props.breakpoints}\n className='bg-light-orange'\n appLink={(() => appLink)}\n />\n </div>\n </div>\n );\n}","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["TabContents","props","tab","svgName","className","name","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","map","index","active","key","appLink","analyticsData","analyticsOptions","onClick","onSelect","onSelectTab","defaultProps","getPhrase","RosteringAlert","text","BatchJobStatus","RosteringRequests","getRostering","url","getSyncList","queryParams","params","cursor","sort","order","jobStatus","statuses","includes","push","status","createJob","success","error","invalidationKeys","getJobSummary","id","getSyncScheduleSettings","integrationId","updateScheduleSetting","always","customerId","namespace","LanguageService","ClassroomsHeader","breakpoints","useBreakpoints","isMobile","xs","sm","hasShareFlowV2","application","action","activeTab","hideTabs","length","hasRostering","Text","phrase","searchBar","actions","actionsDropdownClassName","OpenClassroomsTable","hasInsightsPermission","hasPermissions","sharesParams","LoadingComponent","loadingState","EmptyStateComponent","emptyState","loading","shareData","showPartialLoading","sentShares","sharedObjects","items","shareRecipients","interactivesPendingReview","itemsArr","getObjectActions","row","share","sharedObject","audienceParams","audienceAppLinkParams","hasInsights","isPlugin","groupByDateShared","imageCdnUrl","yearGroups","hasDemoInsights","hasDemoInsight","hasMore","isFetching","fetchNext","nextCursor","OpenClassroomsView","experience","currentUser","config","rostering","isAuthenticated","demoInteractive","interactiveInsights","shouldFetch","title","loaded","hasCompleted","heading","liteUrl","shareType","MySharesDemoInsight","isStaging","ShareType","demoShareTableData","isFirst","MySharesTableRow","button","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4598],{18006:(e,a,t)=>{t.d(a,{c:()=>r,q:()=>n});var r="D8qRe7",n="GRWx6w"},44183:(e,a,t)=>{t.r(a),t.d(a,{InsightsHeatmapDemoView:()=>B});var r=t(32735),n=t(23481),i=t(2948),s=t(20354),l=t(26025),c=t(2510),d=t(60051),u=t(39151),o=t(54405),v=t(47812),g=t(31949),p=t(93322),f=t(79612),m=t(86702),h=t(9540),y=t(17132),b=t(18006),w=t(9566),k=t(10447);function A(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t<a;t++)r[t]=e[t];return r}var j=n.T.encloseNamespace("shared.insightsHeatmap");function B(e){var a,t,n,B,O,S,F,E=(S=(0,i.D)(m.y.ANONYMISE_USERS),F=1,function(e){if(Array.isArray(e))return e}(S)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,n,i,s,l=[],c=!0,d=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=i.call(t)).done)&&(l.push(r.value),l.length!==a);c=!0);}catch(e){d=!0,n=e}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(d)throw n}}return l}}(S,F)||function(e,a){if(e){if("string"==typeof e)return A(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?A(e,a):void 0}}(S,F)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,p.F)();var D=s.a.useBasicFetch(g.N.currentUser()),R=s.a.useBasicFetch(o.X.interactiveMetadata()),I=s.a.useBasicFetch(u.L.config()),L=l.B.getAudienceAppLinkParams(),_=l.B.getDateRangeAppLinkParams(),q=s.a.useBasicFetch(o.X.aggregateHeatmap()),G=s.a.useBasicFetch(o.X.individualHeatmap()),N=s.a.useBasicFetch(o.X.users()),U=s.a.useBasicFetch(o.X.videoViews()),X=s.a.useBasicFetch(R.data&&v.k.createViewKey(function(){var e;return(null===(e=I.data)||void 0===e?void 0:e.liteUrl.includes("staging"))?b.c:b.q}(),d.f.Share));(0,f.M)({title:R.data?j("pageTitle",{video:null===(a=R.data)||void 0===a?void 0:a.name}):null});var C=!!(D.data&&U.data&&R.data&&q.data&&X.data&&N.data),H=!!G.data,M=Object.assign(Object.assign({},L),_),x=e.type===c.y.Open?w._w:w.G6;return r.createElement("div",{className:"px-3"},r.createElement(h.j,{video:R.data,tabs:(0,k.aq)(null===(t=R.data)||void 0===t?void 0:t.id,"heatmap",M,e.type),dateRangeAppLinkParams:_,share:Object.assign(Object.assign({},x),{objectId:null===(n=R.data)||void 0===n?void 0:n.id}),yearGroups:[],markingRequired:e.type!==c.y.Open,isDemo:!0}),r.createElement(y.w,{aggregateEngagement:q.data,individualEngagement:null===(B=G.data)||void 0===B?void 0:B.data,yearGroups:null===(O=U.data)||void 0===O?void 0:O.yearGroupCount,config:I.data,users:N.data,viewKey:X.data,hasDataLoaded:C,tableDataLoaded:H,anonymiseUsers:E,hideStaffResults:!1}))}}}]);
2
- //# sourceMappingURL=4598-6981d30244-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/4598-6981d30244-lite.chunk.js","mappings":"4IAAO,IAAMA,EAA8B,SAC9BC,EAA2B,Q,uXC0BxC,IACMC,EAAY,qBADA,0BAOZ,SAAUC,EAAwBC,G,kBAC/BC,G,GAAkB,OAAsB,qB,EAA8B,E,o4BAAxD,IAErB,SAEA,IAAMC,EAAc,kBAAkC,mBAChDC,EAAQ,kBACZ,2BAGIC,EAAS,kBAA6B,cAEtCC,EAAwB,+BACxBC,EAAyB,gCAEzBC,EAAsB,kBAC1B,wBAGIC,EAAuB,kBAC3B,yBAGIC,EAAQ,kBAAiC,aAEzCC,EAAa,kBAA6C,kBAE1DC,EAAU,kBAAoCR,EAAMS,MACxD,kBAmBF,W,MACE,OAAe,QAAX,EAAAR,EAAOQ,YAAI,eAAEC,QAAQC,SAAS,YAAmB,IAE9C,GACT,CAvB+BC,GAAwB,aAEvD,OAAmB,CAAEC,MAAOb,EAAMS,KAAOd,EAAU,YAAa,CAAEK,MAAiB,QAAV,EAAAA,EAAMS,YAAI,eAAEK,OAAU,OAE/F,IAAMC,KACFhB,EAAYU,MACZF,EAAWE,MACXT,EAAMS,MACNL,EAAoBK,MACpBD,EAAQC,MACRH,EAAMG,MAEJO,IAAoBX,EAAqBI,KAEzCQ,EAAS,OAAH,wBACPf,GACAC,GASCe,EAAQrB,EAAMsB,OAAS,SAAiB,KAAqC,KAEnF,OACE,uBAAKC,UAAU,QACb,gBAAC,IAAc,CACbpB,MAAOA,EAAMS,KACbY,MAAM,QAAyC,QAAV,EAAArB,EAAMS,YAAI,eAAEa,GAAI,UAAWL,EAAQpB,EAAMsB,MAC9EhB,uBAAwBA,EACxBe,MAAK,+BACAA,GAAK,CACRK,SAAoB,QAAV,EAAAvB,EAAMS,YAAI,eAAEa,KAExBE,WAAY,GACZC,gBAAiB5B,EAAMsB,OAAS,SAChCO,QAAM,IAGR,gBAAC,IAAe,CACdtB,oBAAqBA,EAAoBK,KACzCJ,qBAA+C,QAAzB,EAAAA,EAAqBI,YAAI,eAAEA,KACjDe,WAA2B,QAAf,EAAAjB,EAAWE,YAAI,eAAEkB,eAC7B1B,OAAQA,EAAOQ,KACfH,MAAOA,EAAMG,KACbD,QAASA,EAAQC,KACjBM,cAAeA,EACfC,gBAAiBA,EACjBlB,eAAgBA,EAChB8B,kBAAkB,IAI1B,C","sources":["file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/demo/heatmap/InsightsHeatmapDemoView.tsx"],"sourcesContent":["export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Engagement, IndividualEngagementResponse, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InsightsHeatmap } from 'apps/my-shares/components/insights-heatmap/InsightsHeatmap';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE, DEMO_INSIGHTS_SHARE } from 'apps/my-shares/constants/MySharesDemoInsights';\nimport { getInsightsDemoInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.insightsHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightsHeatmapDemoViewProps {\n type?: ShareType;\n}\n\nexport function InsightsHeatmapDemoView(props: InsightsHeatmapDemoViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n InsightsDemoRequests.aggregateHeatmap()\n );\n\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(\n InsightsDemoRequests.individualHeatmap()\n );\n\n const users = Flight.useBasicFetch<AnonUser[]>(InsightsDemoRequests.users());\n\n const videoViews = Flight.useBasicFetch<VideoViewEventResponse>(InsightsDemoRequests.videoViews());\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(video.data &&\n PlayerRequests.createViewKey(getDemoInteractiveId(), MediaIdType.Share));\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n\n const hasDataLoaded =\n !!currentUser.data &&\n !!videoViews.data &&\n !!video.data &&\n !!aggregateEngagement.data &&\n !!viewKey.data &&\n !!users.data;\n\n const tableDataLoaded = !!individualEngagement.data;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n function getDemoInteractiveId() {\n if (config.data?.liteUrl.includes('staging')) return DEMO_INTERACTIVE_STAGING_ID;\n\n return DEMO_INTERACTIVE_PROD_ID;\n }\n\n const share = props.type === ShareType.Open ? DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE : DEMO_INSIGHTS_SHARE;\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data}\n tabs={getInsightsDemoInteractiveTabs(video.data?.id, 'heatmap', params, props.type)}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n share={{\n ...share,\n objectId: video.data?.id\n }}\n yearGroups={[]}\n markingRequired={props.type !== ShareType.Open}\n isDemo\n />\n\n <InsightsHeatmap\n aggregateEngagement={aggregateEngagement.data}\n individualEngagement={individualEngagement.data?.data}\n yearGroups={videoViews.data?.yearGroupCount}\n config={config.data}\n users={users.data}\n viewKey={viewKey.data}\n hasDataLoaded={hasDataLoaded}\n tableDataLoaded={tableDataLoaded}\n anonymiseUsers={anonymiseUsers}\n hideStaffResults={false}\n />\n </div>\n );\n}"],"names":["DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID","getPhrase","InsightsHeatmapDemoView","props","anonymiseUsers","currentUser","video","config","audienceAppLinkParams","dateRangeAppLinkParams","aggregateEngagement","individualEngagement","users","videoViews","viewKey","data","liteUrl","includes","getDemoInteractiveId","title","name","hasDataLoaded","tableDataLoaded","params","share","type","className","tabs","id","objectId","yearGroups","markingRequired","isDemo","yearGroupCount","hideStaffResults"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7617],{99746:(e,a,t)=>{t.d(a,{p:()=>p});var n=t(32735),r=t(57900),i=t(97395),s=t(2948),c=t(91693),l=t(83345),o=t(4594),m=t(35223),u=t(86702);function d(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var h="lite.insightsAdminAlert";function p(e){var a,t,p=(a=(0,s.D)(u.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),t=2,function(e){if(Array.isArray(e))return e}(a)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,s,c=[],l=!0,o=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;l=!1}else for(;!(l=(n=i.call(t)).done)&&(c.push(n.value),c.length!==a);l=!0);}catch(e){o=!0,r=e}finally{try{if(!l&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(o)throw r}}return c}}(a,t)||function(e,a){if(e){if("string"==typeof e)return d(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?d(e,a):void 0}}(a,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.")}()),g=p[0],v=p[1];return e.hasAnalytics&&g?n.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},n.createElement("div",null,n.createElement(l.x,{namespace:h,phrase:"adminAlert"}),n.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var a="";return e.video.typeId===o.E.Interactive&&(a="/interactives/".concat(e.video.id,"/views")),e.video.typeId===o.E.Video&&(a="/videos/".concat(e.video.id,"/views")),e.video.typeId===o.E.Clip&&(a="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,a)}(),target:"_blank"},n.createElement(l.x,{namespace:h,phrase:"analytics"})),"."),n.createElement(c.h,{svgName:m.vn.Close,className:"text-blue",onClick:function(){v(!1)}})):n.createElement(n.Fragment,null)}},22767:(e,a,t)=>{t.d(a,{l:()=>u});var n=t(32735),r=t(23481),i=t(2510),s=t(55219),c=t(18006),l=t(9566);const o={background:"HAuP3"};var m=r.T.encloseNamespace("myShares.demoInsights");function u(e){var a,t=e.liteUrl.includes("staging"),r=e.breakpoints.xs||e.breakpoints.sm,u=e.shareType===i.y.Open?l.po:l.vJ,d=e.shareType===i.y.Open?l.$Z:l.GJ,h=Object.assign(Object.assign({},d),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?c.c:c.q})});return n.createElement("div",{className:e.className},n.createElement(s.g,{heading:null!==(a=e.heading)&&void 0!==a?a:m("demoHeading"),isFirst:!0}),n.createElement("div",{className:"".concat(o.background," rounded-3 mb-4")},n.createElement(s.F,{shareData:h,getObjectActions:function(){return[Object.assign(Object.assign({},l.VE),{button:!r,appLink:u})]},imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,breakpoints:e.breakpoints,className:"bg-light-orange",appLink:function(){return u}})))}},18006:(e,a,t)=>{t.d(a,{c:()=>n,q:()=>r});var n="D8qRe7",r="GRWx6w"},49243:(e,a,t)=>{t.r(a),t.d(a,{MySharesView:()=>V});var n=t(32735),r=t(81886),i=t(23481),s=t(20354),c=t(2510),l=t(15611),o=t(87801),m=t(83345),u=t(16714),d=t(39151),h=t(1666),p=t(54405),g=t(31949),v=t(25882),y=t(79967),b=t(22902),f=t(79612),E=t(37802),S=t(14070),k=t(97291),C=t(46390),I=t(99998),w=t(98623),O=t(99746),A=t(22767),N=t(67467),x=t(5056),L=t(28001),U=t(65858),j=t(97958),P=t(99742),F="myShares.mySharesEmptyState",M=i.T.encloseNamespace(F);function T(){return n.createElement(j.u,null,n.createElement(j.u.Image,{src:P.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:M("heading")}),n.createElement(j.u.Heading,null,n.createElement(m.x,{namespace:F,phrase:"heading"})),n.createElement(j.u.Info,null,n.createElement(m.x,{namespace:F,phrase:"info"})),n.createElement(j.u.Cta,{text:i.T.getPhrase(F,"cta"),appLink:{application:k.O.SIGN_UP,action:S.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:U.Vw.Click,location:U.LZ.MySharesLanding,entity:U.py.AppLink,workflowPhase:U.eu.Start,descriptor:U.Yu.SignUp}}))}var _=t(69003),D="myShares.myShares",G=i.T.encloseNamespace(D);function V(e){var a,t,i,U;(0,f.M)({title:G("myShares")});var j=(0,b.T)(),P=j.hasPermissions,F=j.hasLocalPermissions,M=(0,E.r)(null),V=M.hasShareFlowV2,R=M.hasClassrooms,B=(0,C.G)().isPlugin,H=(0,y.k)(),q=(0,v.v)().accessPolicy,W=(0,I.R)().experience,Z=(0,_.cl)(e.typeId),J=!F(u.E.ViewMySharesLanding)||P(u.C.ViewMyShares)&&V,Y=V&&P(u.C.ViewInsights),$=(null===(a=null==q?void 0:q.metadata)||void 0===a?void 0:a.hasDemoInsights)||"minimal"===W,Q=s.a.useBasicFetch(d.L.config()),X=s.a.useBasicFetch(g.N.currentUser()),z=s.a.useBasicFetch((null===(t=X.data)||void 0===t?void 0:t.isAuthenticated)&&h.h.yearGroups(X.data.customerId)),K=s.a.useBasicFetch($&&p.X.interactiveMetadata()),ee=(0,w.a)({interactiveInsights:!0,shouldFetch:J,params:{type:[c.y.Link,c.y.LegacyDirect]}});return n.useEffect(function(){P(u.C.ViewMyShares)&&V||r.Q.Ab.PageLoad("/")},[J]),J?n.createElement("div",{className:"px-3"},n.createElement(O.p,{analyticsUrl:null===(i=Q.data)||void 0===i?void 0:i.analyticsWebUrl,hasAnalytics:P(u.C.ViewCustomerAnalytics)}),n.createElement("div",{className:"border-bottom pb-2 mb-4"},n.createElement("h1",{className:"mb-2"},n.createElement(m.x,{namespace:D,phrase:"myShares"})),R&&n.createElement("p",{className:"mb-0"},n.createElement(m.x,{namespace:D,phrase:"classroomsHint"})," ",n.createElement(l.F,{appLink:{application:k.O.CLASSROOMS,action:S.e.Classrooms.HOME},className:"info-link"},n.createElement(m.x,{namespace:D,phrase:"classroomsCta"})))),$&&K.data&&n.createElement(A.l,{demoInteractive:K.data,liteUrl:null===(U=Q.data)||void 0===U?void 0:U.liteUrl,breakpoints:H,imageCdnUrl:ee.imageCdnUrl,yearGroups:z.data,shareType:c.y.Link}),function(){var e;return ee.showPartialLoading?n.createElement(L.L,null):ee.sentShares.length?n.createElement(n.Fragment,null,n.createElement(x.R,{sentShares:ee.sentShares,sharedObjects:ee.sharedObjects.items,shareRecipients:ee.shareRecipients.items,interactivesPendingReview:ee.interactivesPendingReview.itemsArr,getObjectActions:function(e){return(0,_.sD)({share:e.share,sharedObject:e.sharedObject,audienceParams:Z.audienceAppLinkParams,hasInsights:Y,isPlugin:B,breakpoints:H})},groupByDateShared:!0,breakpoints:H,hasDemoInsights:$,imageCdnUrl:null===(e=Q.data)||void 0===e?void 0:e.imageCdnUrl,yearGroups:z.data}),(ee.hasMore||ee.isFetching)&&n.createElement(o._,{isFetching:ee.isFetching,fetchNext:ee.fetchNext,nextCursor:ee.nextCursor})):n.createElement(N.o,null)}()):n.createElement(T,null)}}}]);
2
- //# sourceMappingURL=7617-c37f3c1ab8-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/7617-c37f3c1ab8-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/my-shares/components/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/my-shares-demo-insights.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight.tsx","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/empty-state/MySharesEmptyState.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"background\":\"HAuP3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_ACTION, DEMO_INSIGHTS_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA, DEMO_INSIGHTS_SHARE_TABLE_DATA } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nimport { MySharesTableData } from '../my-shares-table/MySharesTableUtils';\n\nimport styles from './my-shares-demo-insights.scss';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n liteUrl: string;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n breakpoints: Breakpoints;\n className?: string;\n heading?: string;\n shareType?: ShareType;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isStaging = props.liteUrl.includes('staging');\n\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n const appLink = props.shareType === ShareType.Open ? DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK : DEMO_INSIGHTS_APPLINK;\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: isStaging ? DEMO_INTERACTIVE_STAGING_ID : DEMO_INTERACTIVE_PROD_ID\n };\n }\n\n function getObjectActions() {\n return [\n {\n ...DEMO_INSIGHTS_ACTION,\n button: !isMobile,\n appLink\n }\n ];\n }\n\n const demoShareTableData = props.shareType === ShareType.Open\n ? DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA\n : DEMO_INSIGHTS_SHARE_TABLE_DATA;\n\n const shareData: MySharesTableData = {\n ...demoShareTableData,\n sharedObject: getDemoInteractive()\n };\n\n return (\n <div className={props.className}>\n <MySharesTableHeading heading={props.heading ?? getPhrase('demoHeading')} isFirst={true} />\n\n <div className={`${styles.background} rounded-3 mb-4`}>\n <MySharesTableRow\n shareData={shareData}\n getObjectActions={getObjectActions}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n breakpoints={props.breakpoints}\n className='bg-light-orange'\n appLink={(() => appLink)}\n />\n </div>\n </div>\n );\n}","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myShares.mySharesEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function MySharesEmptyState() {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.MY_VIDEOS_PUBLIC} altText={getPhrase('heading')} />\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.MySharesLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAccessPolicy } from 'libs/shared/hooks/useAccessPolicy';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useClassroomExperience } from 'shared/hooks/useClassroomExperience';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { InsightsAdminAlert } from 'apps/my-shares/components/insights-admin-alert/InsightsAdminAlert';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\nimport { MySharesTableEmptyState } from 'apps/my-shares/components/my-shares-table/empty-state/MySharesTableEmptyState';\nimport { MySharesTable } from 'apps/my-shares/components/my-shares-table/MySharesTable';\nimport { PartialMySharesTable } from 'apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable';\nimport { MySharesEmptyState } from 'apps/my-shares/views/my-shares/empty-state/MySharesEmptyState';\nimport { getShareObjectActions, getSharesParams } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesViewProps {\n typeId: string | string[];\n}\n\nexport function MySharesView(props: MySharesViewProps) {\n // Shared hooks\n useSetPageMetadata({ title: getPhrase('myShares') });\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasShareFlowV2, hasClassrooms } = useSettings(null);\n const { isPlugin } = usePluginHelper();\n const breakpoints = useBreakpoints();\n const { accessPolicy } = useAccessPolicy();\n const { experience } = useClassroomExperience();\n\n const sharesParams = getSharesParams(props.typeId);\n\n // Local variables\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMySharesLanding) ||\n hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2;\n const hasInsightsPermission = hasShareFlowV2 && hasPermissions(PermissionName.ViewInsights);\n const showDemoInsight = accessPolicy?.metadata?.hasDemoInsights || experience === 'minimal';\n\n // Flight fetching\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(showDemoInsight &&\n InsightsDemoRequests.interactiveMetadata());\n\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch,\n params: {\n type: [ ShareType.Link, ShareType.LegacyDirect ]\n }\n });\n\n React.useEffect(() => {\n if (!(hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2))\n Core.LocationUtils.PageLoad('/');\n }, [shouldFetch]);\n\n if (!shouldFetch)\n return <MySharesEmptyState />;\n\n return (\n <div className='px-3'>\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n />\n\n <div className='border-bottom pb-2 mb-4'>\n <h1 className='mb-2'><Text namespace={namespace} phrase='myShares' /></h1>\n {hasClassrooms && (\n <p className='mb-0'>\n <Text namespace={namespace} phrase='classroomsHint'/>\n &nbsp;\n <AppLink\n appLink={{ application: AppChannels.CLASSROOMS, action: Actions.Classrooms.HOME }}\n className='info-link'\n >\n <Text namespace={namespace} phrase='classroomsCta'/>\n </AppLink>\n </p>\n )}\n </div>\n\n {showDemoInsight && demoInteractive.data &&\n <MySharesDemoInsight\n demoInteractive={demoInteractive.data}\n liteUrl={config.data?.liteUrl}\n breakpoints={breakpoints}\n imageCdnUrl={shareData.imageCdnUrl}\n yearGroups={yearGroups.data}\n shareType={ShareType.Link}\n />\n }\n\n {(() => {\n if (shareData.showPartialLoading)\n return <PartialMySharesTable />;\n\n if (!shareData.sentShares.length)\n return <MySharesTableEmptyState />;\n\n return (\n <>\n <MySharesTable\n sentShares={shareData.sentShares}\n sharedObjects={shareData.sharedObjects.items}\n shareRecipients={shareData.shareRecipients.items}\n interactivesPendingReview={shareData.interactivesPendingReview.itemsArr}\n getObjectActions={row => getShareObjectActions({\n share: row.share,\n sharedObject: row.sharedObject,\n audienceParams: sharesParams.audienceAppLinkParams,\n hasInsights: hasInsightsPermission,\n isPlugin,\n breakpoints\n })}\n groupByDateShared\n breakpoints={breakpoints}\n hasDemoInsights={showDemoInsight}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n />\n {(shareData.hasMore || shareData.isFetching) &&\n <InfiniteScrollFooter\n isFetching={shareData.isFetching}\n fetchNext={shareData.fetchNext}\n nextCursor={shareData.nextCursor}\n />\n }\n </>\n );\n })()}\n </div>\n );\n}\n"],"names":["namespace","InsightsAdminAlert","props","storage","show","setShow","hasAnalytics","role","className","phrase","href","video","analyticsUrl","videoRoute","typeId","id","getAnalyticsUrl","target","svgName","onClick","getPhrase","LanguageService","MySharesDemoInsight","isStaging","liteUrl","includes","isMobile","breakpoints","xs","sm","shareType","ShareType","demoShareTableData","shareData","sharedObject","demoInteractive","heading","isFirst","MySharesTableRow","getObjectActions","button","appLink","imageCdnUrl","yearGroups","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID","MySharesEmptyState","EmptyState","src","ImageUrls","altText","Text","text","application","action","analyticsData","analyticsOptions","actionType","location","entity","workflowPhase","descriptor","SignUp","MySharesView","useSetPageMetadata","title","usePermissions","hasPermissions","hasLocalPermissions","useSettings","hasShareFlowV2","hasClassrooms","isPlugin","usePluginHelper","useBreakpoints","accessPolicy","useAccessPolicy","experience","useClassroomExperience","sharesParams","shouldFetch","PermissionName","hasInsightsPermission","showDemoInsight","metadata","hasDemoInsights","config","ConfigRequests","currentUser","UserRequests","data","isAuthenticated","CustomerRequests","customerId","InsightsDemoRequests","useSharesTable","interactiveInsights","params","type","analyticsWebUrl","AppLink","showPartialLoading","PartialMySharesTable","sentShares","length","MySharesTable","sharedObjects","items","shareRecipients","interactivesPendingReview","itemsArr","row","share","audienceParams","audienceAppLinkParams","hasInsights","groupByDateShared","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","MySharesTableEmptyState"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/7843-528e9d766e-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/classrooms/components/open-classrooms-table/OpenClassroomsTable.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-label/ClassroomLabel.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/pinned-classrooms-tiles/empty-state/EmptyPinnedClassroomsTiles.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/pinned-classrooms-tiles/pinned-classrooms-tiles.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/pinned-classrooms-tiles/partial-loading/PartialPinnedClassroomsTiles.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/pinned-classrooms-tiles/PinnedClassroomsTiles.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/classrooms-overview/ClassroomsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/minimal-classrooms-experience/MinimalClassroomsExperienceView.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/classrooms/ClassroomsView.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/my-shares-demo-insights.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight.tsx","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts"],"sourcesContent":["import React from 'react';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { YearGroup } from 'libs/shared/interfaces';\n\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\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 { getShareObjectActions, getSharesParams } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\ninterface OpenClassroomsTableProps {\n shareData: ReturnType<typeof useSharesTable>;\n hasShareFlowV2: boolean;\n hasPermissions: HasPermissionsFunc;\n breakpoints: Breakpoints;\n isPlugin: boolean;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n hasDemoInsight?: boolean;\n\n emptyState?: () => JSX.Element;\n loadingState?: () => JSX.Element;\n\n className?: string;\n loading?: boolean;\n}\n\nexport function OpenClassroomsTable(props: OpenClassroomsTableProps) {\n const hasInsightsPermission = props.hasShareFlowV2 && props.hasPermissions(PermissionName.ViewInsights);\n const sharesParams = getSharesParams([]);\n\n const LoadingComponent = props.loadingState ?? PartialMySharesTable;\n const EmptyStateComponent = props.emptyState ?? MySharesTableEmptyState;\n \n if (props.loading || props.shareData.showPartialLoading)\n return <LoadingComponent />;\n\n if (!props.shareData.sentShares.length)\n return <EmptyStateComponent />;\n\n return (\n <div className={props.className}>\n <MySharesTable\n sentShares={props.shareData.sentShares}\n sharedObjects={props.shareData.sharedObjects.items}\n shareRecipients={props.shareData.shareRecipients.items}\n interactivesPendingReview={props.shareData.interactivesPendingReview.itemsArr}\n getObjectActions={row => getShareObjectActions({\n share: row.share,\n sharedObject: row.sharedObject,\n audienceParams: sharesParams.audienceAppLinkParams,\n hasInsights: hasInsightsPermission,\n isPlugin: props.isPlugin,\n breakpoints: props.breakpoints\n })}\n groupByDateShared\n breakpoints={props.breakpoints}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n hasDemoInsights={props.hasDemoInsight}\n />\n {(props.shareData.hasMore || props.shareData.isFetching) &&\n <InfiniteScrollFooter\n isFetching={props.shareData.isFetching}\n fetchNext={props.shareData.fetchNext}\n nextCursor={props.shareData.nextCursor}\n />\n }\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'classrooms.classroomLabel';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport type ClassroomLabelType = 'my-school-classrooms' | 'favourite-classroom' | 'open-classroom';\n\ninterface ClassroomLabelProps {\n type: ClassroomLabelType;\n className?: string;\n text?: string;\n}\n\nconst TypePhraseMap: {[key in ClassroomLabelType]: string} = {\n 'my-school-classrooms': 'mySchoolClassrooms',\n 'favourite-classroom': 'favouriteClassroom',\n 'open-classroom': 'openClassroom'\n};\n\nconst TypeVariantMap: {[key in ClassroomLabelType]: ButtonProps['variant']} = {\n 'my-school-classrooms': 'purple',\n 'favourite-classroom': 'purple',\n 'open-classroom': 'blue'\n};\n\nexport function ClassroomLabel(props: ClassroomLabelProps): JSX.Element {\n return (\n <div className={classNames('d-flex align-items-center gap-2', props.className)}>\n <div>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Standard}\n variant={TypeVariantMap[props.type]}\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n <h2 className='h4 m-0'>\n {props.text ?? getPhrase(TypePhraseMap[props.type])}\n </h2>\n </div>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'classrooms.pinnedClassroomsTiles';\n\nexport function EmptyPinnedClassroomsTiles(): JSX.Element {\n return (\n <div className='py'>\n <Text namespace={namespace} phrase='emptyPinnedClassrooms' />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pinnedClassroomTile\":\"jgtOl\",\"pinnedClassroomTileImage\":\"TRhIX\"};","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport styles from '../pinned-classrooms-tiles.scss';\n\ninterface PartialPinnedClassroomsTilesProps {\n size: number;\n}\n\nfunction PartialPinnedClassroomsTile(): JSX.Element {\n return (\n <div\n className={classNames('d-flex flex-column rounded overflow-hidden border border-gray-200', styles.pinnedClassroomTile)}\n >\n <figure\n className={classNames('m-0', styles.pinnedClassroomTileImage)}\n />\n\n <div className='d-flex flex-column gap-2 p-2'>\n <span className='partial-loading-background p-2 w-50'></span>\n <span className='partial-loading-background p-2'>\n </span>\n </div>\n </div>\n );\n}\n\nexport function PartialPinnedClassroomsTiles(props: PartialPinnedClassroomsTilesProps): JSX.Element {\n return (\n <div className='d-flex flex-row flex-wrap gap-3'>\n {Array.from({ length: props.size }).map((_, index) => <PartialPinnedClassroomsTile key={index} />)}\n </div>\n );\n}","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { Classroom, EnrolmentRole } from 'libs/shared/interfaces';\nimport { getDeterministicBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { EmptyPinnedClassroomsTiles } from './empty-state/EmptyPinnedClassroomsTiles';\nimport { PartialPinnedClassroomsTiles } from './partial-loading/PartialPinnedClassroomsTiles';\n\nimport styles from './pinned-classrooms-tiles.scss';\n\nconst namespace = 'classrooms.pinnedClassroomsTiles';\n\ninterface PinnedClassroomsTileProps {\n classroom: Classroom;\n}\n\nfunction PinnedClassroomsTile(props: PinnedClassroomsTileProps): JSX.Element {\n const studentsCount = props.classroom.enrolments.data.filter(e => e.role === EnrolmentRole.Student).length;\n\n const bgColorClassName = getDeterministicBgColorClass(props.classroom.name, BG_COLOUR_CLASS_NAMES);\n\n return (\n <AppLink\n className={classNames('d-flex flex-column rounded overflow-hidden border border-gray-400', styles.pinnedClassroomTile)}\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.CLASSROOM_HOME,\n args: [props.classroom.id]\n }}\n >\n <figure\n className={classNames('m-0', styles.pinnedClassroomTileImage, bgColorClassName)}\n />\n\n <div className='d-flex flex-column gap-1 p-2'>\n <span className='fw-medium'>{props.classroom.name}</span>\n <span className='text-muted'>\n {studentsCount\n ? <Text namespace={namespace} phrase='studentsCount' options={{ smartCount: studentsCount }} />\n : <Text namespace={namespace} phrase='noStudents' />\n }\n </span>\n </div>\n </AppLink>\n );\n}\n\ninterface PinnedClassroomsTilesProps {\n classrooms: Classroom[];\n showPartialLoading: boolean;\n emptyStateComponent?: () => JSX.Element;\n loadingStateComponent?: () => JSX.Element;\n}\n\nexport function PinnedClassroomsTiles(props: PinnedClassroomsTilesProps): JSX.Element {\n const EmptyState = props.emptyStateComponent ?? EmptyPinnedClassroomsTiles;\n const LoadingState = props.loadingStateComponent ?? PartialPinnedClassroomsTiles;\n\n if (props.showPartialLoading)\n return <LoadingState size={5} />;\n \n if (!props.classrooms || !props.classrooms.length)\n return <EmptyState />;\n \n return (\n <div className='d-flex flex-row flex-wrap gap-3'>\n {props.classrooms.map(classroom => (\n <PinnedClassroomsTile key={classroom.id} classroom={classroom} />\n ))}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClassroomCollection, Config, CurrentUser, InteractiveMetadata, RosteringResponse, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { ClassroomLabel, ClassroomLabelType } from 'apps/classrooms/components/classroom-label/ClassroomLabel';\nimport { ClassroomsHeader } from 'apps/classrooms/components/classrooms-header/ClassroomsHeader';\nimport { OpenClassroomsTable } from 'apps/classrooms/components/open-classrooms-table/OpenClassroomsTable';\nimport { PinnedClassroomsTiles } from 'apps/classrooms/components/pinned-classrooms-tiles/PinnedClassroomsTiles';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\n\nconst namespace = 'classrooms.classroomsOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClassroomSectionHeadingProps {\n type: ClassroomLabelType;\n appLink?: Core.AppLink;\n hideSeeAll?: boolean;\n}\n\nfunction ClassroomSectionHeading(props: ClassroomSectionHeadingProps): JSX.Element {\n return (\n <div className='d-flex flex-row justify-content-between align-items-center mb-3'>\n <ClassroomLabel type={props.type} />\n {props.appLink && !props.hideSeeAll && (\n <AppLink appLink={props.appLink}>\n <Text namespace={namespace} phrase='seeAll' />\n </AppLink>\n )}\n </div>\n );\n}\n\nexport function ClassroomsOverviewView(): JSX.Element {\n useSetPageMetadata({\n title: getPhrase('pageTitle')\n });\n\n const breakpoints = useBreakpoints();\n const { isPlugin } = usePluginHelper();\n const { hasPermissions } = usePermissions();\n const { hasShareFlowV2 } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch: hasShareFlowV2,\n params: {\n type: [ShareType.Open]\n }\n });\n const favouriteClassrooms = Flight.useBasicFetch<ClassroomCollection>(\n ClassroomRequests.getPinnedClassrooms(\n currentUser.data?.id,\n currentUser.data?.customerId,\n { withStudents: true, limit: 5 }\n )\n );\n\n function getActions(): ActionOptions[] {\n return [{\n label: LanguageService.getPhrase(namespace, 'newClassroom'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.NEW_CLASSROOM\n },\n svgName: cvSvgLibrary.Plus,\n className: 'btn btn-outline-dark',\n disabled: hasRostering,\n tooltip: hasRostering ? getPhrase('disabledByRostering') : '',\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Start,\n location: LocationContext.ClassroomsList\n },\n button: !breakpoints.xs\n }];\n }\n \n const loaded = !!config.data && !!demoInteractive.data && !!yearGroups.data && !!favouriteClassrooms.data;\n\n return (\n <div className='px-3'>\n <ClassroomsHeader\n activeTab='overview'\n actions={getActions()}\n hasRostering={hasRostering}\n hasShareFlowV2={hasShareFlowV2}\n />\n\n <section className='mb-4'>\n <ClassroomSectionHeading\n type='favourite-classroom'\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.VIEW_ALL\n }}\n hideSeeAll={!favouriteClassrooms.data?.data?.length}\n />\n\n <PinnedClassroomsTiles\n showPartialLoading={!loaded}\n classrooms={favouriteClassrooms.data?.data}\n />\n </section>\n\n <section className='mb-4'>\n <ClassroomSectionHeading\n type='open-classroom'\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOMS\n }}\n hideSeeAll={!shareData.sentShares?.length}\n />\n\n <OpenClassroomsTable\n loading={!loaded}\n shareData={shareData}\n hasShareFlowV2={hasShareFlowV2}\n hasPermissions={hasPermissions}\n breakpoints={breakpoints}\n isPlugin={isPlugin}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n emptyState={() => (\n <MySharesDemoInsight\n heading={getPhrase('demoHeading')}\n demoInteractive={demoInteractive.data}\n liteUrl={config.data?.liteUrl}\n breakpoints={breakpoints}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n shareType={ShareType.Open}\n />\n )}\n />\n\n </section>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\nimport { UrlHelper } from 'libs/analytics/utils/UrlHelper';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { ClassroomLabel } from 'apps/classrooms/components/classroom-label/ClassroomLabel';\nimport { ClassroomsHeader } from 'apps/classrooms/components/classrooms-header/ClassroomsHeader';\nimport { OpenClassroomsTable } from 'apps/classrooms/components/open-classrooms-table/OpenClassroomsTable';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\n\nconst namespace = 'classrooms.minimalClassroomsExperience';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\nconst productIntegrationsPath = '/product/integrations';\n\nexport function MinimalClassroomsExperienceView(): JSX.Element {\n useSetPageMetadata({\n title: getPhrase('pageTitle')\n });\n\n const breakpoints = useBreakpoints();\n const { isPlugin } = usePluginHelper();\n const { hasPermissions } = usePermissions();\n const { hasShareFlowV2 } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch: hasShareFlowV2,\n params: {\n type: [ShareType.Open]\n }\n });\n \n const loaded = !!config.data && !!demoInteractive.data && !!yearGroups.data;\n\n return (\n <div className='px-3'>\n <ClassroomsHeader\n activeTab='classrooms'\n hasRostering={false}\n hasShareFlowV2={hasShareFlowV2}\n hideTabs\n />\n\n <section className='mb-4'>\n <ClassroomLabel type='my-school-classrooms' />\n\n <div className='d-flex flex-column flex-sm-row justify-content-between gap-2 bg-light-blue rounded p-3 align-items-center mt-3'>\n <div>\n <Text namespace={namespace} phrase='myClassroomsNotice' />&nbsp;\n <ExternalLink\n href={UrlHelper.safeUrlConcat(config.data?.marketingSiteUrl, productIntegrationsPath)} className='text-underline'\n newTab\n >\n <Text namespace={namespace} phrase='learnMore' />\n </ExternalLink>\n </div>\n <div>\n <AppLink\n className='btn btn-outline-dark hover-bg-white'\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.UPGRADE\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.Classroom,\n entity: EntityType.AppLink,\n descriptor: SignUpDescriptors.Upgrade,\n workflowPhase: WorkflowPhase.Start\n }}\n >\n <Text namespace={namespace} phrase='requestFullAccess' />\n </AppLink>\n </div>\n </div>\n </section>\n\n <section className='mb-4'>\n <ClassroomLabel type='open-classroom' />\n\n {loaded &&\n <>\n <MySharesDemoInsight\n heading={getPhrase('demoHeading')}\n demoInteractive={demoInteractive.data}\n liteUrl={config.data?.liteUrl}\n breakpoints={breakpoints}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n shareType={ShareType.Open}\n />\n \n <OpenClassroomsTable\n shareData={shareData}\n hasShareFlowV2={hasShareFlowV2}\n hasPermissions={hasPermissions}\n breakpoints={breakpoints}\n isPlugin={isPlugin}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n className='mt-3'\n emptyState={() => <></>}\n hasDemoInsight\n />\n </>\n\n }\n </section>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { useClassroomExperience } from 'shared/hooks/useClassroomExperience';\n\nimport { ClassroomsOverviewView } from '../classrooms-overview/ClassroomsOverviewView';\nimport { FullClassroomsExperienceView } from '../full-classrooms-experience/FullClassroomsExperienceView';\nimport { MinimalClassroomsExperienceView } from '../minimal-classrooms-experience/MinimalClassroomsExperienceView';\n\ninterface ClassroomsViewProps {\n query: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ClassroomsView(props: ClassroomsViewProps): JSX.Element {\n const { experience, loading } = useClassroomExperience();\n const { hasShareFlowV2 } = useSettings(null);\n\n if (loading)\n return <></>;\n \n if (experience === 'none') {\n Core.ErrorHelper.throw(new NotFoundError());\n return <></>;\n }\n \n if (experience === 'full' && hasShareFlowV2) {\n return <ClassroomsOverviewView />;\n }\n\n if (experience === 'full' && !hasShareFlowV2) {\n return <FullClassroomsExperienceView query={props.query} />;\n }\n\n return <MinimalClassroomsExperienceView />;\n}","// extracted by mini-css-extract-plugin\nexport default {\"background\":\"HAuP3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_ACTION, DEMO_INSIGHTS_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA, DEMO_INSIGHTS_SHARE_TABLE_DATA } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nimport { MySharesTableData } from '../my-shares-table/MySharesTableUtils';\n\nimport styles from './my-shares-demo-insights.scss';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n liteUrl: string;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n breakpoints: Breakpoints;\n className?: string;\n heading?: string;\n shareType?: ShareType;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isStaging = props.liteUrl.includes('staging');\n\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n const appLink = props.shareType === ShareType.Open ? DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK : DEMO_INSIGHTS_APPLINK;\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: isStaging ? DEMO_INTERACTIVE_STAGING_ID : DEMO_INTERACTIVE_PROD_ID\n };\n }\n\n function getObjectActions() {\n return [\n {\n ...DEMO_INSIGHTS_ACTION,\n button: !isMobile,\n appLink\n }\n ];\n }\n\n const demoShareTableData = props.shareType === ShareType.Open\n ? DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA\n : DEMO_INSIGHTS_SHARE_TABLE_DATA;\n\n const shareData: MySharesTableData = {\n ...demoShareTableData,\n sharedObject: getDemoInteractive()\n };\n\n return (\n <div className={props.className}>\n <MySharesTableHeading heading={props.heading ?? getPhrase('demoHeading')} isFirst={true} />\n\n <div className={`${styles.background} rounded-3 mb-4`}>\n <MySharesTableRow\n shareData={shareData}\n getObjectActions={getObjectActions}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n breakpoints={props.breakpoints}\n className='bg-light-orange'\n appLink={(() => appLink)}\n />\n </div>\n </div>\n );\n}","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';"],"names":["OpenClassroomsTable","props","hasInsightsPermission","hasShareFlowV2","hasPermissions","sharesParams","LoadingComponent","loadingState","EmptyStateComponent","emptyState","loading","shareData","showPartialLoading","sentShares","length","className","sharedObjects","items","shareRecipients","interactivesPendingReview","itemsArr","getObjectActions","row","share","sharedObject","audienceParams","audienceAppLinkParams","hasInsights","isPlugin","breakpoints","groupByDateShared","imageCdnUrl","yearGroups","hasDemoInsights","hasDemoInsight","hasMore","isFetching","fetchNext","nextCursor","getPhrase","LanguageService","TypePhraseMap","TypeVariantMap","ClassroomLabel","IconCircle","svgName","svgSize","SvgContainer","S","variant","type","textVariant","svgWrapperClassName","text","EmptyPinnedClassroomsTiles","Text","namespace","phrase","PartialPinnedClassroomsTile","PartialPinnedClassroomsTiles","Array","from","size","map","_","index","key","PinnedClassroomsTile","studentsCount","classroom","enrolments","data","filter","e","role","bgColorClassName","name","AppLink","appLink","application","action","args","id","options","smartCount","PinnedClassroomsTiles","EmptyState","emptyStateComponent","LoadingState","loadingStateComponent","classrooms","ClassroomSectionHeading","hideSeeAll","ClassroomsOverviewView","useSetPageMetadata","title","useBreakpoints","usePluginHelper","usePermissions","useSettings","currentUser","UserRequests","config","ConfigRequests","demoInteractive","InsightsDemoRequests","isAuthenticated","CustomerRequests","customerId","rostering","RosteringRequests","hasRostering","status","useSharesTable","interactiveInsights","shouldFetch","params","ShareType","favouriteClassrooms","ClassroomRequests","withStudents","limit","loaded","ClassroomsHeader","activeTab","actions","label","disabled","tooltip","analyticsOptions","actionType","entity","workflowPhase","location","button","xs","MySharesDemoInsight","heading","liteUrl","shareType","productIntegrationsPath","MinimalClassroomsExperienceView","hideTabs","ExternalLink","href","UrlHelper","marketingSiteUrl","newTab","analyticsData","descriptor","ClassroomsView","useClassroomExperience","experience","NotFoundError","FullClassroomsExperienceView","query","isStaging","includes","isMobile","sm","demoShareTableData","isFirst","MySharesTableRow","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID"],"sourceRoot":""}