@clickview/reports 0.86.0-rc.0 → 0.86.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 (73) hide show
  1. package/dist/.vite/manifest.json +252 -252
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{D4_Ou9e_.chunk.js → B3BAH-B8.chunk.js} +2 -2
  5. package/dist/scripts/{D4_Ou9e_.chunk.js.map → B3BAH-B8.chunk.js.map} +1 -1
  6. package/dist/scripts/{BWJBtdAK2.chunk.js → B9u-BJ_k2.chunk.js} +2 -2
  7. package/dist/scripts/{BWJBtdAK2.chunk.js.map → B9u-BJ_k2.chunk.js.map} +1 -1
  8. package/dist/scripts/BIvkuRmF.chunk.js +1 -0
  9. package/dist/scripts/{BLy0WwGy.chunk.js → BLILOa4O.chunk.js} +2 -2
  10. package/dist/scripts/{BLy0WwGy.chunk.js.map → BLILOa4O.chunk.js.map} +1 -1
  11. package/dist/scripts/{BVgajZti.chunk.js → BNQGo_Gd.chunk.js} +2 -2
  12. package/dist/scripts/{BVgajZti.chunk.js.map → BNQGo_Gd.chunk.js.map} +1 -1
  13. package/dist/scripts/{296Drw6z.chunk.js → BTLhY0Si.chunk.js} +2 -2
  14. package/dist/scripts/BTLhY0Si.chunk.js.map +1 -0
  15. package/dist/scripts/{BV2ee_KR.chunk.js → Bf4DlBxT.chunk.js} +2 -2
  16. package/dist/scripts/{BV2ee_KR.chunk.js.map → Bf4DlBxT.chunk.js.map} +1 -1
  17. package/dist/scripts/{DQamsoU_2.chunk.js → Bl6b6nAn2.chunk.js} +2 -2
  18. package/dist/scripts/{DQamsoU_2.chunk.js.map → Bl6b6nAn2.chunk.js.map} +1 -1
  19. package/dist/scripts/{DhJ5lhcc.chunk.js → Bv4pM4sp.chunk.js} +2 -2
  20. package/dist/scripts/{DhJ5lhcc.chunk.js.map → Bv4pM4sp.chunk.js.map} +1 -1
  21. package/dist/scripts/{CmiQpwgd2.chunk.js → C-4Pza2l2.chunk.js} +2 -2
  22. package/dist/scripts/{CmiQpwgd2.chunk.js.map → C-4Pza2l2.chunk.js.map} +1 -1
  23. package/dist/scripts/{CMQlrOon2.chunk.js → C21pODi22.chunk.js} +2 -2
  24. package/dist/scripts/{CMQlrOon2.chunk.js.map → C21pODi22.chunk.js.map} +1 -1
  25. package/dist/scripts/{PLyhtHwt2.chunk.js → C46TEWQx2.chunk.js} +2 -2
  26. package/dist/scripts/{PLyhtHwt2.chunk.js.map → C46TEWQx2.chunk.js.map} +1 -1
  27. package/dist/scripts/{DsnkNBu62.chunk.js → CMw7H8FK2.chunk.js} +2 -2
  28. package/dist/scripts/{DsnkNBu62.chunk.js.map → CMw7H8FK2.chunk.js.map} +1 -1
  29. package/dist/scripts/{cBssbttB.chunk.js → CQNeP_Yp.chunk.js} +2 -2
  30. package/dist/scripts/{cBssbttB.chunk.js.map → CQNeP_Yp.chunk.js.map} +1 -1
  31. package/dist/scripts/{Cv9H330A2.chunk.js → ClDdEKYV2.chunk.js} +2 -2
  32. package/dist/scripts/{Cv9H330A2.chunk.js.map → ClDdEKYV2.chunk.js.map} +1 -1
  33. package/dist/scripts/{CglHgfcX.chunk.js → Cu6M80aY.chunk.js} +2 -2
  34. package/dist/scripts/{CglHgfcX.chunk.js.map → Cu6M80aY.chunk.js.map} +1 -1
  35. package/dist/scripts/{dMt3Yeox.chunk.js → D0Iup4vX.chunk.js} +3 -3
  36. package/dist/scripts/{dMt3Yeox.chunk.js.map → D0Iup4vX.chunk.js.map} +1 -1
  37. package/dist/scripts/{BCPzswJq.chunk.js → D5SnHbk-.chunk.js} +2 -2
  38. package/dist/scripts/{BCPzswJq.chunk.js.map → D5SnHbk-.chunk.js.map} +1 -1
  39. package/dist/scripts/{CudCJxPc2.chunk.js → DHGyxAjV2.chunk.js} +2 -2
  40. package/dist/scripts/{CudCJxPc2.chunk.js.map → DHGyxAjV2.chunk.js.map} +1 -1
  41. package/dist/scripts/{B2L2H3g9.chunk.js → DMQIqlrn.chunk.js} +2 -2
  42. package/dist/scripts/{B2L2H3g9.chunk.js.map → DMQIqlrn.chunk.js.map} +1 -1
  43. package/dist/scripts/{CFA2yuiv.chunk.js → DSOStB3B.chunk.js} +2 -2
  44. package/dist/scripts/{CFA2yuiv.chunk.js.map → DSOStB3B.chunk.js.map} +1 -1
  45. package/dist/scripts/{CPw6bsFu2.chunk.js → DaN1d6Pn2.chunk.js} +2 -2
  46. package/dist/scripts/{CPw6bsFu2.chunk.js.map → DaN1d6Pn2.chunk.js.map} +1 -1
  47. package/dist/scripts/{D68hdbWD2.chunk.js → DeAZkXBA2.chunk.js} +2 -2
  48. package/dist/scripts/{D68hdbWD2.chunk.js.map → DeAZkXBA2.chunk.js.map} +1 -1
  49. package/dist/scripts/{BPVl1Je7.chunk.js → DeQ431eX.chunk.js} +2 -2
  50. package/dist/scripts/{BPVl1Je7.chunk.js.map → DeQ431eX.chunk.js.map} +1 -1
  51. package/dist/scripts/DuNznK6r.chunk.js +1 -0
  52. package/dist/scripts/{oPoOD_J-2.chunk.js → Duq0DLsG2.chunk.js} +2 -2
  53. package/dist/scripts/{oPoOD_J-2.chunk.js.map → Duq0DLsG2.chunk.js.map} +1 -1
  54. package/dist/scripts/{BHTp9hJG.chunk.js → Dxi0YECT.chunk.js} +2 -2
  55. package/dist/scripts/{BHTp9hJG.chunk.js.map → Dxi0YECT.chunk.js.map} +1 -1
  56. package/dist/scripts/{D3WnBGZG.chunk.js → KApJ0N8H.chunk.js} +2 -2
  57. package/dist/scripts/{D3WnBGZG.chunk.js.map → KApJ0N8H.chunk.js.map} +1 -1
  58. package/dist/scripts/{DcKDIHY92.chunk.js → LH8waKdJ2.chunk.js} +2 -2
  59. package/dist/scripts/{DcKDIHY92.chunk.js.map → LH8waKdJ2.chunk.js.map} +1 -1
  60. package/dist/scripts/{DNKj09Lh2.chunk.js → O4R5nbYC2.chunk.js} +2 -2
  61. package/dist/scripts/{DNKj09Lh2.chunk.js.map → O4R5nbYC2.chunk.js.map} +1 -1
  62. package/dist/scripts/{BQjyL0qS2.chunk.js → VhnfG4dU2.chunk.js} +2 -2
  63. package/dist/scripts/{BQjyL0qS2.chunk.js.map → VhnfG4dU2.chunk.js.map} +1 -1
  64. package/dist/scripts/{app-cakVQEAF.js → app-DLh9RnwX.js} +4 -4
  65. package/dist/scripts/{app-cakVQEAF.js.map → app-DLh9RnwX.js.map} +1 -1
  66. package/dist/scripts/{Dj68Q14w.chunk.js → e3pgZZ_n.chunk.js} +2 -2
  67. package/dist/scripts/{Dj68Q14w.chunk.js.map → e3pgZZ_n.chunk.js.map} +1 -1
  68. package/dist/scripts/{DrBRL2aF.chunk.js → mKkhzqL1.chunk.js} +2 -2
  69. package/dist/scripts/{DrBRL2aF.chunk.js.map → mKkhzqL1.chunk.js.map} +1 -1
  70. package/package.json +1 -1
  71. package/dist/scripts/296Drw6z.chunk.js.map +0 -1
  72. package/dist/scripts/CyRTALRJ.chunk.js +0 -1
  73. package/dist/scripts/Dm7M2BT8.chunk.js +0 -1
