@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.
Files changed (64) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/{6822-lite-c32c06fff9.chunk.css → 1319-lite-f181681870.chunk.css} +1 -0
  3. package/dist/css/{1265-lite-cf5a64d933.chunk.css → 2205-lite-daccc93768.chunk.css} +1 -0
  4. package/dist/css/3407-lite-2b6d2c3596.chunk.css +1 -0
  5. package/dist/css/{1928-lite-7535155363.chunk.css → 3657-lite-30c63783c6.chunk.css} +1 -0
  6. package/dist/css/4205-lite-2b6d2c3596.chunk.css +1 -0
  7. package/dist/css/{6264-lite-6c16dff355.chunk.css → 4586-lite-2b4142796a.chunk.css} +1 -0
  8. package/dist/css/{3192-lite-dca2cbecd4.chunk.css → 5259-lite-c43d17524f.chunk.css} +1 -0
  9. package/dist/css/{2613-lite-2b363e89ec.chunk.css → 897-lite-49388db199.chunk.css} +1 -0
  10. package/dist/css/{lite-app-d8fa7e0f98.css → lite-app-d2e53316e7.css} +5 -6
  11. package/dist/scripts/{6822-e059388f0e-lite.chunk.js → 1319-44debe2be5-lite.chunk.js} +2 -2
  12. package/dist/scripts/{6822-e059388f0e-lite.chunk.js.map → 1319-44debe2be5-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/{1265-1c11ef03e1-lite.chunk.js → 2205-7596edf3ff-lite.chunk.js} +3 -3
  14. package/dist/scripts/2205-7596edf3ff-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{2564-b38ceabfc3-lite.chunk.js → 2564-7758fc9a23-lite.chunk.js} +2 -2
  16. package/dist/scripts/{2564-b38ceabfc3-lite.chunk.js.map → 2564-7758fc9a23-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/3407-d7bb190086-lite.chunk.js +2 -0
  18. package/dist/scripts/3407-d7bb190086-lite.chunk.js.map +1 -0
  19. package/dist/scripts/{1928-2bdfd44f43-lite.chunk.js → 3657-9ab3ea0e92-lite.chunk.js} +2 -2
  20. package/dist/scripts/{1928-2bdfd44f43-lite.chunk.js.map → 3657-9ab3ea0e92-lite.chunk.js.map} +1 -1
  21. package/dist/scripts/{3978-e86c2d54be-lite.chunk.js → 3978-ef3884cfe5-lite.chunk.js} +2 -2
  22. package/dist/scripts/{3978-e86c2d54be-lite.chunk.js.map → 3978-ef3884cfe5-lite.chunk.js.map} +1 -1
  23. package/dist/scripts/4205-b37ae8ccb9-lite.chunk.js +3 -0
  24. package/dist/scripts/4205-b37ae8ccb9-lite.chunk.js.map +1 -0
  25. package/dist/scripts/{6264-4b52686f8d-lite.chunk.js → 4586-f9ab450399-lite.chunk.js} +2 -2
  26. package/dist/scripts/{6264-4b52686f8d-lite.chunk.js.map → 4586-f9ab450399-lite.chunk.js.map} +1 -1
  27. package/dist/scripts/{3192-5fafe73839-lite.chunk.js → 5259-c1be5e460a-lite.chunk.js} +2 -2
  28. package/dist/scripts/{3192-5fafe73839-lite.chunk.js.map → 5259-c1be5e460a-lite.chunk.js.map} +1 -1
  29. package/dist/scripts/{5722-2704be9eac-lite.chunk.js → 5722-ffeb02c053-lite.chunk.js} +2 -2
  30. package/dist/scripts/5722-ffeb02c053-lite.chunk.js.map +1 -0
  31. package/dist/scripts/6450-8f22c3d427-lite.chunk.js +2 -0
  32. package/dist/scripts/6450-8f22c3d427-lite.chunk.js.map +1 -0
  33. package/dist/scripts/6919-afa7705c12-lite.chunk.js +2 -0
  34. package/dist/scripts/{2121-aec96064d1-lite.chunk.js.map → 6919-afa7705c12-lite.chunk.js.map} +1 -1
  35. package/dist/scripts/{7318-20bc42718d-lite.chunk.js → 7318-bf6bb0e9f7-lite.chunk.js} +2 -2
  36. package/dist/scripts/{7318-20bc42718d-lite.chunk.js.map → 7318-bf6bb0e9f7-lite.chunk.js.map} +1 -1
  37. package/dist/scripts/7426-c64273c529-lite.chunk.js +3 -0
  38. package/dist/scripts/7426-c64273c529-lite.chunk.js.map +1 -0
  39. package/dist/scripts/897-10a911aed5-lite.chunk.js +2 -0
  40. package/dist/scripts/897-10a911aed5-lite.chunk.js.map +1 -0
  41. package/dist/scripts/9630-871c10832c-lite.chunk.js +3 -0
  42. package/dist/scripts/9630-871c10832c-lite.chunk.js.LICENSE.txt +1 -0
  43. package/dist/scripts/9630-871c10832c-lite.chunk.js.map +1 -0
  44. package/dist/scripts/{bundle-60e5e2f3ee.min.js → bundle-3fed522614.min.js} +3 -3
  45. package/dist/scripts/{bundle-60e5e2f3ee.min.js.map → bundle-3fed522614.min.js.map} +1 -1
  46. package/package.json +1 -1
  47. package/dist/scripts/1265-1c11ef03e1-lite.chunk.js.map +0 -1
  48. package/dist/scripts/1477-fa0f6cc194-lite.chunk.js +0 -2
  49. package/dist/scripts/1477-fa0f6cc194-lite.chunk.js.map +0 -1
  50. package/dist/scripts/2121-aec96064d1-lite.chunk.js +0 -2
  51. package/dist/scripts/2613-3d81a10b0b-lite.chunk.js +0 -2
  52. package/dist/scripts/2613-3d81a10b0b-lite.chunk.js.map +0 -1
  53. package/dist/scripts/4005-d961c9bbff-lite.chunk.js +0 -3
  54. package/dist/scripts/4005-d961c9bbff-lite.chunk.js.map +0 -1
  55. package/dist/scripts/5722-2704be9eac-lite.chunk.js.map +0 -1
  56. package/dist/scripts/7426-f704b4187d-lite.chunk.js +0 -3
  57. package/dist/scripts/7426-f704b4187d-lite.chunk.js.map +0 -1
  58. package/dist/scripts/9630-94751b1994-lite.chunk.js +0 -2
  59. package/dist/scripts/9630-94751b1994-lite.chunk.js.map +0 -1
  60. /package/dist/scripts/{1265-1c11ef03e1-lite.chunk.js.LICENSE.txt → 2205-7596edf3ff-lite.chunk.js.LICENSE.txt} +0 -0
  61. /package/dist/scripts/{2564-b38ceabfc3-lite.chunk.js.LICENSE.txt → 2564-7758fc9a23-lite.chunk.js.LICENSE.txt} +0 -0
  62. /package/dist/scripts/{4005-d961c9bbff-lite.chunk.js.LICENSE.txt → 4205-b37ae8ccb9-lite.chunk.js.LICENSE.txt} +0 -0
  63. /package/dist/scripts/{7426-f704b4187d-lite.chunk.js.LICENSE.txt → 7426-c64273c529-lite.chunk.js.LICENSE.txt} +0 -0
  64. /package/dist/scripts/{bundle-60e5e2f3ee.min.js.LICENSE.txt → bundle-3fed522614.min.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5722],{93659:(e,t,r)=>{r.d(t,{J:()=>D});var n=r(32735),i=r(75896),o=r(1048),a=r(34509),l=r(11607),c=r(83345),u="search.filterActions";function s(e){return n.createElement("div",{className:"d-flex justify-content-between ".concat(e.className)},e.active?n.createElement(l.L,{className:"text-secondary hover-text-underline cursor-pointer",onClick:e.onClickReset},n.createElement(c.x,{namespace:u,phrase:"reset"})):n.createElement("div",{className:"invisible"}),n.createElement(l.L,{className:"info-link",onClick:e.onClickApply},n.createElement(c.x,{namespace:u,phrase:"apply"})))}s.defaultProps={active:!1,className:""};var f=r(96675),m=r(23715),d=r(83914);const y={hideCaret:"KDq7l",filterMenu:"E9o_Q",twoColumnsWidth:"C70vU",nestedCheckboxesWidth:"kUHcg",switchWidth:"bi1FH",moreFiltersWidth:"rbr22",svgContainer:"UwDMA"};function p(e){return p="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},p(e)}function v(e,t){return 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,i,o,a,l=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw i}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return b(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)?b(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 b(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 h(e){var t=n.useContext(f.f).state,r=t[e.filter.id],i="dropdown"===e.filter.type,o=v(n.useState(e.filter.name),2),l=o[0],c=o[1],u=v(n.useState(!1),2),b=u[0],h=u[1],g=v(n.useState(r),2),S=g[0],E=g[1];function C(e){E(e),i&&w(e)}function w(){var n,i,o,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:S;m.qr.applyFilter([e.filter],r,(n={},i=e.filter.id,o=a,(i=function(e){var t=function(e){if("object"!=p(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}(i))in n?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,n),t.appLink)}n.useEffect((function(){c(m.qr.getLabel(e.filter,r)),E(r)}),[e.filter,null==r?void 0:r.selection]);var F,k=n.useMemo((function(){return e.filter.customComponent?e.filter.customComponent:m.qr.mapTypeToComponent(e.filter.type)}),[e.filter.type]),j=e.hideCaret&&!i?y.hideCaret:"",A=(F=e.filter,m.qr.displayTwoColumns(F)?y.twoColumnsWidth:"classification"===F.id?y.classificationWidth:m.qr.displayTwoLayers(F)?y.nestedCheckboxesWidth:"switch"===F.type?y.switchWidth:"");return"button"===e.filter.type?n.createElement(k,{filter:e.filter,draftState:S,setDraftState:C}):n.createElement(a.Z,{onToggle:function(e){h(e),e||i||w()},show:b},n.createElement(a.Z.Toggle,{id:"filterButton-".concat(e.filter.id),className:"".concat("fw-semibold mx-1 btn d-flex align-items-center"," ").concat(j),variant:r.active&&!i?"dark":"outline-dark",disabled:e.filter.disabled},!!e.filter.icon&&n.createElement("div",{className:y.svgContainer},n.createElement(d.x,{svgName:e.filter.icon})),e.filter.labelPrefix," ",l),n.createElement(a.Z.Menu,null,n.createElement("div",{className:"mx-1 ".concat(y.filterMenu," ").concat(A," ").concat(i?"":"px-2 py-1")},n.createElement(k,{filter:e.filter,draftState:S,setDraftState:C}),!i&&!e.filter.disabled&&n.createElement(s,{active:S.active,onClickReset:function(){var t,r=null===(t=e.filter.options)||void 0===t?void 0:t.find((function(e){return e.default}));E({active:!1,selection:r?[r]:[]})},onClickApply:function(){w(),h(!1)}}))))}h.defaultProps={hideCaret:!0};var g=r(91967);function S(e){return S="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},S(e)}var E={getSetStateByKey:function(e,t,r){return function(n){return e((function(e){var i,o,a,l=g.q.isFunction(r)?r:g.q.useIdentity();return Object.assign(Object.assign({},e),(i={},o=t,a=l(n,e),(o=function(e){var t=function(e){if("object"!=S(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=S(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==S(t)?t:t+""}(o))in i?Object.defineProperty(i,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[o]=a,i))}))}}};function C(e,t){return 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,i,o,a,l=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw i}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return w(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)?w(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 w(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 F(e){return Object.keys(e).reduce((function(t,r){return e[r].active?t+1:t}),0)}function k(e){var t=n.useContext(f.f).state,r=t.moreFilters,i=C(n.useState(e.filter.name),2),o=i[0],l=i[1],c=C(n.useState(!1),2),u=c[0],d=c[1],p=C(n.useState(r),2),v=p[0],b=p[1],h=C(n.useState(F(r)),2),g=h[0],S=h[1],w=Object.keys(r).map((function(e){return"".concat(e,":").concat(r[e].active)})).join("-");function k(){m.qr.applyFilter(e.filter.filters,r,v,t.appLink)}n.useEffect((function(){b(r),S(F(r))}),[e.filter,w]),n.useEffect((function(){l(g?"".concat(e.filter.name," - ").concat(g):e.filter.name)}),[g]);var j="fw-semibold ".concat(y.hideCaret," mx-1 btn");return n.createElement(a.Z,{onToggle:function(e){d(e),e||k()},show:u},n.createElement(a.Z.Toggle,{id:e.filter.id,className:j,variant:g?"dark":"outline-dark"},o),n.createElement(a.Z.Menu,{onClick:function(e){return e.stopPropagation()}},n.createElement("div",{className:"mx-1 ".concat(y.moreFiltersWidth," ").concat("dropdown"!==e.filter.type?"px-2 py-1":"")},e.filter.filters.map((function(e){var t=e.customComponent?e.customComponent:m.qr.mapTypeToComponent(e.type);return n.createElement("fieldset",{key:e.id},n.createElement(t,{filter:e,draftState:v[e.id],setDraftState:E.getSetStateByKey(b,e.id),isOnMoreFilters:!0}))})),n.createElement(s,{active:!!Object.keys(v).find((function(e){return v[e].active})),onClickReset:function(){var t=Object.keys(r).reduce((function(t,r){var n,i=null===(n=e.filter.filters.find((function(e){return e.id===r})).options)||void 0===n?void 0:n.find((function(e){return e.default}));return t[r]={active:!1,selection:i?[i]:[]},t}),{});b(t)},onClickApply:function(){k(),d(!1)}}))))}var j=r(63112),A=r(16450),x=r(16035);function O(e){var t=e.selectedItems.find((function(t){return t.id===e.data.id}))?"bg-gray-900 text-white":"bg-light";return n.createElement(x.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," lh-1"),onClick:function(){return e.onClick(e.data)}})}const q={tagItem:"j84HW"};function I(e){return I="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},I(e)}function N(e){return function(e){if(Array.isArray(e))return P(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||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}}(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 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}function T(e){var t,r,i,o,a=n.useContext(f.f).state;if(!(null===(t=e.filter)||void 0===t?void 0:t.id))return n.createElement(n.Fragment,null);var l=a[e.filter.id],c=l.selection,u=null!==(o=null===(i=null===(r=e.filter)||void 0===r?void 0:r.options)||void 0===i?void 0:i.filter((function(e){return!(null==c?void 0:c.find((function(t){return t.id===e.id})))})))&&void 0!==o?o:[];function s(t){var r,n,i,o=null,u=-1;if(c.find((function(e,r){u>-1||e.id.toString()===t.id.toString()&&(u=r)})),u>=0){var s=[].concat(N(c.slice(0,u)),N(c.slice(u+1)));o={active:!!s.length,selection:s}}else o={active:!0,selection:c.concat(t)};m.qr.applyFilter([e.filter],l,(r={},n=e.filter.id,i=o,(n=function(e){var t=function(e){if("object"!=I(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=I(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==I(t)?t:t+""}(n))in r?Object.defineProperty(r,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[n]=i,r),a.appLink)}var d,y=[].concat(N(c),N(e.isFetching?[]:u));return n.createElement("div",{className:e.isFetching||y.length?"py-2":""},n.createElement("div",{className:(d="mb-3",y.length&&e.isFetching?d+=" mt-n1":y.length||e.isFetching||(d+=" d-none"),d)},(!!y.length||e.isFetching)&&n.createElement(A.e,{collection:y,childComponent:function(e){return n.createElement(O,Object.assign({},e,{selectedItems:c,onClick:s}))},staticChildren:e.isFetching?new Array(3).fill({component:function(){return n.createElement(j.o,{tagClass:q.tagItem})},position:"end"}):[],partialLoadingComponent:function(){return n.createElement("div",{className:"me-2"},n.createElement(j.o,{tagClass:"".concat(q.tagItem)}))}})))}var L=r(81886);function R(e){var t=n.useContext(f.f).state;return n.createElement(l.L,{onClick:function(){L.Q.C$.trigger(Object.assign(Object.assign({},t.appLink),{params:e.currentQueryParam?{query:e.currentQueryParam}:null}))},className:"".concat(e.alignLeft?"order-first":""," hover-text-underline cursor-pointer d-flex align-items-center mx-2")},n.createElement(c.x,{namespace:"search.resetButton",phrase:"reset"}))}var M=r(95245);function Q(e){return function(e){if(Array.isArray(e))return _(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||W(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 W(e,t){if(e){if("string"==typeof e)return _(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)?_(e,t):void 0}}function _(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 D(e){var t,r,a=e.queryParams,l=e.appLink,u=e.hideHeading,s=e.isFetchingOptions,d=e.constantIndices,y=void 0===d?[]:d,p=n.useMemo((function(){return m.qr.deriveInitialStateFromQuery(a,e.mainFilters,e.moreFilters,l)}),[a,s]),v=(t=n.useReducer(f.O,p),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o,a,l=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw i}}return l}}(t,r)||W(t,r)||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.")}()),b=v[0],g=v[1];n.useEffect((function(){o.t.isEqual(p,b)||(g({type:"update",payload:p}),e.analyticsOptions&&m.qr.logFilterEvent(e.mainFilters,e.moreFilters,p,a.query,e.analyticsOptions))}),[p]);var S=i.m.uniq([].concat(Q(m.qr.getAppliedIndices(a,e._hasNewSearch)),Q(y))),E=m.qr.mixinDisabledFields(b,S,e.mainFilters,e.moreFilters),C=E.mainFilters,w=E.moreFilters,F=C.filter((function(e){return"tag"!==e.type})),j=C.find((function(e){return"tag"===e.type}));return n.createElement(f.f.Provider,{value:{state:b,dispatch:g}},n.createElement(c.D.Provider,{value:"search.searchFilters"},n.createElement("section",null,n.createElement("div",{className:"d-flex ".concat(e.hideDivider?"":"border-bottom pb-3 mb-3")},!u&&n.createElement("h2",{className:"h5 mb-0 d-inline-block pe-2 border-end d-flex align-items-center"},n.createElement(c.x,{phrase:"heading"})),n.createElement("div",{className:"d-flex flex-wrap ".concat(M.Z.filtersContainer," ").concat(u?"":"ms-2")},F.map((function(t){return n.createElement(h,{key:t.id,filter:t,hideCaret:e.hideCaret})})),w&&n.createElement(k,{filter:w}),m.qr.hasActiveFilters(a)&&!e.hideResetButton&&n.createElement(R,{mainFilters:e.mainFilters,moreFilters:e.moreFilters,currentQueryParam:a.query,analyticsOptions:e.analyticsOptions,alignLeft:e.alignResetButtonLeft}))),n.createElement(T,{filter:j,queryParams:a,isFetching:e.isFetchingOptions}))))}},94644:(e,t,r)=>{r.d(t,{r:()=>s});var n=r(50242),i=r(81886),o=r(67058),a=r(14553),l=r(49267),c=r(49075),u={notFound:o.d,forbidden:{rating:a.q,yearLevel:a.q,region:l.a,privacy:a.q},badRequest:c._,internalServerError:c._};function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var a=Object.assign(Object.assign({},u),t);o&&i.Q.Ry.isStatusCodeError(o)&&(o!==n.o.InternalServer?o!==n.o.NotFound?o!==n.o.Forbidden?r.badRequest||i.Q.Ry.throw(new a.badRequest):r.forbidden||i.Q.Ry.throw(new a.forbidden.privacy):r.notFound||i.Q.Ry.throw(new a.notFound):r.internalServerError||i.Q.Ry.throw(new c._))}}},95245:(e,t,r)=>{r.d(t,{Z:()=>n});const n={partialFilterHeading:"O8f8H",partialButton:"ThKam",filtersContainer:"JIp3h"}}}]);
