@clickview/lite 0.53.4 → 0.53.6-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/bundles.json +1 -1
- package/dist/css/{6094-lite-bcd14ea6d2.chunk.css → 1019-lite-bbcf2bff27.chunk.css} +3 -2
- package/dist/css/{1329-lite-be86e46c78.chunk.css → 1329-lite-458183b24f.chunk.css} +2 -2
- package/dist/css/{1838-lite-e6a28b84ed.chunk.css → 1838-lite-981a5e0783.chunk.css} +1 -1
- package/dist/css/{1760-lite-bcd14ea6d2.chunk.css → 2548-lite-bbcf2bff27.chunk.css} +3 -2
- package/dist/css/{3969-lite-29e14c7861.chunk.css → 3969-lite-ed58852d97.chunk.css} +2 -2
- package/dist/css/{422-lite-dace5f41de.chunk.css → 422-lite-b8c1fd1dee.chunk.css} +1 -1
- package/dist/css/{4502-lite-92be6697e7.chunk.css → 4502-lite-eaf1a1113c.chunk.css} +1 -1
- package/dist/css/{5220-lite-9832e2c2fb.chunk.css → 5220-lite-8a8d5d035f.chunk.css} +1 -1
- package/dist/css/{537-lite-56a3fc7e48.chunk.css → 537-lite-4de4c47713.chunk.css} +1 -1
- package/dist/css/{6489-lite-9045df4bb9.chunk.css → 6489-lite-e271aaed2d.chunk.css} +1 -1
- package/dist/css/{6544-lite-d46c2d634c.chunk.css → 6544-lite-319ed51ccc.chunk.css} +1 -1
- package/dist/css/{5549-lite-97ed26d0aa.chunk.css → 6596-lite-bb28584922.chunk.css} +2 -1
- package/dist/css/{841-lite-27b6485cd1.chunk.css → 841-lite-46ef623835.chunk.css} +1 -1
- package/dist/css/{8522-lite-2f2797038e.chunk.css → 8522-lite-f100606ec5.chunk.css} +1 -1
- package/dist/css/{8801-lite-c88eb54bee.chunk.css → 8801-lite-d34200ab29.chunk.css} +2 -2
- package/dist/css/{3640-lite-97ed26d0aa.chunk.css → 9010-lite-bb28584922.chunk.css} +2 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1760-8d51aa0b08-lite.chunk.js → 1019-8f977b5095-lite.chunk.js} +2 -2
- package/dist/scripts/{1760-8d51aa0b08-lite.chunk.js.map → 1019-8f977b5095-lite.chunk.js.map} +1 -1
- package/dist/scripts/1080-509aa6e738-lite.chunk.js +2 -0
- package/dist/scripts/1080-509aa6e738-lite.chunk.js.map +1 -0
- package/dist/scripts/1169-e64f0dbd67-lite.chunk.js +2 -0
- package/dist/scripts/1169-e64f0dbd67-lite.chunk.js.map +1 -0
- package/dist/scripts/1329-bdbbf6c7fd-lite.chunk.js +3 -0
- package/dist/scripts/1329-bdbbf6c7fd-lite.chunk.js.map +1 -0
- package/dist/scripts/{1379-976d20185f-lite.chunk.js → 1379-ca519ec56b-lite.chunk.js} +3 -3
- package/dist/scripts/{1379-976d20185f-lite.chunk.js.map → 1379-ca519ec56b-lite.chunk.js.map} +1 -1
- package/dist/scripts/1518-4f76dbeee8-lite.chunk.js +2 -0
- package/dist/scripts/1518-4f76dbeee8-lite.chunk.js.map +1 -0
- package/dist/scripts/{1838-87fb96ee2c-lite.chunk.js → 1838-95081e8dea-lite.chunk.js} +1 -1
- package/dist/scripts/{1838-87fb96ee2c-lite.chunk.js.map → 1838-95081e8dea-lite.chunk.js.map} +1 -1
- package/dist/scripts/184-6ce393c251-lite.chunk.js +2 -0
- package/dist/scripts/184-6ce393c251-lite.chunk.js.map +1 -0
- package/dist/scripts/{2004-3005565af0-lite.chunk.js → 2004-e20d72976c-lite.chunk.js} +3 -3
- package/dist/scripts/{2004-3005565af0-lite.chunk.js.map → 2004-e20d72976c-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2094-58390aa60a-lite.chunk.js → 2094-a16bbca3a3-lite.chunk.js} +2 -2
- package/dist/scripts/2094-a16bbca3a3-lite.chunk.js.map +1 -0
- package/dist/scripts/2142-c46ca4050f-lite.chunk.js +2 -0
- package/dist/scripts/2142-c46ca4050f-lite.chunk.js.map +1 -0
- package/dist/scripts/2199-be40da7440-lite.chunk.js +2 -0
- package/dist/scripts/2199-be40da7440-lite.chunk.js.map +1 -0
- package/dist/scripts/2548-c48b8d3e3c-lite.chunk.js +2 -0
- package/dist/scripts/2548-c48b8d3e3c-lite.chunk.js.map +1 -0
- package/dist/scripts/3969-6d7c342d0c-lite.chunk.js +2 -0
- package/dist/scripts/3969-6d7c342d0c-lite.chunk.js.map +1 -0
- package/dist/scripts/3999-317a4538c6-lite.chunk.js +3 -0
- package/dist/scripts/3999-317a4538c6-lite.chunk.js.map +1 -0
- package/dist/scripts/{422-ee640f76c5-lite.chunk.js → 422-a63a7eb901-lite.chunk.js} +1 -1
- package/dist/scripts/{422-ee640f76c5-lite.chunk.js.map → 422-a63a7eb901-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4502-af4903784e-lite.chunk.js → 4502-a7d60fa257-lite.chunk.js} +1 -1
- package/dist/scripts/{4502-af4903784e-lite.chunk.js.map → 4502-a7d60fa257-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4554-c0d7490a46-lite.chunk.js → 4554-b9aa07891f-lite.chunk.js} +2 -2
- package/dist/scripts/4554-b9aa07891f-lite.chunk.js.map +1 -0
- package/dist/scripts/{4591-379f0fe588-lite.chunk.js → 4591-21c0094f28-lite.chunk.js} +2 -2
- package/dist/scripts/{4591-379f0fe588-lite.chunk.js.map → 4591-21c0094f28-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4683-ce52da47d8-lite.chunk.js → 4683-d3afe2dfa8-lite.chunk.js} +2 -2
- package/dist/scripts/4683-d3afe2dfa8-lite.chunk.js.map +1 -0
- package/dist/scripts/5220-291b2243ad-lite.chunk.js +3 -0
- package/dist/scripts/5220-291b2243ad-lite.chunk.js.map +1 -0
- package/dist/scripts/537-6efb9bc099-lite.chunk.js +3 -0
- package/dist/scripts/537-6efb9bc099-lite.chunk.js.map +1 -0
- package/dist/scripts/5660-6711768c20-lite.chunk.js +2 -0
- package/dist/scripts/5660-6711768c20-lite.chunk.js.map +1 -0
- package/dist/scripts/5936-e839cb8193-lite.chunk.js +2 -0
- package/dist/scripts/5936-e839cb8193-lite.chunk.js.map +1 -0
- package/dist/scripts/{624-bf0ff6257f-lite.chunk.js → 624-09b51a9d32-lite.chunk.js} +3 -3
- package/dist/scripts/{624-bf0ff6257f-lite.chunk.js.map → 624-09b51a9d32-lite.chunk.js.map} +1 -1
- package/dist/scripts/6450-f16821bf09-lite.chunk.js +2 -0
- package/dist/scripts/6450-f16821bf09-lite.chunk.js.map +1 -0
- package/dist/scripts/6489-c242844567-lite.chunk.js +3 -0
- package/dist/scripts/6489-c242844567-lite.chunk.js.map +1 -0
- package/dist/scripts/6544-07898e3fa3-lite.chunk.js +2 -0
- package/dist/scripts/6544-07898e3fa3-lite.chunk.js.map +1 -0
- package/dist/scripts/6596-848fbf79bb-lite.chunk.js +2 -0
- package/dist/scripts/6596-848fbf79bb-lite.chunk.js.map +1 -0
- package/dist/scripts/{6741-1c125dbc6c-lite.chunk.js → 6741-fe09fea334-lite.chunk.js} +3 -3
- package/dist/scripts/{6741-1c125dbc6c-lite.chunk.js.map → 6741-fe09fea334-lite.chunk.js.map} +1 -1
- package/dist/scripts/6752-0d139a6c9a-lite.chunk.js +2 -0
- package/dist/scripts/6752-0d139a6c9a-lite.chunk.js.map +1 -0
- package/dist/scripts/696-fa78eb455f-lite.chunk.js +2 -0
- package/dist/scripts/696-fa78eb455f-lite.chunk.js.map +1 -0
- package/dist/scripts/{7234-ef6ab1e557-lite.chunk.js → 7234-d15fe07f0e-lite.chunk.js} +2 -2
- package/dist/scripts/{7234-ef6ab1e557-lite.chunk.js.map → 7234-d15fe07f0e-lite.chunk.js.map} +1 -1
- package/dist/scripts/729-594be12089-lite.chunk.js +2 -0
- package/dist/scripts/729-594be12089-lite.chunk.js.map +1 -0
- package/dist/scripts/{7293-3e6ad36a7a-lite.chunk.js → 7293-35871fc150-lite.chunk.js} +2 -2
- package/dist/scripts/7293-35871fc150-lite.chunk.js.map +1 -0
- package/dist/scripts/{8192-e2d9a26cc5-lite.chunk.js → 8192-eb7054ccc6-lite.chunk.js} +2 -2
- package/dist/scripts/{8192-e2d9a26cc5-lite.chunk.js.map → 8192-eb7054ccc6-lite.chunk.js.map} +1 -1
- package/dist/scripts/841-11af1334bf-lite.chunk.js +3 -0
- package/dist/scripts/841-11af1334bf-lite.chunk.js.map +1 -0
- package/dist/scripts/{8522-b4b217640c-lite.chunk.js → 8522-8e9c576bf6-lite.chunk.js} +1 -1
- package/dist/scripts/{8522-b4b217640c-lite.chunk.js.map → 8522-8e9c576bf6-lite.chunk.js.map} +1 -1
- package/dist/scripts/8801-3a7652eb35-lite.chunk.js +2 -0
- package/dist/scripts/8801-3a7652eb35-lite.chunk.js.map +1 -0
- package/dist/scripts/9010-ef7ea501ee-lite.chunk.js +2 -0
- package/dist/scripts/9010-ef7ea501ee-lite.chunk.js.map +1 -0
- package/dist/scripts/9139-22fb64f542-lite.chunk.js +2 -0
- package/dist/scripts/9139-22fb64f542-lite.chunk.js.map +1 -0
- package/dist/scripts/9173-e45847aa35-lite.chunk.js +2 -0
- package/dist/scripts/9173-e45847aa35-lite.chunk.js.map +1 -0
- package/dist/scripts/{9395-e9b5cdbdce-lite.chunk.js → 9395-e1a02b01ce-lite.chunk.js} +3 -3
- package/dist/scripts/{9395-e9b5cdbdce-lite.chunk.js.map → 9395-e1a02b01ce-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9478-abfa7ed3cc-lite.chunk.js → 9478-13da35c4ee-lite.chunk.js} +3 -3
- package/dist/scripts/{9478-abfa7ed3cc-lite.chunk.js.map → 9478-13da35c4ee-lite.chunk.js.map} +1 -1
- package/dist/scripts/{953-bf3d621a33-lite.chunk.js → 953-225db845ab-lite.chunk.js} +3 -3
- package/dist/scripts/{953-bf3d621a33-lite.chunk.js.map → 953-225db845ab-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9899-68b030d4e2-lite.chunk.js → 9899-fa58471776-lite.chunk.js} +2 -2
- package/dist/scripts/{9899-68b030d4e2-lite.chunk.js.map → 9899-fa58471776-lite.chunk.js.map} +1 -1
- package/dist/scripts/bundle-7f9a9b650d.min.js +3 -0
- package/dist/scripts/bundle-7f9a9b650d.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/1080-4173ce26bd-lite.chunk.js +0 -2
- package/dist/scripts/1080-4173ce26bd-lite.chunk.js.map +0 -1
- package/dist/scripts/1169-d090f0a147-lite.chunk.js +0 -2
- package/dist/scripts/1169-d090f0a147-lite.chunk.js.map +0 -1
- package/dist/scripts/1329-d48379c043-lite.chunk.js +0 -3
- package/dist/scripts/1329-d48379c043-lite.chunk.js.map +0 -1
- package/dist/scripts/1518-9756fde01e-lite.chunk.js +0 -2
- package/dist/scripts/1518-9756fde01e-lite.chunk.js.map +0 -1
- package/dist/scripts/184-ee581fa2e0-lite.chunk.js +0 -2
- package/dist/scripts/184-ee581fa2e0-lite.chunk.js.map +0 -1
- package/dist/scripts/2094-58390aa60a-lite.chunk.js.map +0 -1
- package/dist/scripts/2199-476ac5922f-lite.chunk.js +0 -2
- package/dist/scripts/2199-476ac5922f-lite.chunk.js.map +0 -1
- package/dist/scripts/3640-1ac0a110f4-lite.chunk.js +0 -2
- package/dist/scripts/3640-1ac0a110f4-lite.chunk.js.map +0 -1
- package/dist/scripts/3969-c0160d0139-lite.chunk.js +0 -2
- package/dist/scripts/3969-c0160d0139-lite.chunk.js.map +0 -1
- package/dist/scripts/4063-786732e7b0-lite.chunk.js +0 -2
- package/dist/scripts/4063-786732e7b0-lite.chunk.js.map +0 -1
- package/dist/scripts/4273-de24896b28-lite.chunk.js +0 -3
- package/dist/scripts/4273-de24896b28-lite.chunk.js.map +0 -1
- package/dist/scripts/4554-c0d7490a46-lite.chunk.js.map +0 -1
- package/dist/scripts/4683-ce52da47d8-lite.chunk.js.map +0 -1
- package/dist/scripts/4850-5ddd277550-lite.chunk.js +0 -2
- package/dist/scripts/4850-5ddd277550-lite.chunk.js.map +0 -1
- package/dist/scripts/5220-85898810a6-lite.chunk.js +0 -3
- package/dist/scripts/5220-85898810a6-lite.chunk.js.map +0 -1
- package/dist/scripts/537-de7445d41a-lite.chunk.js +0 -3
- package/dist/scripts/537-de7445d41a-lite.chunk.js.map +0 -1
- package/dist/scripts/5549-e0ed88aaa1-lite.chunk.js +0 -2
- package/dist/scripts/5549-e0ed88aaa1-lite.chunk.js.map +0 -1
- package/dist/scripts/5660-a356acdbca-lite.chunk.js +0 -2
- package/dist/scripts/5660-a356acdbca-lite.chunk.js.map +0 -1
- package/dist/scripts/5936-92d9cea005-lite.chunk.js +0 -2
- package/dist/scripts/5936-92d9cea005-lite.chunk.js.map +0 -1
- package/dist/scripts/6094-8546003d79-lite.chunk.js +0 -2
- package/dist/scripts/6094-8546003d79-lite.chunk.js.map +0 -1
- package/dist/scripts/6450-601f889072-lite.chunk.js +0 -2
- package/dist/scripts/6450-601f889072-lite.chunk.js.map +0 -1
- package/dist/scripts/6489-532a022587-lite.chunk.js +0 -3
- package/dist/scripts/6489-532a022587-lite.chunk.js.map +0 -1
- package/dist/scripts/6544-ae27efabab-lite.chunk.js +0 -2
- package/dist/scripts/6544-ae27efabab-lite.chunk.js.map +0 -1
- package/dist/scripts/6752-5dddab5e0b-lite.chunk.js +0 -2
- package/dist/scripts/6752-5dddab5e0b-lite.chunk.js.map +0 -1
- package/dist/scripts/6852-9dfd47d085-lite.chunk.js +0 -2
- package/dist/scripts/6852-9dfd47d085-lite.chunk.js.map +0 -1
- package/dist/scripts/7293-3e6ad36a7a-lite.chunk.js.map +0 -1
- package/dist/scripts/841-73ef4ba5ec-lite.chunk.js +0 -3
- package/dist/scripts/841-73ef4ba5ec-lite.chunk.js.map +0 -1
- package/dist/scripts/8801-222a1b2e99-lite.chunk.js +0 -2
- package/dist/scripts/8801-222a1b2e99-lite.chunk.js.map +0 -1
- package/dist/scripts/9139-49023800c6-lite.chunk.js +0 -2
- package/dist/scripts/9139-49023800c6-lite.chunk.js.map +0 -1
- package/dist/scripts/9173-f9708ec0de-lite.chunk.js +0 -2
- package/dist/scripts/9173-f9708ec0de-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-e72459b30e.min.js +0 -3
- package/dist/scripts/bundle-e72459b30e.min.js.map +0 -1
- /package/dist/css/{4273-lite-a3c7435ba4.chunk.css → 3999-lite-a3c7435ba4.chunk.css} +0 -0
- /package/dist/css/{4063-lite-f72fc7b813.chunk.css → 4860-lite-f72fc7b813.chunk.css} +0 -0
- /package/dist/css/{4850-lite-f72fc7b813.chunk.css → 729-lite-f72fc7b813.chunk.css} +0 -0
- /package/dist/scripts/{1329-d48379c043-lite.chunk.js.LICENSE.txt → 1329-bdbbf6c7fd-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{1379-976d20185f-lite.chunk.js.LICENSE.txt → 1379-ca519ec56b-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2004-3005565af0-lite.chunk.js.LICENSE.txt → 2004-e20d72976c-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4273-de24896b28-lite.chunk.js.LICENSE.txt → 3999-317a4538c6-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5220-85898810a6-lite.chunk.js.LICENSE.txt → 5220-291b2243ad-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{537-de7445d41a-lite.chunk.js.LICENSE.txt → 537-6efb9bc099-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{624-bf0ff6257f-lite.chunk.js.LICENSE.txt → 624-09b51a9d32-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6489-532a022587-lite.chunk.js.LICENSE.txt → 6489-c242844567-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-1c125dbc6c-lite.chunk.js.LICENSE.txt → 6741-fe09fea334-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{841-73ef4ba5ec-lite.chunk.js.LICENSE.txt → 841-11af1334bf-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9395-e9b5cdbdce-lite.chunk.js.LICENSE.txt → 9395-e1a02b01ce-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9478-abfa7ed3cc-lite.chunk.js.LICENSE.txt → 9478-13da35c4ee-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{953-bf3d621a33-lite.chunk.js.LICENSE.txt → 953-225db845ab-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-e72459b30e.min.js.LICENSE.txt → bundle-7f9a9b650d.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/3969-6d7c342d0c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.scss","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","file:///app/packages/libs/shared/src/components/widgets/widget-button/widget-button.scss","file:///app/packages/libs/shared/src/components/widgets/widget-button/WidgetButton.tsx","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/CompanyWidgetItem.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/components/CompanyResult.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/mixed-search-results.scss","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/components/exchange-video-group/ExchangeVideoGroup.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/components/FeaturedVideoResult.tsx","file:///app/packages/libs/shared/src/apps/search/components/playlist-with-videos/playlist-with-videos.scss","file:///app/packages/libs/shared/src/apps/search/components/playlist-with-videos/PlaylistWithVideos.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/components/LargePlaylistResults.tsx","file:///app/packages/libs/shared/src/apps/search/components/series-with-videos/series-with-videos.scss","file:///app/packages/libs/shared/src/apps/search/components/series-with-videos/SeriesWithVideos.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/components/LargeSeriesResult.tsx","file:///app/packages/libs/shared/src/apps/search/components/collection-video-list/CollectionVideoList.tsx","file:///app/packages/libs/shared/src/apps/search/components/collection-thumbnail/collection-thumbnail.scss","file:///app/packages/libs/shared/src/apps/search/components/collection-thumbnail/CollectionThumbnail.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/components/SmallPlaylistResult.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/components/SmallSeriesResults.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/components/SubjectResult.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/components/VideoResult.tsx","file:///app/packages/libs/shared/src/apps/search/components/mixed-search-results/MixedSearchResults.tsx","file:///app/packages/libs/shared/src/apps/search/components/search-substitute/SearchSubstitute.tsx","file:///app/packages/libs/shared/src/apps/search/components/search-suggestions/SearchSuggestions.tsx","file:///app/packages/libs/shared/src/apps/search/flight-requests/SharedSearchRequests.ts","file:///app/packages/projects/lite/src/apps/search/hooks/useSearchTopics.ts","file:///app/packages/projects/lite/src/apps/search/hooks/useFetchSearchData.tsx","file:///app/packages/projects/lite/src/apps/search/hooks/useFetchSchoolLevels.ts","file:///app/packages/projects/lite/src/apps/search/hooks/useSearchCompanies.ts","file:///app/packages/projects/lite/src/apps/search/hooks/useGetSearchResults.tsx","file:///app/packages/projects/lite/src/apps/search/hooks/useGroupExchangeResults.ts","file:///app/packages/projects/lite/src/apps/search/views/search-results/empty-state/SearchResultsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/search/views/search-results/SearchResultsView.tsx","file:///app/packages/projects/lite/src/apps/search/hooks/useGetTagsAndClassifications.tsx","file:///app/packages/projects/lite/src/apps/search/hooks/useSearchMask.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/RatingRequests.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"container\":\"VwD1b\",\"spinner\":\"eJ85e\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './infinite-scroll-footer.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`} ref={ref}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <SvgContainer\n svgName={cvSvgLibrary.ChevronDown}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n )\n }\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"buttonContainer\":\"_ejId\",\"left\":\"VSAPU\",\"right\":\"kgeXh\",\"button\":\"gAsE9\",\"hoverText\":\"APA36\",\"buttonHover\":\"cqD75\",\"chevron\":\"Ev4hr\",\"extendedClickableArea\":\"AtsWP\",\"gradientRight\":\"ZuAif\",\"gradientLeft\":\"Pt3nx\",\"topPos\":\"BVcIS\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { FixedWidgetState } from 'libs/shared/components/widgets/fixed-widget';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './widget-button.scss';\n\nconst namespace = 'shared.widgetButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum WidgetButtonDirection {\n Left,\n Right\n}\n\ninterface WidgetButtonProps {\n onClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n direction: WidgetButtonDirection;\n hide: boolean;\n contents?: WidgetContents;\n useGradientBackdrop?: boolean;\n className?: string;\n hoverText?: string;\n hideExtendedClickableArea?: boolean;\n state?: FixedWidgetState;\n\n leftButtonClassName?: string;\n rightButtonClassName?: string;\n leftGradientClassName?: string;\n rightGradientClassName?: string;\n}\n\nexport const WidgetButton = React.memo(function(props: WidgetButtonProps): JSX.Element {\n const isLeft = props.direction === WidgetButtonDirection.Left;\n\n const arrowSvg = isLeft ? cvSvgLibrary.ChevronLeft : cvSvgLibrary.ChevronRight;\n\n function getPositionClass(): string {\n let className = styles.topPos;\n \n // Left / Right\n if (isLeft)\n className += ` ${styles.left} ${props.leftButtonClassName}`;\n else\n className += ` ${styles.right} ${props.rightButtonClassName}`;\n \n return className;\n }\n\n function getStyle(): React.CSSProperties {\n if (props.state?.contents === 'videos')\n return { paddingBottom: (56.25 / props.state?.viewableItems) + '%' };\n\n return { height: '100%' };\n }\n\n if (props.hide)\n return <></>;\n\n return (\n <div className={styles.buttonContainer} style={getStyle()}>\n {props.useGradientBackdrop &&\n <div className={isLeft ? `${styles.gradientLeft} ${props.leftGradientClassName}` : `${styles.gradientRight} ${props.rightGradientClassName}`} />\n }\n\n {!props.hideExtendedClickableArea && (\n <button\n onClick={props.onClick}\n className={`${styles.extendedClickableArea} ${isLeft ? styles.left : styles.right}`}\n tabIndex={-1}\n />\n )}\n\n <button\n className={`${getPositionClass()} ${styles.button} ${props.className || ''}`}\n onClick={props.onClick}\n aria-label={isLeft ? getPhrase('previous') : getPhrase('next')}\n >\n {props.hoverText && (\n <span className={`ps-3 pe-2 ${styles.hoverText}`}>{props.hoverText}</span>\n )}\n <SvgContainer\n svgName={arrowSvg}\n size={SvgContainerSize.Medium}\n className={`svg-container d-inline-block ${styles.chevron}`}\n />\n </button>\n </div>\n );\n});","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import * as React from 'react';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CoverPillWidgetContentWrapper, CoverPillWidgetItemProps } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { Company } from 'libs/shared/interfaces';\n\nexport function CompanyWidgetItem(props: CoverPillWidgetItemProps<Company>): JSX.Element {\n const analyticsData = {\n ...props.analyticsData,\n id: props.data?.id,\n name: props.data?.name\n };\n\n const analyticsOptions = {\n location: LocationContext.ClassificationListItem,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: EntityType.Company,\n descriptor: ClickDescriptor.Cover\n };\n\n return (\n <CoverPillWidgetContentWrapper\n {...props}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n coverUrl={props.data.logo?.url}\n />\n );\n}","import React from 'react';\nimport { Col } from 'react-bootstrap';\n\nimport { CompanyWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/CompanyWidgetItem';\nimport { Company } from 'libs/shared/interfaces';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function CompanyResult(props: MixedSearchResultItemProps<Company>): JSX.Element {\n return (\n <Col as='li' sm={6} md={props.useLargeStyle ? 6 : 4} lg={props.useLargeStyle ? 4 : 3}>\n <div className={`position-relative px-1 mb-2`}>\n <CompanyWidgetItem\n data={props.item}\n getChildAppLink={props.appLinks.getCompanyAppLink}\n getChildAppLinkOptions={() => props.appLinks.getCompanyAppLinkOptions?.(props.item)}\n analyticsData={{\n itemIndex: props.itemIndex,\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: 0\n }}\n isLarge={props.useLargeStyle}\n />\n </div>\n </Col>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"videoList\":\"ZhLPS\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { ClickDescriptor, EntityType, HashObject, LocationContext, SearchSourceDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { ExchangeVideoGroup } from 'libs/shared/apps/search/interfaces/SearchResults';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoItem } from 'libs/shared/components/video-list/video-item/VideoItem';\n\nimport { MixedSearchResultItemProps } from './../MixedSearchResultItemProps';\n\nimport styles from '../../mixed-search-results.scss';\n\nconst namespace = 'search.exchangeVideoGroup';\n\nconst EXCHANGE_RESULT_DISPLAY_LIMIT = 3;\n\nexport function ExchangeVideoGroup(props: MixedSearchResultItemProps<ExchangeVideoGroup>): JSX.Element {\n const limit = props.item.showCount >= EXCHANGE_RESULT_DISPLAY_LIMIT\n ? EXCHANGE_RESULT_DISPLAY_LIMIT\n : props.item.showCount;\n\n function getContainerClassName(): string {\n if (props.pagePositionIndex === 0)\n return 'border-bottom pb-1 mb-3';\n\n return 'border-top border-bottom pt-3 mt-2 pb-1 mb-3';\n }\n\n const currentAppLink = Core.AppLinkHelper.getCurrentAppLink();\n const currentParams = (currentAppLink.params as HashObject) ?? {};\n let currentSource = currentParams?.source ?? [];\n\n if (currentSource && !Array.isArray(currentSource))\n currentSource = [currentSource];\n\n const searchAppLink = {\n ...currentAppLink,\n params: {\n ...currentParams,\n source: [ ...(currentSource), SourceFilterOptions.ExchangeArchive ]\n }\n };\n\n const analyticsData = {\n query: props.queryParams.query,\n itemIndex: props.itemIndex,\n pagePositionIndex: props.pagePositionIndex\n };\n const analyticsOptions = {\n entity: EntityType.SearchResults,\n location: LocationContext.ExchangeSearchGroupItem,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.ExchangeArchive\n };\n\n return (\n <div className={getContainerClassName()}>\n <AppLink\n appLink={searchAppLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <h2 className='h4'>\n <Text namespace={namespace} phrase='heading' />\n </h2>\n </AppLink>\n <p>\n <Text namespace={namespace} phrase='message' />\n \n <AppLink\n appLink={props.appLinks.searchSettings}\n className='text-info'\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Settings\n }}\n >\n <Text namespace={namespace} phrase='searchSettings' />\n </AppLink>\n .\n </p>\n\n <div className={`position-relative ${styles.videoList}`}>\n {props.item.videos.slice(0, limit).map((v, i) => {\n return (\n <VideoItem\n key={i}\n video={v}\n yearGroups={props.yearGroups}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getSubTextAppLink={props.appLinks.getSubTextAppLink}\n presentationAudiences={props.audiences}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n analyticsData= {{\n search: {\n query: props.queryParams.query,\n score: v._score,\n maxScore: v._maxScore,\n featured: v._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n hasPermissions={props.hasPermissions}\n getClassroomGuideAppLink={props.appLinks.getClassroomGuideAppLink}\n getResourceGuidanceAppLink={props.appLinks.getResourceGuidanceAppLink}\n getInteractiveGuidanceAppLink={props.appLinks.getInteractiveGuidanceAppLink}\n isPlugin={props.isPlugin}\n />\n );\n })}\n </div>\n <div className='text-center py-2'>\n <AppLink\n className='text-secondary'\n appLink={searchAppLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <Text namespace={namespace} phrase='seeMore' />\n </AppLink>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HeroVideo } from 'libs/shared/apps/subjects/components/hero-video/HeroVideo';\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function FeaturedVideoResult(props: MixedSearchResultItemProps<Video>): JSX.Element {\n return (\n <div className='pb-3'>\n <HeroVideo\n video={props.item}\n presentationAudiences={props.audiences}\n getVideoAppLink={(v, opts) => props.appLinks.getVideoAppLink(v, opts)}\n subTextAppLink={props.appLinks.getSubTextAppLink(props.item)}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n hideInteractiveBadge\n yearGroups={props.yearGroups}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n showVideoGuidance={VideoHelper.showVideoGuidance(props.hasPermissions)}\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n getInteractiveGuidanceAppLink={props.appLinks.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={props.appLinks.getResourceGuidanceAppLink}\n getClassroomGuideAppLink={props.appLinks.getClassroomGuideAppLink}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"videoList\":\"eEZEe\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PlaylistItem } from 'libs/shared/apps/playlists/components/playlist-list';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoItem } from 'libs/shared/components/video-list/video-item/VideoItem';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, Playlist, PresentationAudience, Video, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport styles from './playlist-with-videos.scss';\n\nconst namespace = 'search.playlistWithVideos';\n\nfunction useGetMaxVideos(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xl || breakpoints.xxl)\n return 3;\n \n return 2;\n}\n\ninterface PlaylistWithVideoProps {\n playlist: Playlist;\n yearGroups: YearGroup[];\n playlistAppLink: Core.AppLink;\n presentationAudiences: PresentationAudience[];\n preloadImage: boolean;\n analyticsData: HashObject;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n getSubTextAppLink: (video: Video) => Core.AppLink;\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n companyLogoFallbackUrl?: string;\n subTextType?: VideoSubTextType;\n hasPermissions: HasPermissionsFunc;\n isPlugin: boolean;\n}\n\nexport function PlaylistWithVideos(props: PlaylistWithVideoProps): JSX.Element {\n const maxVideos = useGetMaxVideos();\n\n const videos = props.playlist.videos.data.slice(0, maxVideos);\n\n const playlistAnalyticsOption: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Playlist,\n location: LocationContext.PlaylistWithVideos\n };\n\n const playlistAnalyticsData: HashObject = {\n ...props.analyticsData,\n id: props.playlist.id,\n name: props.playlist.name\n };\n\n return (\n <div className='ps-2 py-2'>\n <Row className='g-0 border border-light rounded-3'>\n <Col xs={4} lg={3} className='pe-3'>\n <PlaylistItem\n appLink={props.playlistAppLink}\n analyticsData={props.analyticsData}\n analyticsOptions={{\n ...playlistAnalyticsOption,\n descriptor: ClickDescriptor.Cover\n }}\n data={props.playlist}\n presentationAudiences={props.presentationAudiences}\n bgColourClassNames={BG_COLOUR_CLASS_NAMES}\n itemStyle='round-left'\n imageCdnUrl={props.imageCdnUrl}\n currentUser={props.currentUser}\n showCount={false}\n showOwner\n />\n </Col>\n <Col xs={8} lg={9}>\n <div className='d-flex justify-content-between'>\n <div className={`pt-3 mb-n2 ${styles.videoList}`}>\n {videos?.map(video => {\n const videoAnalyticsData: HashObject = {\n ...playlistAnalyticsData,\n videoId: video.id,\n videoName: video.name\n };\n\n return (\n <div key={video.id} className='mb-2'>\n <VideoItem\n video={video}\n getSubTextAppLink={props.getSubTextAppLink}\n canFavourite={() => false}\n setFavourite={null}\n getVideoAppLink={props.getVideoAppLink}\n analyticsData={videoAnalyticsData}\n analyticsOptions={{\n entity: EntityType.Video,\n location: LocationContext.PlaylistWithVideos\n }}\n size='sm'\n yearGroups={props.yearGroups}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n hasPermissions={props.hasPermissions}\n isPlugin={props.isPlugin}\n hideVideoGuidance\n />\n </div>\n );\n })}\n </div>\n <div className='text-end pt-3 pe-3'>\n <AppLink\n className='info-link fw-semibold'\n appLink={props.playlistAppLink}\n analyticsData={playlistAnalyticsData}\n analyticsOptions={{\n ...playlistAnalyticsOption,\n descriptor: ClickDescriptor.Link\n }}\n >\n <Text namespace={namespace} phrase='seeAllVideos' />\n </AppLink>\n </div>\n </div>\n </Col>\n </Row>\n </div>\n );\n}","import React from 'react';\n\nimport { Playlist } from 'libs/shared/interfaces';\n\nimport { PlaylistWithVideos } from '../../playlist-with-videos/PlaylistWithVideos';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function LargePlaylistResult(props: MixedSearchResultItemProps<Playlist>): JSX.Element {\n return (\n <div className='mx-n2'>\n <PlaylistWithVideos\n playlist={props.item}\n yearGroups={props.yearGroups}\n playlistAppLink={props.appLinks.getPlaylistAppLink(props.item)}\n presentationAudiences={props.audiences}\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n imageCdnUrl={props.imageCdnUrl}\n currentUser={props.currentUser}\n preloadImage\n getSubTextAppLink={props.appLinks.getSubTextAppLink}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n hasPermissions={props.hasPermissions}\n isPlugin={props.isPlugin}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"videoList\":\"UT8bc\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SeriesTallPoster } from 'libs/shared/components/series-tall-poster/SeriesTallPoster';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoItem } from 'libs/shared/components/video-list/video-item/VideoItem';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { PresentationAudience, Series, Video, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport styles from './series-with-videos.scss';\n\nconst namespace = 'search.seriesWithVideos';\n\nfunction useGetMaxVideos(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xl || breakpoints.xxl)\n return 5;\n \n if (breakpoints.lg || breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface SeriesWithVideoProps {\n series: Series;\n yearGroups: YearGroup[];\n seriesAppLink: Core.AppLink;\n subTextAppLink: (video: Video) => Core.AppLink;\n presentationAudiences: PresentationAudience[];\n preloadImage: boolean;\n analyticsData: HashObject;\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n companyLogoFallbackUrl?: string;\n subTextType?: VideoSubTextType;\n hasPermissions: HasPermissionsFunc;\n isPlugin: boolean;\n}\n\nexport function SeriesWithVideos(props: SeriesWithVideoProps): JSX.Element {\n const maxVideos = useGetMaxVideos();\n\n const videos = props.series.videos.data.slice(0, maxVideos);\n\n const seriesAnalyticsOption: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Series,\n location: LocationContext.SeriesWithVideos\n };\n\n const seriesAnalyticsData: HashObject = {\n ...props.analyticsData,\n id: props.series.id,\n name: props.series.name\n };\n\n return (\n <div className='ps-2 py-2'>\n <Row className='g-0 border border-light rounded-3'>\n <Col xs={4} lg={3} className='pe-3'>\n <AppLink\n appLink={props.seriesAppLink}\n className='position-relative'\n analyticsData={seriesAnalyticsData}\n analyticsOptions={{\n ...seriesAnalyticsOption,\n descriptor: ClickDescriptor.TallPoster\n }}\n >\n <SeriesTallPoster\n series={props.series}\n presentationAudiences={props.presentationAudiences}\n preloadImage={props.preloadImage}\n imageClass='rounded-start-lg'\n />\n </AppLink>\n </Col>\n <Col xs={8} lg={9}>\n <div className='d-flex justify-content-between'>\n <div className={`pt-3 mb-n2 ${styles.videoList}`}>\n {videos?.map(video => {\n const videoAnalyticsData: HashObject = {\n ...seriesAnalyticsData,\n videoId: video.id,\n videoName: video.name\n };\n\n // insert parent series into video object\n video = {\n ...video,\n series: props.series\n };\n\n return (\n <div key={video.id} className='mb-2'>\n <VideoItem\n video={video}\n getSubTextAppLink={props.subTextAppLink}\n canFavourite={() => false}\n setFavourite={null}\n getVideoAppLink={props.getVideoAppLink}\n analyticsData={videoAnalyticsData}\n analyticsOptions={{\n entity: EntityType.Video,\n location: LocationContext.SeriesWithVideos\n }}\n size='sm'\n yearGroups={props.yearGroups}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n hasPermissions={props.hasPermissions}\n isPlugin={props.isPlugin}\n hideVideoGuidance\n />\n </div>\n );\n })}\n </div>\n <div className='text-end pt-3 pe-3'>\n <AppLink\n className='info-link fw-semibold'\n appLink={props.seriesAppLink}\n analyticsData={seriesAnalyticsData}\n analyticsOptions={{\n ...seriesAnalyticsOption,\n descriptor: ClickDescriptor.Link\n }}\n >\n <Text namespace={namespace} phrase='seeAllVideos' />\n </AppLink>\n </div>\n </div>\n </Col>\n </Row>\n </div>\n );\n}","import React from 'react';\n\nimport { Series } from 'libs/shared/interfaces';\n\nimport { SeriesWithVideos } from '../../series-with-videos/SeriesWithVideos';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function LargeSeriesResult(props: MixedSearchResultItemProps<Series>): JSX.Element {\n return (\n <div className='mx-n2'>\n <SeriesWithVideos\n yearGroups={props.yearGroups}\n presentationAudiences={props.audiences}\n series={props.item}\n seriesAppLink={props.appLinks.getSeriesAppLink(props.item)}\n subTextAppLink={props.appLinks.getSubTextAppLink}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n preloadImage\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n hasPermissions={props.hasPermissions}\n isPlugin={props.isPlugin}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SeasonEpisode } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Video } from 'libs/shared/interfaces';\n\nconst namespace = 'search.collectionVideoList';\n\ninterface CollectionVideoListProps {\n videos: Video[];\n collectionId: string;\n appLink: Core.AppLink;\n analyticsOptions: AnalyticsOptions;\n analyticsData?: HashObject;\n getVideoAppLink: (video: Video) => Core.AppLink;\n}\n\nfunction useGetMaxVideos(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xs)\n return 2;\n\n if (breakpoints.sm)\n return 1;\n\n return 3;\n}\n\nexport function CollectionVideoList(props: CollectionVideoListProps): JSX.Element {\n const maxVideos = useGetMaxVideos();\n\n const analyticsProps = {\n analyticsData: props.analyticsData,\n analyticsOptions: props.analyticsOptions\n };\n\n return (\n <>\n <ul className='list-unstyled my-1'>\n {props.videos.slice(0, maxVideos).map(v => {\n const hasSeasonEpisode = !!v.episodeNumber && !!v.season?.id;\n\n return (\n <li key={`${props.collectionId}:${v.id}`} className='d-flex align-items-center'>\n <AppLink\n {...analyticsProps}\n className='clamp-1'\n appLink={props.getVideoAppLink(v)}\n >\n {hasSeasonEpisode && <><SeasonEpisode video={v} /> </>}\n {v.name}\n </AppLink>\n </li>\n );\n })}\n </ul>\n\n <AppLink\n {...analyticsProps}\n className='info-link'\n appLink={props.appLink}\n >\n <Text namespace={namespace} phrase='seeAll' />\n </AppLink>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"overlayContainer\":\"MnBcv\",\"overlay\":\"AZSmh\"};","import React from 'react';\nimport { Col } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, ClickDescriptor } from 'libs/analytics/interfaces';\n\nimport { CollectionVideoList } from 'libs/shared/apps/search/components/collection-video-list/CollectionVideoList';\nimport { ActionOptions, Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Mask, MaskType } from 'libs/shared/components/mask/Mask';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Playlist, Series, Video } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'search.collectionThumbnail';\n\n\nexport type GetCollectionActions = (\n collection: Collection,\n showActions: boolean,\n collectionType: CollectionType,\n baseAnalyticsOptions: AnalyticsOptions\n) => ActionOptions[]\n\ntype Collection = Series | Playlist;\ntype CollectionType = 'series' | 'playlist';\n\ninterface CollectionThumbnailProps {\n collection: Collection;\n collectionType: CollectionType;\n appLink: Core.AppLink;\n showActions: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n maskType?: MaskType;\n imageFallbackType?: ImageFallbackType;\n hideBadges?: boolean;\n isPlugin: boolean;\n getCollectionActions: GetCollectionActions;\n getVideoAppLink: (video: Video, opts?: GetVideoAppLinkOptions) => Core.AppLink;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps): JSX.Element {\n const breakpoints = useBreakpoints();\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const hasVideos = !!props.collection.videos?.data?.length;\n\n const firstVideoWithThumbnail = hasVideos && props.collection.videos.data.find(v => !!v.thumbnail?.url);\n\n function getAnalyticsData(): HashObject {\n const data: HashObject = {\n ...props.analyticsData,\n id: props.collection.id,\n name: props.collection.name\n };\n\n if (firstVideoWithThumbnail) {\n data.videoId = firstVideoWithThumbnail.id;\n data.videoName = firstVideoWithThumbnail.name;\n }\n\n return data;\n }\n\n const analyticsData = getAnalyticsData();\n const isSeries = props.collectionType === 'series';\n\n return (\n <div className={`row g-0 ${isSmall ? '' : 'py-2'}`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-2` : 'mb-1 px-2'}`}>\n <div className={`position-relative overflow-hidden ${isSmall ? 'rounded' : 'rounded-3'}`}>\n <BaseImage\n data={firstVideoWithThumbnail?.thumbnail}\n appLink={props.appLink}\n imageType={ImageType.Thumbnails}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...props.analyticsOptions,\n descriptor: ClickDescriptor.Thumbnail\n }}\n >\n <Mask type={props.maskType} />\n <ImageFallback type={props.imageFallbackType} />\n \n <div className={`d-flex flex-column align-items-center justify-content-center text-white h-100 ${styles.overlay}`}>\n <Text namespace={namespace} phrase='seeAll' />\n </div>\n </BaseImage>\n </div>\n </Col>\n\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n {!props.isPlugin &&\n <ActionsComponent\n actions={props.getCollectionActions(\n props.collection,\n props.showActions,\n props.collectionType,\n props.analyticsOptions\n )}\n className='float-end mt-n1'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n }\n\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...props.analyticsOptions,\n descriptor: ClickDescriptor.Title\n }}\n >\n <h5 className='m-0 mb-1'><span className='clamp-1'>{props.collection.name}</span></h5>\n </AppLink>\n\n {isSeries && !props.hideBadges && (\n <BadgeListContainer>\n <Badge type={BadgeType.Rating} data={(props.collection as Series).rating} />\n <Badge type={BadgeType.ProductionYear} data={(props.collection as Series).metadata?.year} />\n </BadgeListContainer>\n )}\n \n {hasVideos && (\n <CollectionVideoList\n collectionId={props.collection.id}\n videos={props.collection.videos.data}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...props.analyticsOptions,\n descriptor: ClickDescriptor.Link\n }}\n getVideoAppLink={props.getVideoAppLink}\n />\n )}\n </Col>\n </div>\n );\n}","import React from 'react';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { MaskType } from 'libs/shared/components/mask/Mask';\nimport { Playlist } from 'libs/shared/interfaces';\n\nimport { CollectionThumbnail } from '../../collection-thumbnail/CollectionThumbnail';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nimport styles from '../mixed-search-results.scss';\n\nexport function SmallPlaylistResult(props: MixedSearchResultItemProps<Playlist>): JSX.Element {\n return (\n <div className={`position-relative ${styles.videoList}`}>\n <CollectionThumbnail\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n analyticsOptions={{\n entity: EntityType.Playlist,\n actionType: UserAction.Click,\n location: LocationContext.PlaylistListItem\n }}\n appLink={props.appLinks.getPlaylistAppLink(props.item)}\n showActions={props.showActions}\n collection={props.item}\n collectionType='playlist'\n maskType={MaskType.Playlist}\n imageFallbackType={ImageFallbackType.PlaylistThumbnail}\n isPlugin={props.isPlugin}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getCollectionActions={props.appLinks.getCollectionActions}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { MaskType } from 'libs/shared/components/mask/Mask';\nimport { Series } from 'libs/shared/interfaces';\n\nimport { CollectionThumbnail } from '../../collection-thumbnail/CollectionThumbnail';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nimport styles from '../mixed-search-results.scss';\n\nexport function SmallSeriesResult(props: MixedSearchResultItemProps<Series>): JSX.Element {\n return (\n <div className={`position-relative ${styles.videoList}`}>\n <CollectionThumbnail\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n analyticsOptions={{\n entity: EntityType.Series,\n actionType: UserAction.Click,\n location: LocationContext.SeriesListItem\n }}\n appLink={props.appLinks.getSeriesAppLink(props.item)}\n collectionType='series'\n collection={props.item}\n showActions={props.showActions}\n maskType={MaskType.Series}\n imageFallbackType={ImageFallbackType.SeriesThumbnail}\n hideBadges\n isPlugin={props.isPlugin}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getCollectionActions={props.appLinks.getCollectionActions}\n />\n </div>\n );\n}","import React from 'react';\nimport { Col } from 'react-bootstrap';\n\nimport { SubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function SubjectResult(props: MixedSearchResultItemProps<Classification>): JSX.Element {\n return (\n <Col as='li' sm={6} md={props.useLargeStyle ? 6 : 4} lg={props.useLargeStyle ? 4 : 3}>\n <div className={`position-relative px-1 mb-2`}>\n <SubjectWidgetItem\n data={props.item}\n getChildAppLink={props.appLinks.getClassificationAppLink}\n getChildAppLinkOptions={\n () => props.appLinks.getClassificationAppLinkOptions?.(props.item)\n }\n availablePresentations={props.availablePresentations}\n analyticsData={{\n itemIndex: props.itemIndex,\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: 0\n }}\n isLarge={props.useLargeStyle}\n highlightOnHover={props.hasTopicDirectories}\n />\n </div>\n </Col>\n );\n}","import React from 'react';\n\nimport { ClipItem, ClipItemProps } from 'libs/shared/components/video-list/clip-item/ClipItem';\nimport { InteractiveItem, InteractiveItemProps } from 'libs/shared/components/video-list/interactive-item/InteractiveItem';\nimport { VideoItem, VideoItemProps } from 'libs/shared/components/video-list/video-item/VideoItem';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nimport styles from '../mixed-search-results.scss';\n\nexport function VideoResult(props: MixedSearchResultItemProps<VideoTypes>): JSX.Element {\n function getItemComponent(\n video: VideoTypes\n ): (props: ClipItemProps | InteractiveItemProps | VideoItemProps) => JSX.Element {\n if (VideoHelper.isClip(video))\n return ClipItem;\n \n if (VideoHelper.isInteractive(video))\n return InteractiveItem;\n \n return VideoItem;\n }\n\n const Component = getItemComponent(props.item);\n\n return (\n <div className={`position-relative ${styles.videoList}`}>\n <Component\n video={props.item}\n yearGroups={props.yearGroups}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getSubTextAppLink={props.appLinks.getSubTextAppLink}\n getPreviewQuestionsAppLink={props.appLinks.getPreviewQuestionsAppLink}\n presentationAudiences={props.audiences}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n analyticsData= {{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n hasPermissions={props.hasPermissions}\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={props.appLinks.getClassroomGuideAppLink}\n getResourceGuidanceAppLink={props.appLinks.getResourceGuidanceAppLink}\n getInteractiveGuidanceAppLink={props.appLinks.getInteractiveGuidanceAppLink}\n />\n </div>\n );\n}","import React from 'react';\nimport { Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, Classification, Company, CurrentUser, FavouriteFunc, InteractiveMetadata, Playlist, Presentation, PresentationAudience, Series, Video, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { SearchResultObjectTypes, SearchResults, SearchResultsObject } from '../../interfaces';\nimport { GetCollectionActions } from '../collection-thumbnail/CollectionThumbnail';\n\nimport { CompanyResult } from './components/CompanyResult';\nimport { ExchangeVideoGroup } from './components/exchange-video-group/ExchangeVideoGroup';\nimport { FeaturedVideoResult } from './components/FeaturedVideoResult';\nimport { LargePlaylistResult } from './components/LargePlaylistResults';\nimport { LargeSeriesResult } from './components/LargeSeriesResult';\nimport { BaseMixedSearchResultItemProps } from './components/MixedSearchResultItemProps';\nimport { SmallPlaylistResult } from './components/SmallPlaylistResult';\nimport { SmallSeriesResult } from './components/SmallSeriesResults';\nimport { SubjectResult } from './components/SubjectResult';\nimport { VideoResult } from './components/VideoResult';\n\nconst namespace = 'shared.mixedSearchResults';\n\nconst TOPIC_DISPLAY_LIMIT = 8;\n\nexport interface MixedSearchResultAppLinks {\n getSubTextAppLink: (video: Video) => Core.AppLink;\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n getSeriesAppLink: (series: Series) => Core.AppLink;\n getCompanyAppLink: (company: Company) => Core.AppLink;\n getCompanyAppLinkOptions?: (company: Company) => Core.AppLinkOptions;\n getClassificationAppLink: (classification: Classification) => Core.AppLink;\n getClassificationAppLinkOptions?: (classification: Classification) => Core.AppLinkOptions;\n getPlaylistAppLink: (playlist: Playlist) => Core.AppLink;\n getPreviewQuestionsAppLink: (interactive: InteractiveMetadata) => Core.AppLink;\n getCollectionActions: GetCollectionActions;\n getInteractiveGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink: (id: string, type: MasterType) => Core.AppLink;\n searchSettings?: Core.AppLink;\n}\n\ninterface MixedSearchResultsProps {\n queryParams: HashObject;\n hasTopicDirectories: boolean;\n results: SearchResultObjectTypes[];\n topics?: SearchResults;\n companies?: SearchResults;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n audiences: PresentationAudience[];\n currentUser: CurrentUser;\n imageCdnUrl: string;\n availablePresentations: Presentation[]\n showActions: boolean;\n yearGroups: YearGroup[];\n hasPermissions: HasPermissionsFunc;\n isPlugin: boolean;\n appLinks: MixedSearchResultAppLinks;\n companyLogoFallbackUrl?: string;\n subTextType?: VideoSubTextType;\n}\n\nexport const MixedSearchResults = React.memo(function(props: MixedSearchResultsProps): JSX.Element {\n const breakpoints = useBreakpoints();\n const useSmallComponent = breakpoints.xs || breakpoints.sm;\n\n if (!props.results?.length && !props.topics?.totalResults && !props.companies?.totalResults)\n return <></>;\n\n const companiesAndTopics = [\n ...props.companies?.results ?? [],\n ...props.topics?.results ?? []\n ];\n\n const childProps: BaseMixedSearchResultItemProps = {\n useLargeStyle: companiesAndTopics.length < 4,\n ...props\n };\n\n return (\n <div className='position-relative'>\n <p role='status' className='visually-hidden'><Text namespace={namespace} phrase='ariaSearch' /></p>\n\n {!!companiesAndTopics.length && (\n <Row as='ul' className='list-unstyled g-0 pb-3 mx-n1'>\n {companiesAndTopics.slice(0, TOPIC_DISPLAY_LIMIT).map((c, itemIndex) => {\n switch (c.type.toLowerCase()) {\n case 'company':\n return (\n <CompanyResult\n key={itemIndex}\n item={c as SearchResultsObject<Company>}\n itemIndex={itemIndex}\n {...childProps}\n />\n );\n case 'subject': {\n return (\n <SubjectResult\n key={itemIndex}\n item={c as SearchResultsObject<Classification>}\n itemIndex={itemIndex}\n {...childProps}\n />\n );\n }\n }\n })}\n </Row>\n )}\n\n {props.results?.map((result, index) => {\n const pagePositionIndex = companiesAndTopics.length ? index + 1 : index;\n\n if ('isExchangeVideoGroup' in result && result.isExchangeVideoGroup) {\n return (\n <ExchangeVideoGroup\n key={index}\n item={result}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n \n\n switch (result.type?.toLowerCase()) {\n case 'interactive':\n case 'clip':\n case 'video': {\n if (index === 0 && result._featured && VideoHelper.isVideo(result)) {\n return (\n <FeaturedVideoResult\n key={index}\n item={result as SearchResultsObject<Video>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n return (\n <VideoResult\n key={index}\n item={result as SearchResultsObject<Video>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n case 'playlist': {\n if (useSmallComponent) {\n return (\n <SmallPlaylistResult\n key={index}\n item={result as SearchResultsObject<Playlist>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n return (\n <LargePlaylistResult\n key={index}\n item={result as SearchResultsObject<Playlist>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n case 'series': {\n const series = result as Series;\n\n if (useSmallComponent || !series.tallPoster?.id) {\n return (\n <SmallSeriesResult\n key={index}\n item={result as SearchResultsObject<Series>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n return (\n <LargeSeriesResult\n key={index}\n item={result as SearchResultsObject<Series>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n }\n })}\n </div>\n );\n});","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'search.searchSubstitute';\n\ninterface SearchSubstituteProps {\n substitute: string;\n queryParams: HashObject;\n getAppLink: (query: string, queryParams: HashObject) => Core.AppLink\n}\n\nexport function SearchSubstitute(props: SearchSubstituteProps): JSX.Element {\n if (!props.substitute)\n return <></>;\n\n return (\n <div className='pb-3'>\n <p className='mb-1 h6'>\n <Text namespace={namespace} phrase='showingFor' /> \n <AppLink\n className='info-link'\n appLink={props.getAppLink(props.substitute, props.queryParams)}\n appLinkOptions={{ replace: true }}\n >\n {props.substitute}\n </AppLink>\n </p>\n <p className='mb-0 h6 fw-normal'>\n <Text namespace={namespace} phrase='searchInsteadFor' />\n <AppLink\n className='info-link'\n appLink={props.getAppLink(props.queryParams.query, { ...props.queryParams, allowSubstitute: 'false' })}\n >\n {props.queryParams.query}\n </AppLink>\n <Text namespace={namespace} phrase='endOriginal' />\n </p>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'search.searchSuggestions';\n\ninterface SearchSuggestionsProps {\n suggestions: string[];\n queryParams: HashObject;\n getAppLink: (query: string, queryParams: HashObject) => Core.AppLink\n}\n\nSearchSuggestions.defaultProps = {\n suggestions: [],\n queryParams: {}\n};\n\nexport function SearchSuggestions(props: SearchSuggestionsProps): JSX.Element {\n if (!props.suggestions?.length)\n return <></>;\n\n return (\n <div className='d-flex align-items-center mb-3'>\n <Text namespace={namespace} phrase='didYouMean' />\n \n\n {props.suggestions.map((suggestion, index) => (\n <React.Fragment key={`${suggestion}:${index}`}>\n {index !== 0 && <span className='mx-1'>•</span>}\n\n <AppLink\n className='info-link'\n appLink={props.getAppLink(suggestion, props.queryParams)}\n appLinkOptions={{ replace: true }}\n >\n {suggestion}\n </AppLink>\n </React.Fragment>\n ))}\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { 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 { FilterConstants } from 'libs/shared/apps/search/constants/FilterConstants';\nimport { SearchIndices, SearchResultObjectTypes, SearchResults, SearchResultsObject } from 'libs/shared/apps/search/interfaces';\nimport { SharedSearchHelper } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { Playlist, Series } from 'libs/shared/interfaces';\n\nfunction formatSearchResponse(response: SearchResults<SearchResultObjectTypes>) {\n /**\n * Until playlists and series are regionalised, search will always return every series/playlist that exists\n * even if the current user doesn't have access to the content inside (which will happen for example when playlists/series)\n * contain all UK library content but is being searched for by an AU user.\n *\n * For some search queries, this may result in search showing a bunch of \"empty\" playlists/series, which sucks.\n * This will filter all empty collections out and decrement the `totalResults` to avoid this and make search a better\n * experience.\n *\n * Ideally this will be removed one day when this regionalisation is no longer an issue.\n */\n let totalResults = response.totalResults;\n\n const results = response?.results?.filter(result => {\n if (result._index !== 'series' && result._index !== 'playlist')\n return true;\n\n if (result._index === 'playlist') {\n const playlist = result as SearchResultsObject<Playlist>;\n\n if (playlist.clips?.data?.length ||\n playlist.interactives?.data?.length ||\n playlist.videos?.data?.length)\n return true;\n\n totalResults--;\n return false;\n }\n\n if ((result as SearchResultsObject<Series>).videos?.data?.length === 0) {\n totalResults--;\n return false;\n }\n\n return true;\n }) ?? [];\n\n response.results = results;\n response.totalResults = totalResults;\n\n // The first search result will always have the highest score value.\n // We store it so that we can access it for subsequent results pages\n const resultMaxScore = results[0]?._score;\n\n return {\n ...response,\n results: SharedSearchHelper.mapMaxScoreToSearchResults(results, resultMaxScore)\n };\n}\n\nexport const SharedSearchRequests = {\n searchV4(\n query: string,\n indicesArr: SearchIndices[],\n filters: HashObject = {},\n allowSubstitute: boolean = true,\n cursor?: string,\n limit?: number\n ): Flight.PublicRequest {\n let key = `search:v4:${query}:${allowSubstitute}:${indicesArr}:${cursor}`;\n\n key += Object.keys(filters).map(filterName => {\n const filter = filters[filterName];\n return Array.isArray(filter) ? filter.join(';') : filter;\n }).join(';');\n\n const {\n [`${FilterConstants.FILTER_PARAM_PREFIX}excludeLibraryExclusive`]: excludeLibraryExclusive,\n isLearner,\n ...genericFilters\n } = filters;\n\n const indices = indicesArr.map(index => {\n if (index !== 'video' || !excludeLibraryExclusive)\n return { index };\n\n return { index, filters: { excludeLibraryExclusive } };\n });\n\n const data = {\n searchType: 'content',\n indices,\n filters: Object.entries(genericFilters)\n .reduce((prev, [ key, value ]) =>\n ({ ...prev, [key.replace('filters.', '')]: value }), {}),\n query,\n allowSubstitute,\n cursor: cursor ?? undefined,\n isLearner: !!isLearner,\n limit\n };\n\n return {\n url: '{gateway}/v4/search',\n publicUrl: '/api/search/v4',\n type: HttpVerbs.POST,\n data,\n key,\n formatData: formatSearchResponse\n };\n },\n\n search(\n query: string,\n indices: SearchIndices[],\n filters: HashObject = {},\n allowSubstitute: boolean = true,\n cursor?: string,\n limit?: number,\n success?: (results: SearchResults) => void,\n error?: (xhr: Xhr) => void\n ): Flight.PublicRequest {\n let key = `search:${query}:${allowSubstitute}:${indices}:${cursor}`;\n\n key += Object.keys(filters).map(filterName => {\n const filter = filters[filterName];\n return Array.isArray(filter) ? filter.join(';') : filter;\n }).join(';');\n\n const params = Object.assign({}, {\n index: indices,\n cursor: cursor ?? undefined,\n query,\n allowSubstitute,\n limit,\n ...filters\n });\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v3/search', params),\n publicUrl: UrlHelper.urlBuilder('/api/search', params),\n key,\n formatData: formatSearchResponse,\n success,\n error\n };\n },\n\n tagsAndClassifications(\n query: string,\n indices: SearchIndices[],\n filters: HashObject = {},\n cursor?: string,\n success?: (results: string[]) => void,\n error?: () => void\n ): Flight.PublicRequest {\n const params = Object.assign({}, {\n index: indices,\n cursor,\n query,\n ...filters\n });\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v3/search/tags-and-classifications', params),\n publicUrl: UrlHelper.urlBuilder('/api/search/tags-and-classifications', params),\n key: `filter:options:${query}:${indices.join(':')}:${cursor}`,\n success,\n error,\n normalize: false\n };\n }\n};","import { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { SharedSearchRequests } from 'libs/shared/apps/search/flight-requests/SharedSearchRequests';\nimport { SearchResults, SearchResultsObject } from 'libs/shared/apps/search/interfaces';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { Classification, Presentation, Rating } from 'libs/shared/interfaces';\n\nimport { SearchHelper } from 'apps/search/utils';\n\nconst TEACHER_FILTERS = [ 'filters.classification', 'filters.presentation' ];\nconst STUDENT_FILTERS = [ 'filters.classification', 'filters.presentation', 'isLearner' ];\n\ntype TopicSearchResults = SearchResults<SearchResultsObject<Classification>>;\n\nexport function useSearchTopics(\n queryParams: HashObject,\n ratings: Rating[] = [],\n presentationId: string,\n availablePresentations: Presentation[],\n isStudent: boolean\n): Flight.Response<SearchResults> {\n const rawFilters = ratings?.length && FilterHelper.buildBackendFilterParams(\n queryParams,\n ratings,\n [presentationId],\n isStudent,\n []\n );\n\n const filters = ObjectHelper.pick(rawFilters, isStudent ? STUDENT_FILTERS : TEACHER_FILTERS);\n filters[`filters.classificationType`] = ClassificationType.Subject;\n filters[`filters.status`] = ClassificationStatus.Published;\n\n if (queryParams?.moviesAndTv)\n filters[`filters.curationTag`] = CurationTag.MOVIES_AND_TV;\n\n if (availablePresentations.length) {\n filters[`filters.presentation`] = availablePresentations.map(presentation => presentation.id);\n }\n\n const presentationMap = availablePresentations?.reduce((acc: HashObject, presentation) => {\n acc[presentation.id] = presentation;\n return acc;\n }, {}) ?? {};\n\n const indices = FilterHelper.getAppliedIndices(queryParams);\n\n const hasFilteredOutTopics = !indices.includes('classification');\n\n const request = SharedSearchRequests.search(\n SearchHelper.getQuery(queryParams),\n ['classification'],\n filters,\n queryParams.allowSubstitute !== 'false'\n );\n\n const shouldFetch = !hasFilteredOutTopics;\n\n const response = Flight.useBasicFetch<TopicSearchResults>(shouldFetch && request);\n\n if (!shouldFetch)\n return null;\n\n if (!response.data)\n return response;\n\n if (!availablePresentations || availablePresentations?.length < 2)\n return response;\n\n const results = [...response.data.results];\n\n /**\n * If the customer has more than 1 presentation, and they search for something that returns 2 topics\n * with the same score, then we want to order those topics based on the presentation's learning level.\n * This is achieved by checking the `value` on the presentation.\n */\n const sortedResults = results.sort((a, b) => {\n // If the scores are different, then keep the original ordering\n if (a._score !== b._score)\n return 0;\n\n const presentationA = presentationMap[a.presentationId];\n const presentationB = presentationMap[b.presentationId];\n\n if (!presentationA)\n return 1;\n\n if (!presentationB)\n return -1;\n\n // Order by presentation value\n return presentationA.value - presentationB.value;\n });\n\n return {\n ...response,\n data: {\n ...response.data,\n results: sortedResults\n }\n };\n}\n","import { Flight } from 'libs/common/flight';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { TopicResults } from 'libs/shared/apps/search/interfaces';\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { DomainMasterCollectionType, LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, DashboardTargetType, Library, Rating, User, YearGroup } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\n\nimport { useFetchSchoolLevels } from 'apps/search/hooks/useFetchSchoolLevels';\nimport { useSearchCompanies } from 'apps/search/hooks/useSearchCompanies';\nimport { useSearchTopics } from 'apps/search/hooks/useSearchTopics';\n\n/**\n * We need to fetch libraries in order to support the sources filter. \n * However we need to exclude the streamable library, and additionally we need to exclude\n * the exchange library if the user has decided they don't want to see exchange results.\n * \n * We then need to return both of these ids so that the FilterHelper.getBackendFilters()\n * can add them as excludeLibraryExclusive filters\n * \n * - Sha\n */\nfunction useGetLibraries() {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const products = useProducts();\n const settings = useSettings(null);\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n const streamableLibraryId = streamableLibrary.data?.objectId;\n\n const showExchangeSearchResults = products.hasProduct(ProductId.Exchange) && settings.showExchangeSearchResults;\n\n const libraryTypes: DomainMasterCollectionType[] = [ 'sharedLibrary', 'customLibrary', 'workspace', 'hostedLibrary', 'exchange' ];\n const librariesRequest = Flight.useBasicFetch<Library[]>(\n currentUser.data?.isAuthenticated && LibraryRequests.domainLibraries(libraryTypes)\n );\n\n let libraries = librariesRequest.data ?? [];\n const exchangeLibraryIndex = libraries?.findIndex(l => l.type === MasterObjectTypes.Exchange);\n const exchangeLibraryId = libraries[exchangeLibraryIndex]?.id;\n\n if (!showExchangeSearchResults)\n libraries = [ ...libraries.slice(0, exchangeLibraryIndex), ...libraries.slice(exchangeLibraryIndex + 1) ];\n\n if (streamableLibraryId) {\n const streamableIndex = libraries?.findIndex(l => l.id.toString() === streamableLibraryId.toString());\n libraries = [ ...libraries.slice(0, streamableIndex), ...libraries.slice(streamableIndex + 1) ];\n }\n\n const hasLibrariesCompleted = (\n streamableLibrary.hasCompleted &&\n (!currentUser.data?.isAuthenticated || librariesRequest.hasCompleted)\n );\n\n return {\n hasLibrariesCompleted,\n libraries,\n exchangeLibraryId,\n streamableLibraryId,\n showExchangeSearchResults\n };\n}\n\nfunction useGetRatings() {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings(currentUser.data?.countryCode));\n\n const {\n activePresentation, availablePresentations, getFallbackPresentation, hasPresentationsLoaded\n } = usePresentation();\n\n const currentPresentation = activePresentation || getFallbackPresentation();\n\n if (!hasPresentationsLoaded)\n return ratings;\n\n if (availablePresentations?.length > 1 || !currentPresentation)\n return ratings;\n\n const learningLevel = TopicsHelper.getMappedPresentationLevel(currentPresentation.learningLevel);\n if (learningLevel !== PresentationLearningLevel.Level_1)\n return ratings;\n\n return {\n ...ratings,\n data: ratings.data?.filter(rating => {\n // Primary schools shouldn't see ratings higher than PG\n return rating.code && rating.value < 64;\n })\n };\n}\n\n/**\n * This hook contains all the simple data fetching that normally sits in the view.\n * I've done this to help promote readability of of the SearchResultsView - Sha\n */\nexport function useFetchSearchData(queryParams: HashObject) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const userDetails = Flight.useBasicFetch<User>(currentUser.data?.id && UserRequests.user(currentUser.data.id));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const products = useProducts();\n const settings = useSettings(null);\n\n const {\n hasLibrariesCompleted,\n libraries,\n exchangeLibraryId,\n streamableLibraryId,\n showExchangeSearchResults\n } = useGetLibraries();\n\n const {\n activePresentation, availablePresentations, getFallbackPresentation, hasPresentationsLoaded\n } = usePresentation();\n\n const currentPresentation = activePresentation || getFallbackPresentation();\n const currentPresentationId = currentPresentation?.id;\n\n const curriculums = useCurriculums();\n\n const audiences = usePresentationAudiences();\n\n const schoolLevels = useFetchSchoolLevels(currentPresentation);\n const schoolLevelIds = schoolLevels.data?.schoolLevels?.map(o => o.id);\n const availableTopics = Flight.useBasicFetch<TopicResults>(schoolLevels?.data &&\n ClassificationRequests.topicsFromAllAvailablePresentations(schoolLevelIds));\n\n const ratings = useGetRatings();\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const isLearner = hasPermissions(PermissionName.StudentExperience);\n const canViewCurriculums = hasPermissions(PermissionName.ViewCurriculums);\n const canUseSeriesActions = hasLocalPermissions(LocalPermissionName.UseSeriesActions);\n const hasCustomLibraries = hasPermissions(PermissionName.ViewLibraries);\n const hasMoviesAndTv = hasPermissions(PermissionName.ViewMoviesTv);\n\n const topics = useSearchTopics(\n queryParams,\n ratings.data,\n currentPresentationId,\n availablePresentations,\n isLearner\n );\n\n const companies = useSearchCompanies(\n queryParams,\n ratings.data,\n availablePresentations,\n hasMoviesAndTv\n );\n\n const {\n dashboard: moviesAndTvDashboard\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.MoviesAndTv,\n queryParams\n });\n\n const hasDataLoaded = (\n audiences.hasCompleted &&\n hasPresentationsLoaded &&\n currentUser.hasCompleted &&\n (!currentUser.data?.isAuthenticated || userDetails.hasCompleted) &&\n ratings.hasCompleted &&\n config.hasCompleted &&\n availablePresentations &&\n (!currentUser.data?.isAuthenticated || !products.isLoadingProducts) &&\n !settings.isLoadingSettings &&\n hasLibrariesCompleted\n );\n\n return {\n queryParams,\n currentUser,\n userDetails,\n config,\n yearGroups,\n products,\n settings,\n curriculums,\n audiences,\n schoolLevels,\n currentPresentation,\n availablePresentations,\n availableTopics,\n ratings,\n topics,\n companies,\n moviesAndTvDashboard,\n currentPresentationId,\n isLearner,\n canViewCurriculums,\n canUseSeriesActions,\n libraries,\n hasDataLoaded,\n exchangeLibraryId,\n streamableLibraryId,\n showExchangeSearchResults,\n hasPermissions,\n hasCustomLibraries,\n hasMoviesAndTv\n };\n}\n","import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Presentation, SchoolLevels } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nimport { SearchRequests } from 'apps/search/flight-requests/SearchRequests';\n\nexport function useFetchSchoolLevels(presentation: Presentation) {\n const { hasPermissions } = usePermissions();\n const isLearner = hasPermissions(PermissionName.StudentExperience);\n\n const {\n availablePresentations,\n hasPresentationsLoaded\n } = usePresentation();\n\n function getPresentationIds() {\n if (isLearner)\n return presentation ? [presentation?.id] : null;\n\n return availablePresentations?.map(o => o.id);\n }\n\n const presentationIds = getPresentationIds();\n\n return Flight.useBasicFetch<SchoolLevels>(\n hasPresentationsLoaded &&\n presentationIds &&\n SearchRequests.schoolLevels(presentationIds)\n );\n}","import { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedSearchRequests } from 'libs/shared/apps/search/flight-requests/SharedSearchRequests';\nimport { SearchResults, SearchResultsObject } from 'libs/shared/apps/search/interfaces';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { Company, Presentation, Rating } from 'libs/shared/interfaces';\n\nimport { SearchHelper } from 'apps/search/utils';\n\ntype CompanySearchResults = SearchResults<SearchResultsObject<Company>>;\n\nexport function useSearchCompanies(\n queryParams: HashObject,\n ratings: Rating[] = [],\n availablePresentations: Presentation[],\n hasMoviesAndTv: boolean\n): Flight.Response<SearchResults> {\n const availablePresentationIds = availablePresentations.map(p => p.id);\n\n const rawFilters = ratings?.length && FilterHelper.buildBackendFilterParams(\n queryParams,\n ratings,\n availablePresentationIds,\n false,\n []\n );\n \n const filters = rawFilters || {};\n\n /**\n * For other uses of FilterHelper.buildBackendFilterParams, the presentaiton ids will only be added for students,\n * but as a temporary fix for searching companies, we always filter by the current presentation - Sha\n */\n if (availablePresentationIds?.length)\n filters[`filters.presentation`] = availablePresentationIds;\n\n const indices = FilterHelper.getAppliedIndices(queryParams);\n\n const hasFilteredOutCompanies = !indices.includes('company');\n\n const request = SharedSearchRequests.search(\n SearchHelper.getQuery(queryParams),\n ['company'],\n filters,\n queryParams.allowSubstitute !== 'false'\n );\n\n const shouldFetch = !hasFilteredOutCompanies && hasMoviesAndTv;\n\n const response = Flight.useBasicFetch<CompanySearchResults>(shouldFetch && request);\n\n if (!shouldFetch)\n return null;\n\n if (!response.data)\n return response;\n\n return {\n ...response,\n data: {\n ...response.data,\n results: [...response.data.results]\n }\n };\n}\n","import { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { FilterConstants } from 'libs/shared/apps/search/constants/FilterConstants';\nimport { SharedSearchRequests } from 'libs/shared/apps/search/flight-requests/SharedSearchRequests';\nimport { SearchIndices, SearchResultObjectTypes, SearchResults } from 'libs/shared/apps/search/interfaces';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { UseProductsResponse } from 'libs/shared/hooks/UseProducts';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { Video } from 'libs/shared/interfaces';\n\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { ExchangeGroupingType, useGroupExchangeResults } from './useGroupExchangeResults';\n\nexport const namespace = 'search.utils';\n\ninterface UseGetSearchResultsOptions {\n queryParams: HashObject;\n appliedIndices: SearchIndices[];\n backendFilters: HashObject;\n products: UseProductsResponse;\n settings: SettingsHash;\n hasDataLoaded: boolean;\n exchangeLibraryId: string;\n showExchangeSearchResults: boolean;\n}\nexport function useGetSearchResults(options: UseGetSearchResultsOptions) {\n const { queryParams, appliedIndices, backendFilters } = options;\n\n const alerts = useAlerts();\n const fetch = Flight.useGetFetch();\n\n const searchResultsResponse = Flight.useGetResponse<SearchResults>(getSearchRequest()?.key);\n const hasExchangeLibraryFilter = hasLibraryFilter(options.exchangeLibraryId?.toString());\n const fetchMixedExchangeResults = (\n options.hasDataLoaded &&\n appliedIndices?.length &&\n options.showExchangeSearchResults &&\n !hasExchangeLibraryFilter\n );\n const mixedExchangeSearchResults = Flight.useBasicFetch<SearchResults>(\n fetchMixedExchangeResults && getMixedExchangeSearchRequest()\n );\n\n function hasLibraryFilter(libraryId: string): boolean {\n if (!libraryId) return false;\n\n return options.backendFilters?.[`${FilterConstants.FILTER_PARAM_PREFIX}library`]\n ?.some?.((l: string) => l.toString() === libraryId);\n }\n\n function getMixedExchangeSearchRequest() {\n return SharedSearchRequests.searchV4(\n queryParams.query,\n appliedIndices,\n backendFilters,\n queryParams.allowSubstitute !== 'false',\n null,\n 10\n );\n }\n\n function getSearchRequest(cursor?: string) {\n if (!options.hasDataLoaded || !appliedIndices?.length) return;\n\n let backendFilters = { ...options.backendFilters };\n\n if (options.showExchangeSearchResults && !hasExchangeLibraryFilter) {\n const excludeLibraryFilter = `${FilterConstants.FILTER_PARAM_PREFIX}excludeLibraryExclusive`;\n backendFilters = {\n ...backendFilters,\n [excludeLibraryFilter]: [ ...backendFilters[excludeLibraryFilter], options.exchangeLibraryId ]\n };\n }\n \n return SharedSearchRequests.searchV4(\n queryParams.query,\n appliedIndices,\n backendFilters,\n queryParams.allowSubstitute !== 'false',\n cursor\n );\n }\n\n function fetchNext(cursor?: string) {\n fetch(getSearchRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n const searchResults = useInfiniteList<SearchResultObjectTypes, SearchResults>(\n getSearchRequest,\n fetchNext,\n onError,\n data => data.results\n );\n\n function getExchangeGroupingType(): ExchangeGroupingType {\n if (!options.showExchangeSearchResults)\n return 'omit';\n\n return hasExchangeLibraryFilter ? 'untouched' : 'group';\n }\n\n const videos = searchResults.items?.filter(r => r._index === 'video' || r._index === 'clip');\n useVideoMixin(videos as Video[]);\n\n const items = useGroupExchangeResults({\n searchResults: searchResults.items,\n mixedExchangeSearchResults: mixedExchangeSearchResults.data?.results,\n searchResultsResponse: searchResultsResponse.data,\n groupingType: getExchangeGroupingType()\n });\n\n return {\n ...searchResults,\n hasFirstPageCompleted: searchResults.hasFirstPageCompleted || !options.hasDataLoaded || !appliedIndices?.length,\n items,\n fetchNext,\n substituteQuery: searchResultsResponse.data?.substituteQuery,\n suggestions: searchResultsResponse.data?.suggestions\n };\n}\n","import React from 'react';\n\nimport { ExchangeVideoGroup, SearchResultObjectTypes, SearchResults, SearchResultsObject } from 'libs/shared/apps/search/interfaces';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nexport type ExchangeGroupingType =\n 'omit' | // Don't show exchange results at all\n 'group' | // Group exchange results into a component\n 'untouched'; // Leave exchange results untouched\n\ninterface UseGroupExchangeResults {\n searchResults: SearchResultObjectTypes[];\n mixedExchangeSearchResults: SearchResultObjectTypes[];\n searchResultsResponse: SearchResults;\n groupingType: ExchangeGroupingType;\n}\n\nexport function useGroupExchangeResults(options: UseGroupExchangeResults) {\n return React.useMemo(() => {\n if (!options.searchResults?.length || !options.mixedExchangeSearchResults?.length || options.groupingType === 'untouched')\n return options.searchResults;\n\n const mixedExchangeResults: SearchResultObjectTypes[] = [...options.searchResults];\n const exchangeResults: SearchResultsObject<Video>[] = [];\n let exchangeIndex: number;\n let exchangeShowCount: number;\n let consecutive = false;\n\n options.mixedExchangeSearchResults.forEach((item, index) => {\n if (exchangeResults.length === 3) return;\n\n const isExchangeVideo = VideoHelper.isVideo(item) &&\n item.libraries.data?.length === 1 &&\n item.libraries.data?.[0]?.typeId === MasterType.ExchangeCollection;\n\n if (isExchangeVideo) {\n if (exchangeIndex === undefined) {\n exchangeIndex = index;\n exchangeShowCount = 0;\n consecutive = true;\n }\n\n if (consecutive)\n exchangeShowCount++;\n\n exchangeResults.push(item);\n return;\n }\n\n consecutive = false;\n });\n\n const exchangeVideoGroup: SearchResultsObject<ExchangeVideoGroup> = {\n id: null,\n type: null,\n name: null,\n videos: exchangeResults,\n showCount: exchangeIndex === 0 ? 1 : exchangeShowCount,\n isExchangeVideoGroup: true,\n _index: null\n };\n \n if (options.groupingType === 'group' && exchangeResults.length)\n mixedExchangeResults.splice(exchangeIndex, 0, exchangeVideoGroup);\n\n return mixedExchangeResults;\n }, [\n options.searchResultsResponse,\n options.searchResults?.length,\n options.mixedExchangeSearchResults,\n options.groupingType\n ]);\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'search.searchResultsEmptyState';\n\ninterface SearchResultsEmptyStateProps {\n query?: string;\n scotland?: boolean;\n}\n\nexport function SearchResultsEmptyState(props: SearchResultsEmptyStateProps): JSX.Element {\n const imageUrl = (props.scotland && props.query?.trim()?.toLowerCase() === 'nessie')\n ? ImageUrls.EmptyStates.Search.RESULTS_SCOTLAND\n : ImageUrls.EmptyStates.Search.RESULTS;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={imageUrl} />\n\n <EmptyState.Heading>\n {props.query\n ? <Text phrase='headingWithQuery' options={{ query: props.query }} />\n : <Text phrase='headingWithoutQuery' />\n }\n </EmptyState.Heading>\n\n <EmptyState.Info>\n <Text phrase='info' />\n <AppLink\n className='info-link'\n appLink={{ application: AppChannels.SUBJECT, action: Actions.Subjects.CLASSIFICATION_ALL }}\n >\n <Text phrase='topicsAppLink' />\n </AppLink>\n </EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, HashObject, LocationContext } from 'libs/analytics/interfaces';\n\nimport { MixedSearchResults } from 'libs/shared/apps/search/components/mixed-search-results/MixedSearchResults';\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { SearchSubstitute } from 'libs/shared/apps/search/components/search-substitute/SearchSubstitute';\nimport { SearchSuggestions } from 'libs/shared/apps/search/components/search-suggestions/SearchSuggestions';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\n\nimport { useFetchSearchData } from 'apps/search/hooks/useFetchSearchData';\nimport { useGetSearchResults } from 'apps/search/hooks/useGetSearchResults';\nimport { useGetTagsAndClassifications } from 'apps/search/hooks/useGetTagsAndClassifications';\nimport { useSearchMask } from 'apps/search/hooks/useSearchMask';\nimport { SearchHelper } from 'apps/search/utils';\n\nimport { SearchResultsEmptyState } from './empty-state/SearchResultsEmptyState';\n\nexport const namespace = 'search.searchResults';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SearchResultsView2Props {\n queryParams: HashObject\n}\n\nexport function SearchResultsView(props: SearchResultsView2Props): JSX.Element {\n const { queryParams = {} } = props;\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const { isPlugin } = usePluginHelper();\n const { hasTopicDirectories } = useSettings(null);\n\n const searchData = useFetchSearchData(queryParams);\n\n const searchFilters = SearchHelper.getBackendFilters(searchData);\n\n const hasIndices = !!searchFilters?.appliedIndices.length;\n const tagsAndClassifications = useGetTagsAndClassifications(hasIndices && searchFilters);\n const searchResults = useGetSearchResults({ ...searchFilters, ...searchData });\n\n const filters = SearchHelper.getFilters(\n searchData,\n searchFilters?.inaccessibleIndices,\n hasIndices && tagsAndClassifications\n );\n \n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: queryParams.query ?? '',\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n allowIndexing: false\n }));\n\n /**\n * Do we have the data we need for the entire view to render\n */\n const hasLoaded = (\n searchData.hasDataLoaded && filters\n );\n\n /**\n * Do we have the data we need to render our results\n */\n const hasSearchCompleted = (\n searchResults.hasFirstPageCompleted &&\n // Topic and Company requests won't exist if they aren't being fetched\n (!searchData.topics || searchData.topics.hasCompleted) &&\n (!searchData.companies || searchData.companies.hasCompleted) &&\n (!hasIndices || tagsAndClassifications.hasCompleted) &&\n !!filters\n );\n\n /**\n * Do we actually have results\n */\n const hasResults = (\n searchResults.items?.length ||\n searchData.topics?.data?.totalResults ||\n searchData.companies?.data?.totalResults\n );\n\n useSearchMask(hasSearchCompleted);\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <div className='px-4'>\n <SearchSubstitute\n substitute={searchResults.substituteQuery}\n queryParams={queryParams}\n getAppLink={SearchHelper.getSearchAppLink}\n />\n\n {!searchResults.substituteQuery && (\n <SearchSuggestions\n suggestions={searchResults.suggestions}\n queryParams={queryParams}\n getAppLink={SearchHelper.getSearchAppLink}\n />\n )}\n\n {(!!searchData.audiences.data && !!searchData.ratings.data && !!searchData.availableTopics.data) && (\n <SearchFilters\n queryParams={queryParams}\n mainFilters={filters?.mainFilters}\n moreFilters={filters?.moreFilters}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.SearchFilters\n }}\n appLink={{ application: AppChannels.SEARCH, action: Actions.Search.HOME }}\n isFetchingOptions={tagsAndClassifications.isFetching}\n />\n )}\n\n {hasSearchCompleted &&\n <section>\n {hasResults\n ? (\n <VideoActionsContext.Provider value={videoActions}>\n <MixedSearchResults\n queryParams={queryParams}\n results={searchResults.items}\n topics={searchData.topics?.data}\n companies={searchData.companies?.data}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n audiences={!queryParams.moviesAndTv && searchData.audiences.data}\n currentUser={searchData.currentUser.data}\n imageCdnUrl={searchData.config.data.imageCdnUrl}\n availablePresentations={searchData.availablePresentations}\n showActions={(!searchData.isLearner && searchData.canUseSeriesActions)}\n hasPermissions={searchData.hasPermissions}\n yearGroups={searchData.yearGroups.data}\n isPlugin={isPlugin}\n appLinks={SearchHelper.getAppLinks(\n searchData.currentPresentation,\n searchData.availablePresentations,\n queryParams.moviesAndTv\n )}\n hasTopicDirectories={hasTopicDirectories}\n subTextType='series'\n />\n </VideoActionsContext.Provider>\n ) : (\n <SearchResultsEmptyState\n query={queryParams.query}\n scotland={!!searchData.currentPresentation?.description?.toLowerCase().includes('scotland') ?? false}\n />\n )\n }\n {/* XOR */}\n {(searchResults.hasMore || searchResults.isFetching) && (\n <InfiniteScrollFooter\n isFetching={searchResults.isFetching}\n fetchNext={searchResults.fetchNext}\n nextCursor={searchResults.nextCursor}\n fetchOnScroll\n />\n )}\n </section>\n }\n </div>\n );\n}","import { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedSearchRequests } from 'libs/shared/apps/search/flight-requests/SharedSearchRequests';\nimport { SearchIndices } from 'libs/shared/apps/search/interfaces';\n\nexport interface UseGetTagsAndClassificationsOptions {\n queryParams: HashObject;\n appliedIndices: SearchIndices[];\n backendFilters: HashObject;\n}\n\nexport function useGetTagsAndClassifications(options: UseGetTagsAndClassificationsOptions) {\n return Flight.useBasicFetch<string[]>(options && SharedSearchRequests.tagsAndClassifications(\n options.queryParams.query,\n options.appliedIndices,\n options.backendFilters\n ));\n}\n","import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nexport function useSearchMask(hasCompleted: boolean): void {\n const [ showMask, setShowMask ] = useViewModel(ViewModelKeys.SHOW_SEARCH_MASK, true);\n\n React.useEffect(() => {\n showMask && hasCompleted && setShowMask(false);\n }, [hasCompleted]);\n}\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { Rating } from 'libs/shared/interfaces';\n\nexport const RatingRequests = {\n ratings(countryCode?: string): Flight.PublicRequest {\n return {\n url: '/api/domain/v2/me/ratings',\n publicUrl: UrlHelper.urlBuilder('/api/domain/v2/me/ratings', { countryCode }),\n key: 'ratings',\n // v2/me/ratings doesn't support `query={orderby:value}`. Adding this due to time constraints\n formatData: (ratings: Rating[]) => {\n return ratings.sort((a, b) => a.value - b.value);\n }\n };\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Clip, ClipCollection, CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const hydratedVideos = React.useRef<Set<string>>(new Set<string>());\n\n const videos = getValidObjects(objects);\n\n const videoIds = videos.map(v => v.id);\n\n const [ request, setRequest ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!videoIds?.length || !currentUser.hasCompleted)\n return;\n\n const unhydratedVideos: string[] = [];\n\n videoIds.forEach(id => {\n if (!hydratedVideos.current.has(id)) {\n unhydratedVideos.push(id);\n hydratedVideos.current.add(id);\n }\n });\n \n if (!unhydratedVideos.length)\n return;\n\n setRequest(r => {\n const newRequests = [\n ...r,\n VideoRequests.videoMixinAssocs(unhydratedVideos, options.flightNamespace)\n ];\n\n if (currentUser.data?.isAuthenticated)\n newRequests.push(ClassificationRequests.hasCurriculumLinks(unhydratedVideos, null, options.flightNamespace));\n\n return newRequests;\n });\n }, [ videoIds?.length, currentUser.hasCompleted ]);\n\n Flight.useBasicFetchAll(request);\n}"],"names":["InfiniteScrollFooter","props","ref","inView","fetchOnScroll","isFetching","fetchNext","nextCursor","className","Spinner","as","animation","role","SvgContainer","svgName","size","S","onClick","defaultProps","WidgetButtonDirection","getPhrase","LanguageService","WidgetButton","isLeft","direction","Left","arrowSvg","hide","style","state","contents","paddingBottom","viewableItems","height","useGradientBackdrop","leftGradientClassName","rightGradientClassName","hideExtendedClickableArea","tabIndex","leftButtonClassName","rightButtonClassName","hoverText","SCROLL_TOLERANCE","useInfiniteList","getRequest","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","key","fetchNextPage","currentVal","hasMore","getBoundingClientRect","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","statusCode","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","CompanyWidgetItem","analyticsData","id","data","name","analyticsOptions","location","actionType","entity","descriptor","CoverPill","coverUrl","logo","url","CompanyResult","Col","sm","md","useLargeStyle","lg","item","getChildAppLink","appLinks","getCompanyAppLink","getChildAppLinkOptions","getCompanyAppLinkOptions","itemIndex","search","query","queryParams","score","_score","maxScore","_maxScore","featured","_featured","pagePositionIndex","isLarge","namespace","ExchangeVideoGroup","limit","showCount","currentAppLink","currentParams","params","currentSource","source","Array","isArray","searchAppLink","AppLink","appLink","Text","phrase","searchSettings","videos","slice","map","v","i","VideoItem","video","yearGroups","getVideoAppLink","getSubTextAppLink","presentationAudiences","audiences","setFavourite","canFavourite","companyLogoFallbackUrl","subTextType","hasPermissions","getClassroomGuideAppLink","getResourceGuidanceAppLink","getInteractiveGuidanceAppLink","isPlugin","FeaturedVideoResult","HeroVideo","opts","subTextAppLink","hideInteractiveBadge","showVideoGuidance","VideoHelper","imageCdnUrl","PlaylistWithVideos","breakpoints","maxVideos","useBreakpoints","xl","xxl","playlist","playlistAnalyticsOption","playlistAnalyticsData","Row","xs","playlistAppLink","bgColourClassNames","itemStyle","currentUser","showOwner","videoAnalyticsData","videoId","videoName","hideVideoGuidance","LargePlaylistResult","getPlaylistAppLink","preloadImage","SeriesWithVideos","series","seriesAnalyticsOption","seriesAnalyticsData","seriesAppLink","SeriesTallPoster","imageClass","LargeSeriesResult","getSeriesAppLink","CollectionVideoList","analyticsProps","hasSeasonEpisode","episodeNumber","season","collectionId","CollectionThumbnail","isSmall","VideoListHelper","hasVideos","collection","length","firstVideoWithThumbnail","find","thumbnail","isSeries","collectionType","BaseImage","imageType","Mask","type","maskType","ImageFallback","imageFallbackType","Actions","actions","getCollectionActions","showActions","actionsDropdownClassName","hideBadges","BadgeListContainer","Badge","rating","metadata","year","SmallPlaylistResult","SmallSeriesResult","SubjectResult","getClassificationAppLink","getClassificationAppLinkOptions","availablePresentations","highlightOnHover","hasTopicDirectories","VideoResult","Component","ClipItem","InteractiveItem","getPreviewQuestionsAppLink","MixedSearchResults","useSmallComponent","results","topics","totalResults","companies","companiesAndTopics","childProps","c","toLowerCase","result","index","isExchangeVideoGroup","tallPoster","SearchSubstitute","substitute","getAppLink","appLinkOptions","replace","allowSubstitute","SearchSuggestions","suggestions","suggestion","formatSearchResponse","filter","_index","clips","interactives","resultMaxScore","SharedSearchHelper","SharedSearchRequests","searchV4","indicesArr","filters","Object","keys","filterName","join","FilterConstants","excludeLibraryExclusive","isLearner","genericFilters","searchType","indices","entries","reduce","prev","value","undefined","publicUrl","HttpVerbs","formatData","success","error","assign","UrlHelper","tagsAndClassifications","normalize","TEACHER_FILTERS","STUDENT_FILTERS","useFetchSearchData","UserRequests","userDetails","config","ConfigRequests","isAuthenticated","CustomerRequests","customerId","products","settings","useSettings","streamableLibrary","LibraryRequests","streamableLibraryId","objectId","showExchangeSearchResults","hasProduct","ProductId","librariesRequest","libraries","exchangeLibraryIndex","findIndex","l","MasterObjectTypes","exchangeLibraryId","streamableIndex","hasLibrariesCompleted","hasCompleted","useGetLibraries","usePresentation","activePresentation","getFallbackPresentation","hasPresentationsLoaded","currentPresentation","currentPresentationId","curriculums","useCurriculums","usePresentationAudiences","schoolLevels","presentation","usePermissions","PermissionName","presentationIds","o","SearchRequests","useFetchSchoolLevels","schoolLevelIds","availableTopics","ClassificationRequests","ratings","RatingRequests","countryCode","TopicsHelper","learningLevel","PresentationLearningLevel","code","useGetRatings","hasLocalPermissions","canViewCurriculums","canUseSeriesActions","hasCustomLibraries","hasMoviesAndTv","presentationId","isStudent","rawFilters","FilterHelper","ObjectHelper","ClassificationType","ClassificationStatus","moviesAndTv","CurationTag","presentationMap","acc","hasFilteredOutTopics","includes","shouldFetch","sortedResults","sort","a","b","presentationA","presentationB","useSearchTopics","availablePresentationIds","p","hasFilteredOutCompanies","useSearchCompanies","moviesAndTvDashboard","targetType","dashboard","hasDataLoaded","isLoadingProducts","isLoadingSettings","useGetSearchResults","appliedIndices","backendFilters","alerts","fetch","searchResultsResponse","getSearchRequest","hasExchangeLibraryFilter","libraryId","some","hasLibraryFilter","fetchMixedExchangeResults","mixedExchangeSearchResults","excludeLibraryFilter","searchResults","pageNumber","httpStatus","r","useVideoMixin","groupingType","exchangeIndex","exchangeShowCount","mixedExchangeResults","exchangeResults","consecutive","forEach","typeId","MasterType","push","exchangeVideoGroup","splice","useGroupExchangeResults","substituteQuery","SearchResultsEmptyState","imageUrl","scotland","trim","ImageUrls","EmptyState","src","application","action","SearchResultsView","videoActions","useVideoActions","useLiteFavourites","u","usePluginHelper","searchData","searchFilters","hasIndices","inaccessibleIndices","useSetPageMetadata","PageMetadataHelper","title","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","allowIndexing","showMask","setShowMask","hasLoaded","hasSearchCompleted","hasResults","SearchFilters","mainFilters","moreFilters","isFetchingOptions","VideoActionsContext","description","redirectOnError","objects","hydratedVideos","Set","getValidObjects","videoIds","setRequest","unhydratedVideos","current","has","add","newRequests","flightNamespace"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 3999-317a4538c6-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3999],{7870:(e,t,n)=>{n.d(t,{N:()=>c});var a=n(97395),i=n(75896),r=n(110),o=n(40424),c={calendarEvents:function(e,t,n){return{url:a._.urlBuilder("{gateway}/v1/discover/special-events/content",{from:e,to:t,presentationId:n}),publicUrl:a._.urlBuilder("/api/discover/special-events/content",{from:e,to:t,presentationId:n}),key:"presentation:".concat(n,":events:from:").concat(e,":to").concat(t)}},nextTopicSpecialEvent:function(e,t){var n={presentationId:t,limit:1,from:r.O.format(new Date,"YYYY-MM-DD"),objectType:o.VH.Classification};return{url:a._.urlBuilder("{gateway}/v1/discover/special-events/object/".concat(e,"/next-events"),n),publicUrl:a._.urlBuilder("/api/discover/special-events/object/".concat(e,"/next-events"),n),key:"presentation:".concat(t,":events:classification:").concat(e),formatData:function(e){return i.m.first(e)}}}}},69395:(e,t,n)=>{n.d(t,{e:()=>s});var a=n(32735),i=n(23481),r=n(91967);const o={disabled:"pERi4",disabledHighlighted:"AxyWm"};var c=i.T.encloseNamespace("shared.audienceItem");function s(e){var t=e.audience,n=e.highlight,i=e.setAudience,s=e.isDisabled,l=e.extraClasses,u=function(e,t){return e?t?"".concat(o.disabledHighlighted," text-light"):"bg-gray-900 text-light":t?"".concat(o.disabled," text-secondary"):"bg-light"}(n,s),d="rounded-pill d-inline-block me-1 user-select-none ".concat(s?"cursor-default":"cursor-pointer"," ").concat(u," ").concat(l);return a.createElement("button",{className:d,onClick:function(){!s&&r.q.isFunction(i)&&i(t,!n)},role:"checkbox","aria-checked":n,"aria-label":"".concat(c("ariaFilter")," ").concat(t.name)},t.name.split(" ").map((function(e){return e.charAt(0).toUpperCase()+e.substring(1)})).join(" "))}s.defaultProps={extraClasses:""}},28046:(e,t,n)=>{n.d(t,{l:()=>f,v:()=>m});var a=n(39479),i=["pdf"],r=["doc","docx","dotx","dot","rtf","docm","odt"],o=["csv","txt"],c=["xls","xlt","xlsx"],s=["jpg","tif","png","bmp","gif","jpeg"],l="video/*",u=["zip","rar"],d=["ppt","pot","pps","pptx"],p=["srt"],f={IMAGES:".".concat(s.join(",.")),VIDEO:l,MIXED_MEDIA:".".concat(s.join(",."),",").concat(l),RESOURCES:".".concat([].concat(r,c,d,i,o,s,u).join(",.")),SUBTITLES:".".concat(p.join(",."))},m={getResourceType:function(e){var t=e.toLowerCase();return a.contains(r,t)?"document":a.contains(c,t)?"excel":a.contains(d,t)?"powerpoint":a.contains(i,t)?"pdf":a.contains(o,t)?"text":a.contains(s,t)?"image":a.contains(u,t)?"archive":a.contains(p,t)?"subtitle":""}}},38502:(e,t,n)=>{n.d(t,{r:()=>d});var a=n(32735),i=n(49985),r=n(36848),o=n(18559),c=n(11607),s=n(83914),l=n(87432);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function d(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(r.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&i.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}d.defaultProps={borderRadius:"lg"}},75838:(e,t,n)=>{n.d(t,{w:()=>l});var a=n(32735),i=n(92869),r=n(65858),o=n(36848),c=n(11607);const s={itemsWrapper:"m6mGm",anchorWrapper:"QptZj",default:"_AZa8",selectedItem:"Nuiel",disabled:"WIzWJ",floatIcon:"ARudn",arrowIcon:"tEF5Q",listIcon:"Ql2wi"};function l(e){var t={actionType:r.Vw.Click,entity:r.py.Widget,location:r.LZ.TableOfContents};function n(t){var n;i.t.preventScrollTop(),e.setControlledId(t.id),null===(n=e.onItemClick)||void 0===n||n.call(e,t),setTimeout((function(){var e;return null===(e=document.getElementById(t.id))||void 0===e?void 0:e.focus()}))}return a.createElement("div",{className:"".concat(s.itemsWrapper)},e.items.map((function(i,r){return e.localState?a.createElement(c.L,{key:i.id,className:"".concat(s.anchorWrapper," ").concat(e.activeId===i.id?s.selectedItem:""),onClick:function(){n(i)}},a.createElement("div",{className:"".concat(e.activeId||0!==r?"":s.default," ")},i.name)):a.createElement(o.F,{key:i.id,appLink:e.getAppLink(i),appLinkOptions:{replace:!0},className:"".concat(s.anchorWrapper," ").concat(e.activeId===i.id?s.selectedItem:""),onClick:function(){n(i)},analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:i.id,name:i.name}),analyticsOptions:t},a.createElement("div",{className:"".concat(e.activeId||0!==r?"":s.default," ").concat(i.tocIndentation?"ms-3":"")},i.name))})))}},17101:(e,t,n)=>{var a;n.d(t,{n:()=>a}),function(e){e[e.Other=0]="Other",e[e.SuggestImprovement=1]="SuggestImprovement",e[e.ReportBug=2]="ReportBug",e[e.RequestVideo=3]="RequestVideo",e[e.RaiseIssue=4]="RaiseIssue",e[e.GivePraise=5]="GivePraise",e[e.Footer=6]="Footer",e[e.RequestLivestream=7]="RequestLivestream"}(a||(a={}))},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),i=n(81886),r=n(67058),o=n(14553),c=n(49267),s=n(49075),l={notFound:r.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var r;r="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},l),t);r&&i.Q.Ry.isStatusCodeError(r)&&(r!==a.o.NotFound?r!==a.o.Forbidden?n.badRequest||i.Q.Ry.throw(new o.badRequest):n.forbidden||i.Q.Ry.throw(new o.forbidden.privacy):n.notFound||i.Q.Ry.throw(new o.notFound))}}},7198:(e,t,n)=>{n.d(t,{f:()=>i});var a=n(99940),i={submitFeedback:function(e,t){return{url:"{gateway}/v1/feedback",key:"submit:feedback",type:a.k.POST,data:Object.assign(Object.assign({},e),t)}}}},25665:(e,t,n)=>{n.d(t,{k:()=>s});var a=n(99940),i=n(97395);function r(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var c=function(e){return i._.urlBuilder("/api/domain/v1/subjects/classifications/following",{id:e})},s={follow:function(e,t,n,i){return{url:"/api/domain/v1/subjects/classifications/following",key:"follow:".concat(e.join(",")),type:a.k.POST,data:e,formatData:function(){return e.map((function(e){return{id:e,followers:{data:[t]}}}))},success:n,error:i,invalidationKeys:[].concat(r(e.map((function(e){return"classification:".concat(e)}))),["my:subject:preferences","classifications"])}},unfollow:function(e,t,n,i){return{url:c(e),key:"unfollow:".concat(e.join(",")),type:a.k.DELETE,formatData:function(){return e.map((function(e){return{id:e,followers:{data:[]}}}))},success:n,error:i,invalidationKeys:[].concat(r(e.map((function(e){return"classification:".concat(e)}))),["my:subject:preferences","classifications"])}}}},91286:(e,t,n)=>{n.d(t,{v:()=>o});var a=n(32735),i=n(94644);function r(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,a.useEffect)((function(){o.forEach((function(e){(0,i.r)(e.statusCode,t,n)}))}),[r(o),t,n])}},94631:(e,t,n)=>{n.d(t,{D:()=>i});var a=n(32735);function i(e){var t=a.useRef();return a.useEffect((function(){t.current=e})),t.current}},65332:(e,t,n)=>{n.d(t,{D:()=>r});var a,i=n(32735),r=function(e){var t=e.setActiveId,n=e.headingElements,r=e.controlledId,o=e.setControlledId,c=i.useRef(0);i.useEffect((function(){var e=new IntersectionObserver((function(e){e.forEach((function(e){if(r)return t(r),void(a=window.setTimeout((function(){o("")}),800));if(e.isIntersecting)t(e.target.id),c.current=window.scrollY;else{var i=c.current-window.scrollY>0,s=n.findIndex((function(t){return t.id===e.target.id})),l=n[s-1];i&&(null==l?void 0:l.id)&&t(null==l?void 0:l.id)}}))}),{rootMargin:"-67px 0px -80% 0px"});return n.forEach((function(t){return e.observe(t)})),function(){a&&window.clearTimeout(a),e.disconnect()}}),[t,n.length,r])}},76196:(e,t,n)=>{n.d(t,{P:()=>o});var a=n(32735),i=n(94631);function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var o=function(e,t){var n,o,c=(n=a.useState(!1),o=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(n,o)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(n,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=c[0],l=c[1],u=(0,i.D)(t),d=t;a.useLayoutEffect((function(){if(!s||u!==d){var t=e.find((function(e){return e&&(null==e?void 0:e.id)===d}));if(t){var n=t.getBoundingClientRect();window.scrollBy({top:n.top-80,behavior:"smooth"}),s||l(!0)}}}),[e,u,d,s])}},52167:(e,t,n)=>{n.d(t,{m:()=>l});var a=n(53301),i=n.n(a),r=n(28046),o=n(19808),c=n(86613);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var l={getUserInfo:function(e,t){return{id:e.id,username:e.username,email:e.email,userType:e.role===c.i.Admin?"Admin":"Staff",customerId:e.customerId,cvcId:t.crmId,customerName:t.name,instanceRegion:e.instanceRegion,contentRegion:e.contentRegion,firstName:e.givenName,lastName:e.familyName}},mapInstanceRegionToTag:function(e){switch(e){case o.b.AU:return"au";case o.b.NZ:return"nz";case o.b.UK:return"uk";case o.b.US:return"us"}},getTags:function(e,t,n,a){var i,r=[t].concat(function(e){if(Array.isArray(e))return s(e)}(i=a)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());r.push(n?"student":"staff"),e.role===c.i.Admin&&r.push("administrator");var o=l.mapInstanceRegionToTag(e.instanceRegion);return o&&r.push(o),r},categorizeFiles:function(e){return e.reduce((function(e,t){var n=t.get("fileInfo");return i().isValidFile(t.get("file"),r.l.VIDEO)?e.videoUrls.push(null==n?void 0:n.url):e.imageUrls.push(null==n?void 0:n.url),e}),{imageUrls:[],videoUrls:[]})}}},6812:(e,t,n)=>{n.r(t),n.d(t,{CuratedClassificationView:()=>Nt});var a=n(32735),i=n(39202),r=n(23481),o=n(20354),c=n(49985),s=n(65858),l=n(7870),u=n(83345),d="subject.classificationHeaderDetails",p=function(e){var t=e.className;return a.createElement("span",{className:t},"•")};function f(e){var t=e.classification,n=t.childDashboardVideoCount,i=t.childDashboardResourceCount,r=t.childClassificationCount;return a.createElement("p",{className:"mb-n1 font-size-normal fw-normal mt-1"},!!r&&a.createElement(u.x,{namespace:d,phrase:"topics",options:{count:r.toLocaleString(),smartCount:r}}),!!n&&a.createElement(a.Fragment,null,a.createElement(p,{className:"mx-2"}),a.createElement(u.x,{namespace:d,phrase:"videos",options:{count:n.toLocaleString(),smartCount:n}})),!!i&&a.createElement(a.Fragment,null,a.createElement(p,{className:"mx-2"}),a.createElement(u.x,{namespace:d,phrase:"resources",options:{count:i.toLocaleString(),smartCount:i}})))}var m=n(23232),v=n(76177),g=n(40424),y=n(35223),h="subjects.curatedClassificationEmptyState",b=r.T.encloseNamespace(h);function w(e){var t,n,i=(null===(t=e.dashboard)||void 0===t?void 0:t.status)===g.GL.Archived;return a.createElement(u.D.Provider,{value:h},a.createElement(m.u,null,a.createElement(m.u.Image,{src:e.imageUrl,altText:b("headingForNP")}),e.isReadonly?a.createElement(a.Fragment,null,a.createElement(m.u.Heading,null,a.createElement(u.x,{namespace:h,phrase:"headingForCurator"})),a.createElement(m.u.Info,null,a.createElement(u.x,{namespace:h,phrase:"info"})),a.createElement(v.u,{title:i?r.T.getPhrase(h,"archivedCtaTooltip"):"",spanHack:!0},a.createElement(m.u.Cta,{text:r.T.getPhrase(h,"add"),appLink:null===(n=e.addWidgetApplink)||void 0===n?void 0:n.call(e),className:"btn btn-dark",icon:y.vn.Plus,disabled:i}))):a.createElement(m.u.Heading,null,a.createElement(u.x,{phrase:"headingForNP"}))))}var S=n(10874),E=n(75838),T=n(75795);const k={container:"k1iOO",mobile:"QwoBj"};function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function L(e){var t,n,i=(t=a.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return I(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?I(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=i[0],o=i[1];return a.createElement("div",{className:"".concat(k.mobile," d-inline-flex gap-1")},r&&a.createElement("div",{className:"bg-white px-3 pt-3 pb-2 border border-dark rounded-1 ps-3"},a.createElement("h2",{className:"h5"},e.title),a.createElement(E.w,{items:e.widgets.map((function(e){return{name:e.name,id:e.id,tocIndentation:e.metadata.tocIndentation}})),activeId:e.activeId,appLink:e.appLink,analyticsData:e.analyticsData,setControlledId:e.setControlledId,getAppLink:e.getAppLink,onItemClick:function(){return o(!1)}})),a.createElement("div",{className:k.container},a.createElement(S.h,{className:"btn btn-outline-dark",svgName:y.vn.TableOfContents,onClick:function(){var t;o(!r),t={actionType:r?s.Vw.Hide:s.Vw.Open,entity:s.py.TableOfContents,location:s.LZ.Dashboard},c.k.logUserAction(e.analyticsData,t)}})))}function C(e){return a.createElement("aside",{className:"col-3 order-1"},a.createElement("div",{className:"".concat(k.container," ps-3")},a.createElement("h2",{className:"h5"},e.title),a.createElement(E.w,{items:e.widgets.map((function(e){return{name:e.name,id:e.id,tocIndentation:e.metadata.tocIndentation}})),activeId:e.activeId,appLink:e.appLink,analyticsData:e.analyticsData,setControlledId:e.setControlledId,getAppLink:e.getAppLink})))}function A(e){function t(e){var t=T.O.getCurrentRoute().appLink,n=t.params?Object.assign({},t.params):{};return n.tocId=e.id,Object.assign(Object.assign({},t),{params:n})}return a.createElement(a.Fragment,null,e.isSmallScreen?a.createElement(L,Object.assign({},e,{getAppLink:t})):a.createElement(C,Object.assign({},e,{getAppLink:t})))}var x="subjects.teacherOnlyEmptyState",O=r.T.encloseNamespace(x);function j(e){var t;return a.createElement(u.D.Provider,{value:x},a.createElement(m.u,null,a.createElement(m.u.Image,{src:e.imageUrl,altText:O("heading")}),a.createElement(m.u.Heading,null,a.createElement(u.x,{phrase:"heading"})),a.createElement(m.u.Info,null,a.createElement(u.x,{phrase:"info"})),a.createElement(m.u.Cta,{text:O("cta"),appLink:null===(t=e.ctaAppLink)||void 0===t?void 0:t.call(e),className:"btn btn-dark"})))}var P=n(75896),N=n(42308),F=n(80889),D=n(21366),U=n(44522),R=n(13231),B=n(88513),_=n(32624),G=n(86764),V=n(16714),W=n(78479),M=n(3747),H=n(65332),q=n(76196),Z=n(87114),Q=n(42735),z=n(36848),$="subjects.classificationComingSoon",Y=r.T.encloseNamespace($);function J(e){var t,n,i=!!(null===(n=null===(t=e.data.followers)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length);return a.createElement(u.D.Provider,{value:$},a.createElement(m.u,{className:"pt-0"},a.createElement(m.u.Image,{src:e.imageUrl,altText:Y("comingSoon")}),a.createElement(m.u.Heading,null,a.createElement(u.x,{phrase:"comingSoon"})),a.createElement(m.u.Info,null,a.createElement(u.x,{phrase:e.showSignUp?"infoAnon":"info"})),e.canFollowSubjects&&a.createElement(Q.K,{svgName:i?y.vn.BellFilled:y.vn.Bell,onClick:function(){var t;null===(t=e.onToggleFollow)||void 0===t||t.call(e)},showSpinner:e.showFollowButtonSpinner,className:"btn follow-btn me-2 ".concat(i?"btn-outline-dark":"btn-dark")},a.createElement(u.x,{phrase:i?"following":"follow"})),e.showSignUp&&!e.canFollowSubjects&&a.createElement(z.F,{appLink:e.signUpAppLink,className:"btn btn-dark d-none d-lg-inline-block",analyticsOptions:{actionType:s.Vw.Click,location:s.LZ.ClassificationComingSoon,entity:s.py.AppLink,workflowPhase:s.eu.Start,descriptor:s.Yu.SignUp},analyticsData:{},tag:"button"},Y("signUp"))))}var K=n(49935),X=n(79967),ee=n(69454),te=n(57900),ne=n(81886),ae=n(2948),ie=n(1048),re=n(69395),oe=n(11607),ce=n(38143),se=n(5859);function le(e,t){if(e){if("string"==typeof e)return ue(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ue(e,t):void 0}}function ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var de="subjects.audienceFilter";function pe(e){var t,n,i=e.audiences,r=e.activeAudiences,o=e.appLink,c=e.disabled||!o,s=(t=(0,ae.D)(ce.g.AUDIENCE_FILTER,void 0,{storage:te.Z1.SessionStorage}),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(t,n)||le(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1];function l(e,t){var n;if(!c){var a,i=t?[].concat(function(e){return function(e){if(Array.isArray(e))return ue(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||le(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(null!==(n=null==r?void 0:r.map((function(e){return e.name})))&&void 0!==n?n:[]),[e.name]):r.map((function(e){return e.name})).filter((function(t){return t!==e.name}));ne.Q.C$.trigger(Object.assign(Object.assign({},o),{params:(a=ie.t.omit(o.params,["a"]),i.length?Object.assign({},a,{a:i}):a)}),{replace:!0})}}return a.useEffect((function(){e.disablePersist||s(r)}),[r]),i&&i.length?a.createElement("div",{className:"d-flex flex-wrap row-gap-2"},i.map((function(e){return a.createElement(re.e,{key:e.masterId,audience:e,highlight:!c&&!!(null==r?void 0:r.find((function(t){return t.masterId===e.masterId}))),setAudience:l,isDisabled:c})})),!c&&!!r&&!!Object.keys(r).length&&a.createElement(oe.L,{className:"info-link d-inline-block ms-1",onClick:function(){if(!c){var e=ie.t.omit(o.params,["a"]);ne.Q.C$.trigger(Object.assign(Object.assign({},o),{params:e}),{replace:!0})}}},a.createElement(u.x,{namespace:de,phrase:"clear"}))):a.createElement(a.Fragment,null)}var fe=se.u.getPartialLoadingItems({numItems:6}),me=function(){return a.createElement("div",{className:"d-flex flex-wrap row-gap-2"},fe.map((function(e,t){var n=e.width;return a.createElement("span",{key:t,className:"rounded-pill partial-loading-background me-1",dangerouslySetInnerHTML:{__html:" "},style:{width:n}})})))};function ve(e){return a.createElement(pe,{audiences:e.audiences,activeAudiences:e.activeAudiences,disabled:e.isReadonly,appLink:e.appLink,disablePersist:e.disablePersist})}var ge=n(38502),ye=n(10253),he=n(30064);const be={curatedTopicTab:"CmVlO",tabTransition:"rX31t"};var we="shared.classificationDashboard";function Se(e,t,n,a){var i,o,c,l,u,d,p,f,m,v,g,h,b,w,S,E,T,k=t.lg||t.xl||t.xxl||t.xs;return Z.i.isTopLevelTopic(e.classification)?[{name:k?r.T.getPhrase(we,"newReleases"):"",appLink:e.isReadonly?null:null===(o=null===(i=e.appLinks)||void 0===i?void 0:i.classification)||void 0===o?void 0:o.call(i,e.classification),active:"new-releases"===n,svgName:y.vn.Sparkle,analyticsData:{id:"new-releases",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:r.T.getPhrase(we,"newReleases"),url:ne.Q.C$.getHref(null===(l=null===(c=e.appLinks)||void 0===c?void 0:c.classification)||void 0===l?void 0:l.call(c,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:"".concat(t.xs?"w-100":""," ").concat(a?be.tabTransition:"")},{name:k?r.T.getPhrase(we,"allTopics"):"",appLink:e.isReadonly?null:null===(d=null===(u=e.appLinks)||void 0===u?void 0:u.classificationDirectory)||void 0===d?void 0:d.call(u,e.classification),active:"all-topics"===n,svgName:y.vn.Grid,analyticsData:{id:"all-topics",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:r.T.getPhrase(we,"allTopics"),url:ne.Q.C$.getHref(null===(f=null===(p=e.appLinks)||void 0===p?void 0:p.classificationDirectory)||void 0===f?void 0:f.call(p,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:"".concat(t.xs?"w-100":""," ").concat(a?be.tabTransition:"")}]:[{name:k?r.T.getPhrase(we,"topic"):"",appLink:e.isReadonly?null:null===(v=null===(m=e.appLinks)||void 0===m?void 0:m.classification)||void 0===v?void 0:v.call(m,e.classification),active:"curated-topic"===n,svgName:y.vn.Rectangles,analyticsData:{id:"curated-topic",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:r.T.getPhrase(we,"topic"),url:ne.Q.C$.getHref(null===(h=null===(g=e.appLinks)||void 0===g?void 0:g.classification)||void 0===h?void 0:h.call(g,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:(T=a?be.tabTransition:"",t.xs?T+" w-100":k?" ".concat(be.curatedTopicTab):T)},{name:k?r.T.getPhrase(we,"videoList"):"",appLink:e.isReadonly?null:null===(w=null===(b=e.appLinks)||void 0===b?void 0:b.classificationVideos)||void 0===w?void 0:w.call(b,e.classification),active:"video-list"===n,svgName:y.vn.WidgetSeries,analyticsData:{id:"video-list",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:r.T.getPhrase(we,"videoList"),url:ne.Q.C$.getHref(null===(E=null===(S=e.appLinks)||void 0===S?void 0:S.classificationVideos)||void 0===E?void 0:E.call(S,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:"".concat(t.xs?"w-100":""," ").concat(a?be.tabTransition:"")}]}function Ee(e){var t=(0,X.k)(),n=(0,he.d)(e.activeTab),i=n.tab,r=n.isHighlighting,o=(0,ye.c)("topics-directory-tab").setProductTipRef;return a.createElement(ge.r,{borderRadius:"sm",containerRef:function(e){return o(e)},className:t.xs?"w-100":"",listClassName:"d-flex flex-nowrap",tabs:Se(e,t,i,r)})}function Te(e){var t,n,i,r,o,c,s,l=(0,X.k)(),u=(r=e.audiences,o=e.activeAudiences,c=e.isEmpty,!!e.isComingSoon||!(!c||(null==o?void 0:o.length))||!ee.T.shouldShowAudiences(r));function d(){return!(!e.classification||!e.dashboard)&&!D.S.isSystemGeneratedDashboard(e.dashboard.widgets)&&(Z.i.isTopLevelTopic(e.classification)?e.hasTopicDirectoryDashboard:!!e.hasTopicVideosDashboard)}return a.createElement("div",{className:(s="d-flex flex-column py-3 mb-3",e.isComingSoon||(s+=" border-bottom"),!d()&&!u||l.xs?s+" row-gap-3":s)},a.createElement("div",{className:function(){if(u)return l.xs?"d-flex flex-column justify-content-between row-gap-3":"d-flex align-items-center justify-content-between";var e="";return e+="d-flex align-items-center justify-content-between mb-1",l.xs&&(e+=" row-gap-3 mb-0"),e}()},a.createElement(K.Oo,{breadcrumbs:null===(t=e.getBreadcrumbs)||void 0===t?void 0:t.call(e)}),d()&&u&&a.createElement(Ee,{classification:e.classification,activeTab:e.activeTab,appLinks:e.appLinks,presentation:e.presentation,isReadonly:e.isReadonly})),a.createElement("div",{className:function(){var e="d-flex align-items-end justify-content-between";return l.xs&&(e+=" row-gap-3 flex-wrap"),e}()},!u&&a.createElement(ve,{audiences:e.audiences,activeAudiences:e.activeAudiences,appLink:null===(i=(n=e.appLinks).audience)||void 0===i?void 0:i.call(n),isReadonly:e.isReadonly||e.disableAudiences,disablePersist:!e.isViewingCurrentPresentation}),d()&&!u&&a.createElement(Ee,{classification:e.classification,activeTab:e.activeTab,appLinks:e.appLinks,presentation:e.presentation,isReadonly:e.isReadonly})))}function ke(e){return ke="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ke(e)}function Ie(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Le(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Ce="shared.classificationDashboard";function Ae(e){return e.widgetId===N.z.Blurb&&e.templateId===W.f.Heading}function xe(e){return e.widgetId===N.z.CuratedClassifications||e.widgetId===N.z.Classifications}function Oe(e){var t,n,i,c=function(e,t){var n,i,r,c,s=a.useMemo((function(){return e?{isSystemGeneratedDashboard:D.S.isSystemGeneratedDashboard(e.widgets),systemGeneratedVideoWidget:e.widgets.find((function(e){return e.widgetId===N.z.ClassificationPinnedVideos}))}:{isSystemGeneratedDashboard:!1,systemGeneratedVideoWidget:null}}),[null==e?void 0:e.id]),l=s.isSystemGeneratedDashboard,u=s.systemGeneratedVideoWidget,d=o.a.useBasicFetch(!!u&&F._.dashboardWidgetContent(null==u?void 0:u.id,D.S.getWidgetParams(u.widgetId,u.templateId,D.S.getDashboardTargetType(e),null==t?void 0:t.map((function(e){return e.masterId}))),null==u?void 0:u.templateId));return l?{widgets:null!==(i=null===(n=null==e?void 0:e.widgets)||void 0===n?void 0:n.filter((function(e){return e.widgetId!==N.z.ClassificationPinnedVideos})))&&void 0!==i?i:[],videoList:null!==(c=null===(r=d.data)||void 0===r?void 0:r.content)&&void 0!==c?c:[],videoListWidgetId:null==u?void 0:u.id}:{widgets:P.m.sortBy(null==e?void 0:e.widgets,"index")}}(e.dashboard,e.activeAudiences),l=c.widgets,u=c.videoList,d=c.videoListWidgetId,p=(0,M.a)(G.r.LGDown),m=a.useRef(new Set),v=a.useMemo((function(){return l.reduce((function(e,t){return e[t.id]=!1,e}),{})}),[null==l?void 0:l.length]),y=Ie(a.useState(v),2),h=y[0],b=y[1],S=Ie(a.useState(e.tableOfContentsId),2),E=S[0],T=S[1],k=Ie(a.useState(""),2),I=k[0],L=k[1],C=Array.from(m.current);function x(t,n,a){var i,r=D.S.getWidgetParams(n,a,D.S.getDashboardTargetType(e.dashboard),null===(i=e.activeAudiences)||void 0===i?void 0:i.map((function(e){return e.masterId})));return e.getWidgetContentRequest(t,r,a)}(0,q.P)(C,E),(0,H.D)({setActiveId:L,headingElements:C,controlledId:E,setControlledId:T});var O=!e.isComingSoon&&!e.isTeacherOnly&&(!e.dashboard||e.dashboard.status===g.GL.Archived&&!e.isReadonly||e.dashboard.status===g.GL.Draft&&!e.isPreviewing||!(null==l?void 0:l.length)||(!u||!u.length)&&Object.values(h).every((function(e){return!!e})));a.useEffect((function(){O&&b(v)}),[null==l?void 0:l.length]);var W=a.useCallback((function(t,n){if(h[t]!==n){var a=Object.assign(Object.assign({},h),(u={},p=n,(d=function(e){var t=function(e,t){if("object"!=ke(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=ke(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ke(t)?t:t+""}(d=t))in u?Object.defineProperty(u,d,{value:p,enumerable:!0,configurable:!0,writable:!0}):u[d]=p,u));if(D.S.isType(e.dashboard,g.ku.ClassificationDirectory))b(a);else{for(var i=0;i<l.length;){var r=l[i];if(Ae(r)){for(var o=!0,c=i+1;o&&c<l.length;){var s=l[c];if(Ae(s))break;a[s.id]||xe(s)||(o=!1),c++}i=c,a[r.id]=o}else i++}b(a)}}var u,d,p}),[h,l]);function Q(e){return Ae(e)&&h[e.id]}function z(e,t){if(e.widgetId===N.z.ClassificationDashboardExternalMedia){var n=l[t-1];return h[n.id]?e.name.replace("Other videos","Videos"):e.name}return e.name}var $,Y=l.filter((function(e){var t;return!Q(e)&&!!(null===(t=e.metadata)||void 0===t?void 0:t.showInTableOfContents)})),K=l.every(xe),X=Y.length>=2,ee=X&&!p,te=e.hasTopicDirectoryDashboard&&Z.i.isTopLevelTopic(e.classification);return a.createElement("div",{className:"bg-white px-4 ".concat(($=D.S.getDashboardTargetType(e.dashboard),e.moviesAndTv||$===g.ku.ClassificationVideos?"":"dashboard-spacing-lg"))},a.createElement(U.p,{heading:e.classification.name,banner:e.classification.banner,imageCdnUrl:e.imageCdnUrl,actions:null===(t=e.getBannerActions)||void 0===t?void 0:t.call(e),actionsDropdownClassName:"btn btn-outline-dark",specialEvent:e.specialEvent,calendarTheme:{background:"bg-light-blue",border:"border-light-blue"},showComingSoon:e.isComingSoon,detailsComponent:te?function(){return a.createElement(f,{classification:e.classification})}:null}),a.createElement(Te,{dashboard:e.dashboard,classification:e.classification,presentation:e.presentation,appLinks:e.appLinks,activeTab:e.tab,audiences:e.audiences,activeAudiences:e.activeAudiences,getBreadcrumbs:e.getBreadcrumbs,hasTopicDirectoryDashboard:e.hasTopicDirectoryDashboard,hasTopicVideosDashboard:e.hasTopicVideosDashboard,isComingSoon:e.isComingSoon,isEmpty:O,isViewingCurrentPresentation:e.isViewCurrentPresentation,isReadonly:e.isReadonly,disableAudiences:K}),e.isComingSoon&&a.createElement(J,{imageUrl:e.comingSoonImageUrl,data:e.classification,canFollowSubjects:e.canFollowSubjects,showFollowButtonSpinner:e.showFollowButtonSpinner,onToggleFollow:function(){return e.onToggleFollow(e.classification,s.LZ.ClassificationComingSoon)},showSignUp:!e.hasLocalPermissions(V.E.FollowComingSoonTopics),signUpAppLink:null===(i=(n=e.appLinks).signUp)||void 0===i?void 0:i.call(n)}),!e.isComingSoon&&a.createElement("div",{className:"".concat(ee?"row no-wrap":"")},X&&a.createElement(A,{widgets:Y,title:e.classification.name,activeId:I,clickable:!e.isReadonly,analyticsData:e.analyticsData,setControlledId:T,isSmallScreen:p}),a.createElement("div",{className:ee?"col-9 order-0":""},l.map((function(t,n){return Q(t)?a.createElement(a.Fragment,{key:t.id}):a.createElement(_.L,{headingElementRef:m,key:t.id,id:t.id,name:z(t,n),description:t.description,classification:e.classification,templateId:t.templateId,widgetTypeId:t.widgetId,audiences:e.audiences,getContentRequest:x,setIsEmpty:W,setFavourite:e.setFavourite,canFavourite:e.canFavourite,appLinks:e.appLinks,yearGroups:e.yearGroups,presentation:e.presentation,analyticsData:e.analyticsData,isScrollToTargetWidget:e.scrollToWidgetId===t.id,imageCdnUrl:e.imageCdnUrl,onSubmitFeedback:e.onSubmitFeedback,metadata:t.metadata,isBot:e.isBot,hasTableOfContents:ee,lazyLoad:e.lazyLoad,dashboardTarget:D.S.getDashboardTargetType(e.dashboard),widgetIndex:n,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadonly,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,contentType:e.contentType,resourceThumbnailFallbackImageUrl:e.resourceThumbnailFallbackImageUrl,preferences:t.preferences,onToggleFollowClassification:e.onToggleFollow,isPlugin:e.isPlugin,settings:e.settings})}))),!!(null==u?void 0:u.length)&&a.createElement(a.Fragment,null,a.createElement(B.B,{name:r.T.getPhrase(Ce,"videos"),description:""}),a.createElement(R.E4,{videos:u,yearGroups:e.yearGroups,getVideoAppLink:function(t,n){return e.appLinks.videoType(t,Object.assign(Object.assign({},n),{contextId:d}))},getSubTextAppLink:e.appLinks.subText,hasPermissions:e.hasPermissions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,getPreviewQuestionsAppLink:e.appLinks.previewQuestions,isPlugin:e.isPlugin,getClassroomGuideAppLink:e.appLinks.classroomGuide,getInteractiveGuidanceAppLink:e.appLinks.interactiveGuidance,getResourceGuidanceAppLink:e.appLinks.resourceGuidance}))),O&&a.createElement(w,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.appLinks.widgetWizard}),e.isTeacherOnly&&a.createElement(j,{imageUrl:e.emptyImageUrl,ctaAppLink:function(){return e.appLinks.allTopics(e.classification.presentationId)}}))}function je(){return a.createElement("div",{className:"bg-white px-4"},a.createElement(U.v,null),a.createElement("div",{className:"d-flex flex-column row-gap-3 py-3 mb-3 border-bottom"},a.createElement(K.b2,null),a.createElement(me,null)))}Oe.defaultProps={appLinks:{}};var Pe=n(14875),Ne=n(51365),Fe=n(2284),De=n(17101),Ue=n(4594),Re=n(12754),Be=n(89454),_e=n(21750),Ge=n(39151),Ve=n(1666),We=n(7198),Me=n(25665),He=n(31949),qe=n(69883),Ze=n(63719),Qe=n(56520),ze=n(91286),$e=n(22902),Ye=n(79612),Je=n(37802),Ke=n(52167),Xe=n(76753),et=n(99742),tt=n(51855),nt=n(10671),at=n(7179),it=n(27638),rt=n(86698),ot=n(34181),ct=n(33192),st=n(64364),lt=n(14070),ut=n(97291);function dt(e){return dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},dt(e)}function pt(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,ft(a.key),a)}}function ft(e){var t=function(e,t){if("object"!=dt(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=dt(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==dt(t)?t:t+""}function mt(e,t,n){return t=gt(t),function(e,t){if(t&&("object"==dt(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,vt()?Reflect.construct(t,n||[],gt(e).constructor):t.apply(e,n))}function vt(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(vt=function(){return!!e})()}function gt(e){return gt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},gt(e)}function yt(e,t){return yt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},yt(e,t)}var ht="subjects.topicNotFoundError",bt=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),mt(this,t,["Topic doesn't exist"])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&yt(e,t)}(t,e),n=t,(a=[{key:"name",get:function(){return"TopicNotFoundError"}},{key:"heading",get:function(){return r.T.getPhrase(ht,"heading")}},{key:"description",get:function(){return r.T.getPhrase(ht,"description")}},{key:"cta",get:function(){return{text:r.T.getPhrase(ht,"cta"),appLink:{application:ut.O.SUBJECT,action:lt.e.Subjects.CLASSIFICATION_ALL}}}}])&&pt(n.prototype,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,a}(st.H),wt=n(23737),St=n(28400),Et=n(183),Tt=n(22490),kt=n(82431),It={getSignUpAppLink:function(){var e={application:ut.O.SIGN_UP,action:lt.e.SignUp.SIGN_UP},t=ne.Q.C$.getHref(ne.Q.C$.getCurrentAppLink());return"/"!==t&&(e.params={redirectUrl:t}),e}},Lt=["preview","dashboardId","skipPrompt"];r.T.encloseNamespace("subjects.classification");const Ct={followButton:"HlRXj"};function At(e){return At="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(e)}function xt(){xt=function(){return t};var e,t={},n=Object.prototype,a=n.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function u(e,t,n,a){var r=t&&t.prototype instanceof y?t:y,o=Object.create(r.prototype),c=new O(a||[]);return i(o,"_invoke",{value:L(e,n,c)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",f="suspendedYield",m="executing",v="completed",g={};function y(){}function h(){}function b(){}var w={};l(w,o,(function(){return this}));var S=Object.getPrototypeOf,E=S&&S(S(j([])));E&&E!==n&&a.call(E,o)&&(w=E);var T=b.prototype=y.prototype=Object.create(w);function k(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(i,r,o,c){var s=d(e[i],e,r);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==At(u)&&a.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(u).then((function(e){l.value=e,o(l)}),(function(e){return n("throw",e,o,c)}))}c(s.arg)}var r;i(this,"_invoke",{value:function(e,a){function i(){return new t((function(t,i){n(e,a,t,i)}))}return r=r?r.then(i,i):i()}})}function L(t,n,a){var i=p;return function(r,o){if(i===m)throw Error("Generator is already running");if(i===v){if("throw"===r)throw o;return{value:e,done:!0}}for(a.method=r,a.arg=o;;){var c=a.delegate;if(c){var s=C(c,a);if(s){if(s===g)continue;return s}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(i===p)throw i=v,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);i=m;var l=d(t,n,a);if("normal"===l.type){if(i=a.done?v:f,l.arg===g)continue;return{value:l.arg,done:a.done}}"throw"===l.type&&(i=v,a.method="throw",a.arg=l.arg)}}}function C(t,n){var a=n.method,i=t.iterator[a];if(i===e)return n.delegate=null,"throw"===a&&t.iterator.return&&(n.method="return",n.arg=e,C(t,n),"throw"===n.method)||"return"!==a&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+a+"' method")),g;var r=d(i,t.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,g;var o=r.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function j(t){if(t||""===t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,r=function n(){for(;++i<t.length;)if(a.call(t,i))return n.value=t[i],n.done=!1,n;return n.value=e,n.done=!0,n};return r.next=r}}throw new TypeError(At(t)+" is not iterable")}return h.prototype=b,i(T,"constructor",{value:b,configurable:!0}),i(b,"constructor",{value:h,configurable:!0}),h.displayName=l(b,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===h||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,l(e,s,"GeneratorFunction")),e.prototype=Object.create(T),e},t.awrap=function(e){return{__await:e}},k(I.prototype),l(I.prototype,c,(function(){return this})),t.AsyncIterator=I,t.async=function(e,n,a,i,r){void 0===r&&(r=Promise);var o=new I(u(e,n,a,i),r);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},k(T),l(T,s,"Generator"),l(T,o,(function(){return this})),l(T,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var a in t)n.push(a);return n.reverse(),function e(){for(;n.length;){var a=n.pop();if(a in t)return e.value=a,e.done=!1,e}return e.done=!0,e}},t.values=j,O.prototype={constructor:O,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(x),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(a,i){return c.type="throw",c.arg=t,n.next=a,i&&(n.method="next",n.arg=e),!!i}for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],c=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev<o.catchLoc)return i(o.catchLoc,!0);if(this.prev<o.finallyLoc)return i(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return i(o.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return i(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===e||"continue"===e)&&r.tryLoc<=t&&t<=r.finallyLoc&&(r=null);var o=r?r.completion:{};return o.type=e,o.arg=t,r?(this.method="next",this.next=r.finallyLoc,g):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),x(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if("throw"===a.type){var i=a.arg;x(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,a){return this.delegate={iterator:j(t),resultName:n,nextLoc:a},"next"===this.method&&(this.arg=e),g}},t}function Ot(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var jt=function(e,t,n,a){return new(n||(n=Promise))((function(i,r){function o(e){try{s(a.next(e))}catch(e){r(e)}}function c(e){try{s(a.throw(e))}catch(e){r(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}s((a=a.apply(e,t||[])).next())}))};Nt.defaultProps={queryParams:{}};var Pt=r.T.encloseNamespace("subjects.classification");function Nt(e){var t,n,r,u,d,p,f,m,v,h,b,w,S,E,T,k=(E=a.useState(!1),T=2,function(e){if(Array.isArray(e))return e}(E)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(E,T)||function(e,t){if(e){if("string"==typeof e)return Ot(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ot(e,t):void 0}}(E,T)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),I=k[0],L=k[1],C=(0,qe.Z)(),A=o.a.useGetFetchAsync(),x=(0,$e.T)(),O=x.hasPermissions,j=x.hasLocalPermissions,P=(0,tt.G)().isPlugin,N=(0,Je.r)(null),U=o.a.useBasicFetch(Ge.L.config()),R=o.a.useBasicFetch(He.N.currentUser()),B=(0,Qe.R0)(),_=B.openInCurationStudioLabel,W=B.isUserCurator,H=B.getOpenInCurationStudioLink,q=o.a.useBasicFetch(O(V.C.CanSubmitFeedback)&&R.data&&Ve.h.customer(R.data.customerId)),Q=o.a.useBasicFetch(_e.x.classification(e.id,null===(t=R.data)||void 0===t?void 0:t.id)),z=o.a.useBasicFetch(Q.data&&_e.x.presentationById(Q.data.presentationId)),$=o.a.useBasicFetch(Q.data&&Be.O.audiencesByPresentationId(Q.data.presentationId)),Y=o.a.useBasicFetch(Q.data&&l.N.nextTopicSpecialEvent(e.id,Q.data.presentationId)),J=(0,rt.y)(),K=J.activePresentation,X=J.availablePresentations,te=J.canAccessPresentation,ne=o.a.useBasicFetch((null===(n=R.data)||void 0===n?void 0:n.isAuthenticated)&&Ve.h.yearGroups(R.data.customerId)),ae=o.a.useBasicFetch(_e.x.path(e.id)),re=function(e,t,n){var a=(0,Je.r)(null),i=a.hasTopicDirectories,r=a.hasTopicVideoListFeature,o=(0,wt.y)({classificationId:e,queryParams:t,targetType:g.ku.Classification}),c=o.dashboard,s=o.isPreviewing,l=o.isTeacherOnly,u=(0,wt.y)({classificationId:e,queryParams:t,targetType:g.ku.ClassificationDirectory}).dashboard,d=(0,wt.y)({classificationId:e,queryParams:t,targetType:g.ku.ClassificationVideos}).dashboard;return{dashboard:function(){switch(n){case g.ku.Classification:return c;case g.ku.ClassificationDirectory:return u;case g.ku.ClassificationVideos:return d}}(),hasTopicDirectoryDashboard:i&&!!u.data,hasTopicVideosDashboard:r&&!!d.data,isTeacherOnly:l,isPreviewing:s}}(e.id,e.queryParams,e.targetType),oe=re.dashboard,ce=re.hasTopicDirectoryDashboard,se=re.hasTopicVideosDashboard,le=re.isPreviewing,ue=re.isTeacherOnly,de=o.a.useBasicFetch(_e.x.regionAlternatives(e.id));(0,Ye.M)(Xe.CG.getClassificationMetadata({content:Q.data,phraseContext:{phraseHandler:Pt,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:ct.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:ct.f.allowIndexing(),hrefLang:ct.f.getContentHrefLang(de.data,(function(){return ot.L.getAppLink(Q.data)}))})),(0,ze.v)(Q,{notFound:bt}),(0,at.P)({id:e.id,app:"topics"});var pe=(null==K?void 0:K.id)===(null===(r=z.data)||void 0===r?void 0:r.id),fe=(0,M.a)(G.r.MDDown),me=(0,M.a)(G.r.SMDown),ve=(0,it.u)(s.LZ.ExpandableVideoThumbnail),ge=ve.setFavourite,ye=ve.canFavourite,he=(0,nt._)({location:nt.i.VideoItem}),be=O(V.C.FollowSubjects),we=(null===(u=Q.data)||void 0===u?void 0:u.status)===Fe.W.ComingSoon&&!le,Se=ee.T.getActiveAudiencesFromParams($.data,e.queryParams),Ee=null!==(d=null==Se?void 0:Se.map((function(e){return e.masterId})))&&void 0!==d?d:[],Te=D.S.getDashboardTargetType(oe.data);function ke(e,t){var n,a,i;if(be&&Q){var r=e.id.toString()===(null===(a=null===(n=Q.data)||void 0===n?void 0:n.id)||void 0===a?void 0:a.toString());r&&L(!0);var o=Z.i.isFollowing(e),l=o?Me.k.unfollow:Me.k.follow;A(l([e.id],null===(i=R.data)||void 0===i?void 0:i.id)).then((function(){c.k.logUserAction(Ce,{location:t,actionType:s.Vw.Follow,workflowPhase:s.eu.Complete,descriptor:o?s.DL.Off:s.DL.On,entity:s.py.Classification}),r||C.success(Pt(o?"unfollowed":"followed",{name:e.name}))})).finally((function(){r&&L(!1)}))}}var Ie=function(e,t,n){return{audience:function(){switch(t){case g.ku.ClassificationDirectory:return null;case g.ku.ClassificationVideos:return{application:ut.O.SUBJECT,action:lt.e.Subjects.CLASSIFICATION_VIDEOS,args:[e.id,St.m.slugify(e.name)],params:n};default:return ot.L.getAppLink(e,n)}},classification:function(t){var a=t||e;return ot.L.getAppLink(a,ie.t.omit(n,Lt))},classificationDirectory:function(t){var a=t||e;return{application:ut.O.SUBJECT,action:lt.e.Subjects.CLASSIFICATION_TOPICS,args:[a.id,St.m.slugify(a.name)],params:ie.t.omit(n,Lt)}},classificationVideos:function(t){var a=t||e;return{application:ut.O.SUBJECT,action:lt.e.Subjects.CLASSIFICATION_VIDEOS,args:[a.id,St.m.slugify(a.name)],params:ie.t.omit(n,Lt)}},videoType:function(e,t){return Tt.W.getAppLink(e,Object.assign(Object.assign({},t),{context:Et.Q.Widget,moviesAndTv:n.mtv}))},allTopics:function(e){return{application:ut.O.SUBJECT,action:lt.e.Subjects.CLASSIFICATION_ALL,params:{presentationId:e}}},series:function(t){return kt.j.getSeriesAppLink(t,{classificationId:e.id,mtv:!!n.mtv||void 0})},subText:function(t){return kt.j.getSeriesAppLink(t.series,{classificationId:e.id,mtv:!!n.mtv||void 0})},playlist:function(t){return{application:ut.O.PLAYLISTS,action:lt.e.Playlists.PLAYLIST,args:[t.id,St.m.slugify(t.name)],params:{classificationId:e.id,mtv:!!n.mtv||void 0}}},resource:function(e,t,n){return n?{application:ut.O.VIDEOS,action:lt.e.Videos.PREVIEW_PDF,args:[e.id],params:{videoId:t}}:{application:ut.O.SIGN_UP,action:lt.e.SignUp.SIGN_UP}},signUp:It.getSignUpAppLink,classroomGuide:Tt.W.getClassroomGuideAppLink,interactiveGuidance:Tt.W.getInteractiveGuidanceAppLink,resourceGuidance:Tt.W.getResourceGuidanceAppLink}}(Q.data,Te,e.queryParams),Le=(0,Ze.h)({name:null===(p=Q.data)||void 0===p?void 0:p.name}),Ce={presentationId:null===(f=z.data)||void 0===f?void 0:f.id,presentationName:null===(m=z.data)||void 0===m?void 0:m.name,currentClassificationId:null===(v=Q.data)||void 0===v?void 0:v.id,currentClassificationName:null===(h=Q.data)||void 0===h?void 0:h.name,followingCurrentClassification:!!(null===(S=null===(w=null===(b=Q.data)||void 0===b?void 0:b.followers)||void 0===w?void 0:w.data)||void 0===S?void 0:S.length),activeAudienceNames:(null==Se?void 0:Se.length)?Se.map((function(e){return e.name})):null,activeAudienceIds:Ee.length?Ee:null};return U.data&&oe.hasCompleted&&Q.data&&z.data&&ae.data&&X&&$.data&&Y.hasCompleted?a.createElement(Ne.M.Provider,{value:he},a.createElement("div",{className:"position-relative"},!(!le||!oe.data)&&a.createElement(Pe.a,{status:oe.data.status,type:"topic"}),a.createElement(Oe,{dashboard:oe.data,classification:Q.data,getWidgetContentRequest:F._.dashboardWidgetContent,getBreadcrumbs:function(){var e;if(te(null===(e=z.data)||void 0===e?void 0:e.id))return function(){return Le}}(),hasPermissions:O,hasLocalPermissions:j,presentation:z.data,onToggleFollow:ke,getBannerActions:function(){var e,t,n,a,i,r=!!(null===(n=null===(t=null===(e=Q.data)||void 0===e?void 0:e.followers)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length);if(!be)return[];var o=[{label:me?"":Pt(r?"following":"follow"),onClick:function(){return ke(Q.data,s.LZ.Banner)},svgName:r?y.vn.BellFilled:y.vn.Bell,className:"btn follow-btn me-2 ".concat(r?"btn-outline-dark":"btn-dark"," ").concat(Ct.followButton),button:!0,tooltip:r||fe?void 0:Pt("followBtnTooltip"),showSpinner:I}];return W&&o.push({label:_,href:H(Ue.E.Subject,null===(a=Q.data)||void 0===a?void 0:a.id,null===(i=z.data)||void 0===i?void 0:i.id),openInNewTab:!0}),o},audiences:e.queryParams.mtv?null:$.data,activeAudiences:Se,analyticsData:Ce,imageCdnUrl:U.data.imageCdnUrl,resourceThumbnailFallbackImageUrl:et.W.Fallbacks.RESOURCE_THUMBNAIL,emptyImageUrl:ue?et.W.EmptyStates.Topics.TEACHER_ONLY:et.W.EmptyStates.Topics.TOPIC,isComingSoon:we,showFollowButtonSpinner:I,comingSoonImageUrl:et.W.EmptyStates.Topics.COMING_SOON,appLinks:Ie,isPreviewing:le,setFavourite:ge,canFavourite:ye,isViewCurrentPresentation:pe,canFollowSubjects:be,onSubmitFeedback:O(V.C.CanSubmitFeedback)&&function(e){return jt(this,void 0,void 0,xt().mark((function t(){var n;return xt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,A(We.f.submitFeedback({type:De.n.Footer,user:Ke.m.getUserInfo(R.data,q.data),tags:Ke.m.getTags(R.data,Re.x.Primary,O(V.C.StudentExperience),["topics","in product feedback"])},{reaction:e.type,feedback:e.content,location:"Topic Footer",presentationName:z.data.description,presentationId:z.data.id,dashboardName:oe.data.name,dashboardId:oe.data.id,classificationName:Q.data.name,classificationId:Q.data.id,currentPageUrl:i.Ab.GetCurrentUrl()}));case 2:return n=t.sent,c.k.logUserAction({feedbackType:e.type,content:e.content,presentationId:z.data.id,classificationId:Q.data.id,dashboardId:oe.data.id},{actionType:s.Vw.Submit,location:s.LZ.ClassificationFooter,entity:s.py.Feedback,workflowPhase:s.eu.Complete}),t.abrupt("return",n);case 5:case"end":return t.stop()}}),t)})))},tableOfContentsId:e.queryParams.tocId,yearGroups:ne.data,lazyLoad:!ct.f.isBot(),moviesAndTv:e.queryParams.mtv,isTeacherOnly:ue,specialEvent:Y.data,isBot:ct.f.isBot(),hasTopicDirectoryDashboard:ce,hasTopicVideosDashboard:se,tab:Z.i.getActiveTopicTab(Q.data,e.targetType),isPlugin:P,settings:N}))):a.createElement(je,null)}},87432:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
|
|
3
|
+
//# sourceMappingURL=3999-317a4538c6-lite.chunk.js.map
|