@clickview/lite 0.77.0-rc.1 → 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.
Files changed (38) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/{218-e2f474ccb6-lite.chunk.js → 218-10e579bc5c-lite.chunk.js} +2 -2
  4. package/dist/scripts/218-10e579bc5c-lite.chunk.js.map +1 -0
  5. package/dist/scripts/{3700-a7e52bb9be-lite.chunk.js → 3700-8530427309-lite.chunk.js} +3 -3
  6. package/dist/scripts/{3700-a7e52bb9be-lite.chunk.js.map → 3700-8530427309-lite.chunk.js.map} +1 -1
  7. package/dist/scripts/{3811-133acc9140-lite.chunk.js → 3811-b39bb39668-lite.chunk.js} +3 -3
  8. package/dist/scripts/{3811-133acc9140-lite.chunk.js.map → 3811-b39bb39668-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/4300-7147c77234-lite.chunk.js +2 -0
  10. package/dist/scripts/4300-7147c77234-lite.chunk.js.map +1 -0
  11. package/dist/scripts/4598-fefc759cdf-lite.chunk.js +2 -0
  12. package/dist/scripts/4598-fefc759cdf-lite.chunk.js.map +1 -0
  13. package/dist/scripts/7617-4c7db70e5c-lite.chunk.js +2 -0
  14. package/dist/scripts/7617-4c7db70e5c-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{7843-528e9d766e-lite.chunk.js → 7843-fb27a0c27f-lite.chunk.js} +2 -2
  16. package/dist/scripts/7843-fb27a0c27f-lite.chunk.js.map +1 -0
  17. package/dist/scripts/8139-5a213506ea-lite.chunk.js +2 -0
  18. package/dist/scripts/8139-5a213506ea-lite.chunk.js.map +1 -0
  19. package/dist/scripts/9701-d86dfbee0c-lite.chunk.js +2 -0
  20. package/dist/scripts/9701-d86dfbee0c-lite.chunk.js.map +1 -0
  21. package/dist/scripts/{bundle-27d86c87d5.min.js → bundle-d91afd75fb.min.js} +3 -3
  22. package/dist/scripts/{bundle-27d86c87d5.min.js.map → bundle-d91afd75fb.min.js.map} +1 -1
  23. package/package.json +1 -1
  24. package/dist/scripts/218-e2f474ccb6-lite.chunk.js.map +0 -1
  25. package/dist/scripts/4300-e884613b63-lite.chunk.js +0 -2
  26. package/dist/scripts/4300-e884613b63-lite.chunk.js.map +0 -1
  27. package/dist/scripts/4598-6981d30244-lite.chunk.js +0 -2
  28. package/dist/scripts/4598-6981d30244-lite.chunk.js.map +0 -1
  29. package/dist/scripts/7617-c37f3c1ab8-lite.chunk.js +0 -2
  30. package/dist/scripts/7617-c37f3c1ab8-lite.chunk.js.map +0 -1
  31. package/dist/scripts/7843-528e9d766e-lite.chunk.js.map +0 -1
  32. package/dist/scripts/8139-f8ce3266c8-lite.chunk.js +0 -2
  33. package/dist/scripts/8139-f8ce3266c8-lite.chunk.js.map +0 -1
  34. package/dist/scripts/9701-dfa0ccbf3a-lite.chunk.js +0 -2
  35. package/dist/scripts/9701-dfa0ccbf3a-lite.chunk.js.map +0 -1
  36. /package/dist/scripts/{3700-a7e52bb9be-lite.chunk.js.LICENSE.txt → 3700-8530427309-lite.chunk.js.LICENSE.txt} +0 -0
  37. /package/dist/scripts/{3811-133acc9140-lite.chunk.js.LICENSE.txt → 3811-b39bb39668-lite.chunk.js.LICENSE.txt} +0 -0
  38. /package/dist/scripts/{bundle-27d86c87d5.min.js.LICENSE.txt → bundle-d91afd75fb.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/4300-7147c77234-lite.chunk.js","mappings":"kSAqBMA,EAAY,qBADA,6BASZ,SAAUC,EAAsBC,G,QAC9BC,EAAQ,kBAA4B,aAAuBD,EAAME,UAEjEC,EAAa,0BAAsCF,EAAMG,MAEvDC,GAAQ,OAAoB,CAClCD,KAAM,CACJE,OAAQ,CACNC,GAAc,QAAV,EAAAN,EAAMG,YAAI,eAAEI,SAChBC,KAAMN,IAGVO,iBAAkB,CAChBC,SAAU,WACVC,aAAc,QACdC,YAAab,EAAMa,eAVfR,IAcR,GAAiD,OAAqB,CACpES,SAAoB,QAAV,EAAAb,EAAMG,YAAI,eAAEI,SACtBN,QAASF,EAAME,QACfC,WAAAA,EACAE,IAAAA,IAJMD,EAAI,EAAJA,KAAMW,EAAa,EAAbA,cAAeC,EAAe,EAAfA,gBA4B7B,EAGI,4BAAwCb,GAF1Cc,EAA0B,EAA1BA,2BACAC,EAAyB,EAAzBA,0BAGIC,EAASf,EAAKe,UAAYlB,EAAMG,KAEtC,OACE,gBAAC,IAAK,CACJgB,MAAOtB,EAAU,SACjBuB,oBAAqBF,EACrBG,WAAYtB,EAAMsB,YAElB,gBAAC,IAAiB,CAChBP,cAAeA,EACfQ,SApCN,SACEnB,EACAoB,GAEAR,EAAgB,CACdS,QAAS,CACPC,kBAAmBtB,EAAKsB,kBACxBC,iBAAkBvB,EAAKuB,mBAExBH,EACL,EA2BMI,cAzBN,WACE,GAAK3B,EAAMG,KAAX,CACA,IAAMyB,EAAU7B,EAAM8B,sBAAsB7B,EAAMG,MAE7CyB,GAEL,aAAsBA,EALC,CAMzB,EAmBMZ,2BAA4BA,EAC5BC,0BAA2BA,EAC3Ba,WAAY9B,EAAMG,KAAKK,OAAS,UAAkBX,EAAU,YAIpE,C,06CCzCM,SAAUkC,EAIdhC,GACA,IAAQiC,EAAmFjC,EAAnFiC,kBAAmBC,EAAgElC,EAAhEkC,mBAAoBnB,EAA4Cf,EAA5Ce,cAAeQ,EAA6BvB,EAA7BuB,SAAaY,EAAW,EAAKnC,EAArF,uEAMAoC,EAAqCH,GAAqBjC,EAAMqC,iBAClErC,EAAMqC,iBAAiBC,KA3D7B,SAA4DvB,GAC1D,IAAKA,EACH,MAAO,CAAC,EAEV,IAAMwB,EAAS,cAAuBxB,GAetC,OAbA,SAASyB,EAAgBC,GACvBC,OAAOC,KAAKJ,GAAQK,QAAQ,SAACC,GACtBN,EAAOO,eAAeD,KAGvB,aAAsBJ,EAAMI,IAC9BL,EAAgBC,EAAMI,IACC,OAAhBN,EAAOM,WACPN,EAAOM,GAClB,EACF,CAEAL,CAAgBD,GACTA,CACT,CAuCkCQ,CAAsBhC,IAClDA,EA4BEiC,EAA+B,CACnCC,mBAAoBjD,EAAMiD,oBAG5B,OACE,gBAAC,KAAM,eACLC,oBAAkB,GACbf,EAA6D,CAClEpB,cAAeqB,EACfb,SAnCoB,SACtBgB,EAAkB,GAEhB,IADAY,EAAa,EAAbA,cAAeC,EAAS,EAATA,UAAWC,EAAa,EAAbA,cAOtBC,EAAgBpB,GAAsBlC,EAAMqC,iBAC9CrC,EAAMqC,iBAAiBC,KAAKC,GAC5BA,EAEJhB,EAAS+B,EAAe,WAAoD,IAAnD7B,EAAA,uDAA6C,CAAC,EAGrE,GAFAA,EAAQ8B,OAASH,IAEb3B,EAAQ+B,OACV,IAAK,IAAL,MAA6Bd,OAAOe,QAAQhC,EAAQ+B,QAAO,eAAE,CAAxD,gBAAQX,EAAG,KAAEa,EAAK,KACrBL,EAAcR,EAAKa,EACpB,CAGHP,GAAc,EAChB,EACF,EAYIH,cAAeA,IAEd,eAA0BhD,EAAM2D,UAC7B,SAACC,GAA0B,OAAM5D,EAAM2D,SAA6DC,EAAE,EACtG,iBAAqB5D,EAAM2D,UAAY3D,EAAM2D,SAAW,KAIlE,CAEM,SAAUE,IACd,OAAO,SACT,CApEA7B,EAAY8B,aAAe,CACzB7B,mBAAmB,EACnBC,oBAAoB,E,kBCvDtB,IAAY6B,E,iBAAZ,SAAYA,GACV,qCACA,mCACA,cACA,oBACD,CALD,CAAYA,IAAAA,EAAa,I,wECOnBjE,EAAY,qBADA,uBAGLkE,EAAoB,CAC/BC,qBAAoB,SAACC,EAAiCC,GACpD,MAAO,CACL,CACE5D,GAAI,oBACJ6D,KAAMtE,EAAU,mBAChBuE,QAASH,EACTI,YAAa,4BAEf,CACE/D,GAAI,mBACJ6D,KAAMtE,EAAU,aAChBuE,QAASF,EACTG,YAAa,2BAGnB,E","sources":["file:///app/packages/libs/shared/src/apps/share-v2/views/edit-share-settings-view/EditShareSettingsView.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/enums/IntegrationId.ts","file:///app/packages/libs/shared/src/utils/IntegrationHelper.ts"],"sourcesContent":["import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EventVersion, LocationContext } from 'libs/analytics/interfaces';\n\nimport { ShareSettingsForm } from 'libs/shared/apps/share-v2/components/share-settings-form/ShareSettingsForm';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { getShareEventLogger } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { ShareSettingsFormFields, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { useShareSettingsData } from 'libs/shared/apps/share-v2/views/share-settings-view/hooks/use-share-settings-data/useShareSettingsData';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'sharev2.editShareSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface EditShareSettingsViewProps extends PopupViewProps {\n shareId: string;\n getDeleteShareAppLink: (share: Share) => Core.AppLink;\n productArea?: string;\n}\n\nexport function EditShareSettingsView(props: EditShareSettingsViewProps) {\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n\n const entityType = ShareViewHelper.getSharableEntityType(share.data);\n\n const { log } = getShareEventLogger({\n data: {\n entity: {\n id: share.data?.objectId,\n type: entityType\n }\n },\n analyticsOptions: {\n location: LocationContext.Popup,\n eventVersion: EventVersion.V3,\n productArea: props.productArea\n }\n });\n \n const { data, initialValues, onClickSaveLink } = useShareSettingsData({\n entityId: share.data?.objectId,\n shareId: props.shareId,\n entityType,\n log\n });\n \n function onSubmit(\n data: ShareSettingsFormFields,\n onDone: (options?: FormSubmissionOptions<ShareSettingsFormFields>) => void\n ) {\n onClickSaveLink({\n options: {\n immediateFeedback: data.immediateFeedback,\n preventScrubbing: data.preventScrubbing\n }\n }, onDone);\n }\n\n function onClickDelete() {\n if (!share.data) return;\n const appLink = props.getDeleteShareAppLink(share.data);\n\n if (!appLink) return;\n \n AppLinkHelper.trigger(appLink);\n }\n\n const {\n showImmediateFeedbackField,\n showPreventScrubbingField\n } = ShareViewHelper.getEnabledSettingsField(entityType);\n\n const loaded = data.loaded && !!share.data;\n \n return (\n <Popup\n title={getPhrase('title')}\n showLoadingSpinner={!loaded}\n closePopup={props.closePopup}\n >\n <ShareSettingsForm\n initialValues={initialValues}\n onSubmit={onSubmit}\n onClickDelete={onClickDelete}\n showImmediateFeedbackField={showImmediateFeedbackField}\n showPreventScrubbingField={showPreventScrubbingField}\n deleteText={share.data.type !== ShareType.Link && getPhrase('delete')}\n />\n </Popup>\n );\n}","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","export enum IntegrationId {\n GoogleClassroom = 'google-classroom',\n MicrosoftTeams = 'microsoft-teams',\n Vivi = 'vivi',\n AppleTv = 'apply-tv'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { Integration } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const IntegrationHelper = {\n getShareIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): Integration[] {\n return [\n {\n id: IntegrationId.GoogleClassroom,\n name: getPhrase('googleClassroom'),\n enabled: googleClassroomSetting,\n settingName: SettingName.ShareToGoogleClassroom\n },\n {\n id: IntegrationId.MicrosoftTeams,\n name: getPhrase('msftTeams'),\n enabled: msftTeamsSetting,\n settingName: SettingName.ShareToMicrosoftTeams\n }\n ];\n }\n};\n"],"names":["getPhrase","EditShareSettingsView","props","share","shareId","entityType","data","log","entity","id","objectId","type","analyticsOptions","location","eventVersion","productArea","entityId","initialValues","onClickSaveLink","showImmediateFeedbackField","showPreventScrubbingField","loaded","title","showLoadingSpinner","closePopup","onSubmit","onDone","options","immediateFeedback","preventScrubbing","onClickDelete","appLink","getDeleteShareAppLink","deleteText","FormWrapper","castInitialValues","castValuesOnSubmit","formikProps","formattedInitialValues","validationSchema","cast","values","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","reset","errors","entries","value","children","f","useFormikContextWrapper","defaultProps","IntegrationId","IntegrationHelper","getShareIntegrations","googleClassroomSetting","msftTeamsSetting","name","enabled","settingName"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4598],{18006:(e,a,t)=>{t.d(a,{A:()=>r});var r="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),c=t(26025),d=t(2510),l=t(60051),o=t(39151),u=t(54405),v=t(47812),p=t(31949),g=t(93322),m=t(79612),f=t(86702),h=t(9540),y=t(17132),b=t(18006),w=t(9566),A=t(10447);function k(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)(f.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,c=[],d=!0,l=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;d=!1}else for(;!(d=(r=i.call(t)).done)&&(c.push(r.value),c.length!==a);d=!0);}catch(e){l=!0,n=e}finally{try{if(!d&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(l)throw n}}return c}}(S,F)||function(e,a){if(e){if("string"==typeof e)return k(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)?k(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,g.F)();var D=s.a.useBasicFetch(p.N.currentUser()),I=s.a.useBasicFetch(u.X.interactiveMetadata()),L=s.a.useBasicFetch(o.L.config()),R=c.B.getAudienceAppLinkParams(),_=c.B.getDateRangeAppLinkParams(),G=s.a.useBasicFetch(u.X.aggregateHeatmap()),N=s.a.useBasicFetch(u.X.individualHeatmap()),X=s.a.useBasicFetch(u.X.users()),C=s.a.useBasicFetch(u.X.videoViews()),H=s.a.useBasicFetch(I.data&&v.k.createViewKey(b.A,l.f.Share));(0,m.M)({title:I.data?j("pageTitle",{video:null===(a=I.data)||void 0===a?void 0:a.name}):null});var M=!!(D.data&&C.data&&I.data&&G.data&&H.data&&X.data),U=!!N.data,x=Object.assign(Object.assign({},R),_),P=e.type===d.y.Open?w._w:w.G6;return r.createElement("div",{className:"px-3"},r.createElement(h.j,{video:I.data,tabs:(0,A.aq)(null===(t=I.data)||void 0===t?void 0:t.id,"heatmap",x,e.type),dateRangeAppLinkParams:_,share:Object.assign(Object.assign({},P),{objectId:null===(n=I.data)||void 0===n?void 0:n.id}),yearGroups:[],markingRequired:e.type!==d.y.Open,isDemo:!0}),r.createElement(y.w,{aggregateEngagement:G.data,individualEngagement:null===(B=N.data)||void 0===B?void 0:B.data,yearGroups:null===(O=C.data)||void 0===O?void 0:O.yearGroupCount,config:L.data,users:X.data,viewKey:H.data,hasDataLoaded:M,tableDataLoaded:U,anonymiseUsers:E,hideStaffResults:!1}))}}}]);
2
+ //# sourceMappingURL=4598-fefc759cdf-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/4598-fefc759cdf-lite.chunk.js","mappings":"oIAAO,IAAMA,EAAsB,Q,uXC2BnC,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,kBAA6B,IAAqB,aAEpD,OAAmB,CAAEC,MAAOV,EAAMS,KAAOd,EAAU,YAAa,CAAEK,MAAiB,QAAV,EAAAA,EAAMS,YAAI,eAAEE,OAAU,OAE/F,IAAMC,KACFb,EAAYU,MACZF,EAAWE,MACXT,EAAMS,MACNL,EAAoBK,MACpBD,EAAQC,MACRH,EAAMG,MAEJI,IAAoBR,EAAqBI,KAEzCK,EAAS,OAAH,wBACPZ,GACAC,GAGCY,EAAQlB,EAAMmB,OAAS,SAAiB,KAAqC,KAEnF,OACE,uBAAKC,UAAU,QACb,gBAAC,IAAc,CACbjB,MAAOA,EAAMS,KACbS,MAAM,QAAyC,QAAV,EAAAlB,EAAMS,YAAI,eAAEU,GAAI,UAAWL,EAAQjB,EAAMmB,MAC9Eb,uBAAwBA,EACxBY,MAAK,+BACAA,GAAK,CACRK,SAAoB,QAAV,EAAApB,EAAMS,YAAI,eAAEU,KAExBE,WAAY,GACZC,gBAAiBzB,EAAMmB,OAAS,SAChCO,QAAM,IAGR,gBAAC,IAAe,CACdnB,oBAAqBA,EAAoBK,KACzCJ,qBAA+C,QAAzB,EAAAA,EAAqBI,YAAI,eAAEA,KACjDY,WAA2B,QAAf,EAAAd,EAAWE,YAAI,eAAEe,eAC7BvB,OAAQA,EAAOQ,KACfH,MAAOA,EAAMG,KACbD,QAASA,EAAQC,KACjBG,cAAeA,EACfC,gBAAiBA,EACjBf,eAAgBA,EAChB2B,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_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_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(DEMO_INTERACTIVE_ID, 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 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_ID","getPhrase","InsightsHeatmapDemoView","props","anonymiseUsers","currentUser","video","config","audienceAppLinkParams","dateRangeAppLinkParams","aggregateEngagement","individualEngagement","users","videoViews","viewKey","data","title","name","hasDataLoaded","tableDataLoaded","params","share","type","className","tabs","id","objectId","yearGroups","markingRequired","isDemo","yearGroupCount","hideStaffResults"],"sourceRoot":""}
@@ -0,0 +1,2 @@
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),s=t(97395),i=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,i.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,s,i,c=[],l=!0,o=!1;try{if(s=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;l=!1}else for(;!(l=(n=s.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&&(i=t.return(),Object(i)!==i))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],y=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")),s._.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(){y(!1)}})):n.createElement(n.Fragment,null)}},22767:(e,a,t)=>{t.d(a,{l:()=>u});var n=t(32735),r=t(23481),s=t(2510),i=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.breakpoints.xs||e.breakpoints.sm,r=e.shareType===s.y.Open?l.po:l.vJ,u=e.shareType===s.y.Open?l.$Z:l.GJ,d=Object.assign(Object.assign({},u),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:c.A})});return n.createElement("div",{className:e.className},n.createElement(i.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(i.F,{shareData:d,getObjectActions:function(){return[Object.assign(Object.assign({},l.VE),{button:!t,appLink:r})]},imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,breakpoints:e.breakpoints,className:"bg-light-orange",appLink:function(){return r}})))}},18006:(e,a,t)=>{t.d(a,{A:()=>n});var n="GRWx6w"},49243:(e,a,t)=>{t.r(a),t.d(a,{MySharesView:()=>D});var n=t(32735),r=t(81886),s=t(23481),i=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),y=t(25882),v=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),A=t(99746),O=t(22767),N=t(67467),x=t(5056),L=t(28001),j=t(65858),U=t(97958),P=t(99742),F="myShares.mySharesEmptyState",M=s.T.encloseNamespace(F);function T(){return n.createElement(U.u,null,n.createElement(U.u.Image,{src:P.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:M("heading")}),n.createElement(U.u.Heading,null,n.createElement(m.x,{namespace:F,phrase:"heading"})),n.createElement(U.u.Info,null,n.createElement(m.x,{namespace:F,phrase:"info"})),n.createElement(U.u.Cta,{text:s.T.getPhrase(F,"cta"),appLink:{application:k.O.SIGN_UP,action:S.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:j.Vw.Click,location:j.LZ.MySharesLanding,entity:j.py.AppLink,workflowPhase:j.eu.Start,descriptor:j.Yu.SignUp}}))}var _=t(69003),G="myShares.myShares",V=s.T.encloseNamespace(G);function D(e){var a,t,s;(0,f.M)({title:V("myShares")});var j=(0,b.T)(),U=j.hasPermissions,P=j.hasLocalPermissions,F=(0,E.r)(null),M=F.hasShareFlowV2,D=F.hasClassrooms,R=(0,C.G)().isPlugin,B=(0,v.k)(),H=(0,y.v)().accessPolicy,W=(0,I.R)().experience,Z=(0,_.cl)(e.typeId),J=!P(u.E.ViewMySharesLanding)||U(u.C.ViewMyShares)&&M,Y=M&&U(u.C.ViewInsights),$=(null===(a=null==H?void 0:H.metadata)||void 0===a?void 0:a.hasDemoInsights)||"minimal"===W,Q=i.a.useBasicFetch(d.L.config()),X=i.a.useBasicFetch(g.N.currentUser()),q=i.a.useBasicFetch((null===(t=X.data)||void 0===t?void 0:t.isAuthenticated)&&h.h.yearGroups(X.data.customerId)),z=i.a.useBasicFetch($&&p.X.interactiveMetadata()),K=(0,w.a)({interactiveInsights:!0,shouldFetch:J,params:{type:[c.y.Link,c.y.LegacyDirect]}});return n.useEffect(function(){U(u.C.ViewMyShares)&&M||r.Q.Ab.PageLoad("/")},[J]),J?n.createElement("div",{className:"px-3"},n.createElement(A.p,{analyticsUrl:null===(s=Q.data)||void 0===s?void 0:s.analyticsWebUrl,hasAnalytics:U(u.C.ViewCustomerAnalytics)}),n.createElement("div",{className:"border-bottom pb-2 mb-4"},n.createElement("h1",{className:"mb-2"},n.createElement(m.x,{namespace:G,phrase:"myShares"})),D&&n.createElement("p",{className:"mb-0"},n.createElement(m.x,{namespace:G,phrase:"classroomsHint"})," ",n.createElement(l.F,{appLink:{application:k.O.CLASSROOMS,action:S.e.Classrooms.HOME},className:"info-link"},n.createElement(m.x,{namespace:G,phrase:"classroomsCta"})))),$&&z.data&&n.createElement(O.l,{demoInteractive:z.data,breakpoints:B,imageCdnUrl:K.imageCdnUrl,yearGroups:q.data,shareType:c.y.Link}),function(){var e;return K.showPartialLoading?n.createElement(L.L,null):K.sentShares.length?n.createElement(n.Fragment,null,n.createElement(x.R,{sentShares:K.sentShares,sharedObjects:K.sharedObjects.items,shareRecipients:K.shareRecipients.items,interactivesPendingReview:K.interactivesPendingReview.itemsArr,getObjectActions:function(e){return(0,_.sD)({share:e.share,sharedObject:e.sharedObject,audienceParams:Z.audienceAppLinkParams,hasInsights:Y,isPlugin:R,breakpoints:B})},groupByDateShared:!0,breakpoints:B,hasDemoInsights:$,imageCdnUrl:null===(e=Q.data)||void 0===e?void 0:e.imageCdnUrl,yearGroups:q.data}),(K.hasMore||K.isFetching)&&n.createElement(o._,{isFetching:K.isFetching,fetchNext:K.fetchNext,nextCursor:K.nextCursor})):n.createElement(N.o,null)}()):n.createElement(T,null)}}}]);
2
+ //# sourceMappingURL=7617-4c7db70e5c-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7617-4c7db70e5c-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_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 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 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: DEMO_INTERACTIVE_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_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 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","isMobile","breakpoints","xs","sm","shareType","ShareType","demoShareTableData","shareData","sharedObject","demoInteractive","heading","isFirst","MySharesTableRow","getObjectActions","button","appLink","imageCdnUrl","yearGroups","DEMO_INTERACTIVE_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,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7843],{35599:(e,a,t)=>{t.d(a,{k:()=>m});var s=t(32735),n=t(87801),r=t(16714),l=t(67467),i=t(5056),o=t(28001),c=t(69003);function m(e){var a,t,m=e.hasShareFlowV2&&e.hasPermissions(r.C.ViewInsights),d=(0,c.cl)([]),u=null!==(a=e.loadingState)&&void 0!==a?a:o.L,p=null!==(t=e.emptyState)&&void 0!==t?t:l.o;return e.loading||e.shareData.showPartialLoading?s.createElement(u,null):e.shareData.sentShares.length?s.createElement("div",{className:e.className},s.createElement(i.R,{sentShares:e.shareData.sentShares,sharedObjects:e.shareData.sharedObjects.items,shareRecipients:e.shareData.shareRecipients.items,interactivesPendingReview:e.shareData.interactivesPendingReview.itemsArr,getObjectActions:function(a){return(0,c.sD)({share:a.share,sharedObject:a.sharedObject,audienceParams:d.audienceAppLinkParams,hasInsights:m,isPlugin:e.isPlugin,breakpoints:e.breakpoints})},groupByDateShared:!0,breakpoints:e.breakpoints,imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,hasDemoInsights:e.hasDemoInsight}),(e.shareData.hasMore||e.shareData.isFetching)&&s.createElement(n._,{isFetching:e.shareData.isFetching,fetchNext:e.shareData.fetchNext,nextCursor:e.shareData.nextCursor})):s.createElement(p,null)}},49221:(e,a,t)=>{t.r(a),t.d(a,{ClassroomsView:()=>le});var s=t(32735),n=t(81886),r=t(67058),l=t(37802),i=t(99998),o=t(23481),c=t(20354),m=t(65858),d=t(2510),u=t(15611),p=t(83345),h=t(39151),g=t(1666),v=t(54405),E=t(44538),f=t(31949),y=t(79967),b=t(22902),C=t(79612),S=t(35223),N=t(14070),w=t(97291),k=t(46390),O=t(98623),x=t(31453),F=t(12528),L=t(83914),A=o.T.encloseNamespace("classrooms.classroomLabel"),P={"my-school-classrooms":"mySchoolClassrooms","favourite-classroom":"favouriteClassroom","open-classroom":"openClassroom"},T={"my-school-classrooms":"purple","favourite-classroom":"purple","open-classroom":"blue"};function U(e){var a;return s.createElement("div",{className:(0,x.A)("d-flex align-items-center gap-2",e.className)},s.createElement("div",null,s.createElement(F.f,{svgName:S.vn.Classrooms,svgSize:L.S.Standard,variant:T[e.type],textVariant:"white",svgWrapperClassName:"p-1"})),s.createElement("h2",{className:"h4 m-0"},null!==(a=e.text)&&void 0!==a?a:A(P[e.type])))}var D=t(59278),R=t(35599),I=t(7733),j=t(38129),G=t(9085),V="classrooms.pinnedClassroomsTiles";function M(){return s.createElement("div",{className:"py"},s.createElement(p.x,{namespace:V,phrase:"emptyPinnedClassrooms"}))}const B={pinnedClassroomTile:"jgtOl",pinnedClassroomTileImage:"TRhIX"};function _(){return s.createElement("div",{className:(0,x.A)("d-flex flex-column rounded overflow-hidden border border-gray-200",B.pinnedClassroomTile)},s.createElement("figure",{className:(0,x.A)("m-0",B.pinnedClassroomTileImage)}),s.createElement("div",{className:"d-flex flex-column gap-2 p-2"},s.createElement("span",{className:"partial-loading-background p-2 w-50"}),s.createElement("span",{className:"partial-loading-background p-2"})))}function q(e){return s.createElement("div",{className:"d-flex flex-row flex-wrap gap-3"},Array.from({length:e.size}).map(function(e,a){return s.createElement(_,{key:a})}))}var H="classrooms.pinnedClassroomsTiles";function W(e){var a=e.classroom.enrolments.data.filter(function(e){return e.role===j.tM.Student}).length,t=(0,G.s)(e.classroom.name,I.o);return s.createElement(u.F,{className:(0,x.A)("d-flex flex-column rounded overflow-hidden border border-gray-400",B.pinnedClassroomTile),appLink:{application:w.O.CLASSROOMS,action:N.e.Classrooms.CLASSROOM_HOME,args:[e.classroom.id]}},s.createElement("figure",{className:(0,x.A)("m-0",B.pinnedClassroomTileImage,t)}),s.createElement("div",{className:"d-flex flex-column gap-1 p-2"},s.createElement("span",{className:"fw-medium"},e.classroom.name),s.createElement("span",{className:"text-muted"},a?s.createElement(p.x,{namespace:H,phrase:"studentsCount",options:{smartCount:a}}):s.createElement(p.x,{namespace:H,phrase:"noStudents"}))))}function z(e){var a,t,n=null!==(a=e.emptyStateComponent)&&void 0!==a?a:M,r=null!==(t=e.loadingStateComponent)&&void 0!==t?t:q;return e.showPartialLoading?s.createElement(r,{size:5}):e.classrooms&&e.classrooms.length?s.createElement("div",{className:"d-flex flex-row flex-wrap gap-3"},e.classrooms.map(function(e){return s.createElement(W,{key:e.id,classroom:e})})):s.createElement(n,null)}var X=t(88630),Z=t(22767),J="classrooms.classroomsOverview",K=o.T.encloseNamespace(J);function Q(e){return s.createElement("div",{className:"d-flex flex-row justify-content-between align-items-center mb-3"},s.createElement(U,{type:e.type}),e.appLink&&!e.hideSeeAll&&s.createElement(u.F,{appLink:e.appLink},s.createElement(p.x,{namespace:J,phrase:"seeAll"})))}function Y(){var e,a,t,n,r,i,u,p,x;(0,C.M)({title:K("pageTitle")});var F=(0,y.k)(),L=(0,k.G)().isPlugin,A=(0,b.T)().hasPermissions,P=(0,l.r)(null).hasShareFlowV2,T=c.a.useBasicFetch(f.N.currentUser()),U=c.a.useBasicFetch(h.L.config()),I=c.a.useBasicFetch(v.X.interactiveMetadata()),j=c.a.useBasicFetch((null===(e=T.data)||void 0===e?void 0:e.isAuthenticated)&&g.h.yearGroups(T.data.customerId)),G=c.a.useBasicFetch(E.K.getRostering()),V=(null===(a=G.data)||void 0===a?void 0:a.status)&&"None"!==G.data.status,M=(0,O.a)({interactiveInsights:!0,shouldFetch:P,params:{type:[d.y.Open]}}),B=c.a.useBasicFetch(X.F.getPinnedClassrooms(null===(t=T.data)||void 0===t?void 0:t.id,null===(n=T.data)||void 0===n?void 0:n.customerId,{withStudents:!0,limit:5})),_=!!(U.data&&I.data&&j.data&&B.data);return s.createElement("div",{className:"px-3"},s.createElement(D.d,{activeTab:"overview",actions:[{label:o.T.getPhrase(J,"newClassroom"),appLink:{application:w.O.CLASSROOMS,action:N.e.Classrooms.NEW_CLASSROOM},svgName:S.vn.Plus,className:"btn btn-outline-dark",disabled:V,tooltip:V?K("disabledByRostering"):"",analyticsOptions:{actionType:m.Vw.Create,entity:m.py.Classroom,workflowPhase:m.eu.Start,location:m.LZ.ClassroomsList},button:!F.xs}],hasRostering:V,hasShareFlowV2:P}),s.createElement("section",{className:"mb-4"},s.createElement(Q,{type:"favourite-classroom",appLink:{application:w.O.CLASSROOMS,action:N.e.Classrooms.VIEW_ALL},hideSeeAll:!(null===(i=null===(r=B.data)||void 0===r?void 0:r.data)||void 0===i?void 0:i.length)}),s.createElement(z,{showPartialLoading:!_,classrooms:null===(u=B.data)||void 0===u?void 0:u.data})),s.createElement("section",{className:"mb-4"},s.createElement(Q,{type:"open-classroom",appLink:{application:w.O.CLASSROOMS,action:N.e.Classrooms.OPEN_CLASSROOMS},hideSeeAll:!(null===(p=M.sentShares)||void 0===p?void 0:p.length)}),s.createElement(R.k,{loading:!_,shareData:M,hasShareFlowV2:P,hasPermissions:A,breakpoints:F,isPlugin:L,imageCdnUrl:null===(x=U.data)||void 0===x?void 0:x.imageCdnUrl,yearGroups:j.data,className:"mt-3",emptyState:function(){var e,a;return s.createElement(Z.l,{heading:K("demoHeading"),demoInteractive:I.data,liteUrl:null===(e=U.data)||void 0===e?void 0:e.liteUrl,breakpoints:F,imageCdnUrl:null===(a=U.data)||void 0===a?void 0:a.imageCdnUrl,yearGroups:j.data,className:"mt-3",shareType:d.y.Open})}})))}var $=t(91047),ee=t(86073),ae=t(98461),te="classrooms.minimalClassroomsExperience",se=o.T.encloseNamespace(te),ne="/product/integrations";function re(){var e,a,t,n,r;(0,C.M)({title:se("pageTitle")});var i=(0,y.k)(),o=(0,k.G)().isPlugin,E=(0,b.T)().hasPermissions,S=(0,l.r)(null).hasShareFlowV2,x=c.a.useBasicFetch(f.N.currentUser()),F=c.a.useBasicFetch(h.L.config()),L=c.a.useBasicFetch(v.X.interactiveMetadata()),A=c.a.useBasicFetch((null===(e=x.data)||void 0===e?void 0:e.isAuthenticated)&&g.h.yearGroups(x.data.customerId)),P=(0,O.a)({interactiveInsights:!0,shouldFetch:S,params:{type:[d.y.Open]}}),T=!!F.data&&!!L.data&&!!A.data;return s.createElement("div",{className:"px-3"},s.createElement(D.d,{activeTab:"classrooms",hasRostering:!1,hasShareFlowV2:S,hideTabs:!0}),s.createElement("section",{className:"mb-4"},s.createElement(U,{type:"my-school-classrooms"}),s.createElement("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"},s.createElement("div",null,s.createElement(p.x,{namespace:te,phrase:"myClassroomsNotice"})," ",s.createElement(ae.d,{href:ee._.safeUrlConcat(null===(a=F.data)||void 0===a?void 0:a.marketingSiteUrl,ne),className:"text-underline",newTab:!0},s.createElement(p.x,{namespace:te,phrase:"learnMore"}))),s.createElement("div",null,s.createElement(u.F,{className:"btn btn-outline-dark hover-bg-white",appLink:{application:w.O.SIGN_UP,action:N.e.SignUp.UPGRADE},analyticsData:{},analyticsOptions:{actionType:m.Vw.Click,location:m.LZ.Classroom,entity:m.py.AppLink,descriptor:m.Yu.Upgrade,workflowPhase:m.eu.Start}},s.createElement(p.x,{namespace:te,phrase:"requestFullAccess"}))))),s.createElement("section",{className:"mb-4"},s.createElement(U,{type:"open-classroom"}),T&&s.createElement(s.Fragment,null,s.createElement(Z.l,{heading:se("demoHeading"),demoInteractive:L.data,liteUrl:null===(t=F.data)||void 0===t?void 0:t.liteUrl,breakpoints:i,imageCdnUrl:null===(n=F.data)||void 0===n?void 0:n.imageCdnUrl,yearGroups:A.data,className:"mt-3",shareType:d.y.Open}),s.createElement(R.k,{shareData:P,hasShareFlowV2:S,hasPermissions:E,breakpoints:i,isPlugin:o,imageCdnUrl:null===(r=F.data)||void 0===r?void 0:r.imageCdnUrl,yearGroups:A.data,className:"mt-3",emptyState:function(){return s.createElement(s.Fragment,null)},hasDemoInsight:!0}))))}function le(e){var a=(0,i.R)(),t=a.experience,o=a.loading,c=(0,l.r)(null).hasShareFlowV2;return o?s.createElement(s.Fragment,null):"none"===t?(n.Q.Ry.throw(new r.d),s.createElement(s.Fragment,null)):"full"===t&&c?s.createElement(Y,null):"full"!==t||c?s.createElement(re,null):s.createElement($.FullClassroomsExperienceView,{query:e.query})}},22767:(e,a,t)=>{t.d(a,{l:()=>d});var s=t(32735),n=t(23481),r=t(2510),l=t(55219),i=t(18006),o=t(9566);const c={background:"HAuP3"};var m=n.T.encloseNamespace("myShares.demoInsights");function d(e){var a,t=e.liteUrl.includes("staging"),n=e.breakpoints.xs||e.breakpoints.sm,d=e.shareType===r.y.Open?o.po:o.vJ,u=e.shareType===r.y.Open?o.$Z:o.GJ,p=Object.assign(Object.assign({},u),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?i.c:i.q})});return s.createElement("div",{className:e.className},s.createElement(l.g,{heading:null!==(a=e.heading)&&void 0!==a?a:m("demoHeading"),isFirst:!0}),s.createElement("div",{className:"".concat(c.background," rounded-3 mb-4")},s.createElement(l.F,{shareData:p,getObjectActions:function(){return[Object.assign(Object.assign({},o.VE),{button:!n,appLink:d})]},imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,breakpoints:e.breakpoints,className:"bg-light-orange",appLink:function(){return d}})))}},18006:(e,a,t)=>{t.d(a,{c:()=>s,q:()=>n});var s="D8qRe7",n="GRWx6w"}}]);
2
- //# sourceMappingURL=7843-528e9d766e-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7843],{35599:(e,a,t)=>{t.d(a,{k:()=>m});var s=t(32735),n=t(87801),r=t(16714),l=t(67467),i=t(5056),o=t(28001),c=t(69003);function m(e){var a,t,m=e.hasShareFlowV2&&e.hasPermissions(r.C.ViewInsights),d=(0,c.cl)([]),u=null!==(a=e.loadingState)&&void 0!==a?a:o.L,p=null!==(t=e.emptyState)&&void 0!==t?t:l.o;return e.loading||e.shareData.showPartialLoading?s.createElement(u,null):e.shareData.sentShares.length?s.createElement("div",{className:e.className},s.createElement(i.R,{sentShares:e.shareData.sentShares,sharedObjects:e.shareData.sharedObjects.items,shareRecipients:e.shareData.shareRecipients.items,interactivesPendingReview:e.shareData.interactivesPendingReview.itemsArr,getObjectActions:function(a){return(0,c.sD)({share:a.share,sharedObject:a.sharedObject,audienceParams:d.audienceAppLinkParams,hasInsights:m,isPlugin:e.isPlugin,breakpoints:e.breakpoints})},groupByDateShared:!0,breakpoints:e.breakpoints,imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,hasDemoInsights:e.hasDemoInsight}),(e.shareData.hasMore||e.shareData.isFetching)&&s.createElement(n._,{isFetching:e.shareData.isFetching,fetchNext:e.shareData.fetchNext,nextCursor:e.shareData.nextCursor})):s.createElement(p,null)}},49221:(e,a,t)=>{t.r(a),t.d(a,{ClassroomsView:()=>le});var s=t(32735),n=t(81886),r=t(67058),l=t(37802),i=t(99998),o=t(23481),c=t(20354),m=t(65858),d=t(2510),u=t(15611),p=t(83345),h=t(39151),g=t(1666),v=t(54405),E=t(44538),f=t(31949),y=t(79967),b=t(22902),C=t(79612),S=t(35223),N=t(14070),w=t(97291),k=t(46390),O=t(98623),x=t(31453),F=t(12528),L=t(83914),A=o.T.encloseNamespace("classrooms.classroomLabel"),P={"my-school-classrooms":"mySchoolClassrooms","favourite-classroom":"favouriteClassroom","open-classroom":"openClassroom"},T={"my-school-classrooms":"purple","favourite-classroom":"purple","open-classroom":"blue"};function D(e){var a;return s.createElement("div",{className:(0,x.A)("d-flex align-items-center gap-2",e.className)},s.createElement("div",null,s.createElement(F.f,{svgName:S.vn.Classrooms,svgSize:L.S.Standard,variant:T[e.type],textVariant:"white",svgWrapperClassName:"p-1"})),s.createElement("h2",{className:"h4 m-0"},null!==(a=e.text)&&void 0!==a?a:A(P[e.type])))}var R=t(59278),I=t(35599),U=t(7733),j=t(38129),G=t(9085),V="classrooms.pinnedClassroomsTiles";function M(){return s.createElement("div",{className:"py"},s.createElement(p.x,{namespace:V,phrase:"emptyPinnedClassrooms"}))}const B={pinnedClassroomTile:"jgtOl",pinnedClassroomTileImage:"TRhIX"};function _(){return s.createElement("div",{className:(0,x.A)("d-flex flex-column rounded overflow-hidden border border-gray-200",B.pinnedClassroomTile)},s.createElement("figure",{className:(0,x.A)("m-0",B.pinnedClassroomTileImage)}),s.createElement("div",{className:"d-flex flex-column gap-2 p-2"},s.createElement("span",{className:"partial-loading-background p-2 w-50"}),s.createElement("span",{className:"partial-loading-background p-2"})))}function H(e){return s.createElement("div",{className:"d-flex flex-row flex-wrap gap-3"},Array.from({length:e.size}).map(function(e,a){return s.createElement(_,{key:a})}))}var W="classrooms.pinnedClassroomsTiles";function q(e){var a=e.classroom.enrolments.data.filter(function(e){return e.role===j.tM.Student}).length,t=(0,G.s)(e.classroom.name,U.o);return s.createElement(u.F,{className:(0,x.A)("d-flex flex-column rounded overflow-hidden border border-gray-400",B.pinnedClassroomTile),appLink:{application:w.O.CLASSROOMS,action:N.e.Classrooms.CLASSROOM_HOME,args:[e.classroom.id]}},s.createElement("figure",{className:(0,x.A)("m-0",B.pinnedClassroomTileImage,t)}),s.createElement("div",{className:"d-flex flex-column gap-1 p-2"},s.createElement("span",{className:"fw-medium"},e.classroom.name),s.createElement("span",{className:"text-muted"},a?s.createElement(p.x,{namespace:W,phrase:"studentsCount",options:{smartCount:a}}):s.createElement(p.x,{namespace:W,phrase:"noStudents"}))))}function z(e){var a,t,n=null!==(a=e.emptyStateComponent)&&void 0!==a?a:M,r=null!==(t=e.loadingStateComponent)&&void 0!==t?t:H;return e.showPartialLoading?s.createElement(r,{size:5}):e.classrooms&&e.classrooms.length?s.createElement("div",{className:"d-flex flex-row flex-wrap gap-3"},e.classrooms.map(function(e){return s.createElement(q,{key:e.id,classroom:e})})):s.createElement(n,null)}var X=t(88630),Z=t(22767),J="classrooms.classroomsOverview",K=o.T.encloseNamespace(J);function Q(e){return s.createElement("div",{className:"d-flex flex-row justify-content-between align-items-center mb-3"},s.createElement(D,{type:e.type}),e.appLink&&!e.hideSeeAll&&s.createElement(u.F,{appLink:e.appLink},s.createElement(p.x,{namespace:J,phrase:"seeAll"})))}function Y(){var e,a,t,n,r,i,u,p,x;(0,C.M)({title:K("pageTitle")});var F=(0,y.k)(),L=(0,k.G)().isPlugin,A=(0,b.T)().hasPermissions,P=(0,l.r)(null).hasShareFlowV2,T=c.a.useBasicFetch(f.N.currentUser()),D=c.a.useBasicFetch(h.L.config()),U=c.a.useBasicFetch(v.X.interactiveMetadata()),j=c.a.useBasicFetch((null===(e=T.data)||void 0===e?void 0:e.isAuthenticated)&&g.h.yearGroups(T.data.customerId)),G=c.a.useBasicFetch(E.K.getRostering()),V=(null===(a=G.data)||void 0===a?void 0:a.status)&&"None"!==G.data.status,M=(0,O.a)({interactiveInsights:!0,shouldFetch:P,params:{type:[d.y.Open]}}),B=c.a.useBasicFetch(X.F.getPinnedClassrooms(null===(t=T.data)||void 0===t?void 0:t.id,null===(n=T.data)||void 0===n?void 0:n.customerId,{withStudents:!0,limit:5})),_=!!(D.data&&U.data&&j.data&&B.data);return s.createElement("div",{className:"px-3"},s.createElement(R.d,{activeTab:"overview",actions:[{label:o.T.getPhrase(J,"newClassroom"),appLink:{application:w.O.CLASSROOMS,action:N.e.Classrooms.NEW_CLASSROOM},svgName:S.vn.Plus,className:"btn btn-outline-dark",disabled:V,tooltip:V?K("disabledByRostering"):"",analyticsOptions:{actionType:m.Vw.Create,entity:m.py.Classroom,workflowPhase:m.eu.Start,location:m.LZ.ClassroomsList},button:!F.xs}],hasRostering:V,hasShareFlowV2:P}),s.createElement("section",{className:"mb-4"},s.createElement(Q,{type:"favourite-classroom",appLink:{application:w.O.CLASSROOMS,action:N.e.Classrooms.VIEW_ALL},hideSeeAll:!(null===(i=null===(r=B.data)||void 0===r?void 0:r.data)||void 0===i?void 0:i.length)}),s.createElement(z,{showPartialLoading:!_,classrooms:null===(u=B.data)||void 0===u?void 0:u.data})),s.createElement("section",{className:"mb-4"},s.createElement(Q,{type:"open-classroom",appLink:{application:w.O.CLASSROOMS,action:N.e.Classrooms.OPEN_CLASSROOMS},hideSeeAll:!(null===(p=M.sentShares)||void 0===p?void 0:p.length)}),s.createElement(I.k,{loading:!_,shareData:M,hasShareFlowV2:P,hasPermissions:A,breakpoints:F,isPlugin:L,imageCdnUrl:null===(x=D.data)||void 0===x?void 0:x.imageCdnUrl,yearGroups:j.data,className:"mt-3",emptyState:function(){var e;return s.createElement(Z.l,{heading:K("demoHeading"),demoInteractive:U.data,breakpoints:F,imageCdnUrl:null===(e=D.data)||void 0===e?void 0:e.imageCdnUrl,yearGroups:j.data,className:"mt-3",shareType:d.y.Open})}})))}var $=t(91047),ee=t(86073),ae=t(98461),te="classrooms.minimalClassroomsExperience",se=o.T.encloseNamespace(te),ne="/product/integrations";function re(){var e,a,t,n;(0,C.M)({title:se("pageTitle")});var r=(0,y.k)(),i=(0,k.G)().isPlugin,o=(0,b.T)().hasPermissions,E=(0,l.r)(null).hasShareFlowV2,S=c.a.useBasicFetch(f.N.currentUser()),x=c.a.useBasicFetch(h.L.config()),F=c.a.useBasicFetch(v.X.interactiveMetadata()),L=c.a.useBasicFetch((null===(e=S.data)||void 0===e?void 0:e.isAuthenticated)&&g.h.yearGroups(S.data.customerId)),A=(0,O.a)({interactiveInsights:!0,shouldFetch:E,params:{type:[d.y.Open]}}),P=!!x.data&&!!F.data&&!!L.data;return s.createElement("div",{className:"px-3"},s.createElement(R.d,{activeTab:"classrooms",hasRostering:!1,hasShareFlowV2:E,hideTabs:!0}),s.createElement("section",{className:"mb-4"},s.createElement(D,{type:"my-school-classrooms"}),s.createElement("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"},s.createElement("div",null,s.createElement(p.x,{namespace:te,phrase:"myClassroomsNotice"})," ",s.createElement(ae.d,{href:ee._.safeUrlConcat(null===(a=x.data)||void 0===a?void 0:a.marketingSiteUrl,ne),className:"text-underline",newTab:!0},s.createElement(p.x,{namespace:te,phrase:"learnMore"}))),s.createElement("div",null,s.createElement(u.F,{className:"btn btn-outline-dark hover-bg-white",appLink:{application:w.O.SIGN_UP,action:N.e.SignUp.UPGRADE},analyticsData:{},analyticsOptions:{actionType:m.Vw.Click,location:m.LZ.Classroom,entity:m.py.AppLink,descriptor:m.Yu.Upgrade,workflowPhase:m.eu.Start}},s.createElement(p.x,{namespace:te,phrase:"requestFullAccess"}))))),s.createElement("section",{className:"mb-4"},s.createElement(D,{type:"open-classroom"}),P&&s.createElement(s.Fragment,null,s.createElement(Z.l,{heading:se("demoHeading"),demoInteractive:F.data,breakpoints:r,imageCdnUrl:null===(t=x.data)||void 0===t?void 0:t.imageCdnUrl,yearGroups:L.data,className:"mt-3",shareType:d.y.Open}),s.createElement(I.k,{shareData:A,hasShareFlowV2:E,hasPermissions:o,breakpoints:r,isPlugin:i,imageCdnUrl:null===(n=x.data)||void 0===n?void 0:n.imageCdnUrl,yearGroups:L.data,className:"mt-3",emptyState:function(){return s.createElement(s.Fragment,null)},hasDemoInsight:!0}))))}function le(e){var a=(0,i.R)(),t=a.experience,o=a.loading,c=(0,l.r)(null).hasShareFlowV2;return o?s.createElement(s.Fragment,null):"none"===t?(n.Q.Ry.throw(new r.d),s.createElement(s.Fragment,null)):"full"===t&&c?s.createElement(Y,null):"full"!==t||c?s.createElement(re,null):s.createElement($.FullClassroomsExperienceView,{query:e.query})}},22767:(e,a,t)=>{t.d(a,{l:()=>d});var s=t(32735),n=t(23481),r=t(2510),l=t(55219),i=t(18006),o=t(9566);const c={background:"HAuP3"};var m=n.T.encloseNamespace("myShares.demoInsights");function d(e){var a,t=e.breakpoints.xs||e.breakpoints.sm,n=e.shareType===r.y.Open?o.po:o.vJ,d=e.shareType===r.y.Open?o.$Z:o.GJ,u=Object.assign(Object.assign({},d),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:i.A})});return s.createElement("div",{className:e.className},s.createElement(l.g,{heading:null!==(a=e.heading)&&void 0!==a?a:m("demoHeading"),isFirst:!0}),s.createElement("div",{className:"".concat(c.background," rounded-3 mb-4")},s.createElement(l.F,{shareData:u,getObjectActions:function(){return[Object.assign(Object.assign({},o.VE),{button:!t,appLink:n})]},imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,breakpoints:e.breakpoints,className:"bg-light-orange",appLink:function(){return n}})))}},18006:(e,a,t)=>{t.d(a,{A:()=>s});var s="GRWx6w"}}]);
2
+ //# sourceMappingURL=7843-fb27a0c27f-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7843-fb27a0c27f-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 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 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_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 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 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: DEMO_INTERACTIVE_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_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","shareType","productIntegrationsPath","MinimalClassroomsExperienceView","hideTabs","ExternalLink","href","UrlHelper","marketingSiteUrl","newTab","analyticsData","descriptor","ClassroomsView","useClassroomExperience","experience","NotFoundError","FullClassroomsExperienceView","query","isMobile","sm","demoShareTableData","isFirst","MySharesTableRow","DEMO_INTERACTIVE_ID"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8139],{81192:(e,t,n)=>{n.d(t,{Z:()=>m});var i=n(32735),a=n(80130),r=n(92802),c=n(23481),o=n(5173),s=(0,o.Ry)().shape({preventScrubbing:(0,o.O7)(),immediateFeedback:(0,o.O7)()}),l=n(82644),u=n(83345),d=n(83523);function p(e){return i.createElement("div",null,i.createElement("div",{className:"d-flex flex-row gap-1 justify-content-between align-items-center w-100 mb-1"},i.createElement("label",{className:"m-0 cursor-pointer",htmlFor:e.id,onClick:e.onClick},e.label),i.createElement(d.Z,{id:e.id,name:e.id,onClick:e.onClick,on:e.checked})),i.createElement("p",{className:"m-0 text-secondary"},e.description))}var y="sharev2.shareSettingsForm",v=c.T.encloseNamespace(y);function h(e){var t=(0,r.u6)();function n(e,n){t.setFieldValue(e,n),t.submitForm()}return i.createElement(a.Z,{className:"d-flex flex-column gap-2"},!e.hideFormHeading&&i.createElement("div",{className:"d-flex flex-row gap-2 justify-content-between align-items-center"},i.createElement("h3",{className:"h6 m-0"},i.createElement(u.x,{namespace:y,phrase:"heading"})),"function"==typeof e.onClickDelete&&i.createElement("a",{onClick:e.onClickDelete,className:"text-danger cursor-pointer"},e.deleteText||i.createElement(u.x,{namespace:y,phrase:"delete"}))),i.createElement("div",{className:"d-flex flex-column gap-2"},e.showPreventScrubbingField&&i.createElement(p,{id:"prevent-scrubbing",label:v("preventScrubbingLabel"),description:v("preventScrubbingDescription"),checked:!!t.values.preventScrubbing,onClick:function(){return n("preventScrubbing",!t.values.preventScrubbing)}}),e.showImmediateFeedbackField&&i.createElement(p,{id:"immediate-feedback",label:v("immediateFeedbackLabel"),description:v("immediateFeedbackDescription"),checked:!!t.values.immediateFeedback,onClick:function(){return n("immediateFeedback",!t.values.immediateFeedback)}})))}function m(e){return!e.hideFormHeading||e.showImmediateFeedbackField||e.showPreventScrubbingField?i.createElement(l.n,{initialValues:e.initialValues,onSubmit:e.onSubmit,castInitialValues:!1,validationSchema:s},i.createElement(h,Object.assign({},e))):i.createElement(i.Fragment,null)}},33518:(e,t,n)=>{var i;n.d(t,{e:()=>i}),function(e){e.Public="Public",e.PinCode="PinCode",e.PasswordProtected="PasswordProtected",e.ProtectedOverrideRestriction="ProtectedOverrideRestriction",e.JustMySchoolOverrideRestriction="JustMySchoolOverrideRestriction",e.Protected="Protected",e.JustMySchool="JustMySchool",e.Direct="Direct"}(i||(i={}))},93563:(e,t,n)=>{n.d(t,{_:()=>s});var i=n(20354),a=n(57881),r=n(33518),c=n(18488),o=n(8233);function s(e){var t=i.a.useGetFetchAsync(),n=i.a.useBasicFetch(c.o.getPrivacy(e.entityId));return{loaded:!!n.data,updateShareLink:function(e,n){if(n.privacy===r.e.PasswordProtected)throw a.Y.logError("Cannot update to legacy share privacy(".concat(n.privacy,") for share with id ").concat(e)),new Error("invalid-share-privacy");return t(c.o.updateShare(e,n))},createShareLink:function(i){var a=null!=i?i:"protected"===o.R.getShareLinkAccessType(n.data)?r.e.Protected:r.e.JustMySchool;return t(c.o.createShareLink({objectId:e.entityId,privacy:a}))},deleteShareLink:function(e){return t(c.o.deleteShare(e))}}}},87265:(e,t,n)=>{n.d(t,{s:()=>s});var i=n(20354),a=n(18488),r=n(2267),c=n(39151),o=n(31949);function s(e){var t,n=i.a.useBasicFetch(o.N.currentUser()),s=r.I.getFetchFunctionByType(e.entityType)(e.entityId,null===(t=n.data)||void 0===t?void 0:t.id),l=i.a.useBasicFetch(a.o.getPrivacy(e.entityId)),u=i.a.useBasicFetch(e.shareId?a.o.getShare(e.shareId):a.o.getShareLink(e.entityId)),d=i.a.useBasicFetch(c.L.config());return{dataLoaded:!!(s.data&&n.data&&l.data&&u.data&&d.data),currentUser:n,entity:s,privacy:l,share:u,config:d}}},8233:(e,t,n)=>{n.d(t,{R:()=>y});var i=n(23481),a=n(110),r=n(33518),c=n(4594),o=n(49080),s=n(26361),l=n(35223),u=n(31908);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}var p=i.T.encloseNamespace("sharev2.utils"),y={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,i=e.hasStudentExp,a=e.entity,o=e.yearGroups;if(t===c.E.Topic||t===c.E.Series)return{icon:l.vn.VisibleOn,text:p(i?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case r.e.Public:return{icon:l.vn.VisibleOn,text:p("publicDescription")};case r.e.ProtectedOverrideRestriction:return{icon:l.vn.VisibleOn,text:p("clickViewOnly")};case r.e.Protected:return{icon:l.vn.Lock,text:y.getRespectRatingText(a,o,i)};case r.e.JustMySchoolOverrideRestriction:return{icon:l.vn.Lock,text:p(i?"justMySchoolTeachers":"justMySchoolDescription")};case r.e.JustMySchool:return{icon:l.vn.Lock,text:y.getRespectRatingText(a,o,i)};case r.e.PinCode:return{icon:l.vn.Lock,text:p("pinDescription")};case r.e.PasswordProtected:return{icon:l.vn.Lock,text:p("password")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,i=e.status;if(!t&&!n)return y.getPrivateIconAndText(e);if(!t)return{icon:l.vn.Lock,text:p("password")};var r=a.O.isToday(t),c=a.O.diffBetween(t,new Date,"day");if(!n){var s=r?p("expiryToday"):p("expiry",{days:c});return i===o.F.Expired&&(s=p("expired")),{icon:l.vn.Timer,text:s}}var u=r?p("passwordExpiryToday"):p("passwordExpiry",{days:c});return i===o.F.Expired&&(u=p("passwordExpired")),{icon:l.vn.Lock,text:u}},getRespectRatingText:function(e,t,n){var i;if(!e||!t)return null;if(n)return p("justMySchoolTeachers");if(!u.M.isVideoType(e))return p("collectionRating");var a=s.l.getWeightedRestriction(null===(i=e._restrictions)||void 0===i?void 0:i.value);if(a&&!a.yearGroup)return p("onlyAdmins");var r,c,o,l=u.M.getRating(e),y=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,a=function(){};return{s:a,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,c=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){o=!0,r=e},f:function(){try{c||null==n.return||n.return()}finally{if(o)throw r}}}}(t);try{for(y.s();!(o=y.n()).done;){var v=o.value;(!r||v.value>r.value)&&(r=v),a&&v.value<=a.yearGroup||l&&v.rating.value<l.value||(!c||v.value<c.value)&&(c=v)}}catch(e){y.e(e)}finally{y.f()}return c?1===t.length?p("clickViewOnly"):c.value===r.value?p("maxYearGroup",{yearGroup:r.name}):p("yearGroupRange",{yearGroup:c.name}):p("onlyStaff")},getShareLinkAccessType:function(e){return e.isTvContent||e.isClickViewContent?"protected":e.canManageAccess?"owner":"private"}}},2267:(e,t,n)=>{n.d(t,{I:()=>l});var i=n(20354),a=n(64249),r=n(4594),c=n(5112),o=n(60011),s=n(40841),l={canEmbed:function(e){return["video","interactive","clip"].includes(e)},canAddPolicies:function(e){return["interactive"].includes(e)},getEnabledIntegrations:function(e,t){return s._.getShareIntegrations(e,t).filter(function(e){return e.enabled}).map(function(e){return e.id})},getShareSettingsInitialValues:function(e,t){var n,i,a,r,c,o;return{preventScrubbing:null!==(a=null!==(i=null===(n=null==e?void 0:e.options)||void 0===n?void 0:n.preventScrubbing)&&void 0!==i?i:null==t?void 0:t.preventScrubbing)&&void 0!==a&&a,immediateFeedback:null!==(o=null!==(c=null===(r=null==e?void 0:e.options)||void 0===r?void 0:r.immediateFeedback)&&void 0!==c?c:null==t?void 0:t.immediateFeedback)&&void 0!==o&&o}},getEnabledSettingsField:function(e){return{showImmediateFeedbackField:"interactive"===e,showPreventScrubbingField:"interactive"===e}},getSharableEntityType:function(e){switch(e.objectTypeId){case r.E.Video:return"video";case r.E.Playlist:return"playlist";case r.E.Subject:return"subject";case r.E.Series:return"series";case r.E.Interactive:return"interactive";case r.E.Clip:return"clip"}},getFetchFunctionByType:function(e){switch(e){case"playlist":return function(e){return i.a.useBasicFetch(c.C.playlistWithThumbnailAndCount(e))};case"series":return function(e){return i.a.useBasicFetch(o.J.seriesWithThumbnailAndCount(e))}}return a.I.getFetchFunctionByType(e)},getAnalyticsEntity:function(e){return a.I.getAnalyticsEntity(e)},getAnalyticsOptions:function(e){return a.I.getAnalyticsOptions(e)}}},31121:(e,t,n)=>{n.d(t,{j:()=>o});var i=n(65858),a=n(84850);function r(e){return"share"in e&&!!e.share}var c={"create-share-link":{isValid:r,analyticsOptions:{actionType:i.Vw.Create,workflowPhase:i.eu.Complete,entity:i.py.ShareLink}},"update-share-link":{isValid:r,analyticsOptions:{actionType:i.Vw.Edit,entity:i.py.ShareLink,workflowPhase:i.eu.Complete}},"delete-share-link":{isValid:r,analyticsOptions:{actionType:i.Vw.Delete,entity:i.py.ShareLink,workflowPhase:i.eu.Complete}},"plugin-share-embed":{isValid:r,analyticsOptions:{actionType:i.Vw.Share,descriptor:i.YM.PluginEmbed,workflowPhase:i.eu.Complete,entity:i.py.ShareLink}},"copy-embed-html":{isValid:function(){return!0},analyticsOptions:{actionType:i.Vw.Share,workflowPhase:i.eu.Complete,entity:i.py.ShareLink,descriptor:i.YM.CopyEmbedHtml}},"copy-share-link":{isValid:r,analyticsOptions:{actionType:i.Vw.Share,workflowPhase:i.eu.Complete,entity:i.py.ShareLink,descriptor:i.YM.CopyLink}}};function o(e){var t,n=(0,a.X)({analyticsOptions:e.analyticsOptions,baseData:e.data,config:c,shouldLog:null===(t=e.shouldLog)||void 0===t||t});return{log:n.log,getData:n.getData}}},2867:(e,t,n)=>{n.d(t,{W:()=>y});var i=n(23481),a=n(20354),r=n(93563),c=n(87265),o=n(2267),s=n(4594),l=n(20768),u=n(69883),d=n(45778),p=i.T.encloseNamespace("sharev2.useShareSettingsData");function y(e){var t=(0,u.Z)(),n=(0,c.s)({entityId:e.entityId,entityType:e.entityType,shareId:e.shareId}),i=n.config,y=n.entity,v=n.share,h=(0,r._)({entityId:e.entityId}),m=h.loaded,f=h.updateShareLink,g=a.a.useBasicFetch(d.G.isType(y.data,s.E.Interactive)&&y.data.interactiveId&&l.b.interactive(y.data.interactiveId));function b(n){e.log({type:"update-share-link",share:n}),t.success(p("editSuccess",{name:y.data.name,escapeText:!0}))}var k=o.I.getShareSettingsInitialValues(v.data,g.data);return{data:{loaded:m&&!!v.data&&!!i.data&&!!y.data},initialValues:k,onClickSaveLink:function(e,n){f(v.data.shareId,e).then(b).catch(function(){t.error(p("editError",{name:y.data.name,escapeText:!0})),n()})}}}},84850:(e,t,n)=>{n.d(t,{X:()=>r});var i=n(1048),a=n(49985);function r(e){function t(t,n){var r=e.config[t.type];if(null==r?void 0:r.isValid(t)){var c=Object.assign(Object.assign({},e.baseData),t);return{data:i.t.omit(c,["type"]),analyticsOptions:a.k.mergeOptions(r.analyticsOptions,[e.analyticsOptions,n])}}}return{getData:t,log:function(n,i){if(e.shouldLog){var r=t(n,i);r&&a.k.logUserAction(r.data,r.analyticsOptions)}}}}}}]);
2
+ //# sourceMappingURL=8139-5a213506ea-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8139-5a213506ea-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/validation/ShareSettingsFormValidationSchema.ts","file:///app/packages/libs/shared/src/apps/share-v2/components/share-settings-field/ShareSettingsField.tsx","file:///app/packages/libs/shared/src/apps/share-v2/components/share-settings-form/ShareSettingsForm.tsx","file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkActions.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkData.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareViewHelper.tsx","file:///app/packages/libs/shared/src/apps/share-v2/utils/get-share-event-logger/getShareEventLogger.ts","file:///app/packages/libs/shared/src/apps/share-v2/views/share-settings-view/hooks/use-share-settings-data/useShareSettingsData.ts","file:///app/packages/libs/shared/src/utils/get-event-logger/getEventLogger.ts"],"sourcesContent":["import { boolean, object } from 'yup';\n\nexport const ShareSettingsFormValidationSchema = object().shape({\n preventScrubbing: boolean(),\n immediateFeedback: boolean()\n});","import React from 'react';\n\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\ninterface ShareSettingsFieldProps {\n id: string;\n label: string;\n description: string;\n onClick: () => void;\n checked: boolean;\n}\n\nexport function ShareSettingsField(props: ShareSettingsFieldProps): JSX.Element {\n return (\n <div>\n <div className='d-flex flex-row gap-1 justify-content-between align-items-center w-100 mb-1'>\n <label className='m-0 cursor-pointer' htmlFor={props.id} onClick={props.onClick}>{props.label}</label>\n <ToggleSwitch\n id={props.id}\n name={props.id}\n onClick={props.onClick}\n on={props.checked}\n />\n </div>\n <p className='m-0 text-secondary'>{props.description}</p>\n </div>\n );\n}","import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareSettingsFormFields } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { ShareSettingsFormValidationSchema } from 'libs/shared/apps/share-v2/validation/ShareSettingsFormValidationSchema';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ShareSettingsField } from '../share-settings-field/ShareSettingsField';\n\nconst namespace = 'sharev2.shareSettingsForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ShareSettingsFormProps {\n initialValues: ShareSettingsFormFields;\n onSubmit: (\n data: ShareSettingsFormFields,\n onDone: (options?: FormSubmissionOptions<ShareSettingsFormFields>) => void\n ) => void;\n showPreventScrubbingField?: boolean;\n showImmediateFeedbackField?: boolean;\n hideFormHeading?: boolean;\n deleteText?: string;\n onClickDelete?: () => void;\n}\n\nfunction ShareSettingsFromComponent(props: ShareSettingsFormProps): JSX.Element {\n const formikProps = useFormikContext<ShareSettingsFormFields>();\n\n function setFormikFieldAndSave\n <T extends keyof ShareSettingsFormFields>(field: T, value: ShareSettingsFormFields[T]) {\n formikProps.setFieldValue(field, value);\n formikProps.submitForm();\n }\n\n return (\n <Form className='d-flex flex-column gap-2'>\n {!props.hideFormHeading &&\n <div className='d-flex flex-row gap-2 justify-content-between align-items-center'>\n <h3 className='h6 m-0'>\n <Text namespace={namespace} phrase='heading' />\n </h3>\n {typeof props.onClickDelete === 'function' &&\n <a onClick={props.onClickDelete} className='text-danger cursor-pointer'>\n {props.deleteText || <Text namespace={namespace} phrase='delete' />}\n </a>\n }\n </div>\n }\n <div className='d-flex flex-column gap-2'>\n {props.showPreventScrubbingField &&\n <ShareSettingsField\n id='prevent-scrubbing'\n label={getPhrase('preventScrubbingLabel')}\n description={getPhrase('preventScrubbingDescription')}\n checked={!!formikProps.values.preventScrubbing}\n onClick={() => setFormikFieldAndSave('preventScrubbing', !formikProps.values.preventScrubbing)}\n />\n }\n {props.showImmediateFeedbackField &&\n <ShareSettingsField\n id='immediate-feedback'\n label={getPhrase('immediateFeedbackLabel')}\n description={getPhrase('immediateFeedbackDescription')}\n checked={!!formikProps.values.immediateFeedback}\n onClick={() => setFormikFieldAndSave('immediateFeedback', !formikProps.values.immediateFeedback)}\n />\n }\n </div>\n </Form>\n );\n}\n\nexport function ShareSettingsForm(props: ShareSettingsFormProps): JSX.Element {\n const isEverythingHidden = props.hideFormHeading\n && !props.showImmediateFeedbackField\n && !props.showPreventScrubbingField;\n\n if (isEverythingHidden)\n return <></>;\n\n return (\n <FormWrapper<ShareSettingsFormFields>\n initialValues={props.initialValues}\n onSubmit={props.onSubmit}\n castInitialValues={false}\n validationSchema={ShareSettingsFormValidationSchema}\n >\n <ShareSettingsFromComponent {...props} />\n </FormWrapper>\n );\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","import { Flight } from 'libs/common/react/index';\n\nimport { Logger } from 'libs/shared/utils/Logger';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { Share } from '../interfaces/Share';\nimport { SharePrivacyResponse } from '../interfaces/SharePrivacyResponse';\nimport { UpdateShareRequest } from '../interfaces/UpdateShareRequest';\nimport { ShareLinkHelper } from '../utils/ShareLinkHelper';\n\ninterface UseShareLinkActionsOptions {\n entityId: string;\n}\n\nexport function useShareLinkActions(options: UseShareLinkActionsOptions) {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const entityPrivacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n\n function getCreateSharePrivacy() {\n const accessType = ShareLinkHelper.getShareLinkAccessType(entityPrivacy.data);\n\n return accessType === 'protected'\n ? SharePrivacy.Protected\n : SharePrivacy.JustMySchool;\n }\n\n function updateShareLink(shareId: string, data: UpdateShareRequest): Promise<Share> {\n // Legacy share privacy - if we try to update to this we should log & throw an error\n if (data.privacy === SharePrivacy.PasswordProtected) {\n Logger.logError(`Cannot update to legacy share privacy(${data.privacy}) for share with id ${shareId}`);\n\n throw new Error('invalid-share-privacy');\n }\n \n return fetchAsync<Share>(ShareRequests.updateShare(shareId, data));\n }\n\n function createShareLink(privacy?: SharePrivacy): Promise<Share> {\n const requestPrivacy = privacy ?? getCreateSharePrivacy();\n return fetchAsync<Share>(ShareRequests.createShareLink({ objectId: options.entityId, privacy: requestPrivacy }));\n }\n\n function deleteShareLink(shareId: string): Promise<void> {\n return fetchAsync(ShareRequests.deleteShare(shareId));\n }\n\n return {\n loaded: !!entityPrivacy.data,\n updateShareLink,\n createShareLink,\n deleteShareLink\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport type { Config, CurrentUser } from 'libs/shared/interfaces';\n\nimport { Share } from '../interfaces/Share';\n\ninterface UseShareLinkDataOptions {\n entityId: string;\n entityType: SharableEntityType;\n shareId?: string;\n}\n\n\nexport function useShareLinkData(options: UseShareLinkDataOptions) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(options.entityType)(options.entityId, currentUser.data?.id);\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n const share = Flight.useBasicFetch<Share>(options.shareId\n ? ShareRequests.getShare(options.shareId)\n : ShareRequests.getShareLink(options.entityId));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n \n const dataLoaded = !!entity.data\n && !!currentUser.data\n && !!privacy.data\n && !!share.data\n && !!config.data;\n\n return {\n dataLoaded,\n currentUser: currentUser,\n entity: entity,\n privacy: privacy,\n share: share,\n config: config\n };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport type { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacy;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\ninterface GetPrivateIconAndTextOptions {\n privacy: SharePrivacy;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetPrivateIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('pinDescription') };\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getShareLinkAccessType(privacy: SharePrivacyResponse): 'private' | 'owner' | 'protected' {\n /**\n * If an entity is not a ClickView content and they cannot manage access\n * settings of the entity (which they can if its their private entity)\n * it means that its a TV content\n */\n if (privacy.isTvContent || privacy.isClickViewContent)\n return 'protected';\n\n if (privacy.canManageAccess)\n return 'owner';\n\n return 'private';\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsOptions, EntityType } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper as OldShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport type { Clip, Interactive, InteractiveMetadata, Playlist, Series, Subject, Video } from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport interface ShareSettingsFormFields {\n preventScrubbing: boolean;\n immediateFeedback: boolean;\n}\n\nexport const ShareViewHelper = {\n canEmbed(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n\n /**\n * Only interactive entities can update share settings currently\n */\n canAddPolicies(type: SharableEntityType): boolean {\n return ['interactive'].includes(type);\n },\n\n getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n },\n\n getShareSettingsInitialValues(share: Share, interactive: Interactive | null) {\n return {\n preventScrubbing: share?.options?.preventScrubbing ?? interactive?.preventScrubbing ?? false,\n immediateFeedback: share?.options?.immediateFeedback ?? interactive?.immediateFeedback ?? false\n };\n },\n \n getEnabledSettingsField(entityType: SharableEntityType): {[key in `show${Capitalize<keyof ShareSettingsFormFields>}Field`]: boolean} {\n return {\n showImmediateFeedbackField: entityType === 'interactive',\n showPreventScrubbingField: entityType === 'interactive'\n };\n },\n\n getSharableEntityType(share: Share): SharableEntityType {\n switch (share.objectTypeId) {\n case MasterType.Video:\n return 'video';\n case MasterType.Playlist:\n return 'playlist';\n case MasterType.Subject:\n return 'subject';\n case MasterType.Series:\n return 'series';\n case MasterType.Interactive:\n return 'interactive';\n case MasterType.Clip:\n return 'clip';\n }\n },\n\n /**\n * Methods from old ShareViewHelper imported here for namespacing\n */\n getFetchFunctionByType: (type: SharableEntityType) => {\n switch (type) {\n case 'playlist': {\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.playlistWithThumbnailAndCount(id));\n }\n\n case 'series': {\n return (id: string) => Flight.useBasicFetch<Series>(SeriesRequests.seriesWithThumbnailAndCount(id));\n }\n }\n \n return OldShareViewHelper.getFetchFunctionByType(type);\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n return OldShareViewHelper.getAnalyticsEntity(entityType);\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return OldShareViewHelper.getAnalyticsOptions(entityType);\n }\n};","import { AnalyticsOptions, EntityType, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { BaseShareData, ShareLogData } from './interfaces/GetShareEventLogger';\n\ninterface ShareEventLoggerOptions {\n data: BaseShareData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport type ShareLogFn = ReturnType<typeof getShareEventLogger>['log'];\n\nfunction isValidShare(data: ShareLogData): boolean {\n if (!('share' in data))\n return false;\n\n return !!data.share;\n}\n\nconst LogDataConfig: EventLogConfig<ShareLogData> = {\n /**\n * Share - Link\n */\n 'create-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink\n }\n },\n 'update-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n workflowPhase: WorkflowPhase.Complete\n }\n },\n 'delete-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Delete,\n entity: EntityType.ShareLink,\n workflowPhase: WorkflowPhase.Complete\n }\n },\n\n 'plugin-share-embed': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink\n }\n },\n\n /**\n * General\n */\n 'copy-embed-html': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink, // default\n descriptor: ShareDescriptors.CopyEmbedHtml\n }\n },\n 'copy-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink, // default\n descriptor: ShareDescriptors.CopyLink\n }\n }\n};\n\nexport function getShareEventLogger(options: ShareEventLoggerOptions) {\n const { log, getData } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: LogDataConfig,\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { useShareLinkActions } from 'libs/shared/apps/share-v2/hooks/useShareLinkActions';\nimport { useShareLinkData } from 'libs/shared/apps/share-v2/hooks/useShareLinkData';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport type { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\nimport { ShareLogFn } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport type { Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nconst namespace = 'sharev2.useShareSettingsData';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UseShareSettingsDataOptions {\n entityId: string;\n entityType: SharableEntityType;\n shareId?: string;\n log: ShareLogFn;\n}\n\nexport function useShareSettingsData(options: UseShareSettingsDataOptions) {\n const alerts = useAlerts();\n\n const { config, entity, share } = useShareLinkData({\n entityId: options.entityId,\n entityType: options.entityType,\n shareId: options.shareId\n });\n\n const { loaded: shareLinkActionsLoaded, updateShareLink } = useShareLinkActions({ entityId: options.entityId });\n \n /**\n * Fetch interactive videos options to set them as defaults\n * if the interactive share data does not have any options set\n */\n const interactive = Flight.useBasicFetch<Interactive>(\n MasterTypeHelper.isType<InteractiveMetadata>(entity.data, MasterType.Interactive) && entity.data.interactiveId &&\n InteractiveRequests.interactive(entity.data.interactiveId)\n );\n\n function onSuccess(updatedShare: Share) {\n options.log({\n type: 'update-share-link',\n share: updatedShare\n });\n \n alerts.success(getPhrase('editSuccess', { name: entity.data.name, escapeText: true }));\n }\n \n function onClickSaveLink(data: UpdateShareRequest, onError: () => void): void {\n updateShareLink(share.data.shareId, data)\n .then(onSuccess)\n .catch(() => {\n alerts.error(getPhrase('editError', { name: entity.data.name, escapeText: true }));\n onError();\n });\n }\n \n const initialValues = ShareViewHelper.getShareSettingsInitialValues(share.data, interactive.data);\n \n const loaded = shareLinkActionsLoaded\n && !!share.data\n && !!config.data\n && !!entity.data;\n\n return {\n data: {\n loaded\n },\n initialValues,\n onClickSaveLink\n };\n}","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\n/**\n * Base type that every event needs to extend from\n */\nexport interface BaseEventLogData<T extends string = string> {\n type: T;\n}\n\n/**\n * Utility type to map event types to config types\n */\nexport type EventLogConfig<TEvents extends BaseEventLogData> = {\n [K in TEvents['type']]: BaseConfigData<Extract<TEvents, { type: K }>>;\n};\n\ninterface BaseConfigData<T extends BaseEventLogData> {\n isValid?: (data: T) => boolean;\n analyticsOptions: AnalyticsOptions;\n}\n\ninterface GetEventLoggerOptions<TData extends HashObject, TEvents extends BaseEventLogData> {\n baseData: TData;\n /**\n * Event type config map\n */\n config: EventLogConfig<TEvents>;\n /**\n * Base analytics options\n */\n analyticsOptions: AnalyticsOptions;\n\n shouldLog?: boolean;\n}\n\n/**\n * Method build and log events which are typed using map\n * passed in from config\n */\nexport function getEventLogger<\n TData extends HashObject = HashObject,\n TEvents extends BaseEventLogData = BaseEventLogData\n>(\n options: GetEventLoggerOptions<TData, TEvents>\n) {\n /**\n * Types to assist hinting in our log / getData methods\n */\n type EventType = TEvents['type']; // type of event\n type EventData = Extract<TEvents, { type: EventType }>; // restrict the data to the passed type\n \n /**\n * Get analytics data and options for a given event type\n */\n function getData(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n const logDataConfig = options.config[data.type];\n\n if (!logDataConfig?.isValid(data))\n return;\n\n const mergedData = {\n ...options.baseData,\n ...data\n };\n \n const sanitizedData = ObjectHelper.omit<typeof data>(mergedData, ['type']);\n\n const analyticsOptions = AnalyticsHelper.mergeOptions(\n logDataConfig.analyticsOptions,\n [\n options.analyticsOptions,\n logAnalyticsOptions\n ]\n );\n\n return {\n data: sanitizedData,\n analyticsOptions\n };\n }\n\n /**\n * Similar to `getData` except it logs the analytics event\n * for a given type if its valid\n */\n function log(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n if (!options.shouldLog)\n return;\n\n const analytics = getData(data, logAnalyticsOptions);\n\n if (!analytics)\n return;\n\n AnalyticsHelper.logUserAction(analytics.data, analytics.analyticsOptions);\n }\n\n return {\n getData,\n log\n };\n}"],"names":["ShareSettingsFormValidationSchema","shape","preventScrubbing","immediateFeedback","ShareSettingsField","props","className","htmlFor","id","onClick","label","ToggleSwitch","name","on","checked","description","namespace","getPhrase","LanguageService","ShareSettingsFromComponent","formikProps","setFormikFieldAndSave","field","value","setFieldValue","submitForm","Form","hideFormHeading","Text","phrase","onClickDelete","deleteText","showPreventScrubbingField","values","showImmediateFeedbackField","ShareSettingsForm","FormWrapper","initialValues","onSubmit","castInitialValues","validationSchema","SharePrivacy","useShareLinkActions","options","fetchAsync","entityPrivacy","entityId","loaded","data","updateShareLink","shareId","privacy","Error","createShareLink","requestPrivacy","objectId","deleteShareLink","useShareLinkData","currentUser","entity","entityType","share","config","dataLoaded","ShareLinkHelper","getPrivateIconAndText","entityTypeId","hasStudentExp","yearGroups","icon","text","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","Date","days","video","restriction","_restrictions","yearGroup","maxYearGroup","minAllowedYearGroup","rating","length","getShareLinkAccessType","isTvContent","isClickViewContent","canManageAccess","ShareViewHelper","canEmbed","type","includes","canAddPolicies","getEnabledIntegrations","googleClassroomSetting","msftTeamsSetting","filter","i","enabled","map","getShareSettingsInitialValues","interactive","getEnabledSettingsField","getSharableEntityType","objectTypeId","getFetchFunctionByType","getAnalyticsEntity","getAnalyticsOptions","isValidShare","LogDataConfig","isValid","analyticsOptions","actionType","workflowPhase","descriptor","getShareEventLogger","baseData","shouldLog","log","getData","useShareSettingsData","alerts","shareLinkActionsLoaded","interactiveId","onSuccess","updatedShare","success","escapeText","onClickSaveLink","onError","then","error","getEventLogger","logAnalyticsOptions","logDataConfig","mergedData","analytics"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9701],{29923:(e,t,n)=>{n.d(t,{F:()=>s});var r=n(32735),i=n(23481),a=n(89965),o=n(13876);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var l=i.T.encloseNamespace("sharev2.deleteShareContent");function s(e){var t,n,i,s=(n=r.useState(!1),i=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,c=[],l=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(n,i)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(n,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],d=s[1];return r.createElement("div",{className:"d-flex flex-column gap-3"},r.createElement("p",{className:"m-0"},e.phrases.leadingSentence),r.createElement("ul",{className:"m-0"},e.phrases.bulletPoints.map(function(e,t){return r.createElement("li",{key:t},e)})),r.createElement(a.X,{id:"ack",checked:u,onChange:function(e){return d(e.target.checked)},label:e.phrases.acknowledgement}),r.createElement(o.u,null,e.onBack&&r.createElement(o.u.Cancel,{onClick:e.onBack,text:null!==(t=e.phrases.backButton)&&void 0!==t?t:l("backButton"),variant:"link"}),r.createElement(o.u.Submit,{onClick:function(){u&&!e.loading&&e.onDelete()},text:e.phrases.deleteButton,variant:"danger",disabled:!u||e.loading,showSpinner:e.loading})))}},33518:(e,t,n)=>{var r;n.d(t,{e:()=>r}),function(e){e.Public="Public",e.PinCode="PinCode",e.PasswordProtected="PasswordProtected",e.ProtectedOverrideRestriction="ProtectedOverrideRestriction",e.JustMySchoolOverrideRestriction="JustMySchoolOverrideRestriction",e.Protected="Protected",e.JustMySchool="JustMySchool",e.Direct="Direct"}(r||(r={}))},93563:(e,t,n)=>{n.d(t,{_:()=>l});var r=n(20354),i=n(57881),a=n(33518),o=n(18488),c=n(8233);function l(e){var t=r.a.useGetFetchAsync(),n=r.a.useBasicFetch(o.o.getPrivacy(e.entityId));return{loaded:!!n.data,updateShareLink:function(e,n){if(n.privacy===a.e.PasswordProtected)throw i.Y.logError("Cannot update to legacy share privacy(".concat(n.privacy,") for share with id ").concat(e)),new Error("invalid-share-privacy");return t(o.o.updateShare(e,n))},createShareLink:function(r){var i=null!=r?r:"protected"===c.R.getShareLinkAccessType(n.data)?a.e.Protected:a.e.JustMySchool;return t(o.o.createShareLink({objectId:e.entityId,privacy:i}))},deleteShareLink:function(e){return t(o.o.deleteShare(e))}}}},87265:(e,t,n)=>{n.d(t,{s:()=>l});var r=n(20354),i=n(18488),a=n(2267),o=n(39151),c=n(31949);function l(e){var t,n=r.a.useBasicFetch(c.N.currentUser()),l=a.I.getFetchFunctionByType(e.entityType)(e.entityId,null===(t=n.data)||void 0===t?void 0:t.id),s=r.a.useBasicFetch(i.o.getPrivacy(e.entityId)),u=r.a.useBasicFetch(e.shareId?i.o.getShare(e.shareId):i.o.getShareLink(e.entityId)),d=r.a.useBasicFetch(o.L.config());return{dataLoaded:!!(l.data&&n.data&&s.data&&u.data&&d.data),currentUser:n,entity:l,privacy:s,share:u,config:d}}},8233:(e,t,n)=>{n.d(t,{R:()=>p});var r=n(23481),i=n(110),a=n(33518),o=n(4594),c=n(49080),l=n(26361),s=n(35223),u=n(31908);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var y=r.T.encloseNamespace("sharev2.utils"),p={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,r=e.hasStudentExp,i=e.entity,c=e.yearGroups;if(t===o.E.Topic||t===o.E.Series)return{icon:s.vn.VisibleOn,text:y(r?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case a.e.Public:return{icon:s.vn.VisibleOn,text:y("publicDescription")};case a.e.ProtectedOverrideRestriction:return{icon:s.vn.VisibleOn,text:y("clickViewOnly")};case a.e.Protected:return{icon:s.vn.Lock,text:p.getRespectRatingText(i,c,r)};case a.e.JustMySchoolOverrideRestriction:return{icon:s.vn.Lock,text:y(r?"justMySchoolTeachers":"justMySchoolDescription")};case a.e.JustMySchool:return{icon:s.vn.Lock,text:p.getRespectRatingText(i,c,r)};case a.e.PinCode:return{icon:s.vn.Lock,text:y("pinDescription")};case a.e.PasswordProtected:return{icon:s.vn.Lock,text:y("password")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,r=e.status;if(!t&&!n)return p.getPrivateIconAndText(e);if(!t)return{icon:s.vn.Lock,text:y("password")};var a=i.O.isToday(t),o=i.O.diffBetween(t,new Date,"day");if(!n){var l=a?y("expiryToday"):y("expiry",{days:o});return r===c.F.Expired&&(l=y("expired")),{icon:s.vn.Timer,text:l}}var u=a?y("passwordExpiryToday"):y("passwordExpiry",{days:o});return r===c.F.Expired&&(u=y("passwordExpired")),{icon:s.vn.Lock,text:u}},getRespectRatingText:function(e,t,n){var r;if(!e||!t)return null;if(n)return y("justMySchoolTeachers");if(!u.M.isVideoType(e))return y("collectionRating");var i=l.l.getWeightedRestriction(null===(r=e._restrictions)||void 0===r?void 0:r.value);if(i&&!i.yearGroup)return y("onlyAdmins");var a,o,c,s=u.M.getRating(e),p=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw a}}}}(t);try{for(p.s();!(c=p.n()).done;){var v=c.value;(!a||v.value>a.value)&&(a=v),i&&v.value<=i.yearGroup||s&&v.rating.value<s.value||(!o||v.value<o.value)&&(o=v)}}catch(e){p.e(e)}finally{p.f()}return o?1===t.length?y("clickViewOnly"):o.value===a.value?y("maxYearGroup",{yearGroup:a.name}):y("yearGroupRange",{yearGroup:o.name}):y("onlyStaff")},getShareLinkAccessType:function(e){return e.isTvContent||e.isClickViewContent?"protected":e.canManageAccess?"owner":"private"}}},2267:(e,t,n)=>{n.d(t,{I:()=>s});var r=n(20354),i=n(64249),a=n(4594),o=n(5112),c=n(60011),l=n(40841),s={canEmbed:function(e){return["video","interactive","clip"].includes(e)},canAddPolicies:function(e){return["interactive"].includes(e)},getEnabledIntegrations:function(e,t){return l._.getShareIntegrations(e,t).filter(function(e){return e.enabled}).map(function(e){return e.id})},getShareSettingsInitialValues:function(e,t){var n,r,i,a,o,c;return{preventScrubbing:null!==(i=null!==(r=null===(n=null==e?void 0:e.options)||void 0===n?void 0:n.preventScrubbing)&&void 0!==r?r:null==t?void 0:t.preventScrubbing)&&void 0!==i&&i,immediateFeedback:null!==(c=null!==(o=null===(a=null==e?void 0:e.options)||void 0===a?void 0:a.immediateFeedback)&&void 0!==o?o:null==t?void 0:t.immediateFeedback)&&void 0!==c&&c}},getEnabledSettingsField:function(e){return{showImmediateFeedbackField:"interactive"===e,showPreventScrubbingField:"interactive"===e}},getSharableEntityType:function(e){switch(e.objectTypeId){case a.E.Video:return"video";case a.E.Playlist:return"playlist";case a.E.Subject:return"subject";case a.E.Series:return"series";case a.E.Interactive:return"interactive";case a.E.Clip:return"clip"}},getFetchFunctionByType:function(e){switch(e){case"playlist":return function(e){return r.a.useBasicFetch(o.C.playlistWithThumbnailAndCount(e))};case"series":return function(e){return r.a.useBasicFetch(c.J.seriesWithThumbnailAndCount(e))}}return i.I.getFetchFunctionByType(e)},getAnalyticsEntity:function(e){return i.I.getAnalyticsEntity(e)},getAnalyticsOptions:function(e){return i.I.getAnalyticsOptions(e)}}},31121:(e,t,n)=>{n.d(t,{j:()=>c});var r=n(65858),i=n(84850);function a(e){return"share"in e&&!!e.share}var o={"create-share-link":{isValid:a,analyticsOptions:{actionType:r.Vw.Create,workflowPhase:r.eu.Complete,entity:r.py.ShareLink}},"update-share-link":{isValid:a,analyticsOptions:{actionType:r.Vw.Edit,entity:r.py.ShareLink,workflowPhase:r.eu.Complete}},"delete-share-link":{isValid:a,analyticsOptions:{actionType:r.Vw.Delete,entity:r.py.ShareLink,workflowPhase:r.eu.Complete}},"plugin-share-embed":{isValid:a,analyticsOptions:{actionType:r.Vw.Share,descriptor:r.YM.PluginEmbed,workflowPhase:r.eu.Complete,entity:r.py.ShareLink}},"copy-embed-html":{isValid:function(){return!0},analyticsOptions:{actionType:r.Vw.Share,workflowPhase:r.eu.Complete,entity:r.py.ShareLink,descriptor:r.YM.CopyEmbedHtml}},"copy-share-link":{isValid:a,analyticsOptions:{actionType:r.Vw.Share,workflowPhase:r.eu.Complete,entity:r.py.ShareLink,descriptor:r.YM.CopyLink}}};function c(e){var t,n=(0,i.X)({analyticsOptions:e.analyticsOptions,baseData:e.data,config:o,shouldLog:null===(t=e.shouldLog)||void 0===t||t});return{log:n.log,getData:n.getData}}},89701:(e,t,n)=>{n.r(t),n.d(t,{DeleteShareLinkConfirmationView:()=>f});var r=n(32735),i=n(6044),a=n(23481),o=n(65858),c=n(29923),l=n(93563),s=n(87265),u=n(31121),d=n(9111),y=n(69883);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var v=a.T.encloseNamespace("sharev2.deleteShareLinkConfirmation");function f(e){var t,n,a=(0,y.Z)(),f=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,c=[],l=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=f[0],g=f[1],m=(0,s.s)({entityId:e.entityId,entityType:e.entityType}),b=m.share,S=m.entity,k=(0,l._)({entityId:e.entityId}).deleteShareLink,w=(0,u.j)({data:{entity:{id:e.entityId,type:e.entityType}},analyticsOptions:{location:o.LZ.Popup,eventVersion:o.eq.V3}}).log,T=!!b.data&&!!S.data;return r.createElement(d.G,{title:v("title"),closePopup:e.closePopup,showLoadingSpinner:!T||e.loading,animation:e.animate},r.createElement(c.F,{loading:h,phrases:{leadingSentence:v("intro"),bulletPoints:[v("loseAccessInfo"),v("loseAccessUsage")],acknowledgement:v("acknowledgement"),backButton:v("back"),deleteButton:v("delete")},onDelete:function(){var t;g(!0),k(null===(t=b.data)||void 0===t?void 0:t.shareId).then(function(){w({type:"delete-share-link",share:b.data}),g(!1),a.success(v("deleteSuccess")),e.closePopup(),e.previousAppLink&&i.C$.trigger(e.previousAppLink)}).catch(function(){a.error(v("deleteFailed",{name:S.data.name,escapeText:!0}))}).finally(function(){g(!1)})},onBack:e.goToSettingsStep?e.goToSettingsStep:void 0}))}},41661:(e,t,n)=>{var r;n.d(t,{D:()=>r}),function(e){e.GoogleClassroom="google-classroom",e.MicrosoftTeams="microsoft-teams",e.Vivi="vivi",e.AppleTv="apply-tv"}(r||(r={}))},40841:(e,t,n)=>{n.d(t,{_:()=>c});var r=n(23481),i=n(41661),a=n(65728),o=r.T.encloseNamespace("shared.shared-utils"),c={getShareIntegrations:function(e,t){return[{id:i.D.GoogleClassroom,name:o("googleClassroom"),enabled:e,settingName:a.E.ShareToGoogleClassroom},{id:i.D.MicrosoftTeams,name:o("msftTeams"),enabled:t,settingName:a.E.ShareToMicrosoftTeams}]}}},84850:(e,t,n)=>{n.d(t,{X:()=>a});var r=n(1048),i=n(49985);function a(e){function t(t,n){var a=e.config[t.type];if(null==a?void 0:a.isValid(t)){var o=Object.assign(Object.assign({},e.baseData),t);return{data:r.t.omit(o,["type"]),analyticsOptions:i.k.mergeOptions(a.analyticsOptions,[e.analyticsOptions,n])}}}return{getData:t,log:function(n,r){if(e.shouldLog){var a=t(n,r);a&&i.k.logUserAction(a.data,a.analyticsOptions)}}}}}}]);
2
+ //# sourceMappingURL=9701-d86dfbee0c-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9701-d86dfbee0c-lite.chunk.js","mappings":"0RAOA,IACMA,EAAY,qBADA,8BAgBZ,SAAUC,EAAmBC,G,UACY,G,EAArB,YAAe,G,EAAM,E,o4BAArCC,EAAG,KAAEC,EAAM,KASnB,OACE,uBAAKC,UAAU,4BACb,qBAAGA,UAAU,OAAOH,EAAMI,QAAQC,iBAClC,sBAAIF,UAAU,OACXH,EAAMI,QAAQE,aAAaC,IAAI,SAACC,EAAQC,GAAK,OAC5C,sBAAIC,IAAKD,GACND,EACE,IAGT,gBAAC,IAAQ,CACPG,GAAG,MACHC,QAASX,EACTY,SAAU,SAAAC,GAAC,OAAIZ,EAAOY,EAAEC,OAAOH,QAAQ,EACvCI,MAAOhB,EAAMI,QAAQa,kBAEvB,gBAAC,IAAY,KACVjB,EAAMkB,QACL,gBAAC,WAAmB,CAClBC,QAASnB,EAAMkB,OACfE,KAA8B,QAAxB,EAAApB,EAAMI,QAAQiB,kBAAU,QAAIvB,EAAU,cAC5CwB,QAAQ,SAGZ,gBAAC,WAAmB,CAClBH,QAhCR,WACOlB,IAAOD,EAAMuB,SAGlBvB,EAAMwB,UACR,EA4BQJ,KAAMpB,EAAMI,QAAQqB,aACpBH,QAAQ,SACRI,UAAWzB,GAAOD,EAAMuB,QACxBI,YAAa3B,EAAMuB,WAK7B,C,kBCnEA,IAAYK,E,iBAAZ,SAAYA,GACV,kBACA,oBACA,wCACA,8DACA,oEACA,wBACA,8BACA,iBACD,CATD,CAAYA,IAAAA,EAAY,I,6FCelB,SAAUC,EAAoBC,GAClC,IAAMC,EAAa,uBAEbC,EAAgB,kBAA2C,eAAyBF,EAAQG,WA8BlG,MAAO,CACLC,SAAUF,EAAcG,KACxBC,gBAtBF,SAAyBC,EAAiBF,GAExC,GAAIA,EAAKG,UAAY,sBAGnB,MAFA,aAAgB,yCAAD,OAA0CH,EAAKG,QAAO,+BAAuBD,IAEtF,IAAIE,MAAM,yBAGlB,OAAOR,EAAkB,gBAA0BM,EAASF,GAC9D,EAcEK,gBAZF,SAAyBF,GACvB,IAAMG,EAAiBH,QAAAA,EAjBD,cAFH,2BAAuCN,EAAcG,MAGpE,cACA,iBAgBJ,OAAOJ,EAAkB,oBAA8B,CAAEW,SAAUZ,EAAQG,SAAUK,QAASG,IAChG,EAUEE,gBARF,SAAyBN,GACvB,OAAON,EAAW,gBAA0BM,GAC9C,EAQF,C,6FCpCM,SAAUO,EAAiBd,G,MACzBe,EAAc,kBAAkC,mBAChDC,EAAS,2BAAuChB,EAAQiB,WAA/C,CAA2DjB,EAAQG,SAA0B,QAAhB,EAAAY,EAAYV,YAAI,eAAExB,IACxG2B,EAAU,kBAA2C,eAAyBR,EAAQG,WACtFe,EAAQ,kBAA4BlB,EAAQO,QAC9C,aAAuBP,EAAQO,SAC/B,iBAA2BP,EAAQG,WACjCgB,EAAS,kBAA6B,cAQ5C,MAAO,CACLC,cAPmBJ,EAAOX,MACrBU,EAAYV,MACZG,EAAQH,MACRa,EAAMb,MACNc,EAAOd,MAIZU,YAAaA,EACbC,OAAQA,EACRR,QAASA,EACTU,MAAOA,EACPC,OAAQA,EAEZ,C,iOC7BA,IACMnD,EAAY,qBADA,iBAsBLqD,EAAkB,CAC7BC,sBAAuB,SAACtB,GACtB,IAAQuB,EAA6DvB,EAA7DuB,aAAcf,EAA+CR,EAA/CQ,QAASgB,EAAsCxB,EAAtCwB,cAAeR,EAAuBhB,EAAvBgB,OAAQS,EAAezB,EAAfyB,WAEtD,GAAIF,IAAiB,WAAoBA,IAAiB,WACxD,MAAO,CAAEG,KAAM,eAAwBpC,KAAMtB,EAAUwD,EAAgB,uBAAyB,4BAMlG,IAAIG,MAAMC,QAAQpB,GAGlB,OAAQA,GACN,KAAK,WACH,MAAO,CAAEkB,KAAM,eAAwBpC,KAAMtB,EAAU,sBACzD,KAAK,iCACH,MAAO,CAAE0D,KAAM,eAAwBpC,KAAMtB,EAAU,kBACzD,KAAK,cACH,MAAO,CACL0D,KAAM,UACNpC,KAAM+B,EAAgBQ,qBAAqBb,EAAQS,EAAYD,IAEnE,KAAK,oCACH,MAAO,CAAEE,KAAM,UAAmBpC,KAAMtB,EAAUwD,EAAgB,uBAAyB,4BAC7F,KAAK,iBACH,MAAO,CACLE,KAAM,UACNpC,KAAM+B,EAAgBQ,qBAAqBb,EAAQS,EAAYD,IAEnE,KAAK,YACH,MAAO,CAAEE,KAAM,UAAmBpC,KAAMtB,EAAU,mBACpD,KAAK,sBACH,MAAO,CAAE0D,KAAM,UAAmBpC,KAAMtB,EAAU,aACpD,QACE,MAAO,CAAC,EAEd,EAEA8D,eAAgB,SAAC9B,GACf,IAAQ+B,EAAgD/B,EAAhD+B,eAAgBC,EAAgChC,EAAhCgC,oBAAqBC,EAAWjC,EAAXiC,OAC7C,IAAKF,IAAmBC,EACtB,OAAOX,EAAgBC,sBAAsBtB,GAE/C,IAAK+B,EACH,MAAO,CAAEL,KAAM,UAAmBpC,KAAMtB,EAAU,aAEpD,IAAMkE,EAAU,YAAmBH,GAC7BI,EAAgB,gBAAuBJ,EAAgB,IAAIK,KAAQ,OAEzE,IAAKJ,EAAqB,CACxB,IAAI,EAAOE,EACPlE,EAAU,eACVA,EAAU,SAAU,CAAEqE,KAAMF,IAKhC,OAHIF,IAAW,cACb,EAAOjE,EAAU,YAEZ,CAAE0D,KAAM,WAAoBpC,KAAA,EACpC,CAED,IAAIA,EAAO4C,EACPlE,EAAU,uBACVA,EAAU,iBAAkB,CAAEqE,KAAMF,IAKxC,OAHIF,IAAW,cACb3C,EAAOtB,EAAU,oBAEZ,CAAE0D,KAAM,UAAmBpC,KAAAA,EACpC,EAEAuC,qBAAoB,SAACS,EAAmBb,EAAyBD,G,MAC/D,IAAKc,IAAUb,EACb,OAAO,KAET,GAAID,EACF,OAAOxD,EAAU,wBAEnB,IAAK,gBAAwBsE,GAC3B,OAAOtE,EAAU,oBAEnB,IAAMuE,EAAc,2BAA4D,QAAnB,EAAAD,EAAME,qBAAa,eAAEC,OAKlF,GAAIF,IAAgBA,EAAYG,UAC9B,OAAO1E,EAAU,cAEnB,IAEI2E,EACAC,EAE8B,EAL5BC,EAAS,cAAsBP,GAGF,E,64BAAA,CAEXb,GAAU,IAAlC,IAAK,EAAL,qBAAoC,KAAzBiB,EAAS,UAIbC,GAAgBD,EAAUD,MAAQE,EAAaF,SAClDE,EAAeD,GAKbH,GAAeG,EAAUD,OAASF,EAAYG,WAM9CG,GAAUH,EAAUG,OAAOJ,MAAQI,EAAOJ,SAMzCG,GAAuBF,EAAUD,MAAQG,EAAoBH,SAChEG,EAAsBF,EACzB,CAED,+BAGA,OAAKE,EAQqB,IAAtBnB,EAAWqB,OACN9E,EAAU,iBAMf4E,EAAoBH,QAAUE,EAAaF,MACtCzE,EAAU,eAAgB,CAAE0E,UAAWC,EAAaI,OAEtD/E,EAAU,iBAAkB,CAAE0E,UAAWE,EAAoBG,OAjB3D/E,EAAU,YAkBrB,EAEAgF,uBAAsB,SAACxC,GAMrB,OAAIA,EAAQyC,aAAezC,EAAQ0C,mBAC1B,YAEL1C,EAAQ2C,gBACH,QAEF,SACT,E,sGC5KWC,EAAkB,CAC7BC,SAAQ,SAACC,GACP,MAAO,CAAE,QAAS,cAAe,QAASC,SAASD,EACrD,EAKAE,eAAc,SAACF,GACb,MAAO,CAAC,eAAeC,SAASD,EAClC,EAEAG,uBAAsB,SAACC,EAAiCC,GAEtD,OADqB,yBAAuCD,EAAwBC,GAChEC,OAAO,SAAAC,GAAC,OAAIA,EAAEC,OAAO,GAAErF,IAAI,SAAAoF,GAAC,OAAIA,EAAEhF,EAAE,EAC1D,EAEAkF,8BAA6B,SAAC7C,EAAc8C,G,gBAC1C,MAAO,CACLC,iBAAmF,QAAjE,EAAgC,QAAhC,EAAc,QAAd,EAAA/C,aAAK,EAALA,EAAOlB,eAAO,eAAEiE,wBAAgB,QAAID,aAAW,EAAXA,EAAaC,wBAAgB,SACnFC,kBAAsF,QAAnE,EAAiC,QAAjC,EAAc,QAAd,EAAAhD,aAAK,EAALA,EAAOlB,eAAO,eAAEkE,yBAAiB,QAAIF,aAAW,EAAXA,EAAaE,yBAAiB,SAE1F,EAEAC,wBAAuB,SAAClD,GACtB,MAAO,CACLmD,2BAA2C,gBAAfnD,EAC5BoD,0BAA0C,gBAAfpD,EAE/B,EAEAqD,sBAAqB,SAACpD,GACpB,OAAQA,EAAMqD,cACZ,KAAK,UACH,MAAO,QACT,KAAK,aACH,MAAO,WACT,KAAK,YACH,MAAO,UACT,KAAK,WACH,MAAO,SACT,KAAK,gBACH,MAAO,cACT,KAAK,SACH,MAAO,OAEb,EAKAC,uBAAwB,SAAClB,GACvB,OAAQA,GACN,IAAK,WACH,OAAO,SAACzE,GAAU,OAAK,kBAA+B,kCAA+CA,GAAI,EAG3G,IAAK,SACH,OAAO,SAACA,GAAU,OAAK,kBAA6B,gCAA2CA,GAAI,EAIvG,OAAO,2BAA0CyE,EACnD,EAEAmB,mBAAkB,SAACxD,GACjB,OAAO,uBAAsCA,EAC/C,EAEAyD,oBAAmB,SAACzD,GAClB,OAAO,wBAAuCA,EAChD,E,6DC7EF,SAAS0D,EAAatE,GACpB,MAAM,UAAWA,KAGRA,EAAKa,KAChB,CAEA,IAAM0D,EAA8C,CAIlD,oBAAqB,CACnBC,QAASF,EACTG,iBAAkB,CAChBC,WAAY,YACZC,cAAe,cACfhE,OAAQ,iBAGZ,oBAAqB,CACnB6D,QAASF,EACTG,iBAAkB,CAChBC,WAAY,UACZ/D,OAAQ,eACRgE,cAAe,gBAGnB,oBAAqB,CACnBH,QAASF,EACTG,iBAAkB,CAChBC,WAAY,YACZ/D,OAAQ,eACRgE,cAAe,gBAInB,qBAAsB,CACpBH,QAASF,EACTG,iBAAkB,CAChBC,WAAY,WACZE,WAAY,iBACZD,cAAe,cACfhE,OAAQ,iBAOZ,kBAAmB,CACjB6D,QAAS,WAAF,OAAQ,CAAI,EACnBC,iBAAkB,CAChBC,WAAY,WACZC,cAAe,cACfhE,OAAQ,eACRiE,WAAY,qBAGhB,kBAAmB,CACjBJ,QAASF,EACTG,iBAAkB,CAChBC,WAAY,WACZC,cAAe,cACfhE,OAAQ,eACRiE,WAAY,iBAKZ,SAAUC,EAAoBlF,G,MAClC,GAAyB,OAAe,CACtC8E,iBAAkB9E,EAAQ8E,iBAC1BK,SAAUnF,EAAQK,KAClBc,OAAQyD,EACRQ,UAA4B,QAAjB,EAAApF,EAAQoF,iBAAS,WAG9B,MAAO,CACLC,IARS,EAAHA,IASNC,QATkB,EAAPA,QAWf,C,8RC9EA,IACMtH,EAAY,qBADA,uCAUZ,SAAUuH,EAAgCrH,GAC9C,I,IAAMsH,GAAS,SAEsC,G,EAArB,YAAe,G,EAAM,E,o4BAA7C/F,EAAO,KAAEgG,EAAU,KAE3B,GAA0B,OAAiB,CACzCtF,SAAUjC,EAAMiC,SAChBc,WAAY/C,EAAM+C,aAFZC,EAAK,EAALA,MAAOF,EAAM,EAANA,OAKPH,GAAoB,OAAoB,CAC9CV,SAAUjC,EAAMiC,WADVU,gBAIAwE,GAAQ,OAAoB,CAClChF,KAAM,CACJW,OAAQ,CACNnC,GAAIX,EAAMiC,SACVmD,KAAMpF,EAAM+C,aAGhB6D,iBAAkB,CAChBY,SAAU,WACVC,aAAc,WATVN,IAoCFjF,IAAWc,EAAMb,QAAUW,EAAOX,KAExC,OACE,gBAAC,IAAK,CACJuF,MAAO5H,EAAU,SACjB6H,WAAY3H,EAAM2H,WAClBC,oBAAqB1F,GAAUlC,EAAMuB,QACrCsG,UAAW7H,EAAM8H,SAEjB,gBAAC,IAAkB,CACjBvG,QAASA,EACTnB,QAAS,CACPC,gBAAiBP,EAAU,SAC3BQ,aAAc,CACZR,EAAU,kBACVA,EAAU,oBAEZmB,gBAAiBnB,EAAU,mBAC3BuB,WAAYvB,EAAU,QACtB2B,aAAc3B,EAAU,WAE1B0B,SA5CN,W,MACE+F,GAAW,GAEX5E,EAA0B,QAAV,EAAAK,EAAMb,YAAI,eAAEE,SAAS0F,KAAK,WACxCZ,EAAI,CACF/B,KAAM,oBACNpC,MAAOA,EAAMb,OAGfoF,GAAW,GACXD,EAAOU,QAAQlI,EAAU,kBACzBE,EAAM2H,aAEF3H,EAAMiI,iBACR,aAAsBjI,EAAMiI,gBAEhC,GAAE,MAAO,WACPX,EAAOY,MAAMpI,EAAU,eAAgB,CAAE+E,KAAM/B,EAAOX,KAAK0C,KAAMsD,YAAY,IAC/E,GAAE,QAAS,WACTZ,GAAW,EACb,EACF,EAwBMrG,OAAQlB,EAAMoI,iBAAmBpI,EAAMoI,sBAAmBC,IAIlE,C,kBCvGA,IAAYC,E,iBAAZ,SAAYA,GACV,qCACA,mCACA,cACA,oBACD,CALD,CAAYA,IAAAA,EAAa,I,wECOnBxI,EAAY,qBADA,uBAGLyI,EAAoB,CAC/BC,qBAAoB,SAAChD,EAAiCC,GACpD,MAAO,CACL,CACE9E,GAAI,oBACJkE,KAAM/E,EAAU,mBAChB8F,QAASJ,EACTiD,YAAa,4BAEf,CACE9H,GAAI,mBACJkE,KAAM/E,EAAU,aAChB8F,QAASH,EACTgD,YAAa,2BAGnB,E,4DCiBI,SAAUC,EAId5G,GAWA,SAASsF,EACPjF,EACAwG,GAEA,IAAMC,EAAgB9G,EAAQmB,OAAOd,EAAKiD,MAE1C,GAAKwD,aAAa,EAAbA,EAAejC,QAAQxE,GAA5B,CAGA,IAAM0G,EAAa,OAAH,wBACX/G,EAAQmF,UACR9E,GAaL,MAAO,CACLA,KAXoB,SAA+B0G,EAAY,CAAC,SAYhEjC,iBAVuB,iBACvBgC,EAAchC,iBACd,CACE9E,EAAQ8E,iBACR+B,IAbI,CAqBV,CAqBA,MAAO,CACLvB,QAAAA,EACAD,IAjBF,SACEhF,EACAwG,GAEA,GAAK7G,EAAQoF,UAAb,CAGA,IAAM4B,EAAY1B,EAAQjF,EAAMwG,GAE3BG,GAGL,kBAA8BA,EAAU3G,KAAM2G,EAAUlC,iBAPhD,CAQV,EAMF,C","sources":["file:///app/packages/libs/shared/src/apps/share-v2/components/delete-share-content/DeleteShareContent.tsx","file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkActions.ts","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useShareLinkData.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareViewHelper.tsx","file:///app/packages/libs/shared/src/apps/share-v2/utils/get-share-event-logger/getShareEventLogger.ts","file:///app/packages/libs/shared/src/apps/share-v2/views/delete-share-link-confirmation-view/DeleteShareLinkConfirmationView.tsx","file:///app/packages/libs/shared/src/enums/IntegrationId.ts","file:///app/packages/libs/shared/src/utils/IntegrationHelper.ts","file:///app/packages/libs/shared/src/utils/get-event-logger/getEventLogger.ts"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nconst namespace = 'sharev2.deleteShareContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteShareContentProps {\n loading: boolean;\n phrases: {\n leadingSentence: string;\n bulletPoints: string[];\n acknowledgement: string;\n deleteButton: string;\n backButton?: string;\n };\n onDelete: () => void;\n onBack?: () => void;\n}\n\nexport function DeleteShareContent(props: DeleteShareContentProps) {\n const [ ack, setAck ] = React.useState(false);\n\n function onDelete() {\n if (!ack || props.loading)\n return;\n\n props.onDelete();\n }\n\n return (\n <div className='d-flex flex-column gap-3'>\n <p className='m-0'>{props.phrases.leadingSentence}</p>\n <ul className='m-0'>\n {props.phrases.bulletPoints.map((phrase, index) => (\n <li key={index}>\n {phrase}\n </li>\n ))}\n </ul>\n <Checkbox\n id='ack'\n checked={ack}\n onChange={e => setAck(e.target.checked)}\n label={props.phrases.acknowledgement}\n />\n <PopupButtons>\n {props.onBack && (\n <PopupButtons.Cancel\n onClick={props.onBack}\n text={props.phrases.backButton ?? getPhrase('backButton')}\n variant='link'\n />\n )}\n <PopupButtons.Submit\n onClick={onDelete}\n text={props.phrases.deleteButton}\n variant='danger'\n disabled={!ack || props.loading}\n showSpinner={props.loading}\n />\n </PopupButtons>\n </div>\n );\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","import { Flight } from 'libs/common/react/index';\n\nimport { Logger } from 'libs/shared/utils/Logger';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { Share } from '../interfaces/Share';\nimport { SharePrivacyResponse } from '../interfaces/SharePrivacyResponse';\nimport { UpdateShareRequest } from '../interfaces/UpdateShareRequest';\nimport { ShareLinkHelper } from '../utils/ShareLinkHelper';\n\ninterface UseShareLinkActionsOptions {\n entityId: string;\n}\n\nexport function useShareLinkActions(options: UseShareLinkActionsOptions) {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const entityPrivacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n\n function getCreateSharePrivacy() {\n const accessType = ShareLinkHelper.getShareLinkAccessType(entityPrivacy.data);\n\n return accessType === 'protected'\n ? SharePrivacy.Protected\n : SharePrivacy.JustMySchool;\n }\n\n function updateShareLink(shareId: string, data: UpdateShareRequest): Promise<Share> {\n // Legacy share privacy - if we try to update to this we should log & throw an error\n if (data.privacy === SharePrivacy.PasswordProtected) {\n Logger.logError(`Cannot update to legacy share privacy(${data.privacy}) for share with id ${shareId}`);\n\n throw new Error('invalid-share-privacy');\n }\n \n return fetchAsync<Share>(ShareRequests.updateShare(shareId, data));\n }\n\n function createShareLink(privacy?: SharePrivacy): Promise<Share> {\n const requestPrivacy = privacy ?? getCreateSharePrivacy();\n return fetchAsync<Share>(ShareRequests.createShareLink({ objectId: options.entityId, privacy: requestPrivacy }));\n }\n\n function deleteShareLink(shareId: string): Promise<void> {\n return fetchAsync(ShareRequests.deleteShare(shareId));\n }\n\n return {\n loaded: !!entityPrivacy.data,\n updateShareLink,\n createShareLink,\n deleteShareLink\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport type { Config, CurrentUser } from 'libs/shared/interfaces';\n\nimport { Share } from '../interfaces/Share';\n\ninterface UseShareLinkDataOptions {\n entityId: string;\n entityType: SharableEntityType;\n shareId?: string;\n}\n\n\nexport function useShareLinkData(options: UseShareLinkDataOptions) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(options.entityType)(options.entityId, currentUser.data?.id);\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(options.entityId));\n const share = Flight.useBasicFetch<Share>(options.shareId\n ? ShareRequests.getShare(options.shareId)\n : ShareRequests.getShareLink(options.entityId));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n \n const dataLoaded = !!entity.data\n && !!currentUser.data\n && !!privacy.data\n && !!share.data\n && !!config.data;\n\n return {\n dataLoaded,\n currentUser: currentUser,\n entity: entity,\n privacy: privacy,\n share: share,\n config: config\n };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport type { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacy;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\ninterface GetPrivateIconAndTextOptions {\n privacy: SharePrivacy;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetPrivateIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('pinDescription') };\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getShareLinkAccessType(privacy: SharePrivacyResponse): 'private' | 'owner' | 'protected' {\n /**\n * If an entity is not a ClickView content and they cannot manage access\n * settings of the entity (which they can if its their private entity)\n * it means that its a TV content\n */\n if (privacy.isTvContent || privacy.isClickViewContent)\n return 'protected';\n\n if (privacy.canManageAccess)\n return 'owner';\n\n return 'private';\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsOptions, EntityType } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper as OldShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport type { Clip, Interactive, InteractiveMetadata, Playlist, Series, Subject, Video } from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport interface ShareSettingsFormFields {\n preventScrubbing: boolean;\n immediateFeedback: boolean;\n}\n\nexport const ShareViewHelper = {\n canEmbed(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n\n /**\n * Only interactive entities can update share settings currently\n */\n canAddPolicies(type: SharableEntityType): boolean {\n return ['interactive'].includes(type);\n },\n\n getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n },\n\n getShareSettingsInitialValues(share: Share, interactive: Interactive | null) {\n return {\n preventScrubbing: share?.options?.preventScrubbing ?? interactive?.preventScrubbing ?? false,\n immediateFeedback: share?.options?.immediateFeedback ?? interactive?.immediateFeedback ?? false\n };\n },\n \n getEnabledSettingsField(entityType: SharableEntityType): {[key in `show${Capitalize<keyof ShareSettingsFormFields>}Field`]: boolean} {\n return {\n showImmediateFeedbackField: entityType === 'interactive',\n showPreventScrubbingField: entityType === 'interactive'\n };\n },\n\n getSharableEntityType(share: Share): SharableEntityType {\n switch (share.objectTypeId) {\n case MasterType.Video:\n return 'video';\n case MasterType.Playlist:\n return 'playlist';\n case MasterType.Subject:\n return 'subject';\n case MasterType.Series:\n return 'series';\n case MasterType.Interactive:\n return 'interactive';\n case MasterType.Clip:\n return 'clip';\n }\n },\n\n /**\n * Methods from old ShareViewHelper imported here for namespacing\n */\n getFetchFunctionByType: (type: SharableEntityType) => {\n switch (type) {\n case 'playlist': {\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.playlistWithThumbnailAndCount(id));\n }\n\n case 'series': {\n return (id: string) => Flight.useBasicFetch<Series>(SeriesRequests.seriesWithThumbnailAndCount(id));\n }\n }\n \n return OldShareViewHelper.getFetchFunctionByType(type);\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n return OldShareViewHelper.getAnalyticsEntity(entityType);\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return OldShareViewHelper.getAnalyticsOptions(entityType);\n }\n};","import { AnalyticsOptions, EntityType, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { BaseShareData, ShareLogData } from './interfaces/GetShareEventLogger';\n\ninterface ShareEventLoggerOptions {\n data: BaseShareData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport type ShareLogFn = ReturnType<typeof getShareEventLogger>['log'];\n\nfunction isValidShare(data: ShareLogData): boolean {\n if (!('share' in data))\n return false;\n\n return !!data.share;\n}\n\nconst LogDataConfig: EventLogConfig<ShareLogData> = {\n /**\n * Share - Link\n */\n 'create-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink\n }\n },\n 'update-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n workflowPhase: WorkflowPhase.Complete\n }\n },\n 'delete-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Delete,\n entity: EntityType.ShareLink,\n workflowPhase: WorkflowPhase.Complete\n }\n },\n\n 'plugin-share-embed': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink\n }\n },\n\n /**\n * General\n */\n 'copy-embed-html': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink, // default\n descriptor: ShareDescriptors.CopyEmbedHtml\n }\n },\n 'copy-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.ShareLink, // default\n descriptor: ShareDescriptors.CopyLink\n }\n }\n};\n\nexport function getShareEventLogger(options: ShareEventLoggerOptions) {\n const { log, getData } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: LogDataConfig,\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EventVersion, LocationContext } from 'libs/analytics/interfaces';\n\nimport { DeleteShareContent } from 'libs/shared/apps/share-v2/components/delete-share-content/DeleteShareContent';\nimport { useShareLinkActions } from 'libs/shared/apps/share-v2/hooks/useShareLinkActions';\nimport { useShareLinkData } from 'libs/shared/apps/share-v2/hooks/useShareLinkData';\nimport { getShareEventLogger } from 'libs/shared/apps/share-v2/utils/get-share-event-logger/getShareEventLogger';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nconst namespace = 'sharev2.deleteShareLinkConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface DeleteShareLinkConfirmationViewProps extends MultiStepPopupViewProps {\n entityId: string;\n entityType: SharableEntityType;\n previousAppLink?: Core.AppLink;\n goToSettingsStep?: () => void;\n}\n\nexport function DeleteShareLinkConfirmationView(props: DeleteShareLinkConfirmationViewProps) {\n const alerts = useAlerts();\n\n const [ loading, setLoading ] = React.useState(false);\n\n const { share, entity } = useShareLinkData({\n entityId: props.entityId,\n entityType: props.entityType\n });\n\n const { deleteShareLink } = useShareLinkActions({\n entityId: props.entityId\n });\n\n const { log } = getShareEventLogger({\n data: {\n entity: {\n id: props.entityId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n location: LocationContext.Popup,\n eventVersion: EventVersion.V3\n }\n });\n \n function onClickDelete() {\n setLoading(true);\n\n deleteShareLink(share.data?.shareId).then(() => {\n log({\n type: 'delete-share-link',\n share: share.data\n });\n\n setLoading(false);\n alerts.success(getPhrase('deleteSuccess'));\n props.closePopup();\n\n if (props.previousAppLink) {\n AppLinkHelper.trigger(props.previousAppLink);\n }\n }).catch(() => {\n alerts.error(getPhrase('deleteFailed', { name: entity.data.name, escapeText: true }));\n }).finally(() => {\n setLoading(false);\n });\n }\n\n const loaded = !!share.data && !!entity.data;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!loaded || props.loading}\n animation={props.animate}\n >\n <DeleteShareContent\n loading={loading}\n phrases={{\n leadingSentence: getPhrase('intro'),\n bulletPoints: [\n getPhrase('loseAccessInfo'),\n getPhrase('loseAccessUsage')\n ],\n acknowledgement: getPhrase('acknowledgement'),\n backButton: getPhrase('back'),\n deleteButton: getPhrase('delete')\n }}\n onDelete={onClickDelete}\n onBack={props.goToSettingsStep ? props.goToSettingsStep : undefined}\n />\n </Popup>\n );\n}\n","export enum IntegrationId {\n GoogleClassroom = 'google-classroom',\n MicrosoftTeams = 'microsoft-teams',\n Vivi = 'vivi',\n AppleTv = 'apply-tv'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { Integration } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const IntegrationHelper = {\n getShareIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): Integration[] {\n return [\n {\n id: IntegrationId.GoogleClassroom,\n name: getPhrase('googleClassroom'),\n enabled: googleClassroomSetting,\n settingName: SettingName.ShareToGoogleClassroom\n },\n {\n id: IntegrationId.MicrosoftTeams,\n name: getPhrase('msftTeams'),\n enabled: msftTeamsSetting,\n settingName: SettingName.ShareToMicrosoftTeams\n }\n ];\n }\n};\n","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\n/**\n * Base type that every event needs to extend from\n */\nexport interface BaseEventLogData<T extends string = string> {\n type: T;\n}\n\n/**\n * Utility type to map event types to config types\n */\nexport type EventLogConfig<TEvents extends BaseEventLogData> = {\n [K in TEvents['type']]: BaseConfigData<Extract<TEvents, { type: K }>>;\n};\n\ninterface BaseConfigData<T extends BaseEventLogData> {\n isValid?: (data: T) => boolean;\n analyticsOptions: AnalyticsOptions;\n}\n\ninterface GetEventLoggerOptions<TData extends HashObject, TEvents extends BaseEventLogData> {\n baseData: TData;\n /**\n * Event type config map\n */\n config: EventLogConfig<TEvents>;\n /**\n * Base analytics options\n */\n analyticsOptions: AnalyticsOptions;\n\n shouldLog?: boolean;\n}\n\n/**\n * Method build and log events which are typed using map\n * passed in from config\n */\nexport function getEventLogger<\n TData extends HashObject = HashObject,\n TEvents extends BaseEventLogData = BaseEventLogData\n>(\n options: GetEventLoggerOptions<TData, TEvents>\n) {\n /**\n * Types to assist hinting in our log / getData methods\n */\n type EventType = TEvents['type']; // type of event\n type EventData = Extract<TEvents, { type: EventType }>; // restrict the data to the passed type\n \n /**\n * Get analytics data and options for a given event type\n */\n function getData(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n const logDataConfig = options.config[data.type];\n\n if (!logDataConfig?.isValid(data))\n return;\n\n const mergedData = {\n ...options.baseData,\n ...data\n };\n \n const sanitizedData = ObjectHelper.omit<typeof data>(mergedData, ['type']);\n\n const analyticsOptions = AnalyticsHelper.mergeOptions(\n logDataConfig.analyticsOptions,\n [\n options.analyticsOptions,\n logAnalyticsOptions\n ]\n );\n\n return {\n data: sanitizedData,\n analyticsOptions\n };\n }\n\n /**\n * Similar to `getData` except it logs the analytics event\n * for a given type if its valid\n */\n function log(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n if (!options.shouldLog)\n return;\n\n const analytics = getData(data, logAnalyticsOptions);\n\n if (!analytics)\n return;\n\n AnalyticsHelper.logUserAction(analytics.data, analytics.analyticsOptions);\n }\n\n return {\n getData,\n log\n };\n}"],"names":["getPhrase","DeleteShareContent","props","ack","setAck","className","phrases","leadingSentence","bulletPoints","map","phrase","index","key","id","checked","onChange","e","target","label","acknowledgement","onBack","onClick","text","backButton","variant","loading","onDelete","deleteButton","disabled","showSpinner","SharePrivacy","useShareLinkActions","options","fetchAsync","entityPrivacy","entityId","loaded","data","updateShareLink","shareId","privacy","Error","createShareLink","requestPrivacy","objectId","deleteShareLink","useShareLinkData","currentUser","entity","entityType","share","config","dataLoaded","ShareLinkHelper","getPrivateIconAndText","entityTypeId","hasStudentExp","yearGroups","icon","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","Date","days","video","restriction","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","length","name","getShareLinkAccessType","isTvContent","isClickViewContent","canManageAccess","ShareViewHelper","canEmbed","type","includes","canAddPolicies","getEnabledIntegrations","googleClassroomSetting","msftTeamsSetting","filter","i","enabled","getShareSettingsInitialValues","interactive","preventScrubbing","immediateFeedback","getEnabledSettingsField","showImmediateFeedbackField","showPreventScrubbingField","getSharableEntityType","objectTypeId","getFetchFunctionByType","getAnalyticsEntity","getAnalyticsOptions","isValidShare","LogDataConfig","isValid","analyticsOptions","actionType","workflowPhase","descriptor","getShareEventLogger","baseData","shouldLog","log","getData","DeleteShareLinkConfirmationView","alerts","setLoading","location","eventVersion","title","closePopup","showLoadingSpinner","animation","animate","then","success","previousAppLink","error","escapeText","goToSettingsStep","undefined","IntegrationId","IntegrationHelper","getShareIntegrations","settingName","getEventLogger","logAnalyticsOptions","logDataConfig","mergedData","analytics"],"sourceRoot":""}