2
- //# sourceMappingURL=5722-2704be9eac-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5722],{93659:(e,t,r)=>{r.d(t,{J:()=>_});var n=r(32735),i=r(75896),o=r(1048),a=r(34509),l=r(11607),c=r(83345),u="search.filterActions";function s(e){return n.createElement("div",{className:"d-flex justify-content-between ".concat(e.className)},e.active?n.createElement(l.L,{className:"text-secondary hover-text-underline cursor-pointer",onClick:e.onClickReset},n.createElement(c.x,{namespace:u,phrase:"reset"})):n.createElement("div",{className:"invisible"}),n.createElement(l.L,{className:"info-link",onClick:e.onClickApply},n.createElement(c.x,{namespace:u,phrase:"apply"})))}s.defaultProps={active:!1,className:""};var f=r(96675),m=r(23715),d=r(83914);const y={hideCaret:"KDq7l",filterMenu:"E9o_Q",twoColumnsWidth:"C70vU",nestedCheckboxesWidth:"kUHcg",switchWidth:"bi1FH",moreFiltersWidth:"rbr22",svgContainer:"UwDMA"};function p(e){return p="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},p(e)}function v(e,t){return 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,i,o,a,l=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw i}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return b(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)?b(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 b(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 h(e){var t=n.useContext(f.f).state,r=t[e.filter.id],i="dropdown"===e.filter.type,o=v(n.useState(e.filter.name),2),l=o[0],c=o[1],u=v(n.useState(!1),2),b=u[0],h=u[1],g=v(n.useState(r),2),S=g[0],E=g[1];function C(e){E(e),i&&w(e)}function w(){var n,i,o,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:S;m.qr.applyFilter([e.filter],r,(n={},i=e.filter.id,o=a,(i=function(e){var t=function(e){if("object"!=p(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}(i))in n?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,n),t.appLink)}n.useEffect((function(){c(m.qr.getLabel(e.filter,r)),E(r)}),[e.filter,null==r?void 0:r.selection]);var k,F=n.useMemo((function(){return e.filter.customComponent?e.filter.customComponent:m.qr.mapTypeToComponent(e.filter.type)}),[e.filter.type]),j=e.hideCaret&&!i?y.hideCaret:"",x=(k=e.filter,m.qr.displayTwoColumns(k)?y.twoColumnsWidth:"classification"===k.id?y.classificationWidth:m.qr.displayTwoLayers(k)?y.nestedCheckboxesWidth:"switch"===k.type?y.switchWidth:"");return"button"===e.filter.type?n.createElement(F,{filter:e.filter,draftState:S,setDraftState:C}):n.createElement(a.Z,{onToggle:function(e){h(e),e||i||w()},show:b},n.createElement(a.Z.Toggle,{id:"filterButton-".concat(e.filter.id),className:"".concat("fw-semibold mx-1 btn d-flex align-items-center"," ").concat(j),variant:r.active&&!i?"dark":"outline-dark",disabled:e.filter.disabled},!!e.filter.icon&&n.createElement("div",{className:y.svgContainer},n.createElement(d.x,{svgName:e.filter.icon})),e.filter.labelPrefix," ",l),n.createElement(a.Z.Menu,null,n.createElement("div",{className:"mx-1 ".concat(y.filterMenu," ").concat(x," ").concat(i?"":"px-2 py-1")},n.createElement(F,{filter:e.filter,draftState:S,setDraftState:C}),!i&&!e.filter.disabled&&n.createElement(s,{active:S.active,onClickReset:function(){var t,r=null===(t=e.filter.options)||void 0===t?void 0:t.find((function(e){return e.default}));E({active:!1,selection:r?[r]:[]})},onClickApply:function(){w(),h(!1)}}))))}h.defaultProps={hideCaret:!0};var g=r(91967);function S(e){return S="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},S(e)}var E={getSetStateByKey:function(e,t,r){return function(n){return e((function(e){var i,o,a,l=g.q.isFunction(r)?r:g.q.useIdentity();return Object.assign(Object.assign({},e),(i={},o=t,a=l(n,e),(o=function(e){var t=function(e){if("object"!=S(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=S(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==S(t)?t:t+""}(o))in i?Object.defineProperty(i,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[o]=a,i))}))}}};function C(e,t){return 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,i,o,a,l=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw i}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return w(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)?w(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 w(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 k(e){return Object.keys(e).reduce((function(t,r){return e[r].active?t+1:t}),0)}function F(e){var t=n.useContext(f.f).state,r=t.moreFilters,i=C(n.useState(e.filter.name),2),o=i[0],l=i[1],c=C(n.useState(!1),2),u=c[0],d=c[1],p=C(n.useState(r),2),v=p[0],b=p[1],h=C(n.useState(k(r)),2),g=h[0],S=h[1],w=Object.keys(r).map((function(e){return"".concat(e,":").concat(r[e].active)})).join("-");function F(){m.qr.applyFilter(e.filter.filters,r,v,t.appLink)}n.useEffect((function(){b(r),S(k(r))}),[e.filter,w]),n.useEffect((function(){l(g?"".concat(e.filter.name," - ").concat(g):e.filter.name)}),[g]);var j="fw-semibold ".concat(y.hideCaret," mx-1 btn");return n.createElement(a.Z,{onToggle:function(e){d(e),e||F()},show:u},n.createElement(a.Z.Toggle,{id:e.filter.id,className:j,variant:g?"dark":"outline-dark"},o),n.createElement(a.Z.Menu,{onClick:function(e){return e.stopPropagation()}},n.createElement("div",{className:"mx-1 ".concat(y.moreFiltersWidth," ").concat("dropdown"!==e.filter.type?"px-2 py-1":"")},e.filter.filters.map((function(e){var t=e.customComponent?e.customComponent:m.qr.mapTypeToComponent(e.type);return n.createElement("fieldset",{key:e.id},n.createElement(t,{filter:e,draftState:v[e.id],setDraftState:E.getSetStateByKey(b,e.id),isOnMoreFilters:!0}))})),n.createElement(s,{active:!!Object.keys(v).find((function(e){return v[e].active})),onClickReset:function(){var t=Object.keys(r).reduce((function(t,r){var n,i=null===(n=e.filter.filters.find((function(e){return e.id===r})).options)||void 0===n?void 0:n.find((function(e){return e.default}));return t[r]={active:!1,selection:i?[i]:[]},t}),{});b(t)},onClickApply:function(){F(),d(!1)}}))))}var j=r(63112),x=r(16450),A=r(16035);function O(e){var t=e.selectedItems.find((function(t){return t.id===e.data.id}))?"bg-gray-900 text-white":"bg-light";return n.createElement(A.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," lh-1"),onClick:function(){return e.onClick(e.data)}})}const q={tagItem:"j84HW"};function I(e){return I="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},I(e)}function N(e){return function(e){if(Array.isArray(e))return P(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||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}}(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 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}function T(e){var t,r,i,o,a=n.useContext(f.f).state;if(!(null===(t=e.filter)||void 0===t?void 0:t.id))return n.createElement(n.Fragment,null);var l=a[e.filter.id],c=l.selection,u=null!==(o=null===(i=null===(r=e.filter)||void 0===r?void 0:r.options)||void 0===i?void 0:i.filter((function(e){return!(null==c?void 0:c.find((function(t){return t.id===e.id})))})))&&void 0!==o?o:[];function s(t){var r,n,i,o=null,u=-1;if(c.find((function(e,r){u>-1||e.id.toString()===t.id.toString()&&(u=r)})),u>=0){var s=[].concat(N(c.slice(0,u)),N(c.slice(u+1)));o={active:!!s.length,selection:s}}else o={active:!0,selection:c.concat(t)};m.qr.applyFilter([e.filter],l,(r={},n=e.filter.id,i=o,(n=function(e){var t=function(e){if("object"!=I(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=I(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==I(t)?t:t+""}(n))in r?Object.defineProperty(r,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[n]=i,r),a.appLink)}var d,y=[].concat(N(c),N(e.isFetching?[]:u));return n.createElement("div",{className:e.isFetching||y.length?"py-2":""},n.createElement("div",{className:(d="mb-3",y.length&&e.isFetching?d+=" mt-n1":y.length||e.isFetching||(d+=" d-none"),d)},(!!y.length||e.isFetching)&&n.createElement(x.e,{collection:y,childComponent:function(e){return n.createElement(O,Object.assign({},e,{selectedItems:c,onClick:s}))},staticChildren:e.isFetching?new Array(3).fill({component:function(){return n.createElement(j.o,{tagClass:q.tagItem})},position:"end"}):[],partialLoadingComponent:function(){return n.createElement("div",{className:"me-2"},n.createElement(j.o,{tagClass:"".concat(q.tagItem)}))}})))}var L=r(81886);function R(e){var t=n.useContext(f.f).state;return n.createElement(l.L,{onClick:function(){L.Q.C$.trigger(Object.assign(Object.assign({},t.appLink),{params:e.currentQueryParam?{query:e.currentQueryParam}:null}))},className:"".concat(e.alignLeft?"order-first":""," hover-text-underline cursor-pointer d-flex align-items-center mx-2")},n.createElement(c.x,{namespace:"search.resetButton",phrase:"reset"}))}var M=r(95245);function Q(e){return function(e){if(Array.isArray(e))return Z(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||W(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 W(e,t){if(e){if("string"==typeof e)return Z(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)?Z(e,t):void 0}}function Z(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 _(e){var t,r,a=e.queryParams,l=e.appLink,u=e.hideHeading,s=e.isFetchingOptions,d=e.constantIndices,y=void 0===d?[]:d,p=n.useMemo((function(){return m.qr.deriveInitialStateFromQuery(a,e.mainFilters,e.moreFilters,l)}),[a,s]),v=(t=n.useReducer(f.O,p),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o,a,l=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw i}}return l}}(t,r)||W(t,r)||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.")}()),b=v[0],g=v[1];n.useEffect((function(){o.t.isEqual(p,b)||(g({type:"update",payload:p}),e.analyticsOptions&&m.qr.logFilterEvent(e.mainFilters,e.moreFilters,p,a.query,e.analyticsOptions))}),[p]);var S=i.m.uniq([].concat(Q(m.qr.getAppliedIndices(a,e._hasNewSearch)),Q(y))),E=m.qr.mixinDisabledFields(b,S,e.mainFilters,e.moreFilters),C=E.mainFilters,w=E.moreFilters,k=C.filter((function(e){return"tag"!==e.type})),j=C.find((function(e){return"tag"===e.type}));return n.createElement(f.f.Provider,{value:{state:b,dispatch:g}},n.createElement(c.D.Provider,{value:"search.searchFilters"},n.createElement("section",null,n.createElement("div",{className:"d-flex ".concat(e.hideDivider?"":"border-bottom pb-3 mb-3")},!u&&n.createElement("h2",{className:"h5 mb-0 d-inline-block pe-2 border-end d-flex align-items-center"},n.createElement(c.x,{phrase:"heading"})),n.createElement("div",{className:"d-flex flex-wrap ".concat(M.Z.filtersContainer," ").concat(u?"":"ms-2")},k.map((function(t){return n.createElement(h,{key:t.id,filter:t,hideCaret:e.hideCaret})})),w&&n.createElement(F,{filter:w}),m.qr.hasActiveFilters(a)&&!e.hideResetButton&&n.createElement(R,{mainFilters:e.mainFilters,moreFilters:e.moreFilters,currentQueryParam:a.query,analyticsOptions:e.analyticsOptions,alignLeft:e.alignResetButtonLeft}))),n.createElement(T,{filter:j,queryParams:a,isFetching:e.isFetchingOptions}))))}},63112:(e,t,r)=>{r.d(t,{o:()=>o});var n=r(32735),i=r(91807),o=n.memo((function(e){var t=e.tagClass,r="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(i.Z.partialTag);return n.createElement("div",{className:"mt-1"},n.createElement("span",{className:r}," "))}))},94644:(e,t,r)=>{r.d(t,{r:()=>s});var n=r(50242),i=r(81886),o=r(67058),a=r(14553),l=r(49267),c=r(49075),u={notFound:o.d,forbidden:{rating:a.q,yearLevel:a.q,region:l.a,privacy:a.q},badRequest:c._,internalServerError:c._};function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var a=Object.assign(Object.assign({},u),t);o&&i.Q.Ry.isStatusCodeError(o)&&(o!==n.o.InternalServer?o!==n.o.NotFound?o!==n.o.Forbidden?r.badRequest||i.Q.Ry.throw(new a.badRequest):r.forbidden||i.Q.Ry.throw(new a.forbidden.privacy):r.notFound||i.Q.Ry.throw(new a.notFound):r.internalServerError||i.Q.Ry.throw(new c._))}}},95245:(e,t,r)=>{r.d(t,{Z:()=>n});const n={partialFilterHeading:"O8f8H",partialButton:"ThKam",filtersContainer:"JIp3h"}}}]);
2
+ //# sourceMappingURL=5722-ffeb02c053-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/5722-ffeb02c053-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/search/components/filter-actions/FilterActions.tsx","file:///app/packages/libs/shared/src/apps/search/components/filter-button/filter-button.scss","file:///app/packages/libs/shared/src/apps/search/components/filter-button/FilterButton.tsx","file:///app/packages/libs/shared/src/utils/StateHelper.ts","file:///app/packages/libs/shared/src/apps/search/components/filter-button/MoreFiltersButton.tsx","file:///app/packages/libs/shared/src/components/widgets/items/tag-widget-item/TagWidgetItem.tsx","file:///app/packages/libs/shared/src/apps/search/components/filter-types/tag-filter/tag-filter.scss","file:///app/packages/libs/shared/src/apps/search/components/filter-types/tag-filter/TagFilter.tsx","file:///app/packages/libs/shared/src/apps/search/components/reset-button/ResetButton.tsx","file:///app/packages/libs/shared/src/apps/search/components/search-filters/SearchFilters.tsx","file:///app/packages/libs/shared/src/components/tags/PartialTagItem.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/apps/search/components/search-filters/search-filters.scss"],"sourcesContent":["import * as React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'search.filterActions';\n\ninterface FilterActionsProps {\n className?: string;\n onClickReset: () => void;\n onClickApply: () => void;\n active: boolean;\n}\n\nFilterActions.defaultProps = {\n active: false,\n className: ''\n};\n\nexport function FilterActions(props: FilterActionsProps): JSX.Element {\n return (\n <div className={`d-flex justify-content-between ${props.className}`}>\n {props.active ? (\n <DivButton className='text-secondary hover-text-underline cursor-pointer' onClick={props.onClickReset}>\n <Text namespace={namespace} phrase='reset' />\n </DivButton>\n ) : (\n <div className='invisible' />\n )}\n\n <DivButton className='info-link' onClick={props.onClickApply}>\n <Text namespace={namespace} phrase='apply' />\n </DivButton>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"hideCaret\":\"KDq7l\",\"filterMenu\":\"E9o_Q\",\"twoColumnsWidth\":\"C70vU\",\"nestedCheckboxesWidth\":\"kUHcg\",\"switchWidth\":\"bi1FH\",\"moreFiltersWidth\":\"rbr22\",\"svgContainer\":\"UwDMA\"};","import * as React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { FilterActions } from 'libs/shared/apps/search/components/filter-actions/FilterActions';\nimport { SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext, FilterState } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport styles from './filter-button.scss';\n\n/**\n * If your filter requires some customisations to the default width, add a use case here.\n */\nfunction getCustomWidthClass(filter: SearchFilter): string {\n if (FilterHelper.displayTwoColumns(filter))\n return styles.twoColumnsWidth;\n\n // Some classifications has long names, so we make them wider\n if (filter.id === 'classification')\n return styles.classificationWidth;\n \n if (FilterHelper.displayTwoLayers(filter))\n return styles.nestedCheckboxesWidth;\n\n if (filter.type === 'switch')\n return styles.switchWidth;\n\n return '';\n}\n\nFilterButton.defaultProps = {\n hideCaret: true\n};\n\ninterface FilterButtonProps {\n filter: SearchFilter;\n hideCaret?: boolean;\n}\n\nexport function FilterButton(props: FilterButtonProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n const currentFilterState = state[props.filter.id];\n\n const isDropdownFilter = props.filter.type === 'dropdown';\n\n const [ label, setLabel ] = React.useState(props.filter.name);\n const [ showDropdown, setShowDropdown ] = React.useState(false);\n const [ draftState, setDraftState ] = React.useState<FilterState>(currentFilterState);\n\n React.useEffect(() => {\n setLabel(FilterHelper.getLabel(props.filter, currentFilterState));\n setDraftState(currentFilterState);\n }, [ props.filter, currentFilterState?.selection ]);\n\n function onSelectItem(state: FilterState): void {\n setDraftState(state);\n\n if (isDropdownFilter)\n applyFilter(state);\n }\n\n function onClickReset(): void {\n const defaultOption = props.filter.options?.find(o => o.default);\n\n setDraftState({\n active: false,\n selection: defaultOption ? [defaultOption] : []\n });\n }\n\n function onClickApply(): void {\n applyFilter();\n setShowDropdown(false);\n }\n\n function applyFilter(newState: FilterState = draftState): void {\n FilterHelper.applyFilter(\n [props.filter],\n currentFilterState,\n { [props.filter.id]: newState },\n state.appLink\n );\n }\n\n function onToggleDropdown(isShowing: boolean): void {\n setShowDropdown(isShowing);\n\n if (isShowing || isDropdownFilter)\n return;\n\n // Apply the filter if the dropdown has been closed\n applyFilter();\n }\n\n const FilterComponent = React.useMemo(() => {\n return props.filter.customComponent\n ? props.filter.customComponent\n : FilterHelper.mapTypeToComponent(props.filter.type);\n }, [props.filter.type]);\n\n const baseClass = `fw-semibold mx-1 btn d-flex align-items-center`;\n const caretClass = props.hideCaret && !isDropdownFilter ? styles.hideCaret : '';\n const customWidthClass = getCustomWidthClass(props.filter);\n\n if (props.filter.type === 'button')\n return (\n <FilterComponent\n filter={props.filter}\n draftState={draftState}\n setDraftState={onSelectItem}\n />\n );\n\n return (\n <Dropdown onToggle={onToggleDropdown} show={showDropdown}>\n <Dropdown.Toggle\n id={`filterButton-${props.filter.id}`}\n className={`${baseClass} ${caretClass}`}\n variant={(currentFilterState.active && !isDropdownFilter) ? 'dark' : 'outline-dark'}\n disabled={props.filter.disabled}\n >\n {!!props.filter.icon && (\n <div className={styles.svgContainer}>\n <SvgContainer svgName={props.filter.icon} />\n </div>\n )}\n {props.filter.labelPrefix} {label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n <div className={`mx-1 ${styles.filterMenu} ${customWidthClass} ${!isDropdownFilter ? 'px-2 py-1' : ''}`}>\n <FilterComponent\n filter={props.filter}\n draftState={draftState}\n setDraftState={onSelectItem}\n />\n\n {(!isDropdownFilter && !props.filter.disabled) && (\n <FilterActions\n active={draftState.active}\n onClickReset={onClickReset}\n onClickApply={onClickApply}\n />\n )}\n </div>\n </Dropdown.Menu>\n </Dropdown>\n );\n}\n","import { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nexport const StateHelper = {\n /**\n * Helper function to get the setState function for an individual key in a state object.\n * \n * @param setState React setState action\n * @param key Property within the state object we're updating\n * @param callback Optional callback to modify data before setting state. Uses identity fn by default.\n * \n * @returns Newly updated state object\n */\n getSetStateByKey<T extends HashObject>(\n setState: React.Dispatch<React.SetStateAction<T>>,\n key: keyof T,\n callback?: (data: any, state?: T) => T[keyof T]\n ): (data: any) => void {\n return (data: any) => setState(state => {\n const fn = FunctionHelper.isFunction(callback) ? callback : FunctionHelper.useIdentity<T>();\n return { ...state, [key]: fn(data, state) };\n });\n }\n};","import * as React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { FilterActions } from 'libs/shared/apps/search/components/filter-actions/FilterActions';\nimport { FilterIds, MoreFilters } from 'libs/shared/apps/search/interfaces';\nimport { DraftState, FilterContext, FilterStateHash } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\n\nimport styles from './filter-button.scss';\n\nfunction getTotalActiveFilters(currentState: FilterStateHash): number {\n const total = Object.keys(currentState).reduce((acc: number, key: FilterIds) => {\n return currentState[key].active\n ? acc + 1\n : acc;\n }, 0);\n\n return total;\n}\n\ninterface MoreFiltersButtonProps {\n filter: MoreFilters;\n}\n\nexport function MoreFiltersButton(props: MoreFiltersButtonProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n const currentFilterState = state.moreFilters;\n\n const [ label, setLabel ] = React.useState(props.filter.name);\n const [ showDropdown, setShowDropdown ] = React.useState(false);\n const [ draftState, setDraftState ] = React.useState<DraftState>(currentFilterState);\n const [ totalActiveFilters, setTotalActiveFilters ] = React.useState(getTotalActiveFilters(currentFilterState));\n\n const currentFilterStateKey = Object.keys(currentFilterState).map((id: FilterIds) => {\n return `${id}:${currentFilterState[id].active}`;\n }).join('-');\n\n React.useEffect(() => {\n setDraftState(currentFilterState);\n setTotalActiveFilters(getTotalActiveFilters(currentFilterState));\n }, [ props.filter, currentFilterStateKey ]);\n\n React.useEffect(() => {\n setLabel(totalActiveFilters ? `${props.filter.name} - ${totalActiveFilters}` : props.filter.name);\n }, [totalActiveFilters]);\n\n function onClickReset(): void {\n const filterIds = Object.keys(currentFilterState) as FilterIds[];\n\n const newState = filterIds.reduce((acc: DraftState, filterId) => {\n const filter = props.filter.filters.find(f => f.id === filterId);\n const defaultOption = filter.options?.find(o => o.default);\n\n acc[filterId] = {\n active: false,\n selection: defaultOption ? [defaultOption] : []\n };\n\n return acc;\n }, {});\n\n setDraftState(newState);\n }\n\n function onClickApply(): void {\n applyFilter();\n setShowDropdown(false);\n }\n\n function onToggleDropdown(isShowing: boolean): void {\n setShowDropdown(isShowing);\n\n if (isShowing)\n return;\n\n // Apply the filter if the dropdown has been closed\n applyFilter();\n }\n\n function applyFilter(): void {\n FilterHelper.applyFilter(\n props.filter.filters,\n currentFilterState,\n draftState,\n state.appLink\n );\n }\n\n const baseClass = `fw-semibold ${styles.hideCaret} mx-1 btn`;\n\n return (\n <Dropdown onToggle={onToggleDropdown} show={showDropdown}>\n <Dropdown.Toggle id={props.filter.id} className={baseClass} variant={totalActiveFilters ? 'dark' : 'outline-dark'}>\n {label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu onClick={(e: React.MouseEvent) => e.stopPropagation()}>\n <div className={`mx-1 ${styles.moreFiltersWidth} ${props.filter.type !== 'dropdown' ? 'px-2 py-1' : ''}`}>\n {props.filter.filters.map(filter => {\n const FilterComponent = filter.customComponent\n ? filter.customComponent\n : FilterHelper.mapTypeToComponent(filter.type);\n\n return (\n <fieldset key={filter.id}>\n <FilterComponent\n filter={filter}\n draftState={draftState[filter.id]}\n setDraftState={StateHelper.getSetStateByKey(setDraftState, filter.id)}\n isOnMoreFilters\n />\n </fieldset>\n );\n })}\n\n <FilterActions\n active={!!Object.keys(draftState).find((key: FilterIds) => draftState[key].active)}\n onClickReset={onClickReset}\n onClickApply={onClickApply}\n />\n </div>\n </Dropdown.Menu>\n </Dropdown>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { FilterOption } from 'libs/shared/apps/search/interfaces';\nimport { TagItem } from 'libs/shared/components/tags/TagItem';\nimport { BaseObject, Tag } from 'libs/shared/interfaces';\n\nexport interface TagWidgetItemProps {\n appLink: Core.AppLink;\n data: Tag;\n selectedItems?: BaseObject[];\n onClick?: (data: Tag | FilterOption) => void;\n}\n\nexport function TagWidgetItem(props: TagWidgetItemProps): JSX.Element {\n const isSelected = props.selectedItems.find(selection => selection.id === props.data.id);\n\n const colorClass = isSelected ? `bg-gray-900 text-white` : 'bg-light';\n\n return (\n <TagItem\n tag={props.data}\n appLink={props.appLink}\n tagClass={`no-decoration ${colorClass} lh-1`}\n onClick={() => props.onClick(props.data)}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"tagItem\":\"j84HW\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FilterOption, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext, FilterState } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { PartialTagItem } from 'libs/shared/components/tags/PartialTagItem';\nimport { DynamicWidget } from 'libs/shared/components/widgets/dynamic-widget/DynamicWidget';\nimport { TagWidgetItem, TagWidgetItemProps } from 'libs/shared/components/widgets/items/tag-widget-item/TagWidgetItem';\n\nimport styles from './tag-filter.scss';\n\ninterface TagFilterProps {\n filter: SearchFilter;\n queryParams: HashObject;\n isFetching?: boolean;\n}\n\nexport function TagFilter(props: TagFilterProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n\n if (!props.filter?.id)\n return <></>;\n\n const currentFilterState = state[props.filter.id];\n\n const { selection: selections } = currentFilterState;\n\n const unappliedOptions = props.filter?.options?.filter(opt => {\n return !selections?.find(selection => selection.id === opt.id);\n }) ?? [];\n\n function onClickOption(option: FilterOption): void {\n let nextFilterState: FilterState = null;\n\n let indexOfItem: number = -1;\n\n // Find the index of the selected item if it's already selected\n selections.find((selection, i) => {\n if (indexOfItem > -1)\n return;\n\n if (selection.id.toString() !== option.id.toString())\n return;\n\n indexOfItem = i;\n });\n\n if (indexOfItem >= 0) {\n const newItems = [ ...selections.slice(0, indexOfItem), ...selections.slice(indexOfItem + 1) ];\n \n nextFilterState = {\n active: !!newItems.length,\n selection: newItems\n };\n } else {\n nextFilterState = {\n active: true,\n selection: selections.concat(option)\n };\n }\n\n FilterHelper.applyFilter(\n [props.filter],\n currentFilterState,\n { [props.filter.id]: nextFilterState },\n state.appLink\n );\n }\n\n function getContainerClass(): string {\n let className = 'mb-3';\n\n if (collection.length && props.isFetching)\n className += ' mt-n1';\n else if (!collection.length && !props.isFetching)\n className += ' d-none';\n\n return className;\n }\n\n const collection = [ ...selections, ...(props.isFetching ? [] : unappliedOptions) ];\n\n return (\n <div className={(props.isFetching || collection.length) ? 'py-2' : ''}>\n <div className={getContainerClass()}>\n {(!!collection.length || props.isFetching) && (\n <DynamicWidget\n collection={collection}\n childComponent={(props: TagWidgetItemProps) => (\n <TagWidgetItem\n {...props}\n selectedItems={selections}\n onClick={onClickOption}\n />\n )}\n staticChildren={props.isFetching\n ? new Array(3).fill({\n component: () => <PartialTagItem tagClass={styles.tagItem} />,\n position: 'end'\n })\n : []\n }\n partialLoadingComponent={() => (\n <div className='me-2'>\n <PartialTagItem tagClass={`${styles.tagItem}`} />\n </div>\n )}\n />\n )}\n </div>\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { MoreFilters, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext } from 'libs/shared/apps/search/reducers';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\n\ntype ResetButtonProps = PropsWithAnalyticsOptions<{\n currentQueryParam: string;\n mainFilters: Array<SearchFilter>;\n moreFilters: MoreFilters;\n alignLeft?: boolean;\n}>;\n\nexport function ResetButton(props: ResetButtonProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n\n const onClickReset = () => {\n Core.AppLinkHelper.trigger({\n ...state.appLink,\n params: props.currentQueryParam ? { query: props.currentQueryParam } : null\n });\n };\n\n return (\n <DivButton\n onClick={onClickReset}\n className={`${props.alignLeft ? 'order-first' : ''} hover-text-underline cursor-pointer d-flex align-items-center mx-2`}\n >\n <Text namespace='search.resetButton' phrase='reset' />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { FilterButton } from 'libs/shared/apps/search/components/filter-button/FilterButton';\nimport { MoreFiltersButton } from 'libs/shared/apps/search/components/filter-button/MoreFiltersButton';\nimport { TagFilter } from 'libs/shared/apps/search/components/filter-types/tag-filter/TagFilter';\nimport { ResetButton } from 'libs/shared/apps/search/components/reset-button/ResetButton';\nimport { MoreFilters, SearchFilter, SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext, FilterReducer } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport styles from './search-filters.scss';\n\ntype SearchFiltersProps = {\n queryParams: HashObject;\n mainFilters: SearchFilter[];\n appLink: Core.AppLink;\n moreFilters?: MoreFilters;\n isFetchingOptions?: boolean;\n constantIndices?: SearchIndices[];\n analyticsOptions?: AnalyticsOptions;\n\n hideHeading?: boolean;\n hideDivider?: boolean;\n hideResetButton?: boolean;\n alignResetButtonLeft?: boolean;\n hideCaret?: boolean;\n\n /**\n * Incremental changes flag for new search\n */\n _hasNewSearch?: boolean;\n};\n\nexport function SearchFilters(props: SearchFiltersProps): JSX.Element {\n const { queryParams, appLink, hideHeading, isFetchingOptions, constantIndices = []} = props;\n\n const newState = React.useMemo(() => {\n return FilterHelper.deriveInitialStateFromQuery(queryParams, props.mainFilters, props.moreFilters, appLink);\n }, [ queryParams, isFetchingOptions ]);\n\n const [ state, dispatch ] = React.useReducer(FilterReducer, newState);\n\n React.useEffect(() => {\n if (ObjectHelper.isEqual(newState, state))\n return;\n\n dispatch({\n type: 'update',\n payload: newState\n });\n\n if (props.analyticsOptions) {\n FilterHelper.logFilterEvent(\n props.mainFilters,\n props.moreFilters,\n newState,\n queryParams.query,\n props.analyticsOptions\n );\n }\n }, [newState]);\n\n const indices = ArrayHelper.uniq([\n ...FilterHelper.getAppliedIndices(queryParams, props._hasNewSearch),\n ...constantIndices\n ]);\n\n const { mainFilters, moreFilters } = FilterHelper.mixinDisabledFields(\n state,\n indices,\n props.mainFilters,\n props.moreFilters\n );\n\n // Separate the tag filter as it's rendered differently\n const mainFiltersWithoutTags = mainFilters.filter(f => f.type !== 'tag');\n const tagFilter = mainFilters.find(f => f.type === 'tag');\n\n return (\n <FilterContext.Provider value={{ state, dispatch }}>\n <LanguageNamespaceContext.Provider value='search.searchFilters'>\n <section>\n <div className={`d-flex ${!props.hideDivider ? 'border-bottom pb-3 mb-3' : ''}`}>\n {!hideHeading && (\n <h2 className='h5 mb-0 d-inline-block pe-2 border-end d-flex align-items-center'>\n <Text phrase='heading' />\n </h2>\n )}\n\n <div className={`d-flex flex-wrap ${styles.filtersContainer} ${!hideHeading ? 'ms-2' : ''}`}>\n {mainFiltersWithoutTags.map(f => (\n <FilterButton key={f.id} filter={f} hideCaret={props.hideCaret} />\n ))}\n\n {moreFilters && <MoreFiltersButton filter={moreFilters} />}\n\n {FilterHelper.hasActiveFilters(queryParams) && !props.hideResetButton && (\n <ResetButton\n mainFilters={props.mainFilters}\n moreFilters={props.moreFilters}\n currentQueryParam={queryParams.query}\n analyticsOptions={props.analyticsOptions}\n alignLeft={props.alignResetButtonLeft}\n />\n )}\n </div>\n </div>\n \n <TagFilter\n filter={tagFilter}\n queryParams={queryParams}\n isFetching={props.isFetchingOptions}\n />\n </section>\n </LanguageNamespaceContext.Provider>\n </FilterContext.Provider>\n );\n}\n","import React from 'react';\n\nimport styles from './tags.scss';\n\ninterface PartialTagItemProps {\n tagClass?: string;\n}\n\nexport const PartialTagItem = React.memo(function({ tagClass = '' }: PartialTagItemProps): JSX.Element {\n const classNames = `partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ${tagClass} ${styles.partialTag}`;\n\n return (\n <div className='mt-1'>\n <span className={classNames}>&nbsp;</span>\n </div>\n );\n});","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialFilterHeading\":\"O8f8H\",\"partialButton\":\"ThKam\",\"filtersContainer\":\"JIp3h\"};"],"names":["namespace","FilterActions","props","className","active","DivButton","onClick","onClickReset","Text","phrase","onClickApply","defaultProps","FilterButton","state","currentFilterState","filter","id","isDropdownFilter","type","name","label","setLabel","showDropdown","setShowDropdown","draftState","setDraftState","onSelectItem","applyFilter","newState","FilterHelper","appLink","selection","FilterComponent","customComponent","caretClass","hideCaret","customWidthClass","Dropdown","onToggle","isShowing","show","variant","disabled","icon","SvgContainer","svgName","labelPrefix","defaultOption","options","find","o","StateHelper","getSetStateByKey","setState","key","callback","data","fn","FunctionHelper","getTotalActiveFilters","currentState","Object","keys","reduce","acc","MoreFiltersButton","moreFilters","totalActiveFilters","setTotalActiveFilters","currentFilterStateKey","map","join","filters","baseClass","e","stopPropagation","isOnMoreFilters","filterId","f","TagWidgetItem","colorClass","selectedItems","TagItem","tag","tagClass","TagFilter","selections","unappliedOptions","opt","onClickOption","option","nextFilterState","indexOfItem","i","toString","newItems","slice","length","concat","collection","isFetching","DynamicWidget","childComponent","staticChildren","Array","fill","component","PartialTagItem","position","partialLoadingComponent","ResetButton","params","currentQueryParam","query","alignLeft","SearchFilters","queryParams","hideHeading","isFetchingOptions","constantIndices","mainFilters","dispatch","ObjectHelper","payload","analyticsOptions","indices","ArrayHelper","_hasNewSearch","mainFiltersWithoutTags","tagFilter","value","hideDivider","hideResetButton","alignResetButtonLeft","classNames","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6450],{16450:(t,e,n)=>{n.d(e,{e:()=>k,Q:()=>A});var i=n(32735),a=n(91967),o=n(82182),r=n(75896),l=n(1048),s=n(49985),c=n(88513),u=n(29420),d=n(43872),f=n(16930),m=n(31069),g=n(10841),p=n(81514),h=n(65294),v=n(10038),y=n(5859),E=n(49542),b=function(t,e,n){return function(){t.container.current&&(t.container.current.style.transition=""),e({type:g.n.Resize,payload:{elementRefs:t,mediaQuery:n}})}},P=function(t){return function(){t.current&&(t.current.style.transition="transform .4s ease-in-out")}},O=function(t,e,n,i,a){return function(o){var r=o.clientX,l=i;l||(l=Object.assign(Object.assign({},e),{initialMouseX:r}),a(l),t.current.style.transition=""),n({type:g.n.Drag,payload:{widgetSnapshot:l,currentMouseX:r}})}},N=function(t,e){return function(){t.current.style.transition="transform .4s ease-in-out",e(null)}},S=n(14244);const B={itemSpacing:"fDc_6",header:"WMgSZ",mobileScroll:"aLSzv",leftGradient:"YheD1",leftGradientNoPadding:"Vl2_g",leftButton:"ISepF",leftButtonNoPadding:"N4rAS",rightGradient:"i9XEE",rightGradientNoPadding:"APhNv",rightButton:"OxM84",rightButtonNoPadding:"nmSQo"};function L(t){return function(t){if(Array.isArray(t))return R(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||C(t)||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 j(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,a,o,r,l=[],s=!0,c=!1;try{if(o=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;s=!1}else for(;!(s=(i=o.call(n)).done)&&(l.push(i.value),l.length!==e);s=!0);}catch(t){c=!0,a=t}finally{try{if(!s&&null!=n.return&&(r=n.return(),Object(r)!==r))return}finally{if(c)throw a}}return l}}(t,e)||C(t,e)||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 C(t,e){if(t){if("string"==typeof t)return R(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?R(t,e):void 0}}function R(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=Array(e);n<e;n++)i[n]=t[n];return i}function k(t){var e=t.childComponent,n=t.staticChildren,y=t.getWidgetItemAnalyticsData,C=void 0===y?function(){}:y,R=j(i.useReducer(S.E,S.C),2),k=R[0],w=R[1],x=j(i.useState(null),2),D=x[0],M=x[1],G={container:i.useRef(null),firstElement:i.useRef(null),lastElement:i.useRef(null)},I=(0,p.V)(),Q=o.V.isTabletOrMobile(),X=(0,u.T)({type:"dynamic",state:k,containerRef:G.container,mediaQuery:I}),F=X.dynamicAttributes,W=X.focusNext,_=X.focusPrev,T=X.onFocusWidget,V=X.onBlurWidget;(0,v.H)(b(G,w,I),P(G.container),[I]);var z=(0,h.Y)({prevent:!t.lazyLoad}),U=z.ref,Y=z.inView,q=t.collection;if(!t.collection&&a.q.isFunction(t.fetch)){var H=t.fetch(Y);q=H.data}i.useEffect((function(){q&&!l.t.isEmpty(q)&&w({type:g.n.Init,payload:{elementRefs:G,mediaQuery:I}})}),[q]);var Z=i.useMemo((function(){var a,o;if(q){var l=null!==(a=null==n?void 0:n.filter((function(t){return"start"===t.position})))&&void 0!==a?a:[],s=null!==(o=null==n?void 0:n.filter((function(t){return"end"===t.position})))&&void 0!==o?o:[],c=q.map((function(n,a){var o;n===r.m.first(q)&&(null==l?void 0:l.length)&&(o=G.firstElement),n!==r.m.last(q)||(null==s?void 0:s.length)||(o=G.lastElement);var c=a+1===q.length;return i.createElement("li",Object.assign({id:n.id,key:n.id,ref:o,onFocus:function(){return T(a)},onBlur:function(){return V()},className:"".concat(B.itemSpacing," ").concat(t.childClassName||""," ").concat(c&&Q?"pe-4":"")},F[n.id]),i.createElement(e,Object.assign({getChildAppLink:t.getChildAppLink,data:n,getSubtitle:t.getSubtitle,analyticsData:Object.assign(Object.assign({itemIndex:a},t.analyticsData),C(n)),analyticsOptions:Object.assign(Object.assign({},null==t?void 0:t.analyticsOptions),E.d.getSliderItemAnalyticsOptions())},t.childComponentProps)))}));return l.length&&(c=[].concat(L(l.map((function(e,n){var a=e.component;return i.createElement("li",{key:"first-widget-component:".concat(n),ref:0===n?G.firstElement:null,className:"".concat(B.itemSpacing," ").concat(t.childClassName||"")},i.createElement(a,null))}))),L(c))),s.length&&(c=[].concat(L(c),L(s.map((function(e,n){var a=e.component;return i.createElement("li",{key:"end-widget-component:".concat(n),ref:n===s.length-1?G.lastElement:null,className:"".concat(B.itemSpacing," ").concat(t.childClassName||"")},i.createElement(a,null))}))))),i.createElement(i.Fragment,null,c)}}),[q,F,k.offset,I].concat(L(t.widgetDataDeps||[])));if(q&&!q.length&&!(null==n?void 0:n.length))return i.createElement(i.Fragment,null);if(!q||l.t.isEmpty(q))return i.createElement("div",{ref:U},i.createElement(A,{partialLoadingComponent:t.partialLoadingComponent,partialLoadingOptions:t.partialLoadingOptions}));var $=function(e){return Object.assign(Object.assign({},t.analyticsData),{id:t.id,name:t.heading,direction:e===g.n.Next?"right":"left"})},J=Q||t.hideButtons;return i.createElement("div",{className:"".concat(t.noNegativePadding?"":"mx-n4")},i.createElement("div",{className:"px-4 ".concat(B.header)},i.createElement(c.B,{name:t.heading,description:t.description,appLink:t.headingAppLink,showSeeMoreLink:!!t.headingAppLink})),i.createElement("div",{className:"position-relative"},i.createElement("div",{className:"".concat(t.noNegativePadding?"":"px-4"," py-3 my-n3 position-relative ").concat(Q?B.mobileScroll:"overflow-hidden-x")},i.createElement("div",{className:"position-relative ".concat(t.hideButtons?"overflow-hidden-x":"")},!J&&i.createElement(f.W,{direction:f.f.Left,onClick:function(){_(),w({type:g.n.Previous}),s.k.logUserAction($(g.n.Previous),E.d.getSliderAnalyticsOptions())},leftButtonClassName:"".concat(B.leftButton," ").concat(t.noNegativePadding?B.leftButtonNoPadding:""),leftGradientClassName:"".concat(B.leftGradient," ").concat(t.noNegativePadding?B.leftGradientNoPadding:""),hide:k.hideLeftButton,useGradientBackdrop:!0}),i.createElement(d.V,{position:k.offset,positionType:m.C.Pixels,onDrag:O(G.container,k,w,D,M),onDragEnd:N(G.container,M),ref:G.container},Z),!J&&i.createElement(f.W,{direction:f.f.Right,onClick:function(){W(),w({type:g.n.Next}),s.k.logUserAction($(g.n.Next),E.d.getSliderAnalyticsOptions())},hide:k.hideRightButton,rightButtonClassName:"".concat(B.rightButton," ").concat(t.noNegativePadding?B.rightButtonNoPadding:""),rightGradientClassName:"".concat(B.rightGradient," ").concat(t.noNegativePadding?B.rightGradientNoPadding:""),useGradientBackdrop:!0})))))}k.defaultProps={heading:"",description:"",childComponentProps:{}};var A=function(t){var e=t.partialLoadingComponent,n=t.partialLoadingOptions;return i.createElement("div",{className:"d-flex flex-nowrap overflow-hidden"},y.u.getPartialLoadingItems(n).map((function(t,n){return i.createElement(e,{key:n})})))}},14244:(t,e,n)=>{n.d(e,{C:()=>r,E:()=>f});var i=n(86764),a=n(10841);function o(t){return t===i.r.XS?200:t===i.r.SM||t===i.r.MD?350:500}var r={offset:0,containerLeftPosition:null,containerRightPosition:null,firstElementPosition:null,lastElementPosition:null,hideLeftButton:!0,hideRightButton:!0,maxSlideDistance:0,leftOffsetLimit:null},l=function(t){var e=t.elementRefs,n=e.container,i=e.lastElement;if(!(null==n?void 0:n.current)||!(null==i?void 0:i.current))return r;var a=n.current.getBoundingClientRect(),l=a.left,s=a.right,c=l,u=i.current.getBoundingClientRect().right,d=s-u;return Object.assign(Object.assign({},r),{containerLeftPosition:l,containerRightPosition:s,firstElementPosition:c,lastElementPosition:u,hideRightButton:u<s,leftOffsetLimit:d,maxSlideDistance:o(t.mediaQuery)})},s=function(t){var e=l(Object.assign(Object.assign({},t),t.elementRefs));return Object.assign(Object.assign({},e),{maxSlideDistance:o(t.mediaQuery)})},c=function(t){var e=t.firstElementPosition,n=t.lastElementPosition,i=t.maxSlideDistance,a=t.offset,o=t.containerRightPosition,r=n-o>=i?i:n-o;return{firstElementPosition:e-r,lastElementPosition:n-r,offset:a-r,hideRightButton:n-r===o,hideLeftButton:!1}},u=function(t){var e=t.containerLeftPosition,n=t.firstElementPosition,i=t.lastElementPosition,a=t.maxSlideDistance,o=t.offset,r=n+a<=e,l=r?a:Math.abs(o);return{firstElementPosition:n+l,lastElementPosition:i+l,offset:o+l,hideLeftButton:!r||n+l===e,hideRightButton:!1}},d=function(t,e){var n=e.widgetSnapshot,i=e.currentMouseX;if(n.hideLeftButton&&n.hideRightButton)return{};var a=n.initialMouseX-i,o=n.offset-a,r=n.firstElementPosition-a,l=n.lastElementPosition-a,s=!1,c=!1;return r>t.containerLeftPosition&&(o=0,r=t.containerLeftPosition,l=t.lastElementPosition,s=!0),l<=t.containerRightPosition&&(o=t.leftOffsetLimit,r=t.containerLeftPosition-Math.abs(t.leftOffsetLimit),l=n.containerRightPosition,c=!0),{offset:o,firstElementPosition:r,lastElementPosition:l,hideLeftButton:s,hideRightButton:c}};function f(t,e){switch(e.type){case a.n.Init:return Object.assign(Object.assign({},t),l(e.payload));case a.n.Resize:return Object.assign(Object.assign({},t),s(e.payload));case a.n.Next:return Object.assign(Object.assign({},t),c(t));case a.n.Previous:return Object.assign(Object.assign({},t),u(t));case a.n.Drag:return Object.assign(Object.assign({},t),d(t,e.payload));default:return t}}}}]);
2
+ //# sourceMappingURL=6450-8f22c3d427-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/6450-8f22c3d427-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/widgets/dynamic-widget/DynamicWidgetEventHandlers.ts","file:///app/packages/libs/shared/src/components/widgets/dynamic-widget/dynamic-widget.scss","file:///app/packages/libs/shared/src/components/widgets/dynamic-widget/DynamicWidget.tsx","file:///app/packages/libs/shared/src/components/widgets/dynamic-widget/DynamicWidgetReducer.tsx"],"sourcesContent":["import { ReducerActions } from 'libs/common/react/interfaces';\n\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\nimport { SlidingListRefs } from 'libs/shared/interfaces/SlidingListRefs';\n\nimport { DynamicWidgetState } from './DynamicWidgetReducer';\n\ninterface WidgetSnapshot extends DynamicWidgetState {\n initialMouseX: number;\n}\n\n/**\n * Resize events\n */\nexport const getResizeHandler = (\n elementRefs: SlidingListRefs,\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction>>,\n mediaQuery: MediaQueryStrings\n) => () => {\n if (elementRefs.container.current)\n elementRefs.container.current.style.transition = '';\n\n dispatch({\n type: WidgetInteraction.Resize,\n payload: {\n elementRefs,\n mediaQuery\n }\n });\n};\n\nexport const getResizeEndHandler = (containerRef: React.MutableRefObject<HTMLUListElement>) => () => {\n if (containerRef.current)\n containerRef.current.style.transition = 'transform .4s ease-in-out';\n};\n\nexport const getDragHandler = (\n containerRef: React.MutableRefObject<HTMLUListElement>,\n widgetState: DynamicWidgetState,\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction>>,\n widgetSnapshot: WidgetSnapshot,\n setWidgetSnapshot: React.Dispatch<WidgetSnapshot>\n) => (event: React.DragEvent<HTMLUListElement>): void => {\n const mouseX = event.clientX;\n\n let snapshot = widgetSnapshot;\n\n if (!snapshot) {\n snapshot = { ...widgetState, initialMouseX: mouseX };\n setWidgetSnapshot(snapshot);\n containerRef.current.style.transition = '';\n }\n\n dispatch({\n type: WidgetInteraction.Drag,\n payload: {\n widgetSnapshot: snapshot,\n currentMouseX: mouseX\n }\n });\n};\n\nexport const getDragEndHandler = (\n containerRef: React.MutableRefObject<HTMLUListElement>,\n setWidgetSnapshot: React.Dispatch<WidgetSnapshot>\n) => () => {\n containerRef.current.style.transition = 'transform .4s ease-in-out';\n setWidgetSnapshot(null);\n};","// extracted by mini-css-extract-plugin\nexport default {\"itemSpacing\":\"fDc_6\",\"header\":\"WMgSZ\",\"mobileScroll\":\"aLSzv\",\"leftGradient\":\"YheD1\",\"leftGradientNoPadding\":\"Vl2_g\",\"leftButton\":\"ISepF\",\"leftButtonNoPadding\":\"N4rAS\",\"rightGradient\":\"i9XEE\",\"rightGradientNoPadding\":\"APhNv\",\"rightButton\":\"OxM84\",\"rightButtonNoPadding\":\"nmSQo\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { Core } from 'libs/common/core';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { useWidgetKeyboard } from 'libs/shared/components/widgets/hooks/useWidgetKeyboard';\nimport { SlidingListContainer } from 'libs/shared/components/widgets/sliding-list/SlidingListContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { CssMeasurement } from 'libs/shared/enums/CssMeasurement';\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { useResizeListener } from 'libs/shared/hooks/UseResizeListener';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { SlidingListRefs } from 'libs/shared/interfaces/SlidingListRefs';\nimport { PartialLoadingHelper, PartialLoadingOptions } from 'libs/shared/utils/PartialLoadingHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport { getDragEndHandler, getDragHandler, getResizeEndHandler, getResizeHandler } from './DynamicWidgetEventHandlers';\nimport { DynamicWidgetReducer, DynamicWidgetState, initialSliderState } from './DynamicWidgetReducer';\n\nimport styles from './dynamic-widget.scss';\n\ninterface WidgetSnapshot extends DynamicWidgetState {\n initialMouseX: number;\n}\n\ninterface StaticChild {\n position: 'start' | 'end';\n component: React.ElementType;\n}\n\ninterface DynamicWidgetProps {\n id?: string;\n childComponent: React.ElementType;\n childComponentProps?: any;\n partialLoadingComponent: React.ElementType;\n partialLoadingOptions?: PartialLoadingOptions;\n\n widgetDataDeps?: (any)[];\n getChildAppLink?: (data: any) => Core.AppLink;\n\n staticChildren?: StaticChild[];\n collection?: BaseObject[];\n fetch?: (...args: any[]) => any;\n lazyLoad?: boolean;\n\n heading?: string;\n headingAppLink?: Core.AppLink;\n description?: string;\n getSubtitle?: (data: any) => string\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n getWidgetItemAnalyticsData?: (data: any) => HashObject;\n hideButtons?: boolean;\n childClassName?: string;\n // set to true if the widget get cut off by the container\n noNegativePadding?: boolean;\n}\n\nDynamicWidget.defaultProps = {\n heading: '',\n description: '',\n childComponentProps: {}\n};\n\nexport function DynamicWidget(props: DynamicWidgetProps): JSX.Element {\n const { childComponent: WidgetItemComponent, staticChildren, getWidgetItemAnalyticsData = () => {} } = props;\n\n const [ state, dispatch ] = React.useReducer(DynamicWidgetReducer, initialSliderState);\n\n // A snapshot of the widget state is captured on the very first `Drag` event as a point of reference\n const [ widgetSnapshot, setWidgetSnapshot ] = React.useState<WidgetSnapshot>(null);\n\n const elementRefs: SlidingListRefs = {\n container: React.useRef(null),\n firstElement: React.useRef(null),\n lastElement: React.useRef(null)\n };\n\n const mediaQuery = useGetMediaQueryString();\n const isTouchScreen = UserAgentHelper.isTabletOrMobile();\n \n const { dynamicAttributes, focusNext, focusPrev, onFocusWidget, onBlurWidget } = useWidgetKeyboard({ type: 'dynamic', state, containerRef: elementRefs.container, mediaQuery });\n\n useResizeListener(\n getResizeHandler(elementRefs, dispatch, mediaQuery),\n getResizeEndHandler(elementRefs.container),\n [mediaQuery]\n );\n\n const { ref, inView } = useLazyLoad({ prevent: !props.lazyLoad });\n\n let widgetData = props.collection;\n\n if (!props.collection && FunctionHelper.isFunction(props.fetch)) {\n const request = props.fetch(inView);\n widgetData = request.data;\n }\n\n /**\n * Once the widget data has been set, we can initialize the reducer. This is because\n * the reducer depends on the refs being set, but they don't get set until the markup has been loaded.\n */\n React.useEffect(() => {\n if (!widgetData || ObjectHelper.isEmpty(widgetData))\n return;\n\n dispatch({\n type: WidgetInteraction.Init,\n payload: {\n elementRefs,\n mediaQuery\n }\n });\n }, [widgetData]);\n\n function getWidgetItems(): JSX.Element {\n if (!widgetData)\n return;\n\n const firstChildren = staticChildren?.filter(child => child.position === 'start') ?? [];\n const lastChildren = staticChildren?.filter(child => child.position === 'end') ?? [];\n\n let items = widgetData.map((widgetItem, index) => {\n let itemRef: React.MutableRefObject<HTMLLIElement>;\n\n if (widgetItem === ArrayHelper.first(widgetData) && firstChildren?.length)\n itemRef = elementRefs.firstElement;\n\n if (widgetItem === ArrayHelper.last(widgetData) && !lastChildren?.length)\n itemRef = elementRefs.lastElement;\n\n const isLast = index + 1 === widgetData.length;\n\n return (\n <li\n id={widgetItem.id}\n key={widgetItem.id}\n ref={itemRef}\n onFocus={() => onFocusWidget(index)}\n onBlur={() => onBlurWidget()}\n className={`${styles.itemSpacing} ${props.childClassName || ''} ${(isLast && isTouchScreen) ? 'pe-4' : ''}`}\n {...dynamicAttributes[widgetItem.id]}\n >\n <WidgetItemComponent\n getChildAppLink={props.getChildAppLink}\n data={widgetItem}\n getSubtitle={props.getSubtitle}\n analyticsData={{\n itemIndex: index,\n ...props.analyticsData,\n ...getWidgetItemAnalyticsData(widgetItem)\n }}\n analyticsOptions={{ ...props?.analyticsOptions, ...WidgetHelper.getSliderItemAnalyticsOptions() }}\n {...props.childComponentProps}\n />\n </li>\n );\n });\n\n if (firstChildren.length) {\n items = [\n ...firstChildren.map((child, i) => {\n const Component = child.component;\n\n return (\n <li\n key={`first-widget-component:${i}`}\n ref={i === 0 ? elementRefs.firstElement : null}\n className={`${styles.itemSpacing} ${props.childClassName || ''}`}\n >\n <Component />\n </li>\n );\n }),\n ...items\n ];\n }\n\n if (lastChildren.length) {\n items = [\n ...items,\n ...lastChildren.map((child, i) => {\n const Component = child.component;\n\n return (\n <li\n key={`end-widget-component:${i}`}\n ref={i === lastChildren.length - 1 ? elementRefs.lastElement : null}\n className={`${styles.itemSpacing} ${props.childClassName || ''}`}\n >\n <Component />\n </li>\n );\n })\n ];\n }\n\n return <>{items}</>;\n }\n const widgetItems = React.useMemo(getWidgetItems, [\n widgetData, dynamicAttributes, state.offset, mediaQuery, ...props.widgetDataDeps || []\n ]);\n\n if (widgetData && !widgetData.length && !staticChildren?.length)\n return <></>;\n\n if (!widgetData || ObjectHelper.isEmpty(widgetData)) {\n return (\n <div ref={ref}>\n <PartialDynamicWidget\n partialLoadingComponent={props.partialLoadingComponent}\n partialLoadingOptions={props.partialLoadingOptions}\n />\n </div>\n );\n }\n\n const getSliderAnalyticsData = (type: WidgetInteraction) => ({\n ...props.analyticsData,\n id: props.id,\n name: props.heading,\n direction: type === WidgetInteraction.Next ? 'right' : 'left'\n });\n\n const hideButtons = isTouchScreen || props.hideButtons;\n\n return (\n <div className={`${props.noNegativePadding ? '' : 'mx-n4'}`}>\n <div className={`px-4 ${styles.header}`}>\n <WidgetHeader\n name={props.heading}\n description={props.description}\n appLink={props.headingAppLink}\n showSeeMoreLink={!!props.headingAppLink}\n />\n </div>\n\n <div className='position-relative'>\n <div className={`${props.noNegativePadding ? '' : 'px-4' } py-3 my-n3 position-relative ${isTouchScreen ? styles.mobileScroll : 'overflow-hidden-x'}`}>\n <div className={`position-relative ${props.hideButtons ? 'overflow-hidden-x' : ''}`}>\n {!hideButtons && (\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => {\n focusPrev();\n\n dispatch({ type: WidgetInteraction.Previous });\n AnalyticsHelper.logUserAction(\n getSliderAnalyticsData(WidgetInteraction.Previous),\n WidgetHelper.getSliderAnalyticsOptions()\n );\n }}\n leftButtonClassName={`${styles.leftButton} ${props.noNegativePadding ? styles.leftButtonNoPadding : ''}`}\n leftGradientClassName={`${styles.leftGradient} ${props.noNegativePadding ? styles.leftGradientNoPadding : ''}`}\n hide={state.hideLeftButton}\n useGradientBackdrop\n />\n )}\n\n <SlidingListContainer\n position={state.offset}\n positionType={CssMeasurement.Pixels}\n onDrag={getDragHandler(elementRefs.container, state, dispatch, widgetSnapshot, setWidgetSnapshot)}\n onDragEnd={getDragEndHandler(elementRefs.container, setWidgetSnapshot)}\n ref={elementRefs.container}\n >\n {widgetItems}\n </SlidingListContainer>\n\n {!hideButtons && (\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => {\n focusNext();\n\n dispatch({ type: WidgetInteraction.Next });\n AnalyticsHelper.logUserAction(\n getSliderAnalyticsData(WidgetInteraction.Next),\n WidgetHelper.getSliderAnalyticsOptions()\n );\n }}\n hide={state.hideRightButton}\n rightButtonClassName={`${styles.rightButton} ${props.noNegativePadding ? styles.rightButtonNoPadding : ''}`}\n rightGradientClassName={`${styles.rightGradient} ${props.noNegativePadding ? styles.rightGradientNoPadding : ''}`}\n useGradientBackdrop\n />\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\ntype PartialDynamicWidgetProps = Pick<DynamicWidgetProps, 'partialLoadingComponent'> & {\n partialLoadingOptions?: PartialLoadingOptions;\n}\n\nexport const PartialDynamicWidget = (props: PartialDynamicWidgetProps) => {\n const { partialLoadingComponent: Component, partialLoadingOptions } = props;\n\n return (\n <div className='d-flex flex-nowrap overflow-hidden'>\n {PartialLoadingHelper.getPartialLoadingItems(partialLoadingOptions).map((item, idx) => <Component key={idx} />)}\n </div>\n );\n};","import { ReducerActions } from 'libs/common/react/interfaces';\n\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\nimport { SlidingListRefs } from 'libs/shared/interfaces/SlidingListRefs';\n\nexport interface DynamicWidgetState {\n /**\n * X-position argument for `translate3d()` to determine where the slider is positioned.\n */\n offset: number;\n\n /**\n * Left position of the slider container.\n * Set on `Init`, and updated on `Resize`.\n * Used for calculations on `Previous`, or for dragging to the right.\n */\n containerLeftPosition: number;\n\n /**\n * Right position of the slider container.\n * Set on Init, and updated on Resize.\n * Used for calculations on `Next`, or for dragging to the left.\n */\n containerRightPosition: number;\n\n /**\n * The position of the left edge of the very first element in the slider list.\n * Initially this will always be equal to `containerLeftPosition`.\n */\n firstElementPosition: number;\n\n /**\n * The position of the right edge of the very last element in the slider list.\n */\n lastElementPosition: number;\n\n /**\n * True when `firstElementPosition === containerLeftPosition`.\n */\n hideLeftButton: boolean;\n\n /**\n * True when `lastElementPositon === containerRightPosition`.\n */\n hideRightButton: boolean;\n\n /**\n * When clicking left or right, this number is the max distance in pixels that the slider.\n * will move.\n * Default 300.\n * Can only be set once on `Init` action.\n */\n maxSlideDistance: number;\n\n /**\n * This is calculated on `Init`, and is the lowest number the `offset` state can ever be.\n * This is needed for the `Drag` event, as the `Drag` event can only calculate whole numbers.\n * 99% of the time, the leftOffsetLimit is a very specific decimal number, so we calculate it\n * on `Init` and reference it on `Drag` events when necessary.\n */\n leftOffsetLimit: number;\n}\n\nfunction getMaxSlideDistance(mediaQuery: MediaQueryStrings): number {\n if (mediaQuery === MediaQueryStrings.XS)\n return 200;\n\n if (mediaQuery === MediaQueryStrings.SM || mediaQuery === MediaQueryStrings.MD)\n return 350;\n\n return 500;\n}\n\n/**\n * `null` values are initialized in the `Init` action. This is dispatched\n * later, because it uses JQuery elements that aren't immediately available\n * when `useReducer` is called.\n */\nexport const initialSliderState: DynamicWidgetState = {\n offset: 0,\n containerLeftPosition: null,\n containerRightPosition: null,\n firstElementPosition: null,\n lastElementPosition: null,\n hideLeftButton: true,\n hideRightButton: true,\n maxSlideDistance: 0,\n leftOffsetLimit: null\n};\n\ninterface InitPayload {\n elementRefs: SlidingListRefs;\n mediaQuery: MediaQueryStrings;\n}\n\nconst onInit = (payload: InitPayload): DynamicWidgetState => {\n const { container, lastElement } = payload.elementRefs;\n\n if (!container?.current || !lastElement?.current)\n return initialSliderState;\n\n const containerRect = container.current.getBoundingClientRect();\n const containerLeftPosition = containerRect.left;\n const containerRightPosition = containerRect.right;\n\n const firstElementPosition = containerLeftPosition;\n const lastElementPosition = lastElement.current.getBoundingClientRect().right;\n const leftOffsetLimit = containerRightPosition - lastElementPosition;\n\n return {\n ...initialSliderState,\n containerLeftPosition,\n containerRightPosition,\n firstElementPosition,\n lastElementPosition,\n hideRightButton: lastElementPosition < containerRightPosition,\n leftOffsetLimit,\n maxSlideDistance: getMaxSlideDistance(payload.mediaQuery)\n };\n};\n\ninterface ResizePayload {\n elementRefs: SlidingListRefs;\n mediaQuery: MediaQueryStrings;\n}\n\nconst onResize = (payload: ResizePayload): DynamicWidgetState => {\n const initialState = onInit({\n ...payload,\n ...payload.elementRefs\n });\n\n return {\n ...initialState,\n maxSlideDistance: getMaxSlideDistance(payload.mediaQuery)\n };\n};\n\nconst onNext = (prevState: DynamicWidgetState): Partial<DynamicWidgetState> => {\n const { firstElementPosition, lastElementPosition, maxSlideDistance, offset, containerRightPosition } = prevState;\n\n /**\n * The distance in pixels that the slider will move along the x-axis.\n * This will be the `maxSlideDistance` constant value, or if that value is too large we calculate\n * the remaining overflowing space and only slide by that amount.\n */\n const slideDistance = lastElementPosition - containerRightPosition >= maxSlideDistance\n ? maxSlideDistance\n : lastElementPosition - containerRightPosition;\n\n return {\n firstElementPosition: firstElementPosition - slideDistance,\n lastElementPosition: lastElementPosition - slideDistance,\n offset: offset - slideDistance,\n hideRightButton: lastElementPosition - slideDistance === containerRightPosition,\n hideLeftButton: false\n };\n};\n\nconst onPrevious = (prevState: DynamicWidgetState): Partial<DynamicWidgetState> => {\n const { containerLeftPosition, firstElementPosition, lastElementPosition, maxSlideDistance, offset } = prevState;\n\n const fullSlide = firstElementPosition + maxSlideDistance <= containerLeftPosition;\n const slideDistance = fullSlide ? maxSlideDistance : Math.abs(offset);\n\n return {\n firstElementPosition: firstElementPosition + slideDistance,\n lastElementPosition: lastElementPosition + slideDistance,\n offset: offset + slideDistance,\n hideLeftButton: !fullSlide || firstElementPosition + slideDistance === containerLeftPosition,\n hideRightButton: false\n };\n};\n\nconst onDrag = (prevState: DynamicWidgetState, payload: any): Partial<DynamicWidgetState> => {\n const { widgetSnapshot, currentMouseX } = payload;\n\n // Disable dragging if the slider isn't long enough\n if (widgetSnapshot.hideLeftButton && widgetSnapshot.hideRightButton)\n return {};\n\n // The distance from the initial `MouseDown` event x-coordinate, to the present x-coordinate\n const dragDistance = widgetSnapshot.initialMouseX - currentMouseX;\n\n let offset = widgetSnapshot.offset - dragDistance;\n let firstElementPosition = widgetSnapshot.firstElementPosition - dragDistance;\n let lastElementPosition = widgetSnapshot.lastElementPosition - dragDistance;\n let hideLeftButton = false;\n let hideRightButton = false;\n\n if (firstElementPosition > prevState.containerLeftPosition) {\n offset = 0;\n firstElementPosition = prevState.containerLeftPosition;\n lastElementPosition = prevState.lastElementPosition;\n hideLeftButton = true;\n }\n\n if (lastElementPosition <= prevState.containerRightPosition) {\n offset = prevState.leftOffsetLimit;\n firstElementPosition = prevState.containerLeftPosition - Math.abs(prevState.leftOffsetLimit);\n lastElementPosition = widgetSnapshot.containerRightPosition;\n hideRightButton = true;\n }\n\n return {\n offset,\n firstElementPosition,\n lastElementPosition,\n hideLeftButton,\n hideRightButton\n };\n};\n\nexport function DynamicWidgetReducer(\n prevState: DynamicWidgetState,\n action: ReducerActions<WidgetInteraction>\n): DynamicWidgetState {\n switch (action.type) {\n case WidgetInteraction.Init:\n return {\n ...prevState,\n ...onInit(action.payload)\n };\n\n case WidgetInteraction.Resize:\n return {\n ...prevState,\n ...onResize(action.payload)\n };\n\n case WidgetInteraction.Next:\n return {\n ...prevState,\n ...onNext(prevState)\n };\n\n case WidgetInteraction.Previous:\n return {\n ...prevState,\n ...onPrevious(prevState)\n };\n\n case WidgetInteraction.Drag:\n return {\n ...prevState,\n ...onDrag(prevState, action.payload)\n };\n\n default:\n return prevState;\n }\n}"],"names":["getResizeHandler","elementRefs","dispatch","mediaQuery","container","current","style","transition","type","WidgetInteraction","payload","getResizeEndHandler","containerRef","getDragHandler","widgetState","widgetSnapshot","setWidgetSnapshot","event","mouseX","clientX","snapshot","initialMouseX","currentMouseX","getDragEndHandler","DynamicWidget","props","WidgetItemComponent","childComponent","staticChildren","getWidgetItemAnalyticsData","DynamicWidgetReducer","state","firstElement","lastElement","isTouchScreen","UserAgentHelper","useWidgetKeyboard","dynamicAttributes","focusNext","focusPrev","onFocusWidget","onBlurWidget","prevent","lazyLoad","ref","inView","widgetData","collection","FunctionHelper","fetch","request","data","ObjectHelper","widgetItems","firstChildren","filter","child","position","lastChildren","items","map","widgetItem","index","itemRef","ArrayHelper","length","isLast","id","key","onFocus","onBlur","className","childClassName","getChildAppLink","getSubtitle","analyticsData","itemIndex","analyticsOptions","WidgetHelper","childComponentProps","i","Component","component","offset","widgetDataDeps","PartialDynamicWidget","partialLoadingComponent","partialLoadingOptions","getSliderAnalyticsData","name","heading","direction","hideButtons","noNegativePadding","WidgetHeader","description","appLink","headingAppLink","showSeeMoreLink","WidgetButton","W","onClick","AnalyticsHelper","leftButtonClassName","leftGradientClassName","hide","hideLeftButton","useGradientBackdrop","SlidingListContainer","positionType","CssMeasurement","C","onDrag","onDragEnd","hideRightButton","rightButtonClassName","rightGradientClassName","defaultProps","PartialLoadingHelper","item","idx","getMaxSlideDistance","initialSliderState","containerLeftPosition","containerRightPosition","firstElementPosition","lastElementPosition","maxSlideDistance","leftOffsetLimit","onInit","containerRect","getBoundingClientRect","left","right","onResize","initialState","onNext","prevState","slideDistance","onPrevious","fullSlide","Math","abs","dragDistance","action"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6919],{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}))}))))}},65163:(e,t,a)=>{a.d(t,{QL:()=>n.Q,eb:()=>n.e});var n=a(16450);a(14244)},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=6919-afa7705c12-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/2121-aec96064d1-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/ClassNameHelper.ts","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/coming-soon-tag.scss","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/ComingSoonTag.tsx","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/generic-calendar-date.scss","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/GenericCalendarDate.tsx","file:///app/packages/libs/shared/src/components/widgets/curated-widgets/templates/cover-fixed-pill-list-large/CoverFixedPillListLargeWidgetTemplate.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/SubjectStatsWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/curated-widgets/templates/stats-cover-fixed-pill-list-large/StatsCoverFixedPillListLargeWidgetTemplate.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/subject-stats-badge/subject-stats-badge.scss","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/subject-stats-badge/SubjectStatsBadge.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/CoverPill.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/PartialSubjectWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/SubjectWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/EditSubjectsWidgetLink.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/AllSubjectsWidgetLink.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/subject-stats-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/cover-pill.scss"],"sourcesContent":["type ValidParams = string | boolean | undefined | null;\n\n/**\n * Helper to append classNames.\n * Filters any falsy values before returning classNames.\n * \n * @param ...classNames Array<string | boolean | undefined | null>\n * @returns string\n */\nexport function classNames(...classNames: Array<ValidParams>): string {\n if (!classNames.length) return '';\n\n const filteredClassNames = classNames.filter(className => !!className);\n \n if (!filteredClassNames.length) return '';\n \n return filteredClassNames.join(' ');\n}","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"XRj8d\",\"tooltip\":\"X6mLk\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './coming-soon-tag.scss';\n\nconst namespace = 'specialEventCalendar.comingSoonTag';\n\ninterface ComingSoonProps {\n className?: string;\n onlyIcon?: boolean;\n}\n\nexport function ComingSoonTag(props: ComingSoonProps): JSX.Element {\n return (\n <Tooltip title={LanguageService.getPhrase(namespace, 'tooltip')} spanHackClassName={`d-block ${styles.tooltip}`} spanHack>\n <div className={`d-flex text-dark align-items-center ${styles.tag} ${props.className}`}>\n <SvgContainer svgName={cvSvgLibrary.Timer} />\n {!props.onlyIcon && LanguageService.getPhrase(namespace, 'comingSoon')}\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dateItem\":\"I3SBm\",\"label\":\"PRORs\",\"body\":\"RfiM_\",\"bodyDay\":\"ZOVny\",\"bodyRange\":\"vYhXN\",\"bodyMonth\":\"mYslO\",\"month\":\"EPkkQ\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './generic-calendar-date.scss';\n\nexport interface GenericCalendarDateProps {\n label?: string;\n body: {\n type: 'month' | 'range' | 'day';\n text: string;\n };\n month?: string;\n getAppLink?: () => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n className?: string;\n theme?: CalendarTheme;\n}\n\nexport function GenericCalendarDate(props: GenericCalendarDateProps): JSX.Element {\n function getBodyClass(): string {\n switch (props.body.type) {\n case 'range':\n return styles.bodyRange;\n case 'day':\n return styles.bodyDay;\n case 'month':\n return styles.bodyMonth;\n }\n }\n\n return (\n <AppLink\n appLink={props.getAppLink?.()}\n className={`text-decoration-none text-center bg-white text-dark border border-3 ${props.theme?.border} rounded-3 d-block fw-semibold ${props.className}`}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n <div className={`position-relative ${styles.dateItem}`}>\n <div className={`${props.theme?.background} py-1 ${styles.label} d-flex align-items-center justify-content-center`}>\n {props.label ? props.label : <>&nbsp;</>}\n </div>\n <div className={`${getBodyClass()} ${styles.body} my-2`}>\n {props.body.text}\n </div>\n <div className={`mb-0 ${styles.month}`}>\n {props.month}\n </div>\n </div>\n </AppLink>\n );\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { SubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/SubjectWidgetItem';\nimport { Classification } from 'libs/shared/interfaces';\n\nexport interface CoverFixedPillListLargeWidgetTemplateProps {\n name: string;\n description: string;\n hasTableOfContents: boolean;\n \n analyticsData?: HashObject;\n\n content: Classification[];\n appLinks: {\n classification: (classification: Classification | null) => Core.AppLink;\n };\n settings: {\n hasTopicDirectories: boolean\n }\n}\n\nexport function CoverFixedPillListLargeWidgetTemplate(props: CoverFixedPillListLargeWidgetTemplateProps): JSX.Element {\n return (\n <>\n <WidgetHeader name={props.name} description={props.description} />\n <Row className='mb-n2'>\n {props.content.map(c => {\n return (\n <Col className={`position-relative pb-2`} key={c.id} xs={12} sm={6} lg={props.hasTableOfContents ? 6 : 4} xl={4}>\n <SubjectWidgetItem\n data={c}\n getChildAppLink={(c: Classification) => props.appLinks?.classification?.(c)}\n analyticsData={props.analyticsData}\n highlightOnHover={props.settings?.hasTopicDirectories}\n isLarge\n />\n </Col>\n );\n })}\n </Row>\n </>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { ClassificationBadgeType, SubjectStatsBadge } from './subject-stats-badge/SubjectStatsBadge';\n\nimport styles from './subject-stats-widget-item.scss';\n\nconst namespace = 'shared.subjectStatsWidgetItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SubjectStatsWidgetItemProps {\n classification: Classification;\n getAppLink: (classification: Classification) => Core.AppLink;\n onToggleFollowClassification: (classification: Classification, location: LocationContext) => void;\n canFollowTopics: boolean;\n hideCounts: boolean;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function SubjectStatsWidgetItem(props: SubjectStatsWidgetItemProps): JSX.Element {\n const [ hasLoadedImage, setHasLoadedImage ] = React.useState(false);\n const isComingSoon = props.classification?.status === ClassificationStatus.ComingSoon;\n const isFollowing = TopicsHelper.isFollowing(props.classification);\n\n const {\n dashboardNewVideosCount,\n childDashboardNewVideoCount,\n dashboardResourceCount,\n childDashboardResourceCount,\n dashboardVideoCount,\n childDashboardVideoCount,\n childClassificationCount\n } = TopicsHelper.getCounts(props.classification);\n\n const videoCount = dashboardVideoCount + childDashboardVideoCount;\n const resourceCount = dashboardResourceCount + childDashboardResourceCount;\n const newVideoCount = dashboardNewVideosCount + childDashboardNewVideoCount;\n\n function onToggleFollowClassification(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n e.preventDefault();\n\n if (!props.canFollowTopics)\n return;\n\n props.onToggleFollowClassification?.(props.classification, LocationContext.SubjectStatsWidgetItem);\n }\n\n function getSubtext(): string {\n if (props.classification.status === ClassificationStatus.ComingSoon || props.hideCounts)\n return '';\n\n let text = '';\n\n if (videoCount)\n text += `${getPhrase('videos', { smartCount: videoCount })} `;\n\n if (resourceCount)\n text += ` • ${getPhrase('resources', { smartCount: resourceCount })}`;\n\n if (TopicsHelper.isTopLevelTopic(props.classification) && childClassificationCount > 0) {\n if (!text)\n return getPhrase('topics', { smartCount: childClassificationCount });\n\n text = `${getPhrase('topics', { smartCount: childClassificationCount })} • ` + text;\n }\n\n return text;\n }\n\n function getBadgeType(): ClassificationBadgeType {\n if (props.classification.status === ClassificationStatus.ComingSoon)\n return 'coming-soon';\n\n const { datePublished } = props.classification;\n if (!!datePublished && DateHelper.timeSince(datePublished, 'day') <= 30)\n return 'new-topic';\n\n if (newVideoCount > 0 && !props.hideCounts)\n return 'new-videos';\n\n return null;\n }\n\n const subText = getSubtext();\n\n return (\n <AppLink\n className={`d-flex no-decoration rounded ${styles.container}`}\n appLink={props.getAppLink?.(props.classification)}\n analyticsData={{\n ...props.analyticsData,\n id: props.classification?.id,\n name: props.classification?.name,\n presentationId: props.classification.presentationId,\n comingSoon: !!isComingSoon,\n videoCount,\n resourceCount,\n newVideoCount,\n datePublished: props.classification.datePublished,\n countsHidden: !!props.hideCounts\n }}\n analyticsOptions={{\n location: LocationContext.SubjectStatsWidgetItem,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: EntityType.Classification,\n descriptor: ClickDescriptor.Cover\n }}\n >\n {!hasLoadedImage && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={`ms-2 rounded-end-lg ${styles.fallbackImage}`}\n />\n )}\n <div className={`${styles.cover} me-2 rounded overflow-hidden`}>\n <BaseImage\n data={props.classification.cover}\n imageOptions={{ size: ImageSize.Medium }}\n imageClassName={isComingSoon ? 'opacity-50' : ''}\n onLoad={() => setHasLoadedImage(true)}\n >\n {props.canFollowTopics && (\n <DivButton\n onClick={onToggleFollowClassification}\n className={`\n align-items-center justify-content-center cursor-pointer\n ${styles.bellContainer} ${isFollowing ? styles.followed : ''}\n `}\n >\n <SvgContainer\n svgName={cvSvgLibrary.BellFilled}\n className={`svg-container ${styles.bell}`}\n />\n <SvgContainer\n svgName={cvSvgLibrary.Bell}\n className={`svg-container ${styles.bellOutline}`}\n />\n </DivButton>\n )}\n </BaseImage>\n\n </div>\n <div>\n <h3 className={`h6 mb-0 clamp-2 mt-1`}>\n {props.classification.name}\n </h3>\n\n {!!subText && (\n <p className={`mb-0 ${styles.subText}`}>\n {subText}\n </p>\n )}\n\n <SubjectStatsBadge badgeType={getBadgeType()} newVideoCount={newVideoCount} />\n </div>\n </AppLink>\n );\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { SubjectStatsWidgetItem } from 'libs/shared/components/widgets/items/subject-stats-widget-item/SubjectStatsWidgetItem';\nimport { Classification } from 'libs/shared/interfaces';\n\nexport interface StatsCoverFixedPillListLargeWidgetTemplateProps {\n id: string;\n name: string;\n description: string;\n content: Classification[];\n analyticsData?: HashObject;\n \n hasTableOfContents: boolean;\n isTertiaryCustomerWithoutExchange: boolean;\n appLinks: {\n classification: (classification: Classification) => Core.AppLink;\n }\n onToggleFollowClassification: (classification: Classification, location: LocationContext) => void;\n}\n\nexport function StatsCoverFixedPillListLargeWidgetTemplate(\n props: StatsCoverFixedPillListLargeWidgetTemplateProps\n): JSX.Element {\n /**\n * For V1 of the release of topic directories, we will not be exposing the following icon.\n * This is because currently following is useless. Once we have implemented an email for when\n * coming soon topics are released, we will enable this.\n */\n // const canFollowTopics = props.hasPermissions(PermissionName.FollowSubjects) && !!props.onToggleFollowClassification;\n\n return (\n <>\n <WidgetHeader name={props.name} description={props.description} />\n <Row className='mb-n2'>\n {props.content.map(c => {\n return (\n <Col className={`position-relative pb-2`} key={c.id} xs={12} sm={6} lg={props.hasTableOfContents ? 6 : 4} xl={4}>\n <SubjectStatsWidgetItem\n classification={c}\n analyticsData={props.analyticsData}\n getAppLink={props.appLinks?.classification}\n onToggleFollowClassification={props.onToggleFollowClassification}\n // canFollowTopics={canFollowTopics}\n canFollowTopics={false}\n\n /**\n * We're currently hiding counts for tertiary customers without the exchange\n * because all counting is done by a background process that can't take the\n * current users' credentials into account. Because about half of our tertiary\n * customers don't have the exchange, and the other half do, and we use exchange\n * content on our tertiary topics, the counts will be higher for non-exchange\n * customers than they really are for them.\n * \n * This is shit and hopefully we can come up with a better solution one day\n * - Josh\n */\n hideCounts={props.isTertiaryCustomerWithoutExchange}\n />\n </Col>\n );\n })}\n </Row>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"isNew\":\"KLRzE\",\"newVideos\":\"xozwy\",\"badge\":\"NWZxu\",\"icon\":\"G9W_I\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './subject-stats-badge.scss';\n\nexport type ClassificationBadgeType = 'coming-soon' | 'new-topic' | 'new-videos';\n\nconst namespace = 'shared.subjectStatsBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SubjectStatsBadgeProps {\n badgeType: ClassificationBadgeType;\n newVideoCount?: number;\n}\n\nexport function SubjectStatsBadge(props: SubjectStatsBadgeProps): JSX.Element {\n function getBadgeClass(): string {\n const baseClass = `fw-semibold d-inline-block rounded-pill px-2 ${styles.badge}`;\n\n switch (props.badgeType) {\n case 'coming-soon':\n return baseClass + ' bg-light ps-1 d-inline-flex align-items-center';\n case 'new-topic':\n return baseClass + ` ${styles.isNew}`;\n case 'new-videos':\n return baseClass + ` ${styles.newVideos}`;\n default:\n return '';\n }\n }\n\n function getBadgeText(): string {\n switch (props.badgeType) {\n case 'coming-soon':\n return getPhrase('comingSoon');\n case 'new-topic':\n return getPhrase('new');\n case 'new-videos':\n return getPhrase('newVideos', { smartCount: props.newVideoCount });\n default:\n return '';\n }\n }\n\n return (\n <div className={getBadgeClass()}>\n {props.badgeType === 'coming-soon' && (\n <SvgContainer\n svgName={cvSvgLibrary.Timer}\n className={`svg-container ${styles.icon}`}\n size={SvgContainerSize.ExtraSmall}\n />\n )}\n\n {getBadgeText()}\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, Classification, Presentation } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './cover-pill.scss';\n\nconst namespace = 'shared.subjectWidgetItem';\n\ninterface NamePanelProps {\n name: string;\n multiline?: boolean;\n subtitle?: string;\n noUnderLine?: boolean;\n newVideosCount?: number;\n}\n\nconst ComingSoonNamePanel = ({ name, multiline, noUnderLine }: NamePanelProps) => {\n let wrapperClassName = `${styles.comingSoonPanel} \n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\n\n let textClassName = '';\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap';\n textClassName += ' text-truncate';\n } else {\n textClassName += ` ${styles.clamped} clamp-2`;\n }\n\n return (\n <div className={wrapperClassName}>\n <small className='text-secondary'><Text namespace={namespace} phrase='comingSoon' /></small>\n <p className={`${noUnderLine ? '' : styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle, noUnderLine, newVideosCount }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${noUnderLine ? '' : styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0';\n } else {\n textClassName += ` ${newVideosCount ? 'clamp-2' : 'clamp-3'} text-start`;\n }\n\n return (\n <div className={wrapperClassName}>\n {subtitle && <div className={`text-secondary clamp-1 ${styles.text}`}>{subtitle}</div>}\n <div className={textClassName} title={name}>{name}</div>\n {!!newVideosCount && (\n <div className={`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${styles.newVideos}`}>\n <Text namespace={namespace} phrase='newVideos' options={{ smartCount: newVideosCount }} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CoverPillWidgetItemProps<T extends BaseObject> {\n data: T;\n getChildAppLink?: (data: T) => Core.AppLink;\n getChildAppLinkOptions?: () => Core.AppLinkOptions;\n isLarge?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n availablePresentations?: Presentation[];\n getSubtitle?: (data: T) => string;\n multiline?: boolean;\n // set to true it will highlight on hover and also remove the hover text underline\n highlightOnHover?: boolean;\n showNewVideosCount?: boolean;\n shouldHighlight?: (data: T) => boolean;\n}\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n coverBgColor?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\n themeColor?: string;\n}\n\nexport function CoverPillWidgetContent(props: CoverPillWidgetContentProps<BaseObject>): JSX.Element {\n const coverUrl = ImageHelper.createUrl(props.coverUrl, { size: props.isLarge ? ImageSize.Medium : ImageSize.Small });\n\n let classification: Classification | undefined = undefined;\n if (MasterTypeHelper.isClassification(props.data)) {\n classification = props.data;\n }\n\n const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle,\n noUnderLine: props.highlightOnHover,\n newVideosCount: props.showNewVideosCount ? classification?.externalMetadata?.childDashboardNewVideoCount : 0\n };\n\n const coverStyle: React.CSSProperties = {\n backgroundImage: coverUrl ? `url('${coverUrl}')` : null,\n backgroundColor: props.coverBgColor\n };\n\n const fallbackCoverBgClassName = getBgColorClass(props.data.name, BG_COLOUR_CLASS_NAMES);\n\n return (\n <div\n className={`${props.themeColor ? styles.hasThemeColor : 'border'} d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''} ${props.highlightOnHover && !props.themeColor ? 'bg-light-blue-hover' : ''}`}\n style={props.themeColor ? { '--themeColor': props.themeColor } as unknown as React.CSSProperties : {}}\n id={`${props.data.id}-${RandomHelper.getRandomInt()}`}\n >\n {props.isSelected && (\n <div className={`${styles.selectedMask} border-2`} />\n )}\n\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\n {props.isSelected && !props.hideCheckmark && (\n <div className={styles.selected}>\n <IconCircle svgName={cvSvgLibrary.Check} svgSize={SvgContainerSize.Large} textVariant='white' variant='green' />\n </div>\n )}\n\n {coverUrl &&\n <div\n className={classNames(\n styles.image,\n props.imageClassName,\n !props.coverBgColor && fallbackCoverBgClassName\n )}\n style={coverStyle}\n />\n }\n {!props.hideFallback && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={props.isLarge ? styles.large : ''}\n />\n )}\n </div>\n\n {props.isComingSoon\n ? <ComingSoonNamePanel {...childProps} />\n : <NormalNamePanel {...childProps} />\n }\n </div>\n );\n}\n\nexport function CoverPillWidgetContentWrapper(props: CoverPillWidgetContentProps<BaseObject>) {\n const appLink = props.getChildAppLink ? props.getChildAppLink(props.data) : null;\n\n return (\n <>\n {appLink ? (\n <AppLink\n className={styles.appLink}\n appLink={appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n appLinkOptions={props.getChildAppLinkOptions?.()}\n >\n <CoverPillWidgetContent {...props} />\n </AppLink>\n ) : (<CoverPillWidgetContent {...props} />)\n }\n </>\n );\n}","import * as React from 'react';\n\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\n\nimport styles from './cover-pill.scss';\n\nexport const PartialSubjectWidgetItem = () => {\n const [width] = React.useState(RandomHelper.getRandomInt(5) + 3 + 'rem');\n\n return (\n <div className={`border d-flex position-relative me-2 ${styles.widgetItem}`}>\n <div className={styles.imagePanel} />\n <div className='px-2' style={{ width }} />\n <div className={styles.partialIcon}>\n <ImageFallback type={ImageFallbackType.Subject} />\n </div>\n </div>\n );\n};\n\nexport const PartialLargeSubjectWidgetItem = () => {\n return (\n <div className={`border d-flex position-relative me-2 ${styles.widgetItem}`}>\n <div className={`${styles.partialLargeImage}`} />\n <div className='px-2' />\n <div className={styles.partialIcon}>\n <ImageFallback type={ImageFallbackType.Subject} extraClasses={styles.partialLargeFallback} />\n </div>\n </div>\n );\n};","import * as React from 'react';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CoverPillWidgetContentWrapper, CoverPillWidgetItemProps } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { TopicsConstants } from 'libs/shared/constants/TopicsConstants';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nfunction usePresentationName(presentationId: string, availablePresentations: Presentation[]): string {\n const showPresentationName = availablePresentations?.length >= TopicsConstants.MULTI_PRESENTATION_THRESHOLD;\n\n if (!showPresentationName) {\n return undefined;\n }\n\n return availablePresentations?.find(p => p.id === presentationId)?.name;\n}\n\nfunction SubjectWidgetItem(props: CoverPillWidgetItemProps<Classification>): JSX.Element {\n const isComingSoon = props.data?.status === ClassificationStatus.ComingSoon;\n const presentationName = usePresentationName(props.data.presentationId, props?.availablePresentations);\n\n const analyticsData = {\n ...props.analyticsData,\n id: props.analyticsData?.id || props.data?.id,\n name: props.data?.name,\n presentationId: props.analyticsData?.presentationId || props.data.presentationId,\n comingSoon: !!isComingSoon\n };\n\n const analyticsOptions = {\n location: LocationContext.ClassificationListItem,\n entity: EntityType.Classification,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Cover\n };\n\n return (\n <CoverPillWidgetContentWrapper\n {...props}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n coverUrl={props.data.cover?.url}\n coverBgColor={props.data?.metadata?.backgroundColor}\n subtitle={props.getSubtitle?.(props.data) || presentationName}\n isComingSoon={isComingSoon}\n themeColor={props.shouldHighlight?.(props.data) ? props.data?.metadata?.backgroundColor ?? '' : ''}\n />\n );\n}\n\nconst Memoized = React.memo(SubjectWidgetItem);\n\nexport { Memoized as SubjectWidgetItem };","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './cover-pill.scss';\n\ninterface EditSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.UserSetting,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function EditSubjectsWidgetLink(props: EditSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.editSubjectsItem} d-flex position-relative px-3 justify-content-center align-items-center`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-preference' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <SvgContainer svgName={cvSvgLibrary.Edit} className='me-2 align-middle d-inline-block svg-container' />\n <p className='h6 align-middle text-truncate'><Text namespace='shared.subjectWidgetItem' phrase='edit' /></p>\n </div>\n </AppLink>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewLogoInverted } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './cover-pill.scss';\n\ninterface AllSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function AllSubjectsWidgetLink(props: AllSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.allSubjectsItem}\n d-flex flex-column position-relative px-2\n align-items-center justify-content-center text-nowrap bg-navy`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-all' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <div className={styles.logoContainer}>\n <ClickViewLogoInverted />\n </div>\n <p className='h6 pt-2 px-3 mb-0'><Text namespace='shared.subjectWidgetItem' phrase='all' /></p>\n </div>\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"wzt8R\",\"bellContainer\":\"X7Jgx\",\"bell\":\"HoKe4\",\"followed\":\"Pdmdk\",\"bellOutline\":\"bEQDk\",\"cover\":\"luOU3\",\"fallbackImage\":\"ReXqz\",\"subText\":\"p0kUV\"};","// extracted by mini-css-extract-plugin\nexport default {\"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\"};"],"names":["classNames","length","filteredClassNames","filter","className","join","namespace","ComingSoonTag","props","Tooltip","title","LanguageService","spanHackClassName","spanHack","SvgContainer","svgName","onlyIcon","GenericCalendarDate","AppLink","appLink","getAppLink","theme","border","analyticsData","analyticsOptions","background","label","body","type","getBodyClass","text","month","CoverFixedPillListLargeWidgetTemplate","name","description","content","map","c","key","id","xs","sm","lg","hasTableOfContents","xl","data","getChildAppLink","appLinks","classification","highlightOnHover","settings","hasTopicDirectories","isLarge","getPhrase","SubjectStatsWidgetItem","hasLoadedImage","setHasLoadedImage","isComingSoon","status","ClassificationStatus","isFollowing","TopicsHelper","dashboardNewVideosCount","childDashboardNewVideoCount","dashboardResourceCount","childDashboardResourceCount","dashboardVideoCount","childDashboardVideoCount","childClassificationCount","videoCount","resourceCount","newVideoCount","subText","hideCounts","smartCount","getSubtext","presentationId","comingSoon","datePublished","countsHidden","location","actionType","entity","descriptor","ImageFallback","extraClasses","BaseImage","cover","imageOptions","size","imageClassName","onLoad","canFollowTopics","DivButton","onClick","e","stopPropagation","preventDefault","onToggleFollowClassification","SubjectStatsBadge","badgeType","DateHelper","getBadgeType","StatsCoverFixedPillListLargeWidgetTemplate","WidgetHeader","Row","Col","isTertiaryCustomerWithoutExchange","baseClass","getBadgeClass","S","getBadgeText","ComingSoonNamePanel","multiline","noUnderLine","wrapperClassName","textClassName","phrase","NormalNamePanel","subtitle","newVideosCount","options","CoverPillWidgetContent","coverUrl","undefined","childProps","showNewVideosCount","externalMetadata","coverStyle","backgroundImage","backgroundColor","coverBgColor","fallbackCoverBgClassName","themeColor","isSelected","style","hideCheckmark","svgSize","textVariant","variant","hideFallback","CoverPillWidgetContentWrapper","appLinkOptions","getChildAppLinkOptions","PartialSubjectWidgetItem","width","PartialLargeSubjectWidgetItem","Memoized","presentationName","availablePresentations","find","p","usePresentationName","url","metadata","getSubtitle","shouldHighlight"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/6919-afa7705c12-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/ClassNameHelper.ts","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/coming-soon-tag.scss","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/ComingSoonTag.tsx","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/generic-calendar-date.scss","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/GenericCalendarDate.tsx","file:///app/packages/libs/shared/src/components/widgets/curated-widgets/templates/cover-fixed-pill-list-large/CoverFixedPillListLargeWidgetTemplate.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/SubjectStatsWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/curated-widgets/templates/stats-cover-fixed-pill-list-large/StatsCoverFixedPillListLargeWidgetTemplate.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/subject-stats-badge/subject-stats-badge.scss","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/subject-stats-badge/SubjectStatsBadge.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/CoverPill.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/PartialSubjectWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/SubjectWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/EditSubjectsWidgetLink.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/AllSubjectsWidgetLink.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/subject-stats-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/cover-pill.scss"],"sourcesContent":["type ValidParams = string | boolean | undefined | null;\n\n/**\n * Helper to append classNames.\n * Filters any falsy values before returning classNames.\n * \n * @param ...classNames Array<string | boolean | undefined | null>\n * @returns string\n */\nexport function classNames(...classNames: Array<ValidParams>): string {\n if (!classNames.length) return '';\n\n const filteredClassNames = classNames.filter(className => !!className);\n \n if (!filteredClassNames.length) return '';\n \n return filteredClassNames.join(' ');\n}","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"XRj8d\",\"tooltip\":\"X6mLk\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './coming-soon-tag.scss';\n\nconst namespace = 'specialEventCalendar.comingSoonTag';\n\ninterface ComingSoonProps {\n className?: string;\n onlyIcon?: boolean;\n}\n\nexport function ComingSoonTag(props: ComingSoonProps): JSX.Element {\n return (\n <Tooltip title={LanguageService.getPhrase(namespace, 'tooltip')} spanHackClassName={`d-block ${styles.tooltip}`} spanHack>\n <div className={`d-flex text-dark align-items-center ${styles.tag} ${props.className}`}>\n <SvgContainer svgName={cvSvgLibrary.Timer} />\n {!props.onlyIcon && LanguageService.getPhrase(namespace, 'comingSoon')}\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dateItem\":\"I3SBm\",\"label\":\"PRORs\",\"body\":\"RfiM_\",\"bodyDay\":\"ZOVny\",\"bodyRange\":\"vYhXN\",\"bodyMonth\":\"mYslO\",\"month\":\"EPkkQ\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './generic-calendar-date.scss';\n\nexport interface GenericCalendarDateProps {\n label?: string;\n body: {\n type: 'month' | 'range' | 'day';\n text: string;\n };\n month?: string;\n getAppLink?: () => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n className?: string;\n theme?: CalendarTheme;\n}\n\nexport function GenericCalendarDate(props: GenericCalendarDateProps): JSX.Element {\n function getBodyClass(): string {\n switch (props.body.type) {\n case 'range':\n return styles.bodyRange;\n case 'day':\n return styles.bodyDay;\n case 'month':\n return styles.bodyMonth;\n }\n }\n\n return (\n <AppLink\n appLink={props.getAppLink?.()}\n className={`text-decoration-none text-center bg-white text-dark border border-3 ${props.theme?.border} rounded-3 d-block fw-semibold ${props.className}`}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n <div className={`position-relative ${styles.dateItem}`}>\n <div className={`${props.theme?.background} py-1 ${styles.label} d-flex align-items-center justify-content-center`}>\n {props.label ? props.label : <>&nbsp;</>}\n </div>\n <div className={`${getBodyClass()} ${styles.body} my-2`}>\n {props.body.text}\n </div>\n <div className={`mb-0 ${styles.month}`}>\n {props.month}\n </div>\n </div>\n </AppLink>\n );\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { SubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/SubjectWidgetItem';\nimport { Classification } from 'libs/shared/interfaces';\n\nexport interface CoverFixedPillListLargeWidgetTemplateProps {\n name: string;\n description: string;\n hasTableOfContents: boolean;\n \n analyticsData?: HashObject;\n\n content: Classification[];\n appLinks: {\n classification: (classification: Classification | null) => Core.AppLink;\n };\n settings: {\n hasTopicDirectories: boolean\n }\n}\n\nexport function CoverFixedPillListLargeWidgetTemplate(props: CoverFixedPillListLargeWidgetTemplateProps): JSX.Element {\n return (\n <>\n <WidgetHeader name={props.name} description={props.description} />\n <Row className='mb-n2'>\n {props.content.map(c => {\n return (\n <Col className={`position-relative pb-2`} key={c.id} xs={12} sm={6} lg={props.hasTableOfContents ? 6 : 4} xl={4}>\n <SubjectWidgetItem\n data={c}\n getChildAppLink={(c: Classification) => props.appLinks?.classification?.(c)}\n analyticsData={props.analyticsData}\n highlightOnHover={props.settings?.hasTopicDirectories}\n isLarge\n />\n </Col>\n );\n })}\n </Row>\n </>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { ClassificationBadgeType, SubjectStatsBadge } from './subject-stats-badge/SubjectStatsBadge';\n\nimport styles from './subject-stats-widget-item.scss';\n\nconst namespace = 'shared.subjectStatsWidgetItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SubjectStatsWidgetItemProps {\n classification: Classification;\n getAppLink: (classification: Classification) => Core.AppLink;\n onToggleFollowClassification: (classification: Classification, location: LocationContext) => void;\n canFollowTopics: boolean;\n hideCounts: boolean;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function SubjectStatsWidgetItem(props: SubjectStatsWidgetItemProps): JSX.Element {\n const [ hasLoadedImage, setHasLoadedImage ] = React.useState(false);\n const isComingSoon = props.classification?.status === ClassificationStatus.ComingSoon;\n const isFollowing = TopicsHelper.isFollowing(props.classification);\n\n const {\n dashboardNewVideosCount,\n childDashboardNewVideoCount,\n dashboardResourceCount,\n childDashboardResourceCount,\n dashboardVideoCount,\n childDashboardVideoCount,\n childClassificationCount\n } = TopicsHelper.getCounts(props.classification);\n\n const videoCount = dashboardVideoCount + childDashboardVideoCount;\n const resourceCount = dashboardResourceCount + childDashboardResourceCount;\n const newVideoCount = dashboardNewVideosCount + childDashboardNewVideoCount;\n\n function onToggleFollowClassification(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n e.preventDefault();\n\n if (!props.canFollowTopics)\n return;\n\n props.onToggleFollowClassification?.(props.classification, LocationContext.SubjectStatsWidgetItem);\n }\n\n function getSubtext(): string {\n if (props.classification.status === ClassificationStatus.ComingSoon || props.hideCounts)\n return '';\n\n let text = '';\n\n if (videoCount)\n text += `${getPhrase('videos', { smartCount: videoCount })} `;\n\n if (resourceCount)\n text += ` • ${getPhrase('resources', { smartCount: resourceCount })}`;\n\n if (TopicsHelper.isTopLevelTopic(props.classification) && childClassificationCount > 0) {\n if (!text)\n return getPhrase('topics', { smartCount: childClassificationCount });\n\n text = `${getPhrase('topics', { smartCount: childClassificationCount })} • ` + text;\n }\n\n return text;\n }\n\n function getBadgeType(): ClassificationBadgeType {\n if (props.classification.status === ClassificationStatus.ComingSoon)\n return 'coming-soon';\n\n const { datePublished } = props.classification;\n if (!!datePublished && DateHelper.timeSince(datePublished, 'day') <= 30)\n return 'new-topic';\n\n if (newVideoCount > 0 && !props.hideCounts)\n return 'new-videos';\n\n return null;\n }\n\n const subText = getSubtext();\n\n return (\n <AppLink\n className={`d-flex no-decoration rounded ${styles.container}`}\n appLink={props.getAppLink?.(props.classification)}\n analyticsData={{\n ...props.analyticsData,\n id: props.classification?.id,\n name: props.classification?.name,\n presentationId: props.classification.presentationId,\n comingSoon: !!isComingSoon,\n videoCount,\n resourceCount,\n newVideoCount,\n datePublished: props.classification.datePublished,\n countsHidden: !!props.hideCounts\n }}\n analyticsOptions={{\n location: LocationContext.SubjectStatsWidgetItem,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: EntityType.Classification,\n descriptor: ClickDescriptor.Cover\n }}\n >\n {!hasLoadedImage && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={`ms-2 rounded-end-lg ${styles.fallbackImage}`}\n />\n )}\n <div className={`${styles.cover} me-2 rounded overflow-hidden`}>\n <BaseImage\n data={props.classification.cover}\n imageOptions={{ size: ImageSize.Medium }}\n imageClassName={isComingSoon ? 'opacity-50' : ''}\n onLoad={() => setHasLoadedImage(true)}\n >\n {props.canFollowTopics && (\n <DivButton\n onClick={onToggleFollowClassification}\n className={`\n align-items-center justify-content-center cursor-pointer\n ${styles.bellContainer} ${isFollowing ? styles.followed : ''}\n `}\n >\n <SvgContainer\n svgName={cvSvgLibrary.BellFilled}\n className={`svg-container ${styles.bell}`}\n />\n <SvgContainer\n svgName={cvSvgLibrary.Bell}\n className={`svg-container ${styles.bellOutline}`}\n />\n </DivButton>\n )}\n </BaseImage>\n\n </div>\n <div>\n <h3 className={`h6 mb-0 clamp-2 mt-1`}>\n {props.classification.name}\n </h3>\n\n {!!subText && (\n <p className={`mb-0 ${styles.subText}`}>\n {subText}\n </p>\n )}\n\n <SubjectStatsBadge badgeType={getBadgeType()} newVideoCount={newVideoCount} />\n </div>\n </AppLink>\n );\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { SubjectStatsWidgetItem } from 'libs/shared/components/widgets/items/subject-stats-widget-item/SubjectStatsWidgetItem';\nimport { Classification } from 'libs/shared/interfaces';\n\nexport interface StatsCoverFixedPillListLargeWidgetTemplateProps {\n id: string;\n name: string;\n description: string;\n content: Classification[];\n analyticsData?: HashObject;\n \n hasTableOfContents: boolean;\n isTertiaryCustomerWithoutExchange: boolean;\n appLinks: {\n classification: (classification: Classification) => Core.AppLink;\n }\n onToggleFollowClassification: (classification: Classification, location: LocationContext) => void;\n}\n\nexport function StatsCoverFixedPillListLargeWidgetTemplate(\n props: StatsCoverFixedPillListLargeWidgetTemplateProps\n): JSX.Element {\n /**\n * For V1 of the release of topic directories, we will not be exposing the following icon.\n * This is because currently following is useless. Once we have implemented an email for when\n * coming soon topics are released, we will enable this.\n */\n // const canFollowTopics = props.hasPermissions(PermissionName.FollowSubjects) && !!props.onToggleFollowClassification;\n\n return (\n <>\n <WidgetHeader name={props.name} description={props.description} />\n <Row className='mb-n2'>\n {props.content.map(c => {\n return (\n <Col className={`position-relative pb-2`} key={c.id} xs={12} sm={6} lg={props.hasTableOfContents ? 6 : 4} xl={4}>\n <SubjectStatsWidgetItem\n classification={c}\n analyticsData={props.analyticsData}\n getAppLink={props.appLinks?.classification}\n onToggleFollowClassification={props.onToggleFollowClassification}\n // canFollowTopics={canFollowTopics}\n canFollowTopics={false}\n\n /**\n * We're currently hiding counts for tertiary customers without the exchange\n * because all counting is done by a background process that can't take the\n * current users' credentials into account. Because about half of our tertiary\n * customers don't have the exchange, and the other half do, and we use exchange\n * content on our tertiary topics, the counts will be higher for non-exchange\n * customers than they really are for them.\n * \n * This is shit and hopefully we can come up with a better solution one day\n * - Josh\n */\n hideCounts={props.isTertiaryCustomerWithoutExchange}\n />\n </Col>\n );\n })}\n </Row>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"isNew\":\"KLRzE\",\"newVideos\":\"xozwy\",\"badge\":\"NWZxu\",\"icon\":\"G9W_I\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './subject-stats-badge.scss';\n\nexport type ClassificationBadgeType = 'coming-soon' | 'new-topic' | 'new-videos';\n\nconst namespace = 'shared.subjectStatsBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SubjectStatsBadgeProps {\n badgeType: ClassificationBadgeType;\n newVideoCount?: number;\n}\n\nexport function SubjectStatsBadge(props: SubjectStatsBadgeProps): JSX.Element {\n function getBadgeClass(): string {\n const baseClass = `fw-semibold d-inline-block rounded-pill px-2 ${styles.badge}`;\n\n switch (props.badgeType) {\n case 'coming-soon':\n return baseClass + ' bg-light ps-1 d-inline-flex align-items-center';\n case 'new-topic':\n return baseClass + ` ${styles.isNew}`;\n case 'new-videos':\n return baseClass + ` ${styles.newVideos}`;\n default:\n return '';\n }\n }\n\n function getBadgeText(): string {\n switch (props.badgeType) {\n case 'coming-soon':\n return getPhrase('comingSoon');\n case 'new-topic':\n return getPhrase('new');\n case 'new-videos':\n return getPhrase('newVideos', { smartCount: props.newVideoCount });\n default:\n return '';\n }\n }\n\n return (\n <div className={getBadgeClass()}>\n {props.badgeType === 'coming-soon' && (\n <SvgContainer\n svgName={cvSvgLibrary.Timer}\n className={`svg-container ${styles.icon}`}\n size={SvgContainerSize.ExtraSmall}\n />\n )}\n\n {getBadgeText()}\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, Classification, Presentation } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './cover-pill.scss';\n\nconst namespace = 'shared.subjectWidgetItem';\n\ninterface NamePanelProps {\n name: string;\n multiline?: boolean;\n subtitle?: string;\n noUnderLine?: boolean;\n newVideosCount?: number;\n}\n\nconst ComingSoonNamePanel = ({ name, multiline, noUnderLine }: NamePanelProps) => {\n let wrapperClassName = `${styles.comingSoonPanel} \n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\n\n let textClassName = '';\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap';\n textClassName += ' text-truncate';\n } else {\n textClassName += ` ${styles.clamped} clamp-2`;\n }\n\n return (\n <div className={wrapperClassName}>\n <small className='text-secondary'><Text namespace={namespace} phrase='comingSoon' /></small>\n <p className={`${noUnderLine ? '' : styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle, noUnderLine, newVideosCount }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${noUnderLine ? '' : styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0';\n } else {\n textClassName += ` ${newVideosCount ? 'clamp-2' : 'clamp-3'} text-start`;\n }\n\n return (\n <div className={wrapperClassName}>\n {subtitle && <div className={`text-secondary clamp-1 ${styles.text}`}>{subtitle}</div>}\n <div className={textClassName} title={name}>{name}</div>\n {!!newVideosCount && (\n <div className={`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${styles.newVideos}`}>\n <Text namespace={namespace} phrase='newVideos' options={{ smartCount: newVideosCount }} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CoverPillWidgetItemProps<T extends BaseObject> {\n data: T;\n getChildAppLink?: (data: T) => Core.AppLink;\n getChildAppLinkOptions?: () => Core.AppLinkOptions;\n isLarge?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n availablePresentations?: Presentation[];\n getSubtitle?: (data: T) => string;\n multiline?: boolean;\n // set to true it will highlight on hover and also remove the hover text underline\n highlightOnHover?: boolean;\n showNewVideosCount?: boolean;\n shouldHighlight?: (data: T) => boolean;\n}\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n coverBgColor?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\n themeColor?: string;\n}\n\nexport function CoverPillWidgetContent(props: CoverPillWidgetContentProps<BaseObject>): JSX.Element {\n const coverUrl = ImageHelper.createUrl(props.coverUrl, { size: props.isLarge ? ImageSize.Medium : ImageSize.Small });\n\n let classification: Classification | undefined = undefined;\n if (MasterTypeHelper.isClassification(props.data)) {\n classification = props.data;\n }\n\n const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle,\n noUnderLine: props.highlightOnHover,\n newVideosCount: props.showNewVideosCount ? classification?.externalMetadata?.childDashboardNewVideoCount : 0\n };\n\n const coverStyle: React.CSSProperties = {\n backgroundImage: coverUrl ? `url('${coverUrl}')` : null,\n backgroundColor: props.coverBgColor\n };\n\n const fallbackCoverBgClassName = getBgColorClass(props.data.name, BG_COLOUR_CLASS_NAMES);\n\n return (\n <div\n className={`${props.themeColor ? styles.hasThemeColor : 'border'} d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''} ${props.highlightOnHover && !props.themeColor ? 'bg-light-blue-hover' : ''}`}\n style={props.themeColor ? { '--themeColor': props.themeColor } as unknown as React.CSSProperties : {}}\n id={`${props.data.id}-${RandomHelper.getRandomInt()}`}\n >\n {props.isSelected && (\n <div className={`${styles.selectedMask} border-2`} />\n )}\n\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\n {props.isSelected && !props.hideCheckmark && (\n <div className={styles.selected}>\n <IconCircle svgName={cvSvgLibrary.Check} svgSize={SvgContainerSize.Large} textVariant='white' variant='green' />\n </div>\n )}\n\n {coverUrl &&\n <div\n className={classNames(\n styles.image,\n props.imageClassName,\n !props.coverBgColor && fallbackCoverBgClassName\n )}\n style={coverStyle}\n />\n }\n {!props.hideFallback && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={props.isLarge ? styles.large : ''}\n />\n )}\n </div>\n\n {props.isComingSoon\n ? <ComingSoonNamePanel {...childProps} />\n : <NormalNamePanel {...childProps} />\n }\n </div>\n );\n}\n\nexport function CoverPillWidgetContentWrapper(props: CoverPillWidgetContentProps<BaseObject>) {\n const appLink = props.getChildAppLink ? props.getChildAppLink(props.data) : null;\n\n return (\n <>\n {appLink ? (\n <AppLink\n className={styles.appLink}\n appLink={appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n appLinkOptions={props.getChildAppLinkOptions?.()}\n >\n <CoverPillWidgetContent {...props} />\n </AppLink>\n ) : (<CoverPillWidgetContent {...props} />)\n }\n </>\n );\n}","import * as React from 'react';\n\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\n\nimport styles from './cover-pill.scss';\n\nexport const PartialSubjectWidgetItem = () => {\n const [width] = React.useState(RandomHelper.getRandomInt(5) + 3 + 'rem');\n\n return (\n <div className={`border d-flex position-relative me-2 ${styles.widgetItem}`}>\n <div className={styles.imagePanel} />\n <div className='px-2' style={{ width }} />\n <div className={styles.partialIcon}>\n <ImageFallback type={ImageFallbackType.Subject} />\n </div>\n </div>\n );\n};\n\nexport const PartialLargeSubjectWidgetItem = () => {\n return (\n <div className={`border d-flex position-relative me-2 ${styles.widgetItem}`}>\n <div className={`${styles.partialLargeImage}`} />\n <div className='px-2' />\n <div className={styles.partialIcon}>\n <ImageFallback type={ImageFallbackType.Subject} extraClasses={styles.partialLargeFallback} />\n </div>\n </div>\n );\n};","import * as React from 'react';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CoverPillWidgetContentWrapper, CoverPillWidgetItemProps } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { TopicsConstants } from 'libs/shared/constants/TopicsConstants';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nfunction usePresentationName(presentationId: string, availablePresentations: Presentation[]): string {\n const showPresentationName = availablePresentations?.length >= TopicsConstants.MULTI_PRESENTATION_THRESHOLD;\n\n if (!showPresentationName) {\n return undefined;\n }\n\n return availablePresentations?.find(p => p.id === presentationId)?.name;\n}\n\nfunction SubjectWidgetItem(props: CoverPillWidgetItemProps<Classification>): JSX.Element {\n const isComingSoon = props.data?.status === ClassificationStatus.ComingSoon;\n const presentationName = usePresentationName(props.data.presentationId, props?.availablePresentations);\n\n const analyticsData = {\n ...props.analyticsData,\n id: props.analyticsData?.id || props.data?.id,\n name: props.data?.name,\n presentationId: props.analyticsData?.presentationId || props.data.presentationId,\n comingSoon: !!isComingSoon\n };\n\n const analyticsOptions = {\n location: LocationContext.ClassificationListItem,\n entity: EntityType.Classification,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Cover\n };\n\n return (\n <CoverPillWidgetContentWrapper\n {...props}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n coverUrl={props.data.cover?.url}\n coverBgColor={props.data?.metadata?.backgroundColor}\n subtitle={props.getSubtitle?.(props.data) || presentationName}\n isComingSoon={isComingSoon}\n themeColor={props.shouldHighlight?.(props.data) ? props.data?.metadata?.backgroundColor ?? '' : ''}\n />\n );\n}\n\nconst Memoized = React.memo(SubjectWidgetItem);\n\nexport { Memoized as SubjectWidgetItem };","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './cover-pill.scss';\n\ninterface EditSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.UserSetting,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function EditSubjectsWidgetLink(props: EditSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.editSubjectsItem} d-flex position-relative px-3 justify-content-center align-items-center`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-preference' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <SvgContainer svgName={cvSvgLibrary.Edit} className='me-2 align-middle d-inline-block svg-container' />\n <p className='h6 align-middle text-truncate'><Text namespace='shared.subjectWidgetItem' phrase='edit' /></p>\n </div>\n </AppLink>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewLogoInverted } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './cover-pill.scss';\n\ninterface AllSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function AllSubjectsWidgetLink(props: AllSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.allSubjectsItem}\n d-flex flex-column position-relative px-2\n align-items-center justify-content-center text-nowrap bg-navy`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-all' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <div className={styles.logoContainer}>\n <ClickViewLogoInverted />\n </div>\n <p className='h6 pt-2 px-3 mb-0'><Text namespace='shared.subjectWidgetItem' phrase='all' /></p>\n </div>\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"wzt8R\",\"bellContainer\":\"X7Jgx\",\"bell\":\"HoKe4\",\"followed\":\"Pdmdk\",\"bellOutline\":\"bEQDk\",\"cover\":\"luOU3\",\"fallbackImage\":\"ReXqz\",\"subText\":\"p0kUV\"};","// extracted by mini-css-extract-plugin\nexport default {\"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\"};"],"names":["classNames","length","filteredClassNames","filter","className","join","namespace","ComingSoonTag","props","Tooltip","title","LanguageService","spanHackClassName","spanHack","SvgContainer","svgName","onlyIcon","GenericCalendarDate","AppLink","appLink","getAppLink","theme","border","analyticsData","analyticsOptions","background","label","body","type","getBodyClass","text","month","CoverFixedPillListLargeWidgetTemplate","name","description","content","map","c","key","id","xs","sm","lg","hasTableOfContents","xl","data","getChildAppLink","appLinks","classification","highlightOnHover","settings","hasTopicDirectories","isLarge","getPhrase","SubjectStatsWidgetItem","hasLoadedImage","setHasLoadedImage","isComingSoon","status","ClassificationStatus","isFollowing","TopicsHelper","dashboardNewVideosCount","childDashboardNewVideoCount","dashboardResourceCount","childDashboardResourceCount","dashboardVideoCount","childDashboardVideoCount","childClassificationCount","videoCount","resourceCount","newVideoCount","subText","hideCounts","smartCount","getSubtext","presentationId","comingSoon","datePublished","countsHidden","location","actionType","entity","descriptor","ImageFallback","extraClasses","BaseImage","cover","imageOptions","size","imageClassName","onLoad","canFollowTopics","DivButton","onClick","e","stopPropagation","preventDefault","onToggleFollowClassification","SubjectStatsBadge","badgeType","DateHelper","getBadgeType","StatsCoverFixedPillListLargeWidgetTemplate","WidgetHeader","Row","Col","isTertiaryCustomerWithoutExchange","baseClass","getBadgeClass","S","getBadgeText","ComingSoonNamePanel","multiline","noUnderLine","wrapperClassName","textClassName","phrase","NormalNamePanel","subtitle","newVideosCount","options","CoverPillWidgetContent","coverUrl","undefined","childProps","showNewVideosCount","externalMetadata","coverStyle","backgroundImage","backgroundColor","coverBgColor","fallbackCoverBgClassName","themeColor","isSelected","style","hideCheckmark","svgSize","textVariant","variant","hideFallback","CoverPillWidgetContentWrapper","appLinkOptions","getChildAppLinkOptions","PartialSubjectWidgetItem","width","PartialLargeSubjectWidgetItem","Memoized","presentationName","availablePresentations","find","p","usePresentationName","url","metadata","getSubtitle","shouldHighlight"],"sourceRoot":""}