@@ -0,0 +1 @@
1
+ import{n as e}from"./DMQIqlrn.chunk.js";export{e as GenerateReportView};
@@ -1,2 +1,2 @@
1
- import{Kn as e,P as t,st as n}from"./BSV_W0cK.chunk.js";import{v as r}from"./COrUmz0l.chunk.js";import{d as i,n as a}from"./DLiesDxa.chunk.js";import{t as o}from"./BmJ66zOA.chunk.js";import{n as s}from"./CNQKHXPY.chunk.js";import{t as c}from"./DHk1ZJ0C.chunk.js";import{r as l}from"./app-cakVQEAF.js";import{a as u,n as d,t as f}from"./DQamsoU_2.chunk.js";import{t as p}from"./BWJBtdAK2.chunk.js";var m=function(e){return e[e.RootTopic=1]=`RootTopic`,e[e.ChildTopic=2]=`ChildTopic`,e}({});function h(e,t,n){return{...e,topicAnalyticsType:t,query:`cover`,limit:n}}var g={topTopics(e,t,n,r,i){return{url:s.urlBuilder(`{gateway}/v1/analytics/topics/top`,h(e,t)),key:p(`top:topics:${t}`,e),success:n,error:r,always:i}},topTopicsV2(e,t,n,r,i,a){return{url:s.urlBuilder(`{gateway}/v2/analytics/streams/topics/top`,h(e,t,n)),key:p(`top:topics:${t}:v2:${n}`,e),formatData:e=>(Array.isArray(e)?e:[e]).map(e=>({collectionId:e.topicId,count:e.combinedCount,collection:e.topic})),success:r,error:i,always:a}},viewsByTopic(e,t,n,r,i){return{url:s.urlBuilder(`{gateway}/v1/analytics/topics/count`,h(e,t)),key:p(`views:topics:${t}`,e),normalize:!1,success:n,error:r,always:i}}},_={cover:`_cover_ggfj4_1`,fallbackImage:`_fallbackImage_ggfj4_5`},v=e(n()),y=t();function b(e){return(0,y.jsxs)(`div`,{className:`d-flex position-relative mb-3`,children:[(0,y.jsx)(`div`,{className:`${_.fallbackImage} me-2`,children:(0,y.jsx)(f,{type:d.Subject,extraClasses:`border rounded`})}),(0,y.jsx)(`div`,{className:`w-100`,children:(0,y.jsx)(`div`,{className:`partial-loading-background ${e.className}`,children:`\xA0`})})]})}function x(){return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`div`,{className:`partial-loading-background w-25 mb-3`,children:`\xA0`}),(0,y.jsx)(b,{className:`w-25`}),(0,y.jsx)(b,{className:`w-50`}),(0,y.jsx)(b,{className:`w-33`}),(0,y.jsx)(b,{className:`w-25`})]})}var S=o(),C=`reportsShared.topClassificationsCard`;function w(e){let[t,n]=v.useState(!1);return(0,y.jsxs)(`div`,{className:`d-flex position-relative`,children:[!t&&(0,y.jsx)(f,{type:d.Subject,extraClasses:`${_.fallbackImage} border rounded`}),(0,y.jsx)(`div`,{className:`${_.cover} flex-shrink-0 me-2 rounded overflow-hidden`,children:(0,y.jsx)(u,{data:e.topClassification.collection.cover,imageOptions:{size:c.Medium},onLoad:()=>n(!0)})}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`h3`,{className:`h6 mb-0 clamp-2 mt-1`,children:e.topClassification.collection.name}),(0,y.jsx)(`p`,{children:(0,y.jsx)(a,{namespace:C,phrase:`views`,options:{smartCount:e.topClassification.count}})})]})]})}function T(e){let t=l(`video-views`),n=i(!!t&&g.topTopicsV2(t,e.type,e.limit)),a=n.data?.sort((e,t)=>t.count-e.count);return(0,y.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:n.data?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,y.jsx)(`h2`,{className:`h6 mb-3`,children:e.heading}),e.appLink&&e.appLinkText&&(0,y.jsx)(r,{appLink:e.appLink,className:`text-info`,children:e.appLinkText})]}),n.data.length?(0,y.jsx)(S.Scrollbars,{className:`pb-3`,children:(0,y.jsx)(`ul`,{className:`list-unstyled m-0 pe-3`,children:a.map((e,t)=>(0,y.jsx)(`li`,{className:`pb-3`,children:(0,y.jsx)(w,{topClassification:e})},t))})}):(0,y.jsx)(`div`,{className:`d-flex align-items-center justify-content-center h-100`,children:e.emptyStateText})]}):(0,y.jsx)(x,{})})}export{m as n,T as t};
2
- //# sourceMappingURL=oPoOD_J-2.chunk.js.map
1
+ import{Kn as e,P as t,st as n}from"./BSV_W0cK.chunk.js";import{v as r}from"./COrUmz0l.chunk.js";import{d as i,n as a}from"./DLiesDxa.chunk.js";import{t as o}from"./BmJ66zOA.chunk.js";import{n as s}from"./CNQKHXPY.chunk.js";import{t as c}from"./DHk1ZJ0C.chunk.js";import{r as l}from"./app-DLh9RnwX.js";import{a as u,n as d,t as f}from"./Bl6b6nAn2.chunk.js";import{t as p}from"./B9u-BJ_k2.chunk.js";var m=function(e){return e[e.RootTopic=1]=`RootTopic`,e[e.ChildTopic=2]=`ChildTopic`,e}({});function h(e,t,n){return{...e,topicAnalyticsType:t,query:`cover`,limit:n}}var g={topTopics(e,t,n,r,i){return{url:s.urlBuilder(`{gateway}/v1/analytics/topics/top`,h(e,t)),key:p(`top:topics:${t}`,e),success:n,error:r,always:i}},topTopicsV2(e,t,n,r,i,a){return{url:s.urlBuilder(`{gateway}/v2/analytics/streams/topics/top`,h(e,t,n)),key:p(`top:topics:${t}:v2:${n}`,e),formatData:e=>(Array.isArray(e)?e:[e]).map(e=>({collectionId:e.topicId,count:e.combinedCount,collection:e.topic})),success:r,error:i,always:a}},viewsByTopic(e,t,n,r,i){return{url:s.urlBuilder(`{gateway}/v1/analytics/topics/count`,h(e,t)),key:p(`views:topics:${t}`,e),normalize:!1,success:n,error:r,always:i}}},_={cover:`_cover_ggfj4_1`,fallbackImage:`_fallbackImage_ggfj4_5`},v=e(n()),y=t();function b(e){return(0,y.jsxs)(`div`,{className:`d-flex position-relative mb-3`,children:[(0,y.jsx)(`div`,{className:`${_.fallbackImage} me-2`,children:(0,y.jsx)(f,{type:d.Subject,extraClasses:`border rounded`})}),(0,y.jsx)(`div`,{className:`w-100`,children:(0,y.jsx)(`div`,{className:`partial-loading-background ${e.className}`,children:`\xA0`})})]})}function x(){return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`div`,{className:`partial-loading-background w-25 mb-3`,children:`\xA0`}),(0,y.jsx)(b,{className:`w-25`}),(0,y.jsx)(b,{className:`w-50`}),(0,y.jsx)(b,{className:`w-33`}),(0,y.jsx)(b,{className:`w-25`})]})}var S=o(),C=`reportsShared.topClassificationsCard`;function w(e){let[t,n]=v.useState(!1);return(0,y.jsxs)(`div`,{className:`d-flex position-relative`,children:[!t&&(0,y.jsx)(f,{type:d.Subject,extraClasses:`${_.fallbackImage} border rounded`}),(0,y.jsx)(`div`,{className:`${_.cover} flex-shrink-0 me-2 rounded overflow-hidden`,children:(0,y.jsx)(u,{data:e.topClassification.collection.cover,imageOptions:{size:c.Medium},onLoad:()=>n(!0)})}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`h3`,{className:`h6 mb-0 clamp-2 mt-1`,children:e.topClassification.collection.name}),(0,y.jsx)(`p`,{children:(0,y.jsx)(a,{namespace:C,phrase:`views`,options:{smartCount:e.topClassification.count}})})]})]})}function T(e){let t=l(`video-views`),n=i(!!t&&g.topTopicsV2(t,e.type,e.limit)),a=n.data?.sort((e,t)=>t.count-e.count);return(0,y.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:n.data?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,y.jsx)(`h2`,{className:`h6 mb-3`,children:e.heading}),e.appLink&&e.appLinkText&&(0,y.jsx)(r,{appLink:e.appLink,className:`text-info`,children:e.appLinkText})]}),n.data.length?(0,y.jsx)(S.Scrollbars,{className:`pb-3`,children:(0,y.jsx)(`ul`,{className:`list-unstyled m-0 pe-3`,children:a.map((e,t)=>(0,y.jsx)(`li`,{className:`pb-3`,children:(0,y.jsx)(w,{topClassification:e})},t))})}):(0,y.jsx)(`div`,{className:`d-flex align-items-center justify-content-center h-100`,children:e.emptyStateText})]}):(0,y.jsx)(x,{})})}export{m as n,T as t};
2
+ //# sourceMappingURL=Duq0DLsG2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oPoOD_J-2.chunk.js","names":[],"sources":["../../src/shared/enums/TopicAnalyticsType.ts","../../src/shared/flight-requests/TopicRequests.ts","../../src/shared/views/overview-cards/top-classifications-card/top-classification-card.module.scss","../../src/shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard.tsx","../../src/shared/views/overview-cards/top-classifications-card/TopClassificationsCardView.tsx"],"sourcesContent":["export enum TopicAnalyticsType {\n RootTopic = 1,\n ChildTopic = 2\n}\n","import { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsRequestFilter, Classification } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\n\nfunction getTopicRequestParams(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit?: number\n): HashObject {\n return {\n ...filter,\n topicAnalyticsType,\n query: 'cover',\n limit\n };\n}\n\nexport const TopicRequests = {\n topTopics(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}`, filter),\n success,\n error,\n always\n };\n },\n\n topTopicsV2(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit: number,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v2/analytics/streams/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType, limit)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}:v2:${limit}`, filter),\n formatData: data => {\n const items = Array.isArray(data) ? data : [data];\n\n return items.map(item => ({\n collectionId: item.topicId,\n count: item.combinedCount,\n collection: item.topic\n }));\n },\n success,\n error,\n always\n };\n },\n\n viewsByTopic(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/count',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`views:topics:${topicAnalyticsType}`, filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n",":local {\n .cover {\n height: 5rem;\n width: 5rem;\n }\n\n .fallbackImage {\n height: 5rem;\n min-width: 5rem;\n border: none;\n }\n}","import React from 'react';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\n\nimport styles from '../top-classification-card.module.scss';\n\ninterface PartialClassificationItemProps {\n className?: string;\n}\n\nfunction PartialClassificationItem(props: PartialClassificationItemProps) {\n return (\n <div className='d-flex position-relative mb-3'>\n <div className={`${styles.fallbackImage} me-2`}>\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses='border rounded'\n />\n </div>\n\n <div className='w-100'>\n <div className={`partial-loading-background ${props.className}`}>&nbsp;</div>\n </div>\n </div>\n );\n}\n\nexport function PartialTopClassificationsCard() {\n return (\n <>\n <div className='partial-loading-background w-25 mb-3'>&nbsp;</div>\n\n <PartialClassificationItem className='w-25' />\n <PartialClassificationItem className='w-50' />\n <PartialClassificationItem className='w-33'/>\n <PartialClassificationItem className='w-25'/>\n </>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { TopicRequests } from 'shared/flight-requests/TopicRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { CollectionViewEvent } from 'shared/interfaces';\nimport { PartialTopClassificationsCard } from 'shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard';\n\nimport styles from './top-classification-card.module.scss';\n\nconst namespace = 'reportsShared.topClassificationsCard';\n\ninterface ClassificationListItemProps {\n topClassification: CollectionViewEvent<Classification>;\n}\n\nfunction ClassificationListItem(props: ClassificationListItemProps) {\n const [ hasLoadedImage, setHasLoadedImage ] = React.useState(false);\n\n return (\n <div className='d-flex position-relative'>\n {!hasLoadedImage && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={`${styles.fallbackImage} border rounded`}\n />\n )}\n <div className={`${styles.cover} flex-shrink-0 me-2 rounded overflow-hidden`}>\n <BaseImage\n data={props.topClassification.collection.cover}\n imageOptions={{ size: ImageSize.Medium }}\n onLoad={() => setHasLoadedImage(true)}\n />\n </div>\n <div>\n <h3 className='h6 mb-0 clamp-2 mt-1'>\n {props.topClassification.collection.name}\n </h3>\n <p><Text namespace={namespace} phrase='views' options={{ smartCount: props.topClassification.count }} /></p>\n </div>\n </div>\n );\n}\n\ninterface TopClassificationsCardProps {\n heading: string;\n type: TopicAnalyticsType;\n appLink?: Core.AppLink;\n appLinkText?: string;\n emptyStateText: string;\n limit: number;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopClassificationsCardView(props: TopClassificationsCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n \n const topClassifications = Flight.useBasicFetch<CollectionViewEvent<Classification>[]>(!!requestFilter &&\n TopicRequests.topTopicsV2(requestFilter, props.type, props.limit));\n\n const sortedTopClassifications = topClassifications.data?.sort((a, b) => b.count - a.count);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {topClassifications.data ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-3'>{props.heading}</h2>\n\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n {topClassifications.data.length ?\n <Scrollbars className='pb-3'>\n <ul className='list-unstyled m-0 pe-3'>\n {sortedTopClassifications.map((t, idx) => (\n <li key={idx} className='pb-3'>\n <ClassificationListItem topClassification={t} />\n </li>\n ))}\n </ul>\n </Scrollbars> :\n <div className='d-flex align-items-center justify-content-center h-100'>{props.emptyStateText}</div>\n }\n </> : <PartialTopClassificationsCard />\n }\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Duq0DLsG2.chunk.js","names":[],"sources":["../../src/shared/enums/TopicAnalyticsType.ts","../../src/shared/flight-requests/TopicRequests.ts","../../src/shared/views/overview-cards/top-classifications-card/top-classification-card.module.scss","../../src/shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard.tsx","../../src/shared/views/overview-cards/top-classifications-card/TopClassificationsCardView.tsx"],"sourcesContent":["export enum TopicAnalyticsType {\n RootTopic = 1,\n ChildTopic = 2\n}\n","import { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsRequestFilter, Classification } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\n\nfunction getTopicRequestParams(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit?: number\n): HashObject {\n return {\n ...filter,\n topicAnalyticsType,\n query: 'cover',\n limit\n };\n}\n\nexport const TopicRequests = {\n topTopics(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}`, filter),\n success,\n error,\n always\n };\n },\n\n topTopicsV2(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit: number,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v2/analytics/streams/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType, limit)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}:v2:${limit}`, filter),\n formatData: data => {\n const items = Array.isArray(data) ? data : [data];\n\n return items.map(item => ({\n collectionId: item.topicId,\n count: item.combinedCount,\n collection: item.topic\n }));\n },\n success,\n error,\n always\n };\n },\n\n viewsByTopic(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/count',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`views:topics:${topicAnalyticsType}`, filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n",":local {\n .cover {\n height: 5rem;\n width: 5rem;\n }\n\n .fallbackImage {\n height: 5rem;\n min-width: 5rem;\n border: none;\n }\n}","import React from 'react';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\n\nimport styles from '../top-classification-card.module.scss';\n\ninterface PartialClassificationItemProps {\n className?: string;\n}\n\nfunction PartialClassificationItem(props: PartialClassificationItemProps) {\n return (\n <div className='d-flex position-relative mb-3'>\n <div className={`${styles.fallbackImage} me-2`}>\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses='border rounded'\n />\n </div>\n\n <div className='w-100'>\n <div className={`partial-loading-background ${props.className}`}>&nbsp;</div>\n </div>\n </div>\n );\n}\n\nexport function PartialTopClassificationsCard() {\n return (\n <>\n <div className='partial-loading-background w-25 mb-3'>&nbsp;</div>\n\n <PartialClassificationItem className='w-25' />\n <PartialClassificationItem className='w-50' />\n <PartialClassificationItem className='w-33'/>\n <PartialClassificationItem className='w-25'/>\n </>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { TopicRequests } from 'shared/flight-requests/TopicRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { CollectionViewEvent } from 'shared/interfaces';\nimport { PartialTopClassificationsCard } from 'shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard';\n\nimport styles from './top-classification-card.module.scss';\n\nconst namespace = 'reportsShared.topClassificationsCard';\n\ninterface ClassificationListItemProps {\n topClassification: CollectionViewEvent<Classification>;\n}\n\nfunction ClassificationListItem(props: ClassificationListItemProps) {\n const [ hasLoadedImage, setHasLoadedImage ] = React.useState(false);\n\n return (\n <div className='d-flex position-relative'>\n {!hasLoadedImage && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={`${styles.fallbackImage} border rounded`}\n />\n )}\n <div className={`${styles.cover} flex-shrink-0 me-2 rounded overflow-hidden`}>\n <BaseImage\n data={props.topClassification.collection.cover}\n imageOptions={{ size: ImageSize.Medium }}\n onLoad={() => setHasLoadedImage(true)}\n />\n </div>\n <div>\n <h3 className='h6 mb-0 clamp-2 mt-1'>\n {props.topClassification.collection.name}\n </h3>\n <p><Text namespace={namespace} phrase='views' options={{ smartCount: props.topClassification.count }} /></p>\n </div>\n </div>\n );\n}\n\ninterface TopClassificationsCardProps {\n heading: string;\n type: TopicAnalyticsType;\n appLink?: Core.AppLink;\n appLinkText?: string;\n emptyStateText: string;\n limit: number;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopClassificationsCardView(props: TopClassificationsCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n \n const topClassifications = Flight.useBasicFetch<CollectionViewEvent<Classification>[]>(!!requestFilter &&\n TopicRequests.topTopicsV2(requestFilter, props.type, props.limit));\n\n const sortedTopClassifications = topClassifications.data?.sort((a, b) => b.count - a.count);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {topClassifications.data ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-3'>{props.heading}</h2>\n\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n {topClassifications.data.length ?\n <Scrollbars className='pb-3'>\n <ul className='list-unstyled m-0 pe-3'>\n {sortedTopClassifications.map((t, idx) => (\n <li key={idx} className='pb-3'>\n <ClassificationListItem topClassification={t} />\n </li>\n ))}\n </ul>\n </Scrollbars> :\n <div className='d-flex align-items-center justify-content-center h-100'>{props.emptyStateText}</div>\n }\n </> : <PartialTopClassificationsCard />\n }\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{t as n}from"./app-cakVQEAF.js";t();var r=e();function i({error:e}){return(0,r.jsx)(n,{error:e})}export{i as NotFoundView};
2
- //# sourceMappingURL=BHTp9hJG.chunk.js.map
1
+ import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{t as n}from"./app-DLh9RnwX.js";t();var r=e();function i({error:e}){return(0,r.jsx)(n,{error:e})}export{i as NotFoundView};
2
+ //# sourceMappingURL=Dxi0YECT.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BHTp9hJG.chunk.js","names":[],"sources":["../../src/apps/default/views/not-found/ReportsNotFoundView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nimport { ErrorView } from 'apps/default/views/error/ReportsErrorView';\n\ninterface NotFoundViewProps {\n error: ErrorPageError;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function NotFoundView({ error }: NotFoundViewProps): React.ReactElement {\n return <ErrorView error={error} />;\n}\n"],"mappings":"oGAWA,SAAgB,EAAa,CAAE,SAAgD,CAC7E,OAAO,EAAA,EAAA,KAAC,EAAD,CAAkB,QAAS,CAAA"}
1
+ {"version":3,"file":"Dxi0YECT.chunk.js","names":[],"sources":["../../src/apps/default/views/not-found/ReportsNotFoundView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nimport { ErrorView } from 'apps/default/views/error/ReportsErrorView';\n\ninterface NotFoundViewProps {\n error: ErrorPageError;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function NotFoundView({ error }: NotFoundViewProps): React.ReactElement {\n return <ErrorView error={error} />;\n}\n"],"mappings":"oGAWA,SAAgB,EAAa,CAAE,SAAgD,CAC7E,OAAO,EAAA,EAAA,KAAC,EAAD,CAAkB,QAAS,CAAA"}
@@ -1,4 +1,4 @@
1
- import{Kn as e,N as t,P as n,en as r,st as i}from"./BSV_W0cK.chunk.js";import{r as a,v as o,y as s}from"./COrUmz0l.chunk.js";import{t as c}from"./Bqlm3yF_.chunk.js";import{n as l,r as u}from"./H5KLIhR_.chunk.js";import{L as d,et as f,n as p}from"./app-cakVQEAF.js";import{n as m,t as h}from"./DsnkNBu62.chunk.js";var g={pillTabSelector:`_pillTabSelector_a6f6x_1`,tab:`_tab_a6f6x_4`,minWidth:`_minWidth_a6f6x_21`,radiusSmall:`_radiusSmall_a6f6x_24`,tabLink:`_tabLink_a6f6x_35`},_=e(i()),v=n();function y(e){return(0,v.jsxs)(v.Fragment,{children:[!!e.tab.svg&&(0,v.jsx)(`div`,{className:e.tab.name?`pe-1`:``,children:(0,v.jsx)(a,{svg:e.tab.svg,size:e.tab.svgSize})}),e.formatDisplayText?.(e.tab.name)??e.tab.name,typeof e.tab.count==`number`&&(0,v.jsx)(`div`,{className:`ps-2`,children:(0,v.jsx)(h,{type:m.Count,data:e.tab.count})})]})}function b(e){let{borderRadius:n=`lg`}=e,i=d();function a(e){e.analyticsData&&e.analyticsOptions&&t.logUserAction(e.analyticsData,e.analyticsOptions)}function c(e){e.active||!e.onSelect||(e.onSelect(),a(e))}function l(t){let n=t.target.value,i=e.tabs.find(e=>e.name===n);!i||i.active||(a(i),r.trigger(i.appLink))}let u=e.tabs.find(e=>e.active),f=e.forceSmallScreenDropdown||e.enableSmallScreenSupport&&(i.sm||i.xs);return(0,v.jsxs)(`nav`,{className:e.className??``,children:[f&&(0,v.jsx)(`select`,{className:`form-select`,onChange:l,value:u?.name,style:{minWidth:`150px`},children:e.tabs.map((t,n)=>t.hide?(0,v.jsx)(_.Fragment,{},n):(0,v.jsx)(`option`,{value:t.name,children:e.formatDisplayText?.(t.name)??t.name},n))}),!f&&(0,v.jsx)(`ul`,{className:`
1
+ import{Kn as e,N as t,P as n,en as r,st as i}from"./BSV_W0cK.chunk.js";import{r as a,v as o,y as s}from"./COrUmz0l.chunk.js";import{t as c}from"./Bqlm3yF_.chunk.js";import{n as l,r as u}from"./H5KLIhR_.chunk.js";import{L as d,et as f,n as p}from"./app-DLh9RnwX.js";import{n as m,t as h}from"./CMw7H8FK2.chunk.js";var g={pillTabSelector:`_pillTabSelector_a6f6x_1`,tab:`_tab_a6f6x_4`,minWidth:`_minWidth_a6f6x_21`,radiusSmall:`_radiusSmall_a6f6x_24`,tabLink:`_tabLink_a6f6x_35`},_=e(i()),v=n();function y(e){return(0,v.jsxs)(v.Fragment,{children:[!!e.tab.svg&&(0,v.jsx)(`div`,{className:e.tab.name?`pe-1`:``,children:(0,v.jsx)(a,{svg:e.tab.svg,size:e.tab.svgSize})}),e.formatDisplayText?.(e.tab.name)??e.tab.name,typeof e.tab.count==`number`&&(0,v.jsx)(`div`,{className:`ps-2`,children:(0,v.jsx)(h,{type:m.Count,data:e.tab.count})})]})}function b(e){let{borderRadius:n=`lg`}=e,i=d();function a(e){e.analyticsData&&e.analyticsOptions&&t.logUserAction(e.analyticsData,e.analyticsOptions)}function c(e){e.active||!e.onSelect||(e.onSelect(),a(e))}function l(t){let n=t.target.value,i=e.tabs.find(e=>e.name===n);!i||i.active||(a(i),r.trigger(i.appLink))}let u=e.tabs.find(e=>e.active),f=e.forceSmallScreenDropdown||e.enableSmallScreenSupport&&(i.sm||i.xs);return(0,v.jsxs)(`nav`,{className:e.className??``,children:[f&&(0,v.jsx)(`select`,{className:`form-select`,onChange:l,value:u?.name,style:{minWidth:`150px`},children:e.tabs.map((t,n)=>t.hide?(0,v.jsx)(_.Fragment,{},n):(0,v.jsx)(`option`,{value:t.name,children:e.formatDisplayText?.(t.name)??t.name},n))}),!f&&(0,v.jsx)(`ul`,{className:`
2
2
  list-unstyled d-inline-block m-0 ${g.pillTabSelector}
3
3
  ${n?g.radiusSmall:``}
4
4
  ${e.listClassName}
@@ -12,4 +12,4 @@ import{Kn as e,N as t,P as n,en as r,st as i}from"./BSV_W0cK.chunk.js";import{r
12
12
  cursor-pointer d-flex align-items-center justify-content-center
13
13
  text-decoration-none text-reset px-2 text-nowrap ${g.tabLink}
14
14
  `,onClick:()=>c(t),children:(0,v.jsx)(y,{tab:t,formatDisplayText:e.formatDisplayText})})},n))})]})}function x(e){return(0,v.jsx)(b,{className:`pb-3`,tabs:e.items.map(e=>({name:e.label,onSelect:()=>r.trigger(e.appLink),active:e.appLink.action===f.getCurrentRoute()?.appLink?.action}))})}var S=c.encloseNamespace(`reportsVideos.schoolVideosNav`);function C(e){return[{label:S(`overview`),appLink:{application:u.VIDEOS,action:l.Videos.HOME,params:e}},{label:S(`views`),appLink:{application:u.VIDEOS,action:l.Videos.TOP_VIDEOS,params:e}}]}function w(){return(0,v.jsx)(x,{items:C(p())})}export{w as t};
15
- //# sourceMappingURL=D3WnBGZG.chunk.js.map
15
+ //# sourceMappingURL=KApJ0N8H.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"D3WnBGZG.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/pill-tab-selector/pill-tab-selector.module.scss","../../../../libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","../../src/shared/components/sub-nav/SubNav.tsx","../../src/apps/videos/components/school-videos-nav/SchoolVideosNav.tsx"],"sourcesContent":[":local {\n $pill-tab-min-width: 7rem;\n\n .pillTabSelector {\n border-radius: $border-radius-lg;\n\n .tab {\n border-radius: 0;\n\n &:first-child {\n border-top-left-radius: $border-radius-lg;\n border-bottom-left-radius: $border-radius-lg;\n }\n\n &:last-child {\n border-top-right-radius: $border-radius-lg;\n border-bottom-right-radius: $border-radius-lg;\n }\n\n &:not(:first-child) {\n border-left: none;\n }\n\n &:not(:last-child) {\n border-right: none;\n }\n\n &.minWidth {\n min-width: $pill-tab-min-width;\n }\n }\n\n &.radiusSmall {\n border-radius: $border-radius;\n\n li {\n &:first-child {\n border-top-left-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n }\n \n &:last-child {\n border-top-right-radius: $border-radius;\n border-bottom-right-radius: $border-radius;\n }\n }\n }\n\n .tabLink {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n }\n }\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.module.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n formatDisplayText?: (name: string) => string;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svg && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svg={props.tab.svg} size={props.tab.svgSize} />\n </div>\n )}\n\n {props.formatDisplayText?.(props.tab.name) ?? props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svg?: SvgIcon;\n svgSize?: SvgContainerSize;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n\n hide?: boolean;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg';\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n forceSmallScreenDropdown?: boolean;\n}\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n const { borderRadius = 'lg' } = props;\n \n const breakpoints = useBreakpoints();\n \n function logAnalytics(tab: PillTab): void {\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n \n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n logAnalytics(tab);\n }\n\n function onChangeSelect(event: React.ChangeEvent<HTMLSelectElement>): void {\n const value = event.target.value;\n const tab = props.tabs.find(tab => tab.name === value);\n if (!tab || tab.active)\n return;\n \n logAnalytics(tab);\n AppLinkHelper.trigger(tab.appLink);\n }\n\n const selectedTab = props.tabs.find(tab => tab.active);\n const showSelectDropdown = props.forceSmallScreenDropdown\n || (props.enableSmallScreenSupport && (breakpoints.sm || breakpoints.xs));\n\n return (\n <nav className={props.className ?? ''}>\n {showSelectDropdown && (\n <select className='form-select' onChange={onChangeSelect} value={selectedTab?.name} style={{ minWidth: '150px' }}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n\n return (\n <option\n key={index}\n value={tab.name}>\n {props.formatDisplayText?.(tab.name) ?? tab.name}\n </option>\n );\n })}\n </select>\n )}\n \n {!showSelectDropdown && (\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n \n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\nexport interface SubNavItem {\n label: string;\n appLink: Core.AppLink;\n}\n\ninterface SubNavProps {\n items: SubNavItem[];\n}\n\nexport function SubNav(props: SubNavProps): JSX.Element {\n const tabs: PillTab[] = props.items.map(i => ({\n name: i.label,\n onSelect: () => Core.AppLinkHelper.trigger(i.appLink),\n active: i.appLink.action === ContextService.getCurrentRoute()?.appLink?.action\n }));\n\n return <PillTabSelector className='pb-3' tabs={tabs} />;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsVideos.schoolVideosNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(params: FilterQueryParams): SubNavItem[] {\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.HOME, params }\n },\n {\n label: getPhrase('views'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS, params }\n }\n ];\n}\n\nexport function SchoolVideosNav(): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(filterQueryParams);\n\n return (\n <SubNav items={navItems} />\n );\n}\n"],"mappings":"4eCwBA,SAAS,EAAY,EAAsC,CACzD,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAM,IAAI,MACX,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAM,IAAI,KAAO,OAAS,aACxC,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,EAAM,IAAI,IAAK,KAAM,EAAM,IAAI,QAAW,CAAA,CACzD,CAAA,CAGP,EAAM,oBAAoB,EAAM,IAAI,KAAK,EAAI,EAAM,IAAI,KAEvD,OAAQ,EAAM,IAAI,OAAW,WAC5B,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iBACb,EAAA,EAAA,KAAC,EAAD,CAAO,KAAM,EAAU,MAAO,KAAM,EAAM,IAAI,MAAS,CAAA,CACnD,CAAA,CAEP,CAAA,CAAA,CAiCP,SAAgB,EAAgB,EAA0C,CACxE,GAAM,CAAE,eAAe,MAAS,EAE1B,EAAc,GAAgB,CAEpC,SAAS,EAAa,EAAoB,CACpC,EAAI,eAAiB,EAAI,kBAC3B,EAAgB,cAAc,EAAI,cAAe,EAAI,iBAAiB,CAG1E,SAAS,EAAY,EAAoB,CACnC,EAAI,QAAU,CAAC,EAAI,WAGvB,EAAI,UAAU,CAEd,EAAa,EAAI,EAGnB,SAAS,EAAe,EAAmD,CACzE,IAAM,EAAQ,EAAM,OAAO,MACrB,EAAM,EAAM,KAAK,KAAK,GAAO,EAAI,OAAS,EAAM,CAClD,CAAC,GAAO,EAAI,SAGhB,EAAa,EAAI,CACjB,EAAc,QAAQ,EAAI,QAAQ,EAGpC,IAAM,EAAc,EAAM,KAAK,KAAK,GAAO,EAAI,OAAO,CAChD,EAAqB,EAAM,0BAC3B,EAAM,2BAA6B,EAAY,IAAM,EAAY,IAEvE,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAM,WAAa,YAAnC,CACG,IACC,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,cAAc,SAAU,EAAgB,MAAO,GAAa,KAAM,MAAO,CAAE,SAAU,QAAS,UAC7G,EAAM,KAAK,KAAK,EAAK,IAChB,EAAI,MACC,EAAA,EAAA,KAAA,EAAO,SAAP,EAA6B,CAAR,EAAQ,EAGpC,EAAA,EAAA,KAAC,SAAD,CAEE,MAAO,EAAI,cACV,EAAM,oBAAoB,EAAI,KAAK,EAAI,EAAI,KACrC,CAHF,EAGE,EAGN,CAAA,CAGV,CAAC,IACA,EAAA,EAAA,KAAC,KAAD,CAAI,UAAW;6CACsB,EAAO,gBAAA;YACxC,EAAe,EAAO,YAAc,GAAA;YACpC,EAAM,cAAA;mBAEP,EAAM,KAAK,KAAK,EAAK,IAChB,EAAI,MACC,EAAA,EAAA,KAAA,EAAO,SAAP,EAA6B,CAAR,EAAQ,EAGpC,EAAA,EAAA,KAAC,KAAD,CACE,UAAW;sBACL,EAAO,IAAI,GAAG,EAAI,OAAS,eAAiB,uBAAA;kBAChD,EAAI,KAAO,EAAO,SAAW,GAAG,GAAG,EAAI,UAAA;yBAIxC,EAAI,SACH,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,EAAI,QACb,cAAe,EAAI,cACnB,iBAAkB,EAAI,iBACtB,UAAW;;uEAEwC,EAAO,QAAA;8BAG1D,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAK,kBAAmB,EAAM,kBAAqB,CAAA,CAC7D,CAAA,EAEV,EAAA,EAAA,KAAC,EAAD,CACE,UAAW;;uEAEwC,EAAO,QAAA;oBAE1D,YAAe,EAAY,EAAI,WAE/B,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAK,kBAAmB,EAAM,kBAAqB,CAAA,CAC3D,CAAA,CAEX,CAzBE,EAyBF,EAGN,CAAA,CAAA,GC1Jb,SAAgB,EAAO,EAAiC,CAOtD,OAAO,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAU,OAAa,KANvB,EAAM,MAAM,IAAI,IAAM,CAC5C,KAAM,EAAE,MACR,aAAA,EAAmC,QAAQ,EAAE,QAAQ,CACrD,OAAQ,EAAE,QAAQ,SAAW,EAAe,iBAAiB,EAAE,SAAS,OACzE,EAAE,CAEoD,CAAA,CCVzD,IAAM,EAAY,EAAgB,iBADhB,gCAC2C,CAE7D,SAAS,EAAY,EAAyC,CAC5D,MAAO,CACL,CACE,MAAO,EAAU,WAAW,CAC5B,QAAS,CAAE,YAAa,EAAY,OAAQ,OAAQ,EAAQ,OAAO,KAAM,SAAQ,CAClF,CACD,CACE,MAAO,EAAU,QAAQ,CACzB,QAAS,CAAE,YAAa,EAAY,OAAQ,OAAQ,EAAQ,OAAO,WAAY,SAAQ,CACxF,CACF,CAGH,SAAgB,GAA+B,CAK7C,OACE,EAAA,EAAA,KAAC,EAAD,CAAQ,MAHO,EAFS,GAA2B,CAEN,CAGlB,CAAA"}
1
+ {"version":3,"file":"KApJ0N8H.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/pill-tab-selector/pill-tab-selector.module.scss","../../../../libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","../../src/shared/components/sub-nav/SubNav.tsx","../../src/apps/videos/components/school-videos-nav/SchoolVideosNav.tsx"],"sourcesContent":[":local {\n $pill-tab-min-width: 7rem;\n\n .pillTabSelector {\n border-radius: $border-radius-lg;\n\n .tab {\n border-radius: 0;\n\n &:first-child {\n border-top-left-radius: $border-radius-lg;\n border-bottom-left-radius: $border-radius-lg;\n }\n\n &:last-child {\n border-top-right-radius: $border-radius-lg;\n border-bottom-right-radius: $border-radius-lg;\n }\n\n &:not(:first-child) {\n border-left: none;\n }\n\n &:not(:last-child) {\n border-right: none;\n }\n\n &.minWidth {\n min-width: $pill-tab-min-width;\n }\n }\n\n &.radiusSmall {\n border-radius: $border-radius;\n\n li {\n &:first-child {\n border-top-left-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n }\n \n &:last-child {\n border-top-right-radius: $border-radius;\n border-bottom-right-radius: $border-radius;\n }\n }\n }\n\n .tabLink {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n }\n }\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.module.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n formatDisplayText?: (name: string) => string;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svg && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svg={props.tab.svg} size={props.tab.svgSize} />\n </div>\n )}\n\n {props.formatDisplayText?.(props.tab.name) ?? props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svg?: SvgIcon;\n svgSize?: SvgContainerSize;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n\n hide?: boolean;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg';\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n forceSmallScreenDropdown?: boolean;\n}\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n const { borderRadius = 'lg' } = props;\n \n const breakpoints = useBreakpoints();\n \n function logAnalytics(tab: PillTab): void {\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n \n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n logAnalytics(tab);\n }\n\n function onChangeSelect(event: React.ChangeEvent<HTMLSelectElement>): void {\n const value = event.target.value;\n const tab = props.tabs.find(tab => tab.name === value);\n if (!tab || tab.active)\n return;\n \n logAnalytics(tab);\n AppLinkHelper.trigger(tab.appLink);\n }\n\n const selectedTab = props.tabs.find(tab => tab.active);\n const showSelectDropdown = props.forceSmallScreenDropdown\n || (props.enableSmallScreenSupport && (breakpoints.sm || breakpoints.xs));\n\n return (\n <nav className={props.className ?? ''}>\n {showSelectDropdown && (\n <select className='form-select' onChange={onChangeSelect} value={selectedTab?.name} style={{ minWidth: '150px' }}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n\n return (\n <option\n key={index}\n value={tab.name}>\n {props.formatDisplayText?.(tab.name) ?? tab.name}\n </option>\n );\n })}\n </select>\n )}\n \n {!showSelectDropdown && (\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n \n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\nexport interface SubNavItem {\n label: string;\n appLink: Core.AppLink;\n}\n\ninterface SubNavProps {\n items: SubNavItem[];\n}\n\nexport function SubNav(props: SubNavProps): JSX.Element {\n const tabs: PillTab[] = props.items.map(i => ({\n name: i.label,\n onSelect: () => Core.AppLinkHelper.trigger(i.appLink),\n active: i.appLink.action === ContextService.getCurrentRoute()?.appLink?.action\n }));\n\n return <PillTabSelector className='pb-3' tabs={tabs} />;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsVideos.schoolVideosNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(params: FilterQueryParams): SubNavItem[] {\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.HOME, params }\n },\n {\n label: getPhrase('views'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS, params }\n }\n ];\n}\n\nexport function SchoolVideosNav(): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(filterQueryParams);\n\n return (\n <SubNav items={navItems} />\n );\n}\n"],"mappings":"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"}