@clickview/lite 0.0.26-dev.1 → 0.0.26-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/0.chunk.css +2 -2
- package/dist/css/28.chunk.css +1 -1
- package/dist/css/36.chunk.css +1 -1
- package/dist/en.json +1 -1
- package/dist/libs/analytics/src/interfaces/AnalyticsTypes.d.ts +1 -0
- package/dist/libs/common/src/backbone/utils/LocalStorageHelper.d.ts +1 -1
- package/dist/libs/common/src/react/hooks/UseViewModel.d.ts +8 -0
- package/dist/libs/shared/src/apps/playlists/utils/PlaylistSortHelper.d.ts +1 -0
- package/dist/libs/shared/src/apps/subjects/components/audience-filter/AudienceFilter.d.ts +3 -3
- package/dist/libs/shared/src/apps/subjects/hooks/useAudienceFilter.d.ts +10 -0
- package/dist/libs/shared/src/components/thumbnails/video/VideoThumbnail.d.ts +1 -1
- package/dist/libs/shared/src/constants/SharedViewModelKeys.d.ts +1 -0
- package/dist/libs/shared/src/flight-requests/FavouriteVideoRequests.d.ts +1 -1
- package/dist/libs/shared/src/interfaces/models/ClassroomGroup.d.ts +1 -1
- package/dist/projects/lite/src/app.d.ts +1 -0
- package/dist/projects/lite/src/apps/dashboard/flight-requests/DashboardRequests.d.ts +1 -0
- package/dist/projects/lite/src/apps/playlists/views/playlists/PlaylistsView.d.ts +1 -1
- package/dist/projects/lite/src/shared/constants/LiteViewModels.d.ts +1 -0
- package/dist/scripts/0-2d31d283ae.chunk.js +1 -0
- package/dist/scripts/{1-8027d5d7a2.chunk.js → 1-416147a365.chunk.js} +3 -3
- package/dist/scripts/{10-8b52a5b2a9.chunk.js → 10-6f924160d4.chunk.js} +1 -1
- package/dist/scripts/11-bb4335845c.chunk.js +1 -0
- package/dist/scripts/{12-5a9f0cff7a.chunk.js → 12-c98f636456.chunk.js} +1 -1
- package/dist/scripts/13-f440a979f2.chunk.js +1 -0
- package/dist/scripts/14-96e2ac4c4e.chunk.js +1 -0
- package/dist/scripts/17-ae3c652b7f.chunk.js +1 -0
- package/dist/scripts/18-70bed357d5.chunk.js +1 -0
- package/dist/scripts/19-fd97756828.chunk.js +1 -0
- package/dist/scripts/2-9458935561.chunk.js +1 -0
- package/dist/scripts/20-f660938e48.chunk.js +1 -0
- package/dist/scripts/21-6b5bac2388.chunk.js +1 -0
- package/dist/scripts/22-d2e93288e2.chunk.js +1 -0
- package/dist/scripts/{23-8fa9630961.chunk.js → 23-cef41d75a0.chunk.js} +1 -1
- package/dist/scripts/{24-1b298386e9.chunk.js → 24-bce9e631d6.chunk.js} +1 -1
- package/dist/scripts/25-db36457320.chunk.js +1 -0
- package/dist/scripts/26-5aed5ee0dd.chunk.js +1 -0
- package/dist/scripts/27-7f8deea7e3.chunk.js +1 -0
- package/dist/scripts/{28-992fa1d7d3.chunk.js → 28-5f765079fd.chunk.js} +1 -1
- package/dist/scripts/29-0b8214340f.chunk.js +1 -0
- package/dist/scripts/{3-0490c565bc.chunk.js → 3-96cf66c7ed.chunk.js} +1 -1
- package/dist/scripts/30-2f39246be7.chunk.js +1 -0
- package/dist/scripts/{31-35db520dd1.chunk.js → 31-29dea56635.chunk.js} +1 -1
- package/dist/scripts/32-bbaee512ce.chunk.js +1 -0
- package/dist/scripts/33-46803f3fef.chunk.js +1 -0
- package/dist/scripts/34-c017ae74c8.chunk.js +53 -0
- package/dist/scripts/{35-c03686c46a.chunk.js → 35-7da451a1c9.chunk.js} +1 -1
- package/dist/scripts/{36-83d6842746.chunk.js → 36-57ab543f4f.chunk.js} +1 -1
- package/dist/scripts/{37-c3430bac04.chunk.js → 37-80c7b6220d.chunk.js} +1 -1
- package/dist/scripts/38-50ed73316a.chunk.js +1 -0
- package/dist/scripts/39-3adf4ecd44.chunk.js +1 -0
- package/dist/scripts/4-6611628e1a.chunk.js +1 -0
- package/dist/scripts/40-3872135793.chunk.js +1 -0
- package/dist/scripts/{41-900e1bf0e1.chunk.js → 41-9a1c72850a.chunk.js} +1 -1
- package/dist/scripts/42-4932b5ac21.chunk.js +1 -0
- package/dist/scripts/{43-24d8ad0345.chunk.js → 43-22cf86a966.chunk.js} +1 -1
- package/dist/scripts/44-b62663ca9d.chunk.js +1 -0
- package/dist/scripts/45-0d8523abe9.chunk.js +1 -0
- package/dist/scripts/{46-b0dd9697cf.chunk.js → 46-fe9870ac23.chunk.js} +1 -1
- package/dist/scripts/{47-2b4a82f4ad.chunk.js → 47-6dffaed1d7.chunk.js} +1 -1
- package/dist/scripts/{48-982a605bb0.chunk.js → 48-7220efc4d6.chunk.js} +1 -1
- package/dist/scripts/{49-8226f8d1ba.chunk.js → 49-ae885df086.chunk.js} +1 -1
- package/dist/scripts/5-4177d478cc.chunk.js +1 -0
- package/dist/scripts/{50-dcc75825be.chunk.js → 50-f9157fe86a.chunk.js} +2 -2
- package/dist/scripts/{51-1f52bbeb15.chunk.js → 51-9c714f222a.chunk.js} +1 -1
- package/dist/scripts/{52-a15b2e7c02.chunk.js → 52-40b5bed763.chunk.js} +1 -1
- package/dist/scripts/{53-4cd55bd586.chunk.js → 53-b1a06f2260.chunk.js} +1 -1
- package/dist/scripts/{54-aa1a08cdbf.chunk.js → 54-adc0aca3b2.chunk.js} +1 -1
- package/dist/scripts/{55-c969a4fc28.chunk.js → 55-89cef329b2.chunk.js} +1 -1
- package/dist/scripts/{56-68fdf84a0d.chunk.js → 56-0dddea6e48.chunk.js} +1 -1
- package/dist/scripts/{57-db5bdeea30.chunk.js → 57-8fb86637a6.chunk.js} +1 -1
- package/dist/scripts/{58-df23c1a02e.chunk.js → 58-72d868bb97.chunk.js} +1 -1
- package/dist/scripts/{59-2d38ae02a6.chunk.js → 59-f186c23ddf.chunk.js} +1 -1
- package/dist/scripts/{6-1b789e45e3.chunk.js → 6-615cc3317e.chunk.js} +1 -1
- package/dist/scripts/{60-b5000feaed.chunk.js → 60-60ea3e256b.chunk.js} +1 -1
- package/dist/scripts/{61-280ba38bbf.chunk.js → 61-fba9617716.chunk.js} +1 -1
- package/dist/scripts/{62-9a61055529.chunk.js → 62-39c21de14e.chunk.js} +1 -1
- package/dist/scripts/{63-ecc242395a.chunk.js → 63-d1c111fcd5.chunk.js} +1 -1
- package/dist/scripts/{64-077f9961a9.chunk.js → 64-33b287c3c2.chunk.js} +1 -1
- package/dist/scripts/{65-0463ba68c3.chunk.js → 65-889dba985e.chunk.js} +1 -1
- package/dist/scripts/{66-851f0b0243.chunk.js → 66-00f7b4a21f.chunk.js} +1 -1
- package/dist/scripts/{67-103e97e558.chunk.js → 67-d923fb11ed.chunk.js} +1 -1
- package/dist/scripts/{68-7a80380425.chunk.js → 68-85a8867bd2.chunk.js} +1 -1
- package/dist/scripts/{69-7d9f3514e6.chunk.js → 69-0fc67deac3.chunk.js} +1 -1
- package/dist/scripts/7-79961729d4.chunk.js +1 -0
- package/dist/scripts/{70-fd6b603857.chunk.js → 70-8b68b786a9.chunk.js} +1 -1
- package/dist/scripts/{71-b002267371.chunk.js → 71-81cbd9cbe0.chunk.js} +1 -1
- package/dist/scripts/{72-7b99de33d0.chunk.js → 72-ea543ecb4d.chunk.js} +1 -1
- package/dist/scripts/73-32bacce3b9.chunk.js +1 -0
- package/dist/scripts/{74-72227ec214.chunk.js → 74-5b7c16baa1.chunk.js} +1 -1
- package/dist/scripts/{75-d463b7002b.chunk.js → 75-81b94320b7.chunk.js} +1 -1
- package/dist/scripts/{76-5780bbb319.chunk.js → 76-9e8154e3d1.chunk.js} +1 -1
- package/dist/scripts/{77-7ea0e086de.chunk.js → 77-d57229038b.chunk.js} +1 -1
- package/dist/scripts/{78-11cad53884.chunk.js → 78-cd93b07a63.chunk.js} +1 -1
- package/dist/scripts/{79-90eb976e11.chunk.js → 79-999b00ee35.chunk.js} +1 -1
- package/dist/scripts/{8-fe4d1fcbb5.chunk.js → 8-f1d54ac54a.chunk.js} +1 -1
- package/dist/scripts/80-7a85bbaf88.chunk.js +1 -0
- package/dist/scripts/81-a589326f2f.chunk.js +1 -0
- package/dist/scripts/{82-3326a696b2.chunk.js → 82-660d825e60.chunk.js} +1 -1
- package/dist/scripts/{9-753761ada2.chunk.js → 9-d2c18751ff.chunk.js} +1 -1
- package/dist/scripts/bundle-99c49275bf.min.js +31 -0
- package/dist/scripts/bundles.json +2 -2
- package/dist/scripts/polyfills-b23c61c24c.min.js +1 -0
- package/package.json +3 -3
- package/dist/css/0.chunk.css.map +0 -1
- package/dist/css/1.chunk.css +0 -226
- package/dist/css/1.chunk.css.map +0 -1
- package/dist/css/10.chunk.css +0 -101
- package/dist/css/10.chunk.css.map +0 -1
- package/dist/css/11.chunk.css.map +0 -1
- package/dist/css/12.chunk.css.map +0 -1
- package/dist/css/13.chunk.css +0 -42
- package/dist/css/13.chunk.css.map +0 -1
- package/dist/css/14.chunk.css +0 -42
- package/dist/css/14.chunk.css.map +0 -1
- package/dist/css/15.chunk.css +0 -86
- package/dist/css/15.chunk.css.map +0 -1
- package/dist/css/16.chunk.css +0 -25
- package/dist/css/16.chunk.css.map +0 -1
- package/dist/css/17.chunk.css.map +0 -1
- package/dist/css/18.chunk.css.map +0 -1
- package/dist/css/19.chunk.css.map +0 -1
- package/dist/css/2.chunk.css.map +0 -1
- package/dist/css/20.chunk.css.map +0 -1
- package/dist/css/21.chunk.css.map +0 -1
- package/dist/css/22.chunk.css.map +0 -1
- package/dist/css/23.chunk.css.map +0 -1
- package/dist/css/24.chunk.css.map +0 -1
- package/dist/css/25.chunk.css.map +0 -1
- package/dist/css/26.chunk.css.map +0 -1
- package/dist/css/27.chunk.css.map +0 -1
- package/dist/css/28.chunk.css.map +0 -1
- package/dist/css/29.chunk.css.map +0 -1
- package/dist/css/3.chunk.css +0 -26
- package/dist/css/3.chunk.css.map +0 -1
- package/dist/css/30.chunk.css.map +0 -1
- package/dist/css/31.chunk.css.map +0 -1
- package/dist/css/32.chunk.css.map +0 -1
- package/dist/css/33.chunk.css.map +0 -1
- package/dist/css/34.chunk.css +0 -26
- package/dist/css/34.chunk.css.map +0 -1
- package/dist/css/35.chunk.css.map +0 -1
- package/dist/css/36.chunk.css.map +0 -1
- package/dist/css/37.chunk.css.map +0 -1
- package/dist/css/38.chunk.css.map +0 -1
- package/dist/css/39.chunk.css.map +0 -1
- package/dist/css/40.chunk.css.map +0 -1
- package/dist/css/41.chunk.css.map +0 -1
- package/dist/css/42.chunk.css.map +0 -1
- package/dist/css/43.chunk.css.map +0 -1
- package/dist/css/44.chunk.css.map +0 -1
- package/dist/css/45.chunk.css +0 -17
- package/dist/css/45.chunk.css.map +0 -1
- package/dist/css/46.chunk.css +0 -50
- package/dist/css/46.chunk.css.map +0 -1
- package/dist/css/47.chunk.css +0 -10
- package/dist/css/47.chunk.css.map +0 -1
- package/dist/css/48.chunk.css +0 -40
- package/dist/css/48.chunk.css.map +0 -1
- package/dist/css/49.chunk.css +0 -26
- package/dist/css/49.chunk.css.map +0 -1
- package/dist/css/5.chunk.css.map +0 -1
- package/dist/css/50.chunk.css +0 -14
- package/dist/css/50.chunk.css.map +0 -1
- package/dist/css/51.chunk.css +0 -17
- package/dist/css/51.chunk.css.map +0 -1
- package/dist/css/52.chunk.css +0 -14
- package/dist/css/52.chunk.css.map +0 -1
- package/dist/css/53.chunk.css +0 -6
- package/dist/css/53.chunk.css.map +0 -1
- package/dist/css/54.chunk.css.map +0 -1
- package/dist/css/56.chunk.css +0 -32
- package/dist/css/56.chunk.css.map +0 -1
- package/dist/css/57.chunk.css.map +0 -1
- package/dist/css/58.chunk.css +0 -52
- package/dist/css/58.chunk.css.map +0 -1
- package/dist/css/59.chunk.css.map +0 -1
- package/dist/css/6.chunk.css.map +0 -1
- package/dist/css/60.chunk.css.map +0 -1
- package/dist/css/61.chunk.css.map +0 -1
- package/dist/css/62.chunk.css +0 -52
- package/dist/css/62.chunk.css.map +0 -1
- package/dist/css/63.chunk.css +0 -14
- package/dist/css/63.chunk.css.map +0 -1
- package/dist/css/64.chunk.css.map +0 -1
- package/dist/css/65.chunk.css.map +0 -1
- package/dist/css/66.chunk.css +0 -52
- package/dist/css/66.chunk.css.map +0 -1
- package/dist/css/67.chunk.css +0 -52
- package/dist/css/67.chunk.css.map +0 -1
- package/dist/css/68.chunk.css +0 -14
- package/dist/css/68.chunk.css.map +0 -1
- package/dist/css/69.chunk.css +0 -14
- package/dist/css/69.chunk.css.map +0 -1
- package/dist/css/7.chunk.css.map +0 -1
- package/dist/css/70.chunk.css +0 -43
- package/dist/css/70.chunk.css.map +0 -1
- package/dist/css/71.chunk.css +0 -43
- package/dist/css/71.chunk.css.map +0 -1
- package/dist/css/72.chunk.css +0 -43
- package/dist/css/72.chunk.css.map +0 -1
- package/dist/css/73.chunk.css +0 -43
- package/dist/css/73.chunk.css.map +0 -1
- package/dist/css/78.chunk.css +0 -83
- package/dist/css/78.chunk.css.map +0 -1
- package/dist/css/8.chunk.css.map +0 -1
- package/dist/css/83.chunk.css +0 -9
- package/dist/css/83.chunk.css.map +0 -1
- package/dist/css/84.chunk.css +0 -38
- package/dist/css/84.chunk.css.map +0 -1
- package/dist/css/85.chunk.css +0 -68
- package/dist/css/85.chunk.css.map +0 -1
- package/dist/css/86.chunk.css +0 -5
- package/dist/css/86.chunk.css.map +0 -1
- package/dist/css/87.chunk.css +0 -5
- package/dist/css/87.chunk.css.map +0 -1
- package/dist/css/89.chunk.css +0 -40
- package/dist/css/89.chunk.css.map +0 -1
- package/dist/css/9.chunk.css.map +0 -1
- package/dist/css/90.chunk.css +0 -8
- package/dist/css/90.chunk.css.map +0 -1
- package/dist/css/91.chunk.css +0 -8
- package/dist/css/91.chunk.css.map +0 -1
- package/dist/css/92.chunk.css +0 -32
- package/dist/css/92.chunk.css.map +0 -1
- package/dist/css/93.chunk.css +0 -32
- package/dist/css/93.chunk.css.map +0 -1
- package/dist/css/94.chunk.css +0 -5
- package/dist/css/94.chunk.css.map +0 -1
- package/dist/css/lite-app.css.map +0 -1
- package/dist/libs/common/src/react/hooks/useViewModel.d.ts +0 -4
- package/dist/libs/shared/src/apps/subjects/hooks/useAudienceParams.d.ts +0 -5
- package/dist/libs/shared/src/apps/subjects/reducers/AudienceReducer.d.ts +0 -11
- package/dist/libs/shared/src/enums/PlayerMediaType.d.ts +0 -5
- package/dist/libs/shared/src/interfaces/models/interactive.d.ts +0 -9
- package/dist/libs/shared/src/interfaces/models/interactives/ActionableItem.d.ts +0 -6
- package/dist/libs/shared/src/interfaces/models/interactives/Interaction.d.ts +0 -16
- package/dist/libs/shared/src/interfaces/models/interactives/InteractionType.d.ts +0 -7
- package/dist/libs/shared/src/interfaces/models/interactives/InteractionTypeId.d.ts +0 -8
- package/dist/libs/shared/src/interfaces/models/interactives/Interactive.d.ts +0 -13
- package/dist/libs/shared/src/interfaces/models/interactives/Timepoint.d.ts +0 -9
- package/dist/libs/shared/src/interfaces/models/interactives/index.d.ts +0 -6
- package/dist/libs/shared/src/utils/DashboardHelper.d.ts +0 -9
- package/dist/projects/lite/src/apps/classrooms/components/classroom-group/ClassroomGroup.d.ts +0 -7
- package/dist/projects/lite/src/apps/classrooms/components/classroom-students-list/empty-state/ClassroomStudentsListEmptyState.d.ts +0 -2
- package/dist/projects/lite/src/apps/classrooms/components/tile-actions/TileActions.d.ts +0 -12
- package/dist/projects/lite/src/apps/classrooms/enums/GroupColour.d.ts +0 -10
- package/dist/projects/lite/src/apps/search/components/filter-types/radio-filter/year-level/YearLevelRadioFilter.d.ts +0 -8
- package/dist/projects/lite/src/apps/search/flight-requests/index.d.ts +0 -1
- package/dist/projects/lite/src/apps/share/components/sharee-item/ShareeItem.d.ts +0 -8
- package/dist/projects/lite/src/apps/share/views/main-view/MainShareView.d.ts +0 -11
- package/dist/projects/lite/src/apps/share/views/settings-view/ShareSettingsView.d.ts +0 -9
- package/dist/projects/lite/src/apps/user-manager/interfaces/mocks/MockClassroom.d.ts +0 -8
- package/dist/projects/lite/src/apps/user-manager/views/bulk-upload-users/BulkUploadUsersView.d.ts +0 -8
- package/dist/projects/lite/src/apps/user-manager/views/user-upload-duplicates/UserUploadDuplicatesView.d.ts +0 -8
- package/dist/projects/lite/src/apps/user-manager/views/user-upload-review/UserUploadReviewView.d.ts +0 -8
- package/dist/projects/lite/src/shared/components/share/copy-embed-html/CopyEmbedHtml.d.ts +0 -8
- package/dist/projects/lite/src/shared/components/share/result-templates/user/InstantUserTemplate.d.ts +0 -8
- package/dist/projects/lite/src/shared/components/share/sharee-item/ShareeItem.d.ts +0 -7
- package/dist/projects/lite/src/shared/components/share/tokenized-typeahead/InputSelection.d.ts +0 -8
- package/dist/projects/lite/src/shared/components/share/tokenized-typeahead/TokenizedTypeahead.d.ts +0 -21
- package/dist/projects/lite/src/shared/flight-requests/ShareRequests.d.ts +0 -5
- package/dist/projects/lite/src/shared/hooks/useGetEdgeToEdge.d.ts +0 -6
- package/dist/projects/lite/src/shared/interfaces/mocks/MockClassroomGroup.d.ts +0 -6
- package/dist/projects/lite/src/shared/interfaces/mocks/index.d.ts +0 -1
- package/dist/projects/lite/src/shared/services/SettingsDataService.d.ts +0 -10
- package/dist/projects/lite/src/shared/views/create-clip/CreateClipView.d.ts +0 -6
- package/dist/projects/lite/src/shared/views/left-nav/partial-loading/PartialLeftNavItem.d.ts +0 -2
- package/dist/projects/lite/src/shared/views/play-shared/PlaySharedView.d.ts +0 -6
- package/dist/projects/lite/src/shared/views/share/ShareView.d.ts +0 -9
- package/dist/projects/lite/src/shared/views/share/main-view/MainShareView.d.ts +0 -11
- package/dist/projects/lite/src/shared/views/share/settings-view/ShareSettingsView.d.ts +0 -9
- package/dist/projects/player/src/react/EmbeddedPlayer.d.ts +0 -7
- package/dist/scripts/0-e994a1b4d7.chunk.js +0 -1
- package/dist/scripts/0.chunk.js +0 -332
- package/dist/scripts/0.chunk.js.map +0 -1
- package/dist/scripts/1.chunk.js +0 -1130
- package/dist/scripts/1.chunk.js.map +0 -1
- package/dist/scripts/10.chunk.js +0 -2334
- package/dist/scripts/10.chunk.js.map +0 -1
- package/dist/scripts/100.chunk.js +0 -453
- package/dist/scripts/100.chunk.js.map +0 -1
- package/dist/scripts/101.chunk.js +0 -161
- package/dist/scripts/101.chunk.js.map +0 -1
- package/dist/scripts/102.chunk.js +0 -91
- package/dist/scripts/102.chunk.js.map +0 -1
- package/dist/scripts/103.chunk.js +0 -84
- package/dist/scripts/103.chunk.js.map +0 -1
- package/dist/scripts/11-7a8c344ea6.chunk.js +0 -1
- package/dist/scripts/11.chunk.js +0 -1682
- package/dist/scripts/11.chunk.js.map +0 -1
- package/dist/scripts/12.chunk.js +0 -484
- package/dist/scripts/12.chunk.js.map +0 -1
- package/dist/scripts/13-b5d5d7bdfa.chunk.js +0 -1
- package/dist/scripts/13.chunk.js +0 -260
- package/dist/scripts/13.chunk.js.map +0 -1
- package/dist/scripts/14-28375f71fa.chunk.js +0 -1
- package/dist/scripts/14.chunk.js +0 -1183
- package/dist/scripts/14.chunk.js.map +0 -1
- package/dist/scripts/15.chunk.js +0 -788
- package/dist/scripts/15.chunk.js.map +0 -1
- package/dist/scripts/16.chunk.js +0 -442
- package/dist/scripts/16.chunk.js.map +0 -1
- package/dist/scripts/17-b4479339d2.chunk.js +0 -1
- package/dist/scripts/17.chunk.js +0 -879
- package/dist/scripts/17.chunk.js.map +0 -1
- package/dist/scripts/18-60f3cd6ee4.chunk.js +0 -1
- package/dist/scripts/18.chunk.js +0 -1140
- package/dist/scripts/18.chunk.js.map +0 -1
- package/dist/scripts/19-df1dc3ef2f.chunk.js +0 -1
- package/dist/scripts/19.chunk.js +0 -541
- package/dist/scripts/19.chunk.js.map +0 -1
- package/dist/scripts/2-dbb770fac8.chunk.js +0 -1
- package/dist/scripts/2.chunk.js +0 -18795
- package/dist/scripts/2.chunk.js.map +0 -1
- package/dist/scripts/20-9615a8e5b8.chunk.js +0 -1
- package/dist/scripts/20.chunk.js +0 -369
- package/dist/scripts/20.chunk.js.map +0 -1
- package/dist/scripts/21-30ec979fe0.chunk.js +0 -1
- package/dist/scripts/21.chunk.js +0 -272
- package/dist/scripts/21.chunk.js.map +0 -1
- package/dist/scripts/22-b278cab988.chunk.js +0 -1
- package/dist/scripts/22.chunk.js +0 -2164
- package/dist/scripts/22.chunk.js.map +0 -1
- package/dist/scripts/23.chunk.js +0 -20753
- package/dist/scripts/23.chunk.js.map +0 -1
- package/dist/scripts/24.chunk.js +0 -2288
- package/dist/scripts/24.chunk.js.map +0 -1
- package/dist/scripts/25-888b6248ff.chunk.js +0 -1
- package/dist/scripts/25.chunk.js +0 -2110
- package/dist/scripts/25.chunk.js.map +0 -1
- package/dist/scripts/26-aaabbf241e.chunk.js +0 -1
- package/dist/scripts/26.chunk.js +0 -1603
- package/dist/scripts/26.chunk.js.map +0 -1
- package/dist/scripts/27-3dc1f5803f.chunk.js +0 -1
- package/dist/scripts/27.chunk.js +0 -770
- package/dist/scripts/27.chunk.js.map +0 -1
- package/dist/scripts/28.chunk.js +0 -1460
- package/dist/scripts/28.chunk.js.map +0 -1
- package/dist/scripts/29-ae81a5e250.chunk.js +0 -1
- package/dist/scripts/29.chunk.js +0 -899
- package/dist/scripts/29.chunk.js.map +0 -1
- package/dist/scripts/3.chunk.js +0 -741
- package/dist/scripts/3.chunk.js.map +0 -1
- package/dist/scripts/30-75d0f41d0f.chunk.js +0 -1
- package/dist/scripts/30.chunk.js +0 -792
- package/dist/scripts/30.chunk.js.map +0 -1
- package/dist/scripts/31.chunk.js +0 -825
- package/dist/scripts/31.chunk.js.map +0 -1
- package/dist/scripts/32-d62f3a69c0.chunk.js +0 -1
- package/dist/scripts/32.chunk.js +0 -848
- package/dist/scripts/32.chunk.js.map +0 -1
- package/dist/scripts/33-8ec9d596c5.chunk.js +0 -1
- package/dist/scripts/33.chunk.js +0 -793
- package/dist/scripts/33.chunk.js.map +0 -1
- package/dist/scripts/34-7f80fea1f9.chunk.js +0 -53
- package/dist/scripts/34.chunk.js +0 -817
- package/dist/scripts/34.chunk.js.map +0 -1
- package/dist/scripts/35.chunk.js +0 -520
- package/dist/scripts/35.chunk.js.map +0 -1
- package/dist/scripts/36.chunk.js +0 -717
- package/dist/scripts/36.chunk.js.map +0 -1
- package/dist/scripts/37.chunk.js +0 -538
- package/dist/scripts/37.chunk.js.map +0 -1
- package/dist/scripts/38-3e08037fa3.chunk.js +0 -1
- package/dist/scripts/38.chunk.js +0 -438
- package/dist/scripts/38.chunk.js.map +0 -1
- package/dist/scripts/39-bfb5d54572.chunk.js +0 -1
- package/dist/scripts/39.chunk.js +0 -408
- package/dist/scripts/39.chunk.js.map +0 -1
- package/dist/scripts/4-eef3251d84.chunk.js +0 -1
- package/dist/scripts/4.chunk.js +0 -403
- package/dist/scripts/4.chunk.js.map +0 -1
- package/dist/scripts/40-e0eafc5aec.chunk.js +0 -1
- package/dist/scripts/40.chunk.js +0 -533
- package/dist/scripts/40.chunk.js.map +0 -1
- package/dist/scripts/41.chunk.js +0 -814
- package/dist/scripts/41.chunk.js.map +0 -1
- package/dist/scripts/42-6b91ae0603.chunk.js +0 -1
- package/dist/scripts/42.chunk.js +0 -529
- package/dist/scripts/42.chunk.js.map +0 -1
- package/dist/scripts/43.chunk.js +0 -609
- package/dist/scripts/43.chunk.js.map +0 -1
- package/dist/scripts/44-f0664cf45b.chunk.js +0 -1
- package/dist/scripts/44.chunk.js +0 -563
- package/dist/scripts/44.chunk.js.map +0 -1
- package/dist/scripts/45-3173437bfb.chunk.js +0 -1
- package/dist/scripts/45.chunk.js +0 -674
- package/dist/scripts/45.chunk.js.map +0 -1
- package/dist/scripts/46.chunk.js +0 -409
- package/dist/scripts/46.chunk.js.map +0 -1
- package/dist/scripts/47.chunk.js +0 -401
- package/dist/scripts/47.chunk.js.map +0 -1
- package/dist/scripts/48.chunk.js +0 -217
- package/dist/scripts/48.chunk.js.map +0 -1
- package/dist/scripts/49.chunk.js +0 -282
- package/dist/scripts/49.chunk.js.map +0 -1
- package/dist/scripts/5-9cb873330d.chunk.js +0 -1
- package/dist/scripts/5.chunk.js +0 -309
- package/dist/scripts/5.chunk.js.map +0 -1
- package/dist/scripts/50.chunk.js +0 -450
- package/dist/scripts/50.chunk.js.map +0 -1
- package/dist/scripts/51.chunk.js +0 -338
- package/dist/scripts/51.chunk.js.map +0 -1
- package/dist/scripts/52.chunk.js +0 -447
- package/dist/scripts/52.chunk.js.map +0 -1
- package/dist/scripts/53.chunk.js +0 -440
- package/dist/scripts/53.chunk.js.map +0 -1
- package/dist/scripts/54.chunk.js +0 -1533
- package/dist/scripts/54.chunk.js.map +0 -1
- package/dist/scripts/55.chunk.js +0 -574
- package/dist/scripts/55.chunk.js.map +0 -1
- package/dist/scripts/56.chunk.js +0 -245
- package/dist/scripts/56.chunk.js.map +0 -1
- package/dist/scripts/57.chunk.js +0 -230
- package/dist/scripts/57.chunk.js.map +0 -1
- package/dist/scripts/58.chunk.js +0 -480
- package/dist/scripts/58.chunk.js.map +0 -1
- package/dist/scripts/59.chunk.js +0 -408
- package/dist/scripts/59.chunk.js.map +0 -1
- package/dist/scripts/6.chunk.js +0 -1172
- package/dist/scripts/6.chunk.js.map +0 -1
- package/dist/scripts/60.chunk.js +0 -241
- package/dist/scripts/60.chunk.js.map +0 -1
- package/dist/scripts/61.chunk.js +0 -249
- package/dist/scripts/61.chunk.js.map +0 -1
- package/dist/scripts/62.chunk.js +0 -132
- package/dist/scripts/62.chunk.js.map +0 -1
- package/dist/scripts/63.chunk.js +0 -318
- package/dist/scripts/63.chunk.js.map +0 -1
- package/dist/scripts/64.chunk.js +0 -212
- package/dist/scripts/64.chunk.js.map +0 -1
- package/dist/scripts/65.chunk.js +0 -195
- package/dist/scripts/65.chunk.js.map +0 -1
- package/dist/scripts/66.chunk.js +0 -230
- package/dist/scripts/66.chunk.js.map +0 -1
- package/dist/scripts/67.chunk.js +0 -108
- package/dist/scripts/67.chunk.js.map +0 -1
- package/dist/scripts/68.chunk.js +0 -209
- package/dist/scripts/68.chunk.js.map +0 -1
- package/dist/scripts/69.chunk.js +0 -211
- package/dist/scripts/69.chunk.js.map +0 -1
- package/dist/scripts/7-3adb578de5.chunk.js +0 -1
- package/dist/scripts/7.chunk.js +0 -613
- package/dist/scripts/7.chunk.js.map +0 -1
- package/dist/scripts/70.chunk.js +0 -115
- package/dist/scripts/70.chunk.js.map +0 -1
- package/dist/scripts/71.chunk.js +0 -449
- package/dist/scripts/71.chunk.js.map +0 -1
- package/dist/scripts/72.chunk.js +0 -161
- package/dist/scripts/72.chunk.js.map +0 -1
- package/dist/scripts/73-3d149ecedc.chunk.js +0 -1
- package/dist/scripts/73.chunk.js +0 -87
- package/dist/scripts/73.chunk.js.map +0 -1
- package/dist/scripts/74.chunk.js +0 -142
- package/dist/scripts/74.chunk.js.map +0 -1
- package/dist/scripts/75.chunk.js +0 -149
- package/dist/scripts/75.chunk.js.map +0 -1
- package/dist/scripts/76.chunk.js +0 -142
- package/dist/scripts/76.chunk.js.map +0 -1
- package/dist/scripts/77.chunk.js +0 -180
- package/dist/scripts/77.chunk.js.map +0 -1
- package/dist/scripts/78.chunk.js +0 -170
- package/dist/scripts/78.chunk.js.map +0 -1
- package/dist/scripts/79.chunk.js +0 -172
- package/dist/scripts/79.chunk.js.map +0 -1
- package/dist/scripts/8.chunk.js +0 -436
- package/dist/scripts/8.chunk.js.map +0 -1
- package/dist/scripts/80-f4b5d951b3.chunk.js +0 -1
- package/dist/scripts/80.chunk.js +0 -173
- package/dist/scripts/80.chunk.js.map +0 -1
- package/dist/scripts/81-8c42a24988.chunk.js +0 -1
- package/dist/scripts/81.chunk.js +0 -172
- package/dist/scripts/81.chunk.js.map +0 -1
- package/dist/scripts/82.chunk.js +0 -311
- package/dist/scripts/82.chunk.js.map +0 -1
- package/dist/scripts/83.chunk.js +0 -318
- package/dist/scripts/83.chunk.js.map +0 -1
- package/dist/scripts/84.chunk.js +0 -64
- package/dist/scripts/84.chunk.js.map +0 -1
- package/dist/scripts/85.chunk.js +0 -65
- package/dist/scripts/85.chunk.js.map +0 -1
- package/dist/scripts/86.chunk.js +0 -37
- package/dist/scripts/86.chunk.js.map +0 -1
- package/dist/scripts/87.chunk.js +0 -82
- package/dist/scripts/87.chunk.js.map +0 -1
- package/dist/scripts/88.chunk.js +0 -1001
- package/dist/scripts/88.chunk.js.map +0 -1
- package/dist/scripts/89.chunk.js +0 -24
- package/dist/scripts/89.chunk.js.map +0 -1
- package/dist/scripts/9.chunk.js +0 -445
- package/dist/scripts/9.chunk.js.map +0 -1
- package/dist/scripts/90.chunk.js +0 -36
- package/dist/scripts/90.chunk.js.map +0 -1
- package/dist/scripts/91.chunk.js +0 -36
- package/dist/scripts/91.chunk.js.map +0 -1
- package/dist/scripts/92.chunk.js +0 -69
- package/dist/scripts/92.chunk.js.map +0 -1
- package/dist/scripts/93.chunk.js +0 -441
- package/dist/scripts/93.chunk.js.map +0 -1
- package/dist/scripts/94.chunk.js +0 -740
- package/dist/scripts/94.chunk.js.map +0 -1
- package/dist/scripts/95.chunk.js +0 -221
- package/dist/scripts/95.chunk.js.map +0 -1
- package/dist/scripts/96.chunk.js +0 -230
- package/dist/scripts/96.chunk.js.map +0 -1
- package/dist/scripts/97.chunk.js +0 -241
- package/dist/scripts/97.chunk.js.map +0 -1
- package/dist/scripts/98.chunk.js +0 -249
- package/dist/scripts/98.chunk.js.map +0 -1
- package/dist/scripts/99.chunk.js +0 -212
- package/dist/scripts/99.chunk.js.map +0 -1
- package/dist/scripts/bundle-f4a1d3ab76.min.js +0 -31
- package/dist/scripts/bundle.js +0 -119288
- package/dist/scripts/bundle.js.map +0 -1
- package/dist/scripts/pdf.worker.entry.worker.js +0 -46239
- package/dist/scripts/pdf.worker.entry.worker.js.map +0 -1
- package/dist/scripts/polyfills-7ae776aac5.min.js +0 -1
- package/dist/scripts/polyfills.js +0 -15254
- package/dist/scripts/polyfills.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/forms/form-checkbox/Checkbox.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","webpack://@clickview/lite/C:/ClickView/front-end/clickview/packages/libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.scss?924e","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/toggle-switch/ToggleSwitch.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/widgets/items/playlist-widget-item/PlaylistWidgetItem.tsx","webpack://@clickview/lite/C:/ClickView/front-end/clickview/packages/libs/shared/src/components/widgets/items/playlist-widget-item/playlist-widget-item.scss?48ee","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/widgets/items/series-widget-item/SeriesWidgetItem.tsx","webpack://@clickview/lite/C:/ClickView/front-end/clickview/packages/libs/shared/src/components/widgets/items/series-widget-item/series-widget-item.scss?6ab1","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/playlists/constants/PlaylistBgColourClassNames.ts","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/filter-actions/FilterActions.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/filter-button/FilterButton.tsx","webpack://@clickview/lite/./src/apps/search/components/filter-button/filter-button.scss?cef3","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/filter-types/checkbox-filter/CheckboxFilter.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/filter-types/dropdown-filter/DropdownFilter.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/filter-types/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/filter-types/more-filters/MoreFilters.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/filter-types/radio-filter/RadioFilter.tsx","webpack://@clickview/lite/./src/apps/search/components/filter-types/radio-filter/radio-filter.scss?bbb1","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/filter-types/radio-filter/year-group/YearGroupRadioFilter.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/filter-types/switch-filter/SwitchFilter.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/reset-button/ResetButton.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/components/search-filters/SearchFilters.tsx","webpack://@clickview/lite/./src/apps/search/components/search-filters/search-filters.scss?ff88","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/reducers/FilterReducer.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/reducers/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/utils/FilterHelper.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/utils/SearchHelper.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/search/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/user-manager/components/year-group-select/YearGroupSelect.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/shared/hooks/useBulkCheckboxManager.tsx"],"names":[],"mappings":"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","file":"scripts/10.chunk.js","sourcesContent":["import * as React from 'react';\r\n\r\ninterface CheckboxProps {\r\n id: string;\r\n checked: boolean;\r\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n label?: string;\r\n name?: string;\r\n className?: string;\r\n}\r\n\r\nCheckbox.defaultProps = {\r\n checked: false,\r\n label: '',\r\n className: ''\r\n};\r\n\r\n/**\r\n * Use this checkbox outside of Formik contexts\r\n */\r\nexport function Checkbox(props: CheckboxProps): JSX.Element {\r\n return (\r\n <div className={`custom-control custom-checkbox ${props.className}`}>\r\n <input\r\n type='checkbox'\r\n className='custom-control-input'\r\n id={props.id}\r\n name={props.name}\r\n checked={props.checked}\r\n onChange={props.onChange}\r\n />\r\n <label className='custom-control-label cursor-pointer' htmlFor={props.id}>{props.label}</label>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Spinner } from 'react-bootstrap';\r\n\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport styles from './infinite-scroll-footer.scss';\r\n\r\ninterface InfiniteScrollFooterProps {\r\n isFetching: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\r\n return (\r\n <div className={`p-3 text-center ${styles.container}`}>\r\n {props.isFetching\r\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\r\n : (\r\n <SvgContainer\r\n svgName={cvSvgLibrary.ChevronDown}\r\n className='svg-container cursor-pointer'\r\n size={SvgContainerSize.Large}\r\n onClick={props.onClick}\r\n />\r\n )\r\n }\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"cv--container--1_KC6\",\"spinner\":\"cv--spinner--VXlcl\"};","import React from 'react';\r\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\r\n\r\ninterface ToggleSwitchProps {\r\n onClick: (...args: any) => any;\r\n on: boolean;\r\n disabled?: boolean;\r\n\r\n // Using this goes against proper a11y practices, but it's been added for situations where it looks better\r\n hideOutline?: boolean;\r\n}\r\n\r\nexport function ToggleSwitch(props: ToggleSwitchProps): JSX.Element {\r\n function onClick(...args: any): void {\r\n if (props.disabled)\r\n return;\r\n\r\n props.onClick(...args);\r\n }\r\n\r\n const bootstrapClasses = 'd-inline-block float-right align-top custom-toggle toggle-option';\r\n const onClass = (props.on && !props.disabled) ? 'on' : '';\r\n const disabledClass = props.disabled ? 'disabled' : '';\r\n const outlineClass = props.hideOutline ? 'outline-none' : '';\r\n\r\n return (\r\n <DivButton\r\n onClick={onClick}\r\n className={`${bootstrapClasses} ${onClass} ${disabledClass} ${outlineClass}`}\r\n >\r\n <span className='handle' />\r\n </DivButton>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { PlaylistItem, PlaylistItemProps } from 'libs/shared/apps/playlists/components/playlist-list/PlaylistItem';\r\n\r\nimport styles from './playlist-widget-item.scss';\r\n\r\nexport function PlaylistWidgetItem(props : PlaylistItemProps): JSX.Element {\r\n const { ...otherProps } = props;\r\n\r\n const appLink = {\r\n ...props.appLink,\r\n args: [ props.data.id, TextHelper.slugify(props.data.name) ]\r\n };\r\n\r\n return (\r\n <div className={`position-relative p-1 flex-shrink-0 ${styles.width}`}>\r\n <PlaylistItem\r\n {...otherProps}\r\n appLink={appLink}\r\n />\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"width\":\"cv--width--wNWEd\"};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\n\r\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\r\nimport { Series, PresentationAudience } from 'libs/shared/interfaces';\r\nimport { AudienceHelper } from 'libs/shared/utils/AudienceHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { BaseThumbnail, AspectRatio } from 'libs/shared/components/thumbnails/base/BaseThumbnail';\r\nimport { ThumbnailFallback, ThumbnailFallbackType } from 'libs/shared/components/thumbnails/base/ThumbnailFallback';\r\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\r\nimport { BadgeType, Badge } from 'libs/shared/components/badges/Badge';\r\nimport { ImageSize } from 'libs/shared/enums/Images';\r\n\r\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\r\n\r\nimport styles from './series-widget-item.scss';\r\n\r\nexport interface SeriesWidgetItemProps {\r\n data: Series;\r\n appLink: Core.AppLink;\r\n audiences: PresentationAudience[];\r\n preloadImage?: boolean;\r\n analyticsData?: HashObject;\r\n analyticsOptions?: AnalyticsOptions;\r\n}\r\n\r\nexport function SeriesWidgetItem(props : SeriesWidgetItemProps): JSX.Element {\r\n const { data: series, appLink, preloadImage } = props;\r\n\r\n const seriesAppLink: Core.AppLink = {\r\n ...appLink,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n };\r\n\r\n /**\r\n * Subject audiences currently take render precedence over rating.\r\n * \r\n * This means that until we properly add productionCompanies to series, we\r\n * should expect only CV series to have a subject audience. Any TV series\r\n * from the Exchange should only have a rating. \r\n */\r\n\r\n const audiences = series && series.subjectPresentationAudiences &&\r\n series.subjectPresentationAudiences.data || [];\r\n\r\n const filteredAudiences = AudienceHelper.getSortedPresentationAudiences(audiences, props.audiences);\r\n const mergedAudience = AudienceHelper.getMergedPresentationAudienceString(filteredAudiences);\r\n\r\n const [ hoverRef, isHovering ] = useHoverIntent<HTMLDivElement>(styles.hoverActive);\r\n\r\n const analyticsData = { ...props.analyticsData,\r\n id: series?.id,\r\n name: series?.name\r\n };\r\n\r\n const analyticsOptions = { ...props.analyticsOptions,\r\n actionType: UserAction.Click,\r\n entity: EntityType.Series,\r\n descriptor: ClickDescriptor.TallPoster\r\n };\r\n\r\n return (\r\n <AppLink\r\n key={series.id}\r\n appLink={seriesAppLink}\r\n className={`position-relative p-1 flex-shrink-0 ${styles.width}`}\r\n analyticsData={analyticsData}\r\n analyticsOptions={analyticsOptions}\r\n >\r\n <div ref={hoverRef}>\r\n {isHovering &&\r\n <div className={`p-3 text-white text-center ${styles.mask}`}>\r\n <h3 className='h4'>{series.name}</h3>\r\n <p>{series.description}</p>\r\n </div>\r\n }\r\n <BaseThumbnail\r\n data={series.tallPoster}\r\n aspectRatio={AspectRatio.NineBySixteen}\r\n preload={preloadImage}\r\n imageOptions={{ size: ImageSize.Large }}\r\n >\r\n <ThumbnailFallback type={ThumbnailFallbackType.Series} />\r\n <div className={`position-absolute text-white ${styles.labelContainer}`}>\r\n {!!audiences && audiences.length\r\n ? <AudienceLabel audience={ mergedAudience } border='white' />\r\n : <Badge type={BadgeType.Rating} data={series.rating} />\r\n }\r\n </div>\r\n </BaseThumbnail>\r\n </div>\r\n </AppLink>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialLoadingHeading\":\"cv--partialLoadingHeading--1RLPq\",\"partialLoading\":\"cv--partialLoading--oArG4\",\"labelContainer\":\"cv--labelContainer--QLCgm\",\"hoverActive\":\"cv--hoverActive--3Aleb\",\"mask\":\"cv--mask--2M2Zz\",\"width\":\"cv--width--TQg2K\"};","import { useEffect } from 'react';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nconst SCROLL_TOLERANCE = 400; // value in px\r\n\r\nexport function useInfiniteScroll(fetchNextPage: () => void, hasMore: boolean, isFetching: boolean): void {\r\n const handleScroll = (): void => {\r\n if (isFetching)\r\n return;\r\n\r\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\r\n\r\n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\r\n\r\n if (currentScrollHeight < totalHeight)\r\n return;\r\n\r\n fetchNextPage();\r\n };\r\n\r\n useEffect(() => {\r\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\r\n\r\n if (hasMore)\r\n window.addEventListener('scroll', onScroll);\r\n\r\n return () => window.removeEventListener('scroll', onScroll);\r\n }, [ hasMore, fetchNextPage ]);\r\n}","const DEFAULT_NUM_ITEMS = 5;\r\nconst DEFAULT_MIN_WIDTH = 50; // px\r\nconst DEFAULT_MAX_WIDTH = 100; // px\r\n\r\ninterface PartialLoadingOptions {\r\n numItems?: number;\r\n minWidth?: number;\r\n maxWidth?: number;\r\n}\r\n\r\ninterface PartialLoadingItem {\r\n width: string;\r\n}\r\n\r\nexport const PartialLoadingHelper = {\r\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\r\n const {\r\n numItems = DEFAULT_NUM_ITEMS,\r\n minWidth = DEFAULT_MIN_WIDTH,\r\n maxWidth = DEFAULT_MAX_WIDTH\r\n } = options;\r\n\r\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * maxWidth), minWidth);\r\n\r\n return [...Array(numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\r\n }\r\n};","export const PLAYLIST_BG_COLOUR_CLASS_NAMES = [\r\n 'bg-froly',\r\n 'bg-pizazz',\r\n 'bg-emerald',\r\n 'bg-puerto-rico',\r\n 'bg-pelorous',\r\n 'bg-picton-blue',\r\n 'bg-portage',\r\n 'bg-east-side'\r\n];","import * as React from 'react';\r\nimport * as ReactIntersectionObserver from 'react-intersection-observer';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { WorkflowPhase, UserAction } from 'libs/analytics/interfaces';\r\n\r\nimport { FilterContext, FilterPayloadType } from 'apps/search/reducers';\r\nimport { FilterHelper } from 'apps/search/utils';\r\n\r\nconst namespace = 'search.filterActions';\r\n\r\nconst triggerAppLink = (stateChange: FilterPayloadType, appLink: Core.AppLink) => {\r\n const currentQueryParams = Core.LocationUtils.GetQuery();\r\n\r\n Core.AppLinkHelper.trigger({\r\n ...appLink,\r\n params: FilterHelper.buildQueryParams(currentQueryParams, stateChange)\r\n });\r\n};\r\n\r\ntype FilterActionsProps = FilterPayloadType & PropsWithAnalyticsOptions<{\r\n className?: string;\r\n onClickReset?: () => void;\r\n}>;\r\n\r\nFilterActions.defaultProps = {\r\n active: false,\r\n className: ''\r\n};\r\n\r\nexport function FilterActions(props: FilterActionsProps): JSX.Element {\r\n const { state, dispatch } = React.useContext(FilterContext);\r\n\r\n const [ triggerOnClose, setTriggerOnClose ] = React.useState(false);\r\n const [ ref, inView ] = ReactIntersectionObserver.useInView();\r\n\r\n React.useEffect(() => {\r\n if (inView) {\r\n setTriggerOnClose(true);\r\n return;\r\n }\r\n\r\n if (!inView && triggerOnClose) {\r\n setTriggerOnClose(false);\r\n applyFilter(false);\r\n }\r\n }, [inView]);\r\n\r\n function applyFilter(applyClicked: boolean): void {\r\n // The default value should not be set as a query param\r\n const isDefaultValue = props.selection?.length === 1 && ArrayHelper.first(props.selection)?.default;\r\n\r\n AnalyticsHelper.logUserAction({\r\n type: props.filter.name,\r\n selection: (props.selection && !isDefaultValue) ? props.selection : [],\r\n isActive: props.active && !isDefaultValue,\r\n applyClicked\r\n }, AnalyticsHelper.mergeOptions(props.analyticsOptions, {\r\n workflowPhase: WorkflowPhase.Complete,\r\n actionType: UserAction.Filter\r\n }));\r\n\r\n const payload: FilterPayloadType = {\r\n filter: props.filter,\r\n active: props.active && !isDefaultValue,\r\n selection: (props.selection && !isDefaultValue) ? props.selection : []\r\n };\r\n\r\n dispatch({ type: 'apply', payload });\r\n triggerAppLink(payload, state.appLink);\r\n }\r\n\r\n function onClickReset(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n props.onClickReset();\r\n }\r\n\r\n function onClickApply(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n applyFilter(true);\r\n }\r\n\r\n return (\r\n <div ref={ref} className={`d-flex justify-content-between ${props.className}`}>\r\n {(props.onClickReset && props.active)\r\n ? (\r\n <DivButton className='text-muted hover-text-underline cursor-pointer' onClick={onClickReset}>\r\n <Text namespace={namespace} phrase='reset' />\r\n </DivButton>\r\n ) : <div className='invisible' />\r\n }\r\n\r\n <DivButton className='info-link' onClick={onClickApply}>\r\n <Text namespace={namespace} phrase='apply' />\r\n </DivButton>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { SearchFilter, MoreFilters } from 'apps/search/interfaces';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nimport styles from './filter-button.scss';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype FilterButtonProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter | MoreFilters;\r\n}>;\r\n\r\nexport function FilterButton(props: FilterButtonProps): JSX.Element {\r\n const [ label, setLabel ] = React.useState(props.filter.name);\r\n\r\n const FilterComponent = props.filter.customComponent\r\n ? props.filter.customComponent\r\n : FilterHelper.mapTypeToComponent(props.filter.type);\r\n\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n React.useEffect(() => {\r\n setLabel(FilterHelper.getLabel(props.filter, filterState));\r\n }, [ props.filter, filterState.selection ]);\r\n\r\n const baseClass = `${styles.filterButton} mx-1 btn`;\r\n const colorClass = filterState.active ? 'btn-info' : 'btn-secondary';\r\n const caretClass = props.filter.type !== 'dropdown' ? styles.hideCaret : '';\r\n\r\n return (\r\n <Dropdown>\r\n <Dropdown.Toggle id={props.filter.id} className={`${baseClass} ${colorClass} ${caretClass}`}>\r\n {label}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu onClick={(e: React.MouseEvent) => e.stopPropagation()}>\r\n <div className={`${styles.filterItem} mx-1 ${props.filter.type !== 'dropdown' ? 'px-2 py-1' : ''}`}>\r\n <FilterComponent analyticsOptions={props.analyticsOptions} filter={props.filter} />\r\n </div>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterButton\":\"cv--filterButton--2LJ1G\",\"hideCaret\":\"cv--hideCaret--2OStB\",\"filterItem\":\"cv--filterItem--13K5j\"};","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\r\n\r\nimport { useBulkCheckboxManager } from 'shared/hooks/useBulkCheckboxManager';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nimport { FilterActions } from '../../filter-actions/FilterActions';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype CheckboxFilterProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter;\r\n}>;\r\n\r\nexport function CheckboxFilter(props: CheckboxFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const { onToggleItem, isChecked, getSelected } = useBulkCheckboxManager(props.filter.options, {\r\n preselectedIds: filterState.selection?.map(s => s.id) || []\r\n });\r\n\r\n const selections = getSelected().map(optionName => props.filter.options.find(o => o.id === optionName));\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n\r\n <Form className='mb-3'>\r\n {props.filter.options.map(option => {\r\n return (\r\n <Checkbox\r\n key={option.id}\r\n label={option.name}\r\n name={option.id}\r\n id={option.id}\r\n onChange={() => onToggleItem(option.id)}\r\n checked={isChecked(option.id)}\r\n className='my-1'\r\n />\r\n );\r\n })}\r\n </Form>\r\n\r\n <FilterActions\r\n active={!!selections.length}\r\n filter={props.filter}\r\n selection={selections}\r\n analyticsOptions={props.analyticsOptions}\r\n onClickReset={() => {\r\n getSelected().forEach(option => {\r\n if (isChecked(option))\r\n onToggleItem(option);\r\n });\r\n }}\r\n />\r\n </>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from '../../filter-actions/FilterActions';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype DropdownFilterProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter;\r\n}>;\r\n\r\nexport function DropdownFilter(props: DropdownFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(filterState.selection);\r\n\r\n return (\r\n <>\r\n {props.filter.options.map(option => (\r\n <Dropdown.Item\r\n key={option.id}\r\n onClick={() => setCurrentSelection([option])}\r\n >\r\n {option.name}\r\n </Dropdown.Item>\r\n ))}\r\n\r\n <FilterActions\r\n active={!!currentSelection}\r\n filter={props.filter}\r\n selection={currentSelection}\r\n className='pt-1 px-2'\r\n analyticsOptions={props.analyticsOptions}\r\n />\r\n </>\r\n );\r\n}","export * from './checkbox-filter/CheckboxFilter';\r\nexport * from './more-filters/MoreFilters';\r\nexport * from './switch-filter/SwitchFilter';\r\nexport * from './dropdown-filter/DropdownFilter';\r\nexport * from './radio-filter/RadioFilter';\r\nexport * from './radio-filter/year-group/YearGroupRadioFilter';","import * as React from 'react';\r\n\r\nexport function MoreFilters(): JSX.Element {\r\n return (\r\n <></>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from 'apps/search/components';\r\n\r\nimport styles from './radio-filter.scss';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype RadioFilterProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter;\r\n}>;\r\n\r\nexport function RadioFilter(props: RadioFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(filterState.selection);\r\n React.useEffect(() => setCurrentSelection(filterState.selection), [filterState.selection]);\r\n\r\n const defaultOption = props.filter.options.find(o => o.default);\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n\r\n <Form className='mb-3'>\r\n {props.filter.options.map(option => {\r\n const isSelected = currentSelection?.length && option.id === ArrayHelper.first(currentSelection).id;\r\n\r\n return (\r\n <Form.Check\r\n key={option.id}\r\n custom\r\n type='radio'\r\n label={option.name}\r\n name={option.id}\r\n id={option.id}\r\n value={option.id}\r\n onChange={() => setCurrentSelection([option])}\r\n checked={isSelected}\r\n className={styles.radioFilter}\r\n />\r\n );\r\n })}\r\n </Form>\r\n\r\n <FilterActions\r\n active={!!currentSelection?.length}\r\n filter={props.filter}\r\n selection={currentSelection}\r\n analyticsOptions={props.analyticsOptions}\r\n onClickReset={() => setCurrentSelection(defaultOption ? [defaultOption] : null)}\r\n />\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radioFilter\":\"cv--radioFilter--3srm_\"};","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { PropsWithAnalyticsOptions, YearGroup } from 'libs/shared/interfaces';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from 'apps/search/components';\r\n\r\nimport { YearGroupSelect } from 'apps/user-manager/components/year-group-select/YearGroupSelect';\r\n\r\ntype YearGroupRadioFilterProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter;\r\n}>;\r\n\r\nexport function YearGroupRadioFilter(props: YearGroupRadioFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(filterState.selection);\r\n\r\n React.useEffect(() => setCurrentSelection(filterState.selection), [filterState.selection]);\r\n\r\n function onSelect(yearGroup: YearGroup): void {\r\n setCurrentSelection([props.filter.options.find(f => f.id === yearGroup.id)]);\r\n }\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n\r\n <Form className='mb-3'>\r\n <YearGroupSelect\r\n yearGroups={props.filter.options as YearGroup[]}\r\n onSelect={onSelect}\r\n selected={ArrayHelper.first(currentSelection) as YearGroup || null}\r\n />\r\n </Form>\r\n\r\n <FilterActions\r\n active={!!currentSelection?.length}\r\n filter={props.filter}\r\n selection={currentSelection}\r\n analyticsOptions={props.analyticsOptions}\r\n onClickReset={() => setCurrentSelection(null)}\r\n />\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\r\n\r\nimport { FilterProps } from 'apps/search/interfaces';\r\nimport { FilterActions } from 'apps/search/components';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nexport function SwitchFilter(props: FilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ active, setActive ] = React.useState<boolean>(filterState.active);\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n <p className='d-inline-block w-75 mr-auto'>{props.filter.description}</p>\r\n\r\n <ToggleSwitch onClick={() => setActive(!active)} on={active} />\r\n\r\n <FilterActions\r\n active={active}\r\n filter={props.filter}\r\n analyticsOptions={props.analyticsOptions}\r\n onClickReset={() => setActive(false)}\r\n />\r\n </>\r\n );\r\n}","export * from './search-filters/SearchFilters';\r\nexport * from './search-filters/PartialSearchFilters';\r\nexport * from './filter-button/FilterButton';\r\nexport * from './filter-actions/FilterActions';\r\nexport * from './reset-button/ResetButton';\r\nexport * from './filter-types';","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { UserAction, FilterDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype ResetButtonProps = PropsWithAnalyticsOptions<{\r\n currentQueryParam: string;\r\n}>;\r\n\r\nexport function ResetButton(props: ResetButtonProps): JSX.Element {\r\n const { state, dispatch } = React.useContext(FilterContext);\r\n\r\n const onClickReset = () => {\r\n const nextAppLink: Core.AppLink = {\r\n application: state.appLink.application,\r\n action: state.appLink.action\r\n };\r\n\r\n AnalyticsHelper.logUserAction({\r\n type: 'All',\r\n active: false\r\n }, AnalyticsHelper.mergeOptions(props.analyticsOptions, {\r\n actionType: UserAction.Filter,\r\n descriptor: FilterDescriptor.Reset,\r\n workflowPhase: WorkflowPhase.Complete\r\n }));\r\n\r\n if (props.currentQueryParam)\r\n nextAppLink.params = { query: props.currentQueryParam };\r\n\r\n Core.AppLinkHelper.trigger(nextAppLink);\r\n\r\n dispatch({\r\n type: 'trigger-reset',\r\n payload: {}\r\n });\r\n };\r\n\r\n return (\r\n <DivButton\r\n onClick={onClickReset}\r\n className='hover-text-underline cursor-pointer d-flex align-items-center ml-2'\r\n >\r\n <Text namespace='search.resetButton' phrase='reset' />\r\n </DivButton>\r\n );\r\n}","import * as React from 'react';\r\nimport styles from './search-filters.scss';\r\n\r\ninterface PartialSearchFiltersProps {\r\n count?: number;\r\n hideHeading?: boolean;\r\n}\r\n\r\nexport function PartialSearchFilters({ count = 6, hideHeading }: PartialSearchFiltersProps): JSX.Element {\r\n return (\r\n <div className='d-flex'>\r\n {!hideHeading && (\r\n <div className={`\r\n ${styles.partialFilterHeading}\r\n partial-loading-background\r\n d-inline-block\r\n pr-2\r\n border-right\r\n d-flex\r\n align-items-center\r\n my-auto\r\n `} />\r\n )}\r\n\r\n <div className='d-flex pl-1'>\r\n {Array(count).fill(null).map((item, index) => (\r\n <div key={index} className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\r\n\r\nimport { FilterButton, ResetButton } from 'apps/search/components';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterReducer, FilterContext } from 'apps/search/reducers';\r\nimport { SearchFilter, MoreFilters } from 'apps/search/interfaces';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype SearchFiltersProps = PropsWithAnalyticsOptions<{\r\n queryParams: HashObject;\r\n mainFilters: SearchFilter[];\r\n appLink: Core.AppLink;\r\n moreFilters?: MoreFilters;\r\n hideHeading?: boolean;\r\n}>;\r\n\r\nexport function SearchFilters(props: SearchFiltersProps): JSX.Element {\r\n const { queryParams, mainFilters, moreFilters, appLink, hideHeading } = props;\r\n\r\n const initialState = React.useMemo(() => {\r\n return FilterHelper.deriveInitialStateFromQuery(queryParams, mainFilters, moreFilters, appLink);\r\n }, [queryParams]);\r\n\r\n const [ state, dispatch ] = React.useReducer(FilterReducer, initialState);\r\n\r\n React.useEffect(() => {\r\n if (!state.bulkReset)\r\n return;\r\n\r\n dispatch({\r\n type: 'bulk-reset',\r\n payload: FilterHelper.deriveInitialStateFromQuery({}, mainFilters, moreFilters, appLink) as any\r\n });\r\n }, [state]);\r\n\r\n return (\r\n <FilterContext.Provider value={{ state, dispatch }}>\r\n <LanguageNamespaceContext.Provider value='search.searchFilters'>\r\n <section className='d-flex'>\r\n {!hideHeading && (\r\n <h2 className='h5 mb-0 d-inline-block pr-2 border-right d-flex align-items-center'><Text phrase='heading' /></h2>\r\n )}\r\n\r\n <div className={`d-flex ${!hideHeading ? 'ml-1' : ''}`}>\r\n {mainFilters.map(f => <FilterButton key={f.id} filter={f} analyticsOptions={props.analyticsOptions} />)}\r\n\r\n {moreFilters && (\r\n <FilterButton key={moreFilters.id} filter={moreFilters} analyticsOptions={props.analyticsOptions} />\r\n )}\r\n\r\n {FilterHelper.hasActiveFilters(queryParams) &&\r\n <ResetButton currentQueryParam={queryParams.query} analyticsOptions={props.analyticsOptions} />\r\n }\r\n </div>\r\n </section>\r\n </LanguageNamespaceContext.Provider>\r\n </FilterContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialFilterHeading\":\"cv--partialFilterHeading--2zHGT\",\"partialButton\":\"cv--partialButton--3Gy7Y\"};","import { createContext } from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ReducerActions } from 'libs/common/react/interfaces';\r\n\r\nimport { SearchFilter, FilterIds, FilterOption } from 'apps/search/interfaces';\r\n\r\nexport type FilterState = {\r\n active: boolean;\r\n selection?: FilterOption[];\r\n};\r\n\r\ntype FilterStateHashFilters = {\r\n [key in FilterIds]: FilterState\r\n};\r\n\r\nexport type FilterStateHash = FilterStateHashFilters & {\r\n bulkReset?: boolean;\r\n appLink: Core.AppLink;\r\n};\r\n\r\nexport type FilterActionType = 'apply' | 'reset' | 'bulk-reset' | 'trigger-reset';\r\n\r\nexport interface FilterPayloadType {\r\n filter: SearchFilter;\r\n active: boolean;\r\n selection?: FilterOption[];\r\n}\r\n\r\n/**\r\n * Context\r\n */\r\ninterface FilterContextType {\r\n state: FilterStateHash;\r\n dispatch: React.Dispatch<ReducerActions<FilterActionType>>;\r\n}\r\n\r\nexport const FilterContext = createContext<FilterContextType>(null);\r\n\r\n/**\r\n * Reducer - root level keys should match the filter object's corresponding \"id\" field\r\n */\r\nexport function FilterReducer(\r\n state: FilterStateHash,\r\n action: ReducerActions<FilterActionType, FilterPayloadType>\r\n): FilterStateHash {\r\n switch (action.type) {\r\n case 'apply':\r\n return {\r\n ...state,\r\n [action.payload.filter.id]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'reset':\r\n return {\r\n ...state,\r\n [action.payload.filter.id]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'trigger-reset':\r\n return {\r\n ...state,\r\n bulkReset: true\r\n };\r\n\r\n case 'bulk-reset':\r\n return {\r\n ...state,\r\n ...action.payload,\r\n bulkReset: false\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}","export * from './FilterReducer';","import * as React from 'react';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { SearchFilter, MoreFilters, FilterType, FilterProps, FilterOption, FilterIds, SearchResults } from 'apps/search/interfaces';\r\nimport { YearGroup } from 'libs/shared/interfaces';\r\nimport { FilterStateHash, FilterPayloadType, FilterState } from 'apps/search/reducers';\r\nimport { SwitchFilter, RadioFilter, CheckboxFilter, DropdownFilter, YearGroupRadioFilter, MoreFilters as MoreFiltersComponent } from 'apps/search/components/filter-types';\r\nimport { Pagination } from 'libs/common/backbone/interfaces';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('search.utils');\r\n\r\ninterface WithStatementObject {\r\n sortKey?: string;\r\n sortValue?: string;\r\n assocs?: string[];\r\n}\r\n\r\ntype FiltersDictionary = {\r\n [key: string]: (options?: any) => SearchFilter;\r\n};\r\n\r\nexport const Filters: FiltersDictionary = {\r\n SortByName: (options: FilterOption[]) => ({\r\n id: 'sortName',\r\n name: getPhrase('firstNameAToZ'),\r\n type: 'dropdown',\r\n options\r\n }),\r\n YearGroup: (options: FilterOption[]) => ({\r\n id: 'yearGroup', // \"name\" should match the state keys in `FilterReducer`\r\n name: getPhrase('yearGroup'),\r\n type: 'radio',\r\n customComponent: YearGroupRadioFilter,\r\n options\r\n }),\r\n ObjectType: (options: FilterOption[]) => ({\r\n id: 'objectType',\r\n name: getPhrase('objectTypes'),\r\n type: 'radio',\r\n options\r\n }),\r\n Ratings: (options: FilterOption[]) => ({\r\n id: 'ratings',\r\n name: getPhrase('ratings'),\r\n type: 'rating',\r\n options\r\n }),\r\n Interactives: () => ({\r\n id: 'interactives',\r\n name: getPhrase('interactives'),\r\n type: 'switch',\r\n description: getPhrase('interactivesDescription')\r\n }),\r\n Clips: () => ({\r\n id: 'clips',\r\n name: getPhrase('clips'),\r\n type: 'switch',\r\n description: getPhrase('clipsDescription')\r\n }),\r\n Classroom: (options: FilterOption[]) => ({\r\n id: 'classroom',\r\n name: getPhrase('classroom'),\r\n type: 'checkbox',\r\n options\r\n })\r\n};\r\n\r\nexport const FilterHelper = {\r\n getMoreFilters(): MoreFilters {\r\n return {\r\n id: 'moreFilters',\r\n name: getPhrase('moreFilters'),\r\n type: 'more-filters',\r\n filters: []\r\n };\r\n },\r\n\r\n mapTypeToComponent(type: FilterType): (props: FilterProps) => JSX.Element {\r\n switch (type) {\r\n case 'switch':\r\n return (props: any) => <SwitchFilter key={props.id} {...props} />;\r\n case 'checkbox':\r\n return (props: any) => <CheckboxFilter key={props.id} {...props} />;\r\n case 'radio':\r\n return (props: any) => <RadioFilter key={props.id} {...props} />;\r\n case 'rating':\r\n return (props: any) => <SwitchFilter key={props.id} {...props} />;\r\n case 'dropdown':\r\n return (props: any) => <DropdownFilter key={props.id} {...props} />;\r\n case 'more-filters':\r\n return (props: any) => <MoreFiltersComponent key={props.id} {...props} />;\r\n }\r\n },\r\n\r\n deriveInitialStateFromQuery(\r\n queryParams: HashObject = {},\r\n mainFilters: SearchFilter[] = null,\r\n moreFilters: MoreFilters = null,\r\n appLink: Core.AppLink\r\n ): FilterStateHash {\r\n const initialStates: Omit<FilterStateHash, 'appLink'> = {\r\n sortName: {\r\n active: !!queryParams.sortName,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'sortName')\r\n },\r\n\r\n objectType: {\r\n active: !!queryParams.objectType,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'objectType')\r\n },\r\n\r\n ratings: {\r\n active: !!queryParams.ratings,\r\n selection: queryParams.ratings || null\r\n },\r\n\r\n interactives: {\r\n active: queryParams.interactives\r\n },\r\n\r\n clips: {\r\n active: queryParams.clips\r\n },\r\n\r\n yearGroup: {\r\n active: !!queryParams.yearGroup,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'yearGroup')\r\n },\r\n\r\n classroom: {\r\n active: !!queryParams.classroom,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'classroom')\r\n },\r\n\r\n moreFilters: {\r\n active: false // TODO: figure this shit out eventually\r\n }\r\n };\r\n\r\n const derivedState = mainFilters.reduce<FilterStateHash>((state: FilterStateHash, filter) => {\r\n state[filter.id] = initialStates[filter.id];\r\n return state;\r\n }, {} as FilterStateHash);\r\n\r\n if (moreFilters)\r\n derivedState.moreFilters = initialStates.moreFilters;\r\n\r\n derivedState.appLink = appLink;\r\n\r\n return derivedState;\r\n },\r\n\r\n hasActiveFilters(queryParams: HashObject): boolean {\r\n const paramKeys = Object.keys(queryParams);\r\n\r\n if (!paramKeys.length)\r\n return false;\r\n\r\n const activeFilters = paramKeys.filter(q => {\r\n // 'query', 'cursor', and 'page' don't count as filters\r\n if (q === 'query' || q === 'cursor' || q === 'page')\r\n return false;\r\n\r\n // Filters that can have multiple selections (e.g. checkbox types) do not count as active if they are empty\r\n if (Array.isArray(queryParams[q]) && !queryParams[q].length)\r\n return false;\r\n\r\n return true;\r\n });\r\n\r\n return !!activeFilters.length;\r\n },\r\n\r\n getLabel(filter: SearchFilter, filterState: FilterState): string {\r\n if (!filterState.selection?.length)\r\n return filter.name;\r\n\r\n if (filter.type === 'dropdown')\r\n return ArrayHelper.first(filterState.selection).name;\r\n\r\n if (filter.type === 'radio') {\r\n const selection = ArrayHelper.first(filterState.selection);\r\n if (!selection || selection.default)\r\n return filter.name;\r\n\r\n return selection.name;\r\n }\r\n\r\n if (filter.type === 'checkbox')\r\n return `${filter.name} - ${filterState.selection.length}`;\r\n },\r\n\r\n buildQueryParams(queryParams: HashObject, state: FilterPayloadType): HashObject {\r\n const { id: param, type } = state.filter;\r\n\r\n const updatedParams = { ...queryParams };\r\n\r\n switch (type) {\r\n case 'switch':\r\n updatedParams[param] = state.active ? 'true' : '';\r\n break;\r\n\r\n case 'radio':\r\n case 'dropdown':\r\n updatedParams[param] = getRadioParamValue(state.selection);\r\n break;\r\n\r\n case 'checkbox':\r\n updatedParams[param] = state.active ? state.selection.map(option => option.id) : [];\r\n }\r\n\r\n if (!updatedParams[param]) // If the param is empty, delete it\r\n delete updatedParams[param];\r\n\r\n return updatedParams;\r\n },\r\n\r\n // TODO: Accept query params and apply custom filters\r\n getFilters(results: SearchResults): string {\r\n return [\r\n `videos{${FilterHelper.getNextPage(results?.videos?.pagination)}}`,\r\n `playlists{${FilterHelper.getNextPage(results?.playlists?.pagination)}}`,\r\n `series{${FilterHelper.getNextPage(results?.series?.pagination)}}`,\r\n `classifications{${FilterHelper.getNextPage(results?.classifications?.pagination)}}`\r\n ].join(',');\r\n },\r\n\r\n // Gets the next page for a paged collection based on the previous response\r\n getNextPage(pagination: Pagination): string {\r\n if (!pagination)\r\n return 'page:1';\r\n\r\n if (pagination.cursors?.next)\r\n return `page:${(+pagination.cursors.next)}`;\r\n\r\n if (pagination.cursors?.previous)\r\n return `page:${(+pagination.cursors.previous) + 1}`;\r\n\r\n return 'page:1';\r\n },\r\n\r\n getYearGroupOptions(yearGroups: YearGroup[]): FilterOption[] {\r\n if (!yearGroups?.length)\r\n return [];\r\n \r\n return yearGroups.map(y => ({\r\n id: y.value.toString(),\r\n name: y.name\r\n }));\r\n },\r\n\r\n /**\r\n * This returns an object of all of the query params our search requests will pass to the backend endpoint.\r\n * This usually consists of:\r\n * q = the query string e.g. 'shakespeare'\r\n * filter = the filter string e.g. '{interactives:true,classroom:classroom-2-a,classroom:classroom-2-b}'\r\n * query = the with statement e.g. '{orderbydesc:name}series,season,interactives,resources,subtitles'\r\n * cursor = the cursor e.g. 's-sf3r9o32f-0vd'\r\n */\r\n getBackendQueryParams(queryParams: HashObject): HashObject {\r\n const q = queryParams.query;\r\n const query = getWithStatement(queryParams);\r\n const filter = getFilterString(queryParams);\r\n\r\n const backendQueryParams: HashObject = {};\r\n\r\n if (q)\r\n backendQueryParams.q = q;\r\n\r\n if (query)\r\n backendQueryParams.query = query;\r\n\r\n if (filter)\r\n backendQueryParams.filter = `{${filter}}`;\r\n\r\n if (queryParams.cursor)\r\n backendQueryParams.cursor = queryParams.cursor;\r\n\r\n return backendQueryParams;\r\n },\r\n\r\n /**\r\n * This functions purpose is to convert a with statement string into an object that is easy to use\r\n * in mock backends for sorting/filtering mock data. It doesn't need to be efficient, as it should\r\n * never ever be used in production\r\n */\r\n convertWithStatementToObject(withStatement: string): WithStatementObject {\r\n if (!withStatement)\r\n return {};\r\n\r\n // Remove any angle brackets with commas, which we use in `.split` just below\r\n withStatement = withStatement.replace('{', ',').replace('}', ',');\r\n\r\n const withStatements = withStatement.split(',');\r\n\r\n let sortingStatement: string = '';\r\n const assocStatements: string[] = [];\r\n\r\n withStatements.forEach(statement => {\r\n if (statement.includes(':'))\r\n sortingStatement = statement;\r\n else\r\n assocStatements.push(statement);\r\n });\r\n\r\n const [ sortKey, sortValue ] = sortingStatement.split(':');\r\n\r\n return {\r\n assocs: assocStatements,\r\n sortKey,\r\n sortValue\r\n };\r\n },\r\n\r\n // This is used for filtering data in mock flight requests. It shouldn't be used in production code\r\n revertFilterString(filterString: string): HashObject {\r\n if (!filterString)\r\n return {};\r\n\r\n // Remove \"{\" and \"}\" from both ends\r\n filterString = filterString.slice(1, -1);\r\n\r\n // Get an array of all of our filter values:\r\n // E.g. [ 'yearGroup:year-2', 'classroom:classroom-2-a', 'classroom-2-b', 'classroom-2-c' ]\r\n const filterValues = filterString.split(',');\r\n\r\n const keyValueFilterStrings: string[] = [];\r\n\r\n let currentFilterKey = '';\r\n filterValues.forEach(filterStr => {\r\n // Here we're building an array that looks like `filterValues`, but where every value has its key attached\r\n // E.g. [ 'yearGroup:year-2', 'classroom:classroom-2-a', 'classroom:classroom-2-b', 'classroom:classroom-2-c' ]\r\n\r\n if (filterStr.includes(':')) {\r\n currentFilterKey = filterStr.split(':')[0];\r\n keyValueFilterStrings.push(filterStr);\r\n return;\r\n }\r\n\r\n const fullFilterString = `${currentFilterKey}:${filterStr}`;\r\n keyValueFilterStrings.push(fullFilterString);\r\n });\r\n\r\n // Convert the array into an object.\r\n // E.g. { yearGroup: 'year-2', classroom: [ 'classroom-2-a', 'classroom-2-b', 'classroom-2-c' ] }\r\n return keyValueFilterStrings.reduce((filterObj: HashObject, filterStr) => {\r\n const [ key, value ] = filterStr.split(':');\r\n\r\n if (filterObj[key] && !Array.isArray(filterObj[key])) {\r\n const temp = filterObj[key];\r\n filterObj[key] = [temp];\r\n }\r\n\r\n if (Array.isArray(filterObj[key]))\r\n filterObj[key].push(value);\r\n else\r\n filterObj[key] = value;\r\n\r\n return filterObj;\r\n }, {});\r\n },\r\n\r\n /**\r\n * Helpers below this comment return hard coded filter options for a particular filter.\r\n * If you are adding a new filter with hard coded options, add a new function here.\r\n */\r\n getObjectTypeOptions(): FilterOption[] {\r\n return [\r\n {\r\n id: 'allTypes',\r\n name: getPhrase('allTypes'),\r\n default: true\r\n },\r\n {\r\n id: 'topics',\r\n name: getPhrase('topics')\r\n },\r\n {\r\n id: 'playlists',\r\n name: getPhrase('playlists')\r\n },\r\n {\r\n id: 'series',\r\n name: getPhrase('series')\r\n },\r\n {\r\n id: 'videos',\r\n name: getPhrase('videos')\r\n }\r\n ];\r\n },\r\n\r\n getNameSortOptions(): FilterOption[] {\r\n return [\r\n {\r\n id: 'first-name-atoz',\r\n name: getPhrase('firstNameAToZ'),\r\n default: true\r\n },\r\n {\r\n id: 'first-name-ztoa',\r\n name: getPhrase('firstNameZToA')\r\n },\r\n {\r\n id: 'surname-atoz',\r\n name: getPhrase('surnameAToZ')\r\n },\r\n {\r\n id: 'surname-ztoa',\r\n name: getPhrase('surnameZToA')\r\n }\r\n ];\r\n }\r\n};\r\n\r\n// This allows us to determine which filters should be applied based on the query params set on first load\r\nfunction getFilterSelectionsFromQueryParams(\r\n queryParams: HashObject,\r\n filters: SearchFilter[],\r\n filterName: FilterIds\r\n): FilterOption[] {\r\n const filter = filters.find(f => f.id === filterName);\r\n\r\n if (!filter)\r\n return [];\r\n\r\n if (!queryParams[filterName])\r\n return filter.options.filter(option => option.default);\r\n\r\n let selections = queryParams[filterName];\r\n if (!Array.isArray(selections))\r\n selections = [selections];\r\n\r\n return filter.options.filter(option => selections.includes(option.id));\r\n}\r\n\r\nfunction getRadioParamValue(selection: FilterOption[]): string {\r\n if (!selection?.length)\r\n return '';\r\n\r\n return ArrayHelper.first(selection).id;\r\n}\r\n\r\n/**\r\n * This is massively under developed, and only does what it's needed for at this time.\r\n * Please update if you need extra functionality\r\n */\r\nfunction getWithStatement(queryParams: HashObject): string {\r\n let withStatement = '';\r\n\r\n if (queryParams['sortName']) {\r\n switch (queryParams['sortName']) {\r\n case 'first-name-atoz':\r\n withStatement += '{orderby:name}';\r\n break;\r\n\r\n case 'first-name-ztoa':\r\n withStatement += '{orderbydesc:name}';\r\n break;\r\n\r\n case 'surname-atoz':\r\n withStatement += '{orderby:surname}';\r\n break;\r\n\r\n case 'surname-ztoa':\r\n withStatement += '{orderbydesc:surname}';\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return withStatement;\r\n}\r\n\r\n/**\r\n * Private functions\r\n */\r\n\r\nfunction getFilterString(queryParams: HashObject): string {\r\n // Add any potential query params here that are not supposed to be in the filter string\r\n const omitKeys = [ 'query', 'sortName', 'cursor', 'page' ];\r\n\r\n const filterQueryParams = ObjectHelper.omit(queryParams, omitKeys);\r\n\r\n const filterStrings = Object.keys(filterQueryParams).map(filter => {\r\n return `${filter}:${filterQueryParams[filter]}`;\r\n });\r\n\r\n return filterStrings.join(',');\r\n}","import * as React from 'react';\r\n\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { Video, Series, Playlist, PresentationAudience, CurrentUser } from 'libs/shared/interfaces';\r\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\r\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\r\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget/FixedWidget';\r\nimport { PlaylistWidgetItem } from 'libs/shared/components/widgets/items/playlist-widget-item/PlaylistWidgetItem';\r\nimport { SeriesWidgetItem } from 'libs/shared/components/widgets/items/series-widget-item/SeriesWidgetItem';\r\nimport { PlaylistItemProps } from 'libs/shared/apps/playlists/components/playlist-list/PlaylistItem';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { SearchResults, MainSearchResults, OtherSearchResultSet, OtherSearchResults } from 'apps/search/interfaces';\r\nimport { PLAYLIST_BG_COLOUR_CLASS_NAMES } from 'apps/playlists/constants/PlaylistBgColourClassNames';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { Pagination } from 'libs/common/backbone/interfaces';\r\n\r\nconst Capacities = {\r\n MainResults: {\r\n CLASSIFICATIONS: 10,\r\n PLAYLISTS: 5,\r\n SERIES: 4\r\n },\r\n\r\n OtherResults: {\r\n VIDEOS: 6,\r\n PLAYLISTS: 10,\r\n SERIES: 10\r\n }\r\n};\r\n\r\nexport const SearchHelper = {\r\n /**\r\n * These are the results that appear at the very top of the page\r\n */\r\n filterMainResults(results: SearchResults): MainSearchResults {\r\n const { MainResults } = Capacities;\r\n\r\n const classifications = ArrayHelper.firstFew(results.classifications.data, MainResults.CLASSIFICATIONS);\r\n const firstVideo = ArrayHelper.first(results.videos.data);\r\n const playlists = ArrayHelper.firstFew(results.playlists.data, MainResults.PLAYLISTS);\r\n const series = ArrayHelper.firstFew(results.series.data, MainResults.SERIES);\r\n\r\n return {\r\n classifications,\r\n firstVideo,\r\n playlists,\r\n series,\r\n otherResults: { // All excess results are displayed in a different format defined below\r\n videos: ArrayHelper.lastFew(results.videos.data, results.videos.data.length - 1),\r\n playlists: ArrayHelper.lastFew(results.playlists.data, results.playlists.data.length - MainResults.PLAYLISTS),\r\n series: ArrayHelper.lastFew(results.series.data, results.series.data.length - MainResults.SERIES)\r\n }\r\n };\r\n },\r\n\r\n structureOtherResults(results: OtherSearchResults): OtherSearchResultSet[] {\r\n const { OtherResults } = Capacities;\r\n\r\n const videoSets = ArrayHelper.chunk<Video>(results.videos, OtherResults.VIDEOS);\r\n const playlistSets = ArrayHelper.chunk<Playlist>(results.playlists, OtherResults.PLAYLISTS);\r\n const seriesSets = ArrayHelper.chunk<Series>(results.series, OtherResults.SERIES);\r\n\r\n return SearchHelper.buildResultStructure(videoSets, playlistSets, seriesSets);\r\n },\r\n\r\n // For every 6 videos, there should be either a row of playlists or a row of series (alternating)\r\n buildResultStructure(\r\n videoSets: Video[][],\r\n playlistSets: Playlist[][],\r\n seriesSets: Series[][]\r\n ): OtherSearchResultSet[] {\r\n const structure: OtherSearchResultSet[] = [];\r\n\r\n // Clone each set as we need to use a mutable structure, but don't want to mutate the inputs directly\r\n const videosClone = [...videoSets];\r\n const playlistsClone = [...playlistSets];\r\n const seriesClone = [...seriesSets];\r\n\r\n // We set the iterations here instead of in the for-loop args because `videoSets` gets mutated\r\n const iterations = videoSets.length;\r\n for (let index = 0; index < iterations; index++) {\r\n const nextVideoSet = videosClone.shift();\r\n\r\n // After every video set will come a set of playlists or series\r\n const seriesOrPlaylistSet = SearchHelper.getSeriesOrPlaylistSet(playlistsClone, seriesClone, index);\r\n\r\n nextVideoSet && structure.push({ type: 'video', data: nextVideoSet });\r\n seriesOrPlaylistSet && structure.push(seriesOrPlaylistSet);\r\n }\r\n\r\n // In edge cases where there may be more playlists or series result sets than video sets, add them to the end\r\n if (playlistsClone.length) {\r\n playlistsClone.forEach(data => structure.push({ type: 'playlist', data }));\r\n }\r\n\r\n if (seriesClone.length) {\r\n seriesClone.forEach(data => structure.push({ type: 'series', data }));\r\n }\r\n\r\n // Remove any empty sets\r\n return structure.filter(set => set.data && !!set.data.length);\r\n },\r\n\r\n /**\r\n * Determines whether or not a playlist or series set should be added to the results structure next.\r\n */\r\n getSeriesOrPlaylistSet(playlists: Playlist[][], series: Series[][], videoSetIndex: number): OtherSearchResultSet {\r\n const isOdd = videoSetIndex % 2 === 0; // If odd, add a series set. If even, add a playlist set.\r\n\r\n if ((isOdd && series.length) || !playlists.length)\r\n return { type: 'series', data: series.shift() };\r\n\r\n if ((!isOdd && playlists.length) || !series.length)\r\n return { type: 'playlist', data: playlists.shift() };\r\n\r\n // We will only reach this point once we have run out of series and playlist results\r\n return null;\r\n },\r\n\r\n getResultSetComponent(\r\n set: OtherSearchResultSet,\r\n audiences: PresentationAudience[],\r\n hideFavouriteButton: boolean,\r\n setFavourite?: (video: Video, shouldFavourite: boolean, onError?: () => void) => void,\r\n currentUser?: CurrentUser,\r\n imageCdnUrl?: string\r\n ): JSX.Element {\r\n switch (set.type) {\r\n case 'video':\r\n return (\r\n <div className='pb-3 mt-n2'>\r\n <VideoList\r\n videos={set.data as Video[]}\r\n getVideoAppLink={SearchHelper.getVideoAppLink}\r\n getSeriesAppLink={SearchHelper.getSeriesAppLink}\r\n setFavourite={setFavourite}\r\n hideFavouriteButton={hideFavouriteButton}\r\n />\r\n </div>\r\n );\r\n\r\n case 'playlist':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedPlaylists')}\r\n collection={set.data as Playlist[]}\r\n childAppLink={SearchHelper.getPlaylistAppLink()}\r\n childComponent={(childProps: PlaylistItemProps) => (\r\n <PlaylistWidgetItem\r\n {...childProps}\r\n presentationAudiences={audiences}\r\n imageCdnUrl={imageCdnUrl}\r\n showOwner\r\n showLastUpdated\r\n currentUser={currentUser}\r\n bgColourClassNames={PLAYLIST_BG_COLOUR_CLASS_NAMES}\r\n />\r\n )}\r\n contents={WidgetContents.Playlists}\r\n prefetched\r\n />\r\n </div>\r\n );\r\n\r\n case 'series':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedSeries')}\r\n collection={set.data}\r\n childAppLink={{ application: AppChannels.DEFAULT, action: Actions.Default.SERIES }}\r\n childComponent={(childProps: any) => (\r\n <SeriesWidgetItem\r\n {...childProps}\r\n audiences={audiences}\r\n />\r\n )}\r\n contents={WidgetContents.Series}\r\n prefetched\r\n />\r\n </div>\r\n );\r\n }\r\n },\r\n\r\n getVideoAppLink(video: Video): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.id, TextHelper.slugify(video.name) ]\r\n };\r\n },\r\n\r\n getSeriesAppLink(series: Series): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n };\r\n },\r\n\r\n getPlaylistAppLink(): Core.AppLink {\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n };\r\n },\r\n\r\n // Merges a new page of results with the existing search results\r\n mergeNextPage(currentResults: SearchResults, newResults: SearchResults): SearchResults {\r\n const isSamePage = (currentPage: Pagination, nextPage: Pagination): boolean => {\r\n return currentPage?.cursors?.next === nextPage?.cursors?.next;\r\n };\r\n\r\n return {\r\n classifications: {\r\n data: !isSamePage(currentResults.classifications.pagination, newResults.classifications.pagination) ? [\r\n ...currentResults.classifications.data,\r\n ...newResults.classifications.data\r\n ] : currentResults.classifications.data,\r\n pagination: newResults.classifications.pagination\r\n },\r\n series: {\r\n data: !isSamePage(currentResults.series.pagination, newResults.series.pagination) ? [\r\n ...currentResults.series.data,\r\n ...newResults.series.data\r\n ] : currentResults.series.data,\r\n pagination: newResults.series.pagination\r\n },\r\n playlists: {\r\n data: !isSamePage(currentResults.playlists.pagination, newResults.playlists.pagination) ? [\r\n ...currentResults.playlists.data,\r\n ...newResults.playlists.data\r\n ] : currentResults.playlists.data,\r\n pagination: newResults.playlists.pagination\r\n },\r\n videos: {\r\n data: !isSamePage(currentResults.videos.pagination, newResults.videos.pagination) ? [\r\n ...currentResults.videos.data,\r\n ...newResults.videos.data\r\n ] : currentResults.videos.data,\r\n pagination: newResults.videos.pagination\r\n }\r\n };\r\n }\r\n};","export * from './FilterHelper';\r\nexport * from './SearchHelper';","import React from 'react';\r\nimport { YearGroup } from 'libs/shared/interfaces';\r\n\r\nconst ENTER_KEY_CODE = 13;\r\n\r\ninterface YearGroupProps {\r\n yearGroup: YearGroup;\r\n selected: boolean;\r\n onSelect: (yearGroup: YearGroup) => void;\r\n}\r\n\r\nfunction YearGroup(props: YearGroupProps): React.ReactElement {\r\n const { yearGroup, selected, onSelect } = props;\r\n\r\n function onKeyDown(e: React.KeyboardEvent): void {\r\n if (selected || e.keyCode !== ENTER_KEY_CODE)\r\n return;\r\n\r\n onSelect(yearGroup);\r\n }\r\n\r\n const className = selected ? 'badge-info' : 'badge-light';\r\n\r\n return (\r\n <span\r\n className={`badge-pill d-inline-block mr-1 mb-1 cursor-pointer ${className}`}\r\n role='radio'\r\n aria-checked={selected}\r\n onClick={() => onSelect(yearGroup)}\r\n tabIndex={0}\r\n onKeyDown={onKeyDown}\r\n >\r\n {yearGroup.name}\r\n </span>\r\n );\r\n}\r\n\r\ninterface YearGroupSelectProps {\r\n yearGroups: YearGroup[];\r\n onSelect: (yearGroup: YearGroup) => void;\r\n selected?: YearGroup;\r\n className?: string;\r\n}\r\n\r\nexport function YearGroupSelect(props: YearGroupSelectProps): React.ReactElement {\r\n const { yearGroups, selected, onSelect, className } = props;\r\n\r\n return (\r\n <div role='radiogroup' className={className}>\r\n {yearGroups.map(y =>\r\n <YearGroup\r\n key={y.id}\r\n yearGroup={y}\r\n selected={!!selected && y.id === selected.id}\r\n onSelect={onSelect}\r\n />\r\n )}\r\n </div>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\ninterface CheckboxItemsState {\r\n [id: string]: boolean;\r\n}\r\n\r\ninterface BulkCheckboxManagerOptions {\r\n preselectedIds?: string[]; // An array of ids of objects whose checkboxes are checked by default\r\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\r\n}\r\n\r\n/**\r\n * @param collection - The collection you are keeping track of with checkboxes\r\n * @param options - See interface above\r\n */\r\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\r\n const [ bulkChecked, setBulkChecked ] = React.useState(false);\r\n const [ items, setItems ] = React.useState<CheckboxItemsState>({});\r\n\r\n const { idField = 'id' } = options;\r\n\r\n React.useEffect(() => {\r\n if (!collection?.length)\r\n return;\r\n\r\n const newItemState = collection.reduce<CheckboxItemsState>((stateObj: CheckboxItemsState, item: HashObject) => {\r\n let checkboxState = false;\r\n\r\n if (options?.preselectedIds?.includes(item[idField]))\r\n checkboxState = true;\r\n\r\n const id = item[idField].toString();\r\n stateObj[id] = checkboxState;\r\n\r\n return stateObj;\r\n }, {});\r\n\r\n setItems(newItemState);\r\n }, [ collection, options?.preselectedIds?.length ]);\r\n\r\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\r\n function onToggleBulk(): void {\r\n const nextState = !bulkChecked;\r\n\r\n setBulkChecked(nextState);\r\n\r\n const newItemsState = collection.reduce<CheckboxItemsState>((stateObj: CheckboxItemsState, item: HashObject) => {\r\n stateObj[item[idField]] = nextState;\r\n return stateObj;\r\n }, {});\r\n\r\n setItems(newItemsState);\r\n }\r\n\r\n // Toggles a single item\r\n function onToggleItem(id: string): void {\r\n const nextItemState = !items[id.toString()];\r\n\r\n const nextState = {\r\n ...items,\r\n [id.toString()]: nextItemState\r\n };\r\n setItems(nextState);\r\n\r\n /**\r\n * Keep the bulk checkbox in sync with all of the other checkboxes\r\n */\r\n const totalItemsSelected = Object.keys(nextState).filter(i => nextState[i]).length;\r\n if (totalItemsSelected === collection.length) {\r\n setBulkChecked(true);\r\n return;\r\n }\r\n\r\n if (!nextItemState && bulkChecked)\r\n setBulkChecked(false);\r\n }\r\n\r\n // Returns the state of the item passed in\r\n function isChecked(item: string | number | HashObject<string>): boolean {\r\n if (bulkChecked)\r\n return true;\r\n\r\n if (typeof item !== 'string' && typeof item !== 'number')\r\n item = item[idField];\r\n\r\n return items[item];\r\n }\r\n\r\n function getSelected(): string[] {\r\n if (bulkChecked)\r\n return Object.keys(items);\r\n\r\n return Object.keys(items).filter(item => items[item]);\r\n }\r\n\r\n return { onToggleBulk, onToggleItem, getSelected, isChecked, bulkChecked };\r\n};"],"sourceRoot":""}
|