@clickview/lite 0.64.0-rc.2 → 0.64.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bundles.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "appBundle": "bundle-2e839958ca.min.js",
2
+ "appBundle": "bundle-48f54fe5c2.min.js",
3
3
  "cssBundle": "lite-app-cb62af74bc.css",
4
4
  "polyfillBundle": "polyfills-644ebb0602.min.js"
5
5
  }
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4718],{78259:(e,n,t)=>{t.d(n,{O:()=>c});var r=t(58176),a=t.n(r),i=t(39479),o={className:"info-link",defaultProtocol:"https"},c={linkifyText:function(e,n){if(e){var t=n?i.extend({},o,n):o;return a()(e,t)}}}},51685:(e,n,t)=>{t.d(n,{g:()=>v});var r=t(32735),a=t(78259),i=t(18559),o=t(86764),c=t(5345),l=t(3747),s=t(26361),u=t(31908);const d={captionsBadge:"eXhiL"};function m(e){var n,t,o,c,l,s;if(!e.video.description&&!(null===(n=u.M.getCanBeConsumed(e.video))||void 0===n?void 0:n.canNavigate))return r.createElement("em",null,u.M.getPrivacyReasoning(e.video,e.showSignIn));var m=!!(null===(c=null===(o=null===(t=e.video)||void 0===t?void 0:t.subtitles)||void 0===o?void 0:o.data)||void 0===c?void 0:c.length);return r.createElement(r.Fragment,null,m&&r.createElement("span",{className:"d-inline-block align-middle ".concat(d.captionsBadge)},r.createElement(i.C,{type:i.g.Captions,data:null===(l=e.video)||void 0===l?void 0:l.subtitles})),!!(null===(s=e.video)||void 0===s?void 0:s.productionYear)&&r.createElement("span",{className:"fw-semibold align-middle"},m?" • ":"",e.video.productionYear),!!e.video.description&&r.createElement("span",{className:"align-middle",dangerouslySetInnerHTML:{__html:"".concat(e.video.productionYear||m?" • ":"").concat(a.O.linkifyText(e.video.description))}}))}function v(e){var n=(0,l.a)(o.r.XS),t=!!s.l.getRestrictionByType(e.video,c.c.User);return n||t?r.createElement(r.Fragment,null):r.createElement("div",{className:"position-relative overflow-hidden clamp-2"},r.createElement("p",{className:"m-0"},r.createElement(m,{video:e.video,showSignIn:e.showSignIn})))}},84678:(e,n,t)=>{t.d(n,{L:()=>i});var r=t(32735),a=t(18559);function i(e){return r.createElement(a.C,{type:a.g.Restriction,data:{restrictions:e.restrictions,yearGroups:e.yearGroups},inline:!0})}},94696:(e,n,t)=>{t.d(n,{B:()=>l});var r=t(32735),a=t(17464),i=t(84678),o=t(26361),c=t(31908);function l(e){var n=o.l.hasRestrictions(e.video),t=c.M.getCanBeConsumed(e.video).canConsume;return n&&e.yearGroups&&t?r.createElement(a.c,{className:e.className||"pt-1"},r.createElement(i.L,{restrictions:e.video._restrictions,yearGroups:e.yearGroups})):r.createElement(r.Fragment,null)}},70872:(e,n,t)=>{t.d(n,{u:()=>l});var r=t(32735),a=t(65858),i=t(36848),o=t(29598),c=t(31908);function l(e){var n,t,l,s=c.M.getCanBeConsumed(e.video).canNavigate,u=c.M.getTitle(e.video),d=Object.assign(Object.assign({},e.analyticsData),{id:null===(n=e.video)||void 0===n?void 0:n.id,name:null===(t=e.video)||void 0===t?void 0:t.name}),m=Object.assign(Object.assign({},e.analyticsOptions),{actionType:a.Vw.Click,descriptor:a._S.Title}),v=e.textClassName?"":"clamp-1 align-middle",p=e.textClassName||("md"===e.size?"h4":"h5");return r.createElement(i.F,{className:e.linkClassName,appLink:s?e.appLink:null,onClick:s?e.onClickAppLink:null,analyticsOptions:m,analyticsData:d},r.createElement("div",{className:v,title:null!==(l=e.video.name)&&void 0!==l?l:""},r.createElement(o.O,{video:e.video,title:u,yearGroups:e.yearGroups,lockSize:e.size,textClassName:p,showNewVideoIndicator:e.showNewVideoIndicator,headingClassName:e.headingClassName})))}},15469:(e,n,t)=>{t.d(n,{r:()=>d});var r=t(32735),a=t(36848),i=t(86572),o=t(83345),c=t(86764),l=t(81514),s=t(40424),u="shared.interactiveItem";function d(e){var n,t,d,m=(t=e.totalToDisplay,d=(0,l.V)(),"number"==typeof t?t:d===c.r.XS?3:d===c.r.SM?1:d===c.r.MD||d===c.r.LG?2:3);if(!(null===(n=e.timepoints)||void 0===n?void 0:n.length))return r.createElement(r.Fragment,null);var v=[],p=0;e.timepoints.forEach((function(n){null==n||n.interactions.forEach((function(t){if(!(s.IL[t.typeId]||p>=m)){p++;var r=t.typeId===s.Z9.Annotation&&"string"==typeof t.data?JSON.parse(t.data):t.data,a=Object.assign(Object.assign({},t),{data:Object.assign(Object.assign({},r),{appLink:e.appLink&&Object.assign(Object.assign({},e.appLink),{params:{t:Math.floor(n.visibleAt/1e3)}})})});v.push(a)}}))}));var f=e.timepoints.reduce((function(e,n){var t,r;return e+(null!==(r=null===(t=null==n?void 0:n.interactions)||void 0===t?void 0:t.length)&&void 0!==r?r:0)}),0);return v.length?r.createElement(r.Fragment,null,v.map((function(n,t){var a,o;return r.createElement("div",{key:t,className:"d-flex align-items-center mb-1"},r.createElement("div",{className:"clamp-1"},r.createElement(i.y,{interaction:n,appLink:null===(a=n.data)||void 0===a?void 0:a.appLink,onClick:(null===(o=n.data)||void 0===o?void 0:o.appLink)?e.onClickAppLink:null,smallIcon:!0})))})),r.createElement("div",{className:"mb-1 text-link"},r.createElement(a.F,{className:"cursor-pointer hover-text-underline",appLink:e.previewAppLink,onClick:e.onClickAppLink},r.createElement(o.x,{namespace:u,phrase:"previewQuestions",options:{questionsShown:v.length,smartCount:f}})))):r.createElement(r.Fragment,null)}},81514:(e,n,t)=>{t.d(n,{V:()=>i});var r=t(86764),a=t(3747);function i(){var e=(0,a.a)(r.r.XS),n=(0,a.a)(r.r.SM),t=(0,a.a)(r.r.MD),i=(0,a.a)(r.r.LG),o=(0,a.a)(r.r.XL),c=(0,a.a)(r.r.XXL),l=r.r.LG;return e&&(l=r.r.XS),n&&(l=r.r.SM),t&&(l=r.r.MD),i&&(l=r.r.LG),o&&(l=r.r.XL),c&&(l=r.r.XXL),l}},80143:(e,n,t)=>{t.d(n,{n:()=>i});var r=t(32735),a=t(69454);function i(e,n){var t=r.useMemo((function(){return(null==e?void 0:e.length)&&n&&a.T.shouldShowAudiences(n)?a.T.getSortedPresentationAudiences(e,n):null}),[e]);return r.useMemo((function(){return(null==t?void 0:t.length)?a.T.getMergedPresentationAudienceString(t):null}),[t])}},69454:(e,n,t)=>{t.d(n,{T:()=>m});var r=t(75896),a=t(1048),i=t(55171);function o(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,a,i,o,c=[],l=!0,s=!1;try{if(i=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;l=!1}else for(;!(l=(r=i.call(t)).done)&&(c.push(r.value),c.length!==n);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,n)||function(e,n){if(e){if("string"==typeof e)return c(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?c(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}var l=/\d/,s={yearsAndGradesBuilder:function(e){var n=e.map((function(e){return e.name})).join(" "),t=n.split(" ").filter((function(e){return!isNaN(+e)})).map((function(e){return+e}))||[],r=n.split(" ").filter((function(e){return isNaN(+e)}))||[],a=e.find((function(e){return!l.test(e.name)})),i=r.find((function(e){return e!==(null==a?void 0:a.name)}));if(e.length>1&&(i+="s"),a&&t.length)return"".concat(i," ").concat(a.name.charAt(0)," - ").concat(t.pop());var o=function(e){var n,t,r,a,i=!1,o=[];for(e=e.sort((function(e,n){return e-n})),r=0;r<e.length;r++)a=r+1,i||(n=e[r]),t=e[a],e[r]+1===t?i=!0:i?(o.push("".concat(n," - ").concat(e[r])),i=!1):(o.push("".concat(e[r])),i=!1);return o}(t);return"".concat(i," ").concat(o.join(", "))},internationalSecondaryBuilder:function(e){return s.englandSecondaryBuilder(e)},scotlandPrimaryBuilder:function(e){var n=r.m.first(e),t=r.m.last(e),a=o(n.name.split(" "),1)[0],i=o(t.name.split(" "),1)[0];return"First"===a&&(a="1st"),"First"===i&&(i="1st"),"Second"===a&&(a="2nd"),"Second"===i&&(i="2nd"),a===i?"".concat(a," Level"):"".concat(a," - ").concat(i," Level")},internationalPrimaryBuilder:function(e){var n=r.m.first(e),t=r.m.last(e);if(n.name===t.name)return n.name;var a=o(n.name.split(" "),1)[0],i=o(t.name.split(" "),1)[0];return"Lower"===a&&(a="Low"),"Lower"===i&&(i="Low"),"Middle"===a&&(a="Mid"),"Middle"===i&&(i="Mid"),"".concat(a," - ").concat(i," Pri")},englandSecondaryBuilder:function(e){var n=r.m.first(e),t=r.m.last(e);return n.name===t.name?n.name:"Advanced"===t.name?"lower"===o(n.name.split(" "),1)[0].toLowerCase()?"Lower Sec - Adv":"Upper Sec - Adv":"Lower - Upper Sec"},scotlandSecondaryBuilder:function(e){var n=r.m.first(e),t=r.m.last(e);return n.name===t.name?n.name:"Senior Phase"===t.name?"".concat(n.name," - Senior"):"Third - Fourth Level"},englandPrimaryBuilder:function(e){var n=r.m.first(e),t=r.m.last(e),a=r.m.first(n.name.split(" ")),i=r.m.first(t.name.split(" ")),o=n.name.split(" ").find((function(e){return!isNaN(+e)})),c=t.name.split(" ").find((function(e){return!isNaN(+e)}));if(n===t)return"Key"===a||"Reception"===a?n.name:"".concat(a," KS").concat(o);var l="",s="";return l="Reception"===a?"R":"KS".concat(o),s="KS".concat(c),"Lower"===a&&"Upper"===i?"L ".concat(l," - U ").concat(s):("Lower"===a&&(l="Lower ".concat(l)),"Upper"===i&&(s="Upper ".concat(s)),"Key"===i&&(s=t.name),"".concat(l," - ").concat(s))}},u=/([0-9]+)/gi,d=/\s|\+/gi,m={getSortedPresentationAudiences:function(e,n){var t=e.filter((function(e){return!!e})).map((function(e){return e.id.toString()}));return n.filter((function(e){return t.includes(e.masterId.toString())}))},getMergedPresentationAudienceString:function(e){var n="";switch(+r.m.first(e).presentationId){case i.e.PresentationIds.DEFAULT:case i.e.PresentationIds.AU_SECONDARY:case i.e.PresentationIds.US_ELEMENTARY:case i.e.PresentationIds.AU_PRIMARY:case i.e.PresentationIds.STREAMABLE_LEARNING:if(1===e.length)return e[0];n=s.yearsAndGradesBuilder(e);break;case i.e.PresentationIds.INTERNATIONAL_SECONDARY:if(1===e.length)return e[0];n=s.internationalSecondaryBuilder(e);break;case i.e.PresentationIds.INTERNATIONAL_PRIMARY:n=s.internationalPrimaryBuilder(e);break;case i.e.PresentationIds.SCOTLAND_PRIMARY:n=s.scotlandPrimaryBuilder(e);break;case i.e.PresentationIds.ENGLISH_SECONDARY:n=s.englandSecondaryBuilder(e);break;case i.e.PresentationIds.SCOTLAND_SECONDARY:n=s.scotlandSecondaryBuilder(e);break;case i.e.PresentationIds.ENGLAND_PRIMARY:n=s.englandPrimaryBuilder(e);case i.e.PresentationIds.US_MIDDLE:case i.e.PresentationIds.US_HIGH:case i.e.PresentationIds.AU_TERTIARY:case i.e.PresentationIds.UK_TERTIARY:}return n?{name:n}:null},sortMembersWithDuplicateNamesByAudience:function(e){var n=function(e){return e.length?(e.forEach((function(e){var a=+r.m.first(e.name.match(u));if(!n)return n=e,void(t=a);a<t&&(n=e)})),n):null;var n,t},t={},a=[];return e.forEach((function(e){if(!t[e.name])return t[e.name]=1,void a.push(e);a.push(e),t[e.name]++;var r=a.splice(a.length-t[e.name]).sort((function(e,t){var r=n(e.subjectPresentationAudiences.data),a=n(t.subjectPresentationAudiences.data);if(!r&&a)return 1;if(!a)return-1;var i=r.name.localeCompare(a.name);return 0===i?i:i>0?-1:1}));a=a.concat(r)})),a},getActiveAudiencesFromParams:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(a.t.isObject(n)&&!a.t.isEmpty(n)&&e&&e.length&&m.shouldShowAudiences(e)){var t=n.a;if(t){"string"==typeof t&&(t=[t]);var r=function(e){return e.replace(d,"").toLowerCase()},i=t.reduce((function(e,n){return e[r(n)]=n,e}),{});return e.filter((function(e){return i[r(e.name)]}))}}},getAudienceParams:function(e){return(null==e?void 0:e.length)?{a:e.map((function(e){return e.name}))}:null},shouldShowAudiences:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return!!e&&e.length>1}}}}]);
2
+ //# sourceMappingURL=4718-1426986e1d-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/4718-1426986e1d-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/LinkifyHelper.ts","file:///app/packages/libs/shared/src/components/video-list/components/video-item-description/video-item-description.scss","file:///app/packages/libs/shared/src/components/video-list/components/video-item-description/VideoItemDescription.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-restriction-badge/RestrictionBadge.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-restriction-badge/VideoItemRestrictionBadge.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-title/VideoItemTitle.tsx","file:///app/packages/libs/shared/src/components/video-list/interactive-item/InteractiveItemQuestions.tsx","file:///app/packages/libs/shared/src/hooks/UseGetMediaQueryString.ts","file:///app/packages/libs/shared/src/hooks/UseMergeAudiences.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceStringBuilders.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceHelper.ts"],"sourcesContent":["import { ObjectHash } from 'backbone';\nimport linkifyStr from 'linkifyjs/string';\nimport * as _ from 'underscore';\n\nconst BaseLinkifyOptions = {\n className: 'info-link',\n defaultProtocol: 'https'\n};\n\nexport const LinkifyHelper = {\n /**\n * The underlying linkifyStr interface escapes text within the input string\n */\n linkifyText(text: string, options?: ObjectHash): string {\n if (!text) return;\n const ops = options ? _.extend({}, BaseLinkifyOptions, options) : BaseLinkifyOptions;\n return linkifyStr(text, ops);\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"captionsBadge\":\"eXhiL\"};","import * as React from 'react';\n\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { Video } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-item-description.scss';\n\ninterface InnerContentProps {\n video: Video;\n showSignIn: boolean;\n}\n\nfunction InnerContent(props: InnerContentProps): JSX.Element {\n if (!props.video.description && !VideoHelper.getCanBeConsumed(props.video)?.canNavigate) {\n return (\n <em>{VideoHelper.getPrivacyReasoning(props.video, props.showSignIn)}</em>\n );\n }\n\n const hasCaptions = !!props.video?.subtitles?.data?.length;\n\n return (\n <>\n {hasCaptions && (\n <span className={`d-inline-block align-middle ${styles.captionsBadge}`}>\n <Badge type={BadgeType.Captions} data={props.video?.subtitles} />\n </span>\n )}\n {!!props.video?.productionYear && (\n <span className='fw-semibold align-middle'>\n {hasCaptions ? ' \\u2022 ' : ''}{props.video.productionYear}\n </span>\n )}\n {!!props.video.description && (\n <span\n className='align-middle'\n dangerouslySetInnerHTML={{\n __html: `${(props.video.productionYear || hasCaptions) ? ' \\u2022 ' : ''}${LinkifyHelper.linkifyText(props.video.description)}`\n }}\n />\n )}\n </>\n );\n}\n\ninterface VideoItemDescriptionProps {\n video: Video;\n showSignIn?: boolean;\n}\n\nexport function VideoItemDescription(props: VideoItemDescriptionProps): JSX.Element {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n const hasUserRestrictions = !!RestrictionHelper.getRestrictionByType(props.video, RestrictionType.User);\n\n if (isMobile || hasUserRestrictions)\n return <></>;\n\n return (\n <div className={`position-relative overflow-hidden clamp-2`}>\n <p className='m-0'>\n <InnerContent\n video={props.video}\n showSignIn={props.showSignIn}\n />\n </p>\n </div>\n );\n}","import React from 'react';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Restrictions, YearGroup } from 'libs/shared/interfaces';\n\ninterface RestrictionBadgeProps {\n restrictions: Restrictions;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionBadge(props: RestrictionBadgeProps): JSX.Element {\n return (\n <Badge\n type={BadgeType.Restriction}\n data={{ restrictions: props.restrictions, yearGroups: props.yearGroups }}\n inline\n />\n );\n}","import React from 'react';\n\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { RestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/RestrictionBadge';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemRestrictionBadgeProps {\n video: VideoTypes;\n yearGroups: YearGroup[];\n className?: string;\n}\n\nexport function VideoItemRestrictionBadge(props: VideoItemRestrictionBadgeProps): JSX.Element {\n const hasRestrictions = RestrictionHelper.hasRestrictions(props.video);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!hasRestrictions || !props.yearGroups || !canConsume)\n return <></>;\n \n return (\n <BadgeListContainer className={props.className || 'pt-1'}>\n <RestrictionBadge restrictions={props.video._restrictions} yearGroups={props.yearGroups} />\n </BadgeListContainer>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTitle } from 'libs/shared/components/video-title/VideoTitle';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemTitleProps {\n video: Video;\n appLink: Core.AppLink;\n onClickAppLink?: () => void;\n size?: VideoItemSize;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions;\n yearGroups: YearGroup[];\n showNewVideoIndicator?: boolean;\n\n linkClassName?: string;\n textClassName?: 'h6' | 'h5' | 'h4';\n headingClassName?: string;\n}\n\nexport function VideoItemTitle(props: VideoItemTitleProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n const title = VideoHelper.getTitle(props.video);\n\n const analyticsData: HashObject = {\n ...props.analyticsData,\n id: props.video?.id,\n name: props.video?.name\n };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n const titleContainerClassname = props.textClassName ? '' : `clamp-1 align-middle`;\n const titleTextClassName = props.textClassName || (props.size === 'md' ? 'h4' : 'h5');\n\n return (\n <AppLink\n className={props.linkClassName}\n appLink={canNavigate ? props.appLink : null}\n onClick={canNavigate ? props.onClickAppLink : null}\n analyticsOptions={analyticsOptions}\n analyticsData={analyticsData}\n >\n <div className={titleContainerClassname} title={props.video.name ?? ''}>\n <VideoTitle\n video={props.video}\n title={title}\n yearGroups={props.yearGroups}\n lockSize={props.size}\n textClassName={titleTextClassName}\n showNewVideoIndicator={props.showNewVideoIndicator}\n headingClassName={props.headingClassName}\n />\n </div>\n </AppLink>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { ExperimentalInteractionTypes, Interaction, InteractionTypeId, Timepoint } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.interactiveItem';\n\nfunction useGetQuestionDisplayLimit(totalToDisplay: number): number {\n const mediaQuery = useGetMediaQueryString();\n\n if (typeof totalToDisplay === 'number')\n return totalToDisplay;\n \n if (mediaQuery === MediaQueryStrings.XS)\n return 3;\n\n if (mediaQuery === MediaQueryStrings.SM)\n return 1;\n\n if (mediaQuery === MediaQueryStrings.MD || mediaQuery === MediaQueryStrings.LG)\n return 2;\n\n return 3;\n}\n\ninterface InteractiveItemQuestionsProps {\n timepoints: Timepoint[];\n appLink?: Core.AppLink;\n onClickAppLink?: () => void;\n previewAppLink: Core.AppLink;\n totalToDisplay?: number;\n}\n\nexport function InteractiveItemQuestions(props: InteractiveItemQuestionsProps): JSX.Element {\n const questionDisplayLimit = useGetQuestionDisplayLimit(props.totalToDisplay);\n\n if (!props.timepoints?.length)\n return <></>;\n\n const interactionsToShow: Interaction[] = [];\n let interactionCount: number = 0;\n\n props.timepoints.forEach(timepoint => {\n timepoint?.interactions.forEach(interaction => {\n if (ExperimentalInteractionTypes[interaction.typeId])\n return;\n\n if (interactionCount >= questionDisplayLimit)\n return;\n\n interactionCount++;\n\n // When displaying an annotation interaction, we display the \"data\" field, which may be a JSON string\n // For other interactions we display the \"name\" field, so we don't need to parse those.\n const interactionData = interaction.typeId === InteractionTypeId.Annotation && typeof(interaction.data) === 'string'\n ? JSON.parse(interaction.data)\n : interaction.data;\n\n const interactionToShow = {\n ...interaction,\n data: {\n ...interactionData,\n // Add interactive time to applink and convert to seconds\n appLink: props.appLink && { ...props.appLink, params: { t: Math.floor(timepoint.visibleAt / 1000) } }\n }\n };\n \n interactionsToShow.push(interactionToShow);\n });\n });\n \n const totalInteractions = props.timepoints.reduce((acc, timepoint) => {\n const totalInteractions = timepoint?.interactions?.length ?? 0;\n acc += totalInteractions;\n\n return acc;\n }, 0);\n\n if (!interactionsToShow.length)\n return <></>;\n\n return (\n <>\n {interactionsToShow.map((interaction, i) => {\n return (\n <div key={i} className='d-flex align-items-center mb-1'>\n <div className='clamp-1'>\n <InteractionLabel\n interaction={interaction}\n appLink={interaction.data?.appLink}\n onClick={interaction.data?.appLink ? props.onClickAppLink : null}\n smallIcon\n />\n </div>\n </div>\n );\n })}\n <div className='mb-1 text-link'>\n <AppLink\n className='cursor-pointer hover-text-underline'\n appLink={props.previewAppLink}\n onClick={props.onClickAppLink}\n >\n <Text\n namespace={namespace}\n phrase='previewQuestions'\n options={{\n questionsShown: interactionsToShow.length,\n smartCount: totalInteractions\n }}\n />\n </AppLink>\n </div>\n </>\n );\n}","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}","import React from 'react';\n\nimport { Audience, PresentationAudience } from '../interfaces';\nimport { AudienceHelper } from '../utils/audience-helper/AudienceHelper';\n\nexport function useMergeAudiences(\n audiences: Audience[],\n presentationAudiences: PresentationAudience[]\n): PresentationAudience {\n // Memoize the audience functions as they are somewhat expensive and the result shouldn't change\n const sortedAudiences = React.useMemo(() => {\n if (!audiences?.length || !presentationAudiences || !AudienceHelper.shouldShowAudiences(presentationAudiences))\n return null;\n\n return AudienceHelper.getSortedPresentationAudiences(audiences, presentationAudiences);\n }, [audiences]);\n\n const mergedAudience = React.useMemo(() => {\n if (!sortedAudiences?.length)\n return null;\n\n return AudienceHelper.getMergedPresentationAudienceString(sortedAudiences);\n }, [sortedAudiences]);\n\n return mergedAudience;\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nconst HAS_NUMBER_REGEX = /\\d/;\nconst COUNT_OFFSET = 1;\n\nexport const AudienceStringBuilders = {\n /**\n * Handles audience sets like:\n * - Year 7, Year 8, etc\n * - Kindergarten, Grade 1, Grade 2, etc\n */\n yearsAndGradesBuilder(audiences: PresentationAudience[]): string {\n /**\n * Create a string with all of the audiences\n */\n const combinedNames = audiences.map(a => a.name).join(' ');\n\n /**\n * Extract all the numbers and matches from the string\n */\n const numberList = combinedNames.split(' ').filter(name => !isNaN(+name)).map(num => +num) || [];\n const wordList = combinedNames.split(' ').filter(name => isNaN(+name)) || [];\n\n // Find an audience that doesn't have a number, like \"Kindergarten\" or \"Foundation\".\n const audienceWithoutNum = audiences.find(p => {\n return !HAS_NUMBER_REGEX.test(p.name);\n });\n\n // Get audience label prefix\n let prefix = wordList.find(name => name !== audienceWithoutNum?.name);\n\n // Pluralise the prefix is there are multiple audiences\n if (audiences.length > 1)\n prefix += 's';\n\n if (audienceWithoutNum && numberList.length)\n return `${prefix} ${audienceWithoutNum.name.charAt(0)} - ${numberList.pop()}`;\n\n /**\n * Build set of logical audience ranges\n */\n const audienceRange = processAudienceRanges(numberList);\n\n return `${prefix} ${audienceRange.join(', ')}`;\n },\n\n internationalSecondaryBuilder(audiences: PresentationAudience[]): string {\n return AudienceStringBuilders.englandSecondaryBuilder(audiences);\n },\n\n scotlandPrimaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n let [firstAudienceLevel] = firstAudience.name.split(' ');\n let [lastAudienceLevel] = lastAudience.name.split(' ');\n\n if (firstAudienceLevel === 'First')\n firstAudienceLevel = '1st';\n\n if (lastAudienceLevel === 'First')\n lastAudienceLevel = '1st';\n\n if (firstAudienceLevel === 'Second')\n firstAudienceLevel = '2nd';\n\n if (lastAudienceLevel === 'Second')\n lastAudienceLevel = '2nd';\n\n if (firstAudienceLevel === lastAudienceLevel)\n return `${firstAudienceLevel} Level`;\n\n return `${firstAudienceLevel} - ${lastAudienceLevel} Level`;\n },\n\n internationalPrimaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n let [firstAudienceLevel] = firstAudience.name.split(' ');\n let [lastAudienceLevel] = lastAudience.name.split(' ');\n\n if (firstAudienceLevel === 'Lower')\n firstAudienceLevel = 'Low';\n\n if (lastAudienceLevel === 'Lower')\n lastAudienceLevel = 'Low';\n\n if (firstAudienceLevel === 'Middle')\n firstAudienceLevel = 'Mid';\n\n if (lastAudienceLevel === 'Middle')\n lastAudienceLevel = 'Mid';\n\n return `${firstAudienceLevel} - ${lastAudienceLevel} Pri`;\n },\n\n /**\n * Handles the english secondary audiences, which can be: Lower Secondary, Upper Secondary, and Advanced\n */\n englandSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Advanced') {\n const [level] = firstAudience.name.split(' ');\n\n if (level.toLowerCase() === 'lower')\n return 'Lower Sec - Adv';\n\n return 'Upper Sec - Adv';\n }\n\n return 'Lower - Upper Sec';\n },\n\n scotlandSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Senior Phase')\n return `${firstAudience.name} - Senior`;\n\n return 'Third - Fourth Level';\n },\n\n /**\n * Handles the audience set: Reception, Key Stage 1, Lower Key Stage 2, and Upper Key Stage 2\n */\n englandPrimaryBuilder(audiences: PresentationAudience[]): string {\n // The first and last audience will build out the range\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n // The first word in the strings will either be \"Upper\", \"Lower\", \"Key\", or \"Reception\"\n const firstAudienceFirstWord = ArrayHelper.first(firstAudience.name.split(' '));\n const lastAudienceFirstWord = ArrayHelper.first(lastAudience.name.split(' '));\n\n // Each audience in this set except for \"Reception\" has a number. Get the numbers for the first and last audiences\n const firstAudienceNumber = firstAudience.name.split(' ').find(word => !isNaN(+word));\n const lastAudienceNumber = lastAudience.name.split(' ').find(word => !isNaN(+word));\n\n // If there's only one audience on the video:\n if (firstAudience === lastAudience) {\n // For these 2 audiences, return the full name as it's short enough already\n if (firstAudienceFirstWord === 'Key' || firstAudienceFirstWord === 'Reception')\n return firstAudience.name;\n\n // For the Upper/Lower key stage audiences, abbreviate the \"key stage\" part to KS1/KS2\n return `${firstAudienceFirstWord} KS${firstAudienceNumber}`;\n }\n\n /**\n * Handle when the object has >1 audience\n */\n\n let firstAudienceString = '';\n let lastAudienceString = '';\n\n // Reception is always shortened to \"R\" when in a range\n if (firstAudienceFirstWord === 'Reception') {\n firstAudienceString = 'R';\n } else {\n // All other audiences will be abbreviated to \"KS1/KS2\"\n firstAudienceString = `KS${firstAudienceNumber}`;\n }\n\n // The last audience will always be a key stage, so abbreviate this too\n lastAudienceString = `KS${lastAudienceNumber}`;\n\n // If the audience range contains both the \"Lower\" and \"Upper\" audiences, abbreviate those and return\n if (firstAudienceFirstWord === 'Lower' && lastAudienceFirstWord === 'Upper') {\n return `L ${firstAudienceString} - U ${lastAudienceString}`;\n }\n\n // Add \"Lower\" and \"Upper\" to the strings if it's needed\n if (firstAudienceFirstWord === 'Lower') {\n firstAudienceString = `Lower ${firstAudienceString}`;\n }\n\n if (lastAudienceFirstWord === 'Upper') {\n lastAudienceString = `Upper ${lastAudienceString}`;\n }\n\n // This handles a case where the range is Reception - Key Stage 1. In which case we don't abbreviate the key stage part to KS1.\n if (lastAudienceFirstWord === 'Key') {\n lastAudienceString = lastAudience.name;\n }\n\n return `${firstAudienceString} - ${lastAudienceString}`;\n }\n};\n\nfunction processAudienceRanges(audienceValues: number[]): string[] {\n /**\n * Lookahead by increments of offset\n */\n const offset = COUNT_OFFSET;\n\n let initialVal; let nextVal;\n let isContinguous: boolean = false;\n\n const ranges: string[] = [];\n\n // Audience values need to be in ascending order\n audienceValues = audienceValues.sort((a, b) => a - b);\n\n let i; let j;\n\n for (i = 0; i < audienceValues.length; i++) {\n j = i + 1;\n\n // Set our lower boundary to compare against\n if (!isContinguous)\n initialVal = audienceValues[i];\n\n nextVal = audienceValues[j];\n\n /**\n * Where the next number is also the next incremental value\n * we're going to continue iterating until the next value\n * is no longer contiguos.\n */\n if (audienceValues[i] + offset === nextVal) {\n isContinguous = true;\n } else if (isContinguous) {\n /**\n * Where we were tracking a contiguous set, format appropriately \n * and store the vals\n */\n\n ranges.push(`${initialVal} - ${audienceValues[i]}`);\n isContinguous = false;\n } else {\n /**\n * Where the values arent contiguous, just store the current value\n */\n\n ranges.push(`${audienceValues[i]}`);\n isContinguous = false;\n }\n }\n\n return ranges;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { Audience, BaseObject, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { AudienceStringBuilders } from './AudienceStringBuilders';\n\nconst DIGIT_REGEX = /([0-9]+)/ig;\nconst SPACE_REGEX = /\\s|\\+/ig;\n\n/**\n * Where there is 1 or less audiences on a presentation, it provides little value to\n * the user's experience, so we'll hide audiences altogether.\n */\nconst MIN_AUDIENCE_THRESHOLD = 1;\n\nexport const AudienceHelper = {\n /**\n * This is needed to sort an object's audiences, as they are not sorted by the backend.\n * To do this, we take the presentation audiences (sorted) and filter them by the object's\n * audiences, leaving behind a sorted array of object audiences.\n */\n getSortedPresentationAudiences(\n objectAudiences: Audience[],\n presentationAudiences: PresentationAudience[]\n ): PresentationAudience[] {\n /**\n * Atm there is a bug in flight's optimize, around multiple parts of the page \n * fetching the same object with a different response. We are filtering out\n * falsey values in our object audience ids until that's fixed. - Sha\n */\n const objectAudienceIds = objectAudiences\n .filter(v => !!v)\n .map(audience => audience.id.toString());\n\n /**\n * Remove audiences that aren't relevant for the user's current presentation\n */\n const filteredAudiences = presentationAudiences.filter(presAudience => {\n return objectAudienceIds.includes(presAudience.masterId.toString());\n });\n\n return filteredAudiences;\n },\n\n /**\n * This function accepts a set of presentation audiences, and returns a single\n * audience where the name is a merged string of the names of all of the audiences passed in.\n *\n * As we add more presentations that have different audience sets, we'll need to extend the `switch`\n * statement below to either include new string builder functions, or to include new presentation IDs\n * for existing string builder functions.\n */\n getMergedPresentationAudienceString(presentationAudiences: PresentationAudience[]): PresentationAudience {\n const { presentationId } = ArrayHelper.first(presentationAudiences);\n\n let mergedAudienceString = '';\n\n switch (+presentationId) {\n // Generic `Name Number`. Sometimes has just name. Examples: Year 12, Grade 4, Kindergarten\n case HardCoded.PresentationIds.DEFAULT:\n case HardCoded.PresentationIds.AU_SECONDARY:\n case HardCoded.PresentationIds.US_ELEMENTARY:\n case HardCoded.PresentationIds.AU_PRIMARY:\n case HardCoded.PresentationIds.STREAMABLE_LEARNING:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.yearsAndGradesBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.INTERNATIONAL_SECONDARY:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n // TODO: Implement this properly\n mergedAudienceString = AudienceStringBuilders.internationalSecondaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.INTERNATIONAL_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.internationalPrimaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.SCOTLAND_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.scotlandPrimaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.ENGLISH_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.englandSecondaryBuilder(presentationAudiences);\n break;\n\n \n case HardCoded.PresentationIds.SCOTLAND_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.scotlandSecondaryBuilder(presentationAudiences);\n break;\n\n // Key Stage 1, Lower Key Stage 2, etc.\n case HardCoded.PresentationIds.ENGLAND_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.englandPrimaryBuilder(presentationAudiences);\n break;\n\n // These presentations only have 1 audience mapped. These are never shown as badges in the product.\n case HardCoded.PresentationIds.US_MIDDLE:\n case HardCoded.PresentationIds.US_HIGH:\n case HardCoded.PresentationIds.AU_TERTIARY:\n case HardCoded.PresentationIds.UK_TERTIARY:\n default:\n break;\n }\n\n if (!mergedAudienceString)\n return null;\n\n return { name: mergedAudienceString } as PresentationAudience;\n },\n\n /**\n * This function assumes the members array passed in is ordered by `name`.\n */\n sortMembersWithDuplicateNamesByAudience(members: BaseObject[]): BaseObject[] {\n // Returns the lowest level audience out of an array of audience objects by looking at the name\n const getLowestAudience = (audiences: Audience[]) => {\n if (!audiences.length)\n return null;\n\n let lowestAudience: Audience;\n let lowestAudienceDigit: number;\n\n audiences.forEach(audience => {\n const digit = +ArrayHelper.first(audience.name.match(DIGIT_REGEX));\n\n if (!lowestAudience) {\n lowestAudience = audience;\n lowestAudienceDigit = digit;\n return;\n }\n\n if (digit < lowestAudienceDigit)\n lowestAudience = audience;\n });\n\n return lowestAudience;\n };\n\n // This is used to track how many times a member's name appears in the collection\n const nameCountMap: HashObject<number> = {};\n\n let sorted: BaseObject[] = [];\n\n members.forEach(member => {\n if (!nameCountMap[member.name]) {\n nameCountMap[member.name] = 1;\n sorted.push(member);\n return;\n }\n\n sorted.push(member);\n nameCountMap[member.name]++;\n\n // Take the slice of duplicates that we want to sort by audience\n const slice = sorted.splice(sorted.length - nameCountMap[member.name]);\n\n // Sort the slice by lowest audience\n const sortedSlice = slice.sort((a: any, b: any) => {\n const firstObjLowestAudience = getLowestAudience(a.subjectPresentationAudiences.data);\n const secondObjLowestAudience = getLowestAudience(b.subjectPresentationAudiences.data);\n\n if (!firstObjLowestAudience && secondObjLowestAudience)\n return 1;\n\n if (!secondObjLowestAudience)\n return -1;\n\n const comparison = firstObjLowestAudience.name.localeCompare(secondObjLowestAudience.name);\n\n if (comparison === 0) return comparison;\n\n return comparison > 0 ? -1 : 1;\n });\n\n sorted = sorted.concat(sortedSlice);\n });\n\n return sorted;\n },\n\n getActiveAudiencesFromParams(audiences: PresentationAudience[], params: HashObject = {}): PresentationAudience[] {\n if (!ObjectHelper.isObject(params) || ObjectHelper.isEmpty(params))\n return;\n\n if (!audiences || !audiences.length)\n return;\n\n if (!AudienceHelper.shouldShowAudiences(audiences))\n return;\n\n // 'a' is shorthand for audience\n let { a } = params;\n\n if (!a)\n return;\n\n // Only a single query param was passed, we'll wrap it in an array\n if (typeof a === 'string')\n a = [a];\n\n const normalizeAudienceName = (audienceName: string) => {\n return audienceName.replace(SPACE_REGEX, '').toLowerCase();\n };\n\n // Build an audience lookup\n const audienceLookup = a.reduce((state: HashObject, audienceStr: string) => {\n state[normalizeAudienceName(audienceStr)] = audienceStr;\n return state;\n }, {});\n\n // Filter out our active audience based on whether their name matches the lookup object\n return audiences.filter((audience: PresentationAudience) => {\n return audienceLookup[normalizeAudienceName(audience.name)];\n });\n },\n\n getAudienceParams(audiences: PresentationAudience[]): HashObject {\n if (!audiences?.length)\n return null;\n\n return { a: audiences.map(a => a.name) };\n },\n\n shouldShowAudiences(audiences: PresentationAudience[] = []): boolean {\n if (!audiences)\n return false;\n\n return audiences.length > MIN_AUDIENCE_THRESHOLD;\n }\n};\n"],"names":["BaseLinkifyOptions","className","defaultProtocol","LinkifyHelper","linkifyText","text","options","ops","InnerContent","props","video","description","VideoHelper","canNavigate","showSignIn","hasCaptions","subtitles","data","length","Badge","type","productionYear","dangerouslySetInnerHTML","__html","VideoItemDescription","isMobile","hasUserRestrictions","RestrictionHelper","RestrictionType","RestrictionBadge","restrictions","yearGroups","inline","VideoItemRestrictionBadge","hasRestrictions","canConsume","_restrictions","VideoItemTitle","title","analyticsData","id","name","analyticsOptions","actionType","descriptor","titleContainerClassname","textClassName","titleTextClassName","size","linkClassName","appLink","onClick","onClickAppLink","lockSize","showNewVideoIndicator","headingClassName","namespace","InteractiveItemQuestions","totalToDisplay","mediaQuery","questionDisplayLimit","timepoints","interactionsToShow","interactionCount","forEach","timepoint","interactions","interaction","typeId","interactionData","JSON","parse","interactionToShow","params","t","Math","floor","visibleAt","push","totalInteractions","reduce","acc","map","i","key","smallIcon","previewAppLink","phrase","questionsShown","smartCount","useGetMediaQueryString","isXS","isSM","isMD","isLG","isXL","isXXL","currentString","useMergeAudiences","audiences","presentationAudiences","sortedAudiences","HAS_NUMBER_REGEX","AudienceStringBuilders","yearsAndGradesBuilder","combinedNames","a","join","numberList","split","filter","isNaN","num","wordList","audienceWithoutNum","find","p","test","prefix","charAt","pop","audienceRange","audienceValues","initialVal","nextVal","j","isContinguous","ranges","sort","b","processAudienceRanges","internationalSecondaryBuilder","englandSecondaryBuilder","scotlandPrimaryBuilder","firstAudience","ArrayHelper","lastAudience","firstAudienceLevel","lastAudienceLevel","internationalPrimaryBuilder","toLowerCase","scotlandSecondaryBuilder","englandPrimaryBuilder","firstAudienceFirstWord","lastAudienceFirstWord","firstAudienceNumber","word","lastAudienceNumber","firstAudienceString","lastAudienceString","DIGIT_REGEX","SPACE_REGEX","AudienceHelper","getSortedPresentationAudiences","objectAudiences","objectAudienceIds","v","audience","toString","presAudience","includes","masterId","getMergedPresentationAudienceString","mergedAudienceString","presentationId","HardCoded","sortMembersWithDuplicateNamesByAudience","members","getLowestAudience","digit","match","lowestAudience","lowestAudienceDigit","nameCountMap","sorted","member","sortedSlice","splice","firstObjLowestAudience","subjectPresentationAudiences","secondObjLowestAudience","comparison","localeCompare","concat","getActiveAudiencesFromParams","ObjectHelper","shouldShowAudiences","normalizeAudienceName","audienceName","replace","audienceLookup","state","audienceStr","getAudienceParams"],"sourceRoot":""}
@@ -1,2 +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),j=Z.dashboardNewVideosCount,I=Z.childDashboardNewVideoCount,L=Z.dashboardResourceCount,T=Z.childDashboardResourceCount,V=Z.dashboardVideoCount,A=Z.childDashboardVideoCount,D=Z.childClassificationCount,F=V+A,P=L+T,R=j+I,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 ".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=(null===(t=e.data)||void 0===t?void 0:t.status)===c.W.ComingSoon,h=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),y=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:!!b}),C=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:y,analyticsOptions:C,coverUrl:null===(m=e.data.cover)||void 0===m?void 0:m.url,subtitle:(null===(u=e.getSubtitle)||void 0===u?void 0:u.call(e,e.data))||h,isComingSoon:b,themeColor:(null===(v=e.shouldHighlight)||void 0===v?void 0:v.call(e,e.data))&&null!==(f=null===(p=null===(g=e.data)||void 0===g?void 0:g.metadata)||void 0===p?void 0:p.backgroundColor)&&void 0!==f?f:""}))}))},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"}},68050:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(95685),i=a.n(n),o=a(32735),l=a(46304),c=a(74512);const r=o.forwardRef((({bsPrefix:e,className:t,as:a="div",...n},o)=>{const r=(0,l.vE)(e,"row"),s=(0,l.pi)(),d=(0,l.zG)(),m=`${r}-cols`,u=[];return s.forEach((e=>{const t=n[e];let a;delete n[e],null!=t&&"object"==typeof t?({cols:a}=t):a=t;const i=e!==d?`-${e}`:"";null!=a&&u.push(`${m}${i}-${a}`)})),(0,c.jsx)(a,{ref:o,...n,className:i()(t,r,...u)})}));r.displayName="Row";const s=r}}]);
2
- //# sourceMappingURL=6919-0f2cef64e5-lite.chunk.js.map
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),j=Z.dashboardNewVideosCount,I=Z.childDashboardNewVideoCount,L=Z.dashboardResourceCount,T=Z.childDashboardResourceCount,V=Z.dashboardVideoCount,A=Z.childDashboardVideoCount,D=Z.childClassificationCount,F=V+A,P=L+T,R=j+I,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 ".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"}},68050:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(95685),i=a.n(n),o=a(32735),l=a(46304),c=a(74512);const r=o.forwardRef((({bsPrefix:e,className:t,as:a="div",...n},o)=>{const r=(0,l.vE)(e,"row"),s=(0,l.pi)(),d=(0,l.zG)(),m=`${r}-cols`,u=[];return s.forEach((e=>{const t=n[e];let a;delete n[e],null!=t&&"object"==typeof t?({cols:a}=t):a=t;const i=e!==d?`-${e}`:"";null!=a&&u.push(`${m}${i}-${a}`)})),(0,c.jsx)(a,{ref:o,...n,className:i()(t,r,...u)})}));r.displayName="Row";const s=r}}]);
2
+ //# sourceMappingURL=6919-8f60ca2263-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/6919-8f60ca2263-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","file:///app/node_modules/react-bootstrap/esm/Row.js"],"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 ${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\"};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"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","bsPrefix","as","Component","ref","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","forEach","brkPoint","propValue","cols","infix","push","displayName"],"sourceRoot":""}