@clickview/streamable-learning 0.48.0-rc.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/.vite/manifest.json +650 -650
  2. package/dist/bundles.json +1 -1
  3. package/dist/css/DU3tPCD_.chunk.css +12 -0
  4. package/dist/en.json +1 -1
  5. package/dist/scripts/{CeWjJPIz.chunk.js → BIisq8ZO.chunk.js} +2 -2
  6. package/dist/scripts/{CeWjJPIz.chunk.js.map → BIisq8ZO.chunk.js.map} +1 -1
  7. package/dist/scripts/{DxsW8K0n2.chunk.js → BWU6_pPN2.chunk.js} +2 -2
  8. package/dist/scripts/{DxsW8K0n2.chunk.js.map → BWU6_pPN2.chunk.js.map} +1 -1
  9. package/dist/scripts/{BMjES83N2.chunk.js → BcZFo9Vw2.chunk.js} +2 -2
  10. package/dist/scripts/{BMjES83N2.chunk.js.map → BcZFo9Vw2.chunk.js.map} +1 -1
  11. package/dist/scripts/Bd2bbHru.chunk.js +1 -0
  12. package/dist/scripts/{0xQRFMBY.chunk.js → BfNy0Hvk.chunk.js} +2 -2
  13. package/dist/scripts/{0xQRFMBY.chunk.js.map → BfNy0Hvk.chunk.js.map} +1 -1
  14. package/dist/scripts/{C9UjF0q6.chunk.js → BivP7X20.chunk.js} +2 -2
  15. package/dist/scripts/{C9UjF0q6.chunk.js.map → BivP7X20.chunk.js.map} +1 -1
  16. package/dist/scripts/{DrDQfaFN2.chunk.js → BjbY4Fbp2.chunk.js} +3 -3
  17. package/dist/scripts/{DrDQfaFN2.chunk.js.map → BjbY4Fbp2.chunk.js.map} +1 -1
  18. package/dist/scripts/{awemA_vU2.chunk.js → BmxcE73n2.chunk.js} +2 -2
  19. package/dist/scripts/{awemA_vU2.chunk.js.map → BmxcE73n2.chunk.js.map} +1 -1
  20. package/dist/scripts/{BMl02f_62.chunk.js → BnEMhkEE2.chunk.js} +2 -2
  21. package/dist/scripts/{BMl02f_62.chunk.js.map → BnEMhkEE2.chunk.js.map} +1 -1
  22. package/dist/scripts/{DmfbtOlu.chunk.js → Buc8GegC.chunk.js} +2 -2
  23. package/dist/scripts/{DmfbtOlu.chunk.js.map → Buc8GegC.chunk.js.map} +1 -1
  24. package/dist/scripts/{DvL3J2BU.chunk.js → Byczy1lS.chunk.js} +2 -2
  25. package/dist/scripts/{DvL3J2BU.chunk.js.map → Byczy1lS.chunk.js.map} +1 -1
  26. package/dist/scripts/{BV74ZRR22.chunk.js → C2itEpvc2.chunk.js} +2 -2
  27. package/dist/scripts/{BV74ZRR22.chunk.js.map → C2itEpvc2.chunk.js.map} +1 -1
  28. package/dist/scripts/{UAcFqQzZ.chunk.js → CEFKXxac.chunk.js} +2 -2
  29. package/dist/scripts/{UAcFqQzZ.chunk.js.map → CEFKXxac.chunk.js.map} +1 -1
  30. package/dist/scripts/{B7if0Lk52.chunk.js → CEYjJAp52.chunk.js} +2 -2
  31. package/dist/scripts/{B7if0Lk52.chunk.js.map → CEYjJAp52.chunk.js.map} +1 -1
  32. package/dist/scripts/{B1jitqYS2.chunk.js → CJSc4YDq2.chunk.js} +2 -2
  33. package/dist/scripts/{B1jitqYS2.chunk.js.map → CJSc4YDq2.chunk.js.map} +1 -1
  34. package/dist/scripts/{JtFbyaXc.chunk.js → CKUA5J3R.chunk.js} +2 -2
  35. package/dist/scripts/{JtFbyaXc.chunk.js.map → CKUA5J3R.chunk.js.map} +1 -1
  36. package/dist/scripts/{DNO0KpY72.chunk.js → CYrzupmS2.chunk.js} +2 -2
  37. package/dist/scripts/{DNO0KpY72.chunk.js.map → CYrzupmS2.chunk.js.map} +1 -1
  38. package/dist/scripts/{E9tNds1l.chunk.js → CcGYZb9f.chunk.js} +2 -2
  39. package/dist/scripts/{E9tNds1l.chunk.js.map → CcGYZb9f.chunk.js.map} +1 -1
  40. package/dist/scripts/{CibcLNJP2.chunk.js → CeQGaFi-2.chunk.js} +2 -2
  41. package/dist/scripts/{CibcLNJP2.chunk.js.map → CeQGaFi-2.chunk.js.map} +1 -1
  42. package/dist/scripts/{BqO6i89w2.chunk.js → Cr3Blj6H2.chunk.js} +2 -2
  43. package/dist/scripts/{BqO6i89w2.chunk.js.map → Cr3Blj6H2.chunk.js.map} +1 -1
  44. package/dist/scripts/{D0vsmyva.chunk.js → CxCkwLio.chunk.js} +2 -2
  45. package/dist/scripts/{D0vsmyva.chunk.js.map → CxCkwLio.chunk.js.map} +1 -1
  46. package/dist/scripts/{CvqqZmNo2.chunk.js → Cxj75Dqe2.chunk.js} +2 -2
  47. package/dist/scripts/{CvqqZmNo2.chunk.js.map → Cxj75Dqe2.chunk.js.map} +1 -1
  48. package/dist/scripts/{CcDgbmw52.chunk.js → D-VNmhoM2.chunk.js} +2 -2
  49. package/dist/scripts/{CcDgbmw52.chunk.js.map → D-VNmhoM2.chunk.js.map} +1 -1
  50. package/dist/scripts/{DAvXFgC62.chunk.js → D2FqnK9m2.chunk.js} +2 -2
  51. package/dist/scripts/{DAvXFgC62.chunk.js.map → D2FqnK9m2.chunk.js.map} +1 -1
  52. package/dist/scripts/{lokG7Sha2.chunk.js → D3sdyN2Q2.chunk.js} +2 -2
  53. package/dist/scripts/{lokG7Sha2.chunk.js.map → D3sdyN2Q2.chunk.js.map} +1 -1
  54. package/dist/scripts/{KCdpQ8qv2.chunk.js → D6IzS-bj2.chunk.js} +2 -2
  55. package/dist/scripts/{KCdpQ8qv2.chunk.js.map → D6IzS-bj2.chunk.js.map} +1 -1
  56. package/dist/scripts/{CPkKuTSK2.chunk.js → D8g6nOG92.chunk.js} +2 -2
  57. package/dist/scripts/{CPkKuTSK2.chunk.js.map → D8g6nOG92.chunk.js.map} +1 -1
  58. package/dist/scripts/{Bkv1Tbyu.chunk.js → DCKKwz9L.chunk.js} +2 -2
  59. package/dist/scripts/{Bkv1Tbyu.chunk.js.map → DCKKwz9L.chunk.js.map} +1 -1
  60. package/dist/scripts/{CeI-LCE-.chunk.js → DL4UFxRK.chunk.js} +2 -2
  61. package/dist/scripts/{CeI-LCE-.chunk.js.map → DL4UFxRK.chunk.js.map} +1 -1
  62. package/dist/scripts/{DLp7yHzT2.chunk.js → DLofRa642.chunk.js} +2 -2
  63. package/dist/scripts/{DLp7yHzT2.chunk.js.map → DLofRa642.chunk.js.map} +1 -1
  64. package/dist/scripts/{BSjm_rCE.chunk.js → DMZ--ok1.chunk.js} +2 -2
  65. package/dist/scripts/{BSjm_rCE.chunk.js.map → DMZ--ok1.chunk.js.map} +1 -1
  66. package/dist/scripts/{CikSQKH-.chunk.js → DQFcbMMk.chunk.js} +2 -2
  67. package/dist/scripts/{CikSQKH-.chunk.js.map → DQFcbMMk.chunk.js.map} +1 -1
  68. package/dist/scripts/{XnBhLH-02.chunk.js → DVeqPzBe2.chunk.js} +2 -2
  69. package/dist/scripts/{XnBhLH-02.chunk.js.map → DVeqPzBe2.chunk.js.map} +1 -1
  70. package/dist/scripts/{Clh6wBrg.chunk.js → DWerltCT.chunk.js} +2 -2
  71. package/dist/scripts/{Clh6wBrg.chunk.js.map → DWerltCT.chunk.js.map} +1 -1
  72. package/dist/scripts/{i2-k6ULv2.chunk.js → DatscYpA2.chunk.js} +2 -2
  73. package/dist/scripts/{i2-k6ULv2.chunk.js.map → DatscYpA2.chunk.js.map} +1 -1
  74. package/dist/scripts/{BXT8nHry2.chunk.js → DkaGC5IU2.chunk.js} +2 -2
  75. package/dist/scripts/{BXT8nHry2.chunk.js.map → DkaGC5IU2.chunk.js.map} +1 -1
  76. package/dist/scripts/{BoxedFO8.chunk.js → DqZWSPDJ.chunk.js} +2 -2
  77. package/dist/scripts/{BoxedFO8.chunk.js.map → DqZWSPDJ.chunk.js.map} +1 -1
  78. package/dist/scripts/{CoYNU7We2.chunk.js → Dql-1E6g2.chunk.js} +2 -2
  79. package/dist/scripts/{CoYNU7We2.chunk.js.map → Dql-1E6g2.chunk.js.map} +1 -1
  80. package/dist/scripts/{DNNNPLMp.chunk.js → DuBHin02.chunk.js} +2 -2
  81. package/dist/scripts/{DNNNPLMp.chunk.js.map → DuBHin02.chunk.js.map} +1 -1
  82. package/dist/scripts/{CK6c6uHp2.chunk.js → QMuFwiiF2.chunk.js} +2 -2
  83. package/dist/scripts/{CK6c6uHp2.chunk.js.map → QMuFwiiF2.chunk.js.map} +1 -1
  84. package/dist/scripts/{NV4_mMU8.chunk.js → U_sIlzAD.chunk.js} +2 -2
  85. package/dist/scripts/{NV4_mMU8.chunk.js.map → U_sIlzAD.chunk.js.map} +1 -1
  86. package/dist/scripts/{m9QbGES0.chunk.js → WLyOm9Lj.chunk.js} +2 -2
  87. package/dist/scripts/{m9QbGES0.chunk.js.map → WLyOm9Lj.chunk.js.map} +1 -1
  88. package/dist/scripts/{DlQrdOls.chunk.js → Ymq7JLkU.chunk.js} +2 -2
  89. package/dist/scripts/{DlQrdOls.chunk.js.map → Ymq7JLkU.chunk.js.map} +1 -1
  90. package/dist/scripts/{app-B1XBsz23.js → app-gjHxcZG3.js} +4 -4
  91. package/dist/scripts/app-gjHxcZG3.js.map +1 -0
  92. package/dist/scripts/{DIHDe4Sg.chunk.js → djRnI462.chunk.js} +2 -2
  93. package/dist/scripts/{DIHDe4Sg.chunk.js.map → djRnI462.chunk.js.map} +1 -1
  94. package/dist/scripts/{BDliRFoa.chunk.js → e2K2YU7z.chunk.js} +2 -2
  95. package/dist/scripts/{BDliRFoa.chunk.js.map → e2K2YU7z.chunk.js.map} +1 -1
  96. package/dist/scripts/{CpFOQcL7.chunk.js → fnfhCa1P.chunk.js} +2 -2
  97. package/dist/scripts/{CpFOQcL7.chunk.js.map → fnfhCa1P.chunk.js.map} +1 -1
  98. package/dist/scripts/{Dd8r1SE32.chunk.js → iyIL3kim2.chunk.js} +2 -2
  99. package/dist/scripts/{Dd8r1SE32.chunk.js.map → iyIL3kim2.chunk.js.map} +1 -1
  100. package/dist/scripts/{BKbKu9Rp.chunk.js → kfFYr9dc.chunk.js} +2 -2
  101. package/dist/scripts/{BKbKu9Rp.chunk.js.map → kfFYr9dc.chunk.js.map} +1 -1
  102. package/dist/scripts/{CwI-7tep2.chunk.js → kts5xiiM2.chunk.js} +2 -2
  103. package/dist/scripts/{CwI-7tep2.chunk.js.map → kts5xiiM2.chunk.js.map} +1 -1
  104. package/dist/scripts/{D8_5yfHY2.chunk.js → lLAYbgAy2.chunk.js} +2 -2
  105. package/dist/scripts/{D8_5yfHY2.chunk.js.map → lLAYbgAy2.chunk.js.map} +1 -1
  106. package/dist/scripts/{CXNve4Wq2.chunk.js → p9ukva5a2.chunk.js} +2 -2
  107. package/dist/scripts/{CXNve4Wq2.chunk.js.map → p9ukva5a2.chunk.js.map} +1 -1
  108. package/dist/scripts/{BCdnm1Nn.chunk.js → wOeN2ls0.chunk.js} +2 -2
  109. package/dist/scripts/{BCdnm1Nn.chunk.js.map → wOeN2ls0.chunk.js.map} +1 -1
  110. package/dist/scripts/{DMq5Gp-U2.chunk.js → zp2BHOp82.chunk.js} +2 -2
  111. package/dist/scripts/{DMq5Gp-U2.chunk.js.map → zp2BHOp82.chunk.js.map} +1 -1
  112. package/dist/scripts/{CmrPRojb.chunk.js → zyVwH8JF.chunk.js} +2 -2
  113. package/dist/scripts/{CmrPRojb.chunk.js.map → zyVwH8JF.chunk.js.map} +1 -1
  114. package/package.json +1 -1
  115. package/dist/scripts/D5Jnyjf8.chunk.js +0 -1
  116. package/dist/scripts/app-B1XBsz23.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import"./Dp9qJj1C.chunk.js";import{r as e}from"./BJvPfCvt.chunk.js";import{t}from"./ImQRQGZr.chunk.js";import{M as n,lt as r,ut as i}from"./Dun43GrB.chunk.js";import{l as a}from"./BQ5XMoHG.chunk.js";import{t as o}from"./B7tm2CBz.chunk.js";import{t as s}from"./BVWg3YHX.chunk.js";import{i as c}from"./CEsevkum.chunk.js";import{n as l,t as u}from"./BDliRFoa.chunk.js";import{n as d}from"./D7d5XFW82.chunk.js";import{n as f,t as p}from"./DjIdG9LL2.chunk.js";import{n as m,t as h}from"./CL1ST5J62.chunk.js";import{t as g}from"./DUNFBIIl2.chunk.js";import{r as _}from"./B8R4YVaF2.chunk.js";import{n as v,t as y}from"./Bx_V3too2.chunk.js";import{t as b}from"./iTHYgnO8.chunk.js";import{I as x,M as S,X as C,q as w}from"./app-B1XBsz23.js";import{t as T}from"./BRiYVLuz.chunk.js";import{t as E}from"./CwttNCGZ.chunk.js";import{t as D}from"./C9tPKnK22.chunk.js";import{n as O,r as k,t as A}from"./NV4_mMU8.chunk.js";import{t as j}from"./BlBCp_pE.chunk.js";import{t as M}from"./CeI-LCE-.chunk.js";import{t as N}from"./C9UjF0q6.chunk.js";i();var P=r(),F=`streamable.dashboardEmptyState`,I=t.encloseNamespace(F);function L(n){let r=n.dashboard?.status===y.Archived;return(0,P.jsxs)(b,{children:[(0,P.jsx)(b.Image,{src:n.imageUrl,altText:I(`info`)}),(0,P.jsx)(b.Heading,{children:(0,P.jsx)(d,{namespace:F,phrase:`heading`})}),(0,P.jsx)(b.Info,{children:(0,P.jsx)(d,{namespace:F,phrase:`info`})}),(0,P.jsx)(e,{title:r?t.getPhrase(F,`archivedCtaTooltip`):``,spanHack:!0,children:(0,P.jsx)(b.Cta,{text:t.getPhrase(F,`add`),appLink:n.addWidgetApplink?.(),className:`btn btn-dark`,icon:E,disabled:r})})]})}function R(e){let t=o.sortBy(e.dashboard?.widgets,`index`),{hasPermissions:n,hasLocalPermissions:r}=S();function i(t,n,r){let i=_.getWidgetParams(n,r,_.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,i,r)}let a=e.isReadonly&&!t?.length;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(k,{active:`discover`,appLinks:e.headerAppLinks}),t.map((t,a)=>(0,P.jsx)(l,{widgetCollection:v.Discover,id:t.id,getContentRequest:i,audiences:e.audiences,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,presentation:e.presentation,appLinks:e.widgetAppLinks,isScrollToTargetWidget:e?.scrollToWidgetId===t.id,widgetTypeId:t.widgetId,lazyLoad:e.lazyLoad,dashboardTarget:v.Discover,widgetIndex:a,isPreviewing:e.isReadonly,contentType:g.Livestream,preferences:t.preferences,hasPermissions:n,hasLocalPermissions:r,isTertiaryCustomerWithoutExchange:!1,preventPopout:!0,imageCdnUrl:e.commonVideoProps.imageCdnUrl,commonVideoProps:e.commonVideoProps,availablePresentations:void 0,classification:void 0,hasTableOfContents:void 0,onSubmitFeedback:void 0,settings:void 0,updatePreferences:void 0,seeMoreLink:void 0,onClickRemoveItem:void 0,badgeComponent:void 0},t.id)),a&&(0,P.jsx)(L,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard})]})}var z=t.encloseNamespace(`streamableDashboard.dashboard`);function B(e){return e?n.pick(e,[`a`,`dashboardId`]):{}}function V(e){let{commonVideoProps:t}=M(),n=a(C.config()),r=a(w.streamablePresentation()),i=a(r.data&&T.presentationAudiences(s.StreamableLearning,r.data.id)),{dashboard:o}=u({targetType:v.Discover,dashboardId:e.queryParams?.dashboardId}),[l]=m(h.AUDIENCE_FILTER,void 0,{storage:c.SessionStorage}),d=A(D.getAudienceParams(l));return p(f.getDiscoverMetadata({content:r.data,phraseContext:{phraseHandler:z,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},canonicalLink:j.getCanonicalLink(),allowIndexing:!0,product:x.PRODUCT_NAME})),n.hasCompleted&&o.hasCompleted&&r.hasCompleted&&i.hasCompleted?(0,P.jsx)(`div`,{className:`bg-white px-4`,children:(0,P.jsx)(R,{dashboard:o.data,widgetAppLinks:d,headerAppLinks:O(),presentation:r.data,getWidgetContentRequest:N.dashboardWidgetContent,audiences:i.data,lazyLoad:!j.isBot(),commonVideoProps:t})}):(0,P.jsx)(P.Fragment,{})}export{V as DashboardView,B as sanitizeDashboardViewParams};
