@clickview/lite 0.67.0-rc.5 → 0.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +2 -2
- package/dist/css/{6822-lite-c32c06fff9.chunk.css → 1319-lite-f181681870.chunk.css} +1 -0
- package/dist/css/{1265-lite-cf5a64d933.chunk.css → 2205-lite-daccc93768.chunk.css} +1 -0
- package/dist/css/3407-lite-2b6d2c3596.chunk.css +1 -0
- package/dist/css/{1928-lite-7535155363.chunk.css → 3657-lite-30c63783c6.chunk.css} +1 -0
- package/dist/css/4205-lite-2b6d2c3596.chunk.css +1 -0
- package/dist/css/{6264-lite-6c16dff355.chunk.css → 4586-lite-2b4142796a.chunk.css} +1 -0
- package/dist/css/{3192-lite-dca2cbecd4.chunk.css → 5259-lite-c43d17524f.chunk.css} +1 -0
- package/dist/css/{2613-lite-2b363e89ec.chunk.css → 897-lite-49388db199.chunk.css} +1 -0
- package/dist/css/{lite-app-d8fa7e0f98.css → lite-app-d2e53316e7.css} +5 -6
- package/dist/scripts/{6822-e059388f0e-lite.chunk.js → 1319-44debe2be5-lite.chunk.js} +2 -2
- package/dist/scripts/{6822-e059388f0e-lite.chunk.js.map → 1319-44debe2be5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1265-1c11ef03e1-lite.chunk.js → 2205-7596edf3ff-lite.chunk.js} +3 -3
- package/dist/scripts/2205-7596edf3ff-lite.chunk.js.map +1 -0
- package/dist/scripts/{2564-b38ceabfc3-lite.chunk.js → 2564-7758fc9a23-lite.chunk.js} +2 -2
- package/dist/scripts/{2564-b38ceabfc3-lite.chunk.js.map → 2564-7758fc9a23-lite.chunk.js.map} +1 -1
- package/dist/scripts/3407-d7bb190086-lite.chunk.js +2 -0
- package/dist/scripts/3407-d7bb190086-lite.chunk.js.map +1 -0
- package/dist/scripts/{1928-2bdfd44f43-lite.chunk.js → 3657-9ab3ea0e92-lite.chunk.js} +2 -2
- package/dist/scripts/{1928-2bdfd44f43-lite.chunk.js.map → 3657-9ab3ea0e92-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3978-e86c2d54be-lite.chunk.js → 3978-ef3884cfe5-lite.chunk.js} +2 -2
- package/dist/scripts/{3978-e86c2d54be-lite.chunk.js.map → 3978-ef3884cfe5-lite.chunk.js.map} +1 -1
- package/dist/scripts/4205-b37ae8ccb9-lite.chunk.js +3 -0
- package/dist/scripts/4205-b37ae8ccb9-lite.chunk.js.map +1 -0
- package/dist/scripts/{6264-4b52686f8d-lite.chunk.js → 4586-f9ab450399-lite.chunk.js} +2 -2
- package/dist/scripts/{6264-4b52686f8d-lite.chunk.js.map → 4586-f9ab450399-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3192-5fafe73839-lite.chunk.js → 5259-c1be5e460a-lite.chunk.js} +2 -2
- package/dist/scripts/{3192-5fafe73839-lite.chunk.js.map → 5259-c1be5e460a-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5722-2704be9eac-lite.chunk.js → 5722-ffeb02c053-lite.chunk.js} +2 -2
- package/dist/scripts/5722-ffeb02c053-lite.chunk.js.map +1 -0
- package/dist/scripts/6450-8f22c3d427-lite.chunk.js +2 -0
- package/dist/scripts/6450-8f22c3d427-lite.chunk.js.map +1 -0
- package/dist/scripts/6919-afa7705c12-lite.chunk.js +2 -0
- package/dist/scripts/{2121-aec96064d1-lite.chunk.js.map → 6919-afa7705c12-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7318-20bc42718d-lite.chunk.js → 7318-bf6bb0e9f7-lite.chunk.js} +2 -2
- package/dist/scripts/{7318-20bc42718d-lite.chunk.js.map → 7318-bf6bb0e9f7-lite.chunk.js.map} +1 -1
- package/dist/scripts/7426-c64273c529-lite.chunk.js +3 -0
- package/dist/scripts/7426-c64273c529-lite.chunk.js.map +1 -0
- package/dist/scripts/897-10a911aed5-lite.chunk.js +2 -0
- package/dist/scripts/897-10a911aed5-lite.chunk.js.map +1 -0
- package/dist/scripts/9630-871c10832c-lite.chunk.js +3 -0
- package/dist/scripts/9630-871c10832c-lite.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/9630-871c10832c-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-60e5e2f3ee.min.js → bundle-3fed522614.min.js} +3 -3
- package/dist/scripts/{bundle-60e5e2f3ee.min.js.map → bundle-3fed522614.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1265-1c11ef03e1-lite.chunk.js.map +0 -1
- package/dist/scripts/1477-fa0f6cc194-lite.chunk.js +0 -2
- package/dist/scripts/1477-fa0f6cc194-lite.chunk.js.map +0 -1
- package/dist/scripts/2121-aec96064d1-lite.chunk.js +0 -2
- package/dist/scripts/2613-3d81a10b0b-lite.chunk.js +0 -2
- package/dist/scripts/2613-3d81a10b0b-lite.chunk.js.map +0 -1
- package/dist/scripts/4005-d961c9bbff-lite.chunk.js +0 -3
- package/dist/scripts/4005-d961c9bbff-lite.chunk.js.map +0 -1
- package/dist/scripts/5722-2704be9eac-lite.chunk.js.map +0 -1
- package/dist/scripts/7426-f704b4187d-lite.chunk.js +0 -3
- package/dist/scripts/7426-f704b4187d-lite.chunk.js.map +0 -1
- package/dist/scripts/9630-94751b1994-lite.chunk.js +0 -2
- package/dist/scripts/9630-94751b1994-lite.chunk.js.map +0 -1
- /package/dist/scripts/{1265-1c11ef03e1-lite.chunk.js.LICENSE.txt → 2205-7596edf3ff-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2564-b38ceabfc3-lite.chunk.js.LICENSE.txt → 2564-7758fc9a23-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4005-d961c9bbff-lite.chunk.js.LICENSE.txt → 4205-b37ae8ccb9-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7426-f704b4187d-lite.chunk.js.LICENSE.txt → 7426-c64273c529-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-60e5e2f3ee.min.js.LICENSE.txt → bundle-3fed522614.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1477],{21477:(e,t,n)=>{n.r(t),n.d(t,{ViewCurriculumLinksView:()=>F});var r=n(32735),a=n(80247),l=n(23481),i=n(20354),c=n(75896),u=n(49985),o=n(65858),s=n(1353),m=n(44599),d=n(83345),f=n(85597),v=n(54610),p=n(67453),y=n(38496),h=n(22161);function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function E(e,t,n){return(t=function(e){var t=function(e){if("object"!=b(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=b(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==b(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,l,i,c=[],u=!0,o=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=l.call(n)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){o=!0,a=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(o)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return k(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)?k(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(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 S=/(.*)\s\((.*)?\)/i,C="shared.curriculumLinks",N="text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block";function L(e){function t(){var t=N+" bg-white border";return!e.leaf.name&&e.uiContainsCodes?t+" border-secondary text-secondary":t+" border-dark"}var n=r.useRef();return r.useEffect((function(){if(n.current){var t=n.current.getBoundingClientRect().width;e.trySetMaxCodeWidth(t)}}),[n.current]),r.createElement("div",{className:"d-flex"},e.leaf.description?!e.leaf.name&&e.uiContainsCodes?r.createElement(r.Fragment,null,r.createElement("div",{className:"me-1 align-self-start",style:{minWidth:e.codeWidth?"".concat(e.codeWidth,"px"):"auto"}},r.createElement("h5",{ref:n,className:t()},r.createElement(d.x,{namespace:C,phrase:"noCode"}))),r.createElement("p",{className:"m-0 align-self-center",dangerouslySetInnerHTML:{__html:e.leaf.description}})):e.leaf.name||e.uiContainsCodes?r.createElement(r.Fragment,null,r.createElement("div",{className:"me-1 align-self-start",style:{minWidth:e.codeWidth?"".concat(e.codeWidth,"px"):"auto"}},r.createElement("h5",{ref:n,className:t()},e.leaf.name)),r.createElement("p",{className:"m-0 align-self-center",dangerouslySetInnerHTML:{__html:e.leaf.description}})):r.createElement("p",{className:"m-0",dangerouslySetInnerHTML:{__html:e.leaf.description}}):r.createElement("p",{className:"m-0",dangerouslySetInnerHTML:{__html:e.leaf.name}}))}function w(e){var t,n,a,l={},i=!1;function c(e){var t="mb-2";return e.name||i?t:t+" ms-4 "+h.Z.leafDescriptionOnly}return e.linkSet.areasAndLeaves.forEach((function(e){var t=e[f.k.Area].map((function(e){return e.name})).join(" - ");l[t]?e[f.k.Leaf].forEach((function(e){l[t].find((function(t){return t.name===e.name}))||(l[t].push(e),e.name&&(i=!0))})):l[t]=e[f.k.Leaf]})),r.createElement(r.Fragment,null,r.createElement("h3",{className:"".concat(N," text-white bg-ultramarine fw-normal me-1 mb-2")},(t=e.linkSet[f.k.Audience].name,n=e.linkSet[f.k.Subject].name,(a=t.match(S))?"".concat(a[1]," • ").concat(a[2]," • ").concat(n):"".concat(t," • ").concat(n))),r.createElement("div",{className:"me-2 ".concat(h.Z.curriculumSubject)},Object.keys(l).map((function(t,n){return r.createElement("div",{key:n,className:h.Z.areaLeafSet},t&&r.createElement("h4",{className:"mb-1 font-size-normal"},t),r.createElement("ul",{className:"list-unstyled"},l[t].map((function(t){return r.createElement("li",{key:t.id,className:c(t)},r.createElement(L,{leaf:t,codeWidth:e.codeWidth,trySetMaxCodeWidth:e.trySetMaxCodeWidth,uiContainsCodes:i}))}))))}))))}function A(e){var t,n,a=g(r.useState(0),2),l=a[0],i=a[1],c=g(r.useState(!1),2),u=c[0],o=c[1],s=g(r.useState(!1),2),b=s[0],k=s[1],S=g(r.useState([]),2),N=S[0],L=S[1];function A(e){i((function(t){return t>=e?t:e}))}r.useEffect((function(){var t,n;e.checkAllCurriculums&&e.curriculumLinks&&!(null===(t=e.curriculumLinks)||void 0===t?void 0:t.length)&&(k(!0),e.checkAllCurriculums().then((function(e){e.length&&o(!0),L(e)})).finally((function(){return k(!1)}))),(null===(n=e.curriculumLinks)||void 0===n?void 0:n.length)&&u&&o(!1)}),[null===(t=e.curriculumLinks)||void 0===t?void 0:t.length]);var j=r.useMemo((function(){var t,n={};return null===(t=e.curriculumLinks)||void 0===t||t.forEach((function(e){var t=null,r=null,a=[],l=[];if(e.forEach((function(e){switch(e.type){case f.k.Subject:t=e;break;case f.k.Audience:r=e;break;case f.k.Area:a.push(e);break;case f.k.Leaf:l.push(e)}})),t&&r){var i="".concat(t.id,":").concat(r.id);n[i]?n[i].areasAndLeaves.push(E(E({},f.k.Area,a),f.k.Leaf,l)):n[i]=E(E(E({},f.k.Subject,t),f.k.Audience,r),"areasAndLeaves",[E(E({},f.k.Area,a),f.k.Leaf,l)])}})),n}),[e.curriculumLinks]);return b?r.createElement(m.Z,null):(null===(n=e.curriculumLinks)||void 0===n?void 0:n.length)||e.hasNonEmptyCurriculums||!e.emptyStateUrl||u||b?u?r.createElement("div",null,r.createElement("div",{className:"mb-3"},r.createElement(d.x,{namespace:C,phrase:"currentEmpty"})),r.createElement("div",{className:"mb-3"},r.createElement(d.x,{namespace:C,phrase:"currentEmptyInfo"})),r.createElement("ul",{className:"list-unstyled mb-0"},N.map((function(t){return r.createElement("li",{key:t.id,className:"p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer ".concat(h.Z.tag," me-2"),onClick:function(){return e.onChangeCurriculum(t.id.toString())}},r.createElement("div",{className:"bg-white ".concat(h.Z.cover," rounded-circle")},r.createElement("img",{src:p.j.createUrl(t.cover.url,{size:v.h2.Small}),alt:t.name,className:"rounded-circle"})),t.name)})))):r.createElement("ul",{className:"list-unstyled m-0"},Object.keys(j).map((function(e,t){return r.createElement("li",{key:"linkset-".concat(t),className:h.Z.curriculumSet},r.createElement(w,{linkSet:j[e],trySetMaxCodeWidth:A,codeWidth:l}))}))):r.createElement(y.p,{emptyStateUrl:e.emptyStateUrl})}var j=n(9111),x=n(13876),I=n(63112),W=n(65163),M=n(1575),_=n(69883),O=n(99742),U=n(82817);function Z(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,l,i,c=[],u=!0,o=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=l.call(n)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){o=!0,a=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(o)throw a}}return c}}(e,t)||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}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function 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 T=l.T.encloseNamespace("shared.viewCurriculumLinks");function F(e){var t,n=(0,U.M)(e.id),l=n.hasLoaded,m=n.preferredCurriculum,d=n.availableCurriculums,f=n.nonEmptyCurriculums,v=n.curriculumLinks,p=n.updateCurriculum,y=Z(r.useState(!l),2),h=y[0],b=y[1],E=Z(r.useState(),2),g=E[0],k=E[1],S=i.a.useBasicFetch(M.R.video(e.id)),C=(0,_.Z)();function N(e){var t,n,r=d.find((function(t){return t.id.toString()===e}));(null==r?void 0:r.id)&&(null===(t=null==g?void 0:g.id)||void 0===t?void 0:t.toString())!==(null===(n=null==r?void 0:r.id)||void 0===n?void 0:n.toString())&&(k(r),b(!0),p(r,(function(){var e,t;u.k.logUserAction({id:r.id,name:r.id,description:r.description,videoId:null===(e=S.data)||void 0===e?void 0:e.id,videoName:null===(t=S.data)||void 0===t?void 0:t.name},{entity:o.py.Presentation,actionType:o.Vw.Select,descriptor:o.kD.Curriculum,location:o.LZ.PlayPage})}),(function(){k(g),b(!1),C.error(T("updateFailed"))})))}return r.useEffect((function(){l&&(g||k(null!=m?m:c.m.first(d)),b(!1))}),[null==m?void 0:m.id,l]),r.createElement(j.G,{title:T("heading"),closePopup:e.closePopup,size:"lg"},r.createElement("div",{className:"mb-3 mx-2"},!!(null==f?void 0:f.length)&&r.createElement(W.eb,{collection:f,childClassName:"flex-shrink-0",childComponent:function(e){var t;return r.createElement(s.$,Object.assign({},e,{selected:(null===(t=null==g?void 0:g.id)||void 0===t?void 0:t.toString())===e.data.id.toString(),onChangeCurriculum:N}))},partialLoadingComponent:function(){return r.createElement(I.o,null)},widgetDataDeps:[null===(t=null==g?void 0:g.id)||void 0===t?void 0:t.toString()]})),h?r.createElement("div",{className:"d-flex justify-content-center align-items-center py-5"},r.createElement(a.Z,{as:"div",animation:"border",role:"status"})):r.createElement("div",{className:"pb-3"},r.createElement(A,{curriculumLinks:v,emptyStateUrl:O.W.EmptyStates.CURRICULUM_LINKS,onChangeCurriculum:N,hasNonEmptyCurriculums:!!f.length})),r.createElement(x.u,null,r.createElement(x.u.Submit,{variant:"dark",onClick:e.closePopup,text:T("close")})))}}}]);
|
|
2
|
-
//# sourceMappingURL=1477-fa0f6cc194-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/1477-fa0f6cc194-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/curriculum-links/CurriculumLinks.tsx","file:///app/packages/projects/lite/src/shared/views/view-curriculum-links/ViewCurriculumLinksView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { PartialCurriculumLinks } from 'libs/shared/components/curriculum-links/partial-loading/PartialCurriculumLinks';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurriculumType } from 'libs/shared/enums/CurriculumType';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Curriculum, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { CurriculumLinksEmptyState } from './CurriculumLinksEmptyState';\n\nimport styles from './curriculum-links.scss';\n\nconst BRACKET_SEGMENT_REGEX = /(.*)\\s\\((.*)?\\)/i;\n\nconst namespace = 'shared.curriculumLinks';\n\nconst BASE_PILL_CLASS = 'text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block';\n\ninterface CurriculumStructure {\n [CurriculumType.Subject]: Curriculum<CurriculumType.Subject>;\n [CurriculumType.Audience]: Curriculum<CurriculumType.Audience>;\n areasAndLeaves: Array<{\n [CurriculumType.Area]: Curriculum<CurriculumType.Area>[];\n [CurriculumType.Leaf]: Curriculum<CurriculumType.Leaf>[];\n }>;\n}\n\ninterface CurriculumLeafProps {\n leaf: Curriculum<CurriculumType.Leaf>;\n codeWidth: number;\n trySetMaxCodeWidth: React.Dispatch<React.SetStateAction<number>>;\n uiContainsCodes: boolean;\n}\n\nfunction CurriculumLeaf(props: CurriculumLeafProps): JSX.Element {\n function getCurriculumCodeClass(): string {\n const baseClass = BASE_PILL_CLASS + ' bg-white border';\n\n // If a leaf has no code but the rest of the UI has leaf nodes w/ codes, we show a special \"No code\" pill\n if (!props.leaf.name && props.uiContainsCodes)\n return baseClass + ' border-secondary text-secondary';\n\n return baseClass + ' border-dark';\n }\n\n const codeRef = React.useRef<HTMLDivElement>();\n\n React.useEffect(() => {\n if (!codeRef.current)\n return;\n\n const { width } = codeRef.current.getBoundingClientRect();\n\n props.trySetMaxCodeWidth(width);\n }, [codeRef.current]);\n\n return (\n <div className='d-flex'>\n {(() => {\n if (!props.leaf.description)\n return <p className='m-0' dangerouslySetInnerHTML={{ __html: props.leaf.name }} />;\n\n /**\n * If a leaf has no code but the rest of the UI has leaf nodes\n * with codes, we show a special \"No code\" pill. Example: https://imgur.com/3L1Ela3\n */\n if (!props.leaf.name && props.uiContainsCodes) {\n return (\n <>\n <div\n className='me-1 align-self-start'\n style={{ minWidth: props.codeWidth ? `${props.codeWidth}px` : 'auto' }}\n >\n <h5 ref={codeRef} className={getCurriculumCodeClass()}>\n <Text namespace={namespace} phrase='noCode' />\n </h5>\n </div>\n <p className='m-0 align-self-center' dangerouslySetInnerHTML={{ __html: props.leaf.description }} />\n </>\n );\n }\n\n /**\n * If a leaf has no code and the rest of the UI leaf nodes have no code, we just\n * display the description with a bullet point. Example: https://imgur.com/jzJvmWs\n */\n if (!props.leaf.name && !props.uiContainsCodes)\n return <p className='m-0' dangerouslySetInnerHTML={{ __html: props.leaf.description }} />;\n\n return (\n <>\n <div\n className='me-1 align-self-start'\n style={{ minWidth: props.codeWidth ? `${props.codeWidth}px` : 'auto' }}\n >\n <h5 ref={codeRef} className={getCurriculumCodeClass()}>{props.leaf.name}</h5>\n </div>\n <p className='m-0 align-self-center' dangerouslySetInnerHTML={{ __html: props.leaf.description }} />\n </>\n );\n })()}\n </div>\n );\n}\n\ninterface CurriculumSubjectProps {\n linkSet: CurriculumStructure;\n codeWidth: number;\n trySetMaxCodeWidth: React.Dispatch<React.SetStateAction<number>>;\n}\n\nfunction CurriculumSubject(props: CurriculumSubjectProps): JSX.Element {\n const areaAndLeafSets: { [areaText: string]: Curriculum<CurriculumType.Leaf>[]; } = {};\n\n let uiContainsCodes = false;\n\n props.linkSet.areasAndLeaves.forEach(areaAndLeafSet => {\n const areaText = areaAndLeafSet[CurriculumType.Area].map(ca => ca.name).join(' - ');\n\n if (areaAndLeafSets[areaText]) {\n areaAndLeafSet[CurriculumType.Leaf].forEach(leaf => {\n if (!areaAndLeafSets[areaText].find(l => l.name === leaf.name)) {\n areaAndLeafSets[areaText].push(leaf);\n\n // We need the info on if _any_ leaf node has a code in it. See why in the comments in `<CurriculumLeaf />`\n if (leaf.name)\n uiContainsCodes = true;\n }\n });\n\n return;\n }\n\n areaAndLeafSets[areaText] = areaAndLeafSet[CurriculumType.Leaf];\n });\n\n function getAudienceText(): string {\n const audienceSegment = props.linkSet[CurriculumType.Audience].name;\n const subjectSegment = props.linkSet[CurriculumType.Subject].name;\n\n /**\n * In some curriculums, such as the UK curriculum, the audience string may contain a year level\n * in brackets. For example, it may be \"Lower Key Stage 2 (Year 4)\".\n * This regex will pull that segment out if it exists.\n */\n const audienceBracketSegments = audienceSegment.match(BRACKET_SEGMENT_REGEX);\n\n if (audienceBracketSegments)\n return `${audienceBracketSegments[1]} • ${audienceBracketSegments[2]} • ${subjectSegment}`;\n\n return `${audienceSegment} • ${subjectSegment}`;\n }\n\n function getLeafStyleClass(leaf: Curriculum<CurriculumType.Leaf>): string {\n const className = 'mb-2';\n\n if (!leaf.name && !uiContainsCodes)\n return className + ' ms-4 ' + styles.leafDescriptionOnly;\n\n return className;\n }\n\n return (\n <>\n <h3 className={`${BASE_PILL_CLASS} text-white bg-ultramarine fw-normal me-1 mb-2`}>\n {getAudienceText()}\n </h3>\n\n <div className={`me-2 ${styles.curriculumSubject}`}>\n {Object.keys(areaAndLeafSets).map((areaText, i) => {\n return (\n <div key={i} className={styles.areaLeafSet} >\n {areaText && <h4 className='mb-1 font-size-normal'>{areaText}</h4>}\n <ul className='list-unstyled'>\n {areaAndLeafSets[areaText].map(leaf => (\n <li key={leaf.id} className={getLeafStyleClass(leaf)}>\n <CurriculumLeaf\n leaf={leaf}\n codeWidth={props.codeWidth}\n trySetMaxCodeWidth={props.trySetMaxCodeWidth}\n uiContainsCodes={uiContainsCodes}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n })}\n </div>\n </>\n );\n}\n\ninterface CurriculumLinksSet {\n [subjectAndAudienceIdKey: string]: CurriculumStructure\n}\n\ninterface CurriculumLinksProps {\n curriculumLinks: Curriculum[][];\n emptyStateUrl?: string;\n checkAllCurriculums?: () => Promise<Presentation[]>;\n onChangeCurriculum?: (id: string) => void;\n hasNonEmptyCurriculums: boolean;\n}\n\nexport function CurriculumLinks(props: CurriculumLinksProps): JSX.Element {\n const [ codeWidth, setCodeWidth ] = React.useState(0);\n const [ showOtherCurriculums, setShowOtherCurriculums ] = React.useState(false);\n const [ loadingOther, setLoadingOther ] = React.useState(false);\n const [ curriculumTags, setCurriculumTags ] = React.useState<Presentation[]>([]);\n\n React.useEffect(() => {\n if (props.checkAllCurriculums && props.curriculumLinks && !props.curriculumLinks?.length) {\n setLoadingOther(true);\n // only fetch other curriculums when this curriculum is displayed\n props.checkAllCurriculums().then(data => {\n if (data.length) {\n setShowOtherCurriculums(true);\n }\n\n setCurriculumTags(data);\n }).finally(() => setLoadingOther(false));\n }\n\n if (props.curriculumLinks?.length && showOtherCurriculums) {\n setShowOtherCurriculums(false);\n }\n }, [props.curriculumLinks?.length]);\n\n function trySetMaxCodeWidth(width: number): void {\n /**\n * The width of the curriculum code column should be identical for each leaf node, meaning\n * the leaf description text will be perfectly vertically aligned all the way down.\n * See here for example: https://imgur.com/MbganZf\n * \n * This is achieved by us setting the state for the maximum code width, and forcing all\n * smaller codes to abide by that max width.\n * \n * This value is used in the `<CurriculumLeaf />` component.\n */\n setCodeWidth(currentVal => {\n if (currentVal >= width)\n return currentVal;\n\n return width;\n });\n }\n\n /**\n * Here, we're taking the structure of links from the backend, and restructuring it in a way\n * that resembles the structure of our UI more closely. The general idea is:\n * \n * CurriculumAudience - CurriculumSubject\n * CurriculumAreas\n * CurriculumLeaves\n */\n const curriculumLinkSets = React.useMemo(() => {\n const newSet: CurriculumLinksSet = {};\n\n props.curriculumLinks?.forEach(linkSet => {\n let subject: Curriculum<CurriculumType.Subject> = null;\n let audience: Curriculum<CurriculumType.Audience> = null;\n const areas: Curriculum<CurriculumType.Area>[] = [];\n const leaves: Curriculum<CurriculumType.Leaf>[] = [];\n \n linkSet.forEach(curriculumObj => {\n switch (curriculumObj.type) {\n case CurriculumType.Subject:\n subject = curriculumObj as Curriculum<CurriculumType.Subject>;\n break;\n case CurriculumType.Audience:\n audience = curriculumObj as Curriculum<CurriculumType.Audience>;\n break;\n case CurriculumType.Area:\n areas.push(curriculumObj as Curriculum<CurriculumType.Area>);\n break;\n case CurriculumType.Leaf:\n leaves.push(curriculumObj as Curriculum<CurriculumType.Leaf>);\n break;\n default:\n break;\n }\n });\n\n if (!subject || !audience)\n return;\n \n const key = `${subject.id}:${audience.id}`;\n \n if (newSet[key]) {\n newSet[key].areasAndLeaves.push({\n [CurriculumType.Area]: areas,\n [CurriculumType.Leaf]: leaves\n });\n \n return;\n }\n \n newSet[key] = {\n [CurriculumType.Subject]: subject,\n [CurriculumType.Audience]: audience,\n areasAndLeaves: [{\n [CurriculumType.Area]: areas,\n [CurriculumType.Leaf]: leaves\n }]\n };\n });\n\n return newSet;\n }, [props.curriculumLinks]);\n\n if (loadingOther) {\n return <PartialCurriculumLinks />;\n }\n \n if (!props.curriculumLinks?.length && !props.hasNonEmptyCurriculums) {\n // only if all other curriculums don't have links we render the empty state\n if (props.emptyStateUrl && !showOtherCurriculums && !loadingOther)\n return <CurriculumLinksEmptyState emptyStateUrl={props.emptyStateUrl} />;\n }\n\n if (showOtherCurriculums) {\n return (\n <div>\n <div className='mb-3'>\n <Text namespace={namespace} phrase='currentEmpty' />\n </div>\n <div className='mb-3'>\n <Text namespace={namespace} phrase='currentEmptyInfo' />\n </div>\n <ul className='list-unstyled mb-0'>\n {curriculumTags.map(t => (\n <li\n key={t.id}\n className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer ${styles.tag} me-2`}\n onClick={() => props.onChangeCurriculum(t.id.toString())}\n >\n <div className={`bg-white ${styles.cover} rounded-circle`}>\n <img\n src={ImageHelper.createUrl(t.cover.url, { size: ImageSize.Small })}\n alt={t.name}\n className='rounded-circle'\n />\n </div>\n {t.name}\n </li>\n ))}\n </ul>\n </div>\n );\n }\n\n return (\n <ul className='list-unstyled m-0'>\n {Object.keys(curriculumLinkSets).map((linkSetKey, i) => (\n <li key={`linkset-${i}`} className={styles.curriculumSet}>\n <CurriculumSubject\n linkSet={curriculumLinkSets[linkSetKey]}\n trySetMaxCodeWidth={trySetMaxCodeWidth}\n codeWidth={codeWidth}\n />\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, PresentationDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { CurriculumLinkItem } from 'libs/shared/components/curriculum-links/CurriculumLinkItem';\nimport { CurriculumLinks } from 'libs/shared/components/curriculum-links/CurriculumLinks';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PartialTagItem } from 'libs/shared/components/tags/PartialTagItem';\nimport { DynamicWidget } from 'libs/shared/components/widgets/dynamic-widget';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps, Presentation, Video } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.viewCurriculumLinks');\n\ninterface ViewCurriculumLinksViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function ViewCurriculumLinksView(props: ViewCurriculumLinksViewProps): React.ReactElement {\n const {\n hasLoaded,\n preferredCurriculum,\n availableCurriculums,\n nonEmptyCurriculums,\n curriculumLinks,\n updateCurriculum\n } = useCurriculums(props.id);\n\n const [ showLoadingSpinner, setShowLoadingSpinner ] = React.useState(!hasLoaded);\n const [ selectedCurriculum, setSelectedCurriculum ] = React.useState<Presentation>();\n\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n\n const alerts = useAlerts();\n function onChangeCurriculum(curriculumId: string): void {\n const newCurriculum = availableCurriculums.find(c => c.id.toString() === curriculumId);\n\n if (!newCurriculum?.id)\n return;\n\n if (selectedCurriculum?.id?.toString() === newCurriculum?.id?.toString())\n return;\n\n setSelectedCurriculum(newCurriculum);\n setShowLoadingSpinner(true);\n\n const onSuccess = () => {\n AnalyticsHelper.logUserAction({\n id: newCurriculum.id,\n name: newCurriculum.id,\n description: newCurriculum.description,\n videoId: video.data?.id,\n videoName: video.data?.name\n }, {\n entity: EntityType.Presentation,\n actionType: UserAction.Select,\n descriptor: PresentationDescriptor.Curriculum,\n location: LocationContext.PlayPage\n });\n };\n\n const onError = () => {\n // If the request to change curriculum fails, we reset the select state and alert the user\n setSelectedCurriculum(selectedCurriculum);\n setShowLoadingSpinner(false);\n alerts.error(getPhrase('updateFailed'));\n };\n\n updateCurriculum(newCurriculum, onSuccess, onError);\n }\n\n React.useEffect(() => {\n if (!hasLoaded)\n return;\n\n if (!selectedCurriculum)\n setSelectedCurriculum(preferredCurriculum ?? ArrayHelper.first(availableCurriculums));\n\n setShowLoadingSpinner(false);\n }, [ preferredCurriculum?.id, hasLoaded ]);\n\n return (\n <Popup\n title={getPhrase('heading')}\n closePopup={props.closePopup}\n size='lg'\n >\n <div className='mb-3 mx-2'>\n {!!nonEmptyCurriculums?.length && (\n <DynamicWidget\n collection={nonEmptyCurriculums}\n childClassName='flex-shrink-0'\n childComponent={props => {\n return (\n <CurriculumLinkItem\n {...props}\n selected={selectedCurriculum?.id?.toString() === props.data.id.toString()}\n onChangeCurriculum={onChangeCurriculum}\n />\n );\n }}\n partialLoadingComponent={() => <PartialTagItem />}\n widgetDataDeps={[selectedCurriculum?.id?.toString()]}\n />\n )}\n </div>\n\n {!showLoadingSpinner ? (\n <div className='pb-3'>\n <CurriculumLinks\n curriculumLinks={curriculumLinks}\n emptyStateUrl={ImageUrls.EmptyStates.CURRICULUM_LINKS}\n onChangeCurriculum={onChangeCurriculum}\n hasNonEmptyCurriculums={!!nonEmptyCurriculums.length}\n />\n </div>\n ) : (\n <div className='d-flex justify-content-center align-items-center py-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n )}\n\n <PopupButtons>\n <PopupButtons.Submit variant='dark' onClick={props.closePopup} text={getPhrase('close')} />\n </PopupButtons>\n </Popup>\n );\n}\n"],"names":["BRACKET_SEGMENT_REGEX","namespace","BASE_PILL_CLASS","CurriculumLeaf","props","getCurriculumCodeClass","baseClass","leaf","name","uiContainsCodes","codeRef","current","width","getBoundingClientRect","trySetMaxCodeWidth","className","description","style","minWidth","codeWidth","ref","Text","phrase","dangerouslySetInnerHTML","__html","CurriculumSubject","audienceSegment","subjectSegment","audienceBracketSegments","areaAndLeafSets","getLeafStyleClass","linkSet","areasAndLeaves","forEach","areaAndLeafSet","areaText","CurriculumType","map","ca","join","find","l","push","match","Object","keys","i","key","id","CurriculumLinks","setCodeWidth","showOtherCurriculums","setShowOtherCurriculums","loadingOther","setLoadingOther","curriculumTags","setCurriculumTags","currentVal","checkAllCurriculums","curriculumLinks","length","then","data","curriculumLinkSets","newSet","subject","audience","areas","leaves","curriculumObj","type","PartialCurriculumLinks","hasNonEmptyCurriculums","emptyStateUrl","t","onClick","onChangeCurriculum","toString","src","ImageHelper","cover","url","size","alt","linkSetKey","CurriculumLinksEmptyState","getPhrase","LanguageService","ViewCurriculumLinksView","useCurriculums","hasLoaded","preferredCurriculum","availableCurriculums","nonEmptyCurriculums","updateCurriculum","showLoadingSpinner","setShowLoadingSpinner","selectedCurriculum","setSelectedCurriculum","video","VideoRequests","alerts","curriculumId","newCurriculum","c","AnalyticsHelper","videoId","videoName","entity","actionType","descriptor","location","error","ArrayHelper","Popup","title","closePopup","collection","childClassName","childComponent","CurriculumLinkItem","selected","partialLoadingComponent","PartialTagItem","widgetDataDeps","Spinner","as","animation","role","ImageUrls","PopupButtons","variant","text"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2121],{31453:(e,t,a)=>{function n(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];if(!t.length)return"";var n=t.filter((function(e){return!!e}));return n.length?n.join(" "):""}a.d(t,{A:()=>n})},84963:(e,t,a)=>{a.d(t,{r:()=>d});var n=a(32735),i=a(23481),o=a(83914),l=a(36532),c=a(35223);const r={tag:"XRj8d",tooltip:"X6mLk"};var s="specialEventCalendar.comingSoonTag";function d(e){return n.createElement(l.u,{title:i.T.getPhrase(s,"tooltip"),spanHackClassName:"d-block ".concat(r.tooltip),spanHack:!0},n.createElement("div",{className:"d-flex text-dark align-items-center ".concat(r.tag," ").concat(e.className)},n.createElement(o.x,{svgName:c.vn.Timer}),!e.onlyIcon&&i.T.getPhrase(s,"comingSoon")))}},73679:(e,t,a)=>{a.d(t,{s:()=>l});var n=a(32735),i=a(36848);const o={dateItem:"I3SBm",label:"PRORs",body:"RfiM_",bodyDay:"ZOVny",bodyRange:"vYhXN",bodyMonth:"mYslO",month:"EPkkQ"};function l(e){var t,a,l;return n.createElement(i.F,{appLink:null===(t=e.getAppLink)||void 0===t?void 0:t.call(e),className:"text-decoration-none text-center bg-white text-dark border border-3 ".concat(null===(a=e.theme)||void 0===a?void 0:a.border," rounded-3 d-block fw-semibold ").concat(e.className),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},n.createElement("div",{className:"position-relative ".concat(o.dateItem)},n.createElement("div",{className:"".concat(null===(l=e.theme)||void 0===l?void 0:l.background," py-1 ").concat(o.label," d-flex align-items-center justify-content-center")},e.label?e.label:n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(function(){switch(e.body.type){case"range":return o.bodyRange;case"day":return o.bodyDay;case"month":return o.bodyMonth}}()," ").concat(o.body," my-2")},e.body.text),n.createElement("div",{className:"mb-0 ".concat(o.month)},e.month)))}},47770:(e,t,a)=>{a.d(t,{K:()=>r});var n=a(32735),i=a(68050),o=a(69111),l=a(88513),c=a(91028);function r(e){return n.createElement(n.Fragment,null,n.createElement(l.B,{name:e.name,description:e.description}),n.createElement(i.Z,{className:"mb-n2"},e.content.map((function(t){var a;return n.createElement(o.Z,{className:"position-relative pb-2",key:t.id,xs:12,sm:6,lg:e.hasTableOfContents?6:4,xl:4},n.createElement(c.V,{data:t,getChildAppLink:function(t){var a,n;return null===(n=null===(a=e.appLinks)||void 0===a?void 0:a.classification)||void 0===n?void 0:n.call(a,t)},analyticsData:e.analyticsData,highlightOnHover:null===(a=e.settings)||void 0===a?void 0:a.hasTopicDirectories,isLarge:!0}))}))))}},30662:(e,t,a)=>{a.d(t,{q:()=>x});var n=a(32735),i=a(68050),o=a(69111),l=a(88513),c=a(23481),r=a(110),s=a(65858),d=a(36848),m=a(11607),u=a(75163),v=a(5465),g=a(83914),p=a(2284),f=a(54610),b=a(35223),h=a(87114),y=a(38446),C=a(83616);function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var w=c.T.encloseNamespace("shared.subjectStatsWidgetItem");function N(e){var t,a,i,o,l,c,N=(l=n.useState(!1),c=2,function(e){if(Array.isArray(e))return e}(l)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,o,l,c=[],r=!0,s=!1;try{if(o=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;r=!1}else for(;!(r=(n=o.call(a)).done)&&(c.push(n.value),c.length!==t);r=!0);}catch(e){s=!0,i=e}finally{try{if(!r&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw i}}return c}}(l,c)||function(e,t){if(e){if("string"==typeof e)return E(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?E(e,t):void 0}}(l,c)||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.")}()),x=N[0],S=N[1],k=(null===(t=e.classification)||void 0===t?void 0:t.status)===p.W.ComingSoon,O=h.i.isFollowing(e.classification),Z=h.i.getCounts(e.classification),I=Z.dashboardNewVideosCount,L=Z.childDashboardNewVideoCount,j=Z.dashboardResourceCount,T=Z.childDashboardResourceCount,V=Z.dashboardVideoCount,A=Z.childDashboardVideoCount,D=Z.childClassificationCount,F=V+A,P=j+T,R=I+L,M=function(){if(e.classification.status===p.W.ComingSoon||e.hideCounts)return"";var t="";if(F&&(t+="".concat(w("videos",{smartCount:F})," ")),P&&(t+=" • ".concat(w("resources",{smartCount:P}))),h.i.isTopLevelTopic(e.classification)&&D>0){if(!t)return w("topics",{smartCount:D});t="".concat(w("topics",{smartCount:D})," • ")+t}return t}();return n.createElement(d.F,{className:"d-flex no-decoration rounded ".concat(C.Z.container),appLink:null===(a=e.getAppLink)||void 0===a?void 0:a.call(e,e.classification),analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:null===(i=e.classification)||void 0===i?void 0:i.id,name:null===(o=e.classification)||void 0===o?void 0:o.name,presentationId:e.classification.presentationId,comingSoon:!!k,videoCount:F,resourceCount:P,newVideoCount:R,datePublished:e.classification.datePublished,countsHidden:!!e.hideCounts}),analyticsOptions:Object.assign(Object.assign({location:s.LZ.SubjectStatsWidgetItem},e.analyticsOptions),{actionType:s.Vw.Click,entity:s.py.Classification,descriptor:s._S.Cover})},!x&&n.createElement(v.oy,{type:v.mS.Subject,extraClasses:"ms-2 rounded-end-lg ".concat(C.Z.fallbackImage)}),n.createElement("div",{className:"".concat(C.Z.cover," me-2 rounded overflow-hidden")},n.createElement(u.Z,{data:e.classification.cover,imageOptions:{size:f.h2.Medium},imageClassName:k?"opacity-50":"",onLoad:function(){return S(!0)}},e.canFollowTopics&&n.createElement(m.L,{onClick:function(t){var a;t.stopPropagation(),t.preventDefault(),e.canFollowTopics&&(null===(a=e.onToggleFollowClassification)||void 0===a||a.call(e,e.classification,s.LZ.SubjectStatsWidgetItem))},className:"\n align-items-center justify-content-center cursor-pointer\n ".concat(C.Z.bellContainer," ").concat(O?C.Z.followed:"","\n ")},n.createElement(g.x,{svgName:b.vn.BellFilled,className:"svg-container ".concat(C.Z.bell)}),n.createElement(g.x,{svgName:b.vn.Bell,className:"svg-container ".concat(C.Z.bellOutline)})))),n.createElement("div",null,n.createElement("h3",{className:"h6 mb-0 clamp-2 mt-1"},e.classification.name),!!M&&n.createElement("p",{className:"mb-0 ".concat(C.Z.subText)},M),n.createElement(y.A,{badgeType:function(){if(e.classification.status===p.W.ComingSoon)return"coming-soon";var t=e.classification.datePublished;return t&&r.O.timeSince(t,"day")<=30?"new-topic":R>0&&!e.hideCounts?"new-videos":null}(),newVideoCount:R})))}function x(e){return n.createElement(n.Fragment,null,n.createElement(l.B,{name:e.name,description:e.description}),n.createElement(i.Z,{className:"mb-n2"},e.content.map((function(t){var a;return n.createElement(o.Z,{className:"position-relative pb-2",key:t.id,xs:12,sm:6,lg:e.hasTableOfContents?6:4,xl:4},n.createElement(N,{classification:t,analyticsData:e.analyticsData,getAppLink:null===(a=e.appLinks)||void 0===a?void 0:a.classification,onToggleFollowClassification:e.onToggleFollowClassification,canFollowTopics:!1,hideCounts:e.isTertiaryCustomerWithoutExchange}))}))))}},38446:(e,t,a)=>{a.d(t,{A:()=>s});var n=a(32735),i=a(23481),o=a(83914),l=a(35223);const c={isNew:"KLRzE",newVideos:"xozwy",badge:"NWZxu",icon:"G9W_I"};var r=i.T.encloseNamespace("shared.subjectStatsBadge");function s(e){return n.createElement("div",{className:function(){var t="fw-semibold d-inline-block rounded-pill px-2 ".concat(c.badge);switch(e.badgeType){case"coming-soon":return t+" bg-light ps-1 d-inline-flex align-items-center";case"new-topic":return t+" ".concat(c.isNew);case"new-videos":return t+" ".concat(c.newVideos);default:return""}}()},"coming-soon"===e.badgeType&&n.createElement(o.x,{svgName:l.vn.Timer,className:"svg-container ".concat(c.icon),size:o.S.ExtraSmall}),function(){switch(e.badgeType){case"coming-soon":return r("comingSoon");case"new-topic":return r("new");case"new-videos":return r("newVideos",{smartCount:e.newVideoCount});default:return""}}())}},2192:(e,t,a)=>{a.d(t,{M:()=>E,Q:()=>w});var n=a(32735),i=a(31453),o=a(45157),l=a(36848),c=a(60376),r=a(5465),s=a(83914),d=a(83345),m=a(7733),u=a(54610),v=a(9085),g=a(67453),p=a(45778),f=a(35223),b=a(92038),h="shared.subjectWidgetItem",y=function(e){var t=e.name,a=e.multiline,i=e.noUnderLine,o="".concat(b.Z.comingSoonPanel," \n d-flex flex-column align-items-center justify-content-center px-3 text-center"),l="";return a?l+=" ".concat(b.Z.clamped," clamp-2"):(o+=" text-nowrap",l+=" text-truncate"),n.createElement("div",{className:o},n.createElement("small",{className:"text-secondary"},n.createElement(d.x,{namespace:h,phrase:"comingSoon"})),n.createElement("p",{className:"".concat(i?"":b.Z.name," h6")},n.createElement("span",{className:l},t)))},C=function(e){var t=e.name,a=e.multiline,i=e.subtitle,o=e.noUnderLine,l=e.newVideosCount,c="px-3 d-flex flex-column justify-content-center",r="".concat(o?"":b.Z.name," h6");return a?r+=" ".concat(l?"clamp-2":"clamp-3"," text-start"):(c+=" text-nowrap text-truncate",r+=" text-truncate mb-0"),n.createElement("div",{className:c},i&&n.createElement("div",{className:"text-secondary clamp-1 ".concat(b.Z.text)},i),n.createElement("div",{className:r,title:t},t),!!l&&n.createElement("div",{className:"fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ".concat(b.Z.newVideos)},n.createElement(d.x,{namespace:h,phrase:"newVideos",options:{smartCount:l}})))};function E(e){var t,a=g.j.createUrl(e.coverUrl,{size:e.isLarge?u.h2.Medium:u.h2.Small}),l=void 0;p.G.isClassification(e.data)&&(l=e.data);var d={name:e.data.name,multiline:e.isLarge||e.multiline,subtitle:e.subtitle,noUnderLine:e.highlightOnHover,newVideosCount:e.showNewVideosCount?null===(t=null==l?void 0:l.externalMetadata)||void 0===t?void 0:t.childDashboardNewVideoCount:0},h={backgroundImage:a?"url('".concat(a,"')"):null,backgroundColor:e.coverBgColor},E=(0,v.x)(e.data.name,m.o);return n.createElement("div",{className:"".concat(e.themeColor?b.Z.hasThemeColor:"border"," d-flex position-relative ").concat(e.className," ").concat(b.Z.widgetItem," ").concat(e.isSelected?"border-success border-2":""," ").concat(e.highlightOnHover&&!e.themeColor?"bg-light-blue-hover":""),style:e.themeColor?{"--themeColor":e.themeColor}:{},id:"".concat(e.data.id,"-").concat(o.Y.getRandomInt())},e.isSelected&&n.createElement("div",{className:"".concat(b.Z.selectedMask," border-2")}),n.createElement("div",{className:"".concat(b.Z.imagePanel," ").concat(e.isLarge?b.Z.large:"")},e.isSelected&&!e.hideCheckmark&&n.createElement("div",{className:b.Z.selected},n.createElement(c.f,{svgName:f.vn.Check,svgSize:s.S.Large,textVariant:"white",variant:"green"})),a&&n.createElement("div",{className:(0,i.A)(b.Z.image,e.imageClassName,!e.coverBgColor&&E),style:h}),!e.hideFallback&&n.createElement(r.oy,{type:r.mS.Subject,extraClasses:e.isLarge?b.Z.large:""})),e.isComingSoon?n.createElement(y,Object.assign({},d)):n.createElement(C,Object.assign({},d)))}function w(e){var t,a=e.getChildAppLink?e.getChildAppLink(e.data):null;return n.createElement(n.Fragment,null,a?n.createElement(l.F,{className:b.Z.appLink,appLink:a,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,appLinkOptions:null===(t=e.getChildAppLinkOptions)||void 0===t?void 0:t.call(e)},n.createElement(E,Object.assign({},e))):n.createElement(E,Object.assign({},e)))}},43741:(e,t,a)=>{a.d(t,{M:()=>s,Q:()=>r});var n=a(32735),i=a(45157),o=a(5465),l=a(92038);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var r=function(){var e,t,a=(e=n.useState(i.Y.getRandomInt(5)+3+"rem"),t=1,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,o,l,c=[],r=!0,s=!1;try{if(o=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;r=!1}else for(;!(r=(n=o.call(a)).done)&&(c.push(n.value),c.length!==t);r=!0);}catch(e){s=!0,i=e}finally{try{if(!r&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?c(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return n.createElement("div",{className:"border d-flex position-relative me-2 ".concat(l.Z.widgetItem)},n.createElement("div",{className:l.Z.imagePanel}),n.createElement("div",{className:"px-2",style:{width:a}}),n.createElement("div",{className:l.Z.partialIcon},n.createElement(o.oy,{type:o.mS.Subject})))},s=function(){return n.createElement("div",{className:"border d-flex position-relative me-2 ".concat(l.Z.widgetItem)},n.createElement("div",{className:"".concat(l.Z.partialLargeImage)}),n.createElement("div",{className:"px-2"}),n.createElement("div",{className:l.Z.partialIcon},n.createElement(o.oy,{type:o.mS.Subject,extraClasses:l.Z.partialLargeFallback})))}},91028:(e,t,a)=>{a.d(t,{V:()=>r});var n=a(32735),i=a(65858),o=a(2192),l=a(52641),c=a(2284),r=n.memo((function(e){var t,a,r,s,d,m,u,v,g,p,f,b,h,y=(null===(t=e.data)||void 0===t?void 0:t.status)===c.W.ComingSoon,C=function(e,t){var a;if((null==t?void 0:t.length)>=l._.MULTI_PRESENTATION_THRESHOLD)return null===(a=null==t?void 0:t.find((function(t){return t.id===e})))||void 0===a?void 0:a.name}(e.data.presentationId,null==e?void 0:e.availablePresentations),E=Object.assign(Object.assign({},e.analyticsData),{id:(null===(a=e.analyticsData)||void 0===a?void 0:a.id)||(null===(r=e.data)||void 0===r?void 0:r.id),name:null===(s=e.data)||void 0===s?void 0:s.name,presentationId:(null===(d=e.analyticsData)||void 0===d?void 0:d.presentationId)||e.data.presentationId,comingSoon:!!y}),w=Object.assign(Object.assign({location:i.LZ.ClassificationListItem,entity:i.py.Classification},e.analyticsOptions),{actionType:i.Vw.Click,descriptor:i._S.Cover});return n.createElement(o.Q,Object.assign({},e,{analyticsData:E,analyticsOptions:w,coverUrl:null===(m=e.data.cover)||void 0===m?void 0:m.url,coverBgColor:null===(v=null===(u=e.data)||void 0===u?void 0:u.metadata)||void 0===v?void 0:v.backgroundColor,subtitle:(null===(g=e.getSubtitle)||void 0===g?void 0:g.call(e,e.data))||C,isComingSoon:y,themeColor:(null===(p=e.shouldHighlight)||void 0===p?void 0:p.call(e,e.data))&&null!==(h=null===(b=null===(f=e.data)||void 0===f?void 0:f.metadata)||void 0===b?void 0:b.backgroundColor)&&void 0!==h?h:""}))}))},9513:(e,t,a)=>{a.d(t,{Ml:()=>i.M,Qh:()=>i.Q,Vz:()=>n.V});var n=a(91028),i=a(43741),o=(a(32735),a(65858));a(36848),a(83914),a(83345),a(35223),a(92038),o.Vw.Click,o.py.UserSetting,o._S.Tile,a(2786),o.Vw.Click,o.py.Url,o._S.Tile},83616:(e,t,a)=>{a.d(t,{Z:()=>n});const n={container:"wzt8R",bellContainer:"X7Jgx",bell:"HoKe4",followed:"Pdmdk",bellOutline:"bEQDk",cover:"luOU3",fallbackImage:"ReXqz",subText:"p0kUV"}},92038:(e,t,a)=>{a.d(t,{Z:()=>n});const n={appLink:"fFjKN",name:"A_by9",selectedMask:"xSQtR",widgetItem:"Ys9W_",hasThemeColor:"DX2ua",text:"JfAoy",imagePanel:"aUNDc",partialLargeImage:"RuLxv",selected:"BViJb",image:"LkTep",dragHandle:"CJqvP",large:"R5clw",comingSoonPanel:"Wa2PG",newVideos:"s61h8",editSubjectsItem:"gGNFD",allSubjectsItem:"IHdlJ",logoContainer:"Nzaes",draggingItem:"zUOye",partialLargeFallback:"FmJP9",partialIcon:"sdZuo"}}}]);
|
|
2
|
-
//# sourceMappingURL=2121-aec96064d1-lite.chunk.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2613],{75097:(e,t,r)=>{r.d(t,{U:()=>o});var n=r(32735),a=r(95245);function o(e){var t=e.count,r=void 0===t?6:t;return n.createElement("div",{className:"d-flex"},n.createElement("div",{className:"d-flex ps-1"},Array(r).fill(null).map((function(e,t){return n.createElement("div",{key:t,className:"".concat(a.Z.partialButton," partial-loading-background mx-1")})}))))}},69674:(e,t,r)=>{r.d(t,{i:()=>w});var n=r(32735),a=r(42648),o=r(35509),l=r(91967),c=r(36848),i=r(17808),s=r(1287),u=r(83914),d=r(16930),m={opacity:"0.8",cursor:"grabbing"},f=r(35223);function p(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return g(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function b(e){var t,r,n,a;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(r=e.current)||void 0===r?void 0:r.scrollLeft)+1<(null===(n=e.current)||void 0===n?void 0:n.scrollWidth)-(null===(a=e.current)||void 0===a?void 0:a.clientWidth)}}const y={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var E=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function S(e){var t,r;return e.column.canSort?n.createElement("span",{className:"".concat(y.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(r=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==r?r:"")},n.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):n.createElement(n.Fragment,null)}function k(e){var t,r,a,u,d,f,v,g,b={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(b.initialState={selectedRowIds:(v=e.initialSelectedRowIds,g={},v.forEach((function(e){return g[e]=!0})),g)}),e.getRowId&&(b.getRowId=e.getRowId);var y,E=o.useTable.apply(void 0,[b].concat((y=function(e){var t=[o.useSortBy,o.useRowSelect,"flex"===e.layout?o.useFlexLayout:o.useBlockLayout];return e.allowFiltering&&(t=[].concat(p(t),[o.useFilters])),e.allowGlobalFiltering&&(t=[].concat(p(t),[o.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return h(e)}(y)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(y)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}(y)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))),k=E.getTableProps,w=E.getTableBodyProps,C=E.headerGroups,N=E.rows,j=E.prepareRow,x=E.toggleAllRowsSelected,A=E.setGlobalFilter,T=E.setHiddenColumns,R=E.state.sortBy;function L(){return N.map((function(t){j(t);var r=function(t){var r,n,a,o,c,i=l.q.isFunction(null===(r=e.theme)||void 0===r?void 0:r.row)?e.theme.row(t):null!==(a=null===(n=e.theme)||void 0===n?void 0:n.row)&&void 0!==a?a:"";return t.isSelected&&(null===(o=e.theme)||void 0===o?void 0:o.selectedRow)&&(i+=" ".concat(null===(c=e.theme)||void 0===c?void 0:c.selectedRow)),e.onSelectRow&&(i+=" cursor-pointer"),e.enableSortableRows&&(i+=" cursor-grab"),i}(t),a=!!e.getRowAppLink&&e.getRowAppLink(t);function o(){e.onSelectRow&&(e.allowSelectMultipleRows||x(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function i(e,l){var i=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,l);return a?n.createElement("div",{role:"row",key:t.id},n.createElement(c.F,Object.assign({},e,i,{className:r,appLink:a}),O(t))):n.createElement("div",Object.assign({},e,i,{key:t.id,role:"row",className:r,onClick:o}),O(t))}var u=t.getRowProps();return e.enableSortableRows?n.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:n.forwardRef((function(e,t){return i(e,t)}))}):i(u)}))}function O(t){return t.cells.map((function(r){var a=function(t,r){var n,a,o="";return"function"==typeof(null===(n=e.theme)||void 0===n?void 0:n.cell)&&(o=e.theme.cell(t,r)),"string"==typeof(null===(a=e.theme)||void 0===a?void 0:a.cell)&&(o=e.theme.cell),e.onSelectCell&&(o+=" cursor-pointer"),o}(t,r);return n.createElement("div",Object.assign({key:r.column.id},r.getCellProps(),{className:a,onClick:function(){e.onSelectCell&&e.onSelectCell(r)}}),r.render("Cell"))}))}return n.useEffect((function(){e.onSort&&e.onSort(R)}),[R]),n.useEffect((function(){e.globalFilter&&A(e.globalFilter)}),[e.globalFilter]),n.useEffect((function(){e.hiddenColumns&&T(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),n.createElement("div",Object.assign({},k(),{className:null!==(r=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==r?r:""}),n.createElement("div",{className:null!==(u=null===(a=e.theme)||void 0===a?void 0:a.header)&&void 0!==u?u:""},C.map((function(t){var r,a;return n.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(a=null===(r=e.theme)||void 0===r?void 0:r.headerRow)&&void 0!==a?a:""}),t.headers.map((function(t){var r,a;return n.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(a=null===(r=e.theme)||void 0===r?void 0:r.headerCell)&&void 0!==a?a:""}),t.render("Header",{renderSortIndicator:function(){return n.createElement(S,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&n.createElement(S,{column:t,theme:e.theme}))})))}))),n.createElement("div",Object.assign({},w(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?n.createElement(i.Q,{ids:N.map((function(e){return e.original.id})),getDragOverlay:function(t){var r,a,o=N.findIndex((function(e){return e.original.id===t})),l=N[o];return n.createElement("div",Object.assign({},e,{className:(r=e.theme,a="g-0 ",r&&(a+=r.row),a),style:m}),O(l))},onSortEnd:e.onSortingRowsEnd},L()):L()))}function w(e){var t=e.enableSlider,r=e.scrollIncrement,o=e.scrollable,c=E(e,["enableSlider","scrollIncrement","scrollable"]),i=function(){var e,t,r=n.useRef(),a=(e=n.useState(b(r)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,l,c=[],i=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(e,t)||v(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],c=a[1],i=l.q.throttle((function(){c(b(r))}),200),s=n.useCallback((function(e){var t;r.current&&(null===(t=r.current)||void 0===t||t.removeEventListener("scroll",i)),e&&(c(b(r)),e.addEventListener("scroll",i)),r.current=e}),[]);return n.useEffect((function(){(null==r?void 0:r.current)&&c(b(r))}),[r]),{ref:s,scrollState:o,scroll:function(e){var t;null===(t=r.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=i.ref,u=i.scrollState,m=i.scroll;if(o)return n.createElement(a.$B,{renderTrackHorizontal:function(){return n.createElement("div",{className:y.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},n.createElement(k,Object.assign({},c)));if(!t)return n.createElement(k,Object.assign({},c));function f(e){m(r*("right"===e?1:-1))}return n.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},n.createElement("div",{className:"px-4"},n.createElement("div",{className:"position-relative"},n.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),n.createElement("div",{className:"".concat(y.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},n.createElement(k,Object.assign({},c))),n.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}w.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},91286:(e,t,r)=>{r.d(t,{v:()=>l});var n=r(32735),a=r(94644);function o(e){return e.map((function(e){return e.statusCode})).join(":")}function l(e,t,r){var l=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){l.forEach((function(e){(0,a.r)(e.statusCode,t,r)}))}),[o(l),t,r])}},299:(e,t,r)=>{r.d(t,{X:()=>l});var n=r(32735),a=r(69217),o=r(94631),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.idField,l=void 0===r?"id":r,c=t.persistNamespace,i=t.initialState?t.initialState:new Map,s=n.useRef(i),u=(0,a.N)(),d=(0,o.D)(e),m=(0,o.D)(c);function f(){s.current.clear(),u()}function p(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),s.current.get(e)}function v(){return!!(null==e?void 0:e.length)&&e.every(p)}function g(e){e.forEach((function(e){s.current.set(e,!0)})),u()}return n.useEffect((function(){t.initialState||c&&m===c||(null==d?void 0:d.map((function(e){return e[l]})).join())!==(null==e?void 0:e.map((function(e){return e[l]})).join())&&f()}),[d,m,e,t.initialState]),n.useEffect((function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&g(t.preselectedIds)}),[]),{onToggleBulk:function(){var t=!v();e.forEach((function(e){t?s.current.set(e[l].toString(),!0):s.current.delete(e[l].toString())})),u()},onToggleItem:function(e){var t=!s.current.get(e.toString());t?s.current.set(e.toString(),t):s.current.delete(e.toString()),u()},getSelected:function(){return Array.from(s.current.keys())},isChecked:p,bulkChecked:v(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach((function(e){s.current.delete(e[l].toString())})),u())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find((function(e){return p(e)}))},setSelected:g,getSelectedCount:function(){return s.current.size},reset:f,getMap:function(){return s.current}}}},58418:(e,t,r)=>{r.r(t),r.d(t,{UserAuditLogView:()=>te});var n=r(32735),a=r(23481),o=r(57900),l=r(20354),c=r(75097),i=r(49935);const s={partialHeading:"rfiJl",partialJobCount:"h8k_u",partialCheckbox:"HkuOS",partialExportButton:"Iul7S",row:"mwigG",checkboxColumn:"Z5jLG",actionColumn:"rLxYh",usersColumn:"QZzab",dateColumn:"Wf_Jp",performedByColumn:"Ubtmj",seeMoreColumn:"XdP6u",heading:"kRMMH",action:"DvDvW",users:"goKpg",date:"ejYGb",performedBy:"NhjyL"};function u(){return n.createElement("div",{className:"d-flex striped-row rounded py-3 ".concat(s.row)},n.createElement("div",{className:"".concat(s.checkboxColumn," d-flex justify-content-center")},n.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox," ms-0")})),n.createElement("div",{className:"".concat(s.actionColumn)},n.createElement("div",{className:"partial-loading-background ".concat(s.action)})),n.createElement("div",{className:"".concat(s.usersColumn)},n.createElement("div",{className:"partial-loading-background ".concat(s.users)})),n.createElement("div",{className:"".concat(s.dateColumn)},n.createElement("div",{className:"partial-loading-background ".concat(s.date)})),n.createElement("div",{className:"".concat(s.performedByColumn)},n.createElement("div",{className:"partial-loading-background ".concat(s.performedBy)})),n.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function d(){return n.createElement("div",{className:"d-flex py-2 mb-1"},n.createElement("div",{className:"".concat(s.checkboxColumn)}," "),n.createElement("div",{className:"".concat(s.actionColumn)},n.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),n.createElement("div",{className:"".concat(s.usersColumn)},n.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),n.createElement("div",{className:"".concat(s.dateColumn)},n.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),n.createElement("div",{className:"".concat(s.performedByColumn)},n.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),n.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function m(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"mb-3 mt-n1"},n.createElement(d,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(u,null),n.createElement(u,null),n.createElement(u,null),n.createElement(u,null),n.createElement(u,null),n.createElement(u,null),n.createElement(u,null),n.createElement(u,null),n.createElement(u,null),n.createElement(u,null),n.createElement(u,null),n.createElement(u,null))))}function f(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"partial-loading-background mb-2 ".concat(s.partialHeading)}),n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"d-flex justify-content-between"},n.createElement(i.b2,null),n.createElement("div",{className:"partial-loading-background ".concat(s.partialJobCount)}))),n.createElement("div",{className:"d-flex align-items-center pb-2"},n.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox)}),n.createElement("div",{className:"ms-4 ps-3"},n.createElement(c.U,{count:3})),n.createElement("div",{className:"ms-auto partial-loading-background ".concat(s.partialExportButton)})),n.createElement(m,null))}var p=r(89422),v=r(89965),g=r(37395),b=r(2102),y=r(83345),h=r(76881),E=r(69883),S=r(299),k=r(75795),w=r(65858),C=r(93659),N=r(23715),j="userManager.userAuditLogFilters";function x(e){var t=[N.x$.SortBy([{id:"newest",name:a.T.getPhrase(j,"newest"),default:!0},{id:"oldest",name:a.T.getPhrase(j,"oldest")}]),N.x$.BulkActionType(),N.x$.UserType()];return n.createElement(C.J,{queryParams:e.queryParams,mainFilters:t,appLink:e.appLinks.auditLog,analyticsOptions:{entity:w.py.BatchJob,location:w.LZ.UserAuditLog},hideHeading:!0,hideDivider:!0,constantIndices:[]})}var A=r(69674),T=r(110),R=r(149),L=r(36848),O=r(89725),I=r(83914),B=r(86794);const M={seeMore:"uymuO"};function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var F="userManager.userAuditLogTable",H=a.T.encloseNamespace(F),U={table:"striped-list no-full-width pb-3",header:"fw-semibold pb-1",headerCell:"px-2 py-1",row:"striped-row rounded audit-log-row",cell:"d-flex align-items-center py-3 px-2"};function J(e){var t,r,a,o,l=(t=e.jobs.data,r=e.isChecked,t.map((function(e){var t=T.O.format(e.dateCreated,"DD/MM/YYYY, hh:mmA");return{id:e.id,checked:r(e.id),actionType:R.b.mapJobTypeToName(e.type),userType:R.b.mapDataTypeToUserType(e.dataType),date:t,performedBy:{name:e.submitterName,submittedByClickView:e.submittedByClickView}}})));return n.createElement(A.i,{columns:(a=e.appLinks.bulkActionSummary,o=e.onToggleCheckbox,[{Header:"",id:"checkboxes",accessor:function(e){return{id:e.id,checked:e.checked}},Cell:function(e){return n.createElement("div",{className:"text-center mx-auto"},n.createElement(v.X,{id:e.value.id,checked:e.value.checked,onChange:function(){return o(e.value.id)}}))},width:10},{Header:H("action"),accessor:"actionType",id:"actionType",Cell:function(e){var t=e.value;return n.createElement("div",{className:"w-100"},t)},width:20},{Header:H("users"),accessor:"userType",id:"userType",Cell:function(e){var t=e.value;return n.createElement("div",{className:"w-100"},function(){switch(t){case h.Y.Learner:return H("students");case h.Y.Staff:return H("staff");case h.Y.Unknown:default:return H("unknown")}}())},width:10},{Header:H("date"),accessor:"date",id:"date",Cell:function(e){var t=e.value;return n.createElement("div",{className:"w-100"},t)},width:20},{Header:H("performedBy"),accessor:"performedBy",id:"performedBy",Cell:function(e){return n.createElement("div",{className:"w-100 d-flex align-items-center"},e.value.submittedByClickView&&n.createElement(B.b,{className:"me-1",size:I.S.Small},n.createElement(O.F,null)),e.value.name)},width:20},{Header:"",accessor:"id",id:"seeMore",Cell:function(e){var t,r,o=e.value;return n.createElement("div",{className:"w-100 d-flex justify-content-end"},n.createElement(L.F,{className:"info-link text-end me-3 ms-auto ".concat(M.seeMore),appLink:Object.assign(Object.assign({},a),{args:(null===(t=a.args)||void 0===t?void 0:t.length)?[].concat((r=a.args,function(e){if(Array.isArray(e))return P(e)}(r)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?P(e,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),[o]):[o]})},n.createElement(y.x,{namespace:F,phrase:"seeMore"})))},width:30}]),data:l,theme:U})}var G=r(23232),Y="userManager.auditLogEmptyState";function _(e){return n.createElement(G.u,null,n.createElement(G.u.Image,{src:e.imageUrl}),n.createElement(G.u.Heading,null,n.createElement(y.x,{namespace:Y,phrase:"heading"})),n.createElement(G.u.Info,null,n.createElement(y.x,{namespace:Y,phrase:"info"})))}const q={bulkCheckbox:"NMw5T"};function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var W="userManager.auditLog",$=a.T.encloseNamespace(W);function V(e){var t,r,a,l,c=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),s=(a=n.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,l,c=[],i=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(a,l)||function(e,t){if(e){if("string"==typeof e)return D(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?D(e,t):void 0}}(a,l)||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],m=(0,S.X)(e.jobs.data),f=(0,E.Z)();return n.createElement(n.Fragment,null,n.createElement("h1",{className:"h2"},n.createElement(y.x,{namespace:W,phrase:"heading"})),n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"d-flex justify-content-between"},n.createElement(i.Oo,{breadcrumbs:[{name:$("settingsBreadcrumb"),appLink:e.appLinks.settings},{name:$(c===h.Y.Learner?"studentManager":"staffManager"),appLink:e.appLinks.userManager},{name:$("heading"),active:!0}]}),n.createElement("p",{className:"mb-0 fw-semibold"},n.createElement(y.x,{namespace:W,phrase:"totalJobs",options:{showing:e.jobs.data.length,smartCount:e.jobs.count}})))),n.createElement("div",{className:"d-flex align-items-center pb-2"},n.createElement(v.X,{className:q.bulkCheckbox,id:"bulk-audit-log-checkbox",checked:m.bulkChecked,onChange:m.onToggleBulk,indeterminate:m.hasSomeSelections()}),n.createElement("div",{className:"ms-4 ps-1"},n.createElement(x,{queryParams:e.queryParams,appLinks:e.appLinks})),n.createElement(b.m,{variant:"dark",className:"ms-auto",onClick:function(){if(!u){d(!0);var t=m.getSelected();e.onClickExport(t).then((function(){return f.success($("exportSuccess"))})).catch((function(){return f.error($("exportError"))})).finally((function(){return d(!1)}))}},disabled:!m.hasSomeSelections()||u,showSpinner:u},n.createElement(y.x,{namespace:W,phrase:"export"}))),(null===(t=e.jobs.data)||void 0===t?void 0:t.length)?n.createElement(J,{jobs:e.jobs,appLinks:e.appLinks,onToggleCheckbox:m.onToggleItem,isChecked:m.isChecked}):n.createElement(_,{imageUrl:e.emptyStateImageUrl}),!!(null===(r=e.jobs.pagination)||void 0===r?void 0:r.cursors)&&n.createElement(g.t,{className:"p-0 text-end pb-3",cursors:e.jobs.pagination.cursors,appLink:k.O.getCurrentRoute().appLink,buttonVariant:"outline-dark"}))}var K=r(91286),z=r(79612),X=r(99742),Z=r(29613),Q=r(18087),ee="userManager.userAuditLogView";function te(e){var t=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),r=l.a.useBasicFetch(Z.q.getJobs(e.queryParams));(0,K.v)(r),(0,z.M)({title:a.T.getPhrase(ee,"pageTitle")});var c=l.a.useGetFetchAsync(),i=(0,Q.Y)(t);return r.hasCompleted?n.createElement("div",{className:"px-3"},n.createElement(V,{jobs:r.data,appLinks:i,queryParams:e.queryParams,onClickExport:function(e){return c(Z.q.sendJobReports(e))},emptyStateImageUrl:X.W.EmptyStates.Search.RESULTS})):n.createElement("div",{className:"px-3"},n.createElement(f,null))}},29613:(e,t,r)=>{r.d(t,{q:()=>l});var n=r(99940),a=r(97395),o=r(149),l={createJob:function(e,t,r){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:n.k.POST,data:e,success:t,error:r}},getJobs:function(e){var t={},r=[],n=[];return e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.bulkActionType?(r=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],t.type=r):t.type=o.O,e.userType&&(n=Array.isArray(e.userType)?e.userType:[e.userType],t.dataType=n),{url:a._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(r.sort().join(":"),":").concat(n.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,t,r){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:t,error:r}},getJobResults:function(e,t,r,n,o){var l={status:t};return r&&(l.cursor=r),{url:a._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),l),key:"job:".concat(e,":results:").concat(t,":").concat(r),success:n,error:o}},getYearGroupRolloverStatus:function(e){return{url:"{gateway}/v1/batch/validations/customers/".concat(e,"/year-group-roll-over"),key:"year:group:rollover:status"}},sendJobReports:function(e){return{url:"{gateway}/v1/batch/results/export",key:"send:job:reports:".concat(e.sort().join(":")),type:n.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}}}]);
|
|
2
|
-
//# sourceMappingURL=2613-3d81a10b0b-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/2613-3d81a10b0b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file:///app/packages/libs/shared/src/constants/DragOverlayStyles.ts","file:///app/packages/libs/shared/src/components/table/TableUtils.ts","file:///app/packages/libs/shared/src/components/table/table.scss","file:///app/packages/libs/shared/src/components/table/Table.tsx","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useBulkCheckboxManager.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/partial-user-audit-log.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/PartialAuditLogTable.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/PartialUserAuditLog.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/user-audit-log-table.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/UserAuditLogTableUtils.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/UserAuditLogTable.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/empty-state/UserAuditLogEmptyState.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/user-audit-log.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/UserAuditLog.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/audit-log/UserAuditLogView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import * as React from 'react';\n\nimport styles from './search-filters.scss';\n\ninterface PartialSearchFiltersProps {\n count?: number;\n}\n\nexport function PartialSearchFilters({ count = 6 }: PartialSearchFiltersProps): JSX.Element {\n return (\n <div className='d-flex'>\n <div className='d-flex ps-1'>\n {Array(count).fill(null).map((item, index) => (\n <div key={index} className={`${styles.partialButton} partial-loading-background mx-1`} />\n ))}\n </div>\n </div>\n );\n}","export const DragOverlayStyles = { opacity: '0.8', cursor: 'grabbing' };","import React from 'react';\nimport { PluginHook, useBlockLayout, useFilters, useFlexLayout, useGlobalFilter, useRowSelect, useSortBy } from 'react-table';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface PluginOptions {\n allowFiltering?: boolean;\n allowGlobalFiltering?: boolean;\n layout?: 'flex' | 'block';\n}\n\nexport function getPlugins<T extends HashObject>(props: PluginOptions): PluginHook<T>[] {\n let plugins: PluginHook<T>[] = [\n useSortBy,\n useRowSelect,\n props.layout === 'flex' ? useFlexLayout : useBlockLayout\n ];\n\n if (props.allowFiltering)\n plugins = [\n ...plugins,\n useFilters\n ];\n\n if (props.allowGlobalFiltering)\n plugins = [\n ...plugins,\n useGlobalFilter\n ];\n\n return plugins;\n}\n\nexport function getSelectedRowIds(ids: string[]): Record<string, boolean> {\n const idHash: Record<string, boolean> = {};\n\n ids.forEach(id => idHash[id] = true);\n\n return idHash;\n}\n\ninterface TableScrollState {\n canScrollLeft: boolean;\n canScrollRight: boolean;\n}\n\nfunction calculateScrollState(ref: React.MutableRefObject<HTMLDivElement>): TableScrollState {\n const canScrollLeft = ref.current?.scrollLeft > 0;\n const canScrollRight = (ref.current?.scrollLeft + 1) < ref.current?.scrollWidth - ref.current?.clientWidth;\n\n return { canScrollLeft, canScrollRight };\n}\n\ninterface UseTableScroll {\n ref: (el: HTMLDivElement) => void;\n scrollState: TableScrollState;\n scroll: (scrollBy: number) => void;\n}\n\nexport function useTableScroll(): UseTableScroll {\n const elRef = React.useRef<HTMLDivElement>();\n const [ scrollState, setScrollState ] = React.useState<TableScrollState>(calculateScrollState(elRef));\n\n function onScroll(): void {\n setScrollState(calculateScrollState(elRef));\n }\n\n function scroll(scrollBy: number): void {\n elRef.current?.scrollBy({ left: scrollBy, top: 0, behavior: 'smooth' });\n }\n\n const throttledOnScroll = FunctionHelper.throttle(onScroll, 200);\n\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (elRef.current) {\n elRef.current?.removeEventListener('scroll', throttledOnScroll);\n }\n\n if (el) {\n setScrollState(calculateScrollState(elRef));\n el.addEventListener('scroll', throttledOnScroll);\n }\n\n elRef.current = el;\n }, []);\n\n React.useEffect(() => {\n if (elRef?.current) {\n setScrollState(calculateScrollState(elRef));\n }\n }, [elRef]);\n\n return { ref, scrollState, scroll };\n}","// extracted by mini-css-extract-plugin\nexport default {\"sortIndicator\":\"gFhu0\",\"scrollContainer\":\"sWUp9\",\"scrollbarTrack\":\"Vn2qM\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport {\n Cell,\n Column as BaseColumn,\n HeaderGroup,\n HeaderProps as BaseHeaderProps,\n IdType,\n Row,\n SortingRule,\n TableOptions,\n TableRowProps,\n useTable } from 'react-table';\nimport { DragEndEvent } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { PropsWithSortableItemProps, SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { DragOverlayStyles } from 'libs/shared/constants/DragOverlayStyles';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getPlugins, getSelectedRowIds, useTableScroll } from './TableUtils';\n\nimport styles from './table.scss';\n\nexport interface TableTheme {\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string | ((row: Row<any>) => string);\n selectedRow?: string;\n cell?: string | ((row?: Row<any>, cell?: Cell<any, any>) => string);\n sortIndicator?: string;\n}\n\nexport type HeaderProps<T extends HashObject> = BaseHeaderProps<T> & {\n renderSortIndicator: () => void;\n}\n\nexport type Column<T extends HashObject> = BaseColumn<T> & {\n hideSortIndicator?: boolean;\n}\n\ninterface SortIndicatorProps<T extends HashObject> {\n column: HeaderGroup<T>;\n theme?: TableTheme;\n}\n\nfunction SortIndicator<T extends HashObject>(props: SortIndicatorProps<T>): JSX.Element {\n if (!props.column.canSort)\n return <></>;\n\n return (\n <span\n className={\n `${styles.sortIndicator}\n ${!props.column.isSorted ? 'text-secondary' : ''}\n ${props.theme?.sortIndicator ?? ''}`\n }\n >\n <SvgContainer\n svgName={(props.column.isSortedDesc || !props.column.isSorted)\n ? cvSvgLibrary.ArrowRight\n : cvSvgLibrary.ArrowLeft\n }\n size={SvgContainerSize.Small}\n />\n </span>\n );\n}\n\ninterface BaseTableProps<T extends HashObject> {\n /**\n * Must be memoized.\n */\n data: T[];\n\n /**\n * Must be memoized.\n * \n * For documentation on Column Options, see https://react-table.tanstack.com/docs/api/useTable#column-options\n */\n columns: Column<T>[];\n\n theme?: TableTheme;\n\n onSelectRow?: (row: Row<T>) => void;\n\n onSelectCell?: (cell: Cell<T>) => void;\n\n onRowMouseOver?: (row: Row<T>) => void;\n\n onRowMouseLeave?: (row: Row<T>) => void;\n\n allowSelectMultipleRows?: boolean;\n\n initialSelectedRowIds?: string[];\n\n getRowId?: (row: T) => string;\n\n getRowAppLink?: (row: Row<T>) => Core.AppLink;\n\n enableSort?: boolean;\n\n manualSort?: boolean;\n\n onSort?: (sortingRule: SortingRule<T>[]) => void;\n \n // Opt-in to utilise react-table's useFilter hook.\n allowFiltering?: boolean;\n\n // Opt-in to utilise react-table's useGlobalFilter hook.\n allowGlobalFiltering?: boolean;\n\n // Use either a flex layout or a block layout. Default is flex.\n layout?: 'flex' | 'block';\n\n // Used by useGlobalFilter hook, needs to be enabled by prop above.\n globalFilter?: string;\n\n // Set initial state of hidden columns in react-table.\n hiddenColumns?: IdType<T>[];\n\n // Determine whether hidden columns should be preserved on a table update event.\n autoResetHiddenColumns?: boolean;\n\n // Determine whether sort order state should be preserved on a table update event.\n autoResetSortBy?: boolean;\n\n // Determine whether rows are sortable by drag and drop\n enableSortableRows?: boolean;\n\n onSortingRowsEnd?: (event: DragEndEvent) => void;\n\n // Set initial state of sorting in react-table\n initialSortBy?: SortingRule<T>[];\n}\n \ntype SortableRowProps = PropsWithSortableItemProps<TableRowProps>;\n\nfunction BaseTable<T extends HashObject>(props: BaseTableProps<T>): JSX.Element {\n const tableOptions: TableOptions<T> = {\n columns: props.columns,\n data: props.data,\n disableSortBy: !props.enableSort,\n manualSortBy: props.manualSort,\n autoResetHiddenColumns: props.autoResetHiddenColumns,\n autoResetSortBy: props.autoResetSortBy,\n initialState: {\n sortBy: props.initialSortBy || []\n }\n };\n\n if (props.initialSelectedRowIds)\n tableOptions.initialState = { selectedRowIds: getSelectedRowIds(props.initialSelectedRowIds) };\n\n if (props.getRowId)\n tableOptions.getRowId = props.getRowId;\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n toggleAllRowsSelected,\n setGlobalFilter,\n setHiddenColumns,\n state: { sortBy }\n } = useTable<T>(tableOptions, ...getPlugins<T>({ ...props }));\n\n function getTableRowsClass(row: Row<T>) {\n let className = FunctionHelper.isFunction(props.theme?.row)\n ? props.theme.row(row)\n : props.theme?.row ?? '';\n\n if (row.isSelected && props.theme?.selectedRow)\n className += ` ${props.theme?.selectedRow}`;\n\n if (props.onSelectRow)\n className += ' cursor-pointer';\n\n if (props.enableSortableRows)\n className += ' cursor-grab';\n\n return className;\n }\n\n function renderTableRows(): JSX.Element[] {\n return rows.map(row => {\n prepareRow(row);\n \n const className = getTableRowsClass(row);\n const rowAppLink = !!props.getRowAppLink && props.getRowAppLink(row);\n\n function onClickRow(): void {\n if (!props.onSelectRow)\n return;\n\n if (!props.allowSelectMultipleRows)\n toggleAllRowsSelected(false);\n \n props.onSelectRow(row);\n row.toggleRowSelected(true);\n }\n\n function getSortableProps(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any) {\n if ('dragAttributes' in props && 'dragListeners' in props) {\n return {\n ...props.dragAttributes,\n ...props.dragListeners,\n 'aria-roledescription': 'Sortable row',\n ref\n };\n }\n\n return {};\n }\n\n function renderRow(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any): JSX.Element {\n const sortableProps = getSortableProps(props, ref);\n\n if (rowAppLink) {\n return (\n <div\n role='row'\n key={row.id}\n >\n <AppLink\n {...props}\n {...sortableProps}\n className={className}\n appLink={rowAppLink}\n >\n {renderCells(row)}\n </AppLink>\n </div>\n );\n }\n\n return (\n <div\n {...props}\n {...sortableProps}\n key={row.id}\n role='row'\n className={className}\n onClick={onClickRow}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n const rowProps = row.getRowProps();\n\n if (props.enableSortableRows) {\n return (\n <SortableItemWrapper\n id={row.original.id}\n key={row.id}\n childProps={rowProps}\n childComponent={React.forwardRef(\n (props: SortableRowProps, ref: React.LegacyRef<HTMLDivElement>) => (renderRow(props, ref))\n )}\n />\n );\n }\n\n return renderRow(rowProps);\n });\n }\n\n function getDragOverlayClassName(theme: TableTheme): string {\n let className = 'g-0 ';\n\n if (theme)\n className += theme.row;\n\n return className;\n }\n\n function getDragOverlay(id: string) {\n const rowIndex = rows.findIndex(item => item.original.id === id);\n const row = rows[rowIndex];\n \n return (\n <div\n {...props}\n className={getDragOverlayClassName(props.theme)}\n style={DragOverlayStyles}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n function getCellClassName(row: Row<T>, cell: Cell<T>): string {\n let cellClassName = '';\n\n if (typeof props.theme?.cell === 'function')\n cellClassName = props.theme.cell(row, cell);\n\n if (typeof props.theme?.cell === 'string')\n cellClassName = props.theme.cell;\n\n if (props.onSelectCell)\n cellClassName += ' cursor-pointer';\n\n return cellClassName;\n }\n\n function renderCells(row: Row<T>): JSX.Element[] {\n return row.cells.map(cell => {\n const cellClassName = getCellClassName(row, cell);\n\n function onClickCell(): void {\n props.onSelectCell && props.onSelectCell(cell);\n }\n\n return (\n <div key={cell.column.id} {...cell.getCellProps()} className={cellClassName} onClick={onClickCell} >\n {cell.render('Cell')}\n </div>\n );\n });\n }\n\n React.useEffect(() => {\n if (!props.onSort)\n return;\n\n props.onSort(sortBy);\n }, [sortBy]);\n\n React.useEffect(() => {\n if (!props.globalFilter)\n return;\n\n setGlobalFilter(props.globalFilter);\n }, [props.globalFilter]);\n\n React.useEffect(() => {\n if (!props.hiddenColumns)\n return;\n\n setHiddenColumns(props.hiddenColumns);\n }, [props.hiddenColumns && props.hiddenColumns.length]);\n\n return (\n <div {...getTableProps()} className={props.theme?.table ?? ''}>\n <div className={props.theme?.header ?? ''}>\n {headerGroups.map(headerGroup => (\n <div {...headerGroup.getHeaderGroupProps()} className={props.theme?.headerRow ?? ''}>\n {headerGroup.headers.map(column => (\n <div {...column.getHeaderProps(column.getSortByToggleProps())} className={props.theme?.headerCell ?? ''}>\n {column.render('Header', { renderSortIndicator: () => <SortIndicator column={column} theme={props.theme} /> })}\n {!(column as Column<T>).hideSortIndicator &&\n <SortIndicator column={column} theme={props.theme} />\n }\n </div>\n ))}\n </div>\n ))}\n </div>\n <div {...getTableBodyProps()} className={props.theme?.body ?? ''}>\n { props.enableSortableRows ? (\n <SortableContainerWrapper\n ids={rows.map(row => row.original.id)}\n getDragOverlay={getDragOverlay}\n onSortEnd={props.onSortingRowsEnd}\n >\n {renderTableRows()}\n </SortableContainerWrapper>\n ) : (\n renderTableRows()\n )}\n </div>\n </div>\n );\n}\n\ninterface TableProps<T extends HashObject> extends BaseTableProps<T> {\n enableSlider?: boolean;\n scrollIncrement?: number;\n scrollContainerClassName?: string;\n scrollable?: boolean;\n initialSortBy?: SortingRule<T>[];\n}\n\nTable.defaultProps = {\n scrollIncrement: 250,\n scrollable: false,\n layout: 'flex'\n};\n\nexport function Table<T extends HashObject>(props: TableProps<T>): JSX.Element {\n const { enableSlider, scrollIncrement, scrollable, ...tableProps } = props;\n\n const { ref, scrollState, scroll } = useTableScroll();\n\n if (scrollable) {\n return (\n <Scrollbars\n renderTrackHorizontal={() => <div className={styles.scrollbarTrack} />}\n autoHeightMax={10000}\n autoHeight\n >\n <BaseTable {...tableProps} />\n </Scrollbars>\n );\n }\n\n if (!enableSlider)\n return <BaseTable {...tableProps} />;\n\n function onClickScroll(direction: 'left' | 'right'): void {\n scroll(scrollIncrement * (direction === 'right' ? 1 : -1));\n }\n\n return (\n <div className='mx-n4 overflow-x-hidden overflow-y-hidden'>\n <div className='px-4'>\n <div className='position-relative'>\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => onClickScroll('left')}\n hide={!scrollState.canScrollLeft}\n />\n <div className={`${styles.scrollContainer} ${props.scrollContainerClassName}`} ref={ref}>\n <BaseTable {...tableProps } />\n </div>\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => onClickScroll('right')}\n hide={!scrollState.canScrollRight}\n />\n </div>\n </div>\n </div>\n );\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePrevious } from 'libs/shared/hooks/usePrevious';\n\ntype CheckboxItemsState = Map<string, boolean>;\n\nexport interface BulkCheckboxManager {\n onToggleBulk: () => void;\n onToggleItem: (id: string) => void;\n getSelected: () => string[];\n isChecked: (item: string | number | HashObject<string>) => boolean;\n bulkChecked: boolean;\n deselectAll: () => void;\n hasSomeSelections: () => boolean;\n setSelected: (ids: string[]) => void;\n getSelectedCount: () => number;\n reset: () => void;\n getMap: () => Map<string, boolean>;\n}\n\nexport interface BulkCheckboxManagerOptions {\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\n persistNamespace?: string;\n preselectedIds?: string[];\n initialState?: CheckboxItemsState;\n}\n\n/**\n * @param collection - The collection you are keeping track of with checkboxes\n * @param options - See interface above\n */\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\n const { idField = 'id', persistNamespace } = options;\n\n const initial = options.initialState ? options.initialState : new Map<string, boolean>();\n\n const items = React.useRef<CheckboxItemsState>(initial);\n \n const forceUpdate = useForceUpdate();\n\n const prevCollection = usePrevious(collection);\n const prevNamespace = usePrevious(persistNamespace);\n\n /**\n * This hook will clear the state of this hook when a user navigates between pages\n * if a persistNamespace was not provided\n */\n React.useEffect(() => {\n /**\n * If we're being passed initial state, we don't want to clear the state\n */\n if (options.initialState)\n return;\n\n /**\n * If we've been given a persist namespace, we don't want to clear our\n * selections while the namespace stays the same\n */\n if (persistNamespace && prevNamespace === persistNamespace)\n return;\n\n /**\n * Don't reinitialize if the ids of the new and old collection\n * are identical\n */\n const prevIds = prevCollection?.map(i => i[idField]).join();\n const ids = collection?.map(i => i[idField]).join();\n\n if (prevIds === ids)\n return;\n\n reset();\n }, [ prevCollection, prevNamespace, collection, options.initialState ]);\n\n React.useEffect(() => {\n if (!options.preselectedIds?.length)\n return;\n\n setSelected(options.preselectedIds);\n }, []);\n\n function reset(): void {\n items.current.clear();\n forceUpdate();\n }\n\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\n function onToggleBulk(): void {\n const setValue = !isBulkChecked();\n\n collection.forEach(item => {\n if (setValue)\n items.current.set(item[idField].toString(), true);\n else\n items.current.delete(item[idField].toString());\n });\n\n forceUpdate();\n }\n\n // Toggles a single item\n function onToggleItem(id: string): void {\n const nextItemState = !items.current.get(id.toString());\n\n if (nextItemState)\n items.current.set(id.toString(), nextItemState);\n else\n items.current.delete(id.toString());\n \n forceUpdate();\n }\n\n // Returns the state of the item passed in\n function isChecked(item: string | number | HashObject<string>): boolean {\n if (typeof item === 'number')\n item = item.toString();\n else if (typeof item !== 'string')\n item = item[idField].toString();\n\n return items.current.get(item);\n }\n\n function getSelected(): string[] {\n return Array.from(items.current.keys());\n }\n\n function deselectAll(): void {\n if (!collection?.length) return;\n\n collection.forEach(item => {\n items.current.delete(item[idField].toString());\n });\n forceUpdate();\n }\n\n // Returns true if at least 1 item is checked\n function hasSomeSelections(): boolean {\n if (!collection?.length)\n return false;\n\n return !!collection.find(item => isChecked(item));\n }\n\n function isBulkChecked(): boolean {\n if (!collection?.length)\n return false;\n\n return collection.every(isChecked);\n }\n\n function setSelected(ids: string[]): void {\n ids.forEach(id => {\n items.current.set(id, true);\n });\n forceUpdate();\n }\n\n function getSelectedCount(): number {\n return items.current.size;\n }\n\n function getMap(): Map<string, boolean> {\n return items.current;\n }\n\n return {\n onToggleBulk,\n onToggleItem,\n getSelected,\n isChecked,\n bulkChecked: isBulkChecked(),\n deselectAll,\n hasSomeSelections,\n setSelected,\n getSelectedCount,\n reset,\n getMap\n };\n};","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"rfiJl\",\"partialJobCount\":\"h8k_u\",\"partialCheckbox\":\"HkuOS\",\"partialExportButton\":\"Iul7S\",\"row\":\"mwigG\",\"checkboxColumn\":\"Z5jLG\",\"actionColumn\":\"rLxYh\",\"usersColumn\":\"QZzab\",\"dateColumn\":\"Wf_Jp\",\"performedByColumn\":\"Ubtmj\",\"seeMoreColumn\":\"XdP6u\",\"heading\":\"kRMMH\",\"action\":\"DvDvW\",\"users\":\"goKpg\",\"date\":\"ejYGb\",\"performedBy\":\"NhjyL\"};","import React from 'react';\n\nimport styles from './partial-user-audit-log.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded py-3 ${styles.row}`}>\n <div className={`${styles.checkboxColumn} d-flex justify-content-center`}>\n <div className={`partial-loading-background ${styles.partialCheckbox} ms-0`} />\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.action}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.users}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.date}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.performedBy}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n \n </div>\n </div>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex py-2 mb-1'>\n <div className={`${styles.checkboxColumn}`}>\n \n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n \n </div>\n </div>\n );\n}\n\nexport function PartialAuditLogTable(): JSX.Element {\n return (\n <>\n <div className='mb-3 mt-n1'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { PartialSearchFilters } from 'libs/shared/apps/search/components/search-filters/PartialSearchFilters';\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\n\nimport { PartialAuditLogTable } from './PartialAuditLogTable';\n\nimport styles from './partial-user-audit-log.scss';\n\nexport function PartialUserAuditLog(): JSX.Element {\n return (\n <>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <PartialBreadcrumbs />\n\n <div className={`partial-loading-background ${styles.partialJobCount}`} />\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <div className={`partial-loading-background ${styles.partialCheckbox}`} />\n\n <div className='ms-4 ps-3'>\n <PartialSearchFilters count={3} />\n </div>\n\n <div className={`ms-auto partial-loading-background ${styles.partialExportButton}`} />\n </div>\n\n <PartialAuditLogTable />\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { FilterOption, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.userAuditLogFilters';\n\nfunction getSortOptions(): FilterOption[] {\n return [{\n id: 'newest',\n name: LanguageService.getPhrase(namespace, 'newest'),\n default: true\n },\n {\n id: 'oldest',\n name: LanguageService.getPhrase(namespace, 'oldest')\n }];\n}\n\nexport interface UserAuditLogQueryParams {\n cursor: string;\n userType: UserGroup | UserGroup[];\n bulkActionType: BatchJobType | BatchJobType[];\n sort: 'newest' | 'oldest';\n}\n\ninterface UserAuditLogFiltersProps {\n queryParams: UserAuditLogQueryParams;\n appLinks: UserManagerAppLinks;\n}\n\nexport function UserAuditLogFilters(props: UserAuditLogFiltersProps): JSX.Element {\n const filters: SearchFilter<any>[] = [\n Filters.SortBy(getSortOptions()),\n Filters.BulkActionType(),\n Filters.UserType()\n ];\n\n return (\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={filters}\n appLink={props.appLinks.auditLog}\n analyticsOptions={{\n entity: EntityType.BatchJob,\n location: LocationContext.UserAuditLog\n }}\n hideHeading\n hideDivider\n constantIndices={[]}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"seeMore\":\"uymuO\"};","import React from 'react';\nimport { CellProps, Column } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BatchJob } from 'libs/shared/interfaces';\n\nimport styles from './user-audit-log-table.scss';\n\nconst namespace = 'userManager.userAuditLogTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UserAuditLogTableData {\n id: string;\n checked: boolean;\n actionType: string;\n userType: string;\n date: string;\n performedBy: {\n name: string;\n submittedByClickView: boolean;\n };\n}\n\nexport function getColumns(\n summaryAppLink: Core.AppLink,\n onToggleCheckbox: (id: string) => void\n): Column<UserAuditLogTableData>[] {\n const columns: Column<UserAuditLogTableData>[] = [\n {\n Header: '',\n id: 'checkboxes',\n accessor: (data: UserAuditLogTableData) => ({ id: data.id, checked: data.checked }),\n Cell: (cell: CellProps<UserAuditLogTableData, { id: string; checked: boolean; }>) => (\n <div className='text-center mx-auto'>\n <Checkbox\n id={cell.value.id}\n checked={cell.value.checked}\n onChange={() => onToggleCheckbox(cell.value.id)}\n />\n </div>\n ),\n width: 10\n },\n {\n Header: getPhrase('action'),\n accessor: 'actionType',\n id: 'actionType',\n Cell: ({ value }) => (\n <div className='w-100'>\n {value}\n </div>\n ),\n width: 20\n },\n {\n Header: getPhrase('users'),\n accessor: 'userType',\n id: 'userType',\n Cell: ({ value }) => {\n const getValue = () => {\n switch (value) {\n case UserGroup.Learner:\n return getPhrase('students');\n case UserGroup.Staff:\n return getPhrase('staff');\n case UserGroup.Unknown:\n default:\n return getPhrase('unknown');\n }\n };\n\n return (\n <div className='w-100'>\n {getValue()}\n </div>\n );\n },\n width: 10\n },\n {\n Header: getPhrase('date'),\n accessor: 'date',\n id: 'date',\n Cell: ({ value }) => (\n <div className='w-100'>\n {value}\n </div>\n ),\n width: 20\n },\n {\n Header: getPhrase('performedBy'),\n accessor: 'performedBy',\n id: 'performedBy',\n Cell: (cell: CellProps<any, { name: string; submittedByClickView: boolean; }>) => (\n <div className='w-100 d-flex align-items-center'>\n {cell.value.submittedByClickView && (\n <SvgContainer2 className='me-1' size={SvgContainerSize.Small}>\n <ClickViewAvatar />\n </SvgContainer2>\n )}\n {cell.value.name}\n </div>\n ),\n width: 20\n },\n {\n Header: '',\n accessor: 'id',\n id: 'seeMore',\n Cell: ({ value }) => (\n <div className='w-100 d-flex justify-content-end'>\n <AppLink\n className={`info-link text-end me-3 ms-auto ${styles.seeMore}`}\n appLink={{\n ...summaryAppLink,\n args: summaryAppLink.args?.length ? [ ...summaryAppLink.args, value ] : [value]\n }}\n >\n <Text namespace={namespace} phrase='seeMore' />\n </AppLink>\n </div>\n ),\n width: 30\n }\n ];\n\n return columns;\n}\n\nexport function useGetData(jobs: BatchJob[], isChecked: (id: string) => boolean): UserAuditLogTableData[] {\n return jobs.map(job => {\n const formattedDate = DateHelper.format(job.dateCreated, 'DD/MM/YYYY, hh:mmA');\n\n return {\n id: job.id,\n checked: isChecked(job.id),\n actionType: BulkUserActionsHelper.mapJobTypeToName(job.type),\n userType: BulkUserActionsHelper.mapDataTypeToUserType(job.dataType),\n date: formattedDate,\n performedBy: {\n name: job.submitterName,\n submittedByClickView: job.submittedByClickView\n }\n };\n });\n}","import React from 'react';\n\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\n\nimport { getColumns, useGetData } from './UserAuditLogTableUtils';\n\nconst TABLE_THEME: TableTheme = {\n table: 'striped-list no-full-width pb-3',\n header: 'fw-semibold pb-1',\n headerCell: 'px-2 py-1',\n row: 'striped-row rounded audit-log-row',\n cell: 'd-flex align-items-center py-3 px-2'\n};\n\ninterface UserAuditLogTableProps {\n jobs: BatchJobCollection;\n appLinks: UserManagerAppLinks;\n onToggleCheckbox: (id: string) => void;\n isChecked: (id: string) => boolean;\n}\n\nexport function UserAuditLogTable(props: UserAuditLogTableProps): JSX.Element {\n const data = useGetData(props.jobs.data, props.isChecked);\n\n return (\n <Table\n columns={getColumns(props.appLinks.bulkActionSummary, props.onToggleCheckbox)}\n data={data}\n theme={TABLE_THEME}\n />\n );\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.auditLogEmptyState';\n\ninterface UserAuditLogEmptyStateProps {\n imageUrl: string;\n}\n\nexport function UserAuditLogEmptyState(props: UserAuditLogEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bulkCheckbox\":\"NMw5T\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { UserAuditLogFilters, UserAuditLogQueryParams } from './components/audit-log-filters/UserAuditLogFilters';\nimport { UserAuditLogTable } from './components/audit-log-table/UserAuditLogTable';\nimport { UserAuditLogEmptyState } from './empty-state/UserAuditLogEmptyState';\n\nimport styles from './user-audit-log.scss';\n\nconst namespace = 'userManager.auditLog';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UserAuditLogProps {\n jobs: BatchJobCollection;\n appLinks: UserManagerAppLinks;\n queryParams: UserAuditLogQueryParams;\n onClickExport: (ids: string[]) => Promise<void>;\n emptyStateImageUrl: string;\n}\n\nexport function UserAuditLog(props: UserAuditLogProps): JSX.Element {\n const referrer: UserGroup = LocalStorageHelper.get(UserManagerConstants.AUDIT_LOG_REFERRER_KEY);\n\n const [ showExportSpinner, setShowExportSpinner ] = React.useState(false);\n\n const CheckboxHelper = useBulkCheckboxManager(props.jobs.data);\n const alerts = useAlerts();\n\n function onClickExport(): void {\n if (showExportSpinner)\n return;\n\n setShowExportSpinner(true);\n\n const selectedIds = CheckboxHelper.getSelected();\n\n props.onClickExport(selectedIds)\n .then(() => alerts.success(getPhrase('exportSuccess')))\n .catch(() => alerts.error(getPhrase('exportError')))\n .finally(() => setShowExportSpinner(false));\n }\n\n return (\n <>\n <h1 className='h2'><Text namespace={namespace} phrase='heading' /></h1>\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <Breadcrumbs\n breadcrumbs={[\n { name: getPhrase('settingsBreadcrumb'), appLink: props.appLinks.settings },\n { name: getPhrase(referrer === UserGroup.Learner ? 'studentManager' : 'staffManager'), appLink: props.appLinks.userManager },\n { name: getPhrase('heading'), active: true }\n ]}\n />\n\n <p className='mb-0 fw-semibold'>\n <Text\n namespace={namespace}\n phrase='totalJobs'\n options={{ showing: props.jobs.data.length, smartCount: props.jobs.count }}\n />\n </p>\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <Checkbox\n className={styles.bulkCheckbox}\n id='bulk-audit-log-checkbox'\n checked={CheckboxHelper.bulkChecked}\n onChange={CheckboxHelper.onToggleBulk}\n indeterminate={CheckboxHelper.hasSomeSelections()}\n />\n\n <div className='ms-4 ps-1'>\n <UserAuditLogFilters queryParams={props.queryParams} appLinks={props.appLinks} />\n </div>\n\n <SpinnerButton\n variant='dark'\n className='ms-auto'\n onClick={onClickExport}\n disabled={!CheckboxHelper.hasSomeSelections() || showExportSpinner}\n showSpinner={showExportSpinner}\n >\n <Text namespace={namespace} phrase='export' />\n </SpinnerButton>\n </div>\n\n {props.jobs.data?.length ? (\n <UserAuditLogTable\n jobs={props.jobs}\n appLinks={props.appLinks}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n isChecked={CheckboxHelper.isChecked}\n />\n ) : (\n <UserAuditLogEmptyState imageUrl={props.emptyStateImageUrl} />\n )}\n\n {!!props.jobs.pagination?.cursors && (\n <Pagination\n className='p-0 text-end pb-3'\n cursors={props.jobs.pagination.cursors}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { PartialUserAuditLog } from 'libs/shared/apps/user-manager/components/audit-log/partial-loading/PartialUserAuditLog';\nimport { UserAuditLog } from 'libs/shared/apps/user-manager/components/audit-log/UserAuditLog';\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.userAuditLogView';\n\ninterface UserAuditLogViewProps {\n queryParams: UserAuditLogQueryParams;\n}\n\nexport function UserAuditLogView(props: UserAuditLogViewProps): JSX.Element {\n const referrer: UserGroup = LocalStorageHelper.get(UserManagerConstants.AUDIT_LOG_REFERRER_KEY);\n\n const jobs = Flight.useBasicFetch<BatchJobCollection>(JobRequests.getJobs(props.queryParams));\n \n useHandleObjectError(jobs);\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const appLinks = getUserManagerAppLinks(referrer);\n\n function onClickExport(jobIds: string[]): Promise<void> {\n return fetchAsync<void>(JobRequests.sendJobReports(jobIds));\n }\n\n if (!jobs.hasCompleted)\n return <div className='px-3'><PartialUserAuditLog /></div>;\n\n return (\n <div className='px-3'>\n <UserAuditLog\n jobs={jobs.data}\n appLinks={appLinks}\n queryParams={props.queryParams}\n onClickExport={onClickExport}\n emptyStateImageUrl={ImageUrls.EmptyStates.Search.RESULTS}\n />\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};"],"names":["PartialSearchFilters","count","className","Array","fill","map","item","index","key","DragOverlayStyles","opacity","cursor","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","props","column","canSort","isSorted","theme","sortIndicator","SvgContainer","svgName","isSortedDesc","size","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","sortBy","initialSortBy","initialSelectedRowIds","selectedRowIds","forEach","id","getRowId","useTable","plugins","useSortBy","useRowSelect","layout","useFlexLayout","useBlockLayout","allowFiltering","useFilters","allowGlobalFiltering","useGlobalFilter","getPlugins","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","toggleAllRowsSelected","setGlobalFilter","setHiddenColumns","state","renderTableRows","row","FunctionHelper","isSelected","selectedRow","onSelectRow","enableSortableRows","getTableRowsClass","rowAppLink","getRowAppLink","onClickRow","allowSelectMultipleRows","toggleRowSelected","renderRow","sortableProps","dragAttributes","dragListeners","getSortableProps","role","AppLink","appLink","renderCells","onClick","rowProps","getRowProps","SortableItemWrapper","original","childProps","childComponent","cells","cell","cellClassName","onSelectCell","getCellClassName","getCellProps","render","onSort","globalFilter","hiddenColumns","length","table","header","headerGroup","getHeaderGroupProps","headerRow","headers","getHeaderProps","getSortByToggleProps","headerCell","renderSortIndicator","hideSortIndicator","body","SortableContainerWrapper","getDragOverlay","rowIndex","findIndex","style","onSortEnd","onSortingRowsEnd","Table","enableSlider","scrollIncrement","scrollable","tableProps","elRef","scrollState","setScrollState","throttledOnScroll","el","removeEventListener","addEventListener","scroll","scrollBy","left","top","behavior","useTableScroll","renderTrackHorizontal","autoHeightMax","autoHeight","onClickScroll","direction","WidgetButton","W","hide","scrollContainerClassName","defaultProps","generateCacheKey","flightObjs","obj","statusCode","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","isArray","useEffect","useBulkCheckboxManager","collection","options","idField","persistNamespace","initial","Map","items","forceUpdate","prevCollection","prevNamespace","reset","clear","isChecked","toString","get","isBulkChecked","every","setSelected","set","i","preselectedIds","onToggleBulk","setValue","onToggleItem","nextItemState","getSelected","from","keys","bulkChecked","deselectAll","hasSomeSelections","find","getSelectedCount","getMap","PartialRow","PartialHeader","PartialAuditLogTable","PartialUserAuditLog","namespace","UserAuditLogFilters","filters","name","LanguageService","default","SearchFilters","queryParams","mainFilters","appLinks","auditLog","analyticsOptions","entity","location","hideHeading","hideDivider","constantIndices","getPhrase","TABLE_THEME","UserAuditLogTable","jobs","summaryAppLink","onToggleCheckbox","job","formattedDate","DateHelper","dateCreated","checked","actionType","BulkUserActionsHelper","type","userType","dataType","date","performedBy","submitterName","submittedByClickView","bulkActionSummary","Header","accessor","Cell","Checkbox","value","onChange","width","UserGroup","getValue","SvgContainer2","ClickViewAvatar","args","Text","phrase","UserAuditLogEmptyState","EmptyState","src","imageUrl","UserAuditLog","referrer","LocalStorageHelper","UserManagerConstants","showExportSpinner","setShowExportSpinner","CheckboxHelper","alerts","Breadcrumbs","breadcrumbs","settings","userManager","active","showing","smartCount","indeterminate","SpinnerButton","variant","selectedIds","onClickExport","then","success","error","disabled","showSpinner","emptyStateImageUrl","pagination","cursors","Pagination","ContextService","buttonVariant","UserAuditLogView","JobRequests","useSetPageMetadata","title","fetchAsync","hasCompleted","jobIds","ImageUrls","createJob","url","getJobs","params","bulkActionTypes","userTypes","sort","order","bulkActionType","getJob","getJobProgress","invalidationKeys","getJobResults","status","getYearGroupRolloverStatus","customerId","sendJobReports","getJobSummary"],"sourceRoot":""}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 4005-d961c9bbff-lite.chunk.js.LICENSE.txt */
|
|
2
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4005],{35014:(t,e,r)=>{r.d(e,{I:()=>u});var n=r(16714),i=r(12754),o=r(22902),a=r(15311),c=r(11387);function u(){var t=(0,o.T)(),e=t.hasPermissions,r=t.hasLocalPermissions,u=(0,(0,a.r)().hasProduct)(i.x.Primary);return{canViewGlance:e(n.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:u&&e(n.C.ViewVideoInteractives),canViewClips:u&&e(n.C.ViewVideoClips),canViewCurriculumLinks:e(n.C.ViewCurriculums),canUseActions:r(n.E.UseVideoActions),canViewPublicLayout:!r(n.E.WatchVideos)&&c.C.hasRegionPrefix(),canViewResourceItems:r(n.E.ViewVideoResourceItems),canNavigate:u}}},44005:(t,e,r)=>{r.r(e),r.d(e,{VideoGuidanceClassroomGuideView:()=>R});var n=r(32735),i=r(81886),o=r(20354),a=r(28400),c=r(49985),u=r(65858),l=r(42648),s=r(23481),d=r(75896),f=r(44599),p=r(86638),h=r(22001),m=r(79104),v=r(9111),y=r(13876),g=r(83345),w=r(69883);function b(t){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},b(t)}function L(){L=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,i=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var o=e&&e.prototype instanceof y?e:y,a=Object.create(o.prototype),c=new A(n||[]);return i(a,"_invoke",{value:O(t,r,c)}),a}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=s;var f="suspendedStart",p="suspendedYield",h="executing",m="completed",v={};function y(){}function g(){}function w(){}var C={};l(C,a,(function(){return this}));var E=Object.getPrototypeOf,V=E&&E(E(G([])));V&&V!==r&&n.call(V,a)&&(C=V);var k=w.prototype=y.prototype=Object.create(C);function P(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function r(i,o,a,c){var u=d(t[i],t,o);if("throw"!==u.type){var l=u.arg,s=l.value;return s&&"object"==b(s)&&n.call(s,"__await")?e.resolve(s.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(s).then((function(t){l.value=t,a(l)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var o;i(this,"_invoke",{value:function(t,n){function i(){return new e((function(e,i){r(t,n,e,i)}))}return o=o?o.then(i,i):i()}})}function O(e,r,n){var i=f;return function(o,a){if(i===h)throw Error("Generator is already running");if(i===m){if("throw"===o)throw a;return{value:t,done:!0}}for(n.method=o,n.arg=a;;){var c=n.delegate;if(c){var u=S(c,n);if(u){if(u===v)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===f)throw i=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=h;var l=d(e,r,n);if("normal"===l.type){if(i=n.done?m:p,l.arg===v)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(i=m,n.method="throw",n.arg=l.arg)}}}function S(e,r){var n=r.method,i=e.iterator[n];if(i===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,S(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var o=d(i,e.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,v;var a=o.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function G(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function r(){for(;++i<e.length;)if(n.call(e,i))return r.value=e[i],r.done=!1,r;return r.value=t,r.done=!0,r};return o.next=o}}throw new TypeError(b(e)+" is not iterable")}return g.prototype=w,i(k,"constructor",{value:w,configurable:!0}),i(w,"constructor",{value:g,configurable:!0}),g.displayName=l(w,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===g||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,l(t,u,"GeneratorFunction")),t.prototype=Object.create(k),t},e.awrap=function(t){return{__await:t}},P(x.prototype),l(x.prototype,c,(function(){return this})),e.AsyncIterator=x,e.async=function(t,r,n,i,o){void 0===o&&(o=Promise);var a=new x(s(t,r,n,i),o);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},P(k),l(k,u,"Generator"),l(k,a,(function(){return this})),l(k,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=G,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(I),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function i(n,i){return c.type="throw",c.arg=e,r.next=n,i&&(r.method="next",r.arg=t),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],c=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=t,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,v):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),I(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;I(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:G(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var E=function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function a(t){try{u(n.next(t))}catch(t){o(t)}}function c(t){try{u(n.throw(t))}catch(t){o(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,c)}u((n=n.apply(t,e||[])).next())}))},V=function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]])}return r},k="shared.videoGuidanceClassroomGuidePopup",P=350;function x(t){var e,r,o,a,b,x,O,S=(x=n.useState(),O=2,function(t){if(Array.isArray(t))return t}(x)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,o,a,c=[],u=!0,l=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){l=!0,i=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw i}}return c}}(x,O)||function(t,e){if(t){if("string"==typeof t)return C(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?C(t,e):void 0}}(x,O)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),j=S[0],I=S[1],A=(0,w.Z)();n.useEffect((function(){if(!t.isLoading&&t.curriculums&&!j){var e=t.curriculums.activeCurriculum?t.curriculums.activeCurriculum:d.m.first(t.curriculums.availableCurriculums);I(e)}}),[t.isLoading,null===(r=null===(e=t.curriculums)||void 0===e?void 0:e.activeCurriculum)||void 0===r?void 0:r.id]);var G=t.canViewCurriculumLinks&&(null===(o=t.curriculums)||void 0===o?void 0:o.customerHasCurriculumLinks);return n.createElement(v.G,{closePopup:t.onClickClose,showLoadingSpinner:t.isLoading,title:s.T.getPhrase(k,"classroomGuide"),size:"lg"},!t.isLoading&&n.createElement(n.Fragment,null,n.createElement(l.ZP,{autoHeightMax:P,autoHeightMin:P,autoHeight:!0,className:"pb-3",renderThumbVertical:function(t){var e=t.style,r=V(t,["style"]);return n.createElement("div",Object.assign({},r,{style:Object.assign(Object.assign({},e),{borderRadius:"inherit",backgroundColor:"rgba(0, 0, 0, 0.2)",zIndex:5}),className:"thumb-vertical"}))}},n.createElement("div",{className:G?"mb-4":""},n.createElement(m.j,{video:t.video,pointsOfInterest:t.pointsOfInterest,setStartTime:function(e){var r,n={t:e,includeContext:null===(r=t.currentUser)||void 0===r?void 0:r.isAuthenticated},o=t.getVideoAppLink(t.video,n);i.Q.C$.trigger(o),t.closePopup()},getTagAppLink:t.getTagAppLink,suppressInteractivity:t.canViewPublicLayout,onClickTag:t.closePopup,canViewGlance:t.canViewGlance,hideScrollbar:!0})),G&&n.createElement(n.Fragment,null,n.createElement("h2",{className:"h6"},n.createElement(g.x,{namespace:k,phrase:"curriculumLinks"})),n.createElement("div",{className:"mb-2"},n.createElement(h.P,{curriculums:t.curriculums,selectedCurriculum:j,onChangeCurriculum:function(e){var r,n,i;return E(this,void 0,void 0,L().mark((function o(){var a;return L().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(null==(a=t.curriculums.availableCurriculums.find((function(t){return t.id.toString()===e})))?void 0:a.id){o.next=3;break}return o.abrupt("return",!1);case 3:if((null===(n=null===(r=t.curriculums.activeCurriculum)||void 0===r?void 0:r.id)||void 0===n?void 0:n.toString())!==(null===(i=null==a?void 0:a.id)||void 0===i?void 0:i.toString())){o.next=5;break}return o.abrupt("return",!1);case 5:return I(a),o.prev=6,o.next=9,t.curriculums.updateCurriculum(a);case 9:c.k.logUserAction({id:a.id,name:a.id,description:a.description,videoId:t.video.id,videoName:t.video.name},{entity:u.py.Presentation,actionType:u.Vw.Select,descriptor:u.kD.Curriculum,location:u.LZ.ClassroomGuidancePopup}),o.next=16;break;case 12:o.prev=12,o.t0=o.catch(6),I(j),A.error(s.T.getPhrase(k,"updateCurriculumFailed"));case 16:case"end":return o.stop()}}),o,null,[[6,12]])})))},noNegativePadding:!0})),(null===(a=t.curriculums)||void 0===a?void 0:a.hasLoaded)?n.createElement(p.Y,{curriculumLinks:null===(b=t.curriculums)||void 0===b?void 0:b.curriculumLinks,emptyStateUrl:t.curriculumLinksEmptyStateUrl}):n.createElement(f.Z,null))),n.createElement(y.u,null,n.createElement(y.u.Cancel,{onClick:t.onClickClose,text:s.T.getPhrase(k,"close")}),n.createElement(y.u.Submit,{text:s.T.getPhrase(k,"viewVideo"),variant:"dark",onClick:t.onClickViewVideo}))))}var O=r(4594),S=r(43012),j=r(31949),I=r(1575),A=r(31908),G=r(99742),_=r(14070),T=r(97291),N=r(82817),U=r(49948),F=r(35014),M=r(22490);function R(t){var e=o.a.useBasicFetch(j.N.currentUser()),r=o.a.useBasicFetch(t.type===O.E.Video?I.R.video(t.id):S.e.clip(t.id)),l=(0,U.l)(t.id,!0),s=(0,N.M)(t.id,!0),d=(0,F.I)();return n.createElement(x,{isLoading:!r.hasCompleted||!l.hasCompleted,video:r.data,pointsOfInterest:l.items,curriculums:s,onClickClose:function(){c.k.logUserAction({id:r.data.id,name:r.data.name},{entity:A.M.isVideo(r.data)?u.py.Video:u.py.Clip,location:u.LZ.ClassroomGuidancePopup,actionType:u.Vw.Click,descriptor:u.od.Close}),t.closePopup()},onClickViewVideo:function(){if(c.k.logUserAction({id:r.data.id,name:r.data.name},{entity:A.M.isVideo(r.data)?u.py.Video:u.py.Clip,location:u.LZ.ClassroomGuidancePopup,actionType:u.Vw.Click,descriptor:u.od.ViewVideo}),A.M.isVideo(r.data))return i.Q.C$.trigger({application:T.O.VIDEOS,action:_.e.Videos.PLAY_VIDEO,args:[r.data.id,a.m.slugify(r.data.name)]}),void t.closePopup();i.Q.C$.trigger({application:T.O.CLIPS,action:_.e.Clips.PLAY_CLIP,args:[r.data.id,a.m.slugify(r.data.name)]}),t.closePopup()},curriculumLinksEmptyStateUrl:G.W.EmptyStates.CURRICULUM_LINKS,getVideoAppLink:M.W.getAppLink,getTagAppLink:function(t){return{application:T.O.SEARCH,action:_.e.Search.HOME,params:{tagOrClassification:t.name}}},canViewCurriculumLinks:d.canViewCurriculumLinks,canViewPublicLayout:d.canViewPublicLayout,canViewGlance:d.canViewGlance,closePopup:t.closePopup,currentUser:e.data})}}}]);
|
|
3
|
-
//# sourceMappingURL=4005-d961c9bbff-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/4005-d961c9bbff-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/libs/shared/src/components/video-guidance/classroom-guide/popup/VideoGuidanceClassroomGuidePopup.tsx","file:///app/packages/projects/lite/src/shared/views/video-guidance-classroom-guide/VideoGuidanceClassroomGuideView.tsx"],"sourcesContent":["import { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\n\nimport { LiteRouteHelper } from 'shared/utils/LiteRouteHelper';\n\nexport interface VideoFeaturesHash {\n canViewGlance: boolean;\n canViewResources: boolean;\n canViewInteractives: boolean;\n canViewClips: boolean;\n canUseActions: boolean;\n canViewPublicLayout: boolean;\n canNavigate: boolean;\n canViewCurriculumLinks: boolean;\n canViewResourceItems: boolean;\n}\n\nexport function useVideoFeatureAccess() {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n\n const hasNP = hasProduct(ProductId.Primary);\n\n function showPublicLayout(): boolean {\n /**\n * Authenticated users should never see the placeholder\n */\n if (hasLocalPermissions(LocalPermissionName.WatchVideos))\n return false;\n\n /**\n * Accessing a play page unathenticated will have different contextual behabviours:\n * - For a share page, the user should see the video and never the placeholder\n * - For a public browsing page (ie. using a route-prefix) they should see the placeholder\n */\n return LiteRouteHelper.hasRegionPrefix();\n }\n\n return {\n canViewGlance: hasPermissions(PermissionName.ViewVideoGlance),\n canViewResources: true,\n canViewInteractives: hasNP && hasPermissions(PermissionName.ViewVideoInteractives),\n canViewClips: hasNP && hasPermissions(PermissionName.ViewVideoClips),\n canViewCurriculumLinks: hasPermissions(PermissionName.ViewCurriculums),\n canUseActions: hasLocalPermissions(LocalPermissionName.UseVideoActions),\n canViewPublicLayout: showPublicLayout(),\n canViewResourceItems: hasLocalPermissions(LocalPermissionName.ViewVideoResourceItems),\n canNavigate: hasNP\n };\n}","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, PresentationDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { PartialCurriculumLinks } from 'libs/shared/components/curriculum-links/partial-loading/PartialCurriculumLinks';\nimport { CurriculumLinksV2 } from 'libs/shared/components/play-page/curriculum-links/CurriculumLinksV2';\nimport { CurriculumsWidget } from 'libs/shared/components/play-page/curriculum-links/CurriculumsWidget';\nimport { VideoAtAGlanceV2 } from 'libs/shared/components/play-page/glance/VideoAtAGlanceV2';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Clip, CurrentUser, CurriculumData, PointOfInterest, PopupViewProps, Presentation, Tag, Video } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nconst namespace = 'shared.videoGuidanceClassroomGuidePopup';\n\nconst MIN_MAX_HEIGHT = 350;\n\ninterface VideoGuidanceClassroomGuidePopupProps extends PopupViewProps {\n isLoading: boolean;\n video: Video | Clip;\n onClickClose: () => void;\n onClickViewVideo: () => void;\n pointsOfInterest: PointOfInterest[];\n curriculums: CurriculumData;\n curriculumLinksEmptyStateUrl: string;\n currentUser: CurrentUser;\n\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n getVideoAppLink: (video: Video | Clip, opts: GetVideoAppLinkOptions) => Core.AppLink;\n\n canViewPublicLayout: boolean;\n canViewCurriculumLinks: boolean;\n canViewGlance: boolean;\n}\n\nexport function VideoGuidanceClassroomGuidePopup(props: VideoGuidanceClassroomGuidePopupProps): JSX.Element {\n const [ selectedCurriculum, setSelectedCurriculum ] = React.useState<Presentation>();\n\n const alerts = useAlerts();\n\n React.useEffect(() => {\n if (props.isLoading || !props.curriculums)\n return;\n\n if (!selectedCurriculum) {\n const currentCurriculum = props.curriculums.activeCurriculum\n ? props.curriculums.activeCurriculum\n : ArrayHelper.first(props.curriculums.availableCurriculums);\n setSelectedCurriculum(currentCurriculum);\n }\n }, [ props.isLoading, props.curriculums?.activeCurriculum?.id ]);\n\n async function onChangeCurriculum(curriculumId: string): Promise<boolean> {\n const newCurriculum = props.curriculums.availableCurriculums.find(c => c.id.toString() === curriculumId);\n\n if (!newCurriculum?.id)\n return false;\n\n if (props.curriculums.activeCurriculum?.id?.toString() === newCurriculum?.id?.toString())\n return false;\n\n setSelectedCurriculum(newCurriculum);\n\n try {\n await props.curriculums.updateCurriculum(newCurriculum);\n\n AnalyticsHelper.logUserAction({\n id: newCurriculum.id,\n name: newCurriculum.id,\n description: newCurriculum.description,\n videoId: props.video.id,\n videoName: props.video.name\n }, {\n entity: EntityType.Presentation,\n actionType: UserAction.Select,\n descriptor: PresentationDescriptor.Curriculum,\n location: LocationContext.ClassroomGuidancePopup\n });\n } catch {\n setSelectedCurriculum(selectedCurriculum);\n alerts.error(LanguageService.getPhrase(namespace, 'updateCurriculumFailed'));\n }\n }\n\n const hasCurriculumLinks = props.canViewCurriculumLinks && props.curriculums?.customerHasCurriculumLinks;\n\n return (\n <Popup\n closePopup={props.onClickClose}\n showLoadingSpinner={props.isLoading}\n title={LanguageService.getPhrase(namespace, 'classroomGuide')}\n size='lg'\n >\n {!props.isLoading && (\n <>\n <Scrollbars\n autoHeightMax={MIN_MAX_HEIGHT}\n autoHeightMin={MIN_MAX_HEIGHT}\n autoHeight\n className='pb-3'\n // move vertical scrollbar to the top\n renderThumbVertical={({ style, ...props }) => <div {...props} style={{ ...style, borderRadius: 'inherit', backgroundColor: 'rgba(0, 0, 0, 0.2)', zIndex: 5 }} className='thumb-vertical'/>}\n >\n <div className={hasCurriculumLinks ? 'mb-4' : ''}>\n <VideoAtAGlanceV2\n video={props.video}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={startTime => {\n const opts = { t: startTime, includeContext: props.currentUser?.isAuthenticated };\n const appLink = props.getVideoAppLink(props.video, opts);\n Core.AppLinkHelper.trigger(appLink);\n props.closePopup();\n }}\n getTagAppLink={props.getTagAppLink}\n suppressInteractivity={props.canViewPublicLayout}\n onClickTag={props.closePopup}\n canViewGlance={props.canViewGlance}\n hideScrollbar\n />\n </div>\n\n {hasCurriculumLinks && (\n <>\n <h2 className='h6'>\n <Text namespace={namespace} phrase='curriculumLinks' />\n </h2>\n \n <div className='mb-2'>\n <CurriculumsWidget\n curriculums={props.curriculums}\n selectedCurriculum={selectedCurriculum}\n onChangeCurriculum={onChangeCurriculum}\n noNegativePadding\n />\n </div>\n \n {!props.curriculums?.hasLoaded\n ? <PartialCurriculumLinks />\n : (\n <CurriculumLinksV2\n curriculumLinks={props.curriculums?.curriculumLinks}\n emptyStateUrl={props.curriculumLinksEmptyStateUrl}\n />\n )}\n </>\n )}\n </Scrollbars>\n\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.onClickClose}\n text={LanguageService.getPhrase(namespace, 'close')}\n />\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, 'viewVideo')}\n variant='dark'\n onClick={props.onClickViewVideo}\n />\n </PopupButtons>\n </>\n )}\n </Popup>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoGuidanceDescriptor } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceClassroomGuidePopup } from 'libs/shared/components/video-guidance/classroom-guide/popup/VideoGuidanceClassroomGuidePopup';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Clip, CurrentUser, PopupViewProps, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\ninterface VideoGuidanceClassroomGuideViewProps extends PopupViewProps {\n id: string;\n type: MasterType;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoGuidanceClassroomGuideView(props: VideoGuidanceClassroomGuideViewProps): JSX.Element {\n function getRequest(): Flight.Request {\n return props.type === MasterType.Video\n ? VideoRequests.video(props.id)\n : ClipRequests.clip(props.id);\n }\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Clip | Video>(getRequest());\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n const curriculums = useCurriculums(props.id, true);\n const featureAccess = useVideoFeatureAccess();\n\n function onClickClose(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: VideoHelper.isVideo(video.data)\n ? EntityType.Video\n : EntityType.Clip,\n location: LocationContext.ClassroomGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.Close\n });\n\n props.closePopup();\n }\n\n function onClickViewVideo(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: VideoHelper.isVideo(video.data)\n ? EntityType.Video\n : EntityType.Clip,\n location: LocationContext.ClassroomGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.ViewVideo\n });\n\n if (VideoHelper.isVideo(video.data)) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.data.id, TextHelper.slugify(video.data.name) ]\n });\n\n props.closePopup();\n\n return;\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ video.data.id, TextHelper.slugify(video.data.name) ]\n });\n\n props.closePopup();\n }\n\n return (\n <VideoGuidanceClassroomGuidePopup\n isLoading={!video.hasCompleted || !pointsOfInterest.hasCompleted}\n video={video.data}\n pointsOfInterest={pointsOfInterest.items}\n curriculums={curriculums}\n onClickClose={onClickClose}\n onClickViewVideo={onClickViewVideo}\n curriculumLinksEmptyStateUrl={ImageUrls.EmptyStates.CURRICULUM_LINKS}\n getVideoAppLink={VideoAppLinkHelper.getAppLink}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n canViewCurriculumLinks={featureAccess.canViewCurriculumLinks}\n canViewPublicLayout={featureAccess.canViewPublicLayout}\n canViewGlance={featureAccess.canViewGlance}\n closePopup={props.closePopup}\n currentUser={currentUser.data}\n />\n );\n}"],"names":["useVideoFeatureAccess","hasPermissions","hasLocalPermissions","hasNP","hasProduct","canViewGlance","canViewResources","canViewInteractives","canViewClips","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","canNavigate","namespace","MIN_MAX_HEIGHT","VideoGuidanceClassroomGuidePopup","props","selectedCurriculum","setSelectedCurriculum","alerts","isLoading","curriculums","currentCurriculum","activeCurriculum","ArrayHelper","availableCurriculums","id","hasCurriculumLinks","customerHasCurriculumLinks","Popup","closePopup","onClickClose","showLoadingSpinner","title","LanguageService","size","autoHeightMax","autoHeightMin","autoHeight","className","renderThumbVertical","style","borderRadius","backgroundColor","zIndex","VideoAtAGlanceV2","video","pointsOfInterest","setStartTime","startTime","opts","t","includeContext","currentUser","isAuthenticated","appLink","getVideoAppLink","getTagAppLink","suppressInteractivity","onClickTag","hideScrollbar","Text","phrase","CurriculumsWidget","onChangeCurriculum","curriculumId","newCurriculum","find","c","toString","updateCurriculum","AnalyticsHelper","name","description","videoId","videoName","entity","actionType","descriptor","location","error","noNegativePadding","hasLoaded","CurriculumLinksV2","curriculumLinks","emptyStateUrl","curriculumLinksEmptyStateUrl","PartialCurriculumLinks","PopupButtons","onClick","text","variant","onClickViewVideo","VideoGuidanceClassroomGuideView","UserRequests","type","MasterType","VideoRequests","ClipRequests","useFetchPointsOfInterest","useCurriculums","featureAccess","hasCompleted","data","items","VideoHelper","application","action","args","TextHelper","ImageUrls","VideoAppLinkHelper","tag","params","tagOrClassification"],"sourceRoot":""}
|