2
- //# sourceMappingURL=DMq5Gp-U2.chunk.js.map
1
+ import"./Dp9qJj1C.chunk.js";import{r as e}from"./BJvPfCvt.chunk.js";import{t}from"./ImQRQGZr.chunk.js";import{M as n,lt as r,ut as i}from"./Dun43GrB.chunk.js";import{l as a}from"./BQ5XMoHG.chunk.js";import{t as o}from"./B7tm2CBz.chunk.js";import{t as s}from"./BVWg3YHX.chunk.js";import{i as c}from"./CEsevkum.chunk.js";import{n as l,t as u}from"./e2K2YU7z.chunk.js";import{n as d}from"./D7d5XFW82.chunk.js";import{n as f,t as p}from"./DjIdG9LL2.chunk.js";import{n as m,t as h}from"./CL1ST5J62.chunk.js";import{t as g}from"./DUNFBIIl2.chunk.js";import{r as _}from"./B8R4YVaF2.chunk.js";import{n as v,t as y}from"./Bx_V3too2.chunk.js";import{t as b}from"./iTHYgnO8.chunk.js";import{I as x,M as S,X as C,q as w}from"./app-gjHxcZG3.js";import{t as T}from"./BRiYVLuz.chunk.js";import{t as E}from"./CwttNCGZ.chunk.js";import{t as D}from"./C9tPKnK22.chunk.js";import{n as O,r as k,t as A}from"./U_sIlzAD.chunk.js";import{t as j}from"./BlBCp_pE.chunk.js";import{t as M}from"./DL4UFxRK.chunk.js";import{t as N}from"./BivP7X20.chunk.js";i();var P=r(),F=`streamable.dashboardEmptyState`,I=t.encloseNamespace(F);function L(n){let r=n.dashboard?.status===y.Archived;return(0,P.jsxs)(b,{children:[(0,P.jsx)(b.Image,{src:n.imageUrl,altText:I(`info`)}),(0,P.jsx)(b.Heading,{children:(0,P.jsx)(d,{namespace:F,phrase:`heading`})}),(0,P.jsx)(b.Info,{children:(0,P.jsx)(d,{namespace:F,phrase:`info`})}),(0,P.jsx)(e,{title:r?t.getPhrase(F,`archivedCtaTooltip`):``,spanHack:!0,children:(0,P.jsx)(b.Cta,{text:t.getPhrase(F,`add`),appLink:n.addWidgetApplink?.(),className:`btn btn-dark`,icon:E,disabled:r})})]})}function R(e){let t=o.sortBy(e.dashboard?.widgets,`index`),{hasPermissions:n,hasLocalPermissions:r}=S();function i(t,n,r){let i=_.getWidgetParams(n,r,_.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,i,r)}let a=e.isReadonly&&!t?.length;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(k,{active:`discover`,appLinks:e.headerAppLinks}),t.map((t,a)=>(0,P.jsx)(l,{widgetCollection:v.Discover,id:t.id,getContentRequest:i,audiences:e.audiences,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,presentation:e.presentation,appLinks:e.widgetAppLinks,isScrollToTargetWidget:e?.scrollToWidgetId===t.id,widgetTypeId:t.widgetId,lazyLoad:e.lazyLoad,dashboardTarget:v.Discover,widgetIndex:a,isPreviewing:e.isReadonly,contentType:g.Livestream,preferences:t.preferences,hasPermissions:n,hasLocalPermissions:r,isTertiaryCustomerWithoutExchange:!1,preventPopout:!0,imageCdnUrl:e.commonVideoProps.imageCdnUrl,commonVideoProps:e.commonVideoProps,availablePresentations:void 0,classification:void 0,hasTableOfContents:void 0,onSubmitFeedback:void 0,settings:void 0,updatePreferences:void 0,seeMoreLink:void 0,onClickRemoveItem:void 0,badgeComponent:void 0},t.id)),a&&(0,P.jsx)(L,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard})]})}var z=t.encloseNamespace(`streamableDashboard.dashboard`);function B(e){return e?n.pick(e,[`a`,`dashboardId`]):{}}function V(e){let{commonVideoProps:t}=M(),n=a(C.config()),r=a(w.streamablePresentation()),i=a(r.data&&T.presentationAudiences(s.StreamableLearning,r.data.id)),{dashboard:o}=u({targetType:v.Discover,dashboardId:e.queryParams?.dashboardId}),[l]=m(h.AUDIENCE_FILTER,void 0,{storage:c.SessionStorage}),d=A(D.getAudienceParams(l));return p(f.getDiscoverMetadata({content:r.data,phraseContext:{phraseHandler:z,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},canonicalLink:j.getCanonicalLink(),allowIndexing:!0,product:x.PRODUCT_NAME})),n.hasCompleted&&o.hasCompleted&&r.hasCompleted&&i.hasCompleted?(0,P.jsx)(`div`,{className:`bg-white px-4`,children:(0,P.jsx)(R,{dashboard:o.data,widgetAppLinks:d,headerAppLinks:O(),presentation:r.data,getWidgetContentRequest:N.dashboardWidgetContent,audiences:i.data,lazyLoad:!j.isBot(),commonVideoProps:t})}):(0,P.jsx)(P.Fragment,{})}export{V as DashboardView,B as sanitizeDashboardViewParams};
2
+ //# sourceMappingURL=zp2BHOp82.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DMq5Gp-U2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/streamable-learning/components/dashboard/empty-state/StreamableDiscoverDashboardEmptyState.tsx","../../../../libs/shared/src/apps/streamable-learning/components/dashboard/StreamableDiscoverDashboard.tsx","../../src/apps/dashboard/views/dashboard/DashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\n\nconst namespace = 'streamable.dashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamableDiscoverDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function StreamableDiscoverDashboardEmptyState(props: StreamableDiscoverDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={PlusSvg}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { StreamableHeader, StreamableHeaderAppLinks } from 'libs/shared/apps/streamable-learning/components/header/StreamableHeader';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllDiscoverWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CalendarEventContentType, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { StreamableDiscoverDashboardEmptyState } from './empty-state/StreamableDiscoverDashboardEmptyState';\n\nexport interface StreamableDiscoverDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n presentation: Presentation;\n widgetAppLinks?: AllDiscoverWidgetTemplates['appLinks'] & {\n widgetWizard: () => Core.AppLink\n };\n headerAppLinks?: StreamableHeaderAppLinks;\n scrollToWidgetId?: string;\n isReadonly?: boolean;\n lazyLoad?: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function StreamableDiscoverDashboard(props: StreamableDiscoverDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n <StreamableHeader active='discover' appLinks={props.headerAppLinks} />\n\n {widgets.map((widget, idx) => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.Discover}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n lazyLoad={props.lazyLoad}\n dashboardTarget={DashboardTargetType.Discover}\n widgetIndex={idx}\n isPreviewing={props.isReadonly}\n contentType={CalendarEventContentType.Livestream}\n preferences={widget.preferences}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n isTertiaryCustomerWithoutExchange={false}\n preventPopout\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n commonVideoProps={props.commonVideoProps}\n \n availablePresentations={undefined}\n classification={undefined}\n hasTableOfContents={undefined}\n onSubmitFeedback={undefined}\n settings={undefined}\n updatePreferences={undefined}\n seeMoreLink={undefined}\n onClickRemoveItem={undefined}\n badgeComponent={undefined}\n />\n );\n })}\n\n {showEmptyState && (\n <StreamableDiscoverDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { StreamableDiscoverDashboard } from 'libs/shared/apps/streamable-learning/components/dashboard/StreamableDiscoverDashboard';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { PresentationRequests } from 'shared/flight-requests/PresentationRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useFetchDashboard } from 'shared/hooks/useFetchDashboard';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { getDiscoverWidgetAppLinks, getStreamableHeaderAppLinks } from 'apps/dashboard/views/dashboard/DiscoverViewUtils';\n\nconst namespace = 'streamableDashboard.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * NOTE: Ensure any keys added here are also added\n * to sanitizeDashboardParams below.\n */\ninterface DashboardViewQueryParams {\n a?: string[];\n dashboardId?: string;\n}\n\nexport function sanitizeDashboardViewParams(queryParams: DashboardViewQueryParams): DashboardViewQueryParams {\n if (!queryParams)\n return {};\n\n return ObjectHelper.pick(queryParams, [ 'a', 'dashboardId' ]);\n}\n\ninterface DashboardViewProps {\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function DashboardView(props: DashboardViewProps): JSX.Element {\n const { commonVideoProps } = useCommonVideoProps();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const presentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.streamablePresentation()\n );\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n presentation.data &&\n AudienceRequests.presentationAudiences(PresentationType.StreamableLearning, presentation.data.id)\n );\n\n const { dashboard } = useFetchDashboard({\n targetType: DashboardTargetType.Discover,\n dashboardId: props.queryParams?.dashboardId\n });\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n const widgetAppLinks = getDiscoverWidgetAppLinks(AudienceHelper.getAudienceParams(activeAudiences));\n\n useSetPageMetadata(PageMetadataHelper.getDiscoverMetadata({\n content: presentation.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n }));\n\n const hasLoaded = (\n config.hasCompleted &&\n dashboard.hasCompleted &&\n presentation.hasCompleted &&\n audiences.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <div className='bg-white px-4'>\n <StreamableDiscoverDashboard\n dashboard={dashboard.data}\n widgetAppLinks={widgetAppLinks}\n headerAppLinks={getStreamableHeaderAppLinks()}\n presentation={presentation.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n audiences={audiences.data}\n lazyLoad={!SeoHelper.isBot()}\n commonVideoProps={commonVideoProps}\n />\n </div>\n );\n}\n"],"mappings":"ihCAWM,EAAY,iCACZ,EAAY,EAAgB,iBAAiB,EAAU,CAS7D,SAAgB,EAAsC,EAAgE,CACpH,IAAM,EAAa,EAAM,WAAW,SAAW,EAAgB,SAE/D,OACE,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAW,MAAZ,CAAkB,IAAK,EAAM,SAAU,QAAS,EAAU,OAAO,CAAI,CAAA,EACrE,EAAA,EAAA,KAAC,EAAW,QAAZ,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,UAAY,CAAA,CAC5B,CAAA,EACrB,EAAA,EAAA,KAAC,EAAW,KAAZ,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,OAAS,CAAA,CAC5B,CAAA,EAClB,EAAA,EAAA,KAAC,EAAD,CAAS,MAAO,EAAa,EAAgB,UAAU,EAAW,qBAAqB,CAAG,GAAI,SAAA,aAC5F,EAAA,EAAA,KAAC,EAAW,IAAZ,CACE,KAAM,EAAgB,UAAU,EAAW,MAAM,CACjD,QAAS,EAAM,oBAAoB,CACnC,UAAU,eACV,KAAM,EACN,SAAU,EACV,CAAA,CACM,CAAA,CACC,CAAA,CAAA,CCHjB,SAAgB,EAA4B,EAAsD,CAChG,IAAM,EAAU,EAAY,OAAO,EAAM,WAAW,QAAS,QAAQ,CAE/D,CAAE,iBAAgB,uBAAwB,GAAgB,CAEhE,SAAS,EAAwB,EAAY,EAA4B,EAA0C,CACjH,IAAM,EAAS,EAAuB,gBACpC,EACA,EACA,EAAuB,uBAAuB,EAAM,UAAU,CAC/D,CAED,OAAO,EAAM,wBAAwB,EAAI,EAAQ,EAAS,CAG5D,IAAM,EAAiB,EAAM,YAAc,CAAC,GAAS,OAErD,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAD,CAAkB,OAAO,WAAW,SAAU,EAAM,eAAkB,CAAA,CAErE,EAAQ,KAAK,EAAQ,KAElB,EAAA,EAAA,KAAC,EAAD,CACE,iBAAkB,EAAoB,SAEtC,GAAI,EAAO,GACX,kBAAmB,EACnB,UAAW,EAAM,UACjB,KAAM,EAAO,KACb,YAAa,EAAO,YACpB,WAAY,EAAO,WACnB,SAAU,EAAO,SACjB,aAAc,EAAM,aACpB,SAAU,EAAM,eAChB,uBAAwB,GAAO,mBAAqB,EAAO,GAC3D,aAAc,EAAO,SACrB,SAAU,EAAM,SAChB,gBAAiB,EAAoB,SACrC,YAAa,EACb,aAAc,EAAM,WACpB,YAAa,EAAyB,WACtC,YAAa,EAAO,YACJ,iBACK,sBACrB,kCAAmC,GACnC,cAAA,GACA,YAAa,EAAM,iBAAiB,YACpC,iBAAkB,EAAM,iBAExB,uBAAwB,IAAA,GACxB,eAAgB,IAAA,GAChB,mBAAoB,IAAA,GACpB,iBAAkB,IAAA,GAClB,SAAU,IAAA,GACV,kBAAmB,IAAA,GACnB,YAAa,IAAA,GACb,kBAAmB,IAAA,GACnB,eAAgB,IAAA,GAChB,CAlCK,EAAO,GAkCZ,CAEJ,CAED,IACC,EAAA,EAAA,KAAC,EAAD,CACE,UAAW,EAAM,UACjB,WAAY,EAAM,WAClB,SAAU,EAAM,cAChB,iBAAkB,EAAM,eAAe,aACvC,CAAA,CAEH,CAAA,CAAA,CClFP,IAAM,EAAY,EAAgB,iBADhB,gCAC2C,CAW7D,SAAgB,EAA4B,EAAiE,CAI3G,OAHK,EAGE,EAAa,KAAK,EAAa,CAAE,IAAK,cAAe,CAAC,CAFpD,EAAE,CASb,SAAgB,EAAc,EAAwC,CACpE,GAAM,CAAE,oBAAqB,GAAqB,CAE5C,EAAS,EAA6B,EAAe,QAAQ,CAAC,CAE9D,EAAe,EACnB,EAAqB,wBAAwB,CAC9C,CAEK,EAAY,EAChB,EAAa,MACb,EAAiB,sBAAsB,EAAiB,mBAAoB,EAAa,KAAK,GAAG,CAClG,CAEK,CAAE,aAAc,EAAkB,CACtC,WAAY,EAAoB,SAChC,YAAa,EAAM,aAAa,YACjC,CAAC,CAEI,CAAC,GAAmB,EACxB,EAAoB,gBACpB,IAAA,GACA,CAAE,QAAS,EAAY,eAAgB,CACxC,CAEK,EAAiB,EAA0B,EAAe,kBAAkB,EAAgB,CAAC,CAwBnG,OAtBA,EAAmB,EAAmB,oBAAoB,CACxD,QAAS,EAAa,KACtB,cAAe,CACb,cAAe,EACf,YAAa,YACb,kBAAmB,kBACpB,CACD,cAAe,EAAU,kBAAkB,CAC3C,cAAe,GACf,QAAS,EAAoB,aAC9B,CAAC,CAAC,CAGD,EAAO,cACP,EAAU,cACV,EAAa,cACb,EAAU,cAOV,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,0BACb,EAAA,EAAA,KAAC,EAAD,CACE,UAAW,EAAU,KACL,iBAChB,eAAgB,GAA6B,CAC7C,aAAc,EAAa,KAC3B,wBAAyB,EAAkB,uBAC3C,UAAW,EAAU,KACrB,SAAU,CAAC,EAAU,OAAO,CACV,mBAClB,CAAA,CACE,CAAA,EAdC,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA"}
1
+ {"version":3,"file":"zp2BHOp82.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/streamable-learning/components/dashboard/empty-state/StreamableDiscoverDashboardEmptyState.tsx","../../../../libs/shared/src/apps/streamable-learning/components/dashboard/StreamableDiscoverDashboard.tsx","../../src/apps/dashboard/views/dashboard/DashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\n\nconst namespace = 'streamable.dashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamableDiscoverDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function StreamableDiscoverDashboardEmptyState(props: StreamableDiscoverDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={PlusSvg}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { StreamableHeader, StreamableHeaderAppLinks } from 'libs/shared/apps/streamable-learning/components/header/StreamableHeader';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllDiscoverWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CalendarEventContentType, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { StreamableDiscoverDashboardEmptyState } from './empty-state/StreamableDiscoverDashboardEmptyState';\n\nexport interface StreamableDiscoverDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n presentation: Presentation;\n widgetAppLinks?: AllDiscoverWidgetTemplates['appLinks'] & {\n widgetWizard: () => Core.AppLink\n };\n headerAppLinks?: StreamableHeaderAppLinks;\n scrollToWidgetId?: string;\n isReadonly?: boolean;\n lazyLoad?: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function StreamableDiscoverDashboard(props: StreamableDiscoverDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n <StreamableHeader active='discover' appLinks={props.headerAppLinks} />\n\n {widgets.map((widget, idx) => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.Discover}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n lazyLoad={props.lazyLoad}\n dashboardTarget={DashboardTargetType.Discover}\n widgetIndex={idx}\n isPreviewing={props.isReadonly}\n contentType={CalendarEventContentType.Livestream}\n preferences={widget.preferences}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n isTertiaryCustomerWithoutExchange={false}\n preventPopout\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n commonVideoProps={props.commonVideoProps}\n \n availablePresentations={undefined}\n classification={undefined}\n hasTableOfContents={undefined}\n onSubmitFeedback={undefined}\n settings={undefined}\n updatePreferences={undefined}\n seeMoreLink={undefined}\n onClickRemoveItem={undefined}\n badgeComponent={undefined}\n />\n );\n })}\n\n {showEmptyState && (\n <StreamableDiscoverDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { StreamableDiscoverDashboard } from 'libs/shared/apps/streamable-learning/components/dashboard/StreamableDiscoverDashboard';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { PresentationRequests } from 'shared/flight-requests/PresentationRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useFetchDashboard } from 'shared/hooks/useFetchDashboard';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { getDiscoverWidgetAppLinks, getStreamableHeaderAppLinks } from 'apps/dashboard/views/dashboard/DiscoverViewUtils';\n\nconst namespace = 'streamableDashboard.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * NOTE: Ensure any keys added here are also added\n * to sanitizeDashboardParams below.\n */\ninterface DashboardViewQueryParams {\n a?: string[];\n dashboardId?: string;\n}\n\nexport function sanitizeDashboardViewParams(queryParams: DashboardViewQueryParams): DashboardViewQueryParams {\n if (!queryParams)\n return {};\n\n return ObjectHelper.pick(queryParams, [ 'a', 'dashboardId' ]);\n}\n\ninterface DashboardViewProps {\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function DashboardView(props: DashboardViewProps): JSX.Element {\n const { commonVideoProps } = useCommonVideoProps();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const presentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.streamablePresentation()\n );\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n presentation.data &&\n AudienceRequests.presentationAudiences(PresentationType.StreamableLearning, presentation.data.id)\n );\n\n const { dashboard } = useFetchDashboard({\n targetType: DashboardTargetType.Discover,\n dashboardId: props.queryParams?.dashboardId\n });\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n const widgetAppLinks = getDiscoverWidgetAppLinks(AudienceHelper.getAudienceParams(activeAudiences));\n\n useSetPageMetadata(PageMetadataHelper.getDiscoverMetadata({\n content: presentation.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n }));\n\n const hasLoaded = (\n config.hasCompleted &&\n dashboard.hasCompleted &&\n presentation.hasCompleted &&\n audiences.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <div className='bg-white px-4'>\n <StreamableDiscoverDashboard\n dashboard={dashboard.data}\n widgetAppLinks={widgetAppLinks}\n headerAppLinks={getStreamableHeaderAppLinks()}\n presentation={presentation.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n audiences={audiences.data}\n lazyLoad={!SeoHelper.isBot()}\n commonVideoProps={commonVideoProps}\n />\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{a as n,r,t as i,v as a}from"./BJvPfCvt.chunk.js";import{t as o}from"./ImQRQGZr.chunk.js";import{M as s,lt as c,ut as l}from"./Dun43GrB.chunk.js";import{i as u}from"./CEsevkum.chunk.js";import{l as d}from"./BDliRFoa.chunk.js";import{n as f}from"./Ca1QPe-q2.chunk.js";import{n as p}from"./D7d5XFW82.chunk.js";import{n as m,t as h}from"./CL1ST5J62.chunk.js";import{t as g}from"./Bx_V3too2.chunk.js";import{n as _}from"./BCdnm1Nn.chunk.js";import{t as v}from"./CE7XVl4t.chunk.js";import{o as y}from"./CIGsvs1s.chunk.js";import{t as b}from"./BgJGBaQ7.chunk.js";var x={disabled:`_disabled_1idjr_1`,disabledHighlighted:`_disabledHighlighted_1idjr_4`,badgeMd:`_badgeMd_1idjr_7`,badgeLg:`_badgeLg_1idjr_11`},S=e(l()),C=c(),w=o.encloseNamespace(`shared.audienceItem`);function T(e){return e.split(` `).map(e=>e.charAt(0).toUpperCase()+e.substring(1)).join(` `)}function E(e,t){return e?t?`${x.disabledHighlighted} text-light`:`bg-gray-900 text-light`:t?`${x.disabled} text-secondary`:`bg-light`}O.defaultProps={extraClasses:``,size:`md`};var D={md:x.badgeMd,lg:x.badgeLg};function O(e){let{audience:t,highlight:r,setAudience:i,isDisabled:o,extraClasses:s,size:c}=e,l=n(E(r,o),o?`cursor-default`:`cursor-pointer`,D[c],s,`lh-1 rounded-pill d-inline-block user-select-none`);return(0,C.jsx)(`button`,{type:`button`,className:l,onClick:()=>{o||!a.isFunction(i)||i(t,!r)},role:`checkbox`,"aria-checked":r,"aria-label":`${w(`ariaFilter`)} ${t.name}`,disabled:o,children:T(t.name)})}var k=`subjects.audienceFilter`;function A(e){let{audiences:n,activeAudiences:i,appLink:a}=e,o=e.disabled||!a,[,c]=m(h.AUDIENCE_FILTER,void 0,{storage:u.SessionStorage});S.useEffect(()=>{e.disablePersist||c(i)},[i?.map(e=>e.masterId).join(`:`)]);function l(e,n){if(o)return;let r=n?[...i?.map(e=>e.name)??[],e.name]:i.map(e=>e.name).filter(t=>t!==e.name),c=()=>{let e=s.omit(a.params,[`a`]);return r.length?Object.assign({},e,{a:r}):e};t.trigger({...a,params:c()},{replace:!0})}function d(){if(o)return;let e=s.omit(a.params,[`a`]);t.trigger({...a,params:e},{replace:!0})}return!n||!n.length?(0,C.jsx)(C.Fragment,{}):(0,C.jsx)(r,{title:e.tooltip,spanHack:!0,children:(0,C.jsxs)(`div`,{className:`d-flex flex-wrap row-gap-2`,children:[n.map(e=>(0,C.jsx)(O,{audience:e,highlight:!o&&!!i?.find(t=>t.masterId===e.masterId),setAudience:l,isDisabled:o},e.masterId)),!o&&!!i&&!!Object.keys(i).length&&(0,C.jsx)(f,{className:`info-link d-inline-block ms-1`,onClick:d,children:(0,C.jsx)(p,{namespace:k,phrase:`clear`})})]})})}var j=v.getPartialLoadingItems({numItems:6}),M=()=>(0,C.jsx)(`div`,{className:`d-flex flex-wrap row-gap-2`,children:j.map(({width:e},t)=>(0,C.jsx)(`span`,{className:`rounded-pill partial-loading-background me-1`,dangerouslySetInnerHTML:{__html:`&nbsp`},style:{width:e}},t))}),N={[g.Archived]:{svg:b,svgColorClassName:`text-secondary`,actionName:`Archive`,statusName:`Archived`},[g.Draft]:{svg:y,svgColorClassName:``,actionName:`Draft`,statusName:`Draft`},[g.Published]:{svg:_,svgColorClassName:`text-success`,actionName:`Publish`,statusName:`Published`}},P={badge:`_badge_1fgi1_1`,draftLight:`_draftLight_1fgi1_5`,draftDark:`_draftDark_1fgi1_10`,published:`_published_1fgi1_15`,archived:`_archived_1fgi1_20`};function F(e){let t=`rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${P.badge}`;switch(e.status){case g.Published:t+=` ${P.published}`;break;case g.Archived:t+=` ${P.archived}`;break;case g.Draft:t+=` ${e.darkMode?P.draftDark:P.draftLight}`;break}return e.wrapperClassName&&(t+=` ${e.wrapperClassName}`),t}function I(e){let{statusName:t,svg:n}=N[e.status];return(0,C.jsxs)(`div`,{className:F(e),children:[(0,C.jsx)(i,{svg:n}),(0,C.jsx)(`div`,{children:t})]})}var L={stickyWrapper:`_stickyWrapper_190fb_1`,channelBanner:`_channelBanner_190fb_8`,badgeWrapper:`_badgeWrapper_190fb_14`,badge:`_badge_190fb_14`},R=o.encloseNamespace(`shared.classificationPreviewBanner`),z={company:R(`companyTitle`),topic:R(`topicTitle`),channel:R(`channelTitle`)},B={company:L.stickyWrapper,topic:L.stickyWrapper,channel:L.channelBanner};function V(e){return(0,C.jsxs)(`div`,{className:n(`py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded`,B[e.type]),children:[(0,C.jsx)(`div`,{className:n(`position-absolute d-flex`,L.badgeWrapper),children:(0,C.jsx)(I,{status:e.status,wrapperClassName:L.badge,darkMode:!0})}),(0,C.jsx)(`div`,{className:`flex-grow-1`,children:(0,C.jsxs)(`h1`,{className:`text-center my-3 h5`,children:[(0,C.jsx)(d,{emoji:`👀`}),z[e.type]]})})]})}export{A as n,M as r,V as t};
2
- //# sourceMappingURL=CmrPRojb.chunk.js.map
1
+ import{gt as e,v as t}from"./Dp9qJj1C.chunk.js";import{a as n,r,t as i,v as a}from"./BJvPfCvt.chunk.js";import{t as o}from"./ImQRQGZr.chunk.js";import{M as s,lt as c,ut as l}from"./Dun43GrB.chunk.js";import{i as u}from"./CEsevkum.chunk.js";import{l as d}from"./e2K2YU7z.chunk.js";import{n as f}from"./Ca1QPe-q2.chunk.js";import{n as p}from"./D7d5XFW82.chunk.js";import{n as m,t as h}from"./CL1ST5J62.chunk.js";import{t as g}from"./Bx_V3too2.chunk.js";import{n as _}from"./wOeN2ls0.chunk.js";import{t as v}from"./CE7XVl4t.chunk.js";import{o as y}from"./CIGsvs1s.chunk.js";import{t as b}from"./BgJGBaQ7.chunk.js";var x={disabled:`_disabled_1idjr_1`,disabledHighlighted:`_disabledHighlighted_1idjr_4`,badgeMd:`_badgeMd_1idjr_7`,badgeLg:`_badgeLg_1idjr_11`},S=e(l()),C=c(),w=o.encloseNamespace(`shared.audienceItem`);function T(e){return e.split(` `).map(e=>e.charAt(0).toUpperCase()+e.substring(1)).join(` `)}function E(e,t){return e?t?`${x.disabledHighlighted} text-light`:`bg-gray-900 text-light`:t?`${x.disabled} text-secondary`:`bg-light`}O.defaultProps={extraClasses:``,size:`md`};var D={md:x.badgeMd,lg:x.badgeLg};function O(e){let{audience:t,highlight:r,setAudience:i,isDisabled:o,extraClasses:s,size:c}=e,l=n(E(r,o),o?`cursor-default`:`cursor-pointer`,D[c],s,`lh-1 rounded-pill d-inline-block user-select-none`);return(0,C.jsx)(`button`,{type:`button`,className:l,onClick:()=>{o||!a.isFunction(i)||i(t,!r)},role:`checkbox`,"aria-checked":r,"aria-label":`${w(`ariaFilter`)} ${t.name}`,disabled:o,children:T(t.name)})}var k=`subjects.audienceFilter`;function A(e){let{audiences:n,activeAudiences:i,appLink:a}=e,o=e.disabled||!a,[,c]=m(h.AUDIENCE_FILTER,void 0,{storage:u.SessionStorage});S.useEffect(()=>{e.disablePersist||c(i)},[i?.map(e=>e.masterId).join(`:`)]);function l(e,n){if(o)return;let r=n?[...i?.map(e=>e.name)??[],e.name]:i.map(e=>e.name).filter(t=>t!==e.name),c=()=>{let e=s.omit(a.params,[`a`]);return r.length?Object.assign({},e,{a:r}):e};t.trigger({...a,params:c()},{replace:!0})}function d(){if(o)return;let e=s.omit(a.params,[`a`]);t.trigger({...a,params:e},{replace:!0})}return!n||!n.length?(0,C.jsx)(C.Fragment,{}):(0,C.jsx)(r,{title:e.tooltip,spanHack:!0,children:(0,C.jsxs)(`div`,{className:`d-flex flex-wrap row-gap-2`,children:[n.map(e=>(0,C.jsx)(O,{audience:e,highlight:!o&&!!i?.find(t=>t.masterId===e.masterId),setAudience:l,isDisabled:o},e.masterId)),!o&&!!i&&!!Object.keys(i).length&&(0,C.jsx)(f,{className:`info-link d-inline-block ms-1`,onClick:d,children:(0,C.jsx)(p,{namespace:k,phrase:`clear`})})]})})}var j=v.getPartialLoadingItems({numItems:6}),M=()=>(0,C.jsx)(`div`,{className:`d-flex flex-wrap row-gap-2`,children:j.map(({width:e},t)=>(0,C.jsx)(`span`,{className:`rounded-pill partial-loading-background me-1`,dangerouslySetInnerHTML:{__html:`&nbsp`},style:{width:e}},t))}),N={[g.Archived]:{svg:b,svgColorClassName:`text-secondary`,actionName:`Archive`,statusName:`Archived`},[g.Draft]:{svg:y,svgColorClassName:``,actionName:`Draft`,statusName:`Draft`},[g.Published]:{svg:_,svgColorClassName:`text-success`,actionName:`Publish`,statusName:`Published`}},P={badge:`_badge_1fgi1_1`,draftLight:`_draftLight_1fgi1_5`,draftDark:`_draftDark_1fgi1_10`,published:`_published_1fgi1_15`,archived:`_archived_1fgi1_20`};function F(e){let t=`rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${P.badge}`;switch(e.status){case g.Published:t+=` ${P.published}`;break;case g.Archived:t+=` ${P.archived}`;break;case g.Draft:t+=` ${e.darkMode?P.draftDark:P.draftLight}`;break}return e.wrapperClassName&&(t+=` ${e.wrapperClassName}`),t}function I(e){let{statusName:t,svg:n}=N[e.status];return(0,C.jsxs)(`div`,{className:F(e),children:[(0,C.jsx)(i,{svg:n}),(0,C.jsx)(`div`,{children:t})]})}var L={stickyWrapper:`_stickyWrapper_190fb_1`,channelBanner:`_channelBanner_190fb_8`,badgeWrapper:`_badgeWrapper_190fb_14`,badge:`_badge_190fb_14`},R=o.encloseNamespace(`shared.classificationPreviewBanner`),z={company:R(`companyTitle`),topic:R(`topicTitle`),channel:R(`channelTitle`)},B={company:L.stickyWrapper,topic:L.stickyWrapper,channel:L.channelBanner};function V(e){return(0,C.jsxs)(`div`,{className:n(`py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded`,B[e.type]),children:[(0,C.jsx)(`div`,{className:n(`position-absolute d-flex`,L.badgeWrapper),children:(0,C.jsx)(I,{status:e.status,wrapperClassName:L.badge,darkMode:!0})}),(0,C.jsx)(`div`,{className:`flex-grow-1`,children:(0,C.jsxs)(`h1`,{className:`text-center my-3 h5`,children:[(0,C.jsx)(d,{emoji:`👀`}),z[e.type]]})})]})}export{A as n,M as r,V as t};
2
+ //# sourceMappingURL=zyVwH8JF.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CmrPRojb.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/subjects/components/audience-item/audience-item.module.scss","../../../../libs/shared/src/apps/subjects/components/audience-item/AudienceItem.tsx","../../../../libs/shared/src/apps/subjects/components/audience-filter/AudienceFilter.tsx","../../../../libs/shared/src/apps/subjects/constants/DashboardStatusConfig.ts","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/dashboard-status-badge.module.scss","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge.tsx","../../../../libs/shared/src/apps/subjects/components/preview-banner/preview-banner.module.scss","../../../../libs/shared/src/apps/subjects/components/preview-banner/PreviewBanner.tsx"],"sourcesContent":[":local {\n $badge-base-height-md: 1.5rem; // 24px — original look\n $badge-base-height-lg: 2.375rem; // 38px — matches btn-lg\n\n .disabled {\n background-color: $gray-100;\n }\n\n .disabledHighlighted {\n background-color: lighten($info, 15%);\n }\n\n .badgeMd {\n height: $badge-base-height-md;\n margin-right: 0.25rem;\n }\n\n .badgeLg {\n height: $badge-base-height-lg;\n font-size: $font-size-lg;\n padding: 0 1rem;\n margin-right: 0.75rem;\n margin-bottom: 0.75rem;\n }\n}\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport styles from './audience-item.module.scss';\n\nconst namespace = 'shared.audienceItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction lowerCaseToTitleCase(str: string): string {\n return str.split(' ').map((s: string) => s.charAt(0).toUpperCase() + s.substring(1)).join(' ');\n}\n\nfunction getColourClass(highlight: boolean, isDisabled: boolean): string {\n if (highlight) return isDisabled ? `${styles.disabledHighlighted} text-light` : 'bg-gray-900 text-light';\n if (isDisabled) return `${styles.disabled} text-secondary`;\n return 'bg-light';\n}\n\ntype AudienceItemSize = 'md' | 'lg';\n\ninterface AudienceItemProps {\n audience: PresentationAudience;\n highlight: boolean;\n setAudience?: (audience: PresentationAudience, highlight: boolean) => void;\n isDisabled?: boolean;\n extraClasses?: string;\n size?: AudienceItemSize;\n}\n\nAudienceItem.defaultProps = {\n extraClasses: '',\n size: 'md'\n};\n\nconst SIZE_CLASS_MAP: Record<AudienceItemSize, string> = {\n md: styles.badgeMd,\n lg: styles.badgeLg\n};\n\nexport function AudienceItem(props: AudienceItemProps): React.ReactElement {\n const { audience, highlight, setAudience, isDisabled, extraClasses, size } = props;\n\n const className = classNames(\n getColourClass(highlight, isDisabled),\n isDisabled ? 'cursor-default' : 'cursor-pointer',\n SIZE_CLASS_MAP[size],\n extraClasses,\n 'lh-1 rounded-pill d-inline-block user-select-none'\n );\n\n const onClick = () => {\n if (isDisabled || !FunctionHelper.isFunction(setAudience))\n return;\n\n setAudience(audience, !highlight);\n };\n\n return (\n <button\n type='button'\n className={className}\n onClick={onClick}\n role='checkbox'\n aria-checked={highlight}\n aria-label={`${getPhrase('ariaFilter')} ${audience.name}`}\n disabled={isDisabled}\n >\n {lowerCaseToTitleCase(audience.name)}\n </button>\n );\n}\n","import * as React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceItem } from 'libs/shared/apps/subjects/components/audience-item/AudienceItem';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nconst namespace = 'subjects.audienceFilter';\n\ninterface AudienceFilterProps {\n audiences: PresentationAudience[];\n activeAudiences?: PresentationAudience[];\n disabled?: boolean;\n appLink: Core.AppLink;\n disablePersist?: boolean;\n tooltip?: string;\n}\n\nexport function AudienceFilter(props: AudienceFilterProps): React.ReactElement {\n const { audiences, activeAudiences, appLink } = props;\n\n const isDisabled = props.disabled || !appLink;\n\n const [ , setActiveAudiences ] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n React.useEffect(() => {\n if (!props.disablePersist)\n setActiveAudiences(activeAudiences);\n }, [activeAudiences?.map(o => o.masterId).join(':')]);\n\n function onToggleAudience(audience: PresentationAudience, isSelected: boolean): void {\n if (isDisabled)\n return;\n\n const activeAudienceNames = isSelected ?\n [ ...(activeAudiences?.map(a => a.name) ?? []), audience.name ] :\n activeAudiences.map(a => a.name).filter(name => name !== audience.name);\n\n const getParams = () => {\n const otherParams = ObjectHelper.omit(appLink.params, ['a']);\n\n if (!activeAudienceNames.length)\n return otherParams;\n\n return Object.assign({}, otherParams, { a: activeAudienceNames });\n };\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params: getParams()\n }, { replace: true });\n }\n\n function onClickClearAudiences(): void {\n if (isDisabled)\n return;\n\n const params = ObjectHelper.omit(appLink.params, ['a']);\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params\n }, { replace: true });\n }\n\n if (!audiences || !audiences.length)\n return <></>;\n\n return (\n <Tooltip title={props.tooltip} spanHack>\n <div className='d-flex flex-wrap row-gap-2'>\n {audiences.map((a: PresentationAudience) => (\n <AudienceItem\n key={a.masterId}\n audience={a}\n highlight={!isDisabled && !!activeAudiences?.find(aa => aa.masterId === a.masterId)}\n setAudience={onToggleAudience}\n isDisabled={isDisabled}\n />\n ))}\n {(!isDisabled && !!activeAudiences && !!Object.keys(activeAudiences).length) && (\n <DivButton className='info-link d-inline-block ms-1' onClick={onClickClearAudiences}>\n <Text namespace={namespace} phrase='clear' />\n </DivButton>\n )}\n </div>\n </Tooltip>\n );\n}\n\nconst PARTIAL_AUDIENCES = PartialLoadingHelper.getPartialLoadingItems({ numItems: 6 });\n\nexport const PartialAudienceFilter = () => (\n <div className='d-flex flex-wrap row-gap-2'>\n {PARTIAL_AUDIENCES.map(({ width }, idx) => (\n <span\n key={idx}\n className='rounded-pill partial-loading-background me-1'\n dangerouslySetInnerHTML={{ __html: '&nbsp' }}\n style={{ width }}\n />\n ))}\n </div>\n);\n","import { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { ArchiveSvg } from 'libs/shared/images/svg/objects/ArchiveSvg';\nimport { DashboardStatus } from 'libs/shared/interfaces/models/Dashboard';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\ninterface DashboardStatusConfigType {\n statusName: string;\n actionName: string;\n svg: SvgIcon;\n svgColorClassName: string;\n}\n\nexport const DashboardStatusConfig: Record<DashboardStatus, DashboardStatusConfigType> = {\n [DashboardStatus.Archived]: {\n svg: ArchiveSvg,\n svgColorClassName: 'text-secondary',\n actionName: 'Archive',\n statusName: 'Archived'\n },\n [DashboardStatus.Draft]: {\n svg: EditSvg,\n svgColorClassName: '',\n actionName: 'Draft',\n statusName: 'Draft'\n },\n [DashboardStatus.Published]: {\n svg: VisibleOnSvg,\n svgColorClassName: 'text-success',\n actionName: 'Publish',\n statusName: 'Published'\n }\n};\n",":local {\n .badge {\n gap: map-get($spacers, 1);\n padding-right: 1rem;\n\n &.draftLight {\n color: $gray-800;\n border: 0.0625rem solid $gray-800;\n background-color: rgba($gray-800, 0.05);\n }\n\n &.draftDark {\n color: $gray-300;\n border: 0.0625rem solid $gray-300;\n background-color: rgba($gray-300, 0.05);\n }\n\n &.published {\n color: $success;\n border: 0.0625rem solid $success;\n background-color: rgba($success, 0.05);\n }\n\n &.archived {\n color: $danger;\n border: 0.0625rem solid $danger;\n background-color: rgba($danger, 0.05);\n }\n }\n}","import React from 'react';\n\nimport { DashboardStatusConfig } from 'libs/shared/apps/subjects/constants/DashboardStatusConfig';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './dashboard-status-badge.module.scss';\n\nfunction getClassName(props: DashboardStatusBadgeProps): string {\n let className = `rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${styles.badge}`;\n\n switch (props.status) {\n case DashboardStatus.Published:\n className += ` ${styles.published}`;\n break;\n case DashboardStatus.Archived:\n className += ` ${styles.archived}`;\n break;\n case DashboardStatus.Draft:\n className += ` ${props.darkMode ? styles.draftDark : styles.draftLight}`;\n break;\n }\n\n if (props.wrapperClassName)\n className += ` ${props.wrapperClassName}`;\n\n return className;\n}\n\ninterface DashboardStatusBadgeProps {\n status: DashboardStatus;\n darkMode?: boolean;\n wrapperClassName?: string;\n}\n\nexport function DashboardStatusBadge(props: DashboardStatusBadgeProps): JSX.Element {\n const { statusName, svg } = DashboardStatusConfig[props.status];\n\n return (\n <div className={getClassName(props)}>\n <SvgContainer svg={svg} />\n <div>{statusName}</div>\n </div>\n );\n}\n",":local {\n .stickyWrapper {\n position: absolute;\n top: -10rem;\n z-index: 3;\n width: calc(100% - 1rem);\n height: 5rem;\n }\n\n .channelBanner {\n position: absolute;\n z-index: 3;\n top: -15rem;\n width: calc(100% - 4.5rem);\n }\n\n .badgeWrapper {\n height: 100%;\n top: 0;\n left: 1.5rem;\n flex-direction: column;\n justify-content: center;\n }\n\n .badge {\n height: 60%;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { DashboardStatusBadge } from 'libs/shared/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './preview-banner.module.scss';\n\nconst namespace = 'shared.classificationPreviewBanner';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype PreviewBannerType = 'company' | 'topic' | 'channel';\n\ninterface PreviewBannerProps {\n status: DashboardStatus;\n type: PreviewBannerType;\n}\n\nconst typeToTitle: {[key in PreviewBannerType]: string } = {\n company: getPhrase('companyTitle'),\n topic: getPhrase('topicTitle'),\n channel: getPhrase('channelTitle')\n};\n\nconst typeToClassName: {[key in PreviewBannerType]: string } = {\n company: styles.stickyWrapper,\n topic: styles.stickyWrapper,\n channel: styles.channelBanner\n};\n\nexport function PreviewBanner(props: PreviewBannerProps): JSX.Element {\n return (\n <div className={\n classNames('py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded', typeToClassName[props.type])\n }>\n <div className={classNames('position-absolute d-flex', styles.badgeWrapper)}>\n <DashboardStatusBadge status={props.status} wrapperClassName={styles.badge} darkMode />\n </div>\n <div className='flex-grow-1'>\n <h1 className='text-center my-3 h5'>\n <EmojiText emoji='👀' />\n {typeToTitle[props.type]}\n </h1>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"zyVwH8JF.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/subjects/components/audience-item/audience-item.module.scss","../../../../libs/shared/src/apps/subjects/components/audience-item/AudienceItem.tsx","../../../../libs/shared/src/apps/subjects/components/audience-filter/AudienceFilter.tsx","../../../../libs/shared/src/apps/subjects/constants/DashboardStatusConfig.ts","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/dashboard-status-badge.module.scss","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge.tsx","../../../../libs/shared/src/apps/subjects/components/preview-banner/preview-banner.module.scss","../../../../libs/shared/src/apps/subjects/components/preview-banner/PreviewBanner.tsx"],"sourcesContent":[":local {\n $badge-base-height-md: 1.5rem; // 24px — original look\n $badge-base-height-lg: 2.375rem; // 38px — matches btn-lg\n\n .disabled {\n background-color: $gray-100;\n }\n\n .disabledHighlighted {\n background-color: lighten($info, 15%);\n }\n\n .badgeMd {\n height: $badge-base-height-md;\n margin-right: 0.25rem;\n }\n\n .badgeLg {\n height: $badge-base-height-lg;\n font-size: $font-size-lg;\n padding: 0 1rem;\n margin-right: 0.75rem;\n margin-bottom: 0.75rem;\n }\n}\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport styles from './audience-item.module.scss';\n\nconst namespace = 'shared.audienceItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction lowerCaseToTitleCase(str: string): string {\n return str.split(' ').map((s: string) => s.charAt(0).toUpperCase() + s.substring(1)).join(' ');\n}\n\nfunction getColourClass(highlight: boolean, isDisabled: boolean): string {\n if (highlight) return isDisabled ? `${styles.disabledHighlighted} text-light` : 'bg-gray-900 text-light';\n if (isDisabled) return `${styles.disabled} text-secondary`;\n return 'bg-light';\n}\n\ntype AudienceItemSize = 'md' | 'lg';\n\ninterface AudienceItemProps {\n audience: PresentationAudience;\n highlight: boolean;\n setAudience?: (audience: PresentationAudience, highlight: boolean) => void;\n isDisabled?: boolean;\n extraClasses?: string;\n size?: AudienceItemSize;\n}\n\nAudienceItem.defaultProps = {\n extraClasses: '',\n size: 'md'\n};\n\nconst SIZE_CLASS_MAP: Record<AudienceItemSize, string> = {\n md: styles.badgeMd,\n lg: styles.badgeLg\n};\n\nexport function AudienceItem(props: AudienceItemProps): React.ReactElement {\n const { audience, highlight, setAudience, isDisabled, extraClasses, size } = props;\n\n const className = classNames(\n getColourClass(highlight, isDisabled),\n isDisabled ? 'cursor-default' : 'cursor-pointer',\n SIZE_CLASS_MAP[size],\n extraClasses,\n 'lh-1 rounded-pill d-inline-block user-select-none'\n );\n\n const onClick = () => {\n if (isDisabled || !FunctionHelper.isFunction(setAudience))\n return;\n\n setAudience(audience, !highlight);\n };\n\n return (\n <button\n type='button'\n className={className}\n onClick={onClick}\n role='checkbox'\n aria-checked={highlight}\n aria-label={`${getPhrase('ariaFilter')} ${audience.name}`}\n disabled={isDisabled}\n >\n {lowerCaseToTitleCase(audience.name)}\n </button>\n );\n}\n","import * as React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceItem } from 'libs/shared/apps/subjects/components/audience-item/AudienceItem';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nconst namespace = 'subjects.audienceFilter';\n\ninterface AudienceFilterProps {\n audiences: PresentationAudience[];\n activeAudiences?: PresentationAudience[];\n disabled?: boolean;\n appLink: Core.AppLink;\n disablePersist?: boolean;\n tooltip?: string;\n}\n\nexport function AudienceFilter(props: AudienceFilterProps): React.ReactElement {\n const { audiences, activeAudiences, appLink } = props;\n\n const isDisabled = props.disabled || !appLink;\n\n const [ , setActiveAudiences ] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n React.useEffect(() => {\n if (!props.disablePersist)\n setActiveAudiences(activeAudiences);\n }, [activeAudiences?.map(o => o.masterId).join(':')]);\n\n function onToggleAudience(audience: PresentationAudience, isSelected: boolean): void {\n if (isDisabled)\n return;\n\n const activeAudienceNames = isSelected ?\n [ ...(activeAudiences?.map(a => a.name) ?? []), audience.name ] :\n activeAudiences.map(a => a.name).filter(name => name !== audience.name);\n\n const getParams = () => {\n const otherParams = ObjectHelper.omit(appLink.params, ['a']);\n\n if (!activeAudienceNames.length)\n return otherParams;\n\n return Object.assign({}, otherParams, { a: activeAudienceNames });\n };\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params: getParams()\n }, { replace: true });\n }\n\n function onClickClearAudiences(): void {\n if (isDisabled)\n return;\n\n const params = ObjectHelper.omit(appLink.params, ['a']);\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params\n }, { replace: true });\n }\n\n if (!audiences || !audiences.length)\n return <></>;\n\n return (\n <Tooltip title={props.tooltip} spanHack>\n <div className='d-flex flex-wrap row-gap-2'>\n {audiences.map((a: PresentationAudience) => (\n <AudienceItem\n key={a.masterId}\n audience={a}\n highlight={!isDisabled && !!activeAudiences?.find(aa => aa.masterId === a.masterId)}\n setAudience={onToggleAudience}\n isDisabled={isDisabled}\n />\n ))}\n {(!isDisabled && !!activeAudiences && !!Object.keys(activeAudiences).length) && (\n <DivButton className='info-link d-inline-block ms-1' onClick={onClickClearAudiences}>\n <Text namespace={namespace} phrase='clear' />\n </DivButton>\n )}\n </div>\n </Tooltip>\n );\n}\n\nconst PARTIAL_AUDIENCES = PartialLoadingHelper.getPartialLoadingItems({ numItems: 6 });\n\nexport const PartialAudienceFilter = () => (\n <div className='d-flex flex-wrap row-gap-2'>\n {PARTIAL_AUDIENCES.map(({ width }, idx) => (\n <span\n key={idx}\n className='rounded-pill partial-loading-background me-1'\n dangerouslySetInnerHTML={{ __html: '&nbsp' }}\n style={{ width }}\n />\n ))}\n </div>\n);\n","import { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { ArchiveSvg } from 'libs/shared/images/svg/objects/ArchiveSvg';\nimport { DashboardStatus } from 'libs/shared/interfaces/models/Dashboard';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\ninterface DashboardStatusConfigType {\n statusName: string;\n actionName: string;\n svg: SvgIcon;\n svgColorClassName: string;\n}\n\nexport const DashboardStatusConfig: Record<DashboardStatus, DashboardStatusConfigType> = {\n [DashboardStatus.Archived]: {\n svg: ArchiveSvg,\n svgColorClassName: 'text-secondary',\n actionName: 'Archive',\n statusName: 'Archived'\n },\n [DashboardStatus.Draft]: {\n svg: EditSvg,\n svgColorClassName: '',\n actionName: 'Draft',\n statusName: 'Draft'\n },\n [DashboardStatus.Published]: {\n svg: VisibleOnSvg,\n svgColorClassName: 'text-success',\n actionName: 'Publish',\n statusName: 'Published'\n }\n};\n",":local {\n .badge {\n gap: map-get($spacers, 1);\n padding-right: 1rem;\n\n &.draftLight {\n color: $gray-800;\n border: 0.0625rem solid $gray-800;\n background-color: rgba($gray-800, 0.05);\n }\n\n &.draftDark {\n color: $gray-300;\n border: 0.0625rem solid $gray-300;\n background-color: rgba($gray-300, 0.05);\n }\n\n &.published {\n color: $success;\n border: 0.0625rem solid $success;\n background-color: rgba($success, 0.05);\n }\n\n &.archived {\n color: $danger;\n border: 0.0625rem solid $danger;\n background-color: rgba($danger, 0.05);\n }\n }\n}","import React from 'react';\n\nimport { DashboardStatusConfig } from 'libs/shared/apps/subjects/constants/DashboardStatusConfig';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './dashboard-status-badge.module.scss';\n\nfunction getClassName(props: DashboardStatusBadgeProps): string {\n let className = `rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${styles.badge}`;\n\n switch (props.status) {\n case DashboardStatus.Published:\n className += ` ${styles.published}`;\n break;\n case DashboardStatus.Archived:\n className += ` ${styles.archived}`;\n break;\n case DashboardStatus.Draft:\n className += ` ${props.darkMode ? styles.draftDark : styles.draftLight}`;\n break;\n }\n\n if (props.wrapperClassName)\n className += ` ${props.wrapperClassName}`;\n\n return className;\n}\n\ninterface DashboardStatusBadgeProps {\n status: DashboardStatus;\n darkMode?: boolean;\n wrapperClassName?: string;\n}\n\nexport function DashboardStatusBadge(props: DashboardStatusBadgeProps): JSX.Element {\n const { statusName, svg } = DashboardStatusConfig[props.status];\n\n return (\n <div className={getClassName(props)}>\n <SvgContainer svg={svg} />\n <div>{statusName}</div>\n </div>\n );\n}\n",":local {\n .stickyWrapper {\n position: absolute;\n top: -10rem;\n z-index: 3;\n width: calc(100% - 1rem);\n height: 5rem;\n }\n\n .channelBanner {\n position: absolute;\n z-index: 3;\n top: -15rem;\n width: calc(100% - 4.5rem);\n }\n\n .badgeWrapper {\n height: 100%;\n top: 0;\n left: 1.5rem;\n flex-direction: column;\n justify-content: center;\n }\n\n .badge {\n height: 60%;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { DashboardStatusBadge } from 'libs/shared/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './preview-banner.module.scss';\n\nconst namespace = 'shared.classificationPreviewBanner';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype PreviewBannerType = 'company' | 'topic' | 'channel';\n\ninterface PreviewBannerProps {\n status: DashboardStatus;\n type: PreviewBannerType;\n}\n\nconst typeToTitle: {[key in PreviewBannerType]: string } = {\n company: getPhrase('companyTitle'),\n topic: getPhrase('topicTitle'),\n channel: getPhrase('channelTitle')\n};\n\nconst typeToClassName: {[key in PreviewBannerType]: string } = {\n company: styles.stickyWrapper,\n topic: styles.stickyWrapper,\n channel: styles.channelBanner\n};\n\nexport function PreviewBanner(props: PreviewBannerProps): JSX.Element {\n return (\n <div className={\n classNames('py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded', typeToClassName[props.type])\n }>\n <div className={classNames('position-absolute d-flex', styles.badgeWrapper)}>\n <DashboardStatusBadge status={props.status} wrapperClassName={styles.badge} darkMode />\n </div>\n <div className='flex-grow-1'>\n <h1 className='text-center my-3 h5'>\n <EmojiText emoji='👀' />\n {typeToTitle[props.type]}\n </h1>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickview/streamable-learning",
3
- "version": "0.48.0-rc.0",
3
+ "version": "0.48.0",
4
4
  "description": "Streamable Learning",
5
5
  "main": "dist/scripts/bundle.js",
6
6
  "scripts": {
@@ -1 +0,0 @@
1
- import{g as e}from"./app-B1XBsz23.js";export{e as ErrorView};