@clickview/lite 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/apps/default/index.d.ts +2 -0
  2. package/dist/apps/index.d.ts +1 -0
  3. package/dist/apps/notifications/interfaces/Notification.d.ts +3 -0
  4. package/dist/apps/notifications/interfaces/NotificationCollection.d.ts +4 -0
  5. package/dist/apps/notifications/interfaces/index.d.ts +2 -0
  6. package/dist/apps/notifications/services/FlightNotificationDataService.d.ts +16 -0
  7. package/dist/apps/notifications/services/index.d.ts +1 -0
  8. package/dist/apps/playlists/components/index.d.ts +1 -0
  9. package/dist/apps/playlists/components/playlist-list/LitePlaylistItem.d.ts +9 -0
  10. package/dist/apps/playlists/components/playlist-list/LitePlaylistList.d.ts +9 -0
  11. package/dist/apps/playlists/components/playlist-list/index.d.ts +1 -0
  12. package/dist/apps/playlists/flight-requests/PlaylistRequests.d.ts +4 -0
  13. package/dist/apps/playlists/flight-requests/index.d.ts +1 -0
  14. package/dist/apps/playlists/index.d.ts +1 -0
  15. package/dist/apps/playlists/views/index.d.ts +1 -0
  16. package/dist/apps/playlists/views/user-playlists/UserPlaylistsView.d.ts +2 -0
  17. package/dist/apps/playlists/views/user-playlists/index.d.ts +1 -0
  18. package/dist/bundle.js.map +1 -1
  19. package/dist/lite-app.css.map +1 -1
  20. package/dist/lite-app.js +112 -0
  21. package/dist/lite-app.js.map +1 -0
  22. package/dist/shared/components/icon-button/IconButton.d.ts +9 -0
  23. package/dist/shared/errors/not-found/NotFoundError.d.ts +5 -0
  24. package/dist/shared/errors/primitives/AlertError.d.ts +0 -0
  25. package/dist/shared/errors/primitives/DialogError.d.ts +0 -0
  26. package/dist/shared/errors/primitives/ErrorPageError.d.ts +0 -0
  27. package/dist/shared/errors/primitives/index.d.ts +3 -0
  28. package/dist/shared/flight-requests/ConfigRequests.d.ts +4 -0
  29. package/dist/shared/flight-requests/PlaylistRequests.d.ts +4 -0
  30. package/dist/shared/flight-requests/UserRequests.d.ts +5 -0
  31. package/dist/shared/index.d.ts +5 -0
  32. package/dist/shared/utils/InfiniteScrollHelper.d.ts +11 -0
  33. package/dist/shared/utils/LiteAppLinkHelper.d.ts +3 -0
  34. package/dist/shared/views/backbone-wrapper/BackboneWrapperView.d.ts +8 -0
  35. package/dist/shared/views/favorite-videos/FavoriteVideos.d.ts +6 -0
  36. package/dist/shared/views/favorite-videos/index.d.ts +1 -0
  37. package/dist/shared/views/my-uploads/components/MyUploadsBannerActions.d.ts +5 -0
  38. package/dist/shared/views/play/components/BackButton.d.ts +2 -0
  39. package/dist/shared/views/play/components/Badges.d.ts +7 -0
  40. package/dist/shared/views/play/components/Buttons.d.ts +2 -0
  41. package/dist/shared/views/play/components/VideoTitle.d.ts +7 -0
  42. package/dist/shared/views/play/components/index.d.ts +3 -0
  43. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["file://C:/ClickView/front-end/clickview/packages/lite/webpack/universalModuleDefinition","file://C:/ClickView/front-end/clickview/packages/lite/webpack/bootstrap","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/content-updates/LiteContentUpdatesApplication.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/content-updates/utils/LiteContentUpdateAppLinks.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/content-updates/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/dashboard/LiteDashboardApplication.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/default/LiteDefaultApplication.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/default/views/dev-error/LiteDevErrorView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/default/views/dialog/LiteDialogView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/default/views/error/LiteErrorView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/default/views/home/HomeView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/default/views/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/default/views/not-found/LiteNotFoundView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/embed/LiteEmbedApplication.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/embed/views/embed/EmbedView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/embed/views/embed/embed.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/embed/views/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/notifications/LiteNotificationsApplication.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/notifications/constants/NotificationsAppVariables.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/playlists/LitePlaylistsApplication.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/LiteSearchApplication.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/filter-actions/FilterActions.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/filter-button/FilterButton.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/filter-button/filter-button.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/filter-types/checkbox-filter/CheckboxFilter.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/filter-types/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/filter-types/more-filters/MoreFilters.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/filter-types/radio-filter/RadioFilter.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/filter-types/radio-filter/radio-filter.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/filter-types/switch-filter/SwitchFilter.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/reset-button/ResetButton.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/search-filters/SearchFilters.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/components/search-filters/search-filters.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/constants/SearchAppVariables.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/flight-requests/SearchRequests.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/flight-requests/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/reducers/FilterReducer.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/reducers/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/utils/FilterHelper.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/utils/SearchHelper.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/views/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/views/search-results/PartialSearchResultsView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/views/search-results/SearchResultsView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/search/views/search-results/search-results.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/apps/subjects/LiteSubjectApplication.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/clips/ClipItem.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/clips/Clips.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/clips/clips.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/div-button/DivButton.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/floating-player/FloatingPlayer.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/floating-player/floating-player.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/immersive-reader/ImmersiveReader.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/immersive-reader/immersive-reader.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/interactives/InteractiveItem.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/interactives/Interactives.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/interactives/interactives.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/play-page/Badges.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/play-page/Buttons.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/play-page/PlayPage.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/play-page/VideoTitle.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/resources/Resources.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/synopsis/Synopsis.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/synopsis/synopsis.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/upload-file-select/UploadFileSelect.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/uploading-item/UploadingItem.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/user-options/UserOptions.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/user-options/user-options.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/video-details/VideoDetails.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/video-details/video-details.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/components/web-player/WebPlayer.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/constants/LiteActions.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/constants/LiteLayoutRegions.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/constants/LiteLayouts.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/constants/LiteRadioChannels.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/constants/RadioChannels.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/constants/Services.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/constants/WithStatements.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/constants/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/contexts/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/contexts/player/PlayerContext.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/errors/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/errors/not-found/LiteNotFoundError.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/flight-requests/AudienceRequests.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/flight-requests/SeriesRequests.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/flight-requests/ShareRequests.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/flight-requests/VideoRequests.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/flight-requests/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/hooks/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/hooks/useWindowListeners.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/embed-layout/EmbedLayout.hbs","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/embed-layout/EmbedLayoutComponent.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/embed-layout/EmbedLayoutView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/teacher-layout/TeacherLayout.hbs","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/teacher-layout/TeacherLayoutComponent.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/teacher-layout/TeacherLayoutView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/teacher-layout/drag-mask/DragMask.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/teacher-layout/drag-mask/drag-mask.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/layouts/teacher-layout/teacher-layout.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/services/CombineUploadsService.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/services/FlightLibraryDataService.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/services/FlightSeriesDataService.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/services/FlightVideoDataService.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/services/FlightVideoUploadDataService.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/services/VideoUploadService.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/services/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/utils/LiteAppLinkUtils.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/edit-upload/EditUploadView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/edit-video/EditVideoView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/favorite-videos/FavoriteVideosView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/header/HeaderView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/header/header.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/left-nav/LeftNavView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/left-nav/left-nav.scss","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/my-uploads/DismissableAlert.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/my-uploads/MyUploadsView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/my-uploads/useGetUploadingItems.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/play-shared/PlaySharedView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/play/PlayView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/shared/views/series/SeriesView.tsx","file://C:/ClickView/front-end/clickview/packages/lite/src/styles/index.ts","file://C:/ClickView/front-end/clickview/packages/lite/src/styles/theme-overrides.scss","file://C:/ClickView/front-end/clickview/packages/lite/external \"@clickview/common\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"@clickview/dashboard\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"@clickview/playlists\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"@clickview/shared\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"ImmersiveReader\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"Backbone\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"Handlebars\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"marked\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"React\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"ReactBootstrap\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"ReactCustomScrollbars\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"reactDropzone\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"ReactIntersectionObserver\"","file://C:/ClickView/front-end/clickview/packages/lite/external \"ReactRedux\""],"names":[],"mappings":"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","file":"bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@clickview/common\"), require(\"@clickview/dashboard\"), require(\"@clickview/playlists\"), require(\"@clickview/shared\"), require(\"ImmersiveReader\"), require(\"Backbone\"), require(\"Handlebars\"), require(\"marked\"), require(\"React\"), require(\"ReactBootstrap\"), require(\"ReactCustomScrollbars\"), require(\"reactDropzone\"), require(\"ReactIntersectionObserver\"), require(\"ReactRedux\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@clickview/common\", \"@clickview/dashboard\", \"@clickview/playlists\", \"@clickview/shared\", \"ImmersiveReader\", \"Backbone\", \"Handlebars\", \"marked\", \"React\", \"ReactBootstrap\", \"ReactCustomScrollbars\", \"reactDropzone\", \"ReactIntersectionObserver\", \"ReactRedux\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@clickview/lite\"] = factory(require(\"@clickview/common\"), require(\"@clickview/dashboard\"), require(\"@clickview/playlists\"), require(\"@clickview/shared\"), require(\"ImmersiveReader\"), require(\"Backbone\"), require(\"Handlebars\"), require(\"marked\"), require(\"React\"), require(\"ReactBootstrap\"), require(\"ReactCustomScrollbars\"), require(\"reactDropzone\"), require(\"ReactIntersectionObserver\"), require(\"ReactRedux\"));\n\telse\n\t\troot[\"@clickview/lite\"] = factory(root[\"@clickview/common\"], root[\"@clickview/dashboard\"], root[\"@clickview/playlists\"], root[\"@clickview/shared\"], root[\"ImmersiveReader\"], root[\"Backbone\"], root[\"Handlebars\"], root[\"marked\"], root[\"React\"], root[\"ReactBootstrap\"], root[\"ReactCustomScrollbars\"], root[\"reactDropzone\"], root[\"ReactIntersectionObserver\"], root[\"ReactRedux\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__clickview_common__, __WEBPACK_EXTERNAL_MODULE__clickview_dashboard__, __WEBPACK_EXTERNAL_MODULE__clickview_playlists__, __WEBPACK_EXTERNAL_MODULE__clickview_shared__, __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__, __WEBPACK_EXTERNAL_MODULE_backbone__, __WEBPACK_EXTERNAL_MODULE_handlebars__, __WEBPACK_EXTERNAL_MODULE_marked__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_bootstrap__, __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__, __WEBPACK_EXTERNAL_MODULE_react_dropzone__, __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__, __WEBPACK_EXTERNAL_MODULE_react_redux__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","import * as React from 'react';\r\n\r\nimport { Core, HashObject } from '@clickview/common';\r\nimport {\r\n ContentUpdatesView,\r\n ClassificationUpdateView\r\n} from '@clickview/playlists';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\nimport { LiteContentUpdateAppLinks } from 'apps/content-updates/utils';\r\n\r\nclass ContentUpdatesRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'content-updates': 'contentUpdates',\r\n 'content-updates/:id': 'classificationUpdate'\r\n };\r\n }\r\n}\r\n\r\nexport class ContentUpdatesApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Content Updates Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n public static get router(): typeof ContentUpdatesRouter {\r\n return ContentUpdatesRouter;\r\n }\r\n\r\n public contentUpdates(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ContentUpdatesView appLinks={LiteContentUpdateAppLinks} />);\r\n }\r\n\r\n public classificationUpdate(classificationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <ClassificationUpdateView classificationId={classificationId} appLinks={LiteContentUpdateAppLinks} />);\r\n }\r\n}","import { Video, Series, Classification } from '@clickview/shared';\r\nimport { ContentUpdateAppLinks } from '@clickview/playlists';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport const LiteContentUpdateAppLinks: ContentUpdateAppLinks = {\r\n getVideoAppLink: (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n }),\r\n getSeriesAppLink: (series: Series) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n }),\r\n getClassificationUpdateAppLink: (classification: Classification) => ({\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\r\n args: [classification.id]\r\n }),\r\n getClassificationAppLink: (classification: Classification) => ({\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Classifications.CLASSIFICATION,\r\n args: [classification.id]\r\n }),\r\n dashboardAppLink: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n },\r\n contentUpdatesAppLink: {\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CONTENT_UPDATES\r\n }\r\n};","export * from './LiteContentUpdateAppLinks';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core, HashObject } from '@clickview/common';\r\nimport { DashboardWithSearchView } from '@clickview/dashboard';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass DashboardAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'dashboard/:id(/:name/)': 'dashboard',\r\n\r\n '(/)': 'index',\r\n };\r\n }\r\n}\r\n\r\nexport class DashboardApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Dashboard Application';\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n public static get router(): typeof DashboardAppRouter {\r\n return DashboardAppRouter;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get appChannels(): HashObject<string> {\r\n return {\r\n dashboard: AppChannels.DASHBOARD,\r\n subject: AppChannels.SUBJECT\r\n };\r\n }\r\n\r\n public index(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DashboardWithSearchView type='primary' appChannels={this.appChannels} />);\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\nimport { PlayView, MyUploadsView, SeriesView, PlaySharedView, EditVideoView, EditUploadView, FavoriteVideosView } from 'shared/views';\r\nimport { NotFoundError } from 'shared/errors';\r\n\r\nimport { NotFoundView, HomeView, DevErrorView, ErrorView } from 'apps/default/views';\r\nimport { DialogView } from './views/dialog/LiteDialogView';\r\n\r\nclass DefaultAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n '': 'index',\r\n\r\n // These routes should be moved to their own applications eventually\r\n 'videos/:id(/)': 'playVideo',\r\n 'my-uploads(/)': 'myUploads',\r\n 'series/:id(/)': 'series',\r\n 'share/:shortCode(/)': 'playSharedVideo',\r\n 'favourited-videos(/)': 'favoriteVideos',\r\n\r\n '*path' : 'catchAllRoutes',\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [ 'devError', 'dialogError', 'error', 'notFound', 'editVideo', 'editUpload' ];\r\n }\r\n}\r\n\r\nexport class DefaultApplication extends ReactApplication {\r\n public layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Default Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n public static get router(): typeof DefaultAppRouter {\r\n return DefaultAppRouter;\r\n }\r\n\r\n public index(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <HomeView />);\r\n }\r\n\r\n public playVideo(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PlayView id={id} />);\r\n }\r\n\r\n public playSharedVideo(shortCode: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PlaySharedView shortCode={shortCode} />);\r\n }\r\n\r\n public myUploads(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <MyUploadsView cursor={params.cursor} />);\r\n }\r\n\r\n public editVideo(videoId: string): void {\r\n this.layout.showChildView(\r\n LayoutRegions.POPUP, <EditVideoView id={videoId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public editUpload(uploadId: string): void {\r\n this.layout.showChildView(\r\n LayoutRegions.POPUP, <EditUploadView uploadId={uploadId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public series(id: string, params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SeriesView id={id} cursor={params.cursor} />);\r\n }\r\n\r\n public favoriteVideos(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <FavoriteVideosView cursor={params.cursor} />);\r\n }\r\n\r\n public catchAllRoutes(): void {\r\n Core.ErrorHelper.throw(new NotFoundError());\r\n }\r\n\r\n public notFound(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NotFoundView />);\r\n }\r\n\r\n public error(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ErrorView error={error} />);\r\n }\r\n\r\n public dialogError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n if (!error)\r\n return;\r\n\r\n const { dialogOptions } = error;\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DialogView\r\n title={dialogOptions.title}\r\n text={dialogOptions.text}\r\n buttons={dialogOptions.buttons}\r\n onDone={error.onDone}\r\n onFail={error.onFail}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n\r\n public devError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DevErrorView error={error} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\n\r\ninterface DevErrorViewProps {\r\n error: Error;\r\n}\r\n\r\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\r\n if (!error)\r\n return <></>;\r\n\r\n return (\r\n <>\r\n <h1>{error.name}</h1>\r\n <Alert variant='danger'>\r\n <h2>{error.message}</h2>\r\n </Alert>\r\n <Alert variant='warning'>\r\n <h3>Call stack</h3>\r\n <code>{error.stack}</code>\r\n </Alert>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport { FunctionHelper } from '@clickview/common';\r\nimport { DialogOptions, Popup, PopupButton, PopupButtons, PopupViewProps } from '@clickview/shared';\r\n\r\ninterface DialogViewProps extends DialogOptions {\r\n onDone?: () => void;\r\n onFail?: () => void;\r\n}\r\n\r\ntype PropTypes = React.PropsWithChildren<DialogViewProps & PopupViewProps>;\r\n\r\nexport function DialogView(props: PropTypes): React.ReactElement {\r\n const buttons: PopupButton[] = props.buttons.map(b => {\r\n const onClick = () => {\r\n if (b.success)\r\n FunctionHelper.isFunction(props.onDone) && props.onDone();\r\n else\r\n FunctionHelper.isFunction(props.onFail) && props.onFail();\r\n\r\n if (b.close)\r\n props.closePopup();\r\n };\r\n\r\n const popupButton = {\r\n buttonText: b.text,\r\n className: b.className,\r\n onClick,\r\n type: b.type\r\n };\r\n\r\n return popupButton;\r\n });\r\n\r\n return (\r\n <Popup title={props.title} closePopup={props.closePopup}>\r\n <p>{props.text}</p>\r\n <PopupButtons buttons={buttons} />\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { ErrorPageError } from '@clickview/shared';\r\n\r\ninterface ErrorViewProps {\r\n error: ErrorPageError;\r\n}\r\n\r\nexport function ErrorView({ error }: ErrorViewProps): React.ReactElement {\r\n if (!error)\r\n return <></>;\r\n\r\n return (\r\n <div className='bg-white mt-3 p-5 text-center'>\r\n <h1 className='h4 text-muted'>{error.heading}</h1>\r\n <p>{error.description}</p>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { AppLink } from '@clickview/shared';\r\nimport { AppChannels } from 'shared/constants';\r\n\r\n/**\r\n * TODO: This is a temporary view and should be deleted\r\n */\r\nexport function HomeView(): React.ReactElement {\r\n return (\r\n <div style={{ height: '3000px' }}>\r\n <h1>Hello World</h1>\r\n <AppLink appLink={{\r\n application: AppChannels.DEFAULT,\r\n action: 'play:video',\r\n args: ['4665122']\r\n }}>Play page 1</AppLink>\r\n <AppLink appLink={{\r\n application: AppChannels.DEFAULT,\r\n action: 'play:video',\r\n args: ['3713435']\r\n }}>Play page 2</AppLink>\r\n </div>\r\n );\r\n}","export * from './dev-error/LiteDevErrorView';\r\nexport * from './error/LiteErrorView';\r\nexport * from './home/HomeView';\r\nexport * from './not-found/LiteNotFoundView';","import * as React from 'react';\r\n\r\n/**\r\n * TODO: Implement a proper NotFoundView\r\n */\r\nexport function NotFoundView(): React.ReactElement {\r\n return (\r\n <>\r\n <h1>Not Found</h1>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { EmbedLayoutView } from 'shared/layouts';\r\n\r\nimport { EmbedView } from 'apps/embed/views';\r\n\r\nclass EmbedAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'share/embed/:shortcode': 'embedVideo'\r\n };\r\n }\r\n}\r\n\r\nexport class EmbedApplication extends ReactApplication {\r\n public layout: EmbedLayoutView;\r\n\r\n public get name(): string {\r\n return 'Embed Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<Core.LayoutViewOptions> {\r\n return {\r\n name: Layouts.EMBED_LAYOUT\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n public static get router(): typeof EmbedAppRouter {\r\n return EmbedAppRouter;\r\n }\r\n\r\n public embedVideo(shortCode: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EmbedView id={shortCode} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Flight } from '@clickview/common';\r\nimport { Video, Config, ConfigRequests } from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { WebPlayer } from 'shared/components';\r\n\r\nimport styles from './embed.scss';\r\n\r\ninterface EmbedViewProps {\r\n /**\r\n * TODO: Replace id with shortcode. It's just a master id now\r\n * as a placeholder\r\n */\r\n id: string;\r\n}\r\n\r\nexport function EmbedView(props: EmbedViewProps): JSX.Element {\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n\r\n /**\r\n * Our body normally has overflow-y: scroll;\r\n * So we need to override it for the embedded play view\r\n */\r\n React.useEffect(() => {\r\n document.body.classList.add('overflow-hidden');\r\n return () => document.body.classList.remove('overflow-hidden');\r\n }, []);\r\n\r\n\r\n if (!video.data || !config.data)\r\n return <></>;\r\n\r\n return (\r\n <WebPlayer id={video.data.id} webPlayerHost={config.data.webPlayerUrl} className={styles.embeddedPlayer} />\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"embeddedPlayer\":\"cv--embeddedPlayer--3kXb6\"};","export * from './embed/EmbedView';","import * as React from 'react';\r\n\r\nimport { Core, HashObject, ReactApplication, BackboneViewWrapper } from '@clickview/common';\r\nimport { NotificationsView, LayoutRegions } from '@clickview/shared';\r\n\r\nimport { Layouts, AppChannels } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass NotificationsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public get appRoutes(): HashObject {\r\n return {\r\n 'notifications(/)': 'index'\r\n };\r\n }\r\n}\r\n\r\nexport class NotificationsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Notifications Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public static get router(): any {\r\n return NotificationsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public index(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <BackboneViewWrapper view={NotificationsView} options={{ params }} />);\r\n }\r\n}","import { BaseNotificationsAppVariables, NotificationsAppLinks, NotificationType } from '@clickview/shared';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport class NotificationsAppVariables extends BaseNotificationsAppVariables {\r\n public get appLinks(): NotificationsAppLinks {\r\n return {\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO\r\n },\r\n\r\n notifications: {\r\n application: AppChannels.NOTIFICATIONS,\r\n action: Actions.Notifications.HOME\r\n },\r\n\r\n /**\r\n * Below this comment is unimplemented applinks\r\n */\r\n pastReleases: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n },\r\n\r\n awaitingReview: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n },\r\n\r\n editStaffRequest: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }\r\n };\r\n }\r\n\r\n public get notificationTypesWithAppLinks(): Array<NotificationType> {\r\n return [\r\n NotificationType.VideoReviewReminder,\r\n NotificationType.VideoReviewAddedToLibrary,\r\n NotificationType.CustomLibraryVideoAvailable,\r\n NotificationType.WorkspaceVideoAvailable,\r\n NotificationType.ExchangeVideoAvailable\r\n // NotificationType.StaffRequest,\r\n // NotificationType.StaffRequestFulfilled,\r\n // NotificationType.ChapterMergeSuccess\r\n ];\r\n }\r\n\r\n // TODO\r\n public get notificationsEmptyStateUrl(): string {\r\n // return '/images/empty-states/illo-no-notifications@2x.png';\r\n return '';\r\n }\r\n\r\n public get bellIconColor(): 'dark' {\r\n return 'dark';\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, BaseAlert, CommonChannels, HashObject, ReactApplication } from '@clickview/common';\r\nimport { Video, Series, Playlist, AlertList } from '@clickview/shared';\r\n\r\nimport {\r\n PlaylistView,\r\n PlaylistsView,\r\n NewPlaylistView,\r\n EditPlaylistView,\r\n DeletePlaylistView,\r\n AddToPlaylistView,\r\n RemoveVideoFromPlaylistView,\r\n PlaylistSortType,\r\n PlaylistSortHelper\r\n} from '@clickview/playlists';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions, Actions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass PlaylistsAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'playlists(/)': 'index',\r\n 'playlists/:id(/)': 'playlist'\r\n };\r\n }\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newPlaylist',\r\n 'editPlaylist',\r\n 'deletePlaylist',\r\n 'addToPlaylist',\r\n 'removeVideoFromPlaylist'\r\n ];\r\n }\r\n}\r\n\r\nexport class PlaylistsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Playlists Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n public static get router(): typeof PlaylistsAppRouter {\r\n return PlaylistsAppRouter;\r\n }\r\n\r\n public index(params: HashObject): void {\r\n const getPlaylistAppLink = (playlist: Playlist) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: [playlist.id]\r\n });\r\n\r\n const getSortAppLink = (sort: PlaylistSortType): Core.AppLink => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME,\r\n params: {\r\n sort: sort\r\n }\r\n });\r\n\r\n this.setDefaultQueryParams({ sort: params.sort || PlaylistSortType.Newest });\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistsView getPlaylistAppLink={getPlaylistAppLink}\r\n key={params.sort}\r\n getSortAppLink={getSortAppLink}\r\n sort={PlaylistSortHelper.getSortTypeFromName(params.sort)}\r\n />\r\n );\r\n }\r\n\r\n public playlist(id: string): void {\r\n // TODO Replace this\r\n const getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n });\r\n\r\n const getSeriesAppLink = (series: Series) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME\r\n });\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistView\r\n key={id}\r\n playlistId={id}\r\n application={AppChannels.PLAYLISTS}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n allowEdit\r\n />\r\n );\r\n }\r\n\r\n public newPlaylist(): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <NewPlaylistView application={AppChannels.PLAYLISTS} closePopup={() => this.layout.closePopup()} />\r\n );\r\n }\r\n\r\n public editPlaylist(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditPlaylistView key={id} playlistId={id} closePopup={() => this.layout.closePopup()} />\r\n );\r\n }\r\n\r\n public deletePlaylist(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeletePlaylistView\r\n key={id}\r\n playlistId={id}\r\n routeToOnDelete={{\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME\r\n }}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n\r\n public addToPlaylist(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <AddToPlaylistView key={videoId} videoId={videoId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public removeVideoFromPlaylist(videoId: string, playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveVideoFromPlaylistView\r\n key={`${videoId}:${playlistId}`}\r\n videoId={videoId}\r\n playlistId={playlistId}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, HashObject } from '@clickview/common';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nimport { SearchResultsView } from 'apps/search/views';\r\n\r\nclass SearchAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'search(/)': 'index'\r\n };\r\n }\r\n}\r\n\r\nexport class SearchApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Search Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n public static get router(): typeof SearchAppRouter {\r\n return SearchAppRouter;\r\n }\r\n\r\n public index(queryParams?: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SearchResultsView queryParams={queryParams} />);\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactIntersectionObserver from 'react-intersection-observer';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { Text } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { DivButton } from 'shared/components';\r\n\r\nimport { FilterContext, FilterPayloadType } from 'apps/search/reducers';\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterHelper } from 'apps/search/utils';\r\n\r\nconst namespace = 'search.filterActions';\r\n\r\nconst triggerAppLink = (stateChange: FilterPayloadType) => {\r\n const currentQueryParams = Core.LocationUtils.GetQuery();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME,\r\n params: FilterHelper.buildQueryParams(currentQueryParams, stateChange)\r\n });\r\n};\r\n\r\ninterface FilterActionsProps extends FilterPayloadType {\r\n}\r\n\r\nFilterActions.defaultProps = {\r\n active: false\r\n};\r\n\r\nexport function FilterActions(props: FilterActionsProps): JSX.Element {\r\n const { dispatch } = React.useContext(FilterContext);\r\n\r\n const [ triggerOnClose, setTriggerOnClose ] = React.useState(false);\r\n let [ ref, inView ] = ReactIntersectionObserver.useInView();\r\n\r\n React.useEffect(() => {\r\n if (typeof (window as any).IntersectionObserver === 'undefined')\r\n return;\r\n\r\n if (inView) {\r\n setTriggerOnClose(true);\r\n return;\r\n }\r\n\r\n if (!inView && triggerOnClose) {\r\n setTriggerOnClose(false);\r\n applyFilter();\r\n }\r\n }, [inView]);\r\n\r\n function applyFilter(): void {\r\n // The default value should not be set as a query param\r\n const isDefaultValue = props?.selection?.default;\r\n\r\n const payload: FilterPayloadType = {\r\n filter: props.filter,\r\n active: props.active && !isDefaultValue,\r\n selection: (props.selection && !isDefaultValue) ? props.selection : null\r\n };\r\n\r\n dispatch({ type: 'apply', payload });\r\n triggerAppLink(payload);\r\n }\r\n\r\n function onClickReset(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n const payload: FilterPayloadType = {\r\n filter: props.filter,\r\n active: false,\r\n selection: null\r\n };\r\n\r\n dispatch({ type: 'reset', payload });\r\n triggerAppLink(payload);\r\n }\r\n\r\n function onClickApply(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n applyFilter();\r\n }\r\n\r\n return (\r\n <div ref={ref} className='d-flex justify-content-between'>\r\n <DivButton className='text-muted hover-text-underline cursor-pointer' onClick={onClickReset}>\r\n <Text namespace={namespace} phrase='reset' />\r\n </DivButton>\r\n\r\n <DivButton className='info-link' onClick={onClickApply}>\r\n <Text namespace={namespace} phrase='apply' />\r\n </DivButton>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { SearchFilter, MoreFilters } from 'apps/search/interfaces';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nimport styles from './filter-button.scss';\r\n\r\ninterface FilterButtonProps {\r\n filter: SearchFilter | MoreFilters;\r\n}\r\n\r\nexport function FilterButton(props: FilterButtonProps): JSX.Element {\r\n const FilterComponent = FilterHelper.mapTypeToComponent(props.filter.type);\r\n\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.name];\r\n\r\n return (\r\n <Dropdown>\r\n <Dropdown.Toggle\r\n id={props.filter.name}\r\n className={`${styles.filterButton} btn mx-1 ${filterState.active ? 'btn-info' : 'btn-light'}`}\r\n >\r\n {props.filter.label}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu onClick={(e: React.MouseEvent) => e.stopPropagation()}>\r\n <div className={`${styles.filterItem} mx-1 px-2 py-1`}>\r\n <FilterComponent filter={props.filter} />\r\n </div>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterButton\":\"cv--filterButton--2LJ1G\",\"filterItem\":\"cv--filterItem--13K5j\"};","import * as React from 'react';\r\n\r\ninterface CheckboxFilterProps {}\r\n\r\nexport function CheckboxFilter(props: CheckboxFilterProps): JSX.Element {\r\n return (\r\n <></>\r\n );\r\n}","export * from './checkbox-filter/CheckboxFilter';\r\nexport * from './more-filters/MoreFilters';\r\nexport * from './radio-filter/RadioFilter';\r\nexport * from './switch-filter/SwitchFilter';","import * as React from 'react';\r\n\r\ninterface MoreFiltersProps {}\r\n\r\nexport function MoreFilters(props: MoreFiltersProps): JSX.Element {\r\n return (\r\n <></>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from 'apps/search/components';\r\n\r\nimport styles from './radio-filter.scss';\r\n\r\ninterface RadioFilterProps {\r\n filter: SearchFilter;\r\n}\r\n\r\nexport function RadioFilter(props: RadioFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n\r\n const filterState = state[props.filter.name];\r\n\r\n const initialState = filterState.selection\r\n ? filterState.selection\r\n : props.filter.options.find(o => o.default);\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(initialState);\r\n\r\n const onChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\r\n const option = props.filter.options.find(o => {\r\n return o.name === (e.target as HTMLInputElement).name;\r\n });\r\n\r\n setCurrentSelection(option);\r\n };\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.label}</h3>\r\n\r\n <Form className='mb-3'>\r\n {props.filter.options.map(option => {\r\n const isSelected = currentSelection && option.name === currentSelection.name;\r\n\r\n return (\r\n <Form.Check\r\n key={option.name}\r\n custom\r\n type='radio'\r\n label={option.label}\r\n name={option.name}\r\n id={option.name}\r\n value={option.name}\r\n onChange={onChange}\r\n checked={isSelected}\r\n className={styles.radioFilter}\r\n />\r\n );\r\n })}\r\n </Form>\r\n\r\n <FilterActions active={!!currentSelection} filter={props.filter} selection={currentSelection} />\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radioFilter\":\"cv--radioFilter--3srm_\"};","import * as React from 'react';\r\n\r\nimport { FilterProps } from 'apps/search/interfaces';\r\nimport { FilterActions } from 'apps/search/components';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { DivButton } from 'shared/components';\r\n\r\nexport function SwitchFilter(props: FilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.name];\r\n\r\n const [ active, setActive ] = React.useState<boolean>(filterState.active);\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.label}</h3>\r\n <p className='d-inline-block w-75 mr-auto'>{props.filter.description}</p>\r\n\r\n <DivButton\r\n onClick={() => setActive(!active)}\r\n className={`d-inline-block float-right align-top custom-toggle toggle-option ${active ? 'on' : ''}`}\r\n >\r\n <span className='handle' />\r\n </DivButton>\r\n\r\n <FilterActions active={active} filter={props.filter} />\r\n </>\r\n );\r\n}","export * from './search-filters/SearchFilters';\r\nexport * from './search-filters/PartialSearchFilters';\r\nexport * from './filter-button/FilterButton';\r\nexport * from './filter-actions/FilterActions';\r\nexport * from './reset-button/ResetButton';\r\nexport * from './filter-types';","import * as React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { Text } from '@clickview/shared';\r\n\r\nimport { DivButton } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterHelper } from 'apps/search/utils';\r\n\r\ninterface ResetButtonProps {\r\n currentQueryParam: string;\r\n}\r\n\r\nexport function ResetButton(props: ResetButtonProps): JSX.Element {\r\n const { dispatch } = React.useContext(FilterContext);\r\n\r\n const onClickReset = () => {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME,\r\n params: { query: props.currentQueryParam }\r\n });\r\n\r\n const initialState = FilterHelper.deriveInitialStateFromQuery();\r\n dispatch({\r\n type: 'bulk-reset',\r\n payload: initialState\r\n });\r\n };\r\n\r\n return (\r\n <DivButton\r\n onClick={onClickReset}\r\n className='hover-text-underline cursor-pointer d-flex align-items-center ml-2'\r\n >\r\n <Text namespace='search.resetButton' phrase='reset' />\r\n </DivButton>\r\n );\r\n}","import * as React from 'react';\r\nimport styles from './search-filters.scss';\r\n\r\nexport function PartialSearchFilters(): JSX.Element {\r\n return (\r\n <div className='mt-3 d-flex'>\r\n <div className={`\r\n ${styles.partialFilterHeading}\r\n partial-loading-background\r\n d-inline-block\r\n pr-2\r\n border-right\r\n d-flex\r\n align-items-center\r\n my-auto\r\n `} />\r\n\r\n <div className='d-flex pl-1'>\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { HashObject } from '@clickview/common';\r\nimport { LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nimport { FilterButton, ResetButton } from 'apps/search/components';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterReducer, FilterContext } from 'apps/search/reducers';\r\n\r\ninterface SearchFiltersProps {\r\n queryParams: HashObject;\r\n}\r\n\r\nexport function SearchFilters({ queryParams }: SearchFiltersProps): JSX.Element {\r\n const mainFilters = FilterHelper.getMainFilters();\r\n const moreFilters = FilterHelper.getMoreFilters();\r\n\r\n const initialState = React.useMemo(() => {\r\n return FilterHelper.deriveInitialStateFromQuery(queryParams, mainFilters, moreFilters);\r\n }, [queryParams.toString()]);\r\n\r\n const [ state, dispatch ] = React.useReducer(FilterReducer, initialState);\r\n\r\n return (\r\n <FilterContext.Provider value={{ state, dispatch }}>\r\n <LanguageNamespaceContext.Provider value='search.searchFilters'>\r\n <section className='mt-3 d-flex'>\r\n <h2 className='h5 mb-0 d-inline-block pr-2 border-right d-flex align-items-center'><Text phrase='heading' /></h2>\r\n\r\n <div className='d-flex pl-1'>\r\n {mainFilters.map(f => <FilterButton key={f.name} filter={f} />)}\r\n\r\n <FilterButton key={moreFilters.name} filter={moreFilters} />\r\n\r\n {FilterHelper.hasActiveFilters(queryParams) &&\r\n <ResetButton currentQueryParam={queryParams.query} />\r\n }\r\n </div>\r\n </section>\r\n </LanguageNamespaceContext.Provider>\r\n </FilterContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialFilterHeading\":\"cv--partialFilterHeading--2zHGT\",\"partialButton\":\"cv--partialButton--3Gy7Y\"};","import { BaseSearchAppVariables, SearchAppLinks } from '@clickview/shared';\r\nimport { Actions as DashboardActions } from '@clickview/dashboard';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport class SearchAppVariables extends BaseSearchAppVariables {\r\n public get appLinks(): SearchAppLinks {\r\n /**\r\n * These will eventually be swapped out for their actual applinks\r\n */\r\n return {\r\n searchResults: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n series: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES\r\n },\r\n\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: 'play:page' // TODO: Change to a constant\r\n },\r\n\r\n tagSearch: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n topic: {\r\n application: AppChannels.SUBJECT,\r\n action: DashboardActions.Classifications.CLASSIFICATION\r\n }\r\n };\r\n }\r\n}","import { Flight } from '@clickview/common';\r\n\r\nconst endpoints = {\r\n search: (query: string) => `api/search?query=${query}` // This is currently mocked in HomeController\r\n};\r\n\r\nexport const SearchRequests = {\r\n search(query: string): Flight.Request {\r\n return {\r\n url: endpoints.search(query),\r\n key: `search:${query}`,\r\n normalize: false,\r\n formatData: (jsonData: any) => {\r\n const data = JSON.parse(jsonData); // won't need to do this i think when we stop using mock data\r\n\r\n return {\r\n subjects: data.subjects || [],\r\n videos: data.videos || [],\r\n playlists: data.playlists || [],\r\n series: data.series || []\r\n };\r\n }\r\n };\r\n }\r\n};","export * from './SearchRequests';","import { createContext } from 'react';\r\n\r\nimport { ReducerActions } from '@clickview/common';\r\nimport { SearchFilter, FilterNames, FilterOption } from 'apps/search/interfaces';\r\n\r\nexport type FilterState = {\r\n [key in FilterNames]: {\r\n active: boolean;\r\n selection?: FilterOption;\r\n }\r\n};\r\n\r\nexport type FilterActionType = 'apply' | 'reset' | 'bulk-reset';\r\n\r\nexport interface FilterPayloadType {\r\n filter: SearchFilter;\r\n active: boolean;\r\n selection?: FilterOption;\r\n}\r\n\r\n/**\r\n * Context\r\n */\r\ninterface FilterContextType {\r\n state: FilterState;\r\n dispatch: React.Dispatch<ReducerActions<FilterActionType>>;\r\n}\r\n\r\nexport const FilterContext = createContext<FilterContextType>(null);\r\n\r\n/**\r\n * Reducer - root level keys should match the filter object's corresponding \"name\" field\r\n */\r\nexport function FilterReducer(\r\n state: FilterState,\r\n action: ReducerActions<FilterActionType, FilterPayloadType>\r\n): FilterState {\r\n switch (action.type) {\r\n case 'apply':\r\n return {\r\n ...state,\r\n [action.payload.filter.name]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'reset':\r\n return {\r\n ...state,\r\n [action.payload.filter.name]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'bulk-reset':\r\n return {\r\n ...state,\r\n ...action.payload\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}","export * from './FilterReducer';","import * as React from 'react';\r\n\r\nimport { LanguageService, HashObject } from '@clickview/common';\r\n\r\nimport { SearchFilter, MoreFilters, FilterType, FilterProps, FilterOption } from 'apps/search/interfaces';\r\nimport { FilterState, FilterPayloadType } from 'apps/search/reducers';\r\nimport { SwitchFilter, RadioFilter, MoreFilters as MoreFiltersComponent, CheckboxFilter } from 'apps/search/components/filter-types';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('search.utils');\r\n\r\nexport const FilterHelper = {\r\n getMainFilters(): SearchFilter[] {\r\n return [\r\n {\r\n name: 'yearLevels', // \"name\" should match the state keys in `FilterReducer`\r\n label: getPhrase('yearLevels'),\r\n type: 'checkbox',\r\n options: [] // load async?\r\n },\r\n {\r\n name: 'type',\r\n label: getPhrase('types'),\r\n type: 'radio',\r\n options: FilterHelper.getTypeOptions()\r\n },\r\n {\r\n name: 'ratings',\r\n label: getPhrase('ratings'),\r\n type: 'rating' // TODO: change this\r\n },\r\n {\r\n name: 'interactives',\r\n label: getPhrase('interactives'),\r\n type: 'switch',\r\n description: getPhrase('interactivesDescription')\r\n },\r\n {\r\n name: 'clips',\r\n label: getPhrase('clips'),\r\n type: 'switch',\r\n description: getPhrase('clipsDescription')\r\n }\r\n ];\r\n },\r\n\r\n getMoreFilters(): MoreFilters {\r\n return {\r\n name: 'moreFilters',\r\n label: getPhrase('moreFilters'),\r\n type: 'more-filters',\r\n filters: []\r\n };\r\n },\r\n\r\n mapTypeToComponent(type: FilterType): (props: FilterProps) => JSX.Element {\r\n switch (type) {\r\n case 'switch':\r\n return (props: any) => <SwitchFilter key={props.name} {...props} />;\r\n case 'checkbox':\r\n return (props: any) => <CheckboxFilter key={props.name} {...props} />;\r\n case 'radio':\r\n return (props: any) => <RadioFilter key={props.name} {...props} />;\r\n case 'rating':\r\n return (props: any) => <SwitchFilter key={props.name} {...props} />;\r\n case 'more-filters':\r\n return (props: any) => <MoreFiltersComponent key={props.name} {...props} />;\r\n }\r\n },\r\n\r\n deriveInitialStateFromQuery(\r\n queryParams: HashObject = {},\r\n mainFilters: SearchFilter[] = null,\r\n moreFilters: MoreFilters = null\r\n ): FilterState {\r\n return {\r\n yearLevels: {\r\n active: !!queryParams.yearLevels,\r\n selection: queryParams.yearLevels || null\r\n },\r\n type: {\r\n active: !!queryParams.type,\r\n selection: queryParams.type\r\n ? mainFilters\r\n .find(f => f.name === 'type')\r\n .options.find(o => o.name === queryParams.type)\r\n : null\r\n },\r\n ratings: {\r\n active: !!queryParams.ratings,\r\n selection: queryParams.ratings || null\r\n },\r\n interactives: {\r\n active: queryParams.interactives\r\n },\r\n clips: {\r\n active: queryParams.clips\r\n },\r\n moreFilters: {\r\n active: false // TODO: figure this shit out\r\n }\r\n };\r\n },\r\n\r\n buildQueryParams(queryParams: HashObject, state: FilterPayloadType): HashObject {\r\n const { name: param, type } = state.filter;\r\n\r\n const updatedParams = { ...queryParams };\r\n\r\n switch (type) {\r\n case 'switch':\r\n updatedParams[param] = state.active ? 'true' : '';\r\n break;\r\n\r\n case 'radio':\r\n updatedParams[param] = FilterHelper.getRadioParamValue(state.selection);\r\n break;\r\n }\r\n\r\n if (!updatedParams[param]) // If the param is empty, delete it\r\n delete updatedParams[param];\r\n\r\n return updatedParams;\r\n },\r\n\r\n hasActiveFilters(queryParams: HashObject): boolean {\r\n return Object.keys(queryParams).length > 1;\r\n },\r\n\r\n getTypeOptions(): FilterOption[] {\r\n return [\r\n {\r\n name: 'allTypes',\r\n label: getPhrase('allTypes'),\r\n default: true\r\n },\r\n {\r\n name: 'topics',\r\n label: getPhrase('topics')\r\n },\r\n {\r\n name: 'playlists',\r\n label: getPhrase('playlists')\r\n },\r\n {\r\n name: 'series',\r\n label: getPhrase('series')\r\n },\r\n {\r\n name: 'videos',\r\n label: getPhrase('videos')\r\n }\r\n ];\r\n },\r\n\r\n getRadioParamValue(selection: FilterOption): string {\r\n if (!selection || selection.default)\r\n return '';\r\n\r\n return selection.name;\r\n }\r\n};","import * as React from 'react';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ArrayHelper, Core, LanguageService } from '@clickview/common';\r\nimport { Video, Series, Playlist, VideoList, PresentationAudience } from '@clickview/shared';\r\nimport { FixedWidget, PlaylistWidgetItem, SeriesWidgetItem, WidgetContents } from '@clickview/dashboard';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { SearchResults, MainSearchResults, OtherSearchResultSet, OtherSearchResults } from 'apps/search/interfaces';\r\n\r\nconst Capacities = {\r\n MainResults: {\r\n SUBJECTS: 10,\r\n PLAYLISTS: 5,\r\n SERIES: 4\r\n },\r\n\r\n OtherResults: {\r\n VIDEOS: 6,\r\n PLAYLISTS: 10,\r\n SERIES: 10\r\n }\r\n};\r\n\r\nexport const SearchHelper = {\r\n /**\r\n * These are the results that appear at the very top of the page\r\n */\r\n filterMainResults(results: SearchResults): MainSearchResults {\r\n const { MainResults } = Capacities;\r\n\r\n const subjects = ArrayHelper.firstFew(results.subjects, MainResults.SUBJECTS);\r\n const firstVideo = ArrayHelper.first(results.videos);\r\n const playlists = ArrayHelper.firstFew(results.playlists, MainResults.PLAYLISTS);\r\n const series = ArrayHelper.firstFew(results.series, MainResults.SERIES);\r\n\r\n return {\r\n subjects,\r\n firstVideo,\r\n playlists,\r\n series,\r\n otherResults: { // All excess results are displayed in a different format defined below\r\n videos: ArrayHelper.lastFew(results.videos, results.videos.length - 1),\r\n playlists: ArrayHelper.lastFew(results.playlists, results.playlists.length - MainResults.PLAYLISTS),\r\n series: ArrayHelper.lastFew(results.series, results.series.length - MainResults.SERIES)\r\n }\r\n };\r\n },\r\n\r\n structureOtherResults(results: OtherSearchResults): OtherSearchResultSet[] {\r\n const { OtherResults } = Capacities;\r\n\r\n const videoSets = ArrayHelper.chunk<Video>(results.videos, OtherResults.VIDEOS);\r\n const playlistSets = ArrayHelper.chunk<Playlist>(results.playlists, OtherResults.PLAYLISTS);\r\n const seriesSets = ArrayHelper.chunk<Series>(results.series, OtherResults.SERIES);\r\n\r\n return SearchHelper.buildResultStructure(videoSets, playlistSets, seriesSets);\r\n },\r\n\r\n // For every 6 videos, there should be either a row of playlists or a row of series (alternating)\r\n buildResultStructure(\r\n videoSets: Video[][],\r\n playlistSets: Playlist[][],\r\n seriesSets: Series[][]\r\n ): OtherSearchResultSet[] {\r\n const structure: OtherSearchResultSet[] = [];\r\n\r\n // Clone each set as we need to use a mutable structure, but don't want to mutate the inputs directly\r\n const videosClone = [...videoSets];\r\n const playlistsClone = [...playlistSets];\r\n const seriesClone = [...seriesSets];\r\n\r\n // We set the iterations here instead of in the for-loop args because `videoSets` gets mutated\r\n const iterations = videoSets.length;\r\n for (let index = 0; index < iterations; index++) {\r\n const nextVideoSet = videosClone.shift();\r\n\r\n // After every video set will come a set of playlists or series\r\n const seriesOrPlaylistSet = SearchHelper.getSeriesOrPlaylistSet(playlistsClone, seriesClone, index);\r\n\r\n nextVideoSet && structure.push({ type: 'video', data: nextVideoSet });\r\n seriesOrPlaylistSet && structure.push(seriesOrPlaylistSet);\r\n }\r\n\r\n // In edge cases where there may be more playlists or series result sets than video sets, add them to the end\r\n if (playlistsClone.length) {\r\n playlistsClone.forEach(data => structure.push({ type: 'playlist', data }));\r\n }\r\n\r\n if (seriesClone.length) {\r\n seriesClone.forEach(data => structure.push({ type: 'series', data }));\r\n }\r\n\r\n // Remove any empty sets\r\n return structure.filter(set => set.data && !!set.data.length);\r\n },\r\n\r\n /**\r\n * Determines whether or not a playlist or series set should be added to the results structure next.\r\n */\r\n getSeriesOrPlaylistSet(playlists: Playlist[][], series: Series[][], videoSetIndex: number): OtherSearchResultSet {\r\n const isOdd = videoSetIndex % 2 === 0; // If odd, add a series set. If even, add a playlist set.\r\n\r\n if ((isOdd && series.length) || !playlists.length)\r\n return { type: 'series', data: series.shift() };\r\n\r\n if ((!isOdd && playlists.length) || !series.length)\r\n return { type: 'playlist', data: playlists.shift() };\r\n\r\n // We will only reach this point once we have run out of series and playlist results\r\n return null;\r\n },\r\n\r\n getResultSetComponent(set: OtherSearchResultSet, audiences: PresentationAudience[]): JSX.Element {\r\n switch (set.type) {\r\n case 'video':\r\n return (\r\n <div className='pb-3'>\r\n <VideoList\r\n videos={set.data as Video[]}\r\n getVideoAppLink={SearchHelper.getVideoAppLink}\r\n getSeriesAppLink={SearchHelper.getSeriesAppLink}\r\n />\r\n </div>\r\n );\r\n\r\n case 'playlist':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedPlaylists')}\r\n collection={set.data as Playlist[]}\r\n childAppLink={SearchHelper.getPlaylistAppLink()}\r\n childComponent={(childProps: any) => (\r\n <PlaylistWidgetItem\r\n {...childProps}\r\n presentationAudiences={audiences}\r\n />\r\n )}\r\n contents={WidgetContents.Playlists}\r\n />\r\n </div>\r\n );\r\n\r\n case 'series':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedSeries')}\r\n collection={set.data}\r\n childAppLink={SearchHelper.getSeriesAppLink()}\r\n childComponent={(childProps: any) => (\r\n <SeriesWidgetItem\r\n {...childProps}\r\n audiences={audiences}\r\n />\r\n )}\r\n contents={WidgetContents.Series}\r\n />\r\n </div>\r\n );\r\n }\r\n },\r\n\r\n getVideoAppLink(video: Video): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: 'play:video', // TODO: Change to constant\r\n args: [video.id]\r\n };\r\n },\r\n\r\n getSeriesAppLink(series?: Series): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: series ? [series.id] : []\r\n };\r\n },\r\n\r\n getPlaylistAppLink(playlist?: Playlist): Core.AppLink {\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: playlist ? [playlist.id] : []\r\n };\r\n },\r\n};","export * from './FilterHelper';\r\nexport * from './SearchHelper';","export * from './search-results/SearchResultsView';","import * as React from 'react';\r\n\r\nimport { PartialPlaylistList, PartialVideoList } from '@clickview/shared';\r\nimport { PartialSeriesList } from '@clickview/dashboard';\r\n\r\nimport { PartialSearchFilters } from 'apps/search/components';\r\n\r\nimport styles from './search-results.scss';\r\n\r\nexport function PartialSearchResultsView(): JSX.Element {\r\n return (\r\n <>\r\n <div className={`${styles.partialHeading} partial-loading-background`} />\r\n\r\n <PartialSearchFilters />\r\n\r\n <div role='separator' className='border-bottom my-2' />\r\n\r\n {/* <PartialVideoItem /> */}\r\n\r\n <PartialPlaylistList />\r\n\r\n <PartialSeriesList />\r\n\r\n <PartialVideoList />\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { HashObject, Flight, Core } from '@clickview/common';\r\nimport { Text, VideoItem, PresentationAudience, LanguageNamespaceContext, VideoActionsContext } from '@clickview/shared';\r\nimport { DynamicWidget, Actions as DashboardActions, SubjectWidgetItem } from '@clickview/dashboard';\r\n\r\nimport { SearchFilters } from 'apps/search/components';\r\nimport { SearchRequests } from 'apps/search/flight-requests';\r\nimport { SearchHelper } from 'apps/search/utils';\r\nimport { SearchResults } from 'apps/search/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants';\r\nimport { AudienceRequests } from 'shared/flight-requests';\r\nimport { getVideoActionAppLink } from 'shared/utils';\r\n\r\nimport { PartialSearchResultsView } from './PartialSearchResultsView';\r\n\r\nconst namespace = 'search.searchResults';\r\n\r\nconst classificationAppLink: Core.AppLink = {\r\n application: AppChannels.SUBJECT,\r\n action: DashboardActions.Classifications.CLASSIFICATION\r\n};\r\n\r\ninterface SearchResultsViewProps {\r\n queryParams: HashObject;\r\n}\r\n\r\nexport function SearchResultsView({ queryParams }: SearchResultsViewProps): JSX.Element {\r\n const results = Flight.useBasicFetch<SearchResults>(SearchRequests.search(queryParams.query));\r\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(AudienceRequests.presentationAudiences());\r\n\r\n if (!results.data || !audiences.data)\r\n return <PartialSearchResultsView />;\r\n\r\n const mainResults = SearchHelper.filterMainResults({ ...results.data });\r\n const otherResults = SearchHelper.structureOtherResults({ ...mainResults.otherResults });\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <h1 className='h2'><Text phrase='heading' /></h1>\r\n\r\n <SearchFilters queryParams={queryParams} />\r\n\r\n <hr />\r\n\r\n <section>\r\n <VideoActionsContext.Provider value={{ getActionAppLink: getVideoActionAppLink }}>\r\n {!!mainResults.subjects.length &&\r\n <DynamicWidget\r\n collection={mainResults.subjects}\r\n childAppLink={classificationAppLink}\r\n childComponent={SubjectWidgetItem}\r\n headingPhraseKey='topics'\r\n />\r\n }\r\n\r\n {!!mainResults.firstVideo &&\r\n <div className='pb-2'>\r\n <VideoItem\r\n video={mainResults.firstVideo}\r\n getVideoAppLink={SearchHelper.getVideoAppLink}\r\n getSeriesAppLink={SearchHelper.getSeriesAppLink}\r\n />\r\n </div>\r\n }\r\n\r\n {!!mainResults.playlists.length &&\r\n SearchHelper.getResultSetComponent({\r\n type: 'playlist',\r\n data: mainResults.playlists\r\n }, audiences.data)\r\n }\r\n\r\n {!!mainResults.series.length &&\r\n SearchHelper.getResultSetComponent({\r\n type: 'series',\r\n data: mainResults.series\r\n }, audiences.data)\r\n }\r\n\r\n {otherResults.map((resultSet, i) =>\r\n <React.Fragment key={i}>\r\n {SearchHelper.getResultSetComponent(resultSet, audiences.data)}\r\n </React.Fragment>\r\n )}\r\n </VideoActionsContext.Provider>\r\n </section>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialHeading\":\"cv--partialHeading--1c2gx\"};","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\nimport { LayoutRegions, Video, Series } from '@clickview/shared';\r\nimport { ClassificationView, PreferencesView } from '@clickview/dashboard';\r\nimport { PlaylistView } from '@clickview/playlists';\r\n\r\nimport { AppChannels, Layouts, Actions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass SubjectAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'subjects/preferences?step=subjects': 'preferences',\r\n 'subjects/:id/playlists/:playlistId(/)': 'playlist',\r\n 'subjects/:id(/)': 'classification',\r\n 'series/:id': 'series'\r\n };\r\n }\r\n}\r\n\r\nexport class SubjectApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Subject Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SubjectAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get appChannels(): HashObject<string> {\r\n return {\r\n dashboard: AppChannels.DASHBOARD,\r\n subject: AppChannels.SUBJECT\r\n };\r\n }\r\n\r\n public classification(classificationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <ClassificationView\r\n key={classificationId}\r\n id={classificationId}\r\n appChannels={this.appChannels}\r\n />);\r\n }\r\n\r\n public playlist(id: string, playlistId: string): void {\r\n const getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n });\r\n\r\n const getSeriesAppLink = (series: Series) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n });\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistView\r\n playlistId={playlistId}\r\n application={AppChannels.PLAYLISTS}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n allowEdit\r\n />\r\n );\r\n }\r\n\r\n public preferences({ step = 'subjects' }: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PreferencesView\r\n application={AppChannels.SUBJECT}\r\n step={step}\r\n />\r\n );\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {}\r\n}","import './apps/search/components/filter-actions/filter-actions.lang.json'; import './apps/search/components/reset-button/reset-button.lang.json'; import './apps/search/components/search-filters/search-filters.lang.json'; import './apps/search/utils/search-utils.lang.json'; import './apps/search/views/search-results/search-results.lang.json'; import './shared/components/clips/clips.lang.json'; import './shared/components/immersive-reader/immersive-reader.lang.json'; import './shared/components/interactives/interactives.lang.json'; import './shared/components/play-page/play-page.lang.json'; import './shared/components/synopsis/synopsis.lang.json'; import './shared/components/upload-file-select/upload-file-select.lang.json'; import './shared/components/uploading-item/uploading-item.lang.json'; import './shared/components/user-options/user-options.lang.json'; import './shared/components/video-details/video-details.lang.json'; import './shared/errors/not-found/not-found.lang.json'; import './shared/layouts/teacher-layout/drag-mask/drag-mask.lang.json'; import './shared/services/video-upload-services.lang.json'; import './shared/views/favorite-videos/favorite-videos-view.lang.json'; import './shared/views/left-nav/left-nav-view.lang.json'; import './shared/views/my-uploads/my-uploads-view.lang.json'; import './shared/views/series/series-view.lang.json';\r\n\r\nimport './styles';\r\n\r\n/**\r\n * Files that are needed by outside projects. E.g. applications, services.\r\n */\r\nexport * from './shared/constants';\r\nexport * from './shared/errors';\r\nexport * from './shared/layouts';\r\nexport * from './shared/services';\r\n\r\nexport * from './apps/default/LiteDefaultApplication';\r\n\r\nexport * from './apps/playlists/LitePlaylistsApplication';\r\nexport * from './apps/embed/LiteEmbedApplication';\r\nexport * from './apps/dashboard/LiteDashboardApplication';\r\nexport * from './apps/subjects/LiteSubjectApplication';\r\nexport * from './apps/search/LiteSearchApplication';\r\nexport * from './apps/content-updates/LiteContentUpdatesApplication';\r\n\r\nexport * from './apps/search/constants/SearchAppVariables';\r\n\r\nexport * from './apps/notifications/LiteNotificationsApplication';\r\nexport * from './apps/notifications/constants/NotificationsAppVariables';","import * as React from 'react';\r\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { Clip, SvgContainer, cvSvgLibrary, SvgContainerSize, DurationHelper, Badge, BadgeType } from '@clickview/shared';\r\n\r\nimport styles from './clips.scss';\r\n\r\nfunction ClipDuration(props: ClipItemProps): JSX.Element {\r\n const { clip } = props;\r\n\r\n const clipLength = clip.endTime - clip.startTime;\r\n\r\n const displayDuration = DurationHelper.ToDisplayDuration(clipLength * 1000);\r\n\r\n const duration = props.duration / 1000;\r\n const start = (clip.startTime / duration) * 100;\r\n const length = (clipLength / duration) * 100;\r\n\r\n const overlay = (\r\n <Tooltip id={`tooltip-top`}>\r\n {displayDuration}\r\n </Tooltip>\r\n );\r\n\r\n return (\r\n <div className={`${styles.bar} rounded mt-2`}>\r\n <OverlayTrigger overlay={overlay}>\r\n <div\r\n className={`${styles.subBar} bg-primary rounded`}\r\n style={{ width: `${length}%`, marginLeft: `${start}%` }}>\r\n </div>\r\n </OverlayTrigger>\r\n </div>\r\n );\r\n}\r\n\r\ninterface ClipItemProps {\r\n clip: Clip;\r\n duration: number;\r\n}\r\n\r\nexport function ClipItem(props: ClipItemProps): JSX.Element {\r\n const { clip } = props;\r\n\r\n const clipLength = clip.endTime - clip.startTime;\r\n\r\n return (\r\n <div className='border rounded w-33 py-3 px-1 d-flex align-items-center mr-3 flex-wrap'>\r\n <div className='d-flex align-self-center w-100'>\r\n <SvgContainer\r\n className='svg-container align-self-center'\r\n svgName={cvSvgLibrary.Play}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n <span className={styles.content}>\r\n <div className='d-flex'>\r\n <h3 className={`h6 mb-0 d-inline-block text-truncate`} title={clip.name}>\r\n {clip.name}\r\n </h3>\r\n <div className='flex-shrink-0'>\r\n <Badge type={ BadgeType.Duration } data={clipLength * 1000} />\r\n </div>\r\n </div>\r\n {clip.description &&\r\n <p className={`${styles.clampedDescription} mb-0 clamp-2`} title={clip.description}>{clip.description}</p>}\r\n <ClipDuration {...props} />\r\n </span>\r\n <SvgContainer\r\n className='svg-container align-self-center'\r\n svgName={cvSvgLibrary.More}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Text, Video, cvSvgLibrary, IconButton, SvgContainer } from '@clickview/shared';\r\n\r\nimport { ClipItem } from './ClipItem';\r\n\r\nconst namespace = 'shared.clips';\r\n\r\ninterface ClipsProps {\r\n video: Video;\r\n}\r\n\r\nexport function Clips(props: ClipsProps): JSX.Element {\r\n const { video } = props;\r\n\r\n const hasClips = video?.clips?.data?.length;\r\n\r\n return (\r\n <div className='pb-3'>\r\n <h2 className='h4'>\r\n <Text namespace={namespace} phrase='clips' />\r\n <IconButton className='btn btn-outline-dark ml-3 align-middle' svgName={cvSvgLibrary.Plus}>\r\n <Text namespace={namespace} phrase='create' />\r\n </IconButton>\r\n </h2>\r\n <div className='d-flex align-items-stretch'>\r\n {hasClips\r\n ? video.clips.data.map(c => <ClipItem duration={video.duration} clip={c} key={c.id} />)\r\n : <div>\r\n <SvgContainer className='svg-container mr-2 align-top' svgName={cvSvgLibrary.Star} />\r\n <Text namespace={namespace} phrase='empty' />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--22tRu\",\"clamped\":\"cv--clamped--_LK8Q\",\"clampedDescription\":\"cv--clampedDescription--18yOL\",\"bar\":\"cv--bar--3-kb8\",\"subBar\":\"cv--subBar--1ROlV\"};","import * as React from 'react';\r\n\r\ninterface DivButtonProps extends React.ButtonHTMLAttributes<HTMLDivElement> {\r\n onClick: (...args: any) => any;\r\n}\r\n\r\n/**\r\n * This element lets us use `div` elements as buttons without losing the accessibility of\r\n * a regular HTML button element\r\n */\r\nexport function DivButton(props: React.PropsWithChildren<DivButtonProps>): JSX.Element {\r\n return (\r\n <div\r\n role='button'\r\n tabIndex={0}\r\n className={props.className ? props.className : ''}\r\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && props.onClick(e)}\r\n onClick={props.onClick}\r\n >\r\n {props.children}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { SvgContainer, cvSvgLibrary, AppLink, SeriesLink, Video, Series } from '@clickview/shared';\r\n\r\nimport { PlayerContext } from 'shared/contexts';\r\nimport { WebPlayer } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport styles from './floating-player.scss';\r\n\r\nfunction getSeriesAppLink(id: string): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [id]\r\n };\r\n}\r\n\r\nfunction getVideoAppLink(id: string): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [id]\r\n };\r\n}\r\n\r\ninterface FloatingPlayerTitleProps {\r\n video: Video;\r\n}\r\n\r\nfunction FloatingPlayerTitle(props: FloatingPlayerTitleProps): JSX.Element {\r\n const { video } = props;\r\n\r\n return (\r\n <h2 className='mb-0 h6'>\r\n {!!video.series && <SeriesLink video={video} appLink={getSeriesAppLink(video.series.id)} />}\r\n <AppLink appLink={getVideoAppLink(video.id)}>\r\n {video.name}\r\n </AppLink>\r\n </h2>\r\n );\r\n}\r\n\r\nexport function FloatingPlayer(): React.ReactElement {\r\n const { video, webPlayerUrl, viewportPosition, setVideo, isOnPlayPage } = React.useContext(PlayerContext);\r\n\r\n if (!video)\r\n return <></>;\r\n\r\n let style = {};\r\n let className = styles.fixed;\r\n\r\n if (viewportPosition) {\r\n className = styles.inline;\r\n style = viewportPosition;\r\n }\r\n\r\n /**\r\n * Add box shadow when player is floating\r\n */\r\n if (!viewportPosition)\r\n className += ' shadow';\r\n\r\n return (\r\n <div style={style} className={`${className}`}>\r\n <WebPlayer id={video.id} webPlayerHost={webPlayerUrl} className={'embed-responsive-16by9'} key={video.id} />\r\n {!viewportPosition &&\r\n <div className='p-2 bg-white d-flex justify-content-between align-items-center'>\r\n <FloatingPlayerTitle video={video} />\r\n <span className={`${styles.buttons} flex-shrink-1`}>\r\n <span className={`cursor-pointer ml-1 float-right`} role='button' tabIndex={0} onClick={() => setVideo(null)}>\r\n <SvgContainer svgName={cvSvgLibrary.Close} />\r\n </span>\r\n <AppLink appLink={getVideoAppLink(video.id)}>\r\n {!isOnPlayPage && <SvgContainer\r\n svgName={cvSvgLibrary.NewWindow}\r\n className={`${styles.flippedIcon} d-inline-block svg-container float-right`} />}\r\n </AppLink>\r\n </span>\r\n </div>}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fixed\":\"cv--fixed--3C4_W\",\"inline\":\"cv--inline--2voRI\",\"closeSvg\":\"cv--closeSvg--2RiDj\",\"buttons\":\"cv--buttons--ZbN3s\",\"flippedIcon\":\"cv--flippedIcon--3nkTw\"};","import * as React from 'react';\r\nimport * as ImmersiveReaderSdk from '@microsoft/immersive-reader-sdk';\r\n\r\nimport { Flight, LanguageService } from '@clickview/common';\r\nimport { ConfigRequests } from '@clickview/shared';\r\n\r\nimport styles from './immersive-reader.scss';\r\n\r\nconst namespace = 'shared.immersiveReader';\r\n\r\ninterface ImmersiveReaderResponse {\r\n token: string;\r\n subdomain: string;\r\n}\r\n\r\ninterface ImmersiveReaderProps {\r\n text: string;\r\n title?: string;\r\n className?: string;\r\n}\r\n\r\nexport function ImmersiveReader(props: ImmersiveReaderProps): JSX.Element {\r\n const config = Flight.useBasicFetch(ConfigRequests.config);\r\n const immersiveReaderResponse = Flight.useBasicFetch<ImmersiveReaderResponse>({\r\n url: '/api/integrations/token/immersive-reader',\r\n key: 'immersive:reader:token'\r\n });\r\n\r\n if (!config.data || !immersiveReaderResponse.data)\r\n return <></>;\r\n\r\n if (!props.title)\r\n props.title = LanguageService.getPhrase(namespace, 'titleFallback');\r\n\r\n function launchImmersiveReader(): void {\r\n // TODO: analytics\r\n\r\n const content = {\r\n title: props.title,\r\n chunks: [{\r\n content: props.text\r\n }]\r\n };\r\n\r\n const { data: { subdomain, token } } = immersiveReaderResponse;\r\n\r\n const options = {\r\n uiZIndex: 5000 // Should always appear above our content\r\n };\r\n\r\n ImmersiveReaderSdk.launchAsync(token, subdomain, content, options);\r\n }\r\n\r\n return (\r\n <div className={`${styles.button} ${props.className || ''}`} onClick={launchImmersiveReader}>\r\n <svg viewBox='0 0 40 37'>\r\n <path d='M37.4,0.9 L37.4,9.6 L35.4,9.6 L35.4,2.9 L24.4,2.9 C22.9,3.3 20,4.5 20,6 L20,17.2 L18,17.2 L18,6 C18,5 15.6,3.6 13.8,2.9 L2,2.9 L2,29 L12.4,29 L12.4,31 L0,31 L0,0.9 L14.1,0.9 L14.3,1 C15,1.2 17.5,2.2 18.9,3.7 C20.5,1.9 23.5,1.1 23.9,1 L24.1,1 L37.4,1 L37.4,0.9 Z' fill='#000000'></path>\r\n <path d='M27.4,37 L25.8,37 L18.4,29.4 L14,29.4 L14,21 L18.4,20.9 L26.1,13 L27.4,13 L27.4,37 Z M16,27.4 L19.2,27.4 L25.3,33.7 L25.3,16.6 L19.2,22.9 L15.9,22.9 L15.9,27.4 L16,27.4 Z' fill='#0197F2'></path>\r\n <path d='M31.3,32.7 L29.6,31.7 C29.6,31.7 31.7,28.3 31.7,25.2 C31.7,21.9 29.6,18.5 29.6,18.4 L31.3,17.4 C31.4,17.6 33.7,21.3 33.7,25.2 C33.7,28.8 31.4,32.6 31.3,32.7 Z' fill='#0197F2'></path>\r\n <path d='M36.4,36.2 L34.8,35 C34.8,35 38,30.8 38,25.2 C38,19.6 34.8,15.4 34.8,15.4 L36.4,14.2 C36.5,14.4 40,19 40,25.3 C40,31.5 36.5,36 36.4,36.2 Z' fill='#0197F2'></path>\r\n </svg>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"cv--button--10_KK\"};","export * from './web-player/WebPlayer';\r\nexport * from './floating-player/FloatingPlayer';\r\nexport * from './resources/Resources';\r\nexport * from './video-details/VideoDetails';\r\nexport * from './uploading-item/UploadingItem';\r\nexport * from './play-page/PlayPage';\r\nexport * from './user-options/UserOptions';\r\nexport * from './synopsis/Synopsis';\r\nexport * from './interactives/Interactives';\r\nexport * from './clips/Clips';\r\nexport * from './upload-file-select/UploadFileSelect';\r\nexport * from './div-button/DivButton';\r\nexport * from './immersive-reader/ImmersiveReader';","import * as React from 'react';\r\nimport { Text, Interactive, SvgContainer, cvSvgLibrary, SvgContainerSize } from '@clickview/shared';\r\n\r\nimport styles from './interactives.scss';\r\n\r\nconst namespace = 'shared.interactives';\r\n\r\n\r\nfunction getContributorName(interactive: Interactive): string {\r\n const { owner } = interactive;\r\n\r\n if (!owner || !owner.name || !owner.surname)\r\n return '';\r\n\r\n return owner.name.substring(0, 1) + '. ' + owner.surname;\r\n}\r\n\r\nfunction getContributorOrg(interactive: Interactive): string {\r\n const { owner } = interactive;\r\n return owner?.customers?.data?.[0]?.organisation?.name;\r\n}\r\n\r\ninterface InteractiveItemProps {\r\n interactive: Interactive;\r\n}\r\n\r\nexport function InteractiveItem(props: InteractiveItemProps): JSX.Element {\r\n const { interactive } = props;\r\n\r\n const contributor = getContributorName(interactive);\r\n const org = getContributorOrg(interactive);\r\n\r\n return (\r\n <div className='border rounded w-33 py-3 px-1 d-flex align-items-center mr-3'>\r\n <div className='d-flex align-items-center w-100'>\r\n <SvgContainer\r\n className='svg-container'\r\n svgName={cvSvgLibrary.Play}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n <span className={styles.content}>\r\n {org &&\r\n <small>{contributor && <>{contributor}, </>}<em>{org}</em></small>}\r\n <h3 className={`h6 mb-0 clamp-2 ${styles.clamped}`} title={interactive.name}>{interactive.name}</h3>\r\n <SvgContainer className='svg-container align-middle mr-1' svgName={cvSvgLibrary.Preview} />\r\n <span className='text-info'><Text namespace={namespace} phrase={'preview'} /></span>\r\n </span>\r\n <SvgContainer\r\n className='svg-container'\r\n svgName={cvSvgLibrary.More}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Text, Video, cvSvgLibrary, IconButton, SvgContainer } from '@clickview/shared';\r\n\r\nimport { InteractiveItem } from './InteractiveItem';\r\n\r\nconst namespace = 'shared.interactives';\r\n\r\ninterface InteractivesProps {\r\n video: Video;\r\n}\r\n\r\nexport function Interactives(props: InteractivesProps): JSX.Element {\r\n const { video } = props;\r\n\r\n const hasInteractives = video?.interactives?.data?.length;\r\n\r\n return (\r\n <div className='pb-3'>\r\n <h2 className='h4'>\r\n <Text namespace={namespace} phrase='interactives' />\r\n <IconButton className='btn btn-outline-dark ml-3 align-middle' svgName={cvSvgLibrary.Plus}>\r\n <Text namespace={namespace} phrase='create' />\r\n </IconButton>\r\n </h2>\r\n <div className='d-flex align-items-stretch'>\r\n {hasInteractives\r\n ? video.interactives.data.map(i => <InteractiveItem interactive={i} key={i.id} />)\r\n : <div>\r\n <SvgContainer className='svg-container mr-2 align-top' svgName={cvSvgLibrary.Star} />\r\n <Text namespace={namespace} phrase='empty' />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--1D6Hx\",\"clamped\":\"cv--clamped--2sHZC\"};","import * as React from 'react';\r\nimport { Video } from '@clickview/shared';\r\n\r\ninterface BadgesProps {\r\n video: Video;\r\n}\r\n\r\nexport function Badges(props: BadgesProps): React.ReactElement {\r\n const { video } = props;\r\n const { rating, productionYear } = video;\r\n\r\n return (\r\n <div>\r\n {rating && <span className='badge badge-light p-1 mr-1'>{rating.code}</span>}\r\n {productionYear && <span className='badge badge-light p-1 mr-1'>{productionYear}</span>}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { IconButton, cvSvgLibrary, LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nconst namespace = 'shared.playPage';\r\n\r\nexport function Buttons(): React.ReactElement {\r\n const leftBtnClasses = 'btn btn-outline-secondary mr-2';\r\n const rightBtnClasses = 'btn btn-light float-right ml-2';\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='mt-3 clearfix'>\r\n <IconButton svgName={cvSvgLibrary.Plus} className={leftBtnClasses}><Text phrase='createInteractive' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.Plus} className={leftBtnClasses}><Text phrase='createClip' /></IconButton>\r\n\r\n <IconButton svgName={cvSvgLibrary.More} className={rightBtnClasses}><Text phrase='more' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.Share} className={rightBtnClasses}><Text phrase='share' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.AddToPlaylists} className={rightBtnClasses}><Text phrase='addToPlaylist' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.Plus} className={rightBtnClasses}><Text phrase='favourite' /></IconButton>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { FunctionHelper, Core } from '@clickview/common';\r\nimport { BackButton, Video, Text, VideoList, Series, VideoActionsContext } from '@clickview/shared';\r\n\r\nimport { Resources, VideoDetailsWithScrollbar, Interactives, Clips } from 'shared/components';\r\nimport { PlayerPosition, PlayerContext } from 'shared/contexts';\r\nimport { useOnScroll, useOnResize } from 'shared/hooks';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { VideoTitle } from './VideoTitle';\r\nimport { Badges } from './Badges';\r\nimport { Buttons } from './Buttons';\r\nimport { Synopsis } from '../synopsis/Synopsis';\r\nimport { getVideoActionAppLink } from 'shared/utils';\r\n\r\nconst namespace = 'shared.playPage';\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n});\r\n\r\nfunction getUpdate(\r\n placeholder: React.MutableRefObject<HTMLElement>,\r\n setPosition: (position: PlayerPosition) => void\r\n): () => void {\r\n return () => {\r\n if (!placeholder.current)\r\n return;\r\n\r\n const rect = placeholder.current.getBoundingClientRect();\r\n const left = window.pageXOffset || document.documentElement.scrollLeft;\r\n const top = window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n /**\r\n * Only show floating player\r\n * if the normal player is no longer in view\r\n */\r\n if (rect.top < -rect.height) {\r\n setPosition(null);\r\n return;\r\n }\r\n\r\n setPosition({ top: top + rect.top, left: left + rect.left, width: rect.width });\r\n };\r\n}\r\n\r\ninterface PlayPageProps {\r\n video: Video;\r\n relatedVideos: Video[];\r\n setFavorite?: (favorite: boolean) => void;\r\n}\r\n\r\nexport function PlayPage(props: PlayPageProps): JSX.Element {\r\n const { video, relatedVideos } = props;\r\n\r\n const { setViewportPosition, setIsOnPlayPage } = React.useContext(PlayerContext);\r\n\r\n /**\r\n * TODO: Change this to default to showSynopsis if we have a glance\r\n */\r\n const [ showSynopsis, setShowSynopsis ] = React.useState(true);\r\n /**\r\n * Get reference to the placeholder domElement\r\n */\r\n const placeholder = React.useRef(null);\r\n const placeholderRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n placeholder.current = node;\r\n update();\r\n }, []);\r\n\r\n /**\r\n * Memoize so we don't call throttle repeatedly\r\n */\r\n const update = React.useMemo(() => FunctionHelper.throttle(getUpdate(placeholder, setViewportPosition), 100, {\r\n leading: true,\r\n trailing: true\r\n }), []);\r\n\r\n /**\r\n * Bind update to 'scroll' and 'resize'\r\n */\r\n useOnScroll(update);\r\n useOnResize(update);\r\n\r\n /**\r\n * Clear the position when this component is closed\r\n */\r\n React.useEffect(() => {\r\n\r\n setIsOnPlayPage(true);\r\n return () => {\r\n setViewportPosition(null);\r\n setIsOnPlayPage(false);\r\n };\r\n }, []);\r\n\r\n return (\r\n <VideoActionsContext.Provider value={{ getActionAppLink: getVideoActionAppLink }}>\r\n <div className='d-flex justify-content-between'>\r\n <BackButton\r\n appLink={{\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }}\r\n backToName='Home'\r\n />\r\n <button className='btn btn-light'><Text namespace={namespace} phrase='classroomMode' /></button>\r\n </div>\r\n <div className='embed-responsive embed-responsive-16by9 my-3' ref={placeholderRef}></div>\r\n <VideoTitle video={video} setFavorite={props.setFavorite} />\r\n <Badges video={video} />\r\n <Buttons />\r\n <hr />\r\n {showSynopsis\r\n ? <Synopsis video={video} onClickFullDescription={() => setShowSynopsis(false)} />\r\n : <VideoDetailsWithScrollbar video={video} onClickShowSynopsis={() => setShowSynopsis(true)} /> }\r\n <Resources video={video} className='my-3' />\r\n <Interactives video={video} />\r\n <Clips video={video} />\r\n {!!relatedVideos && <>\r\n <h2 className={'h4 mt-3'}><Text namespace={namespace} phrase={'relatedVideos'} /></h2>\r\n <VideoList\r\n videos={relatedVideos}\r\n getSeriesAppLink={getSeriesAppLink}\r\n getVideoAppLink={getVideoAppLink}\r\n />\r\n </>}\r\n </VideoActionsContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core, FunctionHelper } from '@clickview/common';\r\nimport { Video, SeriesLink, FavoriteButton } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\ninterface VideoTitleProps {\r\n video: Video;\r\n setFavorite?: (favorite: boolean) => void;\r\n}\r\n\r\nexport function VideoTitle(props: VideoTitleProps): React.ReactElement {\r\n const { video } = props;\r\n\r\n const tempAppLink: Core.AppLink = {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: video.series ? [video.series.id] : []\r\n };\r\n\r\n return (\r\n <div className='mb-2'>\r\n <h1 className='h3 d-inline-block m-0'>\r\n {!!video.series && <SeriesLink video={video} appLink={tempAppLink} />}\r\n {video.name}\r\n </h1>\r\n {!!FunctionHelper.isFunction(props.setFavorite) &&\r\n <FavoriteButton\r\n setFavorite={props.setFavorite}\r\n video={video}\r\n className='d-inline-block ml-2 align-text-bottom'\r\n />\r\n }\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Video } from '@clickview/shared';\r\n\r\ninterface VideoResourcesProps {\r\n video: Video;\r\n className?: string;\r\n}\r\n\r\nexport function Resources(props: VideoResourcesProps): React.ReactElement {\r\n const { video } = props;\r\n\r\n if (!video.resources || !video.resources.data || !video.resources.data.length)\r\n return <></>;\r\n\r\n return (\r\n <div className={props.className}>\r\n <h2 className='h4'>Resources</h2>\r\n {video.resources.data.map((r, i) => <div key={i}>{r.name}</div>)}\r\n </div>\r\n );\r\n}","import { Video, Text } from '@clickview/shared';\r\nimport * as React from 'react';\r\nimport * as marked from 'marked';\r\n\r\nimport styles from './synopsis.scss';\r\n\r\nconst namespace = 'shared.synopsis';\r\n\r\ninterface BackgroundContainerProps {\r\n className: string;\r\n url: String;\r\n}\r\n\r\nfunction BackgroundContainer(props: BackgroundContainerProps): JSX.Element {\r\n const { className, url } = props;\r\n return (\r\n <div\r\n className={`${className} ${styles.background}`}\r\n style={{ backgroundImage: `url('${url}')` }}\r\n ></div>\r\n );\r\n}\r\n\r\ninterface SynopsisProps {\r\n video: Video;\r\n onClickFullDescription: () => void;\r\n}\r\n\r\nconst markdown = `\r\n- Explaing the roles of producers, consumers and decomposers\r\n- Explore diets of various safari animals\r\n- How did the giraffe get it's long neck\r\n- What does the giraffe do for the ecosystem\r\n`;\r\n\r\nexport function Synopsis(props: SynopsisProps): JSX.Element {\r\n const { video, onClickFullDescription } = props;\r\n\r\n/**\r\n * TODO: Uncomment below and update to use the data from the video\r\n * instead of the hard coded values\r\n */\r\n\r\n // /**\r\n // * If we don't have a glance, or our glance is not markdown\r\n // * we tell the PlayPage to render the description instead and return.\r\n // */\r\n // if (!video.glance || !video.glance.content || video.glance.format !== 'text/markdown') {\r\n // onClickFullDescription();\r\n // return <></>;\r\n // }\r\n\r\n /* These url values should be replaced by something dynamic in the future */\r\n const images = [\r\n { className: styles.topLeft, url: 'https://i.imgur.com/3GafOwO.png' },\r\n { className: styles.topRight, url: 'https://i.imgur.com/wcNZVth.png' },\r\n { className: styles.bottomLeft, url: 'https://i.imgur.com/vUEo7H2.png' },\r\n { className: styles.bottomRight, url: 'https://i.imgur.com/R3gcyGY.png' },\r\n ];\r\n\r\n return (\r\n <div className={`\r\n rounded border px-3 position-relative d-flex align-items-center justify-content-center ${styles.container}`}>\r\n <div className={`${styles.content} py-5`}>\r\n <h2><Text namespace={namespace} phrase='videoAtAGlance' /></h2>\r\n <div dangerouslySetInnerHTML={{ __html: marked(markdown) }}></div>\r\n <span onClick={props.onClickFullDescription} role='button' tabIndex={0} className='cursor-pointer'>\r\n <strong><Text namespace={namespace} phrase='showFullDescription' /></strong>\r\n </span>\r\n </div>\r\n {images.map((k, i) => <BackgroundContainer key={i} className={k.className} url={k.url} />)}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"cv--container--1XOYA\",\"content\":\"cv--content--UcxNO\",\"background\":\"cv--background--3gpaY\",\"topLeft\":\"cv--topLeft--2s7I6\",\"bottomLeft\":\"cv--bottomLeft--23UKL\",\"topRight\":\"cv--topRight--ec_-l\",\"bottomRight\":\"cv--bottomRight--1xMKp\"};","import * as React from 'react';\r\nimport { IconButton, cvSvgLibrary, Text } from '@clickview/shared';\r\nimport { useService } from '@clickview/common';\r\nimport { VideoUploadService } from 'shared/services';\r\nimport { Services } from 'shared/constants';\r\n\r\nconst namespace = 'shared.uploadFileSelect';\r\n\r\ninterface UploadFileSelectProps {\r\n hideButtonText?: boolean;\r\n}\r\n\r\nexport const UploadFileSelect = React.memo(function(props: UploadFileSelectProps): JSX.Element {\r\n const { hideButtonText = false } = props;\r\n\r\n const videoUploadService = useService<VideoUploadService>(Services.VideoUpload);\r\n\r\n const ref = React.useRef(null);\r\n const useRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n ref.current = node;\r\n }, []);\r\n\r\n const onClick = (e: React.MouseEvent) => {\r\n ref.current.value = null;\r\n ref.current.click(null);\r\n };\r\n\r\n const onChange = (files: FileList) => {\r\n /**\r\n * TODO: Need up update UploadService in shared to \r\n * use FileList instead of File[]\r\n */\r\n videoUploadService.addFiles(files as any);\r\n };\r\n\r\n return (\r\n <>\r\n <IconButton\r\n svgName={cvSvgLibrary.Upload}\r\n className='btn btn-secondary'\r\n onClick={onClick}\r\n iconOnly={hideButtonText} >\r\n { !hideButtonText && <Text phrase='uploadVideo' namespace={namespace} /> }\r\n </IconButton>\r\n\r\n <input\r\n type='file'\r\n autoComplete='off'\r\n className='file-select d-none'\r\n multiple\r\n accept='video/*'\r\n ref={useRef}\r\n onChange={e => onChange(e.target.files)}\r\n />\r\n </>\r\n );\r\n});","import { ProgressBar, Row, Col } from 'react-bootstrap';\r\nimport * as React from 'react';\r\nimport { ThumbnailFallback, ThumbnailFallbackType, BaseThumbnail, AspectRatio, SvgContainer, cvSvgLibrary } from '@clickview/shared';\r\nimport { CombinedUploadStatus, CombinedUpload } from 'shared/services';\r\nimport { LanguageService } from '@clickview/common';\r\n\r\nconst NAMESPACE = 'lite.uploadItem';\r\n\r\nfunction getClassName(status: CombinedUploadStatus): string {\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return 'text-success';\r\n case CombinedUploadStatus.Processing:\r\n return 'text-info';\r\n case CombinedUploadStatus.Errored:\r\n return 'text-danger';\r\n }\r\n}\r\n\r\nfunction getVariant(status: CombinedUploadStatus): 'success' | 'info' | 'danger' {\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return 'success';\r\n case CombinedUploadStatus.Processing:\r\n return 'info';\r\n case CombinedUploadStatus.Errored:\r\n return 'danger';\r\n }\r\n}\r\n\r\nfunction getProgressText(status: CombinedUploadStatus, progress: number): string {\r\n const rounded = Math.round(progress) || 0;\r\n\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return `${LanguageService.getPhrase(NAMESPACE, 'uploading')} ${rounded}%`;\r\n\r\n case CombinedUploadStatus.Processing:\r\n if (rounded === 0)\r\n return LanguageService.getPhrase(NAMESPACE, 'waitingToBeProcessed');\r\n else\r\n return `${LanguageService.getPhrase(NAMESPACE, 'processing')} ${rounded}%`;\r\n\r\n case CombinedUploadStatus.Errored:\r\n return LanguageService.getPhrase(NAMESPACE, 'error');\r\n }\r\n}\r\n\r\ninterface UploadingItemProps {\r\n item: CombinedUpload;\r\n onClickDelete: (item: CombinedUpload) => void;\r\n onClickAlternate: (item: CombinedUpload) => void;\r\n}\r\n\r\nexport function UploadingItem(props: UploadingItemProps): JSX.Element {\r\n const { status, progress, name } = props.item;\r\n\r\n /**\r\n * We're using React.useCallback here because this view\r\n * will get re-rendered many times by it's parent during\r\n * an upload\r\n */\r\n const onClickAlternate = React.useCallback(() => {\r\n props.onClickAlternate(props.item);\r\n }, []);\r\n\r\n const onClickDelete = React.useCallback(() => {\r\n props.onClickDelete(props.item);\r\n }, []);\r\n\r\n return (\r\n <Row className='py-2'>\r\n <Col lg={4}>\r\n <BaseThumbnail data='' aspectRatio={AspectRatio.SixteenByNine}>\r\n <ThumbnailFallback type={ThumbnailFallbackType.Video} />\r\n </BaseThumbnail>\r\n </Col>\r\n <Col lg={8}>\r\n <h5 className='m-0 pb-1'>{name}</h5>\r\n <span className={getClassName(status)}>{getProgressText(status, progress)}</span>\r\n <div className='d-flex'>\r\n <ProgressBar className='flex-grow-1 align-self-center' variant={getVariant(status)} now={progress} />\r\n <SvgContainer\r\n className='svg-container cursor-pointer ml-2'\r\n svgName={status === CombinedUploadStatus.Errored ? cvSvgLibrary.Bell : cvSvgLibrary.Edit}\r\n onClick={onClickAlternate}\r\n />\r\n <SvgContainer\r\n className='svg-container cursor-pointer ml-2'\r\n svgName={cvSvgLibrary.Delete}\r\n onClick={onClickDelete}\r\n />\r\n </div>\r\n </Col>\r\n </Row>\r\n );\r\n}","import * as React from 'react';\r\nimport { CurrentUser, LanguageNamespaceContext, Text, AppLink } from '@clickview/shared';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nimport styles from './user-options.scss';\r\n\r\ninterface UserOptionsProps {\r\n user: CurrentUser;\r\n}\r\n\r\n/**\r\n * TODO: Implement user options properly;\r\n */\r\nexport const UserOptions = React.memo(function(props: UserOptionsProps): React.ReactElement {\r\n const { user } = props;\r\n\r\n if (!user)\r\n return <Button variant={'primary'} className='mx-2 px-2'>Log in</Button>;\r\n\r\n const { avatar, displayName, customerName } = user;\r\n\r\n /**\r\n * We're not using react-bootstrap dropdown here because we need a custom toggle\r\n * and it doesn't seem like it's worth the hassle https://react-bootstrap.github.io/components/dropdowns/\r\n */\r\n return (\r\n <LanguageNamespaceContext.Provider value='shared.userOptions'>\r\n <div className='cursor-pointer mx-2 px-2 position-relative' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\r\n <span className={styles.avatar} style={{ backgroundImage: `url('${avatar}')` }}>\r\n &nbsp;\r\n </span>\r\n <nav className={`dropdown-menu dropdown-arrow dropdown-menu-right ${styles.dropdownMenu}`}>\r\n <div className='dropdown-item'>\r\n <div className='m-0'><strong>{displayName}</strong></div>\r\n <div className='m-0 text-muted'>{customerName}</div>\r\n </div>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'myProfile'} />\r\n </AppLink>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'myPreferences'} />\r\n </AppLink>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'signOut'} />\r\n </AppLink>\r\n </nav>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}, (prevProps, nextProps): boolean => {\r\n return prevProps.user?.id === nextProps.user?.id\r\n && prevProps.user?.avatar === nextProps.user?.avatar\r\n && prevProps.user?.displayName === nextProps.user?.displayName\r\n && prevProps.user?.customerName === nextProps.user?.customerName;\r\n});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"cv--avatar--3g8JZ\",\"iconPlaceholder\":\"cv--iconPlaceholder--2hr_4\"};","import * as React from 'react';\r\nimport Scrollbars from 'react-custom-scrollbars';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { Video, BaseObject, BasePaginatedCollection, TagCollection, LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nimport { ImmersiveReader } from 'shared/components';\r\n\r\nimport styles from './video-details.scss';\r\n\r\nconst namespace = 'shared.videoDetails';\r\n\r\ninterface TagListProps {\r\n tags: TagCollection;\r\n className?: string;\r\n}\r\n\r\nfunction TagList(props: TagListProps): React.ReactElement {\r\n const { tags, className } = props;\r\n\r\n const hasTags = tags && tags.data && tags.data.length;\r\n\r\n if (!hasTags)\r\n return <></>;\r\n\r\n return (\r\n <div className={className}>\r\n <Text phrase='tags' /> {tags.data.map((t, i) =>\r\n <span className='badge mr-1 p-1 badge-light' key={i}>{t.name}</span>)}\r\n </div>\r\n );\r\n}\r\n\r\ninterface CommaListProps {\r\n label: string;\r\n items: BasePaginatedCollection<BaseObject>;\r\n className?: string;\r\n}\r\n\r\nfunction CommaList(props: CommaListProps): React.ReactElement {\r\n const { label, items, className } = props;\r\n\r\n const hasItems = items && items.data && items.data.length;\r\n\r\n if (!hasItems)\r\n return <></>;\r\n\r\n const commaSeperated = items.data.map(i => i.name).join(', ');\r\n\r\n return (\r\n <div className={className}>{label}: {commaSeperated}</div>\r\n );\r\n}\r\n\r\ninterface VideoDetailsProps {\r\n video: Video;\r\n}\r\n\r\nfunction VideoDetails(props: VideoDetailsProps): React.ReactElement {\r\n const { video } = props;\r\n const { tags, rating, productionYear, productionCompanies, distributors } = video;\r\n\r\n const ratingCode = rating && rating.code;\r\n\r\n /**\r\n * TODO: Use language service\r\n */\r\n return (\r\n <>\r\n <h2 className='h4'><Text phrase='details' /></h2>\r\n <div className='row no-gutters'>\r\n <div className='col-3'>\r\n {ratingCode && <div className='pb-2'><Text phrase='rating' options={{ code: ratingCode }} /></div>}\r\n {productionYear && <div className='pb-2'><Text phrase='productionYear' options={{ year: productionYear }} /></div>}\r\n </div>\r\n <div className='col-9'>\r\n <CommaList label={LanguageService.getPhrase(namespace, 'productionCompanies')} items={productionCompanies} className='pb-2' />\r\n <CommaList label={LanguageService.getPhrase(namespace, 'distributors')} items={distributors} className='pb-2' />\r\n <TagList tags={tags} className='pb-2' />\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\ninterface DescriptionProperties {\r\n description: string;\r\n immersiveReaderTitle?: string;\r\n}\r\n\r\nfunction Description(props: DescriptionProperties): React.ReactElement {\r\n const { description, immersiveReaderTitle } = props;\r\n\r\n if (!description)\r\n return <></>;\r\n\r\n /**\r\n * TODO: Linkify the description\r\n */\r\n return (\r\n <>\r\n <h2 className='h4'>\r\n <Text phrase='description' />\r\n <ImmersiveReader text={description} title={immersiveReaderTitle} className='pl-2' />\r\n </h2>\r\n <p>{description}</p>\r\n </>\r\n );\r\n}\r\n\r\ninterface DetailsPaneProps {\r\n video: Video;\r\n onClickShowSynopsis: () => void;\r\n}\r\n\r\nexport function VideoDetailsWithScrollbar(props: DetailsPaneProps): React.ReactElement {\r\n const { video } = props;\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='rounded border px-3 mb-3'>\r\n {/* 368 is the min height of Video at a glance which is defined as $glanceHeight in synopsis.scss */}\r\n <Scrollbars autoHeight autoHeightMax={368}>\r\n <div className='py-3'>\r\n <VideoDetails video={video} />\r\n <Description description={video.description} immersiveReaderTitle={video.name} />\r\n <span className={`${styles.showGlance} cursor-pointer`} onClick={props.onClickShowSynopsis} role='button' tabIndex={0}>\r\n <strong><Text namespace={namespace} phrase='showGlance' /></strong>\r\n </span>\r\n </div>\r\n </Scrollbars>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"showGlance\":\"cv--showGlance--2fhqC\"};","import * as React from 'react';\r\n\r\ninterface WebPlayerProps {\r\n className?: string;\r\n webPlayerHost: string;\r\n id: string;\r\n}\r\n\r\nexport function WebPlayer(props: WebPlayerProps): React.ReactElement {\r\n const url = `${props.webPlayerHost}home/ev?vid=${props.id}`;\r\n\r\n return (\r\n <div className={`embed-responsive ${props.className ? props.className : ''}`}>\r\n <iframe\r\n src={url}\r\n className='embed-responsive-item'\r\n allowFullScreen\r\n allow='autoplay; fullscreen'/>\r\n </div>\r\n );\r\n}","import { Actions as PlaylistActions } from '@clickview/playlists';\r\nimport { Actions as DashboardActions } from '@clickview/dashboard';\r\n\r\nexport const Actions = {\r\n Default: {\r\n HOME: 'index',\r\n ERROR: 'error',\r\n NOT_FOUND: 'not:found',\r\n DEV_ERROR: 'dev:error',\r\n DIALOG_ERROR: 'dialog:error',\r\n\r\n MY_UPLOADS: 'my:uploads',\r\n SERIES: 'series',\r\n PLAY_VIDEO: 'play:video',\r\n FAVORITE_VIDEOS: 'favorite:videos',\r\n EDIT_VIDEO: 'edit:video',\r\n EDIT_UPLOAD: 'edit:upload'\r\n },\r\n\r\n Playlists: {\r\n HOME: PlaylistActions.Playlists.HOME,\r\n PLAYLIST: PlaylistActions.Playlists.PLAYLIST,\r\n NEW_PLAYLIST: PlaylistActions.Playlists.NEW_PLAYLIST,\r\n EDIT_PLAYLIST: PlaylistActions.Playlists.EDIT_PLAYLIST,\r\n DELETE_PLAYLIST: PlaylistActions.Playlists.DELETE_PLAYLIST,\r\n ADD_TO_PLAYLIST: PlaylistActions.Playlists.ADD_TO_PLAYLIST,\r\n REMOVE_VIDEO_FROM_PLAYLIST: PlaylistActions.Playlists.REMOVE_VIDEO_FROM_PLAYLIST\r\n },\r\n\r\n Dashboard: {\r\n HOME: DashboardActions.Dashboard.HOME,\r\n DASHBOARD: DashboardActions.Dashboard.DASHBOARD,\r\n VIDEO: DashboardActions.Dashboard.VIDEO\r\n },\r\n\r\n Classifications: {\r\n CLASSIFICATION: DashboardActions.Classifications.CLASSIFICATION,\r\n PLAYLIST: DashboardActions.Classifications.PLAYLIST,\r\n VIDEO: DashboardActions.Classifications.VIDEO,\r\n SERIES: DashboardActions.Classifications.SERIES\r\n },\r\n\r\n Notifications: {\r\n HOME: 'index'\r\n },\r\n\r\n Search: {\r\n HOME: 'index'\r\n },\r\n\r\n ContentUpdates: {\r\n CONTENT_UPDATES: PlaylistActions.ContentUpdates.CONTENT_UPDATES,\r\n CLASSIFICATION_UPDATE: PlaylistActions.ContentUpdates.CLASSIFICATION_UPDATE\r\n }\r\n};","export const LayoutRegions = {\r\n CONTENT: 'content',\r\n POPUP: 'popup',\r\n ALERT: 'alert'\r\n};","export const Layouts = {\r\n TEACHER_LAYOUT: 'TeacherLayout',\r\n EMBED_LAYOUT: 'EmbedLayout'\r\n};","export const AppChannels = {\r\n DEFAULT: 'default:application',\r\n PLAYLISTS: 'lite:playlists:application',\r\n DASHBOARD: 'lite:dashboard:application',\r\n SUBJECT: 'lite:subject:application',\r\n EMBED: 'embed:application',\r\n NOTIFICATIONS: 'notifications:application',\r\n SEARCH: 'search:application',\r\n CONTENT_UPDATES: 'content:updates:application'\r\n};","import { SharedDataChannels } from '@clickview/shared';\r\n\r\nexport const DataChannels = {\r\n ...SharedDataChannels\r\n};","import { SharedDataServices, SharedServices } from '@clickview/shared';\r\n\r\nexport const Services = {\r\n ...SharedServices\r\n};\r\n\r\nexport const DataServices = {\r\n ...SharedDataServices\r\n};","const ObjectWithStatements = {\r\n VIDEO: 'series,season,rating,producers,distributors,resources,tags,productionCompanies,directors,links,thumbnail,interactives[owner[customers[organisation]]],clips'\r\n};\r\n\r\nconst CollectionWithStatements = {\r\n VIDEO_COLLECTION: `thumbnail,tags,rating,series,season`\r\n};\r\n\r\nexport const WithStatements = {\r\n ...ObjectWithStatements,\r\n ...CollectionWithStatements\r\n};","export * from './LiteActions';\r\nexport * from './LiteRadioChannels';\r\nexport * from './LiteLayoutRegions';\r\nexport * from './LiteLayouts';\r\nexport * from './WithStatements';\r\nexport * from './RadioChannels';\r\nexport * from './Services';","export * from './player/PlayerContext';","import * as React from 'react';\r\nimport { Flight } from '@clickview/common';\r\nimport { Config, Video, ConfigRequests } from '@clickview/shared';\r\n\r\nexport interface PlayerPosition {\r\n top: number;\r\n left: number;\r\n width: number;\r\n}\r\n\r\ninterface PlayerContextProps {\r\n webPlayerUrl: string;\r\n\r\n /**\r\n * Video that the player is currently plaing\r\n */\r\n video?: Video;\r\n setVideo: (video: Video) => void;\r\n\r\n /**\r\n * Position of the video player when we're on a play page\r\n * no position means we're floating on the bottom right of the screen\r\n */\r\n viewportPosition: PlayerPosition;\r\n setViewportPosition: (position: PlayerPosition) => void;\r\n\r\n /**\r\n * Tells the floating player to not render when it has\r\n * as video but no position. This prevents\r\n * a bug where the floating player flashes briefly when the\r\n * PlayView has set a video but not yet set a position\r\n */\r\n isOnPlayPage: boolean;\r\n setIsOnPlayPage: (isOnPlayPage: boolean) => void;\r\n}\r\n\r\nexport const PlayerContext = React.createContext<PlayerContextProps>(undefined);\r\n\r\nexport function PlayerContextProvider(props: React.PropsWithChildren<{}>): React.ReactElement {\r\n const { children } = props;\r\n\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n\r\n const [ video, setVideo ] = React.useState<Video>(null);\r\n const [ viewportPosition, setViewportPosition ] = React.useState<PlayerPosition>(null);\r\n const [ isOnPlayPage, setIsOnPlayPage ] = React.useState<boolean>(false);\r\n\r\n const context = {\r\n webPlayerUrl: config.data ? config.data.webPlayerUrl : '',\r\n video,\r\n setVideo,\r\n viewportPosition,\r\n setViewportPosition,\r\n isOnPlayPage,\r\n setIsOnPlayPage\r\n };\r\n\r\n return (\r\n <PlayerContext.Provider value={context}>\r\n {children}\r\n </PlayerContext.Provider>\r\n );\r\n}","export * from './not-found/LiteNotFoundError';","import { Core, LanguageService } from '@clickview/common';\r\n\r\nconst lang = 'shared.notFound';\r\n\r\nexport class NotFoundError extends Core.SilentError {\r\n constructor() {\r\n /**\r\n * TODO: Set up language service properly\r\n */\r\n // super(LanguageService.getPhrase(lang, 'title'));\r\n super('Not Found');\r\n }\r\n\r\n public get name(): string {\r\n return 'NotFoundError';\r\n }\r\n}","import { Flight } from '@clickview/common';\r\n\r\nexport const AudienceRequests = {\r\n presentationAudiences(): Flight.Request {\r\n return {\r\n url: '/api/domain/v1/subjects/audiences',\r\n key: `presentation:audiences`\r\n };\r\n }\r\n};","import { Flight } from '@clickview/common';\r\nimport { WithStatements } from 'shared/constants';\r\n\r\nconst endpoints = {\r\n series: (id: string) => `/api/domain/v2/objects/${id}`,\r\n seriesVideos: (id: string, cursor: string) =>\r\n `/api/domain/v2/objects/${id}/videos?query=${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`,\r\n\r\n breadcrumbs: (id: string) => `/api/domain/v1/subjects/${id}/path`\r\n};\r\n\r\nexport const SeriesRequests = {\r\n series(id: string): Flight.Request {\r\n return {\r\n url: endpoints.series(id),\r\n key: `series:${id}`\r\n };\r\n },\r\n seriesVideos(id: string, cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.seriesVideos(id, cursor),\r\n key: `series:${id}:videos:${cursor}`\r\n };\r\n },\r\n breadcrumbs(classificationId: string): Flight.Request {\r\n if (!classificationId)\r\n return;\r\n\r\n return {\r\n url: endpoints.breadcrumbs(classificationId),\r\n key: `series:${classificationId}:breadcrumbs`\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","import { Flight } from '@clickview/common';\r\nimport { WithStatements } from 'shared/constants';\r\n\r\nexport const ShareRequests = {\r\n sharedResource(shortCode: string): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/share/${shortCode}?query=${WithStatements.VIDEO}`,\r\n key: `shared:resource:${shortCode}`\r\n };\r\n }\r\n};","import { Flight, HttpVerbs } from '@clickview/common';\r\nimport { WithStatements } from 'shared/constants';\r\nimport { Video, UpdateVideoRequest } from '@clickview/shared';\r\n\r\nconst endpoints = {\r\n video: (id: string) => `/api/domain/v2/objects/${id}?query=${WithStatements.VIDEO}`,\r\n\r\n // workspace: () => `api/domain/v2/me/workspace?query=${WithStatements.WORKSPACE_VIDEOS}${addCursor(cursor)}`,\r\n workspace: (id: string, cursor: string) => {\r\n const query = `{orderbydesc:datecreated}${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`;\r\n return `api/domain/v2/objects/${id}/videos?query=${query}`;\r\n },\r\n\r\n getVideosById: (ids: string[]) => {\r\n const params = ids.map(i => `id=${i}`);\r\n return `/api/domain/v2/objects?${params.join('&')}`;\r\n },\r\n\r\n favoriteVideos: (cursor: string) =>\r\n `/api/domain/v2/objects/9160822/videos?query=${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`\r\n};\r\n\r\nexport const VideoRequests = {\r\n video(id: string): Flight.Request {\r\n return {\r\n url: endpoints.video(id),\r\n key: `videos:${id}`\r\n };\r\n },\r\n\r\n workspace(id: string, cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.workspace(id, cursor),\r\n key: `workspace:${id}:${cursor}`\r\n };\r\n },\r\n\r\n videos(ids: string[], success?: (videos: Video[]) => void): Flight.Request {\r\n return {\r\n url: endpoints.getVideosById(ids),\r\n key: `videos:by:id:${ids.join(',')}`,\r\n success\r\n };\r\n },\r\n\r\n updateVideo(data: UpdateVideoRequest, success?: () => void): Flight.Request {\r\n return {\r\n key: `update:video:${data.id}`,\r\n url: `/api/domain/v2/objects/${data.id}`,\r\n type: HttpVerbs.PUT,\r\n data,\r\n success\r\n };\r\n },\r\n\r\n favoriteVideos(cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.favoriteVideos(cursor),\r\n key: `favorite:videos:${cursor}`\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","export * from './VideoRequests';\r\nexport * from './SeriesRequests';\r\nexport * from './ShareRequests';\r\nexport * from './AudienceRequests';","export * from './useWindowListeners';","import * as React from 'react';\r\n\r\nfunction createUseWindowListener(event: string): any {\r\n return function useWindowListener(callback: () => void): void {\r\n /**\r\n * Memoize the callback so it's the same function\r\n * when we call removeEventListener\r\n */\r\n const memoCallback = React.useCallback(callback, []);\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(event, memoCallback);\r\n return () => window.removeEventListener(event, memoCallback);\r\n }, []);\r\n };\r\n}\r\n\r\nexport const useOnScroll = createUseWindowListener('scroll');\r\nexport const useOnResize = createUseWindowListener('resize');\r\n\r\n","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\n\r\nexport interface EmbedLayoutComponentProps {\r\n store: Store;\r\n contentChild?: React.ReactNode;\r\n}\r\n\r\nfunction EmbedLayoutComponent(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { contentChild } = props;\r\n\r\n return (\r\n <>\r\n {contentChild}\r\n </>\r\n );\r\n}\r\n\r\nfunction WrapLayoutWithProviders(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { store } = props;\r\n\r\n return (\r\n <Provider store={store}>\r\n <EmbedLayoutComponent {...props} />\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as EmbedLayoutComponent };","import * as React from 'react';\r\nimport { ReactLayoutView, HashObject } from '@clickview/common';\r\n\r\nimport { Layouts, LayoutRegions } from 'shared/constants';\r\n\r\nimport { EmbedLayoutComponent, EmbedLayoutComponentProps } from './EmbedLayoutComponent';\r\nimport EmbedLayoutTemplate from './EmbedLayout.hbs';\r\n\r\n\r\nexport class EmbedLayoutView extends ReactLayoutView {\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'EmbedLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return EmbedLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(): string {\r\n return Layouts.EMBED_LAYOUT;\r\n }\r\n\r\n public regions(): HashObject {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): EmbedLayoutComponentProps {\r\n return {\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n store: this.options.store\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <EmbedLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","export * from './teacher-layout/TeacherLayoutView';\r\nexport * from './embed-layout/EmbedLayoutView';","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region position-relative\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\nimport { useDropzone } from 'react-dropzone';\r\n\r\nimport { useService } from '@clickview/common';\r\nimport { useMediaQuery, MediaQueryStrings, BaseVideoUploadService, SearchAppContextProvider } from '@clickview/shared';\r\n\r\nimport { HeaderView, LeftNavView, LeftNavState } from 'shared/views';\r\nimport { PlayerContextProvider, PlayerContext } from 'shared/contexts';\r\nimport { FloatingPlayer } from 'shared/components';\r\nimport { Services } from 'shared/constants';\r\n\r\nimport { DragMask } from './drag-mask/DragMask';\r\n\r\nimport styles from './teacher-layout.scss';\r\n\r\ninterface DerivedNavState {\r\n state: LeftNavState;\r\n showMask: boolean;\r\n contentClass: string;\r\n}\r\n\r\nfunction getDerivedNavState(\r\n collapse: boolean, isMobile: boolean, isIPad: boolean\r\n): DerivedNavState {\r\n if (isMobile) {\r\n return {\r\n state: collapse ? LeftNavState.Hidden : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.hiddenNavContent\r\n };\r\n }\r\n\r\n if (isIPad) {\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.collapsedNavContent\r\n };\r\n }\r\n\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: false,\r\n contentClass: collapse ? styles.collapsedNavContent : styles.openNavContent\r\n };\r\n}\r\n\r\nexport interface TeacherLayoutComponentProps {\r\n showNav: boolean;\r\n\r\n contentChild?: React.ReactNode;\r\n popupChild?: React.ReactNode;\r\n alertChild?: React.ReactNode;\r\n\r\n store: Store;\r\n}\r\n\r\nconst TeacherLayoutComponent = (props: TeacherLayoutComponentProps): React.ReactElement => {\r\n const { showNav, contentChild, popupChild, alertChild } = props;\r\n\r\n const { viewportPosition: playerViewportPosition } = React.useContext(PlayerContext);\r\n\r\n const [ collapse, setCollapse ] = React.useState(false);\r\n\r\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\r\n const isIPad = useMediaQuery(MediaQueryStrings.SM);\r\n const isLargeDesktop = useMediaQuery(MediaQueryStrings.XL);\r\n\r\n const toggleLeftNav = () => {\r\n setCollapse(!collapse);\r\n };\r\n\r\n React.useEffect(() => {\r\n setCollapse(!isLargeDesktop);\r\n }, [isLargeDesktop]);\r\n\r\n const navState = getDerivedNavState(collapse, isMobile, isIPad);\r\n\r\n const videoUploadService = useService<BaseVideoUploadService>(Services.VideoUpload);\r\n const onDrop = React.useCallback((acceptedFiles: File[]) => {\r\n videoUploadService.addFiles(acceptedFiles);\r\n }, []);\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n noClick: true,\r\n noKeyboard: true\r\n });\r\n\r\n // Right align content in the alert-player container.\r\n let alertPlayerContainerClassName = 'd-flex flex-column align-items-end';\r\n let alertContainerClassName = '';\r\n\r\n /**\r\n * If playerViewportPosition is truthy, the player isn't floating,\r\n * so we only apply the fixed position styling to the alert container.\r\n * \r\n * Else if playerViewportPosition is falsy, we fix the entire\r\n * alert-player container.\r\n */\r\n if (playerViewportPosition)\r\n alertContainerClassName = styles.fixedBottomRightContainer;\r\n else\r\n alertPlayerContainerClassName += ` ${styles.fixedBottomRightContainer}`;\r\n\r\n return (\r\n <div {...getRootProps()}>\r\n <HeaderView toggleLeftNav={toggleLeftNav} showLeftNavToggle={showNav} />\r\n {showNav && <LeftNavView navState={navState.state}/>}\r\n <div className={`${styles.content} ${navState.contentClass}`}>\r\n <div className='container'>\r\n {contentChild}\r\n </div>\r\n </div>\r\n {popupChild}\r\n {navState.showMask && <div className={`modal-backdrop show ${styles.mask}`}></div>}\r\n <div className={alertPlayerContainerClassName}>\r\n {!!alertChild && <div className={alertContainerClassName}>{alertChild}</div>}\r\n <FloatingPlayer />\r\n </div>\r\n {isDragActive && <DragMask />}\r\n <input {...getInputProps()} />\r\n </div>\r\n );\r\n};\r\n\r\nfunction WrapLayoutWithProviders(props: TeacherLayoutComponentProps): React.ReactElement {\r\n return (\r\n <Provider store={props.store}>\r\n <SearchAppContextProvider>\r\n <PlayerContextProvider>\r\n <TeacherLayoutComponent {...props} />\r\n </PlayerContextProvider>\r\n </SearchAppContextProvider>\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as TeacherLayoutComponent };","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from '@clickview/common';\r\n\r\nimport { Layouts, LayoutRegions } from 'shared/constants';\r\n\r\nimport { TeacherLayoutComponent, TeacherLayoutComponentProps } from './TeacherLayoutComponent';\r\nimport TeacherLayoutTemplate from './TeacherLayout.hbs';\r\n\r\nexport interface TeacherLayoutViewOptions extends ReactLayoutViewOptions {\r\n showNav: boolean;\r\n}\r\n\r\nexport class TeacherLayoutView extends ReactLayoutView {\r\n protected options: TeacherLayoutViewOptions;\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n constructor(options?: TeacherLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'TeacherLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return TeacherLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(options: TeacherLayoutViewOptions): string {\r\n return `${Layouts.TEACHER_LAYOUT}:${options.showNav}`;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): TeacherLayoutComponentProps {\r\n return {\r\n showNav: this.options.showNav,\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n popupChild: this.childComponents[LayoutRegions.POPUP],\r\n alertChild: this.childComponents[LayoutRegions.ALERT],\r\n store: this.options.store\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <TeacherLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Text } from '@clickview/shared';\r\n\r\nimport styles from './drag-mask.scss';\r\n\r\nexport function DragMask(): React.ReactElement {\r\n return (\r\n <>\r\n <div className={styles.dropMask}></div>\r\n <div className={styles.dropContent}>\r\n <div className={styles.border}>\r\n <h1><Text namespace={'shared.dragMask'} phrase={'message'} /></h1>\r\n </div>\r\n </div>\r\n <div className={styles.dropArea}></div>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropMask\":\"cv--dropMask--3bFev\",\"dropContent\":\"cv--dropContent--2_7SU\",\"dropArea\":\"cv--dropArea--3oOzB\",\"border\":\"cv--border--1IoKS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--1SX2l\",\"collapsedNavContent\":\"cv--collapsedNavContent--3LJFz\",\"openNavContent\":\"cv--openNavContent--34Pt4\",\"hiddenNavContent\":\"cv--hiddenNavContent--1gZ0J\",\"mask\":\"cv--mask--mE2Dq\",\"fixedBottomRightContainer\":\"cv--fixedBottomRightContainer--Sgmex\"};","import { Core, InstanceManager, HashObject, DevError } from '@clickview/common';\r\nimport { BaseVideoUploadService, BasePendingItemsService, PendingItemsHelper } from '@clickview/shared';\r\nimport { Services, Actions } from 'shared/constants';\r\nimport { AppChannels } from '@clickview/playlists';\r\n\r\nclass CombinedCollection extends Core.Collection {\r\n public modelId(attrs: HashObject): string {\r\n return attrs.pendingProcessId || attrs.id;\r\n }\r\n\r\n public get comparator(): (item1: Core.Model, item2: Core.Model) => number {\r\n return (item1: Core.Model, item2: Core.Model) => {\r\n const item1Status = item1.get('status');\r\n const item2Status = item2.get('status');\r\n if (item1Status === CombinedUploadStatus.Errored)\r\n return 1;\r\n if (item2Status === CombinedUploadStatus.Errored)\r\n return -1;\r\n\r\n return 0;\r\n };\r\n }\r\n}\r\n\r\nexport enum CombinedUploadStatus {\r\n Uploading,\r\n Processing,\r\n Errored\r\n}\r\n\r\nexport interface CombinedUpload {\r\n id: string;\r\n name: string;\r\n status: CombinedUploadStatus;\r\n progress: number;\r\n pendingProcessId: number;\r\n videoId?: string;\r\n}\r\n\r\n/**\r\n * The sole purpose of this service is to combine the collections in the\r\n * VideoUploadService and the PendingItemsService in a way that's consumable\r\n * by the MyuploadsView\r\n */\r\nexport class CombineUploadsService extends Core.Service {\r\n private videoUploadService: BaseVideoUploadService;\r\n private pendingItemsService: BasePendingItemsService;\r\n\r\n private uploads: Core.Collection;\r\n private pendingItems: Core.Collection;\r\n\r\n private combined: CombinedCollection;\r\n\r\n public get name(): string {\r\n return 'combine:uploads:service';\r\n }\r\n\r\n public initialize(): void {\r\n this.initializeServices();\r\n this.initializeCollections();\r\n this.bindListeners();\r\n }\r\n\r\n private initializeServices(): void {\r\n this.videoUploadService = InstanceManager.getInstance(Services.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n }\r\n\r\n private initializeCollections(): void {\r\n this.uploads = this.videoUploadService.getCollection();\r\n this.pendingItems = this.pendingItemsService.getPendingItems();\r\n this.combined = new CombinedCollection();\r\n\r\n this.uploads.each(this.addUpload);\r\n this.pendingItems.each(this.addPendingItem);\r\n }\r\n\r\n private bindListeners(): void {\r\n this.listenTo(this.uploads, 'add', this.addUpload);\r\n this.listenTo(this.pendingItems, 'add', this.addPendingItem);\r\n\r\n this.listenTo(this.uploads, 'remove', this.removeUpload);\r\n this.listenTo(this.pendingItems, 'remove', this.removePendingItem);\r\n\r\n this.listenTo(this.uploads, 'change', this.onChangeUpload);\r\n this.listenTo(this.pendingItems, 'change', this.onChangePendingItem);\r\n }\r\n\r\n private getUploadAttrs(upload: Core.Model): CombinedUpload {\r\n return {\r\n id: upload.get('id'),\r\n name: upload.get('name'),\r\n progress: upload.get('progress'),\r\n status: CombinedUploadStatus.Uploading,\r\n pendingProcessId: upload.get('pendingProcessId')\r\n };\r\n }\r\n\r\n private getPendingItemAttrs(pendingItem: Core.Model): CombinedUpload {\r\n return {\r\n id: pendingItem.get('pendingProcessId'),\r\n name: pendingItem.get('video').get('name'),\r\n progress: pendingItem.get('foregroundProgress'),\r\n status: PendingItemsHelper.hasError(pendingItem) ? CombinedUploadStatus.Errored : CombinedUploadStatus.Processing,\r\n pendingProcessId: pendingItem.get('pendingProcessId'),\r\n videoId: pendingItem.get('video').get('id')\r\n };\r\n }\r\n\r\n private addUpload(upload: Core.Model): void {\r\n this.combined.add(this.getUploadAttrs(upload));\r\n }\r\n\r\n private addPendingItem(pendingItem: Core.Model): void {\r\n const existing = this.combined.findWhere({ pendingProcessId: pendingItem.get('pendingProcessId') });\r\n\r\n if (existing) {\r\n existing.set(this.getPendingItemAttrs(pendingItem));\r\n return;\r\n }\r\n\r\n this.combined.add(this.getPendingItemAttrs(pendingItem));\r\n }\r\n\r\n private removeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n this.combined.remove(item);\r\n }\r\n\r\n private removePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n this.combined.remove(item);\r\n }\r\n\r\n private onChangeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n item.set(this.getUploadAttrs(upload));\r\n }\r\n\r\n private onChangePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n item.set(this.getPendingItemAttrs(pendingItem));\r\n }\r\n\r\n public cancelItem(item: CombinedUpload): void {\r\n if (item.status === CombinedUploadStatus.Uploading) {\r\n this.videoUploadService.cancelUpload(item.id);\r\n return;\r\n }\r\n\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: item.id });\r\n this.pendingItemsService.clearPendingItem(pendingItem);\r\n }\r\n\r\n public retryItem(item: CombinedUpload): void {\r\n if (item.status === CombinedUploadStatus.Uploading)\r\n Core.ErrorHelper.throw(new DevError('Cannot retry uploading items.'));\r\n\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: item.id });\r\n this.pendingItemsService.retryPendingItem(pendingItem, () => {\r\n this.pendingItemsService.forceFetchPendingItems();\r\n });\r\n }\r\n\r\n public editUpload(item: CombinedUpload): void {\r\n if (item.status !== CombinedUploadStatus.Uploading)\r\n return;\r\n\r\n const upload = this.uploads.get(item.id);\r\n\r\n /**\r\n * If the upload has sending set to true the VideoUploadService is in the middle of \r\n * posting the video to v2/process so we can't let the user edit the video via the edit upload form.\r\n * \r\n * This will only happen if the user clicks edit exactly as the video is posted\r\n */\r\n if (upload.get('sending'))\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.EDIT_UPLOAD,\r\n args: [item.id]\r\n });\r\n }\r\n\r\n public updateUploadMetadata(videoId: string, name: string): void {\r\n const item = this.combined.findWhere({ videoId });\r\n\r\n if (!item) return;\r\n\r\n item.set({ name });\r\n }\r\n\r\n public getCollection(): Core.Collection {\r\n return this.combined;\r\n }\r\n}","import { Store } from 'redux';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { BaseLibraryDataService, SharedDataServices, SharedWithStatements, Folder, LibraryAPIResponse } from '@clickview/shared';\r\n\r\nconst requests = {\r\n getLibraries: (success?: (data: LibraryAPIResponse[]) => void): Flight.Request => {\r\n return {\r\n url: '/api/domain/v2/me/libraries?type=customlibrary&type=unpublishedcustomlibrary',\r\n key: 'libraries',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getFolder: (id: string, success?: (data: Core.Model) => void): Flight.Request => {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.FOLDER}`,\r\n key: `folder:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightLibraryDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightLibraryDataService implements BaseLibraryDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightLibraryDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Library;\r\n }\r\n\r\n public get channelName(): string {\r\n return 'library:data:service';\r\n }\r\n\r\n public getLibraries(callback?: (data: Core.Collection) => void): Core.Collection {\r\n const request = requests.getLibraries((libraries: LibraryAPIResponse[]) => {\r\n Radio.channel(this.channelName).trigger('libraries:sync', libraries);\r\n\r\n callback && callback(new Core.Collection(libraries));\r\n });\r\n\r\n const flightResponse = Flight.getResponse<LibraryAPIResponse[]>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Collection(flightResponse.data.map(res => res.data));\r\n }\r\n\r\n public getFolder(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getFolder(id, (folder: Folder) => callback && callback(new Core.Model(folder)));\r\n const flightResponse = Flight.getResponse<Folder>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Store } from 'redux';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { BaseSeriesDataService, SharedDataServices, SharedWithStatements, SharedDataChannels, Series } from '@clickview/shared';\r\n\r\nconst requests = {\r\n getOne(id: string, success?: (data: Series) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.SERIES}`,\r\n key: `series:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightSeriesDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightSeriesDataService implements BaseSeriesDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightSeriesDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Series;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.SERIES;\r\n }\r\n\r\n public getSeries(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getOne(id, (series: Series) => callback && callback(new Core.Model(series)));\r\n const flightResponse = Flight.getResponse<Series>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Core, Flight, FunctionHelper } from '@clickview/common';\r\nimport { BaseVideoDataService, Video } from '@clickview/shared';\r\nimport { Store } from 'redux';\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { DataServices } from 'shared/constants';\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightVideoDataService implements BaseVideoDataService<Core.Collection> {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.Video;\r\n }\r\n\r\n public clearVideoCache(): void {\r\n this.store.dispatch<Flight.InvalidateAction>({\r\n type: Flight.Actions.INVALIDATE,\r\n keys: ['video'],\r\n request: null\r\n });\r\n }\r\n public getVideos(\r\n ids: string[],\r\n callback?: (videos: Core.Collection<Core.Model>) => void\r\n ): Core.Collection {\r\n const wrappedCallback = (videos: Video[]) => {\r\n if (!FunctionHelper.isFunction(callback))\r\n return;\r\n\r\n callback(new Core.Collection(videos));\r\n };\r\n const request = VideoRequests.videos(ids, wrappedCallback);\r\n const response = Flight.getResponse<Video[]>(this.store.getState(), request.key);\r\n\r\n if (response.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n else\r\n wrappedCallback(response.data);\r\n return new Core.Collection(response.data);\r\n }\r\n}","import { Store } from 'redux';\r\nimport { Core, Flight, HashObject, HttpVerbs } from '@clickview/common';\r\nimport { BaseVideoUploadDataService, VideoOrigin, PendingProcessOrigin } from '@clickview/shared';\r\nimport { DataServices } from 'shared/constants';\r\n\r\nconst pendingItemRequests = {\r\n delete(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:clear:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n cancel(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/cancel?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:cancel:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n retry(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/retry?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:retry:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.POST\r\n };\r\n },\r\n\r\n get(id: string, success?: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/${id}`,\r\n key: `pending:item:${id}`,\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getAll(success: (items: HashObject[]) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process?destination=2&status=1&status=-1',\r\n key: 'pending',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n completeUpload(completeRequest: CompletePendingItemRequest, success: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process',\r\n key: `complete:upload:${completeRequest.id}`,\r\n type: HttpVerbs.POST,\r\n success,\r\n data: completeRequest\r\n };\r\n }\r\n};\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\ninterface CompletePendingItemVideo {\r\n name: string;\r\n description?: string;\r\n}\r\n\r\ninterface CompletePendingItemRequest {\r\n id: string;\r\n userId: string;\r\n customerId: string;\r\n libraryId: string;\r\n categoryId: string;\r\n fileUrl: string;\r\n pendingProcessOrigin: PendingProcessOrigin;\r\n origin: VideoOrigin;\r\n video: CompletePendingItemVideo;\r\n}\r\n\r\nexport class FlightVideoUploadDataService implements BaseVideoUploadDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.VideoUpload;\r\n }\r\n\r\n public clearPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.delete(ids, callback));\r\n }\r\n public cancelPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.cancel(ids, callback));\r\n }\r\n public retryPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.retry(ids, callback));\r\n }\r\n public getPendingItem(id: string, callback: (item: Core.Model) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.get(id, (data: any) => {\r\n callback(new Core.Model(data));\r\n }));\r\n }\r\n public getPendingItems(callback: (items: HashObject[]) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.getAll(callback));\r\n }\r\n public completeVideoUpload(request: CompletePendingItemRequest, callback?: (item: HashObject) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.completeUpload(request, callback));\r\n }\r\n}","import { BaseVideoUploadService, UserDataService, UploadEventNames, BasePendingItemsService, PendingProcessOrigin } from '@clickview/shared';\r\nimport { FlightVideoUploadDataService } from './FlightVideoUploadDataService';\r\nimport { InstanceManager, Core, HashObject, LanguageService } from '@clickview/common';\r\nimport { VideoOrigin } from '@clickview/shared';\r\nimport { Services, DataServices } from 'shared/constants';\r\n\r\nexport class VideoUploadService extends BaseVideoUploadService {\r\n private videoUploadDataService: FlightVideoUploadDataService;\r\n private pendingItemsService: BasePendingItemsService;\r\n private userDataService: UserDataService;\r\n\r\n public initialize(): void {\r\n super.initialize();\r\n\r\n this.videoUploadDataService = InstanceManager.getInstance(DataServices.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n this.userDataService = InstanceManager.getInstance(DataServices.User, this);\r\n\r\n this.listenTo(this.channelName, UploadEventNames.FILES_ADDED, this.lockUnload);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_COMPLETE, this.unlockUnload);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_CANCELLED, this.unlockUnload);\r\n }\r\n\r\n private lockUnload(): void {\r\n /**\r\n * TODO: Move NavLockService out of Library Editor into Shared\r\n */\r\n $(window).on('beforeunload', (e: any) => {\r\n const phrase = LanguageService.getPhrase('shared.uploadService', 'navLock');\r\n e.returnValue = phrase;\r\n return phrase;\r\n });\r\n }\r\n\r\n private unlockUnload(): void {\r\n const collection = this.getCollection();\r\n\r\n if (collection.some(upload => upload.get('progress') < 100))\r\n return;\r\n\r\n $(window).off('beforeunload');\r\n }\r\n\r\n private getUpload(file: File): Core.Model {\r\n const fileId = this.uploader.getId(file);\r\n\r\n return this.getCollection().get(fileId);\r\n }\r\n\r\n private completeUpload(upload: Core.Model, response: any): void {\r\n upload.set('sending', true);\r\n this.userDataService.getCurrentUser((user: HashObject) => {\r\n this.userDataService.getWorkspace((workspace: HashObject) => {\r\n this.videoUploadDataService.completeVideoUpload({\r\n id: upload.get('id'),\r\n userId: user.id,\r\n customerId: user.customerId,\r\n libraryId: workspace.id,\r\n categoryId: workspace.categoryTree.id,\r\n pendingProcessOrigin: PendingProcessOrigin.Upload,\r\n // TODO: Update this once cam has created a new origin value in master\r\n origin: VideoOrigin.Curator,\r\n fileUrl: response.url,\r\n video: { name: upload.get('name'), description: upload.get('description') }\r\n }, (item: any) => {\r\n upload.set('pendingProcessId', item.pendingProcessId);\r\n this.pendingItemsService.forceFetchPendingItems({\r\n resetTimeout: true,\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n protected onSuccess(file: File, response: any): void {\r\n super.onSuccess(file, response);\r\n\r\n const upload = this.getUpload(file);\r\n\r\n /**\r\n * editingMetadata is set by the EditUploadView.\r\n * If it's set, we wait till the user is done editing the metadata before\r\n * we post the data\r\n */\r\n if (upload.get('editingMetadata')) {\r\n this.listenToOnce(upload, 'change:editingMetadata', () => {\r\n this.completeUpload(upload, response);\r\n });\r\n } else {\r\n this.completeUpload(upload, response);\r\n }\r\n }\r\n}","export * from './FlightSeriesDataService';\r\nexport * from './FlightLibraryDataService';\r\nexport * from './VideoUploadService';\r\nexport * from './CombineUploadsService';\r\nexport * from './FlightVideoDataService';\r\nexport * from './FlightVideoUploadDataService';","import { Core } from '@clickview/common';\r\nimport { Video, VideoAction } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport function getVideoActionAppLink(video: Video, action: VideoAction): Core.AppLink {\r\n switch (action) {\r\n case VideoAction.AddToPlaylist:\r\n return { application: AppChannels.PLAYLISTS, action: Actions.Playlists.ADD_TO_PLAYLIST, args: [video.id]};\r\n case VideoAction.Share:\r\n return { application: AppChannels.DEFAULT, action: 'index' };\r\n }\r\n}","export * from './LiteAppLinkUtils';","import { useService } from '@clickview/common';\r\nimport { PopupViewProps, Popup, EditVideoDetails, UpdateVideoRequest } from '@clickview/shared';\r\nimport { Services } from 'shared/constants';\r\nimport * as React from 'react';\r\nimport { VideoUploadService } from 'shared/services';\r\n\r\ninterface EditUploadViewProps {\r\n uploadId: string;\r\n}\r\n\r\nexport function EditUploadView(props: EditUploadViewProps & PopupViewProps): JSX.Element {\r\n const { uploadId } = props;\r\n\r\n const videoUploadService = useService<VideoUploadService>(Services.VideoUpload);\r\n\r\n var upload = videoUploadService.getCollection().get(uploadId);\r\n\r\n /**\r\n * We set editingMetadata to true while the user has the edit form open\r\n * This prevents the VideoUploadService from posting till the user is done\r\n */\r\n if (!upload.get('editingMetadata'))\r\n upload.set('editingMetadata', true);\r\n\r\n const closePopup = () => {\r\n upload.set('editingMetadata', false);\r\n props.closePopup();\r\n };\r\n\r\n const saveUpload = (data: UpdateVideoRequest) => {\r\n upload.set(data);\r\n closePopup();\r\n };\r\n\r\n return (\r\n <Popup closePopup={closePopup} title={'Edit upload details'}>\r\n <EditVideoDetails\r\n video={{ name: upload.get('name'), description: upload.get('description'), productionYear: 0 }}\r\n saveVideo={saveUpload}\r\n onClickCancel={closePopup} />\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Flight, useService } from '@clickview/common';\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { Video, Popup, PopupViewProps, UpdateVideoRequest, EditVideoDetails } from '@clickview/shared';\r\nimport { CombineUploadsService } from 'shared/services';\r\n\r\ninterface EditVideoViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditVideoView(props: EditVideoViewProps & PopupViewProps): JSX.Element {\r\n const { id, closePopup } = props;\r\n\r\n const combinedUploadService = useService<CombineUploadsService>('combine:uploads:service');\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(id));\r\n const dispatch = useDispatch();\r\n\r\n const saveVideo = (data: UpdateVideoRequest) => {\r\n data.id = video.data.id;\r\n const request = VideoRequests.updateVideo(data, () => {\r\n combinedUploadService.updateUploadMetadata(data.id, data.name);\r\n closePopup();\r\n });\r\n Flight.fetch(dispatch, request);\r\n };\r\n\r\n if (!video.data)\r\n return <></>;\r\n\r\n return (\r\n <Popup closePopup={closePopup} title={'Edit video details'}>\r\n <EditVideoDetails\r\n video={video.data}\r\n saveVideo={saveVideo}\r\n onClickCancel={closePopup} />\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core, LanguageService, Flight } from '@clickview/common';\r\nimport {\r\n BannerHeader,\r\n VideoActionsContext,\r\n Config,\r\n VideoList,\r\n VideoCollection,\r\n Video,\r\n Series,\r\n ConfigRequests\r\n} from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { getVideoActionAppLink } from 'shared/utils';\r\n\r\nconst namespace = 'shared.favoriteVideos';\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [series.id]\r\n});\r\n\r\ninterface FavoriteVideosViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function FavoriteVideosView(props: FavoriteVideosViewProps): JSX.Element {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const favoriteVideos = Flight.useBasicFetch<VideoCollection>(VideoRequests.favoriteVideos(props.cursor));\r\n\r\n return (\r\n <VideoActionsContext.Provider value={{ getActionAppLink: getVideoActionAppLink }}>\r\n {!!config.data &&\r\n <BannerHeader\r\n heading={LanguageService.getPhrase(namespace, 'header')}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n />\r\n }\r\n {!!favoriteVideos.data &&\r\n <VideoList\r\n videos={favoriteVideos.data.data}\r\n cursors={favoriteVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n />\r\n }\r\n </VideoActionsContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\nimport { Flight, ViewModelService, BackboneViewWrapper, LanguageService } from '@clickview/common';\r\nimport { SvgContainer, cvSvgLibrary, CurrentUser, IconButton, NotificationHeaderView, SearchBarView, Query, UserRequests, SearchAppContext, Text } from '@clickview/shared';\r\n\r\nimport { UserOptions, UploadFileSelect } from 'shared/components';\r\n\r\nimport styles from './header.scss';\r\n\r\nfunction ClickViewLogo(): React.ReactElement {\r\n return (\r\n <svg viewBox='0 0 434 71'>\r\n <g>\r\n <path fill='#000000' d='M114.44 56.57l3.5 3.5a32.87 32.87 0 0 1-25.16 11.26c-19.63 0-33.62-15.54-33.62-35.16C59.16 16.55 73.16 1 92.78 1a32.31 32.31 0 0 1 24.19 10.4l-3.6 3.3a27.32 27.32 0 0 0-20.59-8.74c-16.91 0-28.39 13.5-28.39 30.21s11.48 30.21 28.39 30.21a28.08 28.08 0 0 0 21.66-9.81zM126.64 1h4.55v70.22h-4.73L126.64 1zm17.3 10.6a3.7 3.7 0 1 1 0 7.4 3.7 3.7 0 0 1 0-7.4zm-2.41 15.07h4.81v44.56h-4.81V26.67zm48 33.15l3.33 3.15a21.8 21.8 0 0 1-17.31 8.61c-12.59 0-21.76-10-21.76-22.22 0-12.22 9.17-22.22 21.76-22.22a21.84 21.84 0 0 1 16.85 8l-3.43 3.06a17.15 17.15 0 0 0-13.42-6.3c-10.09 0-16.76 8.15-16.76 17.5s6.67 17.5 16.76 17.5a17.38 17.38 0 0 0 13.98-7.08zm14.99-9.33v20.74h-4.73V1.01h4.73v47.75l20.74-19.02h6.64l-21.56 19.84L234 71.23h-7.01l-22.47-20.74z'/>\r\n <path fill='#F8981D' d='M304.09 19.4a5.56 5.56 0 1 1 0-11.12 5.56 5.56 0 0 1 0 11.12zm-5.56 7.27h11.11v44.56h-11.11V26.67zm61.42 22.15c0 .81 0 2.42-.09 4h-31.75c.8 3.77 5.2 8.61 11.93 8.61a17.11 17.11 0 0 0 11.66-4.31l5.38 8.16a27.23 27.23 0 0 1-17 6.1c-12.92 0-22.88-9.87-22.88-22.34s9.06-22.33 21.35-22.33c11.62-.04 21.4 9.02 21.4 22.11zm-10.77-3.76c-.18-3.68-3.58-8.62-10.67-8.62-6.91 0-10.05 4.85-10.4 8.62h21.07zM385.92 71h-6.42l-19.64-44.37h13.97l9.16 23.98 9.72-23.98h8.31l9.63 23.98 9.16-23.98h13.97L414.24 71h-6.52l-10.85-23.7L385.92 71zm-120.22.35h-6L226.11 1.01h17.01l19.42 44.18 18.08-44.18h16.91L265.7 71.35zM0 1l41 35L0 71V1z'/>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n\r\ninterface HeaderViewProps {\r\n toggleLeftNav: () => void;\r\n showLeftNavToggle: boolean;\r\n}\r\n\r\nexport function HeaderView(props: HeaderViewProps): React.ReactElement {\r\n const userRequest = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser);\r\n const user = userRequest.data;\r\n\r\n const searchCtx = React.useContext(SearchAppContext);\r\n const showSearch = searchCtx.getSearchInNav();\r\n\r\n return (\r\n <nav className={`navbar navbar-expanded sticky-top ${styles.nav}`}>\r\n\r\n <div className='justify-content-start'>\r\n {props.showLeftNavToggle &&\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Handle}\r\n className={`${styles.hamburger} ml-2 mr-3`}\r\n onClick={props.toggleLeftNav}\r\n />}\r\n\r\n <a className={`navbar-brand text-hide align-top ${styles.logoContainer} d-inline-block'`} href='/'>\r\n <ClickViewLogo />\r\n </a>\r\n </div>\r\n\r\n {showSearch &&\r\n <div className='justify-content-center'>\r\n <BackboneViewWrapper\r\n className={`container ${styles.searchBarNavContainer}`}\r\n view={SearchBarView}\r\n options={{\r\n model: ViewModelService.get<Query>('search', { ctor: Query }),\r\n disableMask: true\r\n }}\r\n />\r\n </div>\r\n }\r\n\r\n <div className={`d-flex align-items-center justify-content-end pr-1 ${styles.actionButtons}`}>\r\n {\r\n !!user && <UploadFileSelect hideButtonText={showSearch}/>\r\n }\r\n <BackboneViewWrapper view={NotificationHeaderView} className='ml-2 pl-2' />\r\n\r\n <UserOptions user={user} />\r\n </div>\r\n </nav>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav\":\"cv--nav--3RLQ9\",\"logoContainer\":\"cv--logoContainer--UIlc9\",\"searchBar\":\"cv--searchBar--2E7RQ\",\"actionButtons\":\"cv--actionButtons--2HygL\",\"hamburger\":\"cv--hamburger--2BRko\",\"searchBarNavContainer\":\"cv--searchBarNavContainer--2bUnK\"};","export * from './favorite-videos/FavoriteVideosView';\r\nexport * from './header/HeaderView';\r\nexport * from './left-nav/LeftNavView';\r\nexport * from './play/PlayView';\r\nexport * from './my-uploads/MyUploadsView';\r\nexport * from './series/SeriesView';\r\nexport * from './play-shared/PlaySharedView';\r\nexport * from './edit-video/EditVideoView';\r\nexport * from './edit-upload/EditUploadView';","import * as React from 'react';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\n\r\nimport { Core, LanguageService } from '@clickview/common';\r\nimport { AppLink } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\nconst namespace = 'shared.leftNav';\r\n\r\nexport enum LeftNavState {\r\n Open,\r\n Collapsed,\r\n Hidden\r\n}\r\n\r\ninterface LeftNavItemProps {\r\n name: string;\r\n appLink?: Core.AppLink;\r\n}\r\n\r\nconst LeftNavItem = (props: LeftNavItemProps): React.ReactElement => (\r\n <AppLink className={`${styles.leftNavAnchor} d-block my-3`} appLink={props.appLink}>\r\n <span className={`${styles.iconPlaceholder}`}></span>\r\n <span className={`${styles.leftNavText}`}>{props.name}</span>\r\n </AppLink>\r\n);\r\n\r\ninterface LeftNavViewProps {\r\n navState: LeftNavState;\r\n}\r\n\r\nexport const LeftNavView = React.memo(function(props: LeftNavViewProps): React.ReactElement {\r\n if (props.navState === LeftNavState.Hidden)\r\n return <></>;\r\n\r\n const collapsed = props.navState === LeftNavState.Collapsed;\r\n\r\n const getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\n /**\r\n * TODO: Set up applinks for all of these pages\r\n */\r\n return (\r\n <nav className={`${styles.leftNav} ${collapsed ? styles.leftNavCollapsed : ''}`}>\r\n <Scrollbars height='100%'>\r\n <LeftNavItem name={getPhrase('home')} appLink={{\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }} />\r\n <LeftNavItem\r\n name={getPhrase('myPlaylists')}\r\n appLink={{ application: AppChannels.PLAYLISTS, action: Actions.Playlists.HOME }}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('myUploads')}\r\n appLink={{ application: AppChannels.DEFAULT, action: Actions.Default.MY_UPLOADS }}\r\n />\r\n <LeftNavItem name={getPhrase('following')} />\r\n <LeftNavItem\r\n name={getPhrase('favouritedVideos')}\r\n appLink={{ application: AppChannels.DEFAULT, action: Actions.Default.FAVORITE_VIDEOS }}\r\n\r\n />\r\n {!collapsed &&\r\n <>\r\n <hr />\r\n <LeftNavItem name={getPhrase('watchHistory')} />\r\n <LeftNavItem name={getPhrase('myClassrooms')} />\r\n </>\r\n }\r\n </Scrollbars>\r\n </nav>\r\n );\r\n});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"leftNav\":\"cv--leftNav--3jVyN\",\"iconPlaceholder\":\"cv--iconPlaceholder--1ud9G\",\"leftNavAnchor\":\"cv--leftNavAnchor--3A_-8\",\"leftNavText\":\"cv--leftNavText--3qbRh\",\"leftNavCollapsed\":\"cv--leftNavCollapsed--2idO9\"};","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\nimport { Text } from '@clickview/shared';\r\n\r\nconst namespace = 'shared.myUploads';\r\n\r\nexport function DismissibleAlert(): JSX.Element {\r\n const [ show, setShow ] = React.useState(!localStorage.getItem('uploadInfoDismissed'));\r\n\r\n const onDismiss = () => {\r\n localStorage.setItem('uploadInfoDismissed', '1');\r\n setShow(false);\r\n };\r\n\r\n if (!show)\r\n return <></>;\r\n\r\n return (\r\n <Alert variant={'info'} onClose={onDismiss} dismissible>\r\n <Text namespace={namespace} phrase={'alertMessage'} /><br />\r\n <small><Text namespace={namespace} phrase={'alertSecondaryMessage'} /></small>\r\n </Alert>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight, LanguageService, Core, useService } from '@clickview/common';\r\nimport {\r\n BannerHeader,\r\n Config,\r\n Text,\r\n VideoCollection,\r\n Video,\r\n Series,\r\n ActionOptions,\r\n cvSvgLibrary,\r\n VideoActionsContext,\r\n Library,\r\n VideoAction,\r\n VideoList,\r\n ConfigRequests,\r\n UserRequests\r\n} from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { useGetUploadingItems } from './useGetUploadingItems';\r\nimport { UploadingItem } from 'shared/components';\r\nimport { CombinedUpload, CombinedUploadStatus, CombineUploadsService } from 'shared/services';\r\nimport { DismissibleAlert } from './DismissableAlert';\r\n\r\n/**\r\n * This will need to change when this is moved into its own application directory.\r\n */\r\nconst namespace = 'shared.myUploads';\r\n\r\n// This must be a function as the LanguageService config won't be set until runtime.\r\nconst getHeaderActions = (): ActionOptions[] => ([\r\n {\r\n label: LanguageService.getPhrase(namespace, 'share'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Share,\r\n className: 'btn btn-light',\r\n button: true\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'edit'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Edit,\r\n className: 'btn btn-light',\r\n button: true\r\n }\r\n]);\r\n\r\nfunction getVideoActions(): VideoAction[] {\r\n return [\r\n VideoAction.Edit,\r\n VideoAction.AddToPlaylist,\r\n VideoAction.Share\r\n ];\r\n}\r\n\r\nfunction getVideoActionAppLink(video: Video, action: VideoAction): Core.AppLink {\r\n switch (action) {\r\n case VideoAction.Edit:\r\n return { application: AppChannels.DEFAULT, action: Actions.Default.EDIT_VIDEO, args: [video.id]};\r\n case VideoAction.Share:\r\n return { application: AppChannels.DEFAULT, action: 'index', args: [video.id]};\r\n case VideoAction.AddToPlaylist:\r\n return { application: AppChannels.PLAYLISTS, action: 'add:to:playlist', args: [video.id]};\r\n }\r\n}\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [series.id]\r\n});\r\n\r\ninterface MyUploadsViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function MyUploadsView(props: MyUploadsViewProps): JSX.Element {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const workspace = Flight.useBasicFetch<Library>(UserRequests.workspace);\r\n\r\n const workspaceRequest = workspace.data && VideoRequests.workspace(workspace.data.id, props.cursor);\r\n const workspaceVideos = Flight.useGetResponse<VideoCollection>(workspaceRequest && workspaceRequest.key);\r\n const fetchData = Flight.useGetFetch(workspaceRequest);\r\n\r\n /**\r\n * Get reference to the combined service even though useGetUploadingItems does it too\r\n * so that we can provide the callbacks\r\n */\r\n const combinedUploadService = useService<CombineUploadsService>('combine:uploads:service');\r\n\r\n /**\r\n * fetchData will be undefined on the first run through of this view because\r\n * the workspace.data will be null, so we pass a dependency of !workspace.data\r\n * so this callback is re-created once we have wokspace.data and the fetchData\r\n * is properly encapsulated.\r\n */\r\n const items = useGetUploadingItems(() => {\r\n fetchData && fetchData();\r\n }, [!!workspace.data]);\r\n\r\n /**\r\n * Using React.useCallback because this component will render\r\n * every time a chunk is loaded and every time the pending items\r\n * is fetched\r\n */\r\n const onClickDelete = React.useCallback((item: CombinedUpload) => {\r\n combinedUploadService.cancelItem(item);\r\n }, []);\r\n const onClickAlternate = React.useCallback((item: CombinedUpload) => {\r\n switch (item.status) {\r\n case CombinedUploadStatus.Errored:\r\n combinedUploadService.retryItem(item);\r\n return;\r\n case CombinedUploadStatus.Processing:\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.EDIT_VIDEO,\r\n args: [item.videoId]\r\n });\r\n return;\r\n case CombinedUploadStatus.Uploading:\r\n combinedUploadService.editUpload(item);\r\n break;\r\n default:\r\n // This should never happen\r\n }\r\n }, []);\r\n\r\n if (workspace.shouldFetch || !workspace.data) {\r\n return <></>;\r\n }\r\n\r\n if (workspaceVideos.shouldFetch)\r\n fetchData();\r\n\r\n if (!config.data || !workspaceVideos.data)\r\n return <></>;\r\n\r\n return (\r\n <VideoActionsContext.Provider\r\n value={{\r\n videoActions: getVideoActions(),\r\n getActionAppLink: getVideoActionAppLink\r\n }}>\r\n <BannerHeader\r\n heading={LanguageService.getPhrase(namespace, 'header')}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n actions={getHeaderActions()}\r\n />\r\n <div>\r\n <p className='pt-3'><Text namespace={namespace} phrase='description' /></p>\r\n <DismissibleAlert />\r\n {items.map(item => <UploadingItem\r\n item={item}\r\n onClickAlternate={onClickAlternate}\r\n onClickDelete={onClickDelete}\r\n key={item.id}\r\n />)}\r\n <VideoList\r\n videos={workspaceVideos.data.data}\r\n cursors={workspaceVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n />\r\n </div>\r\n </VideoActionsContext.Provider>\r\n );\r\n}","import { useService, TimeHelper } from '@clickview/common';\r\nimport * as React from 'react';\r\nimport { CombineUploadsService, CombinedUpload } from 'shared/services';\r\n\r\nexport function useGetUploadingItems(onRemove: () => void, dependencies: React.DependencyList): CombinedUpload[] {\r\n const combineUploadsService = useService<CombineUploadsService>('combine:uploads:service');\r\n\r\n const [ , setUpdate ] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n const collection = combineUploadsService.getCollection();\r\n collection.off('add remove change');\r\n collection.on('add remove change', () => {\r\n setUpdate(s => !s);\r\n });\r\n collection.on('remove', onRemove);\r\n return () => collection.off('add remove change');\r\n }, dependencies);\r\n\r\n return combineUploadsService.getCollection().toJSON();\r\n}","import * as React from 'react';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { Video, VideoCollection } from '@clickview/shared';\r\n\r\nimport { PlayerContext } from 'shared/contexts';\r\nimport { PlayPage } from 'shared/components';\r\nimport { ShareRequests } from 'shared/flight-requests/ShareRequests';\r\nimport { VideoRequests } from 'shared/flight-requests';\r\n\r\ninterface PlayViewProps {\r\n shortCode: string;\r\n}\r\n\r\nexport function PlaySharedView(props: PlayViewProps): React.ReactElement {\r\n const { setVideo } = React.useContext(PlayerContext);\r\n\r\n const video = Flight.useBasicFetch<Video>(ShareRequests.sharedResource(props.shortCode));\r\n const relatedVideos = Flight.useBasicFetch<VideoCollection>(VideoRequests.favoriteVideos(null));\r\n\r\n React.useEffect(() => {\r\n if (!video.data)\r\n return;\r\n\r\n setVideo(video.data);\r\n }, [!!video.data]);\r\n\r\n if (!video.data)\r\n return <></>;\r\n\r\n return (\r\n <PlayPage\r\n video={video.data}\r\n relatedVideos={relatedVideos.data ? relatedVideos.data.data : null}\r\n />\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { Video, VideoCollection } from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { PlayerContext } from 'shared/contexts';\r\nimport { PlayPage } from 'shared/components';\r\n\r\ninterface PlayViewProps {\r\n id: string;\r\n}\r\n\r\nexport function PlayView(props: PlayViewProps): React.ReactElement {\r\n const { setVideo } = React.useContext(PlayerContext);\r\n\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\r\n const relatedVideos = Flight.useBasicFetch<VideoCollection>(VideoRequests.favoriteVideos(null));\r\n\r\n React.useEffect(() => {\r\n setVideo(video.data);\r\n }, [!!video.data]);\r\n\r\n if (!video.data)\r\n return <></>;\r\n\r\n return (\r\n <PlayPage\r\n video={video.data}\r\n relatedVideos={relatedVideos.data ? relatedVideos.data.data : null}\r\n setFavorite={console.log}\r\n />\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight, LanguageService, Core } from '@clickview/common';\r\nimport { BannerHeader, Series, Config, VideoList, Video, Breadcrumbs, BreadcrumbType, Classification, VideoCollection, ActionOptions, cvSvgLibrary, PartialBreadcrumbs, PartialVideoList, BaseObject, ConfigRequests } from '@clickview/shared';\r\n\r\nimport { SeriesRequests } from 'shared/flight-requests';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\n/**\r\n * This will need to change when this is moved into its own application directory.\r\n */\r\nconst namespace = 'shared.series';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\n// Update this applink when we pull dashboard in\r\nconst getClassificationAppLink = (classification: Classification): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [classification.id]\r\n});\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n});\r\n\r\nconst getHeaderActions = (): ActionOptions[] => ([\r\n {\r\n label: LanguageService.getPhrase(namespace, 'share'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Share,\r\n className: 'btn btn-light mr-2',\r\n button: true\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'follow'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Edit, // TODO: Change to \"Follow\" icon\r\n className: 'btn btn-light',\r\n button: true\r\n }\r\n]);\r\n\r\ninterface SeriesViewProps {\r\n id: string;\r\n classificationId?: string;\r\n cursor?: string;\r\n}\r\n\r\nexport function SeriesView(props: SeriesViewProps): JSX.Element {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.id));\r\n const seriesVideos = Flight.useBasicFetch<VideoCollection>(SeriesRequests.seriesVideos(props.id, props.cursor));\r\n\r\n let breadcrumbs: BaseObject[] = [series.data];\r\n if (props.classificationId) {\r\n const subjectPath = Flight.useBasicFetch<Classification[]>(SeriesRequests.breadcrumbs(props.classificationId));\r\n if (subjectPath.data) {\r\n breadcrumbs.unshift(...subjectPath.data);\r\n }\r\n }\r\n\r\n if (!seriesVideos.data || !config.data)\r\n return <></>;\r\n\r\n const heading = getPhrase('series', { seriesName: series.data.name });\r\n\r\n return (\r\n <>\r\n <BannerHeader\r\n heading={heading}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n backButtonAppLink={{\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }}\r\n backButtonText='Home' // this needs to be changed eventually\r\n actions={getHeaderActions()}\r\n />\r\n <div>\r\n <div className='border-bottom py-3 mb-3'>\r\n {(props.classificationId && breadcrumbs.length < 2)\r\n ? <PartialBreadcrumbs />\r\n : <Breadcrumbs\r\n currentItem={series.data}\r\n type={BreadcrumbType.Static}\r\n getItemAppLink={getClassificationAppLink}\r\n data={breadcrumbs}\r\n rootItem={{\r\n label: getPhrase('dashboard'),\r\n appLink: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }\r\n }}\r\n />\r\n }\r\n\r\n {series.data.description && (\r\n <p className='pt-3'>{series.data.description}</p>\r\n )}\r\n </div>\r\n\r\n {seriesVideos.data\r\n ? !seriesVideos.isFetching\r\n ? <VideoList\r\n videos={seriesVideos.data.data}\r\n cursors={seriesVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n />\r\n : <PartialVideoList />\r\n : <>Empty State</>\r\n }\r\n </div>\r\n </>\r\n );\r\n}","import './theme-overrides.scss';","// extracted by mini-css-extract-plugin","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_common__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_dashboard__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_playlists__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_shared__;","module.exports = __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_handlebars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_marked__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_bootstrap__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dropzone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_redux__;"],"sourceRoot":""}
1
+ {"version":3,"sources":["file://C:/ClickView Projects/clickview/packages/lite/webpack/universalModuleDefinition","file://C:/ClickView Projects/clickview/packages/lite/webpack/bootstrap","file://C:/ClickView Projects/clickview/packages/lite/src/apps/content-updates/LiteContentUpdatesApplication.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/content-updates/utils/LiteContentUpdateAppLinks.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/content-updates/utils/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/dashboard/LiteDashboardApplication.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/default/LiteDefaultApplication.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/default/views/dev-error/LiteDevErrorView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/default/views/dialog/LiteDialogView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/default/views/error/LiteErrorView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/default/views/home/HomeView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/default/views/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/default/views/not-found/LiteNotFoundView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/embed/LiteEmbedApplication.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/embed/views/embed/EmbedView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/embed/views/embed/embed.scss","file://C:/ClickView Projects/clickview/packages/lite/src/apps/embed/views/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/notifications/LiteNotificationsApplication.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/notifications/constants/NotificationsAppVariables.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/playlists/LitePlaylistsApplication.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/LiteSearchApplication.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/filter-actions/FilterActions.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/filter-button/FilterButton.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/filter-button/filter-button.scss","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/filter-types/checkbox-filter/CheckboxFilter.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/filter-types/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/filter-types/more-filters/MoreFilters.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/filter-types/radio-filter/RadioFilter.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/filter-types/radio-filter/radio-filter.scss","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/filter-types/switch-filter/SwitchFilter.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/reset-button/ResetButton.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/search-filters/SearchFilters.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/components/search-filters/search-filters.scss","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/constants/SearchAppVariables.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/flight-requests/SearchRequests.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/flight-requests/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/reducers/FilterReducer.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/reducers/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/utils/FilterHelper.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/utils/SearchHelper.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/utils/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/views/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/views/search-results/PartialSearchResultsView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/views/search-results/SearchResultsView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/apps/search/views/search-results/search-results.scss","file://C:/ClickView Projects/clickview/packages/lite/src/apps/subjects/LiteSubjectApplication.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/clips/ClipItem.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/clips/Clips.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/clips/clips.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/div-button/DivButton.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/floating-player/FloatingPlayer.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/floating-player/floating-player.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/immersive-reader/ImmersiveReader.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/immersive-reader/immersive-reader.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/interactives/InteractiveItem.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/interactives/Interactives.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/interactives/interactives.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/play-page/Badges.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/play-page/Buttons.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/play-page/PlayPage.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/play-page/VideoTitle.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/resources/Resources.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/synopsis/Synopsis.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/synopsis/synopsis.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/upload-file-select/UploadFileSelect.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/uploading-item/UploadingItem.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/user-options/UserOptions.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/user-options/user-options.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/video-details/VideoDetails.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/video-details/video-details.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/components/web-player/WebPlayer.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/constants/LiteActions.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/constants/LiteLayoutRegions.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/constants/LiteLayouts.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/constants/LiteRadioChannels.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/constants/RadioChannels.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/constants/Services.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/constants/WithStatements.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/constants/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/contexts/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/contexts/player/PlayerContext.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/errors/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/errors/not-found/LiteNotFoundError.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/flight-requests/AudienceRequests.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/flight-requests/SeriesRequests.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/flight-requests/ShareRequests.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/flight-requests/VideoRequests.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/flight-requests/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/hooks/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/hooks/useWindowListeners.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/embed-layout/EmbedLayout.hbs","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/embed-layout/EmbedLayoutComponent.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/embed-layout/EmbedLayoutView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/teacher-layout/TeacherLayout.hbs","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/teacher-layout/TeacherLayoutComponent.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/teacher-layout/TeacherLayoutView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/teacher-layout/drag-mask/DragMask.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/teacher-layout/drag-mask/drag-mask.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/layouts/teacher-layout/teacher-layout.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/services/CombineUploadsService.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/services/FlightLibraryDataService.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/services/FlightSeriesDataService.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/services/FlightVideoDataService.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/services/FlightVideoUploadDataService.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/services/VideoUploadService.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/services/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/utils/LiteAppLinkUtils.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/utils/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/edit-upload/EditUploadView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/edit-video/EditVideoView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/favorite-videos/FavoriteVideosView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/header/HeaderView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/header/header.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/left-nav/LeftNavView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/left-nav/left-nav.scss","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/my-uploads/DismissableAlert.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/my-uploads/MyUploadsView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/my-uploads/useGetUploadingItems.ts","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/play-shared/PlaySharedView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/play/PlayView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/shared/views/series/SeriesView.tsx","file://C:/ClickView Projects/clickview/packages/lite/src/styles/index.ts","file://C:/ClickView Projects/clickview/packages/lite/src/styles/theme-overrides.scss","file://C:/ClickView Projects/clickview/packages/lite/external \"@clickview/common\"","file://C:/ClickView Projects/clickview/packages/lite/external \"@clickview/dashboard\"","file://C:/ClickView Projects/clickview/packages/lite/external \"@clickview/playlists\"","file://C:/ClickView Projects/clickview/packages/lite/external \"@clickview/shared\"","file://C:/ClickView Projects/clickview/packages/lite/external \"ImmersiveReader\"","file://C:/ClickView Projects/clickview/packages/lite/external \"Backbone\"","file://C:/ClickView Projects/clickview/packages/lite/external \"Handlebars\"","file://C:/ClickView Projects/clickview/packages/lite/external \"marked\"","file://C:/ClickView Projects/clickview/packages/lite/external \"React\"","file://C:/ClickView Projects/clickview/packages/lite/external \"ReactBootstrap\"","file://C:/ClickView Projects/clickview/packages/lite/external \"ReactCustomScrollbars\"","file://C:/ClickView Projects/clickview/packages/lite/external \"reactDropzone\"","file://C:/ClickView Projects/clickview/packages/lite/external \"ReactIntersectionObserver\"","file://C:/ClickView Projects/clickview/packages/lite/external \"ReactRedux\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFA;AAEA;AACA;AAKA;AAEA;;IAEM,oB;;;;;;;;;;;;;wBACkB;AACpB,aAAO,4DAAW,CAAC,eAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,2BAAmB,gBADd;AAEL,+BAAuB;AAFlB,OAAP;AAID;;;;EAVgC,sDAAI,CAAC,S;;AAajC,IAAM,yBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,qCAwBuB;AACnB,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,uEAAD,EAAmB;AAAC,gBAAQ,EAAE,oFAAyB;AAApC,OAAnB,CAAjD;AACD;AA1BH;AAAA;AAAA,yCA4B8B,gBA5B9B,EA4BsD;AAClD,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EACE,oDAAC,6EAAD,EAAyB;AAAC,wBAAgB,EAAE,gBAAnB;AAAqC,gBAAQ,EAAE,oFAAyB;AAAxE,OAAzB,CADF;AAED;AA/BH;AAAA;AAAA,wBAGiB;AACb,aAAO,6BAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,wDAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE;AADF;AAFJ,OAAP;AAMD;AAdH;AAAA;AAAA,wBAgBwB;AACpB,aAAO,4DAAW,CAAC,eAAnB;AACD;AAlBH;AAAA;AAAA,wBAoB0B;AACtB,aAAO,oBAAP;AACD;AAtBH;;AAAA;AAAA,EAA+C,sDAAI,CAAC,WAApD,E;;;;;;;;;;;;ACtBA;AAAA;AAAA;AAAA;AAEO,IAAM,yBAAyB,GAA0B;AAC9D,iBAAe,EAAE,yBAAC,KAAD;AAAA,WAAmB;AAClC,iBAAW,EAAE,4DAAW,CAAC,OADS;AAElC,YAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,UAFU;AAGlC,UAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAH4B,KAAnB;AAAA,GAD6C;AAM9D,kBAAgB,EAAE,0BAAC,MAAD;AAAA,WAAqB;AACrC,iBAAW,EAAE,4DAAW,CAAC,OADY;AAErC,YAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,MAFa;AAGrC,UAAI,EAAE,CAAC,MAAM,CAAC,EAAR;AAH+B,KAArB;AAAA,GAN4C;AAW9D,gCAA8B,EAAE,wCAAC,cAAD;AAAA,WAAqC;AACnE,iBAAW,EAAE,4DAAW,CAAC,eAD0C;AAEnE,YAAM,EAAE,wDAAO,CAAC,cAAR,CAAuB,qBAFoC;AAGnE,UAAI,EAAE,CAAC,cAAc,CAAC,EAAhB;AAH6D,KAArC;AAAA,GAX8B;AAgB9D,0BAAwB,EAAE,kCAAC,cAAD;AAAA,WAAqC;AAC7D,iBAAW,EAAE,4DAAW,CAAC,OADoC;AAE7D,YAAM,EAAE,wDAAO,CAAC,eAAR,CAAwB,cAF6B;AAG7D,UAAI,EAAE,CAAC,cAAc,CAAC,EAAhB;AAHuD,KAArC;AAAA,GAhBoC;AAqB9D,kBAAgB,EAAE;AAChB,eAAW,EAAE,4DAAW,CAAC,OADT;AAEhB,UAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFR,GArB4C;AAyB9D,uBAAqB,EAAE;AACrB,eAAW,EAAE,4DAAW,CAAC,eADJ;AAErB,UAAM,EAAE,wDAAO,CAAC,cAAR,CAAuB;AAFV;AAzBuC,CAAzD,C;;;;;;;;;;;;ACLP;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAEA;AACA;AAEA;;IAGM,kB;;;;;;;;;;;;;wBACqB;AACvB,aAAO,4DAAW,CAAC,SAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,kCAA0B,WADrB;AAGL,eAA0B;AAHrB,OAAP;AAKD;;;;EAX8B,sDAAI,CAAC,S;;AAc/B,IAAM,oBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,4BA+Bc;AACV,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,4EAAD,EAAwB;AAAC,YAAI,EAAC,SAAN;AAAgB,mBAAW,EAAE,KAAK;AAAlC,OAAxB,CAAjD;AACD;AAjCH;AAAA;AAAA,wBAGiB;AACb,aAAO,uBAAP;AACD;AALH;AAAA;AAAA,wBAOwB;AACpB,aAAO,4DAAW,CAAC,SAAnB;AACD;AATH;AAAA;AAAA,wBAe6B;AACzB,aAAO;AACL,YAAI,EAAE,wDAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE;AADF;AAFJ,OAAP;AAMD;AAtBH;AAAA;AAAA,wBAwBwB;AACpB,aAAO;AACL,iBAAS,EAAE,4DAAW,CAAC,SADlB;AAEL,eAAO,EAAE,4DAAW,CAAC;AAFhB,OAAP;AAID;AA7BH;AAAA;AAAA,wBAW0B;AACtB,aAAO,kBAAP;AACD;AAbH;;AAAA;AAAA,EAA0C,sDAAI,CAAC,WAA/C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;;IAEM,gB;;;;;;;;;;;;;wBACqB;AACvB,aAAO,4DAAW,CAAC,OAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,YAAkB,OADb;AAGL;AACA,yBAAwB,WAJnB;AAKL,yBAAwB,WALnB;AAML,yBAAwB,QANnB;AAOL,+BAAwB,iBAPnB;AAQL,gCAAwB,gBARnB;AAUL,iBAAwB;AAVnB,OAAP;AAYD;;;wBAEqB;AACpB,aAAO,CAAE,UAAF,EAAc,aAAd,EAA6B,OAA7B,EAAsC,UAAtC,EAAkD,WAAlD,EAA+D,YAA/D,CAAP;AACD;;;;EAtB4B,sDAAI,CAAC,S;;AAyB7B,IAAM,kBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,4BAyBc;AACV,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,2DAAD,EAAS,IAAT,CAAjD;AACD;AA3BH;AAAA;AAAA,8BA6BmB,EA7BnB,EA6B6B;AACzB,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,qDAAD,EAAS;AAAC,UAAE,EAAE;AAAL,OAAT,CAAjD;AACD;AA/BH;AAAA;AAAA,oCAiCyB,SAjCzB,EAiC0C;AACtC,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,2DAAD,EAAe;AAAC,iBAAS,EAAE;AAAZ,OAAf,CAAjD;AACD;AAnCH;AAAA;AAAA,8BAqCmB,MArCnB,EAqCqC;AACjC,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,0DAAD,EAAc;AAAC,cAAM,EAAE,MAAM,CAAC;AAAhB,OAAd,CAAjD;AACD;AAvCH;AAAA;AAAA,8BAyCmB,OAzCnB,EAyCkC;AAAA;;AAC9B,WAAK,MAAL,CAAY,aAAZ,CACE,8DAAa,CAAC,KADhB,EACuB,oDAAC,0DAAD,EAAc;AAAC,UAAE,EAAE,OAAL;AAAc,kBAAU,EAAE;AAAA,iBAAM,KAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAA1B,OAAd,CADvB;AAED;AA5CH;AAAA;AAAA,+BA8CoB,QA9CpB,EA8CoC;AAAA;;AAChC,WAAK,MAAL,CAAY,aAAZ,CACE,8DAAa,CAAC,KADhB,EACuB,oDAAC,2DAAD,EAAe;AAAC,gBAAQ,EAAE,QAAX;AAAqB,kBAAU,EAAE;AAAA,iBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAjC,OAAf,CADvB;AAED;AAjDH;AAAA;AAAA,2BAmDgB,EAnDhB,EAmD4B,MAnD5B,EAmD8C;AAC1C,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,uDAAD,EAAW;AAAC,UAAE,EAAE,EAAL;AAAS,cAAM,EAAE,MAAM,CAAC;AAAxB,OAAX,CAAjD;AACD;AArDH;AAAA;AAAA,mCAuDwB,MAvDxB,EAuD0C;AACtC,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,+DAAD,EAAmB;AAAC,cAAM,EAAE,MAAM,CAAC;AAAhB,OAAnB,CAAjD;AACD;AAzDH;AAAA;AAAA,qCA2DuB;AACnB,4DAAI,CAAC,WAAL,UAAuB,IAAI,2DAAJ,EAAvB;AACD;AA7DH;AAAA;AAAA,+BA+DiB;AACb,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,+DAAD,EAAa,IAAb,CAAjD;AACD;AAjEH;AAAA;AAAA,4BAmEc;AACV,UAAM,KAAK,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,EAA4B,OAA5B,CAAoC,eAApC,CAAd;AAEA,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,4DAAD,EAAU;AAAC,aAAK,EAAE;AAAR,OAAV,CAAjD;AACD;AAvEH;AAAA;AAAA,kCAyEoB;AAAA;;AAChB,UAAM,KAAK,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,EAA4B,OAA5B,CAAoC,eAApC,CAAd;AAEA,UAAI,CAAC,KAAL,EACE;AAJc,UAMR,aANQ,GAMU,KANV,CAMR,aANQ;AAQhB,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,KAAxC,EACE,oDAAC,uEAAD,EAAW;AACT,aAAK,EAAE,aAAa,CAAC,KADZ;AAET,YAAI,EAAE,aAAa,CAAC,IAFX;AAGT,eAAO,EAAE,aAAa,CAAC,OAHd;AAIT,cAAM,EAAE,KAAK,CAAC,MAJL;AAKT,cAAM,EAAE,KAAK,CAAC,MALL;AAMT,kBAAU,EAAE;AAAA,iBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AANH,OAAX,CADF;AAUD;AA3FH;AAAA;AAAA,+BA6FiB;AACb,UAAM,KAAK,GAAG,8CAAK,CAAC,OAAN,CAAc,YAAd,EAA4B,OAA5B,CAAoC,eAApC,CAAd;AAEA,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,+DAAD,EAAa;AAAC,aAAK,EAAE;AAAR,OAAb,CAAjD;AACD;AAjGH;AAAA;AAAA,wBAGiB;AACb,aAAO,qBAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,wDAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,8DAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAfH;AAAA;AAAA,wBAiBwB;AACpB,aAAO,4DAAW,CAAC,OAAnB;AACD;AAnBH;AAAA;AAAA,wBAqB0B;AACtB,aAAO,gBAAP;AACD;AAvBH;;AAAA;AAAA,EAAwC,kEAAxC,E;;;;;;;;;;;;ACvCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAMM,SAAU,YAAV,OAAmD;AAAA,MAA1B,KAA0B,QAA1B,KAA0B;AACvD,MAAI,CAAC,KAAL,EACE,OAAO,yGAAP;AAEF,SACE,0GACE,gEAAK,KAAK,CAAC,IAAX,CADF,EAEE,oDAAC,qDAAD,EAAM;AAAC,WAAO,EAAC;AAAT,GAAN,EACE,gEAAK,KAAK,CAAC,OAAX,CADF,CAFF,EAKE,oDAAC,qDAAD,EAAM;AAAC,WAAO,EAAC;AAAT,GAAN,EACE,6EADF,EAEE,kEAAO,KAAK,CAAC,KAAb,CAFF,CALF,CADF;AAYD,C;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AASM,SAAU,UAAV,CAAqB,KAArB,EAAqC;AACzC,MAAM,OAAO,GAAkB,KAAK,CAAC,OAAN,CAAc,GAAd,CAAkB,WAAC,EAAG;AACnD,QAAM,OAAO,GAAG,SAAV,OAAU,GAAK;AACnB,UAAI,CAAC,CAAC,OAAN,EACE,gEAAc,CAAC,UAAf,CAA0B,KAAK,CAAC,MAAhC,KAA2C,KAAK,CAAC,MAAN,EAA3C,CADF,KAGE,gEAAc,CAAC,UAAf,CAA0B,KAAK,CAAC,MAAhC,KAA2C,KAAK,CAAC,MAAN,EAA3C;AAEF,UAAI,CAAC,CAAC,KAAN,EACE,KAAK,CAAC,UAAN;AACH,KARD;;AAUA,QAAM,WAAW,GAAG;AAClB,gBAAU,EAAE,CAAC,CAAC,IADI;AAElB,eAAS,EAAE,CAAC,CAAC,SAFK;AAGlB,aAAO,EAAP,OAHkB;AAIlB,UAAI,EAAE,CAAC,CAAC;AAJU,KAApB;AAOA,WAAO,WAAP;AACD,GAnB8B,CAA/B;AAqBA,SACE,oDAAC,uDAAD,EAAM;AAAC,SAAK,EAAE,KAAK,CAAC,KAAd;AAAqB,cAAU,EAAE,KAAK,CAAC;AAAvC,GAAN,EACE,+DAAI,KAAK,CAAC,IAAV,CADF,EAEE,oDAAC,8DAAD,EAAa;AAAC,WAAO,EAAE;AAAV,GAAb,CAFF,CADF;AAMD,C;;;;;;;;;;;;ACvCD;AAAA;AAAA;AAAA;AAAA;AAQM,SAAU,SAAV,OAA6C;AAAA,MAAvB,KAAuB,QAAvB,KAAuB;AACjD,MAAI,CAAC,KAAL,EACE,OAAO,yGAAP;AAEF,SACE;AAAK,aAAS,EAAC;AAAf,KACE;AAAI,aAAS,EAAC;AAAd,KAA+B,KAAK,CAAC,OAArC,CADF,EAEE,+DAAI,KAAK,CAAC,WAAV,CAFF,CADF;AAMD,C;;;;;;;;;;;;AClBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;;;;AAGM,SAAU,QAAV,GAAkB;AACtB,SACE;AAAK,SAAK,EAAE;AAAE,YAAM,EAAE;AAAV;AAAZ,KACE,8EADF,EAEE,oDAAC,yDAAD,EAAQ;AAAC,WAAO,EAAE;AAChB,iBAAW,EAAE,4DAAW,CAAC,OADT;AAEhB,YAAM,EAAE,YAFQ;AAGhB,UAAI,EAAE,CAAC,SAAD;AAHU;AAAV,GAAR,EAIC,aAJD,CAFF,EAOE,oDAAC,yDAAD,EAAQ;AAAC,WAAO,EAAE;AAChB,iBAAW,EAAE,4DAAW,CAAC,OADT;AAEhB,YAAM,EAAE,YAFQ;AAGhB,UAAI,EAAE,CAAC,SAAD;AAHU;AAAV,GAAR,EAIC,aAJD,CAPF,CADF;AAeD,C;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAA;AAAA;AAEA;;;;AAGM,SAAU,YAAV,GAAsB;AAC1B,SACE,0GACE,4EADF,CADF;AAKD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXD;AACA;AAEA;AAGA;;IAEM,c;;;;;;;;;;;;;wBACqB;AACvB,aAAO,4DAAW,CAAC,KAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,kCAA0B;AADrB,OAAP;AAGD;;;;EAT0B,sDAAI,CAAC,S;;AAY3B,IAAM,gBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,+BAqBoB,SArBpB,EAqBqC;AACjC,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,0DAAD,EAAU;AAAC,UAAE,EAAE;AAAL,OAAV,CAAjD;AACD;AAvBH;AAAA;AAAA,wBAGiB;AACb,aAAO,mBAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,wDAAO,CAAC;AADT,OAAP;AAGD;AAXH;AAAA;AAAA,wBAawB;AACpB,aAAO,4DAAW,CAAC,KAAnB;AACD;AAfH;AAAA;AAAA,wBAiB0B;AACtB,aAAO,cAAP;AACD;AAnBH;;AAAA;AAAA,EAAsC,kEAAtC,E;;;;;;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AAUM,SAAU,SAAV,CAAoB,KAApB,EAAyC;AAC7C,MAAM,KAAK,GAAG,wDAAM,CAAC,aAAP,CAA4B,oEAAa,CAAC,KAAd,CAAoB,KAAK,CAAC,EAA1B,CAA5B,CAAd;AACA,MAAM,MAAM,GAAG,wDAAM,CAAC,aAAP,CAA6B,gEAAc,CAAC,MAA5C,CAAf;AAEA;;;;;AAIA,kDAAgB,YAAK;AACnB,YAAQ,CAAC,IAAT,CAAc,SAAd,CAAwB,GAAxB,CAA4B,iBAA5B;AACA,WAAO;AAAA,aAAM,QAAQ,CAAC,IAAT,CAAc,SAAd,CAAwB,MAAxB,CAA+B,iBAA/B,CAAN;AAAA,KAAP;AACD,GAHD,EAGG,EAHH;AAMA,MAAI,CAAC,KAAK,CAAC,IAAP,IAAe,CAAC,MAAM,CAAC,IAA3B,EACE,OAAO,yGAAP;AAEF,SACE,oDAAC,2DAAD,EAAU;AAAC,MAAE,EAAE,KAAK,CAAC,IAAN,CAAW,EAAhB;AAAoB,iBAAa,EAAE,MAAM,CAAC,IAAP,CAAY,YAA/C;AAA6D,aAAS,EAAE,kDAAM,CAAC;AAA/E,GAAV,CADF;AAGD,C;;;;;;;;;;;ACrCD;AACA,kBAAkB,8C;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAEA;AACA;AAEA;;IAGM,sB;;;;;;;;;;;;;wBACkB;AACpB,aAAO,4DAAW,CAAC,aAAnB;AACD;;;wBAEmB;AAClB,aAAO;AACL,4BAAoB;AADf,OAAP;AAGD;;;;EATkC,sDAAI,CAAC,S;;AAYnC,IAAM,wBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,0BAyBe,MAzBf,EAyBiC;AAC7B,WAAK,MAAL,CAAY,aAAZ,CAA0B,+DAAa,CAAC,OAAxC,EACE,oDAAC,qEAAD,EAAoB;AAAC,YAAI,EAAE,mEAAP;AAA0B,eAAO,EAAE;AAAE,gBAAM,EAAN;AAAF;AAAnC,OAApB,CADF;AAED;AA5BH;AAAA;AAAA,wBAGiB;AACb,aAAO,2BAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,wDAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,+DAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAfH;AAAA;AAAA,wBAqBwB;AACpB,aAAO,4DAAW,CAAC,aAAnB;AACD;AAvBH;AAAA;AAAA,wBAiB0B;AACtB,aAAO,sBAAP;AACD;AAnBH;;AAAA;AAAA,EAA8C,kEAA9C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AAEO,IAAM,yBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,wBACqB;AACjB,aAAO;AACL,oBAAY,EAAE;AACZ,qBAAW,EAAE,4DAAW,CAAC,OADb;AAEZ,gBAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFZ,SADT;AAML,qBAAa,EAAE;AACb,qBAAW,EAAE,4DAAW,CAAC,aADZ;AAEb,gBAAM,EAAE,wDAAO,CAAC,aAAR,CAAsB;AAFjB,SANV;;AAWL;;;AAGA,oBAAY,EAAE;AACZ,qBAAW,EAAE,4DAAW,CAAC,OADb;AAEZ,gBAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFZ,SAdT;AAmBL,sBAAc,EAAE;AACd,qBAAW,EAAE,4DAAW,CAAC,OADX;AAEd,gBAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFV,SAnBX;AAwBL,wBAAgB,EAAE;AAChB,qBAAW,EAAE,4DAAW,CAAC,OADT;AAEhB,gBAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFR;AAxBb,OAAP;AA6BD;AA/BH;AAAA;AAAA,wBAiC0C;AACtC,aAAO,CACL,kEAAgB,CAAC,mBADZ,EAEL,kEAAgB,CAAC,yBAFZ,EAGL,kEAAgB,CAAC,2BAHZ,EAIL,kEAAgB,CAAC,uBAJZ,EAKL,kEAAgB,CAAC,sBALZ,CAML;AACA;AACA;AARK,OAAP;AAUD,KA5CH,CA8CE;;AA9CF;AAAA;AAAA,wBA+CuC;AACnC;AACA,aAAO,EAAP;AACD;AAlDH;AAAA;AAAA,wBAoD0B;AACtB,aAAO,MAAP;AACD;AAtDH;;AAAA;AAAA,EAA+C,+EAA/C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AAGA;AAGA;AAYA;;IAGM,kB;;;;;;;;;;;;;wBACqB;AACvB,aAAO,4DAAW,CAAC,SAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,wBAAyB,OADpB;AAEL,4BAAyB;AAFpB,OAAP;AAID;;;wBACqB;AACpB,aAAO,CACL,aADK,EAEL,cAFK,EAGL,gBAHK,EAIL,eAJK,EAKL,yBALK,CAAP;AAOD;;;;EAnB8B,sDAAI,CAAC,S;;AAsB/B,IAAM,oBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,0BAyBe,MAzBf,EAyBiC;AAC7B,UAAM,kBAAkB,GAAG,SAArB,kBAAqB,CAAC,QAAD;AAAA,eAAyB;AAClD,qBAAW,EAAE,4DAAW,CAAC,SADyB;AAElD,gBAAM,EAAE,wDAAO,CAAC,SAAR,CAAkB,QAFwB;AAGlD,cAAI,EAAE,CAAC,QAAQ,CAAC,EAAV;AAH4C,SAAzB;AAAA,OAA3B;;AAMA,UAAM,cAAc,GAAG,SAAjB,cAAiB,CAAC,IAAD;AAAA,eAA2C;AAChE,qBAAW,EAAE,4DAAW,CAAC,SADuC;AAEhE,gBAAM,EAAE,wDAAO,CAAC,SAAR,CAAkB,IAFsC;AAGhE,gBAAM,EAAE;AACN,gBAAI,EAAE;AADA;AAHwD,SAA3C;AAAA,OAAvB;;AAQA,WAAK,qBAAL,CAA2B;AAAE,YAAI,EAAE,MAAM,CAAC,IAAP,IAAe,qEAAgB,CAAC;AAAxC,OAA3B;AAEA,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EACE,oDAAC,kEAAD,EAAc;AAAC,0BAAkB,EAAE,kBAArB;AACZ,WAAG,EAAE,MAAM,CAAC,IADA;AAEZ,sBAAc,EAAE,cAFJ;AAGZ,YAAI,EAAE,uEAAkB,CAAC,mBAAnB,CAAuC,MAAM,CAAC,IAA9C;AAHM,OAAd,CADF;AAOD;AAjDH;AAAA;AAAA,6BAmDkB,EAnDlB,EAmD4B;AACxB;AACA,UAAM,eAAe,GAAG,SAAlB,eAAkB,CAAC,KAAD;AAAA,eAAmB;AACzC,qBAAW,EAAE,4DAAW,CAAC,OADgB;AAEzC,gBAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,UAFiB;AAGzC,cAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAHmC,SAAnB;AAAA,OAAxB;;AAMA,UAAM,gBAAgB,GAAG,SAAnB,gBAAmB,CAAC,MAAD;AAAA,eAAqB;AAC5C,qBAAW,EAAE,4DAAW,CAAC,SADmB;AAE5C,gBAAM,EAAE,wDAAO,CAAC,SAAR,CAAkB;AAFkB,SAArB;AAAA,OAAzB;;AAKA,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EACE,oDAAC,iEAAD,EAAa;AACX,WAAG,EAAE,EADM;AAEX,kBAAU,EAAE,EAFD;AAGX,mBAAW,EAAE,4DAAW,CAAC,SAHd;AAIX,uBAAe,EAAE,eAJN;AAKX,wBAAgB,EAAE,gBALP;AAMX,iBAAS;AANE,OAAb,CADF;AAUD;AA1EH;AAAA;AAAA,kCA4EoB;AAAA;;AAChB,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,KAAxC,EACE,oDAAC,oEAAD,EAAgB;AAAC,mBAAW,EAAE,4DAAW,CAAC,SAA1B;AAAqC,kBAAU,EAAE;AAAA,iBAAM,KAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAjD,OAAhB,CADF;AAGD;AAhFH;AAAA;AAAA,iCAkFsB,EAlFtB,EAkFgC;AAAA;;AAC5B,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,KAAxC,EACE,oDAAC,qEAAD,EAAiB;AAAC,WAAG,EAAE,EAAN;AAAU,kBAAU,EAAE,EAAtB;AAA0B,kBAAU,EAAE;AAAA,iBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAAtC,OAAjB,CADF;AAGD;AAtFH;AAAA;AAAA,mCAwFwB,EAxFxB,EAwFkC;AAAA;;AAC9B,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,KAAxC,EACE,oDAAC,uEAAD,EAAmB;AACjB,WAAG,EAAE,EADY;AAEjB,kBAAU,EAAE,EAFK;AAGjB,uBAAe,EAAE;AACf,qBAAW,EAAE,4DAAW,CAAC,SADV;AAEf,gBAAM,EAAE,wDAAO,CAAC,SAAR,CAAkB;AAFX,SAHA;AAOjB,kBAAU,EAAE;AAAA,iBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAPK,OAAnB,CADF;AAWD;AApGH;AAAA;AAAA,kCAsGuB,OAtGvB,EAsGsC;AAAA;;AAClC,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,KAAxC,EACE,oDAAC,sEAAD,EAAkB;AAAC,WAAG,EAAE,OAAN;AAAe,eAAO,EAAE,OAAxB;AAAiC,kBAAU,EAAE;AAAA,iBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAA7C,OAAlB,CADF;AAED;AAzGH;AAAA;AAAA,4CA2GiC,OA3GjC,EA2GkD,UA3GlD,EA2GoE;AAAA;;AAChE,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,KAAxC,EACE,oDAAC,gFAAD,EAA4B;AAC1B,WAAG,YAAK,OAAL,cAAgB,UAAhB,CADuB;AAE1B,eAAO,EAAE,OAFiB;AAG1B,kBAAU,EAAE,UAHc;AAI1B,kBAAU,EAAE;AAAA,iBAAM,MAAI,CAAC,MAAL,CAAY,UAAZ,EAAN;AAAA;AAJc,OAA5B,CADF;AAQD;AApHH;AAAA;AAAA,wBAGiB;AACb,aAAO,uBAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,wDAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,8DAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAfH;AAAA;AAAA,wBAiBwB;AACpB,aAAO,4DAAW,CAAC,SAAnB;AACD;AAnBH;AAAA;AAAA,wBAqB0B;AACtB,aAAO,kBAAP;AACD;AAvBH;;AAAA;AAAA,EAA0C,kEAA1C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AAGA;AAEA;AAGA;;IAEM,e;;;;;;;;;;;;;wBACqB;AACvB,aAAO,4DAAW,CAAC,MAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,qBAAsB;AADjB,OAAP;AAGD;;;;EAT2B,sDAAI,CAAC,S;;AAY5B,IAAM,iBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,0BAwBe,WAxBf,EAwBuC;AACnC,WAAK,MAAL,CAAY,aAAZ,CAA0B,8DAAa,CAAC,OAAxC,EAAiD,oDAAC,mEAAD,EAAkB;AAAC,mBAAW,EAAE;AAAd,OAAlB,CAAjD;AACD;AA1BH;AAAA;AAAA,wBAGiB;AACb,aAAO,oBAAP;AACD;AALH;AAAA;AAAA,wBAO6B;AACzB,aAAO;AACL,YAAI,EAAE,wDAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE;AADF;AAFJ,OAAP;AAMD;AAdH;AAAA;AAAA,wBAgBwB;AACpB,aAAO,4DAAW,CAAC,MAAnB;AACD;AAlBH;AAAA;AAAA,wBAoB0B;AACtB,aAAO,eAAP;AACD;AAtBH;;AAAA;AAAA,EAAuC,sDAAI,CAAC,WAA5C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAEA,IAAM,SAAS,GAAG,sBAAlB;;AAEA,IAAM,cAAc,GAAG,SAAjB,cAAiB,CAAC,WAAD,EAAmC;AACxD,MAAM,kBAAkB,GAAG,sDAAI,CAAC,aAAL,CAAmB,QAAnB,EAA3B;AAEA,wDAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,eAAW,EAAE,4DAAW,CAAC,MADA;AAEzB,UAAM,EAAE,wDAAO,CAAC,MAAR,CAAe,IAFE;AAGzB,UAAM,EAAE,8DAAY,CAAC,gBAAb,CAA8B,kBAA9B,EAAkD,WAAlD;AAHiB,GAA3B;AAKD,CARD;;AAaA,aAAa,CAAC,YAAd,GAA6B;AAC3B,QAAM,EAAE;AADmB,CAA7B;AAIM,SAAU,aAAV,CAAwB,KAAxB,EAAiD;AAAA,0BAChC,iDAAiB,kEAAjB,CADgC;AAAA,MAC7C,QAD6C,qBAC7C,QAD6C;;AAAA,wBAGP,+CAAe,KAAf,CAHO;AAAA;AAAA,MAG7C,cAH6C;AAAA,MAG7B,iBAH6B;;AAAA,8BAI/B,uEAJ+B;AAAA;AAAA,MAI/C,GAJ+C;AAAA,MAI1C,MAJ0C;;AAMrD,kDAAgB,YAAK;AACnB,QAAI,OAAQ,MAAc,CAAC,oBAAvB,KAAgD,WAApD,EACE;;AAEF,QAAI,MAAJ,EAAY;AACV,uBAAiB,CAAC,IAAD,CAAjB;AACA;AACD;;AAED,QAAI,CAAC,MAAD,IAAW,cAAf,EAA+B;AAC7B,uBAAiB,CAAC,KAAD,CAAjB;AACA,iBAAW;AACZ;AACF,GAbD,EAaG,CAAC,MAAD,CAbH;;AAeA,WAAS,WAAT,GAAoB;eAAA,CAClB;;;AACA,QAAM,cAAc,eAAG,KAAH,MAAQ,IAAR,IAAQ,aAAR,GAAQ,MAAR,GAAQ,GAAE,SAAV,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,aAAvC;AAEA,QAAM,OAAO,GAAsB;AACjC,YAAM,EAAE,KAAK,CAAC,MADmB;AAEjC,YAAM,EAAE,KAAK,CAAC,MAAN,IAAgB,CAAC,cAFQ;AAGjC,eAAS,EAAG,KAAK,CAAC,SAAN,IAAmB,CAAC,cAArB,GAAuC,KAAK,CAAC,SAA7C,GAAyD;AAHnC,KAAnC;AAMA,YAAQ,CAAC;AAAE,UAAI,EAAE,OAAR;AAAiB,aAAO,EAAP;AAAjB,KAAD,CAAR;AACA,kBAAc,CAAC,OAAD,CAAd;AACD;;AAED,WAAS,YAAT,CAAsB,CAAtB,EAAyC;AACvC,KAAC,CAAC,cAAF;AAEA,QAAM,OAAO,GAAsB;AACjC,YAAM,EAAE,KAAK,CAAC,MADmB;AAEjC,YAAM,EAAE,KAFyB;AAGjC,eAAS,EAAE;AAHsB,KAAnC;AAMA,YAAQ,CAAC;AAAE,UAAI,EAAE,OAAR;AAAiB,aAAO,EAAP;AAAjB,KAAD,CAAR;AACA,kBAAc,CAAC,OAAD,CAAd;AACD;;AAED,WAAS,YAAT,CAAsB,CAAtB,EAAyC;AACvC,KAAC,CAAC,cAAF;AAEA,eAAW;AACZ;;AAED,SACE;AAAK,OAAG,EAAE,GAAV;AAAe,aAAS,EAAC;AAAzB,KACE,oDAAC,2DAAD,EAAU;AAAC,aAAS,EAAC,gDAAX;AAA4D,WAAO,EAAE;AAArE,GAAV,EACE,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CADF,CADF,EAKE,oDAAC,2DAAD,EAAU;AAAC,aAAS,EAAC,WAAX;AAAuB,WAAO,EAAE;AAAhC,GAAV,EACE,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CADF,CALF,CADF;AAWD,C;;;;;;;;;;;;;;;;;;;;;;;ACjGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AAMM,SAAU,YAAV,CAAuB,KAAvB,EAA+C;AACnD,MAAM,eAAe,GAAG,8DAAY,CAAC,kBAAb,CAAgC,KAAK,CAAC,MAAN,CAAa,IAA7C,CAAxB;;AADmD,0BAGjC,iDAAiB,kEAAjB,CAHiC;AAAA,MAG3C,KAH2C,qBAG3C,KAH2C;;AAInD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAN,CAAa,IAAd,CAAzB;AAEA,SACE,oDAAC,wDAAD,EAAS,IAAT,EACE,oDAAC,wDAAQ,CAAC,MAAV,EAAgB;AACd,MAAE,EAAE,KAAK,CAAC,MAAN,CAAa,IADH;AAEd,aAAS,YAAK,0DAAM,CAAC,YAAZ,uBAAqC,WAAW,CAAC,MAAZ,GAAqB,UAArB,GAAkC,WAAvE;AAFK,GAAhB,EAIG,KAAK,CAAC,MAAN,CAAa,KAJhB,CADF,EAQE,oDAAC,wDAAQ,CAAC,IAAV,EAAc;AAAC,WAAO,EAAE,iBAAC,CAAD;AAAA,aAAyB,CAAC,CAAC,eAAF,EAAzB;AAAA;AAAV,GAAd,EACE;AAAK,aAAS,YAAK,0DAAM,CAAC,UAAZ;AAAd,KACE,oDAAC,eAAD,EAAgB;AAAC,UAAM,EAAE,KAAK,CAAC;AAAf,GAAhB,CADF,CADF,CARF,CADF;AAgBD,C;;;;;;;;;;;ACnCD;AACA,kBAAkB,+E;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAIM,SAAU,cAAV,CAAyB,KAAzB,EAAmD;AACvD,SACE,yGADF;AAGD,C;;;;;;;;;;;;ACRD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAA;AAAA;AAIM,SAAU,WAAV,CAAsB,KAAtB,EAA6C;AACjD,SACE,yGADF;AAGD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRD;AACA;AAGA;AACA;AAEA;AAMM,SAAU,WAAV,CAAsB,KAAtB,EAA6C;AAAA,0BAC/B,iDAAiB,kEAAjB,CAD+B;AAAA,MACzC,KADyC,qBACzC,KADyC;;AAGjD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAN,CAAa,IAAd,CAAzB;AAEA,MAAM,YAAY,GAAG,WAAW,CAAC,SAAZ,GACjB,WAAW,CAAC,SADK,GAEjB,KAAK,CAAC,MAAN,CAAa,OAAb,CAAqB,IAArB,CAA0B,WAAC;AAAA,WAAI,CAAC,WAAL;AAAA,GAA3B,CAFJ;;AALiD,wBASC,+CAAe,YAAf,CATD;AAAA;AAAA,MASzC,gBATyC;AAAA,MASvB,mBATuB;;AAWjD,MAAM,QAAQ,GAAG,SAAX,QAAW,CAAC,CAAD,EAAiD;AAChE,QAAM,MAAM,GAAG,KAAK,CAAC,MAAN,CAAa,OAAb,CAAqB,IAArB,CAA0B,WAAC,EAAG;AAC3C,aAAO,CAAC,CAAC,IAAF,KAAY,CAAC,CAAC,MAAF,CAA8B,IAAjD;AACD,KAFc,CAAf;AAIA,uBAAmB,CAAC,MAAD,CAAnB;AACD,GAND;;AAQA,SACE,0GACE;AAAI,aAAS,EAAC;AAAd,KAAyB,KAAK,CAAC,MAAN,CAAa,KAAtC,CADF,EAGE,oDAAC,oDAAD,EAAK;AAAC,aAAS,EAAC;AAAX,GAAL,EACG,KAAK,CAAC,MAAN,CAAa,OAAb,CAAqB,GAArB,CAAyB,gBAAM,EAAG;AACjC,QAAM,UAAU,GAAG,gBAAgB,IAAI,MAAM,CAAC,IAAP,KAAgB,gBAAgB,CAAC,IAAxE;AAEA,WACE,oDAAC,oDAAI,CAAC,KAAN,EAAW;AACT,SAAG,EAAE,MAAM,CAAC,IADH;AAET,YAAM,MAFG;AAGT,UAAI,EAAC,OAHI;AAIT,WAAK,EAAE,MAAM,CAAC,KAJL;AAKT,UAAI,EAAE,MAAM,CAAC,IALJ;AAMT,QAAE,EAAE,MAAM,CAAC,IANF;AAOT,WAAK,EAAE,MAAM,CAAC,IAPL;AAQT,cAAQ,EAAE,QARD;AAST,aAAO,EAAE,UATA;AAUT,eAAS,EAAE,yDAAM,CAAC;AAVT,KAAX,CADF;AAcD,GAjBA,CADH,CAHF,EAwBE,oDAAC,oEAAD,EAAc;AAAC,UAAM,EAAE,CAAC,CAAC,gBAAX;AAA6B,UAAM,EAAE,KAAK,CAAC,MAA3C;AAAmD,aAAS,EAAE;AAA9D,GAAd,CAxBF,CADF;AA4BD,C;;;;;;;;;;;AC5DD;AACA,kBAAkB,wC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDlB;AAGA;AACA;AACA;AAEM,SAAU,YAAV,CAAuB,KAAvB,EAAyC;AAAA,0BAC3B,iDAAiB,kEAAjB,CAD2B;AAAA,MACrC,KADqC,qBACrC,KADqC;;AAE7C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAN,CAAa,IAAd,CAAzB;;AAF6C,wBAIf,+CAAwB,WAAW,CAAC,MAApC,CAJe;AAAA;AAAA,MAIrC,MAJqC;AAAA,MAI7B,SAJ6B;;AAM7C,SACE,0GACE;AAAI,aAAS,EAAC;AAAd,KAAyB,KAAK,CAAC,MAAN,CAAa,KAAtC,CADF,EAEE;AAAG,aAAS,EAAC;AAAb,KAA4C,KAAK,CAAC,MAAN,CAAa,WAAzD,CAFF,EAIE,oDAAC,2DAAD,EAAU;AACR,WAAO,EAAE;AAAA,aAAM,SAAS,CAAC,CAAC,MAAF,CAAf;AAAA,KADD;AAER,aAAS,6EAAsE,MAAM,GAAG,IAAH,GAAU,EAAtF;AAFD,GAAV,EAIE;AAAM,aAAS,EAAC;AAAhB,IAJF,CAJF,EAWE,oDAAC,oEAAD,EAAc;AAAC,UAAM,EAAE,MAAT;AAAiB,UAAM,EAAE,KAAK,CAAC;AAA/B,GAAd,CAXF,CADF;AAeD,C;;;;;;;;;;;;AC5BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAMM,SAAU,WAAV,CAAsB,KAAtB,EAA6C;AAAA,0BAC5B,iDAAiB,kEAAjB,CAD4B;AAAA,MACzC,QADyC,qBACzC,QADyC;;AAGjD,MAAM,YAAY,GAAG,SAAf,YAAe,GAAK;AACxB,0DAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,iBAAW,EAAE,4DAAW,CAAC,MADA;AAEzB,YAAM,EAAE,wDAAO,CAAC,MAAR,CAAe,IAFE;AAGzB,YAAM,EAAE;AAAE,aAAK,EAAE,KAAK,CAAC;AAAf;AAHiB,KAA3B;AAMA,QAAM,YAAY,GAAG,8DAAY,CAAC,2BAAb,EAArB;AACA,YAAQ,CAAC;AACP,UAAI,EAAE,YADC;AAEP,aAAO,EAAE;AAFF,KAAD,CAAR;AAID,GAZD;;AAcA,SACE,oDAAC,2DAAD,EAAU;AACR,WAAO,EAAE,YADD;AAER,aAAS,EAAC;AAFF,GAAV,EAIE,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAC,oBAAX;AAAgC,UAAM,EAAC;AAAvC,GAAL,CAJF,CADF;AAQD,C;;;;;;;;;;;;;;;;;;;;;;;ACxCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEM,SAAU,oBAAV,GAA8B;AAClC,SACE;AAAK,aAAS,EAAC;AAAf,KACE;AAAK,aAAS,sBACV,2DAAM,CAAC,oBADG;AAAd,IADF,EAYE;AAAK,aAAS,EAAC;AAAf,KACE;AAAK,aAAS,YAAK,2DAAM,CAAC,aAAZ;AAAd,IADF,EAEE;AAAK,aAAS,YAAK,2DAAM,CAAC,aAAZ;AAAd,IAFF,EAGE;AAAK,aAAS,YAAK,2DAAM,CAAC,aAAZ;AAAd,IAHF,EAIE;AAAK,aAAS,YAAK,2DAAM,CAAC,aAAZ;AAAd,IAJF,EAKE;AAAK,aAAS,YAAK,2DAAM,CAAC,aAAZ;AAAd,IALF,EAME;AAAK,aAAS,YAAK,2DAAM,CAAC,aAAZ;AAAd,IANF,CAZF,CADF;AAuBD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BD;AAGA;AAEA;AACA;AACA;AAMM,SAAU,aAAV,OAA2D;AAAA,MAAjC,WAAiC,QAAjC,WAAiC;AAC/D,MAAM,WAAW,GAAG,8DAAY,CAAC,cAAb,EAApB;AACA,MAAM,WAAW,GAAG,8DAAY,CAAC,cAAb,EAApB;AAEA,MAAM,YAAY,GAAG,8CAAc,YAAK;AACtC,WAAO,8DAAY,CAAC,2BAAb,CAAyC,WAAzC,EAAsD,WAAtD,EAAmE,WAAnE,CAAP;AACD,GAFoB,EAElB,CAAC,WAAW,CAAC,QAAZ,EAAD,CAFkB,CAArB;;AAJ+D,0BAQnC,iDAAiB,kEAAjB,EAAgC,YAAhC,CARmC;AAAA;AAAA,MAQvD,KARuD;AAAA,MAQhD,QARgD;;AAU/D,SACE,oDAAC,kEAAa,CAAC,QAAf,EAAuB;AAAC,SAAK,EAAE;AAAE,WAAK,EAAL,KAAF;AAAS,cAAQ,EAAR;AAAT;AAAR,GAAvB,EACE,oDAAC,0EAAwB,CAAC,QAA1B,EAAkC;AAAC,SAAK,EAAC;AAAP,GAAlC,EACE;AAAS,aAAS,EAAC;AAAnB,KACE;AAAI,aAAS,EAAC;AAAd,KAAmF,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CAAnF,CADF,EAGE;AAAK,aAAS,EAAC;AAAf,KACG,WAAW,CAAC,GAAZ,CAAgB,WAAC;AAAA,WAAI,oDAAC,mEAAD,EAAa;AAAC,SAAG,EAAE,CAAC,CAAC,IAAR;AAAc,YAAM,EAAE;AAAtB,KAAb,CAAJ;AAAA,GAAjB,CADH,EAGE,oDAAC,mEAAD,EAAa;AAAC,OAAG,EAAE,WAAW,CAAC,IAAlB;AAAwB,UAAM,EAAE;AAAhC,GAAb,CAHF,EAKG,8DAAY,CAAC,gBAAb,CAA8B,WAA9B,KACC,oDAAC,kEAAD,EAAY;AAAC,qBAAiB,EAAE,WAAW,CAAC;AAAhC,GAAZ,CANJ,CAHF,CADF,CADF,CADF;AAmBD,C;;;;;;;;;;;;;;;;;;;;;;AC1CD;AACA,kBAAkB,qG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDlB;AACA;AAEA;AAEO,IAAM,kBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,wBACqB;AACjB;;;AAGA,aAAO;AACL,qBAAa,EAAE;AACb,qBAAW,EAAE,4DAAW,CAAC,MADZ;AAEb,gBAAM,EAAE,wDAAO,CAAC,MAAR,CAAe;AAFV,SADV;AAML,cAAM,EAAE;AACN,qBAAW,EAAE,4DAAW,CAAC,OADnB;AAEN,gBAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFlB,SANH;AAWL,oBAAY,EAAE;AACZ,qBAAW,EAAE,4DAAW,CAAC,OADb;AAEZ,gBAAM,EAAE,WAFI,CAEQ;;AAFR,SAXT;AAgBL,iBAAS,EAAE;AACT,qBAAW,EAAE,4DAAW,CAAC,MADhB;AAET,gBAAM,EAAE,wDAAO,CAAC,MAAR,CAAe;AAFd,SAhBN;AAqBL,aAAK,EAAE;AACL,qBAAW,EAAE,4DAAW,CAAC,OADpB;AAEL,gBAAM,EAAE,4DAAgB,CAAC,eAAjB,CAAiC;AAFpC;AArBF,OAAP;AA0BD;AA/BH;;AAAA;AAAA,EAAwC,wEAAxC,E;;;;;;;;;;;;ACHA;AAAA;AAAA,IAAM,SAAS,GAAG;AAChB,QAAM,EAAE,gBAAC,KAAD;AAAA,sCAAuC,KAAvC;AAAA,GADQ,CACuC;;AADvC,CAAlB;AAIO,IAAM,cAAc,GAAG;AAC5B,QAD4B,kBACrB,KADqB,EACR;AAClB,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,MAAV,CAAiB,KAAjB,CADA;AAEL,SAAG,mBAAY,KAAZ,CAFE;AAGL,eAAS,EAAE,KAHN;AAIL,gBAAU,EAAE,oBAAC,QAAD,EAAkB;AAC5B,YAAM,IAAI,GAAG,IAAI,CAAC,KAAL,CAAW,QAAX,CAAb,CAD4B,CACO;;AAEnC,eAAO;AACL,kBAAQ,EAAE,IAAI,CAAC,QAAL,IAAiB,EADtB;AAEL,gBAAM,EAAE,IAAI,CAAC,MAAL,IAAe,EAFlB;AAGL,mBAAS,EAAE,IAAI,CAAC,SAAL,IAAkB,EAHxB;AAIL,gBAAM,EAAE,IAAI,CAAC,MAAL,IAAe;AAJlB,SAAP;AAMD;AAbI,KAAP;AAeD;AAjB2B,CAAvB,C;;;;;;;;;;;;ACNP;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;ACAA;AA4BO,IAAM,aAAa,GAAG,2DAAa,CAAoB,IAApB,CAAnC;AAEP;;;;AAGM,SAAU,aAAV,CACJ,KADI,EAEJ,MAFI,EAEuD;AAE3D,UAAQ,MAAM,CAAC,IAAf;AACA,SAAK,OAAL;AACE,6CACK,KADL,uBAEG,MAAM,CAAC,OAAP,CAAe,MAAf,CAAsB,IAFzB,EAEgC;AAC5B,cAAM,EAAE,MAAM,CAAC,OAAP,CAAe,MADK;AAE5B,iBAAS,EAAE,MAAM,CAAC,OAAP,CAAe;AAFE,OAFhC;;AAQF,SAAK,OAAL;AACE,6CACK,KADL,uBAEG,MAAM,CAAC,OAAP,CAAe,MAAf,CAAsB,IAFzB,EAEgC;AAC5B,cAAM,EAAE,MAAM,CAAC,OAAP,CAAe,MADK;AAE5B,iBAAS,EAAE,MAAM,CAAC,OAAP,CAAe;AAFE,OAFhC;;AAQF,SAAK,YAAL;AACE,6CACK,KADL,GAEK,MAAM,CAAC,OAFZ;;AAKF;AACE,aAAO,KAAP;AA1BF;AA4BD,C;;;;;;;;;;;;ACjED;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAIA;AAEA,IAAM,SAAS,GAAG,iEAAe,CAAC,gBAAhB,CAAiC,cAAjC,CAAlB;AAEO,IAAM,YAAY,GAAG;AAC1B,gBAD0B,4BACZ;AACZ,WAAO,CACL;AACE,UAAI,EAAE,YADR;AAEE,WAAK,EAAE,SAAS,CAAC,YAAD,CAFlB;AAGE,UAAI,EAAE,UAHR;AAIE,aAAO,EAAE,EAJX,CAIc;;AAJd,KADK,EAOL;AACE,UAAI,EAAE,MADR;AAEE,WAAK,EAAE,SAAS,CAAC,OAAD,CAFlB;AAGE,UAAI,EAAE,OAHR;AAIE,aAAO,EAAE,YAAY,CAAC,cAAb;AAJX,KAPK,EAaL;AACE,UAAI,EAAE,SADR;AAEE,WAAK,EAAE,SAAS,CAAC,SAAD,CAFlB;AAGE,UAAI,EAAE,QAHR,CAGiB;;AAHjB,KAbK,EAkBL;AACE,UAAI,EAAE,cADR;AAEE,WAAK,EAAE,SAAS,CAAC,cAAD,CAFlB;AAGE,UAAI,EAAE,QAHR;AAIE,iBAAW,EAAE,SAAS,CAAC,yBAAD;AAJxB,KAlBK,EAwBL;AACE,UAAI,EAAE,OADR;AAEE,WAAK,EAAE,SAAS,CAAC,OAAD,CAFlB;AAGE,UAAI,EAAE,QAHR;AAIE,iBAAW,EAAE,SAAS,CAAC,kBAAD;AAJxB,KAxBK,CAAP;AA+BD,GAjCyB;AAmC1B,gBAnC0B,4BAmCZ;AACZ,WAAO;AACL,UAAI,EAAE,aADD;AAEL,WAAK,EAAE,SAAS,CAAC,aAAD,CAFX;AAGL,UAAI,EAAE,cAHD;AAIL,aAAO,EAAE;AAJJ,KAAP;AAMD,GA1CyB;AA4C1B,oBA5C0B,8BA4CP,IA5CO,EA4CS;AACjC,YAAQ,IAAR;AACA,WAAK,QAAL;AACE,eAAO,UAAC,KAAD;AAAA,iBAAgB,oDAAC,gFAAD,EAAa;AAAC,eAAG,EAAE,KAAK,CAAC;AAAZ,aAAsB,KAAtB,CAAb,CAAhB;AAAA,SAAP;;AACF,WAAK,UAAL;AACE,eAAO,UAAC,KAAD;AAAA,iBAAgB,oDAAC,kFAAD,EAAe;AAAC,eAAG,EAAE,KAAK,CAAC;AAAZ,aAAsB,KAAtB,CAAf,CAAhB;AAAA,SAAP;;AACF,WAAK,OAAL;AACE,eAAO,UAAC,KAAD;AAAA,iBAAgB,oDAAC,+EAAD,EAAY;AAAC,eAAG,EAAE,KAAK,CAAC;AAAZ,aAAsB,KAAtB,CAAZ,CAAhB;AAAA,SAAP;;AACF,WAAK,QAAL;AACE,eAAO,UAAC,KAAD;AAAA,iBAAgB,oDAAC,gFAAD,EAAa;AAAC,eAAG,EAAE,KAAK,CAAC;AAAZ,aAAsB,KAAtB,CAAb,CAAhB;AAAA,SAAP;;AACF,WAAK,cAAL;AACE,eAAO,UAAC,KAAD;AAAA,iBAAgB,oDAAC,+EAAD,EAAqB;AAAC,eAAG,EAAE,KAAK,CAAC;AAAZ,aAAsB,KAAtB,CAArB,CAAhB;AAAA,SAAP;AAVF;AAYD,GAzDyB;AA2D1B,6BA3D0B,yCA8DO;AAAA,QAF/B,WAE+B,uEAFL,EAEK;AAAA,QAD/B,WAC+B,uEADD,IACC;AAAA,QAA/B,WAA+B,uEAAJ,IAAI;AAE/B,WAAO;AACL,gBAAU,EAAE;AACV,cAAM,EAAE,CAAC,CAAC,WAAW,CAAC,UADZ;AAEV,iBAAS,EAAE,WAAW,CAAC,UAAZ,IAA0B;AAF3B,OADP;AAKL,UAAI,EAAE;AACJ,cAAM,EAAE,CAAC,CAAC,WAAW,CAAC,IADlB;AAEJ,iBAAS,EAAE,WAAW,CAAC,IAAZ,GACP,WAAW,CACR,IADH,CACQ,WAAC;AAAA,iBAAI,CAAC,CAAC,IAAF,KAAW,MAAf;AAAA,SADT,EAEG,OAFH,CAEW,IAFX,CAEgB,WAAC;AAAA,iBAAI,CAAC,CAAC,IAAF,KAAW,WAAW,CAAC,IAA3B;AAAA,SAFjB,CADO,GAIP;AANA,OALD;AAaL,aAAO,EAAE;AACP,cAAM,EAAE,CAAC,CAAC,WAAW,CAAC,OADf;AAEP,iBAAS,EAAE,WAAW,CAAC,OAAZ,IAAuB;AAF3B,OAbJ;AAiBL,kBAAY,EAAE;AACZ,cAAM,EAAE,WAAW,CAAC;AADR,OAjBT;AAoBL,WAAK,EAAE;AACL,cAAM,EAAE,WAAW,CAAC;AADf,OApBF;AAuBL,iBAAW,EAAE;AACX,cAAM,EAAE,KADG,CACG;;AADH;AAvBR,KAAP;AA2BD,GA3FyB;AA6F1B,kBA7F0B,4BA6FT,WA7FS,EA6FgB,KA7FhB,EA6FwC;AAAA,wBAClC,KAAK,CAAC,MAD4B;AAAA,QAClD,KADkD,iBACxD,IADwD;AAAA,QAC3C,IAD2C,iBAC3C,IAD2C;AAGhE,QAAM,aAAa,qBAAQ,WAAR,CAAnB;;AAEA,YAAQ,IAAR;AACA,WAAK,QAAL;AACE,qBAAa,CAAC,KAAD,CAAb,GAAuB,KAAK,CAAC,MAAN,GAAe,MAAf,GAAwB,EAA/C;AACA;;AAEF,WAAK,OAAL;AACE,qBAAa,CAAC,KAAD,CAAb,GAAuB,YAAY,CAAC,kBAAb,CAAgC,KAAK,CAAC,SAAtC,CAAvB;AACA;AAPF;;AAUA,QAAI,CAAC,aAAa,CAAC,KAAD,CAAlB,EAA2B;AACzB,aAAO,aAAa,CAAC,KAAD,CAApB;AAEF,WAAO,aAAP;AACD,GAhHyB;AAkH1B,kBAlH0B,4BAkHT,WAlHS,EAkHc;AACtC,WAAO,MAAM,CAAC,IAAP,CAAY,WAAZ,EAAyB,MAAzB,GAAkC,CAAzC;AACD,GApHyB;AAsH1B,gBAtH0B,4BAsHZ;AACZ,WAAO,CACL;AACE,UAAI,EAAE,UADR;AAEE,WAAK,EAAE,SAAS,CAAC,UAAD,CAFlB;AAGE,iBAAS;AAHX,KADK,EAML;AACE,UAAI,EAAE,QADR;AAEE,WAAK,EAAE,SAAS,CAAC,QAAD;AAFlB,KANK,EAUL;AACE,UAAI,EAAE,WADR;AAEE,WAAK,EAAE,SAAS,CAAC,WAAD;AAFlB,KAVK,EAcL;AACE,UAAI,EAAE,QADR;AAEE,WAAK,EAAE,SAAS,CAAC,QAAD;AAFlB,KAdK,EAkBL;AACE,UAAI,EAAE,QADR;AAEE,WAAK,EAAE,SAAS,CAAC,QAAD;AAFlB,KAlBK,CAAP;AAuBD,GA9IyB;AAgJ1B,oBAhJ0B,8BAgJP,SAhJO,EAgJgB;AACxC,QAAI,CAAC,SAAD,IAAc,SAAS,WAA3B,EACE,OAAO,EAAP;AAEF,WAAO,SAAS,CAAC,IAAjB;AACD;AArJyB,CAArB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVP;AAGA;AACA;AACA;AAEA;AAGA,IAAM,UAAU,GAAG;AACjB,aAAW,EAAE;AACX,YAAQ,EAAE,EADC;AAEX,aAAS,EAAE,CAFA;AAGX,UAAM,EAAE;AAHG,GADI;AAOjB,cAAY,EAAE;AACZ,UAAM,EAAE,CADI;AAEZ,aAAS,EAAE,EAFC;AAGZ,UAAM,EAAE;AAHI;AAPG,CAAnB;AAcO,IAAM,YAAY,GAAG;AAC1B;;;AAGA,mBAJ0B,6BAIR,OAJQ,EAIc;AAAA,QAC9B,WAD8B,GACd,UADc,CAC9B,WAD8B;AAGtC,QAAM,QAAQ,GAAG,6DAAW,CAAC,QAAZ,CAAqB,OAAO,CAAC,QAA7B,EAAuC,WAAW,CAAC,QAAnD,CAAjB;AACA,QAAM,UAAU,GAAG,6DAAW,CAAC,KAAZ,CAAkB,OAAO,CAAC,MAA1B,CAAnB;AACA,QAAM,SAAS,GAAG,6DAAW,CAAC,QAAZ,CAAqB,OAAO,CAAC,SAA7B,EAAwC,WAAW,CAAC,SAApD,CAAlB;AACA,QAAM,MAAM,GAAG,6DAAW,CAAC,QAAZ,CAAqB,OAAO,CAAC,MAA7B,EAAqC,WAAW,CAAC,MAAjD,CAAf;AAEA,WAAO;AACL,cAAQ,EAAR,QADK;AAEL,gBAAU,EAAV,UAFK;AAGL,eAAS,EAAT,SAHK;AAIL,YAAM,EAAN,MAJK;AAKL,kBAAY,EAAE;AACZ,cAAM,EAAE,6DAAW,CAAC,OAAZ,CAAoB,OAAO,CAAC,MAA5B,EAAoC,OAAO,CAAC,MAAR,CAAe,MAAf,GAAwB,CAA5D,CADI;AAEZ,iBAAS,EAAE,6DAAW,CAAC,OAAZ,CAAoB,OAAO,CAAC,SAA5B,EAAuC,OAAO,CAAC,SAAR,CAAkB,MAAlB,GAA2B,WAAW,CAAC,SAA9E,CAFC;AAGZ,cAAM,EAAE,6DAAW,CAAC,OAAZ,CAAoB,OAAO,CAAC,MAA5B,EAAoC,OAAO,CAAC,MAAR,CAAe,MAAf,GAAwB,WAAW,CAAC,MAAxE;AAHI;AALT,KAAP;AAWD,GAvByB;AAyB1B,uBAzB0B,iCAyBJ,OAzBI,EAyBuB;AAAA,QACvC,YADuC,GACtB,UADsB,CACvC,YADuC;AAG/C,QAAM,SAAS,GAAG,6DAAW,CAAC,KAAZ,CAAyB,OAAO,CAAC,MAAjC,EAAyC,YAAY,CAAC,MAAtD,CAAlB;AACA,QAAM,YAAY,GAAG,6DAAW,CAAC,KAAZ,CAA4B,OAAO,CAAC,SAApC,EAA+C,YAAY,CAAC,SAA5D,CAArB;AACA,QAAM,UAAU,GAAG,6DAAW,CAAC,KAAZ,CAA0B,OAAO,CAAC,MAAlC,EAA0C,YAAY,CAAC,MAAvD,CAAnB;AAEA,WAAO,YAAY,CAAC,oBAAb,CAAkC,SAAlC,EAA6C,YAA7C,EAA2D,UAA3D,CAAP;AACD,GAjCyB;AAmC1B;AACA,sBApC0B,gCAqCxB,SArCwB,EAsCxB,YAtCwB,EAuCxB,UAvCwB,EAuCF;AAEtB,QAAM,SAAS,GAA2B,EAA1C,CAFsB,CAItB;;AACA,QAAM,WAAW,sBAAO,SAAP,CAAjB;;AACA,QAAM,cAAc,sBAAO,YAAP,CAApB;;AACA,QAAM,WAAW,sBAAO,UAAP,CAAjB,CAPsB,CAStB;;;AACA,QAAM,UAAU,GAAG,SAAS,CAAC,MAA7B;;AACA,SAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,UAA5B,EAAwC,KAAK,EAA7C,EAAiD;AAC/C,UAAM,YAAY,GAAG,WAAW,CAAC,KAAZ,EAArB,CAD+C,CAG/C;;AACA,UAAM,mBAAmB,GAAG,YAAY,CAAC,sBAAb,CAAoC,cAApC,EAAoD,WAApD,EAAiE,KAAjE,CAA5B;AAEA,kBAAY,IAAI,SAAS,CAAC,IAAV,CAAe;AAAE,YAAI,EAAE,OAAR;AAAiB,YAAI,EAAE;AAAvB,OAAf,CAAhB;AACA,yBAAmB,IAAI,SAAS,CAAC,IAAV,CAAe,mBAAf,CAAvB;AACD,KAnBqB,CAqBtB;;;AACA,QAAI,cAAc,CAAC,MAAnB,EAA2B;AACzB,oBAAc,CAAC,OAAf,CAAuB,cAAI;AAAA,eAAI,SAAS,CAAC,IAAV,CAAe;AAAE,cAAI,EAAE,UAAR;AAAoB,cAAI,EAAJ;AAApB,SAAf,CAAJ;AAAA,OAA3B;AACD;;AAED,QAAI,WAAW,CAAC,MAAhB,EAAwB;AACtB,iBAAW,CAAC,OAAZ,CAAoB,cAAI;AAAA,eAAI,SAAS,CAAC,IAAV,CAAe;AAAE,cAAI,EAAE,QAAR;AAAkB,cAAI,EAAJ;AAAlB,SAAf,CAAJ;AAAA,OAAxB;AACD,KA5BqB,CA8BtB;;;AACA,WAAO,SAAS,CAAC,MAAV,CAAiB,aAAG;AAAA,aAAI,GAAG,CAAC,IAAJ,IAAY,CAAC,CAAC,GAAG,CAAC,IAAJ,CAAS,MAA3B;AAAA,KAApB,CAAP;AACD,GAvEyB;;AAyE1B;;;AAGA,wBA5E0B,kCA4EH,SA5EG,EA4EsB,MA5EtB,EA4E0C,aA5E1C,EA4E+D;AACvF,QAAM,KAAK,GAAG,aAAa,GAAG,CAAhB,KAAsB,CAApC,CADuF,CAChD;;AAEvC,QAAK,KAAK,IAAI,MAAM,CAAC,MAAjB,IAA4B,CAAC,SAAS,CAAC,MAA3C,EACE,OAAO;AAAE,UAAI,EAAE,QAAR;AAAkB,UAAI,EAAE,MAAM,CAAC,KAAP;AAAxB,KAAP;AAEF,QAAK,CAAC,KAAD,IAAU,SAAS,CAAC,MAArB,IAAgC,CAAC,MAAM,CAAC,MAA5C,EACE,OAAO;AAAE,UAAI,EAAE,UAAR;AAAoB,UAAI,EAAE,SAAS,CAAC,KAAV;AAA1B,KAAP,CAPqF,CASvF;;AACA,WAAO,IAAP;AACD,GAvFyB;AAyF1B,uBAzF0B,iCAyFJ,GAzFI,EAyFuB,SAzFvB,EAyFwD;AAChF,YAAQ,GAAG,CAAC,IAAZ;AACA,WAAK,OAAL;AACE,eACE;AAAK,mBAAS,EAAC;AAAf,WACE,oDAAC,2DAAD,EAAU;AACR,gBAAM,EAAE,GAAG,CAAC,IADJ;AAER,yBAAe,EAAE,YAAY,CAAC,eAFtB;AAGR,0BAAgB,EAAE,YAAY,CAAC;AAHvB,SAAV,CADF,CADF;;AAUF,WAAK,UAAL;AACE,eACE;AAAK,mBAAS,EAAC;AAAf,WACE,oDAAC,gEAAD,EAAY;AACV,cAAI,EAAE,iEAAe,CAAC,SAAhB,CAA0B,sBAA1B,EAAkD,kBAAlD,CADI;AAEV,oBAAU,EAAE,GAAG,CAAC,IAFN;AAGV,sBAAY,EAAE,YAAY,CAAC,kBAAb,EAHJ;AAIV,wBAAc,EAAE,wBAAC,UAAD;AAAA,mBACd,oDAAC,uEAAD,EAAmB,kBACb,UADa,EACH;AACd,mCAAqB,EAAE;AADT,aADG,CAAnB,CADc;AAAA,WAJN;AAUV,kBAAQ,EAAE,mEAAc,CAAC;AAVf,SAAZ,CADF,CADF;;AAiBF,WAAK,QAAL;AACE,eACE;AAAK,mBAAS,EAAC;AAAf,WACE,oDAAC,gEAAD,EAAY;AACV,cAAI,EAAE,iEAAe,CAAC,SAAhB,CAA0B,sBAA1B,EAAkD,eAAlD,CADI;AAEV,oBAAU,EAAE,GAAG,CAAC,IAFN;AAGV,sBAAY,EAAE,YAAY,CAAC,gBAAb,EAHJ;AAIV,wBAAc,EAAE,wBAAC,UAAD;AAAA,mBACd,oDAAC,qEAAD,EAAiB,kBACX,UADW,EACD;AACd,uBAAS,EAAE;AADG,aADC,CAAjB,CADc;AAAA,WAJN;AAUV,kBAAQ,EAAE,mEAAc,CAAC;AAVf,SAAZ,CADF,CADF;AA/BF;AAgDD,GA1IyB;AA4I1B,iBA5I0B,2BA4IV,KA5IU,EA4IE;AAC1B,WAAO;AACL,iBAAW,EAAE,4DAAW,CAAC,OADpB;AAEL,YAAM,EAAE,YAFH;AAGL,UAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAHD,KAAP;AAKD,GAlJyB;AAoJ1B,kBApJ0B,4BAoJT,MApJS,EAoJM;AAC9B,WAAO;AACL,iBAAW,EAAE,4DAAW,CAAC,OADpB;AAEL,YAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,MAFnB;AAGL,UAAI,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAR,CAAH,GAAiB;AAHxB,KAAP;AAKD,GA1JyB;AA4J1B,oBA5J0B,8BA4JP,QA5JO,EA4JY;AACpC,WAAO;AACL,iBAAW,EAAE,4DAAW,CAAC,SADpB;AAEL,YAAM,EAAE,wDAAO,CAAC,SAAR,CAAkB,QAFrB;AAGL,UAAI,EAAE,QAAQ,GAAG,CAAC,QAAQ,CAAC,EAAV,CAAH,GAAmB;AAH5B,KAAP;AAKD;AAlKyB,CAArB,C;;;;;;;;;;;;ACxBP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AAEM,SAAU,wBAAV,GAAkC;AACtC,SACE,0GACE;AAAK,aAAS,YAAK,2DAAM,CAAC,cAAZ;AAAd,IADF,EAGE,oDAAC,2EAAD,EAAqB,IAArB,CAHF,EAKE;AAAK,QAAI,EAAC,WAAV;AAAsB,aAAS,EAAC;AAAhC,IALF,EASE,oDAAC,qEAAD,EAAoB,IAApB,CATF,EAWE,oDAAC,sEAAD,EAAkB,IAAlB,CAXF,EAaE,oDAAC,kEAAD,EAAiB,IAAjB,CAbF,CADF;AAiBD,C;;;;;;;;;;;;AC3BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,sBAAlB;AAEA,IAAM,qBAAqB,GAAiB;AAC1C,aAAW,EAAE,4DAAW,CAAC,OADiB;AAE1C,QAAM,EAAE,4DAAgB,CAAC,eAAjB,CAAiC;AAFC,CAA5C;AASM,SAAU,iBAAV,OAAmE;AAAA,MAArC,WAAqC,QAArC,WAAqC;AACvE,MAAM,OAAO,GAAG,wDAAM,CAAC,aAAP,CAAoC,0EAAc,CAAC,MAAf,CAAsB,WAAW,CAAC,KAAlC,CAApC,CAAhB;AACA,MAAM,SAAS,GAAG,wDAAM,CAAC,aAAP,CAA6C,uEAAgB,CAAC,qBAAjB,EAA7C,CAAlB;AAEA,MAAI,CAAC,OAAO,CAAC,IAAT,IAAiB,CAAC,SAAS,CAAC,IAAhC,EACE,OAAO,oDAAC,mFAAD,EAAyB,IAAzB,CAAP;AAEF,MAAM,WAAW,GAAG,8DAAY,CAAC,iBAAb,CAA8B,kBAAM,OAAO,CAAC,IAAd,CAA9B,CAApB;AACA,MAAM,YAAY,GAAG,8DAAY,CAAC,qBAAb,CAAkC,kBAAM,WAAW,CAAC,YAAlB,CAAlC,CAArB;AAEA,SACE,oDAAC,0EAAwB,CAAC,QAA1B,EAAkC;AAAC,SAAK,EAAE;AAAR,GAAlC,EACE;AAAI,aAAS,EAAC;AAAd,KAAmB,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CAAnB,CADF,EAGE,oDAAC,oEAAD,EAAc;AAAC,eAAW,EAAE;AAAd,GAAd,CAHF,EAKE,+DALF,EAOE,qEACE,oDAAC,qEAAmB,CAAC,QAArB,EAA6B;AAAC,SAAK,EAAE;AAAE,sBAAgB,EAAE,kEAAqB;AAAzC;AAAR,GAA7B,EACG,CAAC,CAAC,WAAW,CAAC,QAAZ,CAAqB,MAAvB,IACC,oDAAC,kEAAD,EAAc;AACZ,cAAU,EAAE,WAAW,CAAC,QADZ;AAEZ,gBAAY,EAAE,qBAFF;AAGZ,kBAAc,EAAE,sEAHJ;AAIZ,oBAAgB,EAAC;AAJL,GAAd,CAFJ,EAUG,CAAC,CAAC,WAAW,CAAC,UAAd,IACC;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,2DAAD,EAAU;AACR,SAAK,EAAE,WAAW,CAAC,UADX;AAER,mBAAe,EAAE,8DAAY,CAAC,eAFtB;AAGR,oBAAgB,EAAE,8DAAY,CAAC;AAHvB,GAAV,CADF,CAXJ,EAoBG,CAAC,CAAC,WAAW,CAAC,SAAZ,CAAsB,MAAxB,IACC,8DAAY,CAAC,qBAAb,CAAmC;AACjC,QAAI,EAAE,UAD2B;AAEjC,QAAI,EAAE,WAAW,CAAC;AAFe,GAAnC,EAGG,SAAS,CAAC,IAHb,CArBJ,EA2BG,CAAC,CAAC,WAAW,CAAC,MAAZ,CAAmB,MAArB,IACC,8DAAY,CAAC,qBAAb,CAAmC;AACjC,QAAI,EAAE,QAD2B;AAEjC,QAAI,EAAE,WAAW,CAAC;AAFe,GAAnC,EAGG,SAAS,CAAC,IAHb,CA5BJ,EAkCG,YAAY,CAAC,GAAb,CAAiB,UAAC,SAAD,EAAY,CAAZ;AAAA,WAChB,oDAAC,8CAAD,EAAe;AAAC,SAAG,EAAE;AAAN,KAAf,EACG,8DAAY,CAAC,qBAAb,CAAmC,SAAnC,EAA8C,SAAS,CAAC,IAAxD,CADH,CADgB;AAAA,GAAjB,CAlCH,CADF,CAPF,CADF;AAoDD,C;;;;;;;;;;;;;;;;;;;;;;AC1FD;AACA,kBAAkB,8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDlB;AAGA;AACA;AACA;AACA;AAEA;;IAGM,gB;;;;;;;;;;;;;wBACkB;AACpB,aAAO,4DAAW,CAAC,OAAnB;AACD;;;wBAEsB;AACrB,aAAO;AACL,8CAA0C,aADrC;AAEL,iDAA0C,UAFrC;AAGL,2BAA0C,gBAHrC;AAIL,sBAA0C;AAJrC,OAAP;AAMD;;;;EAZ4B,sDAAI,CAAC,S;;AAe7B,IAAM,kBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,mCAgCwB,gBAhCxB,EAgCgD;AAC5C,WAAK,MAAL,CAAY,aAAZ,CAA0B,+DAAa,CAAC,OAAxC,EACE,oDAAC,uEAAD,EAAmB;AACjB,WAAG,EAAE,gBADY;AAEjB,UAAE,EAAE,gBAFa;AAGjB,mBAAW,EAAE,KAAK;AAHD,OAAnB,CADF;AAMD;AAvCH;AAAA;AAAA,6BAyCkB,EAzClB,EAyC8B,UAzC9B,EAyCgD;AAC5C,UAAM,eAAe,GAAG,SAAlB,eAAkB,CAAC,KAAD;AAAA,eAAmB;AACzC,qBAAW,EAAE,4DAAW,CAAC,OADgB;AAEzC,gBAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,UAFiB;AAGzC,cAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAHmC,SAAnB;AAAA,OAAxB;;AAMA,UAAM,gBAAgB,GAAG,SAAnB,gBAAmB,CAAC,MAAD;AAAA,eAAqB;AAC5C,qBAAW,EAAE,4DAAW,CAAC,OADmB;AAE5C,gBAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,MAFoB;AAG5C,cAAI,EAAE,CAAC,MAAM,CAAC,EAAR;AAHsC,SAArB;AAAA,OAAzB;;AAMA,WAAK,MAAL,CAAY,aAAZ,CAA0B,+DAAa,CAAC,OAAxC,EACE,oDAAC,iEAAD,EAAa;AACX,kBAAU,EAAE,UADD;AAEX,mBAAW,EAAE,4DAAW,CAAC,SAFd;AAGX,uBAAe,EAAE,eAHN;AAIX,wBAAgB,EAAE,gBAJP;AAKX,iBAAS;AALE,OAAb,CADF;AASD;AA/DH;AAAA;AAAA,sCAiEsD;AAAA,2BAA/B,IAA+B;AAAA,UAA/B,IAA+B,0BAAxB,UAAwB;AAClD,WAAK,MAAL,CAAY,aAAZ,CAA0B,+DAAa,CAAC,OAAxC,EACE,oDAAC,oEAAD,EAAgB;AACd,mBAAW,EAAE,4DAAW,CAAC,OADX;AAEd,YAAI,EAAE;AAFQ,OAAhB,CADF;AAMD;AAxEH;AAAA;AAAA,kCA0EgD;AAAA,UAAxB,OAAwB,uEAAF,EAAE;AAAU;AA1E1D;AAAA;AAAA,wBAGiB;AACb,aAAO,qBAAP;AACD;AALH;AAAA;AAAA,wBAWwB;AACpB,aAAO,4DAAW,CAAC,OAAnB;AACD;AAbH;AAAA;AAAA,wBAe6B;AACzB,aAAO;AACL,YAAI,EAAE,wDAAO,CAAC,cADT;AAEL,eAAO,EAAE;AACP,iBAAO,EAAE,IADF;AAEP,qBAAW,EAAE,+DAAa,CAAC;AAFpB;AAFJ,OAAP;AAOD;AAvBH;AAAA;AAAA,wBAyBwB;AACpB,aAAO;AACL,iBAAS,EAAE,4DAAW,CAAC,SADlB;AAEL,eAAO,EAAE,4DAAW,CAAC;AAFhB,OAAP;AAID;AA9BH;AAAA;AAAA,wBAO0B;AACtB,aAAO,gBAAP;AACD;AATH;;AAAA;AAAA,EAAwC,kEAAxC,E;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2E;AAAuE;AAA2E;AAAqD;AAAsE;AAAoD;AAA0E;AAAkE;AAA4D;AAA0D;AAA8E;AAAsE;AAAkE;AAAoE;AAAwD;AAAwE;AAA4D;AAAwE;AAA0D;AAA8D;AAEpyC;AAEA;;;;AAGA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;;AAEA,SAAS,YAAT,CAAsB,KAAtB,EAA0C;AAAA,MAChC,IADgC,GACvB,KADuB,CAChC,IADgC;AAGxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAL,GAAe,IAAI,CAAC,SAAvC;AAEA,MAAM,eAAe,GAAG,gEAAc,CAAC,iBAAf,CAAiC,UAAU,GAAG,IAA9C,CAAxB;AAEA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAN,GAAiB,IAAlC;AACA,MAAM,KAAK,GAAI,IAAI,CAAC,SAAL,GAAiB,QAAlB,GAA8B,GAA5C;AACA,MAAM,MAAM,GAAI,UAAU,GAAG,QAAd,GAA0B,GAAzC;AAEA,MAAM,OAAO,GACX,oDAAC,uDAAD,EAAQ;AAAC,MAAE;AAAH,GAAR,EACG,eADH,CADF;AAMA,SACE;AAAK,aAAS,YAAK,kDAAM,CAAC,GAAZ;AAAd,KACE,oDAAC,8DAAD,EAAe;AAAC,WAAO,EAAE;AAAV,GAAf,EACE;AACE,aAAS,YAAK,kDAAM,CAAC,MAAZ,wBADX;AAEE,SAAK,EAAE;AAAE,WAAK,YAAK,MAAL,MAAP;AAAuB,gBAAU,YAAK,KAAL;AAAjC;AAFT,IADF,CADF,CADF;AAUD;;AAOK,SAAU,QAAV,CAAmB,KAAnB,EAAuC;AAAA,MACnC,IADmC,GAC1B,KAD0B,CACnC,IADmC;AAG3C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAL,GAAe,IAAI,CAAC,SAAvC;AAEA,SACE;AAAK,aAAS,EAAC;AAAf,KACE;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,8DAAD,EAAa;AACX,aAAS,EAAC,iCADC;AAEX,WAAO,EAAE,8DAAY,CAAC,IAFX;AAGX,QAAI,EAAE,kEAAgB,CAAC;AAHZ,GAAb,CADF,EAME;AAAM,aAAS,EAAE,kDAAM,CAAC;AAAxB,KACE;AAAK,aAAS,EAAC;AAAf,KACE;AAAI,aAAS,wCAAb;AAAuD,SAAK,EAAE,IAAI,CAAC;AAAnE,KACG,IAAI,CAAC,IADR,CADF,EAIE;AAAK,aAAS,EAAC;AAAf,KACA,oDAAC,uDAAD,EAAM;AAAC,QAAI,EAAG,2DAAS,CAAC,QAAlB;AAA6B,QAAI,EAAE,UAAU,GAAG;AAAhD,GAAN,CADA,CAJF,CADF,EASG,IAAI,CAAC,WAAL,IACC;AAAG,aAAS,YAAK,kDAAM,CAAC,kBAAZ,kBAAZ;AAA2D,SAAK,EAAE,IAAI,CAAC;AAAvE,KAAqF,IAAI,CAAC,WAA1F,CAVJ,EAWE,oDAAC,YAAD,EAAa,kBAAK,KAAL,CAAb,CAXF,CANF,EAmBE,oDAAC,8DAAD,EAAa;AACX,aAAS,EAAC,iCADC;AAEX,WAAO,EAAE,8DAAY,CAAC,IAFX;AAGX,QAAI,EAAE,kEAAgB,CAAC;AAHZ,GAAb,CAnBF,CADF,CADF;AA6BD,C;;;;;;;;;;;;AC1ED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,cAAlB;AAMM,SAAU,KAAV,CAAgB,KAAhB,EAAiC;;;AAAA,MAC7B,KAD6B,GACnB,KADmB,CAC7B,KAD6B;AAGrC,MAAM,QAAQ,qBAAG,KAAH,MAAQ,IAAR,IAAQ,aAAR,GAAQ,MAAR,GAAQ,GAAE,KAAV,MAAe,IAAf,IAAe,aAAf,GAAe,MAAf,GAAe,GAAE,IAAjB,MAAqB,IAArB,IAAqB,aAArB,GAAqB,MAArB,GAAqB,GAAE,MAArC;AAEA,SACE;AAAK,aAAS,EAAC;AAAf,KACE;AAAI,aAAS,EAAC;AAAd,KACA,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CADA,EAEE,oDAAC,4DAAD,EAAW;AAAC,aAAS,EAAC,wCAAX;AAAoD,WAAO,EAAE,8DAAY,CAAC;AAA1E,GAAX,EACE,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CADF,CAFF,CADF,EAOE;AAAK,aAAS,EAAC;AAAf,KACG,QAAQ,GACL,KAAK,CAAC,KAAN,CAAY,IAAZ,CAAiB,GAAjB,CAAqB,WAAC;AAAA,WAAI,oDAAC,kDAAD,EAAS;AAAC,cAAQ,EAAE,KAAK,CAAC,QAAjB;AAA2B,UAAI,EAAE,CAAjC;AAAoC,SAAG,EAAE,CAAC,CAAC;AAA3C,KAAT,CAAJ;AAAA,GAAtB,CADK,GAEL,iEACE,oDAAC,8DAAD,EAAa;AAAC,aAAS,EAAC,8BAAX;AAA0C,WAAO,EAAE,8DAAY,CAAC;AAAhE,GAAb,CADF,EAEE,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CAFF,CAHN,CAPF,CADF;AAmBD,C;;;;;;;;;;;;;;;;;;;;;;ACnCD;AACA,kBAAkB,wK;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAMA;;;;;AAIM,SAAU,SAAV,CAAoB,KAApB,EAAkE;AACtE,SACE;AACE,QAAI,EAAC,QADP;AAEE,YAAQ,EAAE,CAFZ;AAGE,aAAS,EAAE,KAAK,CAAC,SAAN,GAAkB,KAAK,CAAC,SAAxB,GAAoC,EAHjD;AAIE,aAAS,EAAE,mBAAC,CAAD;AAAA,aAA4B,CAAC,CAAC,GAAF,KAAU,OAAV,IAAqB,KAAK,CAAC,OAAN,CAAc,CAAd,CAAjD;AAAA,KAJb;AAKE,WAAO,EAAE,KAAK,CAAC;AALjB,KAOG,KAAK,CAAC,QAPT,CADF;AAWD,C;;;;;;;;;;;;ACtBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;;AAEA,SAAS,gBAAT,CAA0B,EAA1B,EAAoC;AAClC,SAAO;AACL,eAAW,EAAE,4DAAW,CAAC,OADpB;AAEL,UAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,MAFnB;AAGL,QAAI,EAAE,CAAC,EAAD;AAHD,GAAP;AAKD;;AAED,SAAS,eAAT,CAAyB,EAAzB,EAAmC;AACjC,SAAO;AACL,eAAW,EAAE,4DAAW,CAAC,OADpB;AAEL,UAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,UAFnB;AAGL,QAAI,EAAE,CAAC,EAAD;AAHD,GAAP;AAKD;;AAMD,SAAS,mBAAT,CAA6B,KAA7B,EAA4D;AAAA,MAClD,KADkD,GACxC,KADwC,CAClD,KADkD;AAG1D,SACE;AAAI,aAAS,EAAC;AAAd,KACG,CAAC,CAAC,KAAK,CAAC,MAAR,IAAkB,oDAAC,4DAAD,EAAW;AAAC,SAAK,EAAE,KAAR;AAAe,WAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAN,CAAa,EAAd;AAAxC,GAAX,CADrB,EAEE,oDAAC,yDAAD,EAAQ;AAAC,WAAO,EAAE,eAAe,CAAC,KAAK,CAAC,EAAP;AAAzB,GAAR,EACG,KAAK,CAAC,IADT,CAFF,CADF;AAQD;;AAEK,SAAU,cAAV,GAAwB;AAAA,0BAC8C,iDAAiB,6DAAjB,CAD9C;AAAA,MACpB,KADoB,qBACpB,KADoB;AAAA,MACb,YADa,qBACb,YADa;AAAA,MACC,gBADD,qBACC,gBADD;AAAA,MACmB,QADnB,qBACmB,QADnB;AAAA,MAC6B,YAD7B,qBAC6B,YAD7B;;AAG5B,MAAI,CAAC,KAAL,EACE,OAAO,yGAAP;AAEF,MAAI,KAAK,GAAG,EAAZ;AACA,MAAI,SAAS,GAAG,4DAAM,CAAC,KAAvB;;AAEA,MAAI,gBAAJ,EAAsB;AACpB,aAAS,GAAG,4DAAM,CAAC,MAAnB;AACA,SAAK,GAAG,gBAAR;AACD;AAED;;;;;AAGA,MAAI,CAAC,gBAAL,EACE,SAAS,IAAI,SAAb;AAEF,SACE;AAAK,SAAK,EAAE,KAAZ;AAAmB,aAAS,YAAK,SAAL;AAA5B,KACE,oDAAC,2DAAD,EAAU;AAAC,MAAE,EAAE,KAAK,CAAC,EAAX;AAAe,iBAAa,EAAE,YAA9B;AAA4C,aAAS,EAAE,wBAAvD;AAAiF,OAAG,EAAE,KAAK,CAAC;AAA5F,GAAV,CADF,EAEG,CAAC,gBAAD,IACC;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,mBAAD,EAAoB;AAAC,SAAK,EAAE;AAAR,GAApB,CADF,EAEE;AAAM,aAAS,YAAK,4DAAM,CAAC,OAAZ;AAAf,KACE;AAAM,aAAS,mCAAf;AAAoD,QAAI,EAAC,QAAzD;AAAkE,YAAQ,EAAE,CAA5E;AAA+E,WAAO,EAAE;AAAA,aAAM,QAAQ,CAAC,IAAD,CAAd;AAAA;AAAxF,KACE,oDAAC,8DAAD,EAAa;AAAC,WAAO,EAAE,8DAAY,CAAC;AAAvB,GAAb,CADF,CADF,EAIE,oDAAC,yDAAD,EAAQ;AAAC,WAAO,EAAE,eAAe,CAAC,KAAK,CAAC,EAAP;AAAzB,GAAR,EACG,CAAC,YAAD,IAAiB,oDAAC,8DAAD,EAAa;AAC7B,WAAO,EAAE,8DAAY,CAAC,SADO;AAE7B,aAAS,YAAK,4DAAM,CAAC,WAAZ;AAFoB,GAAb,CADpB,CAJF,CAFF,CAHJ,CADF;AAmBD,C;;;;;;;;;;;ACnFD;AACA,kBAAkB,gK;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,wBAAlB;AAaM,SAAU,eAAV,CAA0B,KAA1B,EAAqD;AACzD,MAAM,MAAM,GAAG,wDAAM,CAAC,aAAP,CAAqB,gEAAc,CAAC,MAApC,CAAf;AACA,MAAM,uBAAuB,GAAG,wDAAM,CAAC,aAAP,CAA8C;AAC5E,OAAG,EAAE,0CADuE;AAE5E,OAAG,EAAE;AAFuE,GAA9C,CAAhC;AAKA,MAAI,CAAC,MAAM,CAAC,IAAR,IAAgB,CAAC,uBAAuB,CAAC,IAA7C,EACE,OAAO,yGAAP;AAEF,MAAI,CAAC,KAAK,CAAC,KAAX,EACE,KAAK,CAAC,KAAN,GAAc,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,eAArC,CAAd;;AAEF,WAAS,qBAAT,GAA8B;AAC5B;AAEA,QAAM,OAAO,GAAG;AACd,WAAK,EAAE,KAAK,CAAC,KADC;AAEd,YAAM,EAAE,CAAC;AACP,eAAO,EAAE,KAAK,CAAC;AADR,OAAD;AAFM,KAAhB;AAH4B,gCAUW,uBAVX,CAUpB,IAVoB;AAAA,QAUZ,SAVY,yBAUZ,SAVY;AAAA,QAUD,KAVC,yBAUD,KAVC;AAY5B,QAAM,OAAO,GAAG;AACd,cAAQ,EAAE,IADI,CACC;;AADD,KAAhB;AAIA,gFAA+B,KAA/B,EAAsC,SAAtC,EAAiD,OAAjD,EAA0D,OAA1D;AACD;;AAED,SACE;AAAK,aAAS,YAAK,6DAAM,CAAC,MAAZ,cAAsB,KAAK,CAAC,SAAN,IAAmB,EAAzC,CAAd;AAA6D,WAAO,EAAE;AAAtE,KACE;AAAK,WAAO,EAAC;AAAb,KACE;AAAM,KAAC,EAAC,uQAAR;AAAgR,QAAI,EAAC;AAArR,IADF,EAEE;AAAM,KAAC,EAAC,4KAAR;AAAqL,QAAI,EAAC;AAA1L,IAFF,EAGE;AAAM,KAAC,EAAC,gKAAR;AAAyK,QAAI,EAAC;AAA9K,IAHF,EAIE;AAAM,KAAC,EAAC,4IAAR;AAAqJ,QAAI,EAAC;AAA1J,IAJF,CADF,CADF;AAUD,C;;;;;;;;;;;;;;;;;;;;;;AC/DD;AACA,kBAAkB,8B;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,qBAAlB;;AAGA,SAAS,kBAAT,CAA4B,WAA5B,EAAoD;AAAA,MAC1C,KAD0C,GAChC,WADgC,CAC1C,KAD0C;AAGlD,MAAI,CAAC,KAAD,IAAU,CAAC,KAAK,CAAC,IAAjB,IAAyB,CAAC,KAAK,CAAC,OAApC,EACE,OAAO,EAAP;AAEF,SAAO,KAAK,CAAC,IAAN,CAAW,SAAX,CAAqB,CAArB,EAAwB,CAAxB,IAA6B,IAA7B,GAAoC,KAAK,CAAC,OAAjD;AACD;;AAED,SAAS,iBAAT,CAA2B,WAA3B,EAAmD;;;AAAA,MACzC,KADyC,GAC/B,WAD+B,CACzC,KADyC;AAEjD,uCAAO,KAAP,MAAY,IAAZ,IAAY,aAAZ,GAAY,MAAZ,GAAY,GAAE,SAAd,MAAuB,IAAvB,IAAuB,aAAvB,GAAuB,MAAvB,GAAuB,GAAE,IAAzB,MAA6B,IAA7B,IAA6B,aAA7B,GAA6B,MAA7B,GAA6B,GAAG,CAAH,CAA7B,MAAiC,IAAjC,IAAiC,aAAjC,GAAiC,MAAjC,GAAiC,GAAG,YAApC,MAAgD,IAAhD,IAAgD,aAAhD,GAAgD,MAAhD,GAAgD,GAAE,IAAlD;AACD;;AAMK,SAAU,eAAV,CAA0B,KAA1B,EAAqD;AAAA,MACjD,WADiD,GACjC,KADiC,CACjD,WADiD;AAGzD,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAD,CAAtC;AACA,MAAM,GAAG,GAAG,iBAAiB,CAAC,WAAD,CAA7B;AAEA,SACE;AAAK,aAAS,EAAC;AAAf,KACE;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,8DAAD,EAAa;AACX,aAAS,EAAC,eADC;AAEX,WAAO,EAAE,8DAAY,CAAC,IAFX;AAGX,QAAI,EAAE,kEAAgB,CAAC;AAHZ,GAAb,CADF,EAME;AAAM,aAAS,EAAE,yDAAM,CAAC;AAAxB,KACG,GAAG,IACF,mEAAQ,WAAW,IAAI,0GAAG,WAAH,EAAoB,IAApB,CAAvB,EAA4C,gEAAK,GAAL,CAA5C,CAFJ,EAGE;AAAI,aAAS,4BAAqB,yDAAM,CAAC,OAA5B,CAAb;AAAoD,SAAK,EAAE,WAAW,CAAC;AAAvE,KAA8E,WAAW,CAAC,IAA1F,CAHF,EAIE,oDAAC,8DAAD,EAAa;AAAC,aAAS,EAAC,iCAAX;AAA6C,WAAO,EAAE,8DAAY,CAAC;AAAnE,GAAb,CAJF,EAKE;AAAM,aAAS,EAAC;AAAhB,KAA4B,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAE;AAA/B,GAAL,CAA5B,CALF,CANF,EAaE,oDAAC,8DAAD,EAAa;AACX,aAAS,EAAC,eADC;AAEX,WAAO,EAAE,8DAAY,CAAC,IAFX;AAGX,QAAI,EAAE,kEAAgB,CAAC;AAHZ,GAAb,CAbF,CADF,CADF;AAuBD,C;;;;;;;;;;;;ACvDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,qBAAlB;AAMM,SAAU,YAAV,CAAuB,KAAvB,EAA+C;;;AAAA,MAC3C,KAD2C,GACjC,KADiC,CAC3C,KAD2C;AAGnD,MAAM,eAAe,qBAAG,KAAH,MAAQ,IAAR,IAAQ,aAAR,GAAQ,MAAR,GAAQ,GAAE,YAAV,MAAsB,IAAtB,IAAsB,aAAtB,GAAsB,MAAtB,GAAsB,GAAE,IAAxB,MAA4B,IAA5B,IAA4B,aAA5B,GAA4B,MAA5B,GAA4B,GAAE,MAAnD;AAEA,SACE;AAAK,aAAS,EAAC;AAAf,KACE;AAAI,aAAS,EAAC;AAAd,KACE,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CADF,EAEE,oDAAC,4DAAD,EAAW;AAAC,aAAS,EAAC,wCAAX;AAAoD,WAAO,EAAE,8DAAY,CAAC;AAA1E,GAAX,EACE,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CADF,CAFF,CADF,EAOE;AAAK,aAAS,EAAC;AAAf,KACC,eAAe,GACZ,KAAK,CAAC,YAAN,CAAmB,IAAnB,CAAwB,GAAxB,CAA4B,WAAC;AAAA,WAAI,oDAAC,gEAAD,EAAgB;AAAC,iBAAW,EAAE,CAAd;AAAiB,SAAG,EAAE,CAAC,CAAC;AAAxB,KAAhB,CAAJ;AAAA,GAA7B,CADY,GAEZ,iEACE,oDAAC,8DAAD,EAAa;AAAC,aAAS,EAAC,8BAAX;AAA0C,WAAO,EAAE,8DAAY,CAAC;AAAhE,GAAb,CADF,EAEE,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CAFF,CAHJ,CAPF,CADF;AAmBD,C;;;;;;;;;;;;;;;;;;;;;;ACnCD;AACA,kBAAkB,+D;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAOM,SAAU,MAAV,CAAiB,KAAjB,EAAmC;AAAA,MAC/B,KAD+B,GACrB,KADqB,CAC/B,KAD+B;AAAA,MAE/B,MAF+B,GAEJ,KAFI,CAE/B,MAF+B;AAAA,MAEvB,cAFuB,GAEJ,KAFI,CAEvB,cAFuB;AAIvC,SACE,iEACG,MAAM,IAAI;AAAM,aAAS,EAAC;AAAhB,KAA8C,MAAM,CAAC,IAArD,CADb,EAEG,cAAc,IAAI;AAAM,aAAS,EAAC;AAAhB,KAA8C,cAA9C,CAFrB,CADF;AAMD,C;;;;;;;;;;;;ACjBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA,IAAM,SAAS,GAAG,iBAAlB;AAEM,SAAU,OAAV,GAAiB;AACrB,MAAM,cAAc,GAAG,gCAAvB;AACA,MAAM,eAAe,GAAG,gCAAxB;AAEA,SACE,oDAAC,0EAAwB,CAAC,QAA1B,EAAkC;AAAC,SAAK,EAAE;AAAR,GAAlC,EACE;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,4DAAD,EAAW;AAAC,WAAO,EAAE,8DAAY,CAAC,IAAvB;AAA6B,aAAS,EAAE;AAAxC,GAAX,EAAmE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CAAnE,CADF,EAEE,oDAAC,4DAAD,EAAW;AAAC,WAAO,EAAE,8DAAY,CAAC,IAAvB;AAA6B,aAAS,EAAE;AAAxC,GAAX,EAAmE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CAAnE,CAFF,EAIE,oDAAC,4DAAD,EAAW;AAAC,WAAO,EAAE,8DAAY,CAAC,IAAvB;AAA6B,aAAS,EAAE;AAAxC,GAAX,EAAoE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CAApE,CAJF,EAKE,oDAAC,4DAAD,EAAW;AAAC,WAAO,EAAE,8DAAY,CAAC,KAAvB;AAA8B,aAAS,EAAE;AAAzC,GAAX,EAAqE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CAArE,CALF,EAME,oDAAC,4DAAD,EAAW;AAAC,WAAO,EAAE,8DAAY,CAAC,cAAvB;AAAuC,aAAS,EAAE;AAAlD,GAAX,EAA8E,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CAA9E,CANF,EAOE,oDAAC,4DAAD,EAAW;AAAC,WAAO,EAAE,8DAAY,CAAC,IAAvB;AAA6B,aAAS,EAAE;AAAxC,GAAX,EAAoE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CAApE,CAPF,CADF,CADF;AAaD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBD;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAM,SAAS,GAAG,iBAAlB;;AAEA,IAAM,eAAe,GAAG,SAAlB,eAAkB,CAAC,KAAD;AAAA,SAAiC;AACvD,eAAW,EAAE,4DAAW,CAAC,OAD8B;AAEvD,UAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,UAF+B;AAGvD,QAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAHiD,GAAjC;AAAA,CAAxB;;AAMA,IAAM,gBAAgB,GAAG,SAAnB,gBAAmB,CAAC,MAAD;AAAA,SAAmC;AAC1D,eAAW,EAAE,4DAAW,CAAC,OADiC;AAE1D,UAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,MAFkC;AAG1D,QAAI,EAAE,CAAC,MAAM,CAAC,EAAR;AAHoD,GAAnC;AAAA,CAAzB;;AAMA,SAAS,SAAT,CACE,WADF,EAEE,WAFF,EAEiD;AAE/C,SAAO,YAAK;AACV,QAAI,CAAC,WAAW,CAAC,OAAjB,EACE;AAEF,QAAM,IAAI,GAAG,WAAW,CAAC,OAAZ,CAAoB,qBAApB,EAAb;AACA,QAAM,IAAI,GAAG,MAAM,CAAC,WAAP,IAAsB,QAAQ,CAAC,eAAT,CAAyB,UAA5D;AACA,QAAM,GAAG,GAAG,MAAM,CAAC,WAAP,IAAsB,QAAQ,CAAC,eAAT,CAAyB,SAA3D;AAEA;;;;;AAIA,QAAI,IAAI,CAAC,GAAL,GAAW,CAAC,IAAI,CAAC,MAArB,EAA6B;AAC3B,iBAAW,CAAC,IAAD,CAAX;AACA;AACD;;AAED,eAAW,CAAC;AAAE,SAAG,EAAE,GAAG,GAAG,IAAI,CAAC,GAAlB;AAAuB,UAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAzC;AAA+C,WAAK,EAAE,IAAI,CAAC;AAA3D,KAAD,CAAX;AACD,GAlBD;AAmBD;;AAQK,SAAU,QAAV,CAAmB,KAAnB,EAAuC;AAAA,MACnC,KADmC,GACV,KADU,CACnC,KADmC;AAAA,MAC5B,aAD4B,GACV,KADU,CAC5B,aAD4B;;AAAA,0BAGM,iDAAiB,6DAAjB,CAHN;AAAA,MAGnC,mBAHmC,qBAGnC,mBAHmC;AAAA,MAGd,eAHc,qBAGd,eAHc;AAK3C;;;;;AAL2C,wBAQD,+CAAe,IAAf,CARC;AAAA;AAAA,MAQnC,YARmC;AAAA,MAQrB,eARqB;AAS3C;;;;;AAGA,MAAM,WAAW,GAAG,6CAAa,IAAb,CAApB;AACA,MAAM,cAAc,GAAG,kDAAkB,cAAI,EAAG;AAC9C,QAAI,CAAC,IAAL,EACE;AAEF,eAAW,CAAC,OAAZ,GAAsB,IAAtB;AACA,UAAM;AACP,GANsB,EAMpB,EANoB,CAAvB;AAQA;;;;AAGA,MAAM,MAAM,GAAG,8CAAc;AAAA,WAAM,gEAAc,CAAC,QAAf,CAAwB,SAAS,CAAC,WAAD,EAAc,mBAAd,CAAjC,EAAqE,GAArE,EAA0E;AAC3G,aAAO,EAAE,IADkG;AAE3G,cAAQ,EAAE;AAFiG,KAA1E,CAAN;AAAA,GAAd,EAGX,EAHW,CAAf;AAKA;;;;AAGA,kEAAW,CAAC,MAAD,CAAX;AACA,kEAAW,CAAC,MAAD,CAAX;AAEA;;;;AAGA,kDAAgB,YAAK;AAEnB,mBAAe,CAAC,IAAD,CAAf;AACA,WAAO,YAAK;AACV,yBAAmB,CAAC,IAAD,CAAnB;AACA,qBAAe,CAAC,KAAD,CAAf;AACD,KAHD;AAID,GAPD,EAOG,EAPH;AASA,SACE,oDAAC,qEAAmB,CAAC,QAArB,EAA6B;AAAC,SAAK,EAAE;AAAE,sBAAgB,EAAE,mEAAqB;AAAzC;AAAR,GAA7B,EACE;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,4DAAD,EAAW;AACT,WAAO,EAAE;AACP,iBAAW,EAAE,4DAAW,CAAC,OADlB;AAEP,YAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFjB,KADA;AAKT,cAAU,EAAC;AALF,GAAX,CADF,EAQE;AAAQ,aAAS,EAAC;AAAlB,KAAkC,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CAAlC,CARF,CADF,EAWE;AAAK,aAAS,EAAC,8CAAf;AAA8D,OAAG,EAAE;AAAnE,IAXF,EAYE,oDAAC,sDAAD,EAAW;AAAC,SAAK,EAAE,KAAR;AAAe,eAAW,EAAE,KAAK,CAAC;AAAlC,GAAX,CAZF,EAaE,oDAAC,8CAAD,EAAO;AAAC,SAAK,EAAE;AAAR,GAAP,CAbF,EAcE,oDAAC,gDAAD,EAAQ,IAAR,CAdF,EAeE,+DAfF,EAgBG,YAAY,GACT,oDAAC,4DAAD,EAAS;AAAC,SAAK,EAAE,KAAR;AAAe,0BAAsB,EAAE;AAAA,aAAM,eAAe,CAAC,KAAD,CAArB;AAAA;AAAvC,GAAT,CADS,GAET,oDAAC,2EAAD,EAA0B;AAAC,SAAK,EAAE,KAAR;AAAe,uBAAmB,EAAE;AAAA,aAAM,eAAe,CAAC,IAAD,CAArB;AAAA;AAApC,GAA1B,CAlBN,EAmBE,oDAAC,2DAAD,EAAU;AAAC,SAAK,EAAE,KAAR;AAAe,aAAS,EAAC;AAAzB,GAAV,CAnBF,EAoBE,oDAAC,8DAAD,EAAa;AAAC,SAAK,EAAE;AAAR,GAAb,CApBF,EAqBE,oDAAC,uDAAD,EAAM;AAAC,SAAK,EAAE;AAAR,GAAN,CArBF,EAsBG,CAAC,CAAC,aAAF,IAAmB,0GAClB;AAAI,aAAS,EAAE;AAAf,KAA0B,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAE;AAA/B,GAAL,CAA1B,CADkB,EAElB,oDAAC,2DAAD,EAAU;AACR,UAAM,EAAE,aADA;AAER,oBAAgB,EAAE,gBAFV;AAGR,mBAAe,EAAE;AAHT,GAAV,CAFkB,CAtBtB,CADF;AAiCD,C;;;;;;;;;;;;AC7ID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAOM,SAAU,UAAV,CAAqB,KAArB,EAA2C;AAAA,MACvC,KADuC,GAC7B,KAD6B,CACvC,KADuC;AAG/C,MAAM,WAAW,GAAiB;AAChC,eAAW,EAAE,4DAAW,CAAC,OADO;AAEhC,UAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,MAFQ;AAGhC,QAAI,EAAE,KAAK,CAAC,MAAN,GAAe,CAAC,KAAK,CAAC,MAAN,CAAa,EAAd,CAAf,GAAmC;AAHT,GAAlC;AAMA,SACE;AAAK,aAAS,EAAC;AAAf,KACE;AAAI,aAAS,EAAC;AAAd,KACG,CAAC,CAAC,KAAK,CAAC,MAAR,IAAkB,oDAAC,4DAAD,EAAW;AAAC,SAAK,EAAE,KAAR;AAAe,WAAO,EAAE;AAAxB,GAAX,CADrB,EAEG,KAAK,CAAC,IAFT,CADF,EAKG,CAAC,CAAC,gEAAc,CAAC,UAAf,CAA0B,KAAK,CAAC,WAAhC,CAAF,IACC,oDAAC,gEAAD,EAAe;AACb,eAAW,EAAE,KAAK,CAAC,WADN;AAEb,SAAK,EAAE,KAFM;AAGb,aAAS,EAAC;AAHG,GAAf,CANJ,CADF;AAeD,C;;;;;;;;;;;;;;;;;;;;;;;ACnCD;AAAA;AAAA;AAAA;AAAA;AASM,SAAU,SAAV,CAAoB,KAApB,EAA8C;AAAA,MAC1C,KAD0C,GAChC,KADgC,CAC1C,KAD0C;AAGlD,MAAI,CAAC,KAAK,CAAC,SAAP,IAAoB,CAAC,KAAK,CAAC,SAAN,CAAgB,IAArC,IAA6C,CAAC,KAAK,CAAC,SAAN,CAAgB,IAAhB,CAAqB,MAAvE,EACE,OAAO,yGAAP;AAEF,SACE;AAAK,aAAS,EAAE,KAAK,CAAC;AAAtB,KACE;AAAI,aAAS,EAAC;AAAd,KAAkB,WAAlB,CADF,EAEG,KAAK,CAAC,SAAN,CAAgB,IAAhB,CAAqB,GAArB,CAAyB,UAAC,CAAD,EAAI,CAAJ;AAAA,WAAU;AAAK,SAAG,EAAE;AAAV,OAAc,CAAC,CAAC,IAAhB,CAAV;AAAA,GAAzB,CAFH,CADF;AAMD,C;;;;;;;;;;;;ACrBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,iBAAlB;;AAOA,SAAS,mBAAT,CAA6B,KAA7B,EAA4D;AAAA,MAClD,SADkD,GAC/B,KAD+B,CAClD,SADkD;AAAA,MACvC,GADuC,GAC/B,KAD+B,CACvC,GADuC;AAE1D,SACE;AACE,aAAS,YAAK,SAAL,cAAkB,qDAAM,CAAC,UAAzB,CADX;AAEE,SAAK,EAAE;AAAE,qBAAe,iBAAU,GAAV;AAAjB;AAFT,IADF;AAMD;;AAOD,IAAM,QAAQ,wMAAd;AAOM,SAAU,QAAV,CAAmB,KAAnB,EAAuC;AAAA,MACnC,KADmC,GACD,KADC,CACnC,KADmC;AAAA,MAC5B,sBAD4B,GACD,KADC,CAC5B,sBAD4B;AAG7C;;;;AAKE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AACA,MAAM,MAAM,GAAG,CACb;AAAE,aAAS,EAAE,qDAAM,CAAC,OAApB;AAA6B,OAAG,EAAE;AAAlC,GADa,EAEb;AAAE,aAAS,EAAE,qDAAM,CAAC,QAApB;AAA8B,OAAG,EAAE;AAAnC,GAFa,EAGb;AAAE,aAAS,EAAE,qDAAM,CAAC,UAApB;AAAgC,OAAG,EAAE;AAArC,GAHa,EAIb;AAAE,aAAS,EAAE,qDAAM,CAAC,WAApB;AAAiC,OAAG,EAAE;AAAtC,GAJa,CAAf;AAOA,SACE;AAAK,aAAS,2GAC6E,qDAAM,CAAC,SADpF;AAAd,KAEE;AAAK,aAAS,YAAK,qDAAM,CAAC,OAAZ;AAAd,KACE,gEAAI,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CAAJ,CADF,EAEE;AAAK,2BAAuB,EAAE;AAAE,YAAM,EAAE,mCAAM,CAAC,QAAD;AAAhB;AAA9B,IAFF,EAGE;AAAM,WAAO,EAAE,KAAK,CAAC,sBAArB;AAA6C,QAAI,EAAC,QAAlD;AAA2D,YAAQ,EAAE,CAArE;AAAwE,aAAS,EAAC;AAAlF,KACE,oEAAQ,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CAAR,CADF,CAHF,CAFF,EASG,MAAM,CAAC,GAAP,CAAW,UAAC,CAAD,EAAI,CAAJ;AAAA,WAAU,oDAAC,mBAAD,EAAoB;AAAC,SAAG,EAAE,CAAN;AAAS,eAAS,EAAE,CAAC,CAAC,SAAtB;AAAiC,SAAG,EAAE,CAAC,CAAC;AAAxC,KAApB,CAAV;AAAA,GAAX,CATH,CADF;AAaD,C;;;;;;;;;;;;;;;;;;;;;;ACzED;AACA,kBAAkB,oP;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,yBAAlB;AAMO,IAAM,gBAAgB,GAAG,2CAAW,UAAS,KAAT,EAAqC;AAAA,8BAC3C,KAD2C,CACtE,cADsE;AAAA,MACtE,cADsE,sCACrD,KADqD;AAG9E,MAAM,kBAAkB,GAAG,oEAAU,CAAqB,yDAAQ,CAAC,WAA9B,CAArC;AAEA,MAAM,GAAG,GAAG,6CAAa,IAAb,CAAZ;AACA,MAAM,MAAM,GAAG,kDAAkB,cAAI,EAAG;AACtC,QAAI,CAAC,IAAL,EACE;AAEF,OAAG,CAAC,OAAJ,GAAc,IAAd;AACD,GALc,EAKZ,EALY,CAAf;;AAOA,MAAM,OAAO,GAAG,SAAV,OAAU,CAAC,CAAD,EAAwB;AACtC,OAAG,CAAC,OAAJ,CAAY,KAAZ,GAAoB,IAApB;AACA,OAAG,CAAC,OAAJ,CAAY,KAAZ,CAAkB,IAAlB;AACD,GAHD;;AAKA,MAAM,SAAQ,GAAG,SAAX,QAAW,CAAC,KAAD,EAAoB;AACnC;;;;AAIA,sBAAkB,CAAC,QAAnB,CAA4B,KAA5B;AACD,GAND;;AAQA,SACE,0GACE,oDAAC,4DAAD,EAAW;AACT,WAAO,EAAE,8DAAY,CAAC,MADb;AAET,aAAS,EAAC,mBAFD;AAGT,WAAO,EAAE,OAHA;AAIT,YAAQ,EAAE;AAJD,GAAX,EAKI,CAAC,cAAD,IAAmB,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC,aAAR;AAAsB,aAAS,EAAE;AAAjC,GAAL,CALvB,CADF,EASE;AACE,QAAI,EAAC,MADP;AAEE,gBAAY,EAAC,KAFf;AAGE,aAAS,EAAC,oBAHZ;AAIE,YAAQ,MAJV;AAKE,UAAM,EAAC,SALT;AAME,OAAG,EAAE,MANP;AAOE,YAAQ,EAAE,mBAAC;AAAA,aAAI,SAAQ,CAAC,CAAC,CAAC,MAAF,CAAS,KAAV,CAAZ;AAAA;AAPb,IATF,CADF;AAqBD,CA/C+B,CAAzB,C;;;;;;;;;;;;;;;;;;;;;;;ACZP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA,IAAM,SAAS,GAAG,iBAAlB;;AAEA,SAAS,YAAT,CAAsB,MAAtB,EAAkD;AAChD,UAAQ,MAAR;AACA,SAAK,oEAAoB,CAAC,SAA1B;AACE,aAAO,cAAP;;AACF,SAAK,oEAAoB,CAAC,UAA1B;AACE,aAAO,WAAP;;AACF,SAAK,oEAAoB,CAAC,OAA1B;AACE,aAAO,aAAP;AANF;AAQD;;AAED,SAAS,UAAT,CAAoB,MAApB,EAAgD;AAC9C,UAAQ,MAAR;AACA,SAAK,oEAAoB,CAAC,SAA1B;AACE,aAAO,SAAP;;AACF,SAAK,oEAAoB,CAAC,UAA1B;AACE,aAAO,MAAP;;AACF,SAAK,oEAAoB,CAAC,OAA1B;AACE,aAAO,QAAP;AANF;AAQD;;AAED,SAAS,eAAT,CAAyB,MAAzB,EAAuD,QAAvD,EAAuE;AACrE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAL,CAAW,QAAX,KAAwB,CAAxC;;AAEA,UAAQ,MAAR;AACA,SAAK,oEAAoB,CAAC,SAA1B;AACE,uBAAU,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,WAArC,CAAV,cAA+D,OAA/D;;AACF,SAAK,oEAAoB,CAAC,UAA1B;AACE,uBAAU,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,YAArC,CAAV,cAAgE,OAAhE;;AACF,SAAK,oEAAoB,CAAC,OAA1B;AACE,aAAO,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CAAP;AANF;AAQD;;AAQK,SAAU,aAAV,CAAwB,KAAxB,EAAiD;AAAA,oBAClB,KAAK,CAAC,IADY;AAAA,MAC7C,MAD6C,eAC7C,MAD6C;AAAA,MACrC,QADqC,eACrC,QADqC;AAAA,MAC3B,IAD2B,eAC3B,IAD2B;AAGrD;;;;;;AAKA,MAAM,gBAAgB,GAAG,kDAAkB,YAAK;AAC9C,SAAK,CAAC,gBAAN,CAAuB,KAAK,CAAC,IAA7B;AACD,GAFwB,EAEtB,EAFsB,CAAzB;AAIA,MAAM,aAAa,GAAG,kDAAkB,YAAK;AAC3C,SAAK,CAAC,aAAN,CAAoB,KAAK,CAAC,IAA1B;AACD,GAFqB,EAEnB,EAFmB,CAAtB;AAIA,SACE,oDAAC,mDAAD,EAAI;AAAC,aAAS,EAAC;AAAX,GAAJ,EACE,oDAAC,mDAAD,EAAI;AAAC,MAAE,EAAE;AAAL,GAAJ,EACE,oDAAC,+DAAD,EAAc;AAAC,QAAI,EAAC,EAAN;AAAS,eAAW,EAAE,6DAAW,CAAC;AAAlC,GAAd,EACE,oDAAC,mEAAD,EAAkB;AAAC,QAAI,EAAE,uEAAqB,CAAC;AAA7B,GAAlB,CADF,CADF,CADF,EAME,oDAAC,mDAAD,EAAI;AAAC,MAAE,EAAE;AAAL,GAAJ,EACE;AAAI,aAAS,EAAC;AAAd,KAA0B,IAA1B,CADF,EAEE;AAAM,aAAS,EAAE,YAAY,CAAC,MAAD;AAA7B,KAAwC,eAAe,CAAC,MAAD,EAAS,QAAT,CAAvD,CAFF,EAGE;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,2DAAD,EAAY;AAAC,aAAS,EAAC,+BAAX;AAA2C,WAAO,EAAE,UAAU,CAAC,MAAD,CAA9D;AAAwE,OAAG,EAAE;AAA7E,GAAZ,CADF,EAEE,oDAAC,8DAAD,EAAa;AACX,aAAS,EAAC,mCADC;AAEX,WAAO,EAAE,MAAM,KAAK,oEAAoB,CAAC,OAAhC,GAA0C,8DAAY,CAAC,IAAvD,GAA8D,8DAAY,CAAC,IAFzE;AAGX,WAAO,EAAE;AAHE,GAAb,CAFF,EAOE,oDAAC,8DAAD,EAAa;AACX,aAAS,EAAC,mCADC;AAEX,WAAO,EAAE,8DAAY,CAAC,MAFX;AAGX,WAAO,EAAE;AAHE,GAAb,CAPF,CAHF,CANF,CADF;AA0BD,C;;;;;;;;;;;;;;;;;;;;;;;AC3FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAMA;;;;AAGO,IAAM,WAAW,GAAG,2CAAW,UAAS,KAAT,EAAgC;AAAA,MAC5D,IAD4D,GACnD,KADmD,CAC5D,IAD4D;AAGpE,MAAI,CAAC,IAAL,EACE,OAAO,oDAAC,sDAAD,EAAO;AAAC,WAAO,EAAE,SAAV;AAAqB,aAAS,EAAC;AAA/B,GAAP,EAAiD,QAAjD,CAAP;AAJkE,MAM5D,MAN4D,GAMtB,IANsB,CAM5D,MAN4D;AAAA,MAMpD,WANoD,GAMtB,IANsB,CAMpD,WANoD;AAAA,MAMvC,YANuC,GAMtB,IANsB,CAMvC,YANuC;AAQpE;;;;;AAIA,SACE,oDAAC,0EAAwB,CAAC,QAA1B,EAAkC;AAAC,SAAK,EAAC;AAAP,GAAlC,EACE;AAAK,aAAS,EAAC,4CAAf;AAA2D,mBAAa,UAAxE;AAAkF,qBAAe,MAAjG;AAAuG,qBAAe;AAAtH,KACE;AAAM,aAAS,EAAE,yDAAM,CAAC,MAAxB;AAAgC,SAAK,EAAE;AAAE,qBAAe,iBAAU,MAAV;AAAjB;AAAvC,KAA8E,MAA9E,CADF,EAIE;AAAK,aAAS,6DAAsD,yDAAM,CAAC,YAA7D;AAAd,KACE;AAAK,aAAS,EAAC;AAAf,KACE;AAAK,aAAS,EAAC;AAAf,KAAqB,oEAAS,WAAT,CAArB,CADF,EAEE;AAAK,aAAS,EAAC;AAAf,KAAiC,YAAjC,CAFF,CADF,EAKE,oDAAC,yDAAD,EAAQ;AAAC,aAAS,EAAC,eAAX;AAA2B,WAAO,EAAE;AAApC,GAAR,EACE;AAAM,aAAS,YAAK,yDAAM,CAAC,eAAZ;AAAf,IADF,EAEE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAE;AAAT,GAAL,CAFF,CALF,EASE,oDAAC,yDAAD,EAAQ;AAAC,aAAS,EAAC,eAAX;AAA2B,WAAO,EAAE;AAApC,GAAR,EACE;AAAM,aAAS,YAAK,yDAAM,CAAC,eAAZ;AAAf,IADF,EAEE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAE;AAAT,GAAL,CAFF,CATF,EAaE,oDAAC,yDAAD,EAAQ;AAAC,aAAS,EAAC,eAAX;AAA2B,WAAO,EAAE;AAApC,GAAR,EACE;AAAM,aAAS,YAAK,yDAAM,CAAC,eAAZ;AAAf,IADF,EAEE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAE;AAAT,GAAL,CAFF,CAbF,CAJF,CADF,CADF;AA2BD,CAvC0B,EAuCxB,UAAC,SAAD,EAAY,SAAZ,EAAkC;;;AACnC,SAAO,gBAAS,CAAC,IAAV,MAAc,IAAd,IAAc,aAAd,GAAc,MAAd,GAAc,GAAE,EAAhB,OAAkB,MAAK,SAAS,CAAC,IAAf,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE,EAAvC,KACF,gBAAS,CAAC,IAAV,MAAc,IAAd,IAAc,aAAd,GAAc,MAAd,GAAc,GAAE,MAAhB,OAAsB,MAAK,SAAS,CAAC,IAAf,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE,MAA3C,CADE,IAEF,gBAAS,CAAC,IAAV,MAAc,IAAd,IAAc,aAAd,GAAc,MAAd,GAAc,GAAE,WAAhB,OAA2B,MAAK,SAAS,CAAC,IAAf,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE,WAAhD,CAFE,IAGF,gBAAS,CAAC,IAAV,MAAc,IAAd,IAAc,aAAd,GAAc,MAAd,GAAc,GAAE,YAAhB,OAA4B,MAAK,SAAS,CAAC,IAAf,MAAmB,IAAnB,IAAmB,aAAnB,GAAmB,MAAnB,GAAmB,GAAE,YAAjD,CAHL;AAID,CA5C0B,CAApB,C;;;;;;;;;;;;;;;;;;;;;;ACbP;AACA,kBAAkB,6E;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAEA;AAEA,IAAM,SAAS,GAAG,qBAAlB;;AAOA,SAAS,OAAT,CAAiB,KAAjB,EAAoC;AAAA,MAC1B,IAD0B,GACN,KADM,CAC1B,IAD0B;AAAA,MACpB,SADoB,GACN,KADM,CACpB,SADoB;AAGlC,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,IAAb,IAAqB,IAAI,CAAC,IAAL,CAAU,MAA/C;AAEA,MAAI,CAAC,OAAL,EACE,OAAO,yGAAP;AAEF,SACE;AAAK,aAAS,EAAE;AAAhB,KACE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CADF,E,GAAA,EAC0B,IAAI,CAAC,IAAL,CAAU,GAAV,CAAc,UAAC,CAAD,EAAI,CAAJ;AAAA,WACpC;AAAM,eAAS,EAAC,4BAAhB;AAA6C,SAAG,EAAE;AAAlD,OAAsD,CAAC,CAAC,IAAxD,CADoC;AAAA,GAAd,CAD1B,CADF;AAMD;;AAQD,SAAS,SAAT,CAAmB,KAAnB,EAAwC;AAAA,MAC9B,KAD8B,GACF,KADE,CAC9B,KAD8B;AAAA,MACvB,KADuB,GACF,KADE,CACvB,KADuB;AAAA,MAChB,SADgB,GACF,KADE,CAChB,SADgB;AAGtC,MAAM,QAAQ,GAAG,KAAK,IAAI,KAAK,CAAC,IAAf,IAAuB,KAAK,CAAC,IAAN,CAAW,MAAnD;AAEA,MAAI,CAAC,QAAL,EACE,OAAO,yGAAP;AAEF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAN,CAAW,GAAX,CAAe,WAAC;AAAA,WAAI,CAAC,CAAC,IAAN;AAAA,GAAhB,EAA4B,IAA5B,CAAiC,IAAjC,CAAvB;AAEA,SACE;AAAK,aAAS,EAAE;AAAhB,KAA4B,KAA5B,E,IAAA,EAAqC,cAArC,CADF;AAGD;;AAMD,SAAS,YAAT,CAAsB,KAAtB,EAA8C;AAAA,MACpC,KADoC,GAC1B,KAD0B,CACpC,KADoC;AAAA,MAEpC,IAFoC,GAEgC,KAFhC,CAEpC,IAFoC;AAAA,MAE9B,MAF8B,GAEgC,KAFhC,CAE9B,MAF8B;AAAA,MAEtB,cAFsB,GAEgC,KAFhC,CAEtB,cAFsB;AAAA,MAEN,mBAFM,GAEgC,KAFhC,CAEN,mBAFM;AAAA,MAEe,YAFf,GAEgC,KAFhC,CAEe,YAFf;AAI5C,MAAM,UAAU,GAAG,MAAM,IAAI,MAAM,CAAC,IAApC;AAEA;;;;AAGA,SACE,0GACE;AAAI,aAAS,EAAC;AAAd,KAAmB,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CAAnB,CADF,EAEE;AAAK,aAAS,EAAC;AAAf,KACE;AAAK,aAAS,EAAC;AAAf,KACG,UAAU,IAAI;AAAK,aAAS,EAAC;AAAf,KAAsB,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC,QAAR;AAAiB,WAAO,EAAE;AAAE,UAAI,EAAE;AAAR;AAA1B,GAAL,CAAtB,CADjB,EAEG,cAAc,IAAI;AAAK,aAAS,EAAC;AAAf,KAAsB,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC,gBAAR;AAAyB,WAAO,EAAE;AAAE,UAAI,EAAE;AAAR;AAAlC,GAAL,CAAtB,CAFrB,CADF,EAKE;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,SAAD,EAAU;AAAC,SAAK,EAAE,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,qBAArC,CAAR;AAAqE,SAAK,EAAE,mBAA5E;AAAiG,aAAS,EAAC;AAA3G,GAAV,CADF,EAEE,oDAAC,SAAD,EAAU;AAAC,SAAK,EAAE,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,cAArC,CAAR;AAA8D,SAAK,EAAE,YAArE;AAAmF,aAAS,EAAC;AAA7F,GAAV,CAFF,EAGE,oDAAC,OAAD,EAAQ;AAAC,QAAI,EAAE,IAAP;AAAa,aAAS,EAAC;AAAvB,GAAR,CAHF,CALF,CAFF,CADF;AAgBD;;AAOD,SAAS,WAAT,CAAqB,KAArB,EAAiD;AAAA,MACvC,WADuC,GACD,KADC,CACvC,WADuC;AAAA,MAC1B,oBAD0B,GACD,KADC,CAC1B,oBAD0B;AAG/C,MAAI,CAAC,WAAL,EACE,OAAO,yGAAP;AAEF;;;;AAGA,SACE,0GACE;AAAI,aAAS,EAAC;AAAd,KACE,oDAAC,sDAAD,EAAK;AAAC,UAAM,EAAC;AAAR,GAAL,CADF,EAEE,oDAAC,iEAAD,EAAgB;AAAC,QAAI,EAAE,WAAP;AAAoB,SAAK,EAAE,oBAA3B;AAAiD,aAAS,EAAC;AAA3D,GAAhB,CAFF,CADF,EAKE,+DAAI,WAAJ,CALF,CADF;AASD;;AAOK,SAAU,yBAAV,CAAoC,KAApC,EAA2D;AAAA,MACvD,KADuD,GAC7C,KAD6C,CACvD,KADuD;AAG/D,SACE,oDAAC,0EAAwB,CAAC,QAA1B,EAAkC;AAAC,SAAK,EAAE;AAAR,GAAlC,EACE;AAAK,aAAS,EAAC;AAAf,KAEE,oDAAC,8DAAD,EAAW;AAAC,cAAU,MAAX;AAAY,iBAAa,EAAE;AAA3B,GAAX,EACE;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,YAAD,EAAa;AAAC,SAAK,EAAE;AAAR,GAAb,CADF,EAEE,oDAAC,WAAD,EAAY;AAAC,eAAW,EAAE,KAAK,CAAC,WAApB;AAAiC,wBAAoB,EAAE,KAAK,CAAC;AAA7D,GAAZ,CAFF,EAGE;AAAM,aAAS,YAAK,0DAAM,CAAC,UAAZ,oBAAf;AAAwD,WAAO,EAAE,KAAK,CAAC,mBAAvE;AAA4F,QAAI,EAAC,QAAjG;AAA0G,YAAQ,EAAE;AAApH,KACE,oEAAQ,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CAAR,CADF,CAHF,CADF,CAFF,CADF,CADF;AAgBD,C;;;;;;;;;;;;;;;;;;;;;;ACtID;AACA,kBAAkB,sC;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAQM,SAAU,SAAV,CAAoB,KAApB,EAAyC;AAC7C,MAAM,GAAG,aAAM,KAAK,CAAC,aAAZ,yBAAwC,KAAK,CAAC,EAA9C,CAAT;AAEA,SACE;AAAK,aAAS,6BAAsB,KAAK,CAAC,SAAN,GAAkB,KAAK,CAAC,SAAxB,GAAoC,EAA1D;AAAd,KACE;AACE,OAAG,EAAE,GADP;AAEE,aAAS,EAAC,uBAFZ;AAGE,mBAAe,MAHjB;AAIE,SAAK,EAAC;AAJR,IADF,CADF;AASD,C;;;;;;;;;;;;ACpBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEO,IAAM,OAAO,GAAG;AACrB,SAAO,EAAE;AACP,QAAI,EAA2B,OADxB;AAEP,SAAK,EAA0B,OAFxB;AAGP,aAAS,EAAsB,WAHxB;AAIP,aAAS,EAAsB,WAJxB;AAKP,gBAAY,EAAmB,cALxB;AAOP,cAAU,EAAqB,YAPxB;AAQP,UAAM,EAAyB,QARxB;AASP,cAAU,EAAqB,YATxB;AAUP,mBAAe,EAAgB,iBAVxB;AAWP,cAAU,EAAqB,YAXxB;AAYP,eAAW,EAAoB;AAZxB,GADY;AAgBrB,WAAS,EAAE;AACT,QAAI,EAA2B,4DAAe,CAAC,SAAhB,CAA0B,IADhD;AAET,YAAQ,EAAuB,4DAAe,CAAC,SAAhB,CAA0B,QAFhD;AAGT,gBAAY,EAAmB,4DAAe,CAAC,SAAhB,CAA0B,YAHhD;AAIT,iBAAa,EAAkB,4DAAe,CAAC,SAAhB,CAA0B,aAJhD;AAKT,mBAAe,EAAgB,4DAAe,CAAC,SAAhB,CAA0B,eALhD;AAMT,mBAAe,EAAgB,4DAAe,CAAC,SAAhB,CAA0B,eANhD;AAOT,8BAA0B,EAAK,4DAAe,CAAC,SAAhB,CAA0B;AAPhD,GAhBU;AA0BrB,WAAS,EAAE;AACT,QAAI,EAA2B,4DAAgB,CAAC,SAAjB,CAA2B,IADjD;AAET,aAAS,EAAsB,4DAAgB,CAAC,SAAjB,CAA2B,SAFjD;AAGT,SAAK,EAA0B,4DAAgB,CAAC,SAAjB,CAA2B;AAHjD,GA1BU;AAgCrB,iBAAe,EAAE;AACf,kBAAc,EAAiB,4DAAgB,CAAC,eAAjB,CAAiC,cADjD;AAEf,YAAQ,EAAuB,4DAAgB,CAAC,eAAjB,CAAiC,QAFjD;AAGf,SAAK,EAA0B,4DAAgB,CAAC,eAAjB,CAAiC,KAHjD;AAIf,UAAM,EAAyB,4DAAgB,CAAC,eAAjB,CAAiC;AAJjD,GAhCI;AAuCrB,eAAa,EAAE;AACb,QAAI,EAA2B;AADlB,GAvCM;AA2CrB,QAAM,EAAE;AACN,QAAI,EAAE;AADA,GA3Ca;AA+CrB,gBAAc,EAAE;AACd,mBAAe,EAAE,4DAAe,CAAC,cAAhB,CAA+B,eADlC;AAEd,yBAAqB,EAAE,4DAAe,CAAC,cAAhB,CAA+B;AAFxC;AA/CK,CAAhB,C;;;;;;;;;;;;ACHP;AAAA;AAAO,IAAM,aAAa,GAAG;AAC3B,SAAO,EAAE,SADkB;AAE3B,OAAK,EAAE,OAFoB;AAG3B,OAAK,EAAE;AAHoB,CAAtB,C;;;;;;;;;;;;ACAP;AAAA;AAAO,IAAM,OAAO,GAAG;AACrB,gBAAc,EAAE,eADK;AAErB,cAAY,EAAE;AAFO,CAAhB,C;;;;;;;;;;;;ACAP;AAAA;AAAO,IAAM,WAAW,GAAG;AACzB,SAAO,EAAI,qBADc;AAEzB,WAAS,EAAE,4BAFc;AAGzB,WAAS,EAAE,4BAHc;AAIzB,SAAO,EAAE,0BAJgB;AAKzB,OAAK,EAAE,mBALkB;AAMzB,eAAa,EAAE,2BANU;AAOzB,QAAM,EAAE,oBAPiB;AAQzB,iBAAe,EAAE;AARQ,CAApB,C;;;;;;;;;;;;ACAP;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,YAAY,qBACpB,oEADoB,CAAlB,C;;;;;;;;;;;;ACFP;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,QAAQ,qBAChB,gEADgB,CAAd;AAIA,IAAM,YAAY,qBACpB,oEADoB,CAAlB,C;;;;;;;;;;;;ACNP;AAAA;AAAA,IAAM,oBAAoB,GAAG;AAC3B,OAAK,EAAE;AADoB,CAA7B;AAIA,IAAM,wBAAwB,GAAG;AAC/B,kBAAgB;AADe,CAAjC;AAIO,IAAM,cAAc,mCACtB,oBADsB,GAEtB,wBAFsB,CAApB,C;;;;;;;;;;;;ACRP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AAkCO,IAAM,aAAa,GAAG,oDAAwC,SAAxC,CAAtB;AAED,SAAU,qBAAV,CAAgC,KAAhC,EAAkE;AAAA,MAC9D,QAD8D,GACjD,KADiD,CAC9D,QAD8D;AAGtE,MAAM,MAAM,GAAG,wDAAM,CAAC,aAAP,CAA6B,gEAAc,CAAC,MAA5C,CAAf;;AAHsE,wBAK1C,+CAAsB,IAAtB,CAL0C;AAAA;AAAA,MAK9D,KAL8D;AAAA,MAKvD,QALuD;;AAAA,yBAMpB,+CAA+B,IAA/B,CANoB;AAAA;AAAA,MAM9D,gBAN8D;AAAA,MAM5C,mBAN4C;;AAAA,yBAO5B,+CAAwB,KAAxB,CAP4B;AAAA;AAAA,MAO9D,YAP8D;AAAA,MAOhD,eAPgD;;AAStE,MAAM,OAAO,GAAG;AACd,gBAAY,EAAE,MAAM,CAAC,IAAP,GAAc,MAAM,CAAC,IAAP,CAAY,YAA1B,GAAyC,EADzC;AAEd,SAAK,EAAL,KAFc;AAGd,YAAQ,EAAR,QAHc;AAId,oBAAgB,EAAhB,gBAJc;AAKd,uBAAmB,EAAnB,mBALc;AAMd,gBAAY,EAAZ,YANc;AAOd,mBAAe,EAAf;AAPc,GAAhB;AAUA,SACE,oDAAC,aAAa,CAAC,QAAf,EAAuB;AAAC,SAAK,EAAE;AAAR,GAAvB,EACG,QADH,CADF;AAKD,C;;;;;;;;;;;;AC9DD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAEA,IAAM,IAAI,GAAG,iBAAb;AAEO,IAAM,aAAb;AAAA;AAAA;AAAA;;AACE;AAAA;;AACE;;;AAGA;AAJF,sFAKQ,WALR;AAMC;;AAPH;AAAA;AAAA,wBASiB;AACb,aAAO,eAAP;AACD;AAXH;;AAAA;AAAA,EAAmC,sDAAI,CAAC,WAAxC,E;;;;;;;;;;;;;;;;;;;;;;;ACFA;AAAA;AAAO,IAAM,gBAAgB,GAAG;AAC9B,uBAD8B,mCACT;AACnB,WAAO;AACL,SAAG,EAAE,mCADA;AAEL,SAAG;AAFE,KAAP;AAID;AAN6B,CAAzB,C;;;;;;;;;;;;ACDP;AAAA;AAAA;AAAA;AAEA,IAAM,SAAS,GAAG;AAChB,QAAM,EAAE,gBAAC,EAAD;AAAA,4CAA0C,EAA1C;AAAA,GADQ;AAEhB,cAAY,EAAE,sBAAC,EAAD,EAAa,MAAb;AAAA,4CACc,EADd,2BACiC,+DAAc,CAAC,gBADhD,SACmE,SAAS,CAAC,MAAD,CAD5E;AAAA,GAFE;AAKhB,aAAW,EAAE,qBAAC,EAAD;AAAA,6CAA2C,EAA3C;AAAA;AALG,CAAlB;AAQO,IAAM,cAAc,GAAG;AAC5B,QAD4B,kBACrB,EADqB,EACX;AACf,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,MAAV,CAAiB,EAAjB,CADA;AAEL,SAAG,mBAAY,EAAZ;AAFE,KAAP;AAID,GAN2B;AAO5B,cAP4B,wBAOf,EAPe,EAOH,MAPG,EAOW;AACrC,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,YAAV,CAAuB,EAAvB,EAA2B,MAA3B,CADA;AAEL,SAAG,mBAAY,EAAZ,qBAAyB,MAAzB;AAFE,KAAP;AAID,GAZ2B;AAa5B,aAb4B,uBAahB,gBAbgB,EAaQ;AAClC,QAAI,CAAC,gBAAL,EACE;AAEF,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,WAAV,CAAsB,gBAAtB,CADA;AAEL,SAAG,mBAAY,gBAAZ;AAFE,KAAP;AAID;AArB2B,CAAvB;;AAwBP,SAAS,SAAT,CAAmB,MAAnB,EAAiC;AAC/B,SAAO,MAAM,qBAAc,MAAd,IAAyB,EAAtC;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAEO,IAAM,aAAa,GAAG;AAC3B,gBAD2B,0BACZ,SADY,EACK;AAC9B,WAAO;AACL,SAAG,iCAA0B,SAA1B,oBAA6C,+DAAc,CAAC,KAA5D,CADE;AAEL,SAAG,4BAAqB,SAArB;AAFE,KAAP;AAID;AAN0B,CAAtB,C;;;;;;;;;;;;ACHP;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA,IAAM,SAAS,GAAG;AAChB,OAAK,EAAE,eAAC,EAAD;AAAA,4CAA0C,EAA1C,oBAAsD,+DAAc,CAAC,KAArE;AAAA,GADS;AAGhB;AACA,WAAS,EAAE,mBAAC,EAAD,EAAa,MAAb,EAA+B;AACxC,QAAM,KAAK,sCAA+B,+DAAc,CAAC,gBAA9C,SAAiE,SAAS,CAAC,MAAD,CAA1E,CAAX;AACA,2CAAgC,EAAhC,2BAAmD,KAAnD;AACD,GAPe;AAShB,eAAa,EAAE,uBAAC,GAAD,EAAkB;AAC/B,QAAM,MAAM,GAAG,GAAG,CAAC,GAAJ,CAAQ,WAAC;AAAA,0BAAU,CAAV;AAAA,KAAT,CAAf;AACA,4CAAiC,MAAM,CAAC,IAAP,CAAY,GAAZ,CAAjC;AACD,GAZe;AAchB,gBAAc,EAAE,wBAAC,MAAD;AAAA,iEACiC,+DAAc,CAAC,gBADhD,SACmE,SAAS,CAAC,MAAD,CAD5E;AAAA;AAdA,CAAlB;AAkBO,IAAM,aAAa,GAAG;AAC3B,OAD2B,iBACrB,EADqB,EACX;AACd,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,KAAV,CAAgB,EAAhB,CADA;AAEL,SAAG,mBAAY,EAAZ;AAFE,KAAP;AAID,GAN0B;AAQ3B,WAR2B,qBAQjB,EARiB,EAQL,MARK,EAQS;AAClC,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,SAAV,CAAoB,EAApB,EAAwB,MAAxB,CADA;AAEL,SAAG,sBAAe,EAAf,cAAqB,MAArB;AAFE,KAAP;AAID,GAb0B;AAe3B,QAf2B,kBAepB,GAfoB,EAeL,OAfK,EAe8B;AACvD,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,aAAV,CAAwB,GAAxB,CADA;AAEL,SAAG,yBAAkB,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAlB,CAFE;AAGL,aAAO,EAAP;AAHK,KAAP;AAKD,GArB0B;AAuB3B,aAvB2B,uBAuBf,IAvBe,EAuBW,OAvBX,EAuB+B;AACxD,WAAO;AACL,SAAG,yBAAkB,IAAI,CAAC,EAAvB,CADE;AAEL,SAAG,mCAA4B,IAAI,CAAC,EAAjC,CAFE;AAGL,UAAI,EAAE,2DAAS,CAAC,GAHX;AAIL,UAAI,EAAJ,IAJK;AAKL,aAAO,EAAP;AALK,KAAP;AAOD,GA/B0B;AAiC3B,gBAjC2B,0BAiCZ,MAjCY,EAiCE;AAC3B,WAAO;AACL,SAAG,EAAE,SAAS,CAAC,cAAV,CAAyB,MAAzB,CADA;AAEL,SAAG,4BAAqB,MAArB;AAFE,KAAP;AAID;AAtC0B,CAAtB;;AAyCP,SAAS,SAAT,CAAmB,MAAnB,EAAiC;AAC/B,SAAO,MAAM,qBAAc,MAAd,IAAyB,EAAtC;AACD,C;;;;;;;;;;;;ACjED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA,SAAS,uBAAT,CAAiC,KAAjC,EAA8C;AAC5C,SAAO,SAAS,iBAAT,CAA2B,QAA3B,EAA+C;AACpD;;;;AAIA,QAAM,YAAY,GAAG,kDAAkB,QAAlB,EAA4B,EAA5B,CAArB;AAEA,oDAAgB,YAAK;AACnB,YAAM,CAAC,gBAAP,CAAwB,KAAxB,EAA+B,YAA/B;AACA,aAAO;AAAA,eAAM,MAAM,CAAC,mBAAP,CAA2B,KAA3B,EAAkC,YAAlC,CAAN;AAAA,OAAP;AACD,KAHD,EAGG,EAHH;AAID,GAXD;AAYD;;AAEM,IAAM,WAAW,GAAG,uBAAuB,CAAC,QAAD,CAA3C;AACA,IAAM,WAAW,GAAG,uBAAuB,CAAC,QAAD,CAA3C,C;;;;;;;;;;;AClBP,iBAAiB,mBAAO,CAAC,8BAAY;AACrC,iEAAiE;AACjE;AACA,CAAC,gBAAgB,E;;;;;;;;;;;;ACHjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;;AAOA,SAAS,oBAAT,CAA8B,KAA9B,EAA8D;AAAA,MACpD,YADoD,GACnC,KADmC,CACpD,YADoD;AAG5D,SACE,0GACG,YADH,CADF;AAKD;;AAED,SAAS,uBAAT,CAAiC,KAAjC,EAAiE;AAAA,MACvD,KADuD,GAC7C,KAD6C,CACvD,KADuD;AAG/D,SACE,oDAAC,oDAAD,EAAS;AAAC,SAAK,EAAE;AAAR,GAAT,EACE,oDAAC,oBAAD,EAAqB,kBAAK,KAAL,CAArB,CADF,CADF;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BD;AACA;AAEA;AAEA;AACA;AAGO,IAAM,eAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;;;AACY,4BAAuD,EAAvD;AADZ;AAsDC;;AAtDD;AAAA;AAAA,8BAmBgB;AACZ,aAAO;AACL,cAAM,EAAE;AACN,YAAE,EAAE,gBADE;AAEN,mBAAS,EAAE;AAFL;AADH,OAAP;AAMD;AA1BH;AAAA;AAAA,yCA4B4B;AACxB,aAAO;AACL,oBAAY,EAAE,KAAK,eAAL,CAAqB,8DAAa,CAAC,OAAnC,CADT;AAEL,aAAK,EAAE,KAAK,OAAL,CAAa;AAFf,OAAP;AAID;AAjCH;AAAA;AAAA,gCAmCwB,MAnCxB,EAmCsC;AAClC,aAAO,KAAK,eAAL,CAAqB,MAArB,CAAP;AAEA,WAAK,YAAL;AACD;AAvCH;AAAA;AAAA,iCAyCmB;AACf,WAAK,WAAL,CAAiB,8DAAa,CAAC,KAA/B;AACD;AA3CH;AAAA;AAAA,kCA6CuB,MA7CvB,EA6CuC,SA7CvC,EA6CoE;AAChE,WAAK,eAAL,CAAqB,MAArB,IAA+B,SAA/B;AAEA,WAAK,YAAL;AACD;AAjDH;AAAA;AAAA,mCAmDqB;AACjB,yFAAoB,QAApB,EAA8B,oDAAC,0EAAD,EAAqB,kBAAK,KAAK,kBAAL,EAAL,CAArB,CAA9B;AACD;AArDH;AAAA;AAAA,wBAGkB;AACd,aAAO,KAAP;AACD;AALH;AAAA;AAAA,wBAOiB;AACb,aAAO,iBAAP;AACD;AATH;AAAA;AAAA,wBAWqB;AACjB,aAAO,uDAAP;AACD;AAbH;AAAA;AAAA,kCAe2B;AACvB,aAAO,wDAAO,CAAC,YAAf;AACD;AAjBH;;AAAA;AAAA,EAAqC,iEAArC,E;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA,iBAAiB,mBAAO,CAAC,8BAAY;AACrC,iEAAiE;AACjE;AACA,CAAC,gBAAgB,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHjB;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;;AAQA,SAAS,kBAAT,CACE,QADF,EACqB,QADrB,EACwC,MADxC,EACuD;AAErD,MAAI,QAAJ,EAAc;AACZ,WAAO;AACL,WAAK,EAAE,QAAQ,GAAG,yDAAY,CAAC,MAAhB,GAAyB,yDAAY,CAAC,IADhD;AAEL,cAAQ,EAAE,CAAC,QAFN;AAGL,kBAAY,EAAE,4DAAM,CAAC;AAHhB,KAAP;AAKD;;AAED,MAAI,MAAJ,EAAY;AACV,WAAO;AACL,WAAK,EAAE,QAAQ,GAAG,yDAAY,CAAC,SAAhB,GAA4B,yDAAY,CAAC,IADnD;AAEL,cAAQ,EAAE,CAAC,QAFN;AAGL,kBAAY,EAAE,4DAAM,CAAC;AAHhB,KAAP;AAKD;;AAED,SAAO;AACL,SAAK,EAAE,QAAQ,GAAG,yDAAY,CAAC,SAAhB,GAA4B,yDAAY,CAAC,IADnD;AAEL,YAAQ,EAAE,KAFL;AAGL,gBAAY,EAAE,QAAQ,GAAG,4DAAM,CAAC,mBAAV,GAAgC,4DAAM,CAAC;AAHxD,GAAP;AAKD;;AAYD,IAAM,sBAAsB,GAAG,SAAzB,sBAAyB,CAAC,KAAD,EAA2D;AAAA,MAChF,OADgF,GAC9B,KAD8B,CAChF,OADgF;AAAA,MACvE,YADuE,GAC9B,KAD8B,CACvE,YADuE;AAAA,MACzD,UADyD,GAC9B,KAD8B,CACzD,UADyD;AAAA,MAC7C,UAD6C,GAC9B,KAD8B,CAC7C,UAD6C;;AAAA,0BAGnC,iDAAiB,6DAAjB,CAHmC;AAAA,MAG9D,sBAH8D,qBAGhF,gBAHgF;;AAAA,wBAKtD,+CAAe,KAAf,CALsD;AAAA;AAAA,MAKhF,QALgF;AAAA,MAKtE,WALsE;;AAOxF,MAAM,QAAQ,GAAG,uEAAa,CAAC,mEAAiB,CAAC,EAAnB,CAA9B;AACA,MAAM,MAAM,GAAG,uEAAa,CAAC,mEAAiB,CAAC,EAAnB,CAA5B;AACA,MAAM,cAAc,GAAG,uEAAa,CAAC,mEAAiB,CAAC,EAAnB,CAApC;;AAEA,MAAM,aAAa,GAAG,SAAhB,aAAgB,GAAK;AACzB,eAAW,CAAC,CAAC,QAAF,CAAX;AACD,GAFD;;AAIA,kDAAgB,YAAK;AACnB,eAAW,CAAC,CAAC,cAAF,CAAX;AACD,GAFD,EAEG,CAAC,cAAD,CAFH;AAIA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAD,EAAW,QAAX,EAAqB,MAArB,CAAnC;AAEA,MAAM,kBAAkB,GAAG,oEAAU,CAAyB,yDAAQ,CAAC,WAAlC,CAArC;AACA,MAAM,MAAM,GAAG,kDAAkB,UAAC,aAAD,EAA0B;AACzD,sBAAkB,CAAC,QAAnB,CAA4B,aAA5B;AACD,GAFc,EAEZ,EAFY,CAAf;;AAtBwF,qBAyBlC,kEAAW,CAAC;AAChE,UAAM,EAAN,MADgE;AAEhE,WAAO,EAAE,IAFuD;AAGhE,cAAU,EAAE;AAHoD,GAAD,CAzBuB;AAAA,MAyBhF,YAzBgF,gBAyBhF,YAzBgF;AAAA,MAyBlE,aAzBkE,gBAyBlE,aAzBkE;AAAA,MAyBnD,YAzBmD,gBAyBnD,YAzBmD,EA+BxF;;;AACA,MAAI,6BAA6B,GAAG,oCAApC;AACA,MAAI,uBAAuB,GAAG,EAA9B;AAEA;;;;;;;;AAOA,MAAI,sBAAJ,EACE,uBAAuB,GAAG,4DAAM,CAAC,yBAAjC,CADF,KAGE,6BAA6B,eAAQ,4DAAM,CAAC,yBAAf,CAA7B;AAEF,SACE,6EAAS,YAAY,EAArB,GACE,oDAAC,uDAAD,EAAW;AAAC,iBAAa,EAAE,aAAhB;AAA+B,qBAAiB,EAAE;AAAlD,GAAX,CADF,EAEG,OAAO,IAAI,oDAAC,wDAAD,EAAY;AAAC,YAAQ,EAAE,QAAQ,CAAC;AAApB,GAAZ,CAFd,EAGE;AAAK,aAAS,YAAK,4DAAM,CAAC,OAAZ,cAAuB,QAAQ,CAAC,YAAhC;AAAd,KACE;AAAK,aAAS,EAAC;AAAf,KACG,YADH,CADF,CAHF,EAQG,UARH,EASG,QAAQ,CAAC,QAAT,IAAqB;AAAK,aAAS,gCAAyB,4DAAM,CAAC,IAAhC;AAAd,IATxB,EAUE;AAAK,aAAS,EAAE;AAAhB,KACG,CAAC,CAAC,UAAF,IAAgB;AAAK,aAAS,EAAE;AAAhB,KAA0C,UAA1C,CADnB,EAEE,oDAAC,gEAAD,EAAe,IAAf,CAFF,CAVF,EAcG,YAAY,IAAI,oDAAC,4DAAD,EAAS,IAAT,CAdnB,EAeE,+EAAW,aAAa,EAAxB,EAfF,CADF;AAmBD,CAlED;;AAoEA,SAAS,uBAAT,CAAiC,KAAjC,EAAmE;AACjE,SACE,oDAAC,oDAAD,EAAS;AAAC,SAAK,EAAE,KAAK,CAAC;AAAd,GAAT,EACE,oDAAC,0EAAD,EAAyB,IAAzB,EACE,oDAAC,qEAAD,EAAsB,IAAtB,EACE,oDAAC,sBAAD,EAAuB,kBAAK,KAAL,CAAvB,CADF,CADF,CADF,CADF;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzID;AAGA;AAEA;AAEA;AACA;AAMO,IAAM,iBAAb;AAAA;AAAA;AAAA;;AAIE,6BAAY,OAAZ,EAA8C;AAAA;;AAAA;;AAC5C,2FAAM,OAAN;AAHQ,4BAAuD,EAAvD;AAEoC;AAE7C;;AANH;AAAA;AAAA,8BAwBgB;AACZ,aAAO;AACL,cAAM,EAAE;AACN,YAAE,EAAE,gBADE;AAEN,mBAAS,EAAE;AAFL;AADH,OAAP;AAMD;AA/BH;AAAA;AAAA,yCAiC4B;AACxB,aAAO;AACL,eAAO,EAAE,KAAK,OAAL,CAAa,OADjB;AAEL,oBAAY,EAAE,KAAK,eAAL,CAAqB,8DAAa,CAAC,OAAnC,CAFT;AAGL,kBAAU,EAAE,KAAK,eAAL,CAAqB,8DAAa,CAAC,KAAnC,CAHP;AAIL,kBAAU,EAAE,KAAK,eAAL,CAAqB,8DAAa,CAAC,KAAnC,CAJP;AAKL,aAAK,EAAE,KAAK,OAAL,CAAa;AALf,OAAP;AAOD;AAzCH;AAAA;AAAA,gCA2CwB,MA3CxB,EA2CsC;AAClC,aAAO,KAAK,eAAL,CAAqB,MAArB,CAAP;AAEA,WAAK,YAAL;AACD;AA/CH;AAAA;AAAA,iCAiDmB;AACf,WAAK,WAAL,CAAiB,8DAAa,CAAC,KAA/B;AACD;AAnDH;AAAA;AAAA,kCAqDuB,MArDvB,EAqDuC,SArDvC,EAqDoE;AAChE,WAAK,eAAL,CAAqB,MAArB,IAA+B,SAA/B;AAEA,WAAK,YAAL;AACD;AAzDH;AAAA;AAAA,mCA2DqB;AACjB,2FAAoB,QAApB,EAA8B,oDAAC,8EAAD,EAAuB,kBAAK,KAAK,kBAAL,EAAL,CAAvB,CAA9B;AACD;AA7DH;AAAA;AAAA,wBAQkB;AACd,aAAO,KAAP;AACD;AAVH;AAAA;AAAA,wBAYiB;AACb,aAAO,mBAAP;AACD;AAdH;AAAA;AAAA,wBAgBqB;AACjB,aAAO,yDAAP;AACD;AAlBH;AAAA;AAAA,gCAoB4B,OApB5B,EAoB6D;AACzD,uBAAU,wDAAO,CAAC,cAAlB,cAAoC,OAAO,CAAC,OAA5C;AACD;AAtBH;;AAAA;AAAA,EAAuC,iEAAvC,E;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEM,SAAU,QAAV,GAAkB;AACtB,SACE,0GACE;AAAK,aAAS,EAAE,sDAAM,CAAC;AAAvB,IADF,EAEE;AAAK,aAAS,EAAE,sDAAM,CAAC;AAAvB,KACE;AAAK,aAAS,EAAE,sDAAM,CAAC;AAAvB,KACE,gEAAI,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,iBAAZ;AAA+B,UAAM,EAAE;AAAvC,GAAL,CAAJ,CADF,CADF,CAFF,EAOE;AAAK,aAAS,EAAE,sDAAM,CAAC;AAAvB,IAPF,CADF;AAWD,C;;;;;;;;;;;;;;;;;;;;;;ACjBD;AACA,kBAAkB,uI;;;;;;;;;;;ACDlB;AACA,kBAAkB,iR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDlB;AACA;AACA;AACA;;IAEM,kB;;;;;;;;;;;;;4BACW,K,EAAiB;AAC9B,aAAO,KAAK,CAAC,gBAAN,IAA0B,KAAK,CAAC,EAAvC;AACD;;;wBAEoB;AACnB,aAAO,UAAC,KAAD,EAAoB,KAApB,EAAyC;AAC9C,YAAM,WAAW,GAAG,KAAK,CAAC,GAAN,CAAU,QAAV,CAApB;AACA,YAAM,WAAW,GAAG,KAAK,CAAC,GAAN,CAAU,QAAV,CAApB;AACA,YAAI,WAAW,KAAK,oBAAoB,CAAC,OAAzC,EACE,OAAO,CAAP;AACF,YAAI,WAAW,KAAK,oBAAoB,CAAC,OAAzC,EACE,OAAO,CAAC,CAAR;AAEF,eAAO,CAAP;AACD,OATD;AAUD;;;;EAhB8B,sDAAI,CAAC,U;;AAmBtC,IAAY,oBAAZ;;AAAA,WAAY,oBAAZ,EAAgC;AAC9B;AACA;AACA;AACD,CAJD,EAAY,oBAAoB,KAApB,oBAAoB,MAAhC;AAeA;;;;;;;AAKO,IAAM,qBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,iCAamB;AACf,WAAK,kBAAL;AACA,WAAK,qBAAL;AACA,WAAK,aAAL;AACD;AAjBH;AAAA;AAAA,yCAmB4B;AACxB,WAAK,kBAAL,GAA0B,iEAAe,CAAC,WAAhB,CAA4B,yDAAQ,CAAC,WAArC,EAAkD,IAAlD,CAA1B;AACA,WAAK,mBAAL,GAA2B,iEAAe,CAAC,WAAhB,CAA4B,yDAAQ,CAAC,YAArC,EAAmD,IAAnD,CAA3B;AACD;AAtBH;AAAA;AAAA,4CAwB+B;AAC3B,WAAK,OAAL,GAAe,KAAK,kBAAL,CAAwB,aAAxB,EAAf;AACA,WAAK,YAAL,GAAoB,KAAK,mBAAL,CAAyB,eAAzB,EAApB;AACA,WAAK,QAAL,GAAgB,IAAI,kBAAJ,EAAhB;AAEA,WAAK,OAAL,CAAa,IAAb,CAAkB,KAAK,SAAvB;AACA,WAAK,YAAL,CAAkB,IAAlB,CAAuB,KAAK,cAA5B;AACD;AA/BH;AAAA;AAAA,oCAiCuB;AACnB,WAAK,QAAL,CAAc,KAAK,OAAnB,EAA4B,KAA5B,EAAmC,KAAK,SAAxC;AACA,WAAK,QAAL,CAAc,KAAK,YAAnB,EAAiC,KAAjC,EAAwC,KAAK,cAA7C;AAEA,WAAK,QAAL,CAAc,KAAK,OAAnB,EAA4B,QAA5B,EAAsC,KAAK,YAA3C;AACA,WAAK,QAAL,CAAc,KAAK,YAAnB,EAAiC,QAAjC,EAA2C,KAAK,iBAAhD;AAEA,WAAK,QAAL,CAAc,KAAK,OAAnB,EAA4B,QAA5B,EAAsC,KAAK,cAA3C;AACA,WAAK,QAAL,CAAc,KAAK,YAAnB,EAAiC,QAAjC,EAA2C,KAAK,mBAAhD;AACD;AA1CH;AAAA;AAAA,mCA4CyB,MA5CzB,EA4C2C;AACvC,aAAO;AACL,UAAE,EAAE,MAAM,CAAC,GAAP,CAAW,IAAX,CADC;AAEL,YAAI,EAAE,MAAM,CAAC,GAAP,CAAW,MAAX,CAFD;AAGL,gBAAQ,EAAE,MAAM,CAAC,GAAP,CAAW,UAAX,CAHL;AAIL,cAAM,EAAE,oBAAoB,CAAC,SAJxB;AAKL,wBAAgB,EAAE,MAAM,CAAC,GAAP,CAAW,kBAAX;AALb,OAAP;AAOD;AApDH;AAAA;AAAA,wCAsD8B,WAtD9B,EAsDqD;AACjD,aAAO;AACL,UAAE,EAAE,WAAW,CAAC,GAAZ,CAAgB,kBAAhB,CADC;AAEL,YAAI,EAAE,WAAW,CAAC,GAAZ,CAAgB,OAAhB,EAAyB,GAAzB,CAA6B,MAA7B,CAFD;AAGL,gBAAQ,EAAE,WAAW,CAAC,GAAZ,CAAgB,oBAAhB,CAHL;AAIL,cAAM,EAAE,oEAAkB,CAAC,QAAnB,CAA4B,WAA5B,IAA2C,oBAAoB,CAAC,OAAhE,GAA0E,oBAAoB,CAAC,UAJlG;AAKL,wBAAgB,EAAE,WAAW,CAAC,GAAZ,CAAgB,kBAAhB,CALb;AAML,eAAO,EAAE,WAAW,CAAC,GAAZ,CAAgB,OAAhB,EAAyB,GAAzB,CAA6B,IAA7B;AANJ,OAAP;AAQD;AA/DH;AAAA;AAAA,8BAiEoB,MAjEpB,EAiEsC;AAClC,WAAK,QAAL,CAAc,GAAd,CAAkB,KAAK,cAAL,CAAoB,MAApB,CAAlB;AACD;AAnEH;AAAA;AAAA,mCAqEyB,WArEzB,EAqEgD;AAC5C,UAAM,QAAQ,GAAG,KAAK,QAAL,CAAc,SAAd,CAAwB;AAAE,wBAAgB,EAAE,WAAW,CAAC,GAAZ,CAAgB,kBAAhB;AAApB,OAAxB,CAAjB;;AAEA,UAAI,QAAJ,EAAc;AACZ,gBAAQ,CAAC,GAAT,CAAa,KAAK,mBAAL,CAAyB,WAAzB,CAAb;AACA;AACD;;AAED,WAAK,QAAL,CAAc,GAAd,CAAkB,KAAK,mBAAL,CAAyB,WAAzB,CAAlB;AACD;AA9EH;AAAA;AAAA,iCAgFuB,MAhFvB,EAgFyC;AACrC,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,MAAM,CAAC,GAAP,CAAW,IAAX,CAAlB,CAAb;AACA,WAAK,QAAL,CAAc,MAAd,CAAqB,IAArB;AACD;AAnFH;AAAA;AAAA,sCAqF4B,WArF5B,EAqFmD;AAC/C,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,WAAW,CAAC,GAAZ,CAAgB,kBAAhB,CAAlB,CAAb;AACA,WAAK,QAAL,CAAc,MAAd,CAAqB,IAArB;AACD;AAxFH;AAAA;AAAA,mCA0FyB,MA1FzB,EA0F2C;AACvC,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,MAAM,CAAC,GAAP,CAAW,IAAX,CAAlB,CAAb;AACA,UAAI,CAAC,GAAL,CAAS,KAAK,cAAL,CAAoB,MAApB,CAAT;AACD;AA7FH;AAAA;AAAA,wCA+F8B,WA/F9B,EA+FqD;AACjD,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,WAAW,CAAC,GAAZ,CAAgB,kBAAhB,CAAlB,CAAb;AACA,UAAI,CAAC,GAAL,CAAS,KAAK,mBAAL,CAAyB,WAAzB,CAAT;AACD;AAlGH;AAAA;AAAA,+BAoGoB,IApGpB,EAoGwC;AACpC,UAAI,IAAI,CAAC,MAAL,KAAgB,oBAAoB,CAAC,SAAzC,EAAoD;AAClD,aAAK,kBAAL,CAAwB,YAAxB,CAAqC,IAAI,CAAC,EAA1C;AACA;AACD;;AAED,UAAM,WAAW,GAAG,KAAK,YAAL,CAAkB,SAAlB,CAA4B;AAAE,wBAAgB,EAAE,IAAI,CAAC;AAAzB,OAA5B,CAApB;AACA,WAAK,mBAAL,CAAyB,gBAAzB,CAA0C,WAA1C;AACD;AA5GH;AAAA;AAAA,8BA8GmB,IA9GnB,EA8GuC;AAAA;;AACnC,UAAI,IAAI,CAAC,MAAL,KAAgB,oBAAoB,CAAC,SAAzC,EACE,sDAAI,CAAC,WAAL,UAAuB,IAAI,0DAAJ,CAAa,+BAAb,CAAvB;AAEF,UAAM,WAAW,GAAG,KAAK,YAAL,CAAkB,SAAlB,CAA4B;AAAE,wBAAgB,EAAE,IAAI,CAAC;AAAzB,OAA5B,CAApB;AACA,WAAK,mBAAL,CAAyB,gBAAzB,CAA0C,WAA1C,EAAuD,YAAK;AAC1D,aAAI,CAAC,mBAAL,CAAyB,sBAAzB;AACD,OAFD;AAGD;AAtHH;AAAA;AAAA,+BAwHoB,IAxHpB,EAwHwC;AACpC,UAAI,IAAI,CAAC,MAAL,KAAgB,oBAAoB,CAAC,SAAzC,EACE;AAEF,UAAM,MAAM,GAAG,KAAK,OAAL,CAAa,GAAb,CAAiB,IAAI,CAAC,EAAtB,CAAf;AAEA;;;;;;;AAMA,UAAI,MAAM,CAAC,GAAP,CAAW,SAAX,CAAJ,EACE;AAEF,4DAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,mBAAW,EAAE,gEAAW,CAAC,OADA;AAEzB,cAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,WAFC;AAGzB,YAAI,EAAE,CAAC,IAAI,CAAC,EAAN;AAHmB,OAA3B;AAKD;AA5IH;AAAA;AAAA,yCA8I8B,OA9I9B,EA8I+C,IA9I/C,EA8I2D;AACvD,UAAM,IAAI,GAAG,KAAK,QAAL,CAAc,SAAd,CAAwB;AAAE,eAAO,EAAP;AAAF,OAAxB,CAAb;AAEA,UAAI,CAAC,IAAL,EAAW;AAEX,UAAI,CAAC,GAAL,CAAS;AAAE,YAAI,EAAJ;AAAF,OAAT;AACD;AApJH;AAAA;AAAA,oCAsJsB;AAClB,aAAO,KAAK,QAAZ;AACD;AAxJH;AAAA;AAAA,wBASiB;AACb,aAAO,yBAAP;AACD;AAXH;;AAAA;AAAA,EAA2C,sDAAI,CAAC,OAAhD,E;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AAEA;AACA;AAEA,IAAM,QAAQ,GAAG;AACf,cAAY,EAAE,sBAAC,OAAD,EAAmE;AAC/E,WAAO;AACL,SAAG,EAAE,8EADA;AAEL,SAAG,EAAE,WAFA;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE;AAJN,KAAP;AAMD,GARc;AAUf,WAAS,EAAE,mBAAC,EAAD,EAAa,OAAb,EAAqE;AAC9E,WAAO;AACL,SAAG,mCAA4B,EAA5B,oBAAwC,sEAAoB,CAAC,MAA7D,CADE;AAEL,SAAG,mBAAY,EAAZ,CAFE;AAGL,aAAO,EAAP;AAHK,KAAP;AAKD;AAhBc,CAAjB;AAuBO,IAAM,wBAAb;AAAA;AAAA;AAGE,oCAAY,OAAZ,EAAoD;AAAA;;AAClD,SAAK,KAAL,GAAa,OAAO,CAAC,KAArB;AACD;;AALH;AAAA;AAAA,iCAesB,QAftB,EAegE;AAAA;;AAC5D,UAAM,OAAO,GAAG,QAAQ,CAAC,YAAT,CAAsB,UAAC,SAAD,EAAoC;AACxE,sDAAK,CAAC,OAAN,CAAc,KAAI,CAAC,WAAnB,EAAgC,OAAhC,CAAwC,gBAAxC,EAA0D,SAA1D;AAEA,gBAAQ,IAAI,QAAQ,CAAC,IAAI,sDAAI,CAAC,UAAT,CAAoB,SAApB,CAAD,CAApB;AACD,OAJe,CAAhB;AAMA,UAAM,cAAc,GAAG,wDAAM,CAAC,WAAP,CAAyC,KAAK,KAAL,CAAW,QAAX,EAAzC,EAAgE,OAAO,CAAC,GAAxE,CAAvB;AAEA,UAAI,cAAc,CAAC,WAAnB,EACE,wDAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,OAAlC;AAEF,aAAO,cAAc,CAAC,IAAf,IAAuB,IAAI,sDAAI,CAAC,UAAT,CAAoB,cAAc,CAAC,IAAf,CAAoB,GAApB,CAAwB,aAAG;AAAA,eAAI,GAAG,CAAC,IAAR;AAAA,OAA3B,CAApB,CAA9B;AACD;AA5BH;AAAA;AAAA,8BA8BmB,EA9BnB,EA8B+B,QA9B/B,EA8BoE;AAChE,UAAM,OAAO,GAAG,QAAQ,CAAC,SAAT,CAAmB,EAAnB,EAAuB,UAAC,MAAD;AAAA,eAAoB,QAAQ,IAAI,QAAQ,CAAC,IAAI,sDAAI,CAAC,KAAT,CAAe,MAAf,CAAD,CAAxC;AAAA,OAAvB,CAAhB;AACA,UAAM,cAAc,GAAG,wDAAM,CAAC,WAAP,CAA2B,KAAK,KAAL,CAAW,QAAX,EAA3B,EAAkD,OAAO,CAAC,GAA1D,CAAvB;AAEA,UAAI,cAAc,CAAC,WAAnB,EACE,wDAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,OAAlC;AAEF,aAAO,cAAc,CAAC,IAAf,IAAuB,IAAI,sDAAI,CAAC,KAAT,CAAe,cAAc,CAAC,IAA9B,CAA9B;AACD;AAtCH;AAAA;AAAA,wBAOiB;AACb,aAAO,oEAAkB,CAAC,OAA1B;AACD;AATH;AAAA;AAAA,wBAWwB;AACpB,aAAO,sBAAP;AACD;AAbH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AAEA,IAAM,QAAQ,GAAG;AACf,QADe,kBACR,EADQ,EACI,OADJ,EACoC;AACjD,WAAO;AACL,SAAG,mCAA4B,EAA5B,oBAAwC,sEAAoB,CAAC,MAA7D,CADE;AAEL,SAAG,mBAAY,EAAZ,CAFE;AAGL,aAAO,EAAP;AAHK,KAAP;AAKD;AAPc,CAAjB;AAcO,IAAM,uBAAb;AAAA;AAAA;AAGE,mCAAY,OAAZ,EAAmD;AAAA;;AACjD,SAAK,KAAL,GAAa,OAAO,CAAC,KAArB;AACD;;AALH;AAAA;AAAA,8BAemB,EAfnB,EAe+B,QAf/B,EAeoE;AAChE,UAAM,OAAO,GAAG,QAAQ,CAAC,MAAT,CAAgB,EAAhB,EAAoB,UAAC,MAAD;AAAA,eAAoB,QAAQ,IAAI,QAAQ,CAAC,IAAI,sDAAI,CAAC,KAAT,CAAe,MAAf,CAAD,CAAxC;AAAA,OAApB,CAAhB;AACA,UAAM,cAAc,GAAG,wDAAM,CAAC,WAAP,CAA2B,KAAK,KAAL,CAAW,QAAX,EAA3B,EAAkD,OAAO,CAAC,GAA1D,CAAvB;AAEA,UAAI,cAAc,CAAC,WAAnB,EACE,wDAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,OAAlC;AAEF,aAAO,cAAc,CAAC,IAAf,IAAuB,IAAI,sDAAI,CAAC,KAAT,CAAe,cAAc,CAAC,IAA9B,CAA9B;AACD;AAvBH;AAAA;AAAA,wBAOiB;AACb,aAAO,oEAAkB,CAAC,MAA1B;AACD;AATH;AAAA;AAAA,wBAWwB;AACpB,aAAO,oEAAkB,CAAC,MAA1B;AACD;AAbH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAGA;AACA;AAMO,IAAM,sBAAb;AAAA;AAAA;AAGE,kCAAY,OAAZ,EAAkD;AAAA;;AAChD,SAAK,KAAL,GAAa,OAAO,CAAC,KAArB;AACD;;AALH;AAAA;AAAA,sCAWwB;AACpB,WAAK,KAAL,CAAW,QAAX,CAA6C;AAC3C,YAAI,EAAE,wDAAM,CAAC,OAAP,CAAe,UADsB;AAE3C,YAAI,EAAE,CAAC,OAAD,CAFqC;AAG3C,eAAO,EAAE;AAHkC,OAA7C;AAKD;AAjBH;AAAA;AAAA,8BAmBI,GAnBJ,EAoBI,QApBJ,EAoB4D;AAExD,UAAM,eAAe,GAAG,SAAlB,eAAkB,CAAC,MAAD,EAAoB;AAC1C,YAAI,CAAC,gEAAc,CAAC,UAAf,CAA0B,QAA1B,CAAL,EACE;AAEF,gBAAQ,CAAC,IAAI,sDAAI,CAAC,UAAT,CAAoB,MAApB,CAAD,CAAR;AACD,OALD;;AAMA,UAAM,OAAO,GAAG,oEAAa,CAAC,MAAd,CAAqB,GAArB,EAA0B,eAA1B,CAAhB;AACA,UAAM,QAAQ,GAAG,wDAAM,CAAC,WAAP,CAA4B,KAAK,KAAL,CAAW,QAAX,EAA5B,EAAmD,OAAO,CAAC,GAA3D,CAAjB;AAEA,UAAI,QAAQ,CAAC,WAAb,EACE,wDAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,OAAlC,EADF,KAGE,eAAe,CAAC,QAAQ,CAAC,IAAV,CAAf;AACF,aAAO,IAAI,sDAAI,CAAC,UAAT,CAAoB,QAAQ,CAAC,IAA7B,CAAP;AACD;AApCH;AAAA;AAAA,wBAOiB;AACb,aAAO,6DAAY,CAAC,KAApB;AACD;AATH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;ACTA;AAEA;AAEA,IAAM,mBAAmB,GAAG;AAAA,6BACnB,GADmB,EACJ,OADI,EACgB;AACxC,WAAO;AACL,SAAG,mCAA4B,GAAG,CAAC,GAAJ,CAAQ,YAAE;AAAA,0CAAwB,EAAxB;AAAA,OAAV,CAA5B,CADE;AAEL,SAAG,0BAAmB,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAnB,CAFE;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE,KAJN;AAKL,UAAI,EAAE,2DAAS,CAAC;AALX,KAAP;AAOD,GATyB;AAW1B,QAX0B,kBAWnB,GAXmB,EAWJ,OAXI,EAWgB;AACxC,WAAO;AACL,SAAG,0CAAmC,GAAG,CAAC,GAAJ,CAAQ,YAAE;AAAA,0CAAwB,EAAxB;AAAA,OAAV,CAAnC,CADE;AAEL,SAAG,2BAAoB,GAAG,CAAC,IAAJ,CAAS,GAAT,CAApB,CAFE;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE,KAJN;AAKL,UAAI,EAAE,2DAAS,CAAC;AALX,KAAP;AAOD,GAnByB;AAqB1B,OArB0B,iBAqBpB,GArBoB,EAqBL,OArBK,EAqBe;AACvC,WAAO;AACL,SAAG,yCAAkC,GAAG,CAAC,GAAJ,CAAQ,YAAE;AAAA,0CAAwB,EAAxB;AAAA,OAAV,CAAlC,CADE;AAEL,SAAG,0BAAmB,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAnB,CAFE;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE,KAJN;AAKL,UAAI,EAAE,2DAAS,CAAC;AALX,KAAP;AAOD,GA7ByB;AA+B1B,KA/B0B,eA+BtB,EA/BsB,EA+BV,OA/BU,EA+B0B;AAClD,WAAO;AACL,SAAG,mCAA4B,EAA5B,CADE;AAEL,SAAG,yBAAkB,EAAlB,CAFE;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE;AAJN,KAAP;AAMD,GAtCyB;AAwC1B,QAxC0B,kBAwCnB,OAxCmB,EAwCmB;AAC3C,WAAO;AACL,SAAG,EAAE,yDADA;AAEL,SAAG,EAAE,SAFA;AAGL,aAAO,EAAP,OAHK;AAIL,eAAS,EAAE;AAJN,KAAP;AAMD,GA/CyB;AAiD1B,gBAjD0B,0BAiDX,eAjDW,EAiDkC,OAjDlC,EAiDqE;AAC7F,WAAO;AACL,SAAG,EAAE,wBADA;AAEL,SAAG,4BAAqB,eAAe,CAAC,EAArC,CAFE;AAGL,UAAI,EAAE,2DAAS,CAAC,IAHX;AAIL,aAAO,EAAP,OAJK;AAKL,UAAI,EAAE;AALD,KAAP;AAOD;AAzDyB,CAA5B;AAiFO,IAAM,4BAAb;AAAA;AAAA;AAGE,wCAAY,OAAZ,EAAkD;AAAA;;AAChD,SAAK,KAAL,GAAa,OAAO,CAAC,KAArB;AACD;;AALH;AAAA;AAAA,sCAW2B,GAX3B,EAW0C,QAX1C,EAW+D;AAC3D,8DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,UAAnB,CAA2B,GAA3B,EAAgC,QAAhC,CAAlC;AACD;AAbH;AAAA;AAAA,uCAc4B,GAd5B,EAc2C,QAd3C,EAcgE;AAC5D,8DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,MAApB,CAA2B,GAA3B,EAAgC,QAAhC,CAAlC;AACD;AAhBH;AAAA;AAAA,sCAiB2B,GAjB3B,EAiB0C,QAjB1C,EAiB+D;AAC3D,8DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,KAApB,CAA0B,GAA1B,EAA+B,QAA/B,CAAlC;AACD;AAnBH;AAAA;AAAA,mCAoBwB,EApBxB,EAoBoC,QApBpC,EAoBwE;AACpE,8DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,GAApB,CAAwB,EAAxB,EAA4B,UAAC,IAAD,EAAc;AAC1E,gBAAQ,CAAC,IAAI,sDAAI,CAAC,KAAT,CAAe,IAAf,CAAD,CAAR;AACD,OAFiC,CAAlC;AAGD;AAxBH;AAAA;AAAA,oCAyByB,QAzBzB,EAyBgE;AAC5D,8DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,MAApB,CAA2B,QAA3B,CAAlC;AACD;AA3BH;AAAA;AAAA,wCA4B6B,OA5B7B,EA4BkE,QA5BlE,EA4BuG;AACnG,8DAAM,CAAC,KAAP,CAAa,KAAK,KAAL,CAAW,QAAxB,EAAkC,mBAAmB,CAAC,cAApB,CAAmC,OAAnC,EAA4C,QAA5C,CAAlC;AACD;AA9BH;AAAA;AAAA,wBAOiB;AACb,aAAO,6DAAY,CAAC,WAApB;AACD;AATH;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtFA;AAEA;AACA;AACA;AAEO,IAAM,kBAAb;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,iCAKmB;AACf;;AAEA,WAAK,sBAAL,GAA8B,iEAAe,CAAC,WAAhB,CAA4B,6DAAY,CAAC,WAAzC,EAAsD,IAAtD,CAA9B;AACA,WAAK,mBAAL,GAA2B,iEAAe,CAAC,WAAhB,CAA4B,yDAAQ,CAAC,YAArC,EAAmD,IAAnD,CAA3B;AACA,WAAK,eAAL,GAAuB,iEAAe,CAAC,WAAhB,CAA4B,6DAAY,CAAC,IAAzC,EAA+C,IAA/C,CAAvB;AAEA,WAAK,QAAL,CAAc,KAAK,WAAnB,EAAgC,kEAAgB,CAAC,WAAjD,EAA8D,KAAK,UAAnE;AACA,WAAK,QAAL,CAAc,KAAK,WAAnB,EAAgC,kEAAgB,CAAC,eAAjD,EAAkE,KAAK,YAAvE;AACA,WAAK,QAAL,CAAc,KAAK,WAAnB,EAAgC,kEAAgB,CAAC,gBAAjD,EAAmE,KAAK,YAAxE;AACD;AAfH;AAAA;AAAA,iCAiBoB;AAChB;;;AAGA,OAAC,CAAC,MAAD,CAAD,CAAU,EAAV,CAAa,cAAb,EAA6B,UAAC,CAAD,EAAW;AACtC,YAAM,MAAM,GAAG,iEAAe,CAAC,SAAhB,CAA0B,sBAA1B,EAAkD,SAAlD,CAAf;AACA,SAAC,CAAC,WAAF,GAAgB,MAAhB;AACA,eAAO,MAAP;AACD,OAJD;AAKD;AA1BH;AAAA;AAAA,mCA4BsB;AAClB,UAAM,UAAU,GAAG,KAAK,aAAL,EAAnB;AAEA,UAAI,UAAU,CAAC,IAAX,CAAgB,gBAAM;AAAA,eAAI,MAAM,CAAC,GAAP,CAAW,UAAX,IAAyB,GAA7B;AAAA,OAAtB,CAAJ,EACE;AAEF,OAAC,CAAC,MAAD,CAAD,CAAU,GAAV,CAAc,cAAd;AACD;AAnCH;AAAA;AAAA,8BAqCoB,IArCpB,EAqC8B;AAC1B,UAAM,MAAM,GAAG,KAAK,QAAL,CAAc,KAAd,CAAoB,IAApB,CAAf;AAEA,aAAO,KAAK,aAAL,GAAqB,GAArB,CAAyB,MAAzB,CAAP;AACD;AAzCH;AAAA;AAAA,mCA2CyB,MA3CzB,EA2C6C,QA3C7C,EA2C0D;AAAA;;AACtD,YAAM,CAAC,GAAP,CAAW,SAAX,EAAsB,IAAtB;AACA,WAAK,eAAL,CAAqB,cAArB,CAAoC,UAAC,IAAD,EAAqB;AACvD,aAAI,CAAC,eAAL,CAAqB,YAArB,CAAkC,UAAC,SAAD,EAA0B;AAC1D,eAAI,CAAC,sBAAL,CAA4B,mBAA5B,CAAgD;AAC9C,cAAE,EAAE,MAAM,CAAC,GAAP,CAAW,IAAX,CAD0C;AAE9C,kBAAM,EAAE,IAAI,CAAC,EAFiC;AAG9C,sBAAU,EAAE,IAAI,CAAC,UAH6B;AAI9C,qBAAS,EAAE,SAAS,CAAC,EAJyB;AAK9C,sBAAU,EAAE,SAAS,CAAC,YAAV,CAAuB,EALW;AAM9C,gCAAoB,EAAE,sEAAoB,CAAC,MANG;AAO9C;AACA,kBAAM,EAAE,6DAAW,CAAC,OAR0B;AAS9C,mBAAO,EAAE,QAAQ,CAAC,GAT4B;AAU9C,iBAAK,EAAE;AAAE,kBAAI,EAAE,MAAM,CAAC,GAAP,CAAW,MAAX,CAAR;AAA4B,yBAAW,EAAE,MAAM,CAAC,GAAP,CAAW,aAAX;AAAzC;AAVuC,WAAhD,EAWG,UAAC,IAAD,EAAc;AACf,kBAAM,CAAC,GAAP,CAAW,kBAAX,EAA+B,IAAI,CAAC,gBAApC;;AACA,iBAAI,CAAC,mBAAL,CAAyB,sBAAzB,CAAgD;AAC9C,0BAAY,EAAE;AADgC,aAAhD;AAGD,WAhBD;AAiBD,SAlBD;AAmBD,OApBD;AAqBD;AAlEH;AAAA;AAAA,8BAoEsB,IApEtB,EAoEkC,QApElC,EAoE+C;AAAA;;AAC3C,wFAAgB,IAAhB,EAAsB,QAAtB;;AAEA,UAAM,MAAM,GAAG,KAAK,SAAL,CAAe,IAAf,CAAf;AAEA;;;;;;AAKA,UAAI,MAAM,CAAC,GAAP,CAAW,iBAAX,CAAJ,EAAmC;AACjC,aAAK,YAAL,CAAkB,MAAlB,EAA0B,wBAA1B,EAAoD,YAAK;AACvD,gBAAI,CAAC,cAAL,CAAoB,MAApB,EAA4B,QAA5B;AACD,SAFD;AAGD,OAJD,MAIO;AACL,aAAK,cAAL,CAAoB,MAApB,EAA4B,QAA5B;AACD;AACF;AArFH;;AAAA;AAAA,EAAwC,wEAAxC,E;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEM,SAAU,qBAAV,CAAgC,KAAhC,EAA8C,MAA9C,EAAiE;AACrE,UAAQ,MAAR;AACA,SAAK,6DAAW,CAAC,aAAjB;AACE,aAAO;AAAE,mBAAW,EAAE,4DAAW,CAAC,SAA3B;AAAsC,cAAM,EAAE,wDAAO,CAAC,SAAR,CAAkB,eAAhE;AAAiF,YAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAAvF,OAAP;;AACF,SAAK,6DAAW,CAAC,KAAjB;AACE,aAAO;AAAE,mBAAW,EAAE,4DAAW,CAAC,OAA3B;AAAoC,cAAM,EAAE;AAA5C,OAAP;AAJF;AAMD,C;;;;;;;;;;;;ACZD;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAOM,SAAU,cAAV,CAAyB,KAAzB,EAAoE;AAAA,MAChE,QADgE,GACnD,KADmD,CAChE,QADgE;AAGxE,MAAM,kBAAkB,GAAG,oEAAU,CAAqB,yDAAQ,CAAC,WAA9B,CAArC;AAEA,MAAI,MAAM,GAAG,kBAAkB,CAAC,aAAnB,GAAmC,GAAnC,CAAuC,QAAvC,CAAb;AAEA;;;;;AAIA,MAAI,CAAC,MAAM,CAAC,GAAP,CAAW,iBAAX,CAAL,EACE,MAAM,CAAC,GAAP,CAAW,iBAAX,EAA8B,IAA9B;;AAEF,MAAM,UAAU,GAAG,SAAb,UAAa,GAAK;AACtB,UAAM,CAAC,GAAP,CAAW,iBAAX,EAA8B,KAA9B;AACA,SAAK,CAAC,UAAN;AACD,GAHD;;AAKA,MAAM,UAAU,GAAG,SAAb,UAAa,CAAC,IAAD,EAA6B;AAC9C,UAAM,CAAC,GAAP,CAAW,IAAX;AACA,cAAU;AACX,GAHD;;AAKA,SACE,oDAAC,uDAAD,EAAM;AAAC,cAAU,EAAE,UAAb;AAAyB,SAAK,EAAE;AAAhC,GAAN,EACE,oDAAC,kEAAD,EAAiB;AACf,SAAK,EAAE;AAAE,UAAI,EAAE,MAAM,CAAC,GAAP,CAAW,MAAX,CAAR;AAA4B,iBAAW,EAAE,MAAM,CAAC,GAAP,CAAW,aAAX,CAAzC;AAAoE,oBAAc,EAAE;AAApF,KADQ;AAEf,aAAS,EAAE,UAFI;AAGf,iBAAa,EAAE;AAHA,GAAjB,CADF,CADF;AAQD,C;;;;;;;;;;;;AC1CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAOM,SAAU,aAAV,CAAwB,KAAxB,EAAkE;AAAA,MAC9D,EAD8D,GAC3C,KAD2C,CAC9D,EAD8D;AAAA,MAC1D,UAD0D,GAC3C,KAD2C,CAC1D,UAD0D;AAGtE,MAAM,qBAAqB,GAAG,oEAAU,CAAwB,yBAAxB,CAAxC;AACA,MAAM,KAAK,GAAG,wDAAM,CAAC,aAAP,CAA4B,oEAAa,CAAC,KAAd,CAAoB,EAApB,CAA5B,CAAd;AACA,MAAM,QAAQ,GAAG,+DAAW,EAA5B;;AAEA,MAAM,SAAS,GAAG,SAAZ,SAAY,CAAC,IAAD,EAA6B;AAC7C,QAAI,CAAC,EAAL,GAAU,KAAK,CAAC,IAAN,CAAW,EAArB;AACA,QAAM,OAAO,GAAG,oEAAa,CAAC,WAAd,CAA0B,IAA1B,EAAgC,YAAK;AACnD,2BAAqB,CAAC,oBAAtB,CAA2C,IAAI,CAAC,EAAhD,EAAoD,IAAI,CAAC,IAAzD;AACA,gBAAU;AACX,KAHe,CAAhB;AAIA,4DAAM,CAAC,KAAP,CAAa,QAAb,EAAuB,OAAvB;AACD,GAPD;;AASA,MAAI,CAAC,KAAK,CAAC,IAAX,EACE,OAAO,yGAAP;AAEF,SACE,oDAAC,uDAAD,EAAM;AAAC,cAAU,EAAE,UAAb;AAAyB,SAAK,EAAE;AAAhC,GAAN,EACE,oDAAC,kEAAD,EAAiB;AACf,SAAK,EAAE,KAAK,CAAC,IADE;AAEf,aAAS,EAAE,SAFI;AAGf,iBAAa,EAAE;AAHA,GAAjB,CADF,CADF;AAQD,C;;;;;;;;;;;;ACtCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAWA;AACA;AAEA,IAAM,SAAS,GAAG,uBAAlB;;AAEA,IAAM,eAAe,GAAG,SAAlB,eAAkB,CAAC,KAAD;AAAA,SAAiC;AACvD,eAAW,EAAE,IAD0C;AAEvD,UAAM,EAAE,IAF+C;AAGvD,QAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAHiD,GAAjC;AAAA,CAAxB;;AAMA,IAAM,gBAAgB,GAAG,SAAnB,gBAAmB,CAAC,MAAD;AAAA,SAAmC;AAC1D,eAAW,EAAE,IAD6C;AAE1D,UAAM,EAAE,IAFkD;AAG1D,QAAI,EAAE,CAAC,MAAM,CAAC,EAAR;AAHoD,GAAnC;AAAA,CAAzB;;AAUM,SAAU,kBAAV,CAA6B,KAA7B,EAA2D;AAC/D,MAAM,MAAM,GAAG,wDAAM,CAAC,aAAP,CAA6B,gEAAc,CAAC,MAA5C,CAAf;AACA,MAAM,cAAc,GAAG,wDAAM,CAAC,aAAP,CAAsC,oEAAa,CAAC,cAAd,CAA6B,KAAK,CAAC,MAAnC,CAAtC,CAAvB;AAEA,SACE,oDAAC,qEAAmB,CAAC,QAArB,EAA6B;AAAC,SAAK,EAAE;AAAE,sBAAgB,EAAE,kEAAqB;AAAzC;AAAR,GAA7B,EACG,CAAC,CAAC,MAAM,CAAC,IAAT,IACC,oDAAC,8DAAD,EAAa;AACX,WAAO,EAAE,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,QAArC,CADE;AAEX,UAAM,EAAE,IAFG;AAGX,eAAW,EAAE,MAAM,CAAC,IAAP,CAAY;AAHd,GAAb,CAFJ,EAQG,CAAC,CAAC,cAAc,CAAC,IAAjB,IACC,oDAAC,2DAAD,EAAU;AACR,UAAM,EAAE,cAAc,CAAC,IAAf,CAAoB,IADpB;AAER,WAAO,EAAE,cAAc,CAAC,IAAf,CAAoB,UAApB,CAA+B,OAFhC;AAGR,mBAAe,EAAE,eAHT;AAIR,oBAAgB,EAAE;AAJV,GAAV,CATJ,CADF;AAmBD,C;;;;;;;;;;;;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;;AAEA,SAAS,aAAT,GAAsB;AACpB,SACE;AAAK,WAAO,EAAC;AAAb,KACE,+DACE;AAAM,QAAI,EAAC,SAAX;AAAqB,KAAC,EAAC;AAAvB,IADF,EAEE;AAAM,QAAI,EAAC,SAAX;AAAqB,KAAC,EAAC;AAAvB,IAFF,CADF,CADF;AAQD;;AAOK,SAAU,UAAV,CAAqB,KAArB,EAA2C;AAC/C,MAAM,WAAW,GAAG,wDAAM,CAAC,aAAP,CAAkC,8DAAY,CAAC,WAA/C,CAApB;AACA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAzB;AAEA,MAAM,SAAS,GAAG,iDAAiB,kEAAjB,CAAlB;AACA,MAAM,UAAU,GAAG,SAAS,CAAC,cAAV,EAAnB;AAEA,SACE;AAAK,aAAS,8CAAuC,mDAAM,CAAC,GAA9C;AAAd,KAEE;AAAK,aAAS,EAAC;AAAf,KACG,KAAK,CAAC,iBAAN,IACC,oDAAC,8DAAD,EAAa;AACX,WAAO,EAAE,8DAAY,CAAC,MADX;AAEX,aAAS,YAAK,mDAAM,CAAC,SAAZ,eAFE;AAGX,WAAO,EAAE,KAAK,CAAC;AAHJ,GAAb,CAFJ,EAQE;AAAG,aAAS,6CAAsC,mDAAM,CAAC,aAA7C,qBAAZ;AAA0F,QAAI,EAAC;AAA/F,KACE,oDAAC,aAAD,EAAc,IAAd,CADF,CARF,CAFF,EAeG,UAAU,IACT;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,qEAAD,EAAoB;AAClB,aAAS,sBAAe,mDAAM,CAAC,qBAAtB,CADS;AAElB,QAAI,EAAE,+DAFY;AAGlB,WAAO,EAAE;AACP,WAAK,EAAE,kEAAgB,CAAC,GAAjB,CAA4B,QAA5B,EAAsC;AAAE,YAAI,EAAE,uDAAK;AAAb,OAAtC,CADA;AAEP,iBAAW,EAAE;AAFN;AAHS,GAApB,CADF,CAhBJ,EA4BE;AAAK,aAAS,+DAAwD,mDAAM,CAAC,aAA/D;AAAd,KAEI,CAAC,CAAC,IAAF,IAAU,oDAAC,kEAAD,EAAiB;AAAC,kBAAc,EAAE;AAAjB,GAAjB,CAFd,EAIE,oDAAC,qEAAD,EAAoB;AAAC,QAAI,EAAE,wEAAP;AAA+B,aAAS,EAAC;AAAzC,GAApB,CAJF,EAME,oDAAC,6DAAD,EAAY;AAAC,QAAI,EAAE;AAAP,GAAZ,CANF,CA5BF,CADF;AAuCD,C;;;;;;;;;;;ACtED;AACA,kBAAkB,+O;;;;;;;;;;;;ACDlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAEA;AAEA,IAAM,SAAS,GAAG,gBAAlB;AAEA,IAAY,YAAZ;;AAAA,WAAY,YAAZ,EAAwB;AACtB;AACA;AACA;AACD,CAJD,EAAY,YAAY,KAAZ,YAAY,MAAxB;;AAWA,IAAM,WAAW,GAAG,SAAd,WAAc,CAAC,KAAD;AAAA,SAClB,oDAAC,yDAAD,EAAQ;AAAC,aAAS,YAAK,qDAAM,CAAC,aAAZ,kBAAV;AAAoD,WAAO,EAAE,KAAK,CAAC;AAAnE,GAAR,EACE;AAAM,aAAS,YAAK,qDAAM,CAAC,eAAZ;AAAf,IADF,EAEE;AAAM,aAAS,YAAK,qDAAM,CAAC,WAAZ;AAAf,KAA2C,KAAK,CAAC,IAAjD,CAFF,CADkB;AAAA,CAApB;;AAWO,IAAM,WAAW,GAAG,2CAAW,UAAS,KAAT,EAAgC;AACpE,MAAI,KAAK,CAAC,QAAN,KAAmB,YAAY,CAAC,MAApC,EACE,OAAO,yGAAP;AAEF,MAAM,SAAS,GAAG,KAAK,CAAC,QAAN,KAAmB,YAAY,CAAC,SAAlD;AAEA,MAAM,SAAS,GAAG,iEAAe,CAAC,gBAAhB,CAAiC,SAAjC,CAAlB;AAEA;;;;AAGA,SACE;AAAK,aAAS,YAAK,qDAAM,CAAC,OAAZ,cAAuB,SAAS,GAAG,qDAAM,CAAC,gBAAV,GAA6B,EAA7D;AAAd,KACE,oDAAC,kEAAD,EAAW;AAAC,UAAM,EAAC;AAAR,GAAX,EACE,oDAAC,WAAD,EAAY;AAAC,QAAI,EAAE,SAAS,CAAC,MAAD,CAAhB;AAA0B,WAAO,EAAE;AAC7C,iBAAW,EAAE,4DAAW,CAAC,OADoB;AAE7C,YAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFqB;AAAnC,GAAZ,CADF,EAKE,oDAAC,WAAD,EAAY;AACV,QAAI,EAAE,SAAS,CAAC,aAAD,CADL;AAEV,WAAO,EAAE;AAAE,iBAAW,EAAE,4DAAW,CAAC,SAA3B;AAAsC,YAAM,EAAE,wDAAO,CAAC,SAAR,CAAkB;AAAhE;AAFC,GAAZ,CALF,EASE,oDAAC,WAAD,EAAY;AACV,QAAI,EAAE,SAAS,CAAC,WAAD,CADL;AAEV,WAAO,EAAE;AAAE,iBAAW,EAAE,4DAAW,CAAC,OAA3B;AAAoC,YAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAA5D;AAFC,GAAZ,CATF,EAaE,oDAAC,WAAD,EAAY;AAAC,QAAI,EAAE,SAAS,CAAC,WAAD;AAAhB,GAAZ,CAbF,EAcE,oDAAC,WAAD,EAAY;AACV,QAAI,EAAE,SAAS,CAAC,kBAAD,CADL;AAEV,WAAO,EAAE;AAAE,iBAAW,EAAE,4DAAW,CAAC,OAA3B;AAAoC,YAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAA5D;AAFC,GAAZ,CAdF,EAmBG,CAAC,SAAD,IACC,0GACE,+DADF,EAEE,oDAAC,WAAD,EAAY;AAAC,QAAI,EAAE,SAAS,CAAC,cAAD;AAAhB,GAAZ,CAFF,EAGE,oDAAC,WAAD,EAAY;AAAC,QAAI,EAAE,SAAS,CAAC,cAAD;AAAhB,GAAZ,CAHF,CApBJ,CADF,CADF;AA+BD,CA1C0B,CAApB,C;;;;;;;;;;;;;;;;;;;;;;AClCP;AACA,kBAAkB,kN;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDlB;AACA;AACA;AAEA,IAAM,SAAS,GAAG,kBAAlB;AAEM,SAAU,gBAAV,GAA0B;AAAA,wBACJ,+CAAe,CAAC,YAAY,CAAC,OAAb,CAAqB,qBAArB,CAAhB,CADI;AAAA;AAAA,MACtB,IADsB;AAAA,MAChB,OADgB;;AAG9B,MAAM,SAAS,GAAG,SAAZ,SAAY,GAAK;AACrB,gBAAY,CAAC,OAAb,CAAqB,qBAArB,EAA4C,GAA5C;AACA,WAAO,CAAC,KAAD,CAAP;AACD,GAHD;;AAKA,MAAI,CAAC,IAAL,EACE,OAAO,yGAAP;AAEF,SACE,oDAAC,qDAAD,EAAM;AAAC,WAAO,EAAE,MAAV;AAAkB,WAAO,EAAE,SAA3B;AAAsC,eAAW;AAAjD,GAAN,EACE,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAE;AAA/B,GAAL,CADF,EACwD,+DADxD,EAEE,mEAAO,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAE;AAA/B,GAAL,CAAP,CAFF,CADF;AAMD,C;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAiBA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AAGA,IAAM,SAAS,GAAG,kBAAlB,C,CAEA;;AACA,IAAM,gBAAgB,GAAG,SAAnB,gBAAmB;AAAA,SAAwB,CAC/C;AACE,SAAK,EAAE,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADT;AAEE,WAAO,EAAE;AAAE,iBAAW,EAAE,4DAAW,CAAC,OAA3B;AAAoC,YAAM,EAAE;AAA5C,KAFX;AAGE,WAAO,EAAE,8DAAY,CAAC,KAHxB;AAIE,aAAS,EAAE,eAJb;AAKE,UAAM,EAAE;AALV,GAD+C,EAQ/C;AACE,SAAK,EAAE,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,MAArC,CADT;AAEE,WAAO,EAAE;AAAE,iBAAW,EAAE,4DAAW,CAAC,OAA3B;AAAoC,YAAM,EAAE;AAA5C,KAFX;AAGE,WAAO,EAAE,8DAAY,CAAC,IAHxB;AAIE,aAAS,EAAE,eAJb;AAKE,UAAM,EAAE;AALV,GAR+C,CAAxB;AAAA,CAAzB;;AAiBA,SAAS,eAAT,GAAwB;AACtB,SAAO,CACL,6DAAW,CAAC,IADP,EAEL,6DAAW,CAAC,aAFP,EAGL,6DAAW,CAAC,KAHP,CAAP;AAKD;;AAED,SAAS,qBAAT,CAA+B,KAA/B,EAA6C,MAA7C,EAAgE;AAC9D,UAAQ,MAAR;AACA,SAAK,6DAAW,CAAC,IAAjB;AACE,aAAO;AAAE,mBAAW,EAAE,4DAAW,CAAC,OAA3B;AAAoC,cAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,UAA5D;AAAwE,YAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAA9E,OAAP;;AACF,SAAK,6DAAW,CAAC,KAAjB;AACE,aAAO;AAAE,mBAAW,EAAE,4DAAW,CAAC,OAA3B;AAAoC,cAAM,EAAE,OAA5C;AAAqD,YAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAA3D,OAAP;;AACF,SAAK,6DAAW,CAAC,aAAjB;AACE,aAAO;AAAE,mBAAW,EAAE,4DAAW,CAAC,SAA3B;AAAsC,cAAM,EAAE,iBAA9C;AAAiE,YAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAAvE,OAAP;AANF;AAQD;;AAED,IAAM,eAAe,GAAG,SAAlB,eAAkB,CAAC,KAAD;AAAA,SAAiC;AACvD,eAAW,EAAE,IAD0C;AAEvD,UAAM,EAAE,IAF+C;AAGvD,QAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAHiD,GAAjC;AAAA,CAAxB;;AAMA,IAAM,gBAAgB,GAAG,SAAnB,gBAAmB,CAAC,MAAD;AAAA,SAAmC;AAC1D,eAAW,EAAE,IAD6C;AAE1D,UAAM,EAAE,IAFkD;AAG1D,QAAI,EAAE,CAAC,MAAM,CAAC,EAAR;AAHoD,GAAnC;AAAA,CAAzB;;AAUM,SAAU,aAAV,CAAwB,KAAxB,EAAiD;AAErD,MAAM,MAAM,GAAG,wDAAM,CAAC,aAAP,CAA6B,gEAAc,CAAC,MAA5C,CAAf;AACA,MAAM,SAAS,GAAG,wDAAM,CAAC,aAAP,CAA8B,8DAAY,CAAC,SAA3C,CAAlB;AAEA,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAV,IAAkB,oEAAa,CAAC,SAAd,CAAwB,SAAS,CAAC,IAAV,CAAe,EAAvC,EAA2C,KAAK,CAAC,MAAjD,CAA3C;AACA,MAAM,eAAe,GAAG,wDAAM,CAAC,cAAP,CAAuC,gBAAgB,IAAI,gBAAgB,CAAC,GAA5E,CAAxB;AACA,MAAM,SAAS,GAAG,wDAAM,CAAC,WAAP,CAAmB,gBAAnB,CAAlB;AAEA;;;;;AAIA,MAAM,qBAAqB,GAAG,oEAAU,CAAwB,yBAAxB,CAAxC;AAEA;;;;;;;AAMA,MAAM,KAAK,GAAG,kFAAoB,CAAC,YAAK;AACtC,aAAS,IAAI,SAAS,EAAtB;AACD,GAFiC,EAE/B,CAAC,CAAC,CAAC,SAAS,CAAC,IAAb,CAF+B,CAAlC;AAIA;;;;;;AAKA,MAAM,aAAa,GAAG,kDAAkB,UAAC,IAAD,EAAyB;AAC/D,yBAAqB,CAAC,UAAtB,CAAiC,IAAjC;AACD,GAFqB,EAEnB,EAFmB,CAAtB;AAGA,MAAM,gBAAgB,GAAG,kDAAkB,UAAC,IAAD,EAAyB;AAClE,YAAQ,IAAI,CAAC,MAAb;AACA,WAAK,oEAAoB,CAAC,OAA1B;AACE,6BAAqB,CAAC,SAAtB,CAAgC,IAAhC;AACA;;AACF,WAAK,oEAAoB,CAAC,UAA1B;AACE,8DAAI,CAAC,aAAL,CAAmB,OAAnB,CAA2B;AACzB,qBAAW,EAAE,4DAAW,CAAC,OADA;AAEzB,gBAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,UAFC;AAGzB,cAAI,EAAE,CAAC,IAAI,CAAC,OAAN;AAHmB,SAA3B;AAKA;;AACF,WAAK,oEAAoB,CAAC,SAA1B;AACE,6BAAqB,CAAC,UAAtB,CAAiC,IAAjC;AACA;;AACF,cAdA,CAeE;;AAfF;AAiBD,GAlBwB,EAkBtB,EAlBsB,CAAzB;;AAoBA,MAAI,SAAS,CAAC,WAAV,IAAyB,CAAC,SAAS,CAAC,IAAxC,EAA8C;AAC5C,WAAO,yGAAP;AACD;;AAED,MAAI,eAAe,CAAC,WAApB,EACE,SAAS;AAEX,MAAI,CAAC,MAAM,CAAC,IAAR,IAAgB,CAAC,eAAe,CAAC,IAArC,EACE,OAAO,yGAAP;AAEF,SACE,oDAAC,qEAAmB,CAAC,QAArB,EAA6B;AAC3B,SAAK,EAAE;AACL,kBAAY,EAAE,eAAe,EADxB;AAEL,sBAAgB,EAAE;AAFb;AADoB,GAA7B,EAKE,oDAAC,8DAAD,EAAa;AACX,WAAO,EAAE,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,QAArC,CADE;AAEX,UAAM,EAAE,IAFG;AAGX,eAAW,EAAE,MAAM,CAAC,IAAP,CAAY,WAHd;AAIX,WAAO,EAAE,gBAAgB;AAJd,GAAb,CALF,EAWE,iEACE;AAAG,aAAS,EAAC;AAAb,KAAoB,oDAAC,sDAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC;AAA9B,GAAL,CAApB,CADF,EAEE,oDAAC,kEAAD,EAAiB,IAAjB,CAFF,EAGG,KAAK,CAAC,GAAN,CAAU,cAAI;AAAA,WAAI,oDAAC,+DAAD,EAAc;AAC/B,UAAI,EAAE,IADyB;AAE/B,sBAAgB,EAAE,gBAFa;AAG/B,mBAAa,EAAE,aAHgB;AAI/B,SAAG,EAAE,IAAI,CAAC;AAJqB,KAAd,CAAJ;AAAA,GAAd,CAHH,EASE,oDAAC,2DAAD,EAAU;AACR,UAAM,EAAE,eAAe,CAAC,IAAhB,CAAqB,IADrB;AAER,WAAO,EAAE,eAAe,CAAC,IAAhB,CAAqB,UAArB,CAAgC,OAFjC;AAGR,mBAAe,EAAE,eAHT;AAIR,oBAAgB,EAAE;AAJV,GAAV,CATF,CAXF,CADF;AA8BD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClLD;AACA;AAGM,SAAU,oBAAV,CAA+B,QAA/B,EAAqD,YAArD,EAAuF;AAC3F,MAAM,qBAAqB,GAAG,oEAAU,CAAwB,yBAAxB,CAAxC;;AAD2F,wBAGnE,+CAAe,KAAf,CAHmE;AAAA;AAAA,MAGjF,SAHiF;;AAK3F,kDAAgB,YAAK;AACnB,QAAM,UAAU,GAAG,qBAAqB,CAAC,aAAtB,EAAnB;AACA,cAAU,CAAC,GAAX,CAAe,mBAAf;AACA,cAAU,CAAC,EAAX,CAAc,mBAAd,EAAmC,YAAK;AACtC,eAAS,CAAC,WAAC;AAAA,eAAI,CAAC,CAAL;AAAA,OAAF,CAAT;AACD,KAFD;AAGA,cAAU,CAAC,EAAX,CAAc,QAAd,EAAwB,QAAxB;AACA,WAAO;AAAA,aAAM,UAAU,CAAC,GAAX,CAAe,mBAAf,CAAN;AAAA,KAAP;AACD,GARD,EAQG,YARH;AAUA,SAAO,qBAAqB,CAAC,aAAtB,GAAsC,MAAtC,EAAP;AACD,C;;;;;;;;;;;;ACpBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AAMM,SAAU,cAAV,CAAyB,KAAzB,EAA6C;AAAA,0BAC5B,iDAAiB,6DAAjB,CAD4B;AAAA,MACzC,QADyC,qBACzC,QADyC;;AAGjD,MAAM,KAAK,GAAG,wDAAM,CAAC,aAAP,CAA4B,kFAAa,CAAC,cAAd,CAA6B,KAAK,CAAC,SAAnC,CAA5B,CAAd;AACA,MAAM,aAAa,GAAG,wDAAM,CAAC,aAAP,CAAsC,oEAAa,CAAC,cAAd,CAA6B,IAA7B,CAAtC,CAAtB;AAEA,kDAAgB,YAAK;AACnB,QAAI,CAAC,KAAK,CAAC,IAAX,EACE;AAEF,YAAQ,CAAC,KAAK,CAAC,IAAP,CAAR;AACD,GALD,EAKG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAT,CALH;AAOA,MAAI,CAAC,KAAK,CAAC,IAAX,EACE,OAAO,yGAAP;AAEF,SACE,oDAAC,0DAAD,EAAS;AACP,SAAK,EAAE,KAAK,CAAC,IADN;AAEP,iBAAa,EAAE,aAAa,CAAC,IAAd,GAAqB,aAAa,CAAC,IAAd,CAAmB,IAAxC,GAA+C;AAFvD,GAAT,CADF;AAMD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AAMM,SAAU,QAAV,CAAmB,KAAnB,EAAuC;AAAA,0BACtB,iDAAiB,6DAAjB,CADsB;AAAA,MACnC,QADmC,qBACnC,QADmC;;AAG3C,MAAM,KAAK,GAAG,wDAAM,CAAC,aAAP,CAA4B,oEAAa,CAAC,KAAd,CAAoB,KAAK,CAAC,EAA1B,CAA5B,CAAd;AACA,MAAM,aAAa,GAAG,wDAAM,CAAC,aAAP,CAAsC,oEAAa,CAAC,cAAd,CAA6B,IAA7B,CAAtC,CAAtB;AAEA,kDAAgB,YAAK;AACnB,YAAQ,CAAC,KAAK,CAAC,IAAP,CAAR;AACD,GAFD,EAEG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAT,CAFH;AAIA,MAAI,CAAC,KAAK,CAAC,IAAX,EACE,OAAO,yGAAP;AAEF,SACE,oDAAC,0DAAD,EAAS;AACP,SAAK,EAAE,KAAK,CAAC,IADN;AAEP,iBAAa,EAAE,aAAa,CAAC,IAAd,GAAqB,aAAa,CAAC,IAAd,CAAmB,IAAxC,GAA+C,IAFvD;AAGP,eAAW,EAAE,OAAO,CAAC;AAHd,GAAT,CADF;AAOD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCD;AAEA;AACA;AAEA;AACA;AAEA;;;;AAGA,IAAM,SAAS,GAAG,eAAlB;AACA,IAAM,SAAS,GAAG,iEAAe,CAAC,gBAAhB,CAAiC,SAAjC,CAAlB,C,CAEA;;AACA,IAAM,wBAAwB,GAAG,SAA3B,wBAA2B,CAAC,cAAD;AAAA,SAAmD;AAClF,eAAW,EAAE,IADqE;AAElF,UAAM,EAAE,IAF0E;AAGlF,QAAI,EAAE,CAAC,cAAc,CAAC,EAAhB;AAH4E,GAAnD;AAAA,CAAjC;;AAMA,IAAM,eAAe,GAAG,SAAlB,eAAkB,CAAC,KAAD;AAAA,SAAiC;AACvD,eAAW,EAAE,IAD0C;AAEvD,UAAM,EAAE,IAF+C;AAGvD,QAAI,EAAE,CAAC,KAAK,CAAC,EAAP;AAHiD,GAAjC;AAAA,CAAxB;;AAMA,IAAM,gBAAgB,GAAG,SAAnB,gBAAmB,CAAC,MAAD;AAAA,SAAmC;AAC1D,eAAW,EAAE,4DAAW,CAAC,OADiC;AAE1D,UAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB,MAFkC;AAG1D,QAAI,EAAE,CAAC,MAAM,CAAC,EAAR;AAHoD,GAAnC;AAAA,CAAzB;;AAMA,IAAM,gBAAgB,GAAG,SAAnB,gBAAmB;AAAA,SAAwB,CAC/C;AACE,SAAK,EAAE,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,OAArC,CADT;AAEE,WAAO,EAAE;AAAE,iBAAW,EAAE,4DAAW,CAAC,OAA3B;AAAoC,YAAM,EAAE;AAA5C,KAFX;AAGE,WAAO,EAAE,8DAAY,CAAC,KAHxB;AAIE,aAAS,EAAE,oBAJb;AAKE,UAAM,EAAE;AALV,GAD+C,EAQ/C;AACE,SAAK,EAAE,iEAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,QAArC,CADT;AAEE,WAAO,EAAE;AAAE,iBAAW,EAAE,4DAAW,CAAC,OAA3B;AAAoC,YAAM,EAAE;AAA5C,KAFX;AAGE,WAAO,EAAE,8DAAY,CAAC,IAHxB;AAIE,aAAS,EAAE,eAJb;AAKE,UAAM,EAAE;AALV,GAR+C,CAAxB;AAAA,CAAzB;;AAuBM,SAAU,UAAV,CAAqB,KAArB,EAA2C;AAC/C,MAAM,MAAM,GAAG,wDAAM,CAAC,aAAP,CAA6B,gEAAc,CAAC,MAA5C,CAAf;AACA,MAAM,MAAM,GAAG,wDAAM,CAAC,aAAP,CAA6B,qEAAc,CAAC,MAAf,CAAsB,KAAK,CAAC,EAA5B,CAA7B,CAAf;AACA,MAAM,YAAY,GAAG,wDAAM,CAAC,aAAP,CAAsC,qEAAc,CAAC,YAAf,CAA4B,KAAK,CAAC,EAAlC,EAAsC,KAAK,CAAC,MAA5C,CAAtC,CAArB;AAEA,MAAI,WAAW,GAAiB,CAAC,MAAM,CAAC,IAAR,CAAhC;;AACA,MAAI,KAAK,CAAC,gBAAV,EAA4B;AAC1B,QAAM,WAAW,GAAG,wDAAM,CAAC,aAAP,CAAuC,qEAAc,CAAC,WAAf,CAA2B,KAAK,CAAC,gBAAjC,CAAvC,CAApB;;AACA,QAAI,WAAW,CAAC,IAAhB,EAAsB;AACpB,iBAAW,CAAC,OAAZ,kBAAW,qBAAY,WAAW,CAAC,IAAxB,EAAX;AACD;AACF;;AAED,MAAI,CAAC,YAAY,CAAC,IAAd,IAAsB,CAAC,MAAM,CAAC,IAAlC,EACE,OAAO,yGAAP;AAEF,MAAM,OAAO,GAAG,SAAS,CAAC,QAAD,EAAW;AAAE,cAAU,EAAE,MAAM,CAAC,IAAP,CAAY;AAA1B,GAAX,CAAzB;AAEA,SACE,0GACE,oDAAC,8DAAD,EAAa;AACX,WAAO,EAAE,OADE;AAEX,UAAM,EAAE,IAFG;AAGX,eAAW,EAAE,MAAM,CAAC,IAAP,CAAY,WAHd;AAIX,qBAAiB,EAAE;AACjB,iBAAW,EAAE,4DAAW,CAAC,OADR;AAEjB,YAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFP,KAJR;AAQX,kBAAc,EAAC,MARJ,CAQW;AARX;AASX,WAAO,EAAE,gBAAgB;AATd,GAAb,CADF,EAYE,iEACE;AAAK,aAAS,EAAC;AAAf,KACI,KAAK,CAAC,gBAAN,IAA0B,WAAW,CAAC,MAAZ,GAAqB,CAAhD,GACG,oDAAC,oEAAD,EAAmB,IAAnB,CADH,GAEG,oDAAC,6DAAD,EAAY;AACV,eAAW,EAAE,MAAM,CAAC,IADV;AAEV,QAAI,EAAE,gEAAc,CAAC,MAFX;AAGV,kBAAc,EAAE,wBAHN;AAIV,QAAI,EAAE,WAJI;AAKV,YAAQ,EAAE;AACR,WAAK,EAAE,SAAS,CAAC,WAAD,CADR;AAER,aAAO,EAAE;AACP,mBAAW,EAAE,4DAAW,CAAC,OADlB;AAEP,cAAM,EAAE,wDAAO,CAAC,OAAR,CAAgB;AAFjB;AAFD;AALA,GAAZ,CAHN,EAkBG,MAAM,CAAC,IAAP,CAAY,WAAZ,IACC;AAAG,aAAS,EAAC;AAAb,KAAqB,MAAM,CAAC,IAAP,CAAY,WAAjC,CAnBJ,CADF,EAwBG,YAAY,CAAC,IAAb,GACG,CAAC,YAAY,CAAC,UAAd,GACE,oDAAC,2DAAD,EAAU;AACR,UAAM,EAAE,YAAY,CAAC,IAAb,CAAkB,IADlB;AAER,WAAO,EAAE,YAAY,CAAC,IAAb,CAAkB,UAAlB,CAA6B,OAF9B;AAGR,mBAAe,EAAE,eAHT;AAIR,oBAAgB,EAAE;AAJV,GAAV,CADF,GAOE,oDAAC,kEAAD,EAAiB,IAAjB,CARL,GASG,wHAjCN,CAZF,CADF;AAmDD,C;;;;;;;;;;;;;;;;;;;;;;;AC7HD;AAAA;AAAA;;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,kE;;;;;;;;;;;ACAA,kE;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,6E;;;;;;;;;;;ACAA,sD;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,oD;;;;;;;;;;;ACAA,mD;;;;;;;;;;;ACAA,6D;;;;;;;;;;;ACAA,qE;;;;;;;;;;;ACAA,4D;;;;;;;;;;;ACAA,yE;;;;;;;;;;;ACAA,yD","file":"bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@clickview/common\"), require(\"@clickview/dashboard\"), require(\"@clickview/playlists\"), require(\"@clickview/shared\"), require(\"React\"), require(\"reactDropzone\"), require(\"ReactRedux\"), require(\"Backbone\"), require(\"ReactCustomScrollbars\"), require(\"marked\"), require(\"ReactBootstrap\"), require(\"ImmersiveReader\"), require(\"Handlebars\"), require(\"ReactIntersectionObserver\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@clickview/common\", \"@clickview/dashboard\", \"@clickview/playlists\", \"@clickview/shared\", \"React\", \"reactDropzone\", \"ReactRedux\", \"Backbone\", \"ReactCustomScrollbars\", \"marked\", \"ReactBootstrap\", \"ImmersiveReader\", \"Handlebars\", \"ReactIntersectionObserver\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@clickview/lite\"] = factory(require(\"@clickview/common\"), require(\"@clickview/dashboard\"), require(\"@clickview/playlists\"), require(\"@clickview/shared\"), require(\"React\"), require(\"reactDropzone\"), require(\"ReactRedux\"), require(\"Backbone\"), require(\"ReactCustomScrollbars\"), require(\"marked\"), require(\"ReactBootstrap\"), require(\"ImmersiveReader\"), require(\"Handlebars\"), require(\"ReactIntersectionObserver\"));\n\telse\n\t\troot[\"@clickview/lite\"] = factory(root[\"@clickview/common\"], root[\"@clickview/dashboard\"], root[\"@clickview/playlists\"], root[\"@clickview/shared\"], root[\"React\"], root[\"reactDropzone\"], root[\"ReactRedux\"], root[\"Backbone\"], root[\"ReactCustomScrollbars\"], root[\"marked\"], root[\"ReactBootstrap\"], root[\"ImmersiveReader\"], root[\"Handlebars\"], root[\"ReactIntersectionObserver\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__clickview_common__, __WEBPACK_EXTERNAL_MODULE__clickview_dashboard__, __WEBPACK_EXTERNAL_MODULE__clickview_playlists__, __WEBPACK_EXTERNAL_MODULE__clickview_shared__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dropzone__, __WEBPACK_EXTERNAL_MODULE_react_redux__, __WEBPACK_EXTERNAL_MODULE_backbone__, __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__, __WEBPACK_EXTERNAL_MODULE_marked__, __WEBPACK_EXTERNAL_MODULE_react_bootstrap__, __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__, __WEBPACK_EXTERNAL_MODULE_handlebars__, __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","import * as React from 'react';\r\n\r\nimport { Core, HashObject } from '@clickview/common';\r\nimport {\r\n ContentUpdatesView,\r\n ClassificationUpdateView\r\n} from '@clickview/playlists';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\nimport { LiteContentUpdateAppLinks } from 'apps/content-updates/utils';\r\n\r\nclass ContentUpdatesRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'content-updates': 'contentUpdates',\r\n 'content-updates/:id': 'classificationUpdate'\r\n };\r\n }\r\n}\r\n\r\nexport class ContentUpdatesApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Content Updates Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n public static get router(): typeof ContentUpdatesRouter {\r\n return ContentUpdatesRouter;\r\n }\r\n\r\n public contentUpdates(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ContentUpdatesView appLinks={LiteContentUpdateAppLinks} />);\r\n }\r\n\r\n public classificationUpdate(classificationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <ClassificationUpdateView classificationId={classificationId} appLinks={LiteContentUpdateAppLinks} />);\r\n }\r\n}","import { Video, Series, Classification } from '@clickview/shared';\r\nimport { ContentUpdateAppLinks } from '@clickview/playlists';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport const LiteContentUpdateAppLinks: ContentUpdateAppLinks = {\r\n getVideoAppLink: (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n }),\r\n getSeriesAppLink: (series: Series) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n }),\r\n getClassificationUpdateAppLink: (classification: Classification) => ({\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\r\n args: [classification.id]\r\n }),\r\n getClassificationAppLink: (classification: Classification) => ({\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Classifications.CLASSIFICATION,\r\n args: [classification.id]\r\n }),\r\n dashboardAppLink: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n },\r\n contentUpdatesAppLink: {\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CONTENT_UPDATES\r\n }\r\n};","export * from './LiteContentUpdateAppLinks';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core, HashObject } from '@clickview/common';\r\nimport { DashboardWithSearchView } from '@clickview/dashboard';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass DashboardAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'dashboard/:id(/:name/)': 'dashboard',\r\n\r\n '(/)': 'index',\r\n };\r\n }\r\n}\r\n\r\nexport class DashboardApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Dashboard Application';\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n public static get router(): typeof DashboardAppRouter {\r\n return DashboardAppRouter;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get appChannels(): HashObject<string> {\r\n return {\r\n dashboard: AppChannels.DASHBOARD,\r\n subject: AppChannels.SUBJECT\r\n };\r\n }\r\n\r\n public index(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DashboardWithSearchView type='primary' appChannels={this.appChannels} />);\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\nimport { PlayView, MyUploadsView, SeriesView, PlaySharedView, EditVideoView, EditUploadView, FavoriteVideosView } from 'shared/views';\r\nimport { NotFoundError } from 'shared/errors';\r\n\r\nimport { NotFoundView, HomeView, DevErrorView, ErrorView } from 'apps/default/views';\r\nimport { DialogView } from './views/dialog/LiteDialogView';\r\n\r\nclass DefaultAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n '': 'index',\r\n\r\n // These routes should be moved to their own applications eventually\r\n 'videos/:id(/)': 'playVideo',\r\n 'my-uploads(/)': 'myUploads',\r\n 'series/:id(/)': 'series',\r\n 'share/:shortCode(/)': 'playSharedVideo',\r\n 'favourited-videos(/)': 'favoriteVideos',\r\n\r\n '*path' : 'catchAllRoutes',\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [ 'devError', 'dialogError', 'error', 'notFound', 'editVideo', 'editUpload' ];\r\n }\r\n}\r\n\r\nexport class DefaultApplication extends ReactApplication {\r\n public layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Default Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n public static get router(): typeof DefaultAppRouter {\r\n return DefaultAppRouter;\r\n }\r\n\r\n public index(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <HomeView />);\r\n }\r\n\r\n public playVideo(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PlayView id={id} />);\r\n }\r\n\r\n public playSharedVideo(shortCode: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PlaySharedView shortCode={shortCode} />);\r\n }\r\n\r\n public myUploads(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <MyUploadsView cursor={params.cursor} />);\r\n }\r\n\r\n public editVideo(videoId: string): void {\r\n this.layout.showChildView(\r\n LayoutRegions.POPUP, <EditVideoView id={videoId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public editUpload(uploadId: string): void {\r\n this.layout.showChildView(\r\n LayoutRegions.POPUP, <EditUploadView uploadId={uploadId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public series(id: string, params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SeriesView id={id} cursor={params.cursor} />);\r\n }\r\n\r\n public favoriteVideos(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <FavoriteVideosView cursor={params.cursor} />);\r\n }\r\n\r\n public catchAllRoutes(): void {\r\n Core.ErrorHelper.throw(new NotFoundError());\r\n }\r\n\r\n public notFound(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NotFoundView />);\r\n }\r\n\r\n public error(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ErrorView error={error} />);\r\n }\r\n\r\n public dialogError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n if (!error)\r\n return;\r\n\r\n const { dialogOptions } = error;\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DialogView\r\n title={dialogOptions.title}\r\n text={dialogOptions.text}\r\n buttons={dialogOptions.buttons}\r\n onDone={error.onDone}\r\n onFail={error.onFail}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n\r\n public devError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DevErrorView error={error} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\n\r\ninterface DevErrorViewProps {\r\n error: Error;\r\n}\r\n\r\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\r\n if (!error)\r\n return <></>;\r\n\r\n return (\r\n <>\r\n <h1>{error.name}</h1>\r\n <Alert variant='danger'>\r\n <h2>{error.message}</h2>\r\n </Alert>\r\n <Alert variant='warning'>\r\n <h3>Call stack</h3>\r\n <code>{error.stack}</code>\r\n </Alert>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport { FunctionHelper } from '@clickview/common';\r\nimport { DialogOptions, Popup, PopupButton, PopupButtons, PopupViewProps } from '@clickview/shared';\r\n\r\ninterface DialogViewProps extends DialogOptions {\r\n onDone?: () => void;\r\n onFail?: () => void;\r\n}\r\n\r\ntype PropTypes = React.PropsWithChildren<DialogViewProps & PopupViewProps>;\r\n\r\nexport function DialogView(props: PropTypes): React.ReactElement {\r\n const buttons: PopupButton[] = props.buttons.map(b => {\r\n const onClick = () => {\r\n if (b.success)\r\n FunctionHelper.isFunction(props.onDone) && props.onDone();\r\n else\r\n FunctionHelper.isFunction(props.onFail) && props.onFail();\r\n\r\n if (b.close)\r\n props.closePopup();\r\n };\r\n\r\n const popupButton = {\r\n buttonText: b.text,\r\n className: b.className,\r\n onClick,\r\n type: b.type\r\n };\r\n\r\n return popupButton;\r\n });\r\n\r\n return (\r\n <Popup title={props.title} closePopup={props.closePopup}>\r\n <p>{props.text}</p>\r\n <PopupButtons buttons={buttons} />\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { ErrorPageError } from '@clickview/shared';\r\n\r\ninterface ErrorViewProps {\r\n error: ErrorPageError;\r\n}\r\n\r\nexport function ErrorView({ error }: ErrorViewProps): React.ReactElement {\r\n if (!error)\r\n return <></>;\r\n\r\n return (\r\n <div className='bg-white mt-3 p-5 text-center'>\r\n <h1 className='h4 text-muted'>{error.heading}</h1>\r\n <p>{error.description}</p>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { AppLink } from '@clickview/shared';\r\nimport { AppChannels } from 'shared/constants';\r\n\r\n/**\r\n * TODO: This is a temporary view and should be deleted\r\n */\r\nexport function HomeView(): React.ReactElement {\r\n return (\r\n <div style={{ height: '3000px' }}>\r\n <h1>Hello World</h1>\r\n <AppLink appLink={{\r\n application: AppChannels.DEFAULT,\r\n action: 'play:video',\r\n args: ['4665122']\r\n }}>Play page 1</AppLink>\r\n <AppLink appLink={{\r\n application: AppChannels.DEFAULT,\r\n action: 'play:video',\r\n args: ['3713435']\r\n }}>Play page 2</AppLink>\r\n </div>\r\n );\r\n}","export * from './dev-error/LiteDevErrorView';\r\nexport * from './error/LiteErrorView';\r\nexport * from './home/HomeView';\r\nexport * from './not-found/LiteNotFoundView';","import * as React from 'react';\r\n\r\n/**\r\n * TODO: Implement a proper NotFoundView\r\n */\r\nexport function NotFoundView(): React.ReactElement {\r\n return (\r\n <>\r\n <h1>Not Found</h1>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { EmbedLayoutView } from 'shared/layouts';\r\n\r\nimport { EmbedView } from 'apps/embed/views';\r\n\r\nclass EmbedAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'share/embed/:shortcode': 'embedVideo'\r\n };\r\n }\r\n}\r\n\r\nexport class EmbedApplication extends ReactApplication {\r\n public layout: EmbedLayoutView;\r\n\r\n public get name(): string {\r\n return 'Embed Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<Core.LayoutViewOptions> {\r\n return {\r\n name: Layouts.EMBED_LAYOUT\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n public static get router(): typeof EmbedAppRouter {\r\n return EmbedAppRouter;\r\n }\r\n\r\n public embedVideo(shortCode: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EmbedView id={shortCode} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Flight } from '@clickview/common';\r\nimport { Video, Config, ConfigRequests } from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { WebPlayer } from 'shared/components';\r\n\r\nimport styles from './embed.scss';\r\n\r\ninterface EmbedViewProps {\r\n /**\r\n * TODO: Replace id with shortcode. It's just a master id now\r\n * as a placeholder\r\n */\r\n id: string;\r\n}\r\n\r\nexport function EmbedView(props: EmbedViewProps): JSX.Element {\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n\r\n /**\r\n * Our body normally has overflow-y: scroll;\r\n * So we need to override it for the embedded play view\r\n */\r\n React.useEffect(() => {\r\n document.body.classList.add('overflow-hidden');\r\n return () => document.body.classList.remove('overflow-hidden');\r\n }, []);\r\n\r\n\r\n if (!video.data || !config.data)\r\n return <></>;\r\n\r\n return (\r\n <WebPlayer id={video.data.id} webPlayerHost={config.data.webPlayerUrl} className={styles.embeddedPlayer} />\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"embeddedPlayer\":\"cv--embeddedPlayer--3kXb6\"};","export * from './embed/EmbedView';","import * as React from 'react';\r\n\r\nimport { Core, HashObject, ReactApplication, BackboneViewWrapper } from '@clickview/common';\r\nimport { NotificationsView, LayoutRegions } from '@clickview/shared';\r\n\r\nimport { Layouts, AppChannels } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass NotificationsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public get appRoutes(): HashObject {\r\n return {\r\n 'notifications(/)': 'index'\r\n };\r\n }\r\n}\r\n\r\nexport class NotificationsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Notifications Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public static get router(): any {\r\n return NotificationsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public index(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <BackboneViewWrapper view={NotificationsView} options={{ params }} />);\r\n }\r\n}","import { BaseNotificationsAppVariables, NotificationsAppLinks, NotificationType } from '@clickview/shared';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport class NotificationsAppVariables extends BaseNotificationsAppVariables {\r\n public get appLinks(): NotificationsAppLinks {\r\n return {\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO\r\n },\r\n\r\n notifications: {\r\n application: AppChannels.NOTIFICATIONS,\r\n action: Actions.Notifications.HOME\r\n },\r\n\r\n /**\r\n * Below this comment is unimplemented applinks\r\n */\r\n pastReleases: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n },\r\n\r\n awaitingReview: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n },\r\n\r\n editStaffRequest: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }\r\n };\r\n }\r\n\r\n public get notificationTypesWithAppLinks(): Array<NotificationType> {\r\n return [\r\n NotificationType.VideoReviewReminder,\r\n NotificationType.VideoReviewAddedToLibrary,\r\n NotificationType.CustomLibraryVideoAvailable,\r\n NotificationType.WorkspaceVideoAvailable,\r\n NotificationType.ExchangeVideoAvailable\r\n // NotificationType.StaffRequest,\r\n // NotificationType.StaffRequestFulfilled,\r\n // NotificationType.ChapterMergeSuccess\r\n ];\r\n }\r\n\r\n // TODO\r\n public get notificationsEmptyStateUrl(): string {\r\n // return '/images/empty-states/illo-no-notifications@2x.png';\r\n return '';\r\n }\r\n\r\n public get bellIconColor(): 'dark' {\r\n return 'dark';\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, BaseAlert, CommonChannels, HashObject, ReactApplication } from '@clickview/common';\r\nimport { Video, Series, Playlist, AlertList } from '@clickview/shared';\r\n\r\nimport {\r\n PlaylistView,\r\n PlaylistsView,\r\n NewPlaylistView,\r\n EditPlaylistView,\r\n DeletePlaylistView,\r\n AddToPlaylistView,\r\n RemoveVideoFromPlaylistView,\r\n PlaylistSortType,\r\n PlaylistSortHelper\r\n} from '@clickview/playlists';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions, Actions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass PlaylistsAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'playlists(/)': 'index',\r\n 'playlists/:id(/)': 'playlist'\r\n };\r\n }\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newPlaylist',\r\n 'editPlaylist',\r\n 'deletePlaylist',\r\n 'addToPlaylist',\r\n 'removeVideoFromPlaylist'\r\n ];\r\n }\r\n}\r\n\r\nexport class PlaylistsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Playlists Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n public static get router(): typeof PlaylistsAppRouter {\r\n return PlaylistsAppRouter;\r\n }\r\n\r\n public index(params: HashObject): void {\r\n const getPlaylistAppLink = (playlist: Playlist) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: [playlist.id]\r\n });\r\n\r\n const getSortAppLink = (sort: PlaylistSortType): Core.AppLink => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME,\r\n params: {\r\n sort: sort\r\n }\r\n });\r\n\r\n this.setDefaultQueryParams({ sort: params.sort || PlaylistSortType.Newest });\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistsView getPlaylistAppLink={getPlaylistAppLink}\r\n key={params.sort}\r\n getSortAppLink={getSortAppLink}\r\n sort={PlaylistSortHelper.getSortTypeFromName(params.sort)}\r\n />\r\n );\r\n }\r\n\r\n public playlist(id: string): void {\r\n // TODO Replace this\r\n const getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n });\r\n\r\n const getSeriesAppLink = (series: Series) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME\r\n });\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistView\r\n key={id}\r\n playlistId={id}\r\n application={AppChannels.PLAYLISTS}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n allowEdit\r\n />\r\n );\r\n }\r\n\r\n public newPlaylist(): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <NewPlaylistView application={AppChannels.PLAYLISTS} closePopup={() => this.layout.closePopup()} />\r\n );\r\n }\r\n\r\n public editPlaylist(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditPlaylistView key={id} playlistId={id} closePopup={() => this.layout.closePopup()} />\r\n );\r\n }\r\n\r\n public deletePlaylist(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeletePlaylistView\r\n key={id}\r\n playlistId={id}\r\n routeToOnDelete={{\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME\r\n }}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n\r\n public addToPlaylist(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <AddToPlaylistView key={videoId} videoId={videoId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public removeVideoFromPlaylist(videoId: string, playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveVideoFromPlaylistView\r\n key={`${videoId}:${playlistId}`}\r\n videoId={videoId}\r\n playlistId={playlistId}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, HashObject } from '@clickview/common';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nimport { SearchResultsView } from 'apps/search/views';\r\n\r\nclass SearchAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'search(/)': 'index'\r\n };\r\n }\r\n}\r\n\r\nexport class SearchApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Search Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n public static get router(): typeof SearchAppRouter {\r\n return SearchAppRouter;\r\n }\r\n\r\n public index(queryParams?: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SearchResultsView queryParams={queryParams} />);\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactIntersectionObserver from 'react-intersection-observer';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { Text } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { DivButton } from 'shared/components';\r\n\r\nimport { FilterContext, FilterPayloadType } from 'apps/search/reducers';\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterHelper } from 'apps/search/utils';\r\n\r\nconst namespace = 'search.filterActions';\r\n\r\nconst triggerAppLink = (stateChange: FilterPayloadType) => {\r\n const currentQueryParams = Core.LocationUtils.GetQuery();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME,\r\n params: FilterHelper.buildQueryParams(currentQueryParams, stateChange)\r\n });\r\n};\r\n\r\ninterface FilterActionsProps extends FilterPayloadType {\r\n}\r\n\r\nFilterActions.defaultProps = {\r\n active: false\r\n};\r\n\r\nexport function FilterActions(props: FilterActionsProps): JSX.Element {\r\n const { dispatch } = React.useContext(FilterContext);\r\n\r\n const [ triggerOnClose, setTriggerOnClose ] = React.useState(false);\r\n let [ ref, inView ] = ReactIntersectionObserver.useInView();\r\n\r\n React.useEffect(() => {\r\n if (typeof (window as any).IntersectionObserver === 'undefined')\r\n return;\r\n\r\n if (inView) {\r\n setTriggerOnClose(true);\r\n return;\r\n }\r\n\r\n if (!inView && triggerOnClose) {\r\n setTriggerOnClose(false);\r\n applyFilter();\r\n }\r\n }, [inView]);\r\n\r\n function applyFilter(): void {\r\n // The default value should not be set as a query param\r\n const isDefaultValue = props?.selection?.default;\r\n\r\n const payload: FilterPayloadType = {\r\n filter: props.filter,\r\n active: props.active && !isDefaultValue,\r\n selection: (props.selection && !isDefaultValue) ? props.selection : null\r\n };\r\n\r\n dispatch({ type: 'apply', payload });\r\n triggerAppLink(payload);\r\n }\r\n\r\n function onClickReset(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n const payload: FilterPayloadType = {\r\n filter: props.filter,\r\n active: false,\r\n selection: null\r\n };\r\n\r\n dispatch({ type: 'reset', payload });\r\n triggerAppLink(payload);\r\n }\r\n\r\n function onClickApply(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n applyFilter();\r\n }\r\n\r\n return (\r\n <div ref={ref} className='d-flex justify-content-between'>\r\n <DivButton className='text-muted hover-text-underline cursor-pointer' onClick={onClickReset}>\r\n <Text namespace={namespace} phrase='reset' />\r\n </DivButton>\r\n\r\n <DivButton className='info-link' onClick={onClickApply}>\r\n <Text namespace={namespace} phrase='apply' />\r\n </DivButton>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { SearchFilter, MoreFilters } from 'apps/search/interfaces';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nimport styles from './filter-button.scss';\r\n\r\ninterface FilterButtonProps {\r\n filter: SearchFilter | MoreFilters;\r\n}\r\n\r\nexport function FilterButton(props: FilterButtonProps): JSX.Element {\r\n const FilterComponent = FilterHelper.mapTypeToComponent(props.filter.type);\r\n\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.name];\r\n\r\n return (\r\n <Dropdown>\r\n <Dropdown.Toggle\r\n id={props.filter.name}\r\n className={`${styles.filterButton} btn mx-1 ${filterState.active ? 'btn-info' : 'btn-light'}`}\r\n >\r\n {props.filter.label}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu onClick={(e: React.MouseEvent) => e.stopPropagation()}>\r\n <div className={`${styles.filterItem} mx-1 px-2 py-1`}>\r\n <FilterComponent filter={props.filter} />\r\n </div>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterButton\":\"cv--filterButton--2LJ1G\",\"filterItem\":\"cv--filterItem--13K5j\"};","import * as React from 'react';\r\n\r\ninterface CheckboxFilterProps {}\r\n\r\nexport function CheckboxFilter(props: CheckboxFilterProps): JSX.Element {\r\n return (\r\n <></>\r\n );\r\n}","export * from './checkbox-filter/CheckboxFilter';\r\nexport * from './more-filters/MoreFilters';\r\nexport * from './radio-filter/RadioFilter';\r\nexport * from './switch-filter/SwitchFilter';","import * as React from 'react';\r\n\r\ninterface MoreFiltersProps {}\r\n\r\nexport function MoreFilters(props: MoreFiltersProps): JSX.Element {\r\n return (\r\n <></>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from 'apps/search/components';\r\n\r\nimport styles from './radio-filter.scss';\r\n\r\ninterface RadioFilterProps {\r\n filter: SearchFilter;\r\n}\r\n\r\nexport function RadioFilter(props: RadioFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n\r\n const filterState = state[props.filter.name];\r\n\r\n const initialState = filterState.selection\r\n ? filterState.selection\r\n : props.filter.options.find(o => o.default);\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(initialState);\r\n\r\n const onChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\r\n const option = props.filter.options.find(o => {\r\n return o.name === (e.target as HTMLInputElement).name;\r\n });\r\n\r\n setCurrentSelection(option);\r\n };\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.label}</h3>\r\n\r\n <Form className='mb-3'>\r\n {props.filter.options.map(option => {\r\n const isSelected = currentSelection && option.name === currentSelection.name;\r\n\r\n return (\r\n <Form.Check\r\n key={option.name}\r\n custom\r\n type='radio'\r\n label={option.label}\r\n name={option.name}\r\n id={option.name}\r\n value={option.name}\r\n onChange={onChange}\r\n checked={isSelected}\r\n className={styles.radioFilter}\r\n />\r\n );\r\n })}\r\n </Form>\r\n\r\n <FilterActions active={!!currentSelection} filter={props.filter} selection={currentSelection} />\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radioFilter\":\"cv--radioFilter--3srm_\"};","import * as React from 'react';\r\n\r\nimport { FilterProps } from 'apps/search/interfaces';\r\nimport { FilterActions } from 'apps/search/components';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { DivButton } from 'shared/components';\r\n\r\nexport function SwitchFilter(props: FilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.name];\r\n\r\n const [ active, setActive ] = React.useState<boolean>(filterState.active);\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.label}</h3>\r\n <p className='d-inline-block w-75 mr-auto'>{props.filter.description}</p>\r\n\r\n <DivButton\r\n onClick={() => setActive(!active)}\r\n className={`d-inline-block float-right align-top custom-toggle toggle-option ${active ? 'on' : ''}`}\r\n >\r\n <span className='handle' />\r\n </DivButton>\r\n\r\n <FilterActions active={active} filter={props.filter} />\r\n </>\r\n );\r\n}","export * from './search-filters/SearchFilters';\r\nexport * from './search-filters/PartialSearchFilters';\r\nexport * from './filter-button/FilterButton';\r\nexport * from './filter-actions/FilterActions';\r\nexport * from './reset-button/ResetButton';\r\nexport * from './filter-types';","import * as React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { Text } from '@clickview/shared';\r\n\r\nimport { DivButton } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterHelper } from 'apps/search/utils';\r\n\r\ninterface ResetButtonProps {\r\n currentQueryParam: string;\r\n}\r\n\r\nexport function ResetButton(props: ResetButtonProps): JSX.Element {\r\n const { dispatch } = React.useContext(FilterContext);\r\n\r\n const onClickReset = () => {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME,\r\n params: { query: props.currentQueryParam }\r\n });\r\n\r\n const initialState = FilterHelper.deriveInitialStateFromQuery();\r\n dispatch({\r\n type: 'bulk-reset',\r\n payload: initialState\r\n });\r\n };\r\n\r\n return (\r\n <DivButton\r\n onClick={onClickReset}\r\n className='hover-text-underline cursor-pointer d-flex align-items-center ml-2'\r\n >\r\n <Text namespace='search.resetButton' phrase='reset' />\r\n </DivButton>\r\n );\r\n}","import * as React from 'react';\r\nimport styles from './search-filters.scss';\r\n\r\nexport function PartialSearchFilters(): JSX.Element {\r\n return (\r\n <div className='mt-3 d-flex'>\r\n <div className={`\r\n ${styles.partialFilterHeading}\r\n partial-loading-background\r\n d-inline-block\r\n pr-2\r\n border-right\r\n d-flex\r\n align-items-center\r\n my-auto\r\n `} />\r\n\r\n <div className='d-flex pl-1'>\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n <div className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { HashObject } from '@clickview/common';\r\nimport { LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nimport { FilterButton, ResetButton } from 'apps/search/components';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterReducer, FilterContext } from 'apps/search/reducers';\r\n\r\ninterface SearchFiltersProps {\r\n queryParams: HashObject;\r\n}\r\n\r\nexport function SearchFilters({ queryParams }: SearchFiltersProps): JSX.Element {\r\n const mainFilters = FilterHelper.getMainFilters();\r\n const moreFilters = FilterHelper.getMoreFilters();\r\n\r\n const initialState = React.useMemo(() => {\r\n return FilterHelper.deriveInitialStateFromQuery(queryParams, mainFilters, moreFilters);\r\n }, [queryParams.toString()]);\r\n\r\n const [ state, dispatch ] = React.useReducer(FilterReducer, initialState);\r\n\r\n return (\r\n <FilterContext.Provider value={{ state, dispatch }}>\r\n <LanguageNamespaceContext.Provider value='search.searchFilters'>\r\n <section className='mt-3 d-flex'>\r\n <h2 className='h5 mb-0 d-inline-block pr-2 border-right d-flex align-items-center'><Text phrase='heading' /></h2>\r\n\r\n <div className='d-flex pl-1'>\r\n {mainFilters.map(f => <FilterButton key={f.name} filter={f} />)}\r\n\r\n <FilterButton key={moreFilters.name} filter={moreFilters} />\r\n\r\n {FilterHelper.hasActiveFilters(queryParams) &&\r\n <ResetButton currentQueryParam={queryParams.query} />\r\n }\r\n </div>\r\n </section>\r\n </LanguageNamespaceContext.Provider>\r\n </FilterContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialFilterHeading\":\"cv--partialFilterHeading--2zHGT\",\"partialButton\":\"cv--partialButton--3Gy7Y\"};","import { BaseSearchAppVariables, SearchAppLinks } from '@clickview/shared';\r\nimport { Actions as DashboardActions } from '@clickview/dashboard';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport class SearchAppVariables extends BaseSearchAppVariables {\r\n public get appLinks(): SearchAppLinks {\r\n /**\r\n * These will eventually be swapped out for their actual applinks\r\n */\r\n return {\r\n searchResults: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n series: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES\r\n },\r\n\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: 'play:page' // TODO: Change to a constant\r\n },\r\n\r\n tagSearch: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n topic: {\r\n application: AppChannels.SUBJECT,\r\n action: DashboardActions.Classifications.CLASSIFICATION\r\n }\r\n };\r\n }\r\n}","import { Flight } from '@clickview/common';\r\n\r\nconst endpoints = {\r\n search: (query: string) => `api/search?query=${query}` // This is currently mocked in HomeController\r\n};\r\n\r\nexport const SearchRequests = {\r\n search(query: string): Flight.Request {\r\n return {\r\n url: endpoints.search(query),\r\n key: `search:${query}`,\r\n normalize: false,\r\n formatData: (jsonData: any) => {\r\n const data = JSON.parse(jsonData); // won't need to do this i think when we stop using mock data\r\n\r\n return {\r\n subjects: data.subjects || [],\r\n videos: data.videos || [],\r\n playlists: data.playlists || [],\r\n series: data.series || []\r\n };\r\n }\r\n };\r\n }\r\n};","export * from './SearchRequests';","import { createContext } from 'react';\r\n\r\nimport { ReducerActions } from '@clickview/common';\r\nimport { SearchFilter, FilterNames, FilterOption } from 'apps/search/interfaces';\r\n\r\nexport type FilterState = {\r\n [key in FilterNames]: {\r\n active: boolean;\r\n selection?: FilterOption;\r\n }\r\n};\r\n\r\nexport type FilterActionType = 'apply' | 'reset' | 'bulk-reset';\r\n\r\nexport interface FilterPayloadType {\r\n filter: SearchFilter;\r\n active: boolean;\r\n selection?: FilterOption;\r\n}\r\n\r\n/**\r\n * Context\r\n */\r\ninterface FilterContextType {\r\n state: FilterState;\r\n dispatch: React.Dispatch<ReducerActions<FilterActionType>>;\r\n}\r\n\r\nexport const FilterContext = createContext<FilterContextType>(null);\r\n\r\n/**\r\n * Reducer - root level keys should match the filter object's corresponding \"name\" field\r\n */\r\nexport function FilterReducer(\r\n state: FilterState,\r\n action: ReducerActions<FilterActionType, FilterPayloadType>\r\n): FilterState {\r\n switch (action.type) {\r\n case 'apply':\r\n return {\r\n ...state,\r\n [action.payload.filter.name]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'reset':\r\n return {\r\n ...state,\r\n [action.payload.filter.name]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'bulk-reset':\r\n return {\r\n ...state,\r\n ...action.payload\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}","export * from './FilterReducer';","import * as React from 'react';\r\n\r\nimport { LanguageService, HashObject } from '@clickview/common';\r\n\r\nimport { SearchFilter, MoreFilters, FilterType, FilterProps, FilterOption } from 'apps/search/interfaces';\r\nimport { FilterState, FilterPayloadType } from 'apps/search/reducers';\r\nimport { SwitchFilter, RadioFilter, MoreFilters as MoreFiltersComponent, CheckboxFilter } from 'apps/search/components/filter-types';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('search.utils');\r\n\r\nexport const FilterHelper = {\r\n getMainFilters(): SearchFilter[] {\r\n return [\r\n {\r\n name: 'yearLevels', // \"name\" should match the state keys in `FilterReducer`\r\n label: getPhrase('yearLevels'),\r\n type: 'checkbox',\r\n options: [] // load async?\r\n },\r\n {\r\n name: 'type',\r\n label: getPhrase('types'),\r\n type: 'radio',\r\n options: FilterHelper.getTypeOptions()\r\n },\r\n {\r\n name: 'ratings',\r\n label: getPhrase('ratings'),\r\n type: 'rating' // TODO: change this\r\n },\r\n {\r\n name: 'interactives',\r\n label: getPhrase('interactives'),\r\n type: 'switch',\r\n description: getPhrase('interactivesDescription')\r\n },\r\n {\r\n name: 'clips',\r\n label: getPhrase('clips'),\r\n type: 'switch',\r\n description: getPhrase('clipsDescription')\r\n }\r\n ];\r\n },\r\n\r\n getMoreFilters(): MoreFilters {\r\n return {\r\n name: 'moreFilters',\r\n label: getPhrase('moreFilters'),\r\n type: 'more-filters',\r\n filters: []\r\n };\r\n },\r\n\r\n mapTypeToComponent(type: FilterType): (props: FilterProps) => JSX.Element {\r\n switch (type) {\r\n case 'switch':\r\n return (props: any) => <SwitchFilter key={props.name} {...props} />;\r\n case 'checkbox':\r\n return (props: any) => <CheckboxFilter key={props.name} {...props} />;\r\n case 'radio':\r\n return (props: any) => <RadioFilter key={props.name} {...props} />;\r\n case 'rating':\r\n return (props: any) => <SwitchFilter key={props.name} {...props} />;\r\n case 'more-filters':\r\n return (props: any) => <MoreFiltersComponent key={props.name} {...props} />;\r\n }\r\n },\r\n\r\n deriveInitialStateFromQuery(\r\n queryParams: HashObject = {},\r\n mainFilters: SearchFilter[] = null,\r\n moreFilters: MoreFilters = null\r\n ): FilterState {\r\n return {\r\n yearLevels: {\r\n active: !!queryParams.yearLevels,\r\n selection: queryParams.yearLevels || null\r\n },\r\n type: {\r\n active: !!queryParams.type,\r\n selection: queryParams.type\r\n ? mainFilters\r\n .find(f => f.name === 'type')\r\n .options.find(o => o.name === queryParams.type)\r\n : null\r\n },\r\n ratings: {\r\n active: !!queryParams.ratings,\r\n selection: queryParams.ratings || null\r\n },\r\n interactives: {\r\n active: queryParams.interactives\r\n },\r\n clips: {\r\n active: queryParams.clips\r\n },\r\n moreFilters: {\r\n active: false // TODO: figure this shit out\r\n }\r\n };\r\n },\r\n\r\n buildQueryParams(queryParams: HashObject, state: FilterPayloadType): HashObject {\r\n const { name: param, type } = state.filter;\r\n\r\n const updatedParams = { ...queryParams };\r\n\r\n switch (type) {\r\n case 'switch':\r\n updatedParams[param] = state.active ? 'true' : '';\r\n break;\r\n\r\n case 'radio':\r\n updatedParams[param] = FilterHelper.getRadioParamValue(state.selection);\r\n break;\r\n }\r\n\r\n if (!updatedParams[param]) // If the param is empty, delete it\r\n delete updatedParams[param];\r\n\r\n return updatedParams;\r\n },\r\n\r\n hasActiveFilters(queryParams: HashObject): boolean {\r\n return Object.keys(queryParams).length > 1;\r\n },\r\n\r\n getTypeOptions(): FilterOption[] {\r\n return [\r\n {\r\n name: 'allTypes',\r\n label: getPhrase('allTypes'),\r\n default: true\r\n },\r\n {\r\n name: 'topics',\r\n label: getPhrase('topics')\r\n },\r\n {\r\n name: 'playlists',\r\n label: getPhrase('playlists')\r\n },\r\n {\r\n name: 'series',\r\n label: getPhrase('series')\r\n },\r\n {\r\n name: 'videos',\r\n label: getPhrase('videos')\r\n }\r\n ];\r\n },\r\n\r\n getRadioParamValue(selection: FilterOption): string {\r\n if (!selection || selection.default)\r\n return '';\r\n\r\n return selection.name;\r\n }\r\n};","import * as React from 'react';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ArrayHelper, Core, LanguageService } from '@clickview/common';\r\nimport { Video, Series, Playlist, VideoList, PresentationAudience } from '@clickview/shared';\r\nimport { FixedWidget, PlaylistWidgetItem, SeriesWidgetItem, WidgetContents } from '@clickview/dashboard';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { SearchResults, MainSearchResults, OtherSearchResultSet, OtherSearchResults } from 'apps/search/interfaces';\r\n\r\nconst Capacities = {\r\n MainResults: {\r\n SUBJECTS: 10,\r\n PLAYLISTS: 5,\r\n SERIES: 4\r\n },\r\n\r\n OtherResults: {\r\n VIDEOS: 6,\r\n PLAYLISTS: 10,\r\n SERIES: 10\r\n }\r\n};\r\n\r\nexport const SearchHelper = {\r\n /**\r\n * These are the results that appear at the very top of the page\r\n */\r\n filterMainResults(results: SearchResults): MainSearchResults {\r\n const { MainResults } = Capacities;\r\n\r\n const subjects = ArrayHelper.firstFew(results.subjects, MainResults.SUBJECTS);\r\n const firstVideo = ArrayHelper.first(results.videos);\r\n const playlists = ArrayHelper.firstFew(results.playlists, MainResults.PLAYLISTS);\r\n const series = ArrayHelper.firstFew(results.series, MainResults.SERIES);\r\n\r\n return {\r\n subjects,\r\n firstVideo,\r\n playlists,\r\n series,\r\n otherResults: { // All excess results are displayed in a different format defined below\r\n videos: ArrayHelper.lastFew(results.videos, results.videos.length - 1),\r\n playlists: ArrayHelper.lastFew(results.playlists, results.playlists.length - MainResults.PLAYLISTS),\r\n series: ArrayHelper.lastFew(results.series, results.series.length - MainResults.SERIES)\r\n }\r\n };\r\n },\r\n\r\n structureOtherResults(results: OtherSearchResults): OtherSearchResultSet[] {\r\n const { OtherResults } = Capacities;\r\n\r\n const videoSets = ArrayHelper.chunk<Video>(results.videos, OtherResults.VIDEOS);\r\n const playlistSets = ArrayHelper.chunk<Playlist>(results.playlists, OtherResults.PLAYLISTS);\r\n const seriesSets = ArrayHelper.chunk<Series>(results.series, OtherResults.SERIES);\r\n\r\n return SearchHelper.buildResultStructure(videoSets, playlistSets, seriesSets);\r\n },\r\n\r\n // For every 6 videos, there should be either a row of playlists or a row of series (alternating)\r\n buildResultStructure(\r\n videoSets: Video[][],\r\n playlistSets: Playlist[][],\r\n seriesSets: Series[][]\r\n ): OtherSearchResultSet[] {\r\n const structure: OtherSearchResultSet[] = [];\r\n\r\n // Clone each set as we need to use a mutable structure, but don't want to mutate the inputs directly\r\n const videosClone = [...videoSets];\r\n const playlistsClone = [...playlistSets];\r\n const seriesClone = [...seriesSets];\r\n\r\n // We set the iterations here instead of in the for-loop args because `videoSets` gets mutated\r\n const iterations = videoSets.length;\r\n for (let index = 0; index < iterations; index++) {\r\n const nextVideoSet = videosClone.shift();\r\n\r\n // After every video set will come a set of playlists or series\r\n const seriesOrPlaylistSet = SearchHelper.getSeriesOrPlaylistSet(playlistsClone, seriesClone, index);\r\n\r\n nextVideoSet && structure.push({ type: 'video', data: nextVideoSet });\r\n seriesOrPlaylistSet && structure.push(seriesOrPlaylistSet);\r\n }\r\n\r\n // In edge cases where there may be more playlists or series result sets than video sets, add them to the end\r\n if (playlistsClone.length) {\r\n playlistsClone.forEach(data => structure.push({ type: 'playlist', data }));\r\n }\r\n\r\n if (seriesClone.length) {\r\n seriesClone.forEach(data => structure.push({ type: 'series', data }));\r\n }\r\n\r\n // Remove any empty sets\r\n return structure.filter(set => set.data && !!set.data.length);\r\n },\r\n\r\n /**\r\n * Determines whether or not a playlist or series set should be added to the results structure next.\r\n */\r\n getSeriesOrPlaylistSet(playlists: Playlist[][], series: Series[][], videoSetIndex: number): OtherSearchResultSet {\r\n const isOdd = videoSetIndex % 2 === 0; // If odd, add a series set. If even, add a playlist set.\r\n\r\n if ((isOdd && series.length) || !playlists.length)\r\n return { type: 'series', data: series.shift() };\r\n\r\n if ((!isOdd && playlists.length) || !series.length)\r\n return { type: 'playlist', data: playlists.shift() };\r\n\r\n // We will only reach this point once we have run out of series and playlist results\r\n return null;\r\n },\r\n\r\n getResultSetComponent(set: OtherSearchResultSet, audiences: PresentationAudience[]): JSX.Element {\r\n switch (set.type) {\r\n case 'video':\r\n return (\r\n <div className='pb-3'>\r\n <VideoList\r\n videos={set.data as Video[]}\r\n getVideoAppLink={SearchHelper.getVideoAppLink}\r\n getSeriesAppLink={SearchHelper.getSeriesAppLink}\r\n />\r\n </div>\r\n );\r\n\r\n case 'playlist':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedPlaylists')}\r\n collection={set.data as Playlist[]}\r\n childAppLink={SearchHelper.getPlaylistAppLink()}\r\n childComponent={(childProps: any) => (\r\n <PlaylistWidgetItem\r\n {...childProps}\r\n presentationAudiences={audiences}\r\n />\r\n )}\r\n contents={WidgetContents.Playlists}\r\n />\r\n </div>\r\n );\r\n\r\n case 'series':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedSeries')}\r\n collection={set.data}\r\n childAppLink={SearchHelper.getSeriesAppLink()}\r\n childComponent={(childProps: any) => (\r\n <SeriesWidgetItem\r\n {...childProps}\r\n audiences={audiences}\r\n />\r\n )}\r\n contents={WidgetContents.Series}\r\n />\r\n </div>\r\n );\r\n }\r\n },\r\n\r\n getVideoAppLink(video: Video): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: 'play:video', // TODO: Change to constant\r\n args: [video.id]\r\n };\r\n },\r\n\r\n getSeriesAppLink(series?: Series): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: series ? [series.id] : []\r\n };\r\n },\r\n\r\n getPlaylistAppLink(playlist?: Playlist): Core.AppLink {\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: playlist ? [playlist.id] : []\r\n };\r\n },\r\n};","export * from './FilterHelper';\r\nexport * from './SearchHelper';","export * from './search-results/SearchResultsView';","import * as React from 'react';\r\n\r\nimport { PartialPlaylistList, PartialVideoList } from '@clickview/shared';\r\nimport { PartialSeriesList } from '@clickview/dashboard';\r\n\r\nimport { PartialSearchFilters } from 'apps/search/components';\r\n\r\nimport styles from './search-results.scss';\r\n\r\nexport function PartialSearchResultsView(): JSX.Element {\r\n return (\r\n <>\r\n <div className={`${styles.partialHeading} partial-loading-background`} />\r\n\r\n <PartialSearchFilters />\r\n\r\n <div role='separator' className='border-bottom my-2' />\r\n\r\n {/* <PartialVideoItem /> */}\r\n\r\n <PartialPlaylistList />\r\n\r\n <PartialSeriesList />\r\n\r\n <PartialVideoList />\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { HashObject, Flight, Core } from '@clickview/common';\r\nimport { Text, VideoItem, PresentationAudience, LanguageNamespaceContext, VideoActionsContext } from '@clickview/shared';\r\nimport { DynamicWidget, Actions as DashboardActions, SubjectWidgetItem } from '@clickview/dashboard';\r\n\r\nimport { SearchFilters } from 'apps/search/components';\r\nimport { SearchRequests } from 'apps/search/flight-requests';\r\nimport { SearchHelper } from 'apps/search/utils';\r\nimport { SearchResults } from 'apps/search/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants';\r\nimport { AudienceRequests } from 'shared/flight-requests';\r\nimport { getVideoActionAppLink } from 'shared/utils';\r\n\r\nimport { PartialSearchResultsView } from './PartialSearchResultsView';\r\n\r\nconst namespace = 'search.searchResults';\r\n\r\nconst classificationAppLink: Core.AppLink = {\r\n application: AppChannels.SUBJECT,\r\n action: DashboardActions.Classifications.CLASSIFICATION\r\n};\r\n\r\ninterface SearchResultsViewProps {\r\n queryParams: HashObject;\r\n}\r\n\r\nexport function SearchResultsView({ queryParams }: SearchResultsViewProps): JSX.Element {\r\n const results = Flight.useBasicFetch<SearchResults>(SearchRequests.search(queryParams.query));\r\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(AudienceRequests.presentationAudiences());\r\n\r\n if (!results.data || !audiences.data)\r\n return <PartialSearchResultsView />;\r\n\r\n const mainResults = SearchHelper.filterMainResults({ ...results.data });\r\n const otherResults = SearchHelper.structureOtherResults({ ...mainResults.otherResults });\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <h1 className='h2'><Text phrase='heading' /></h1>\r\n\r\n <SearchFilters queryParams={queryParams} />\r\n\r\n <hr />\r\n\r\n <section>\r\n <VideoActionsContext.Provider value={{ getActionAppLink: getVideoActionAppLink }}>\r\n {!!mainResults.subjects.length &&\r\n <DynamicWidget\r\n collection={mainResults.subjects}\r\n childAppLink={classificationAppLink}\r\n childComponent={SubjectWidgetItem}\r\n headingPhraseKey='topics'\r\n />\r\n }\r\n\r\n {!!mainResults.firstVideo &&\r\n <div className='pb-2'>\r\n <VideoItem\r\n video={mainResults.firstVideo}\r\n getVideoAppLink={SearchHelper.getVideoAppLink}\r\n getSeriesAppLink={SearchHelper.getSeriesAppLink}\r\n />\r\n </div>\r\n }\r\n\r\n {!!mainResults.playlists.length &&\r\n SearchHelper.getResultSetComponent({\r\n type: 'playlist',\r\n data: mainResults.playlists\r\n }, audiences.data)\r\n }\r\n\r\n {!!mainResults.series.length &&\r\n SearchHelper.getResultSetComponent({\r\n type: 'series',\r\n data: mainResults.series\r\n }, audiences.data)\r\n }\r\n\r\n {otherResults.map((resultSet, i) =>\r\n <React.Fragment key={i}>\r\n {SearchHelper.getResultSetComponent(resultSet, audiences.data)}\r\n </React.Fragment>\r\n )}\r\n </VideoActionsContext.Provider>\r\n </section>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialHeading\":\"cv--partialHeading--1c2gx\"};","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\nimport { LayoutRegions, Video, Series } from '@clickview/shared';\r\nimport { ClassificationView, PreferencesView } from '@clickview/dashboard';\r\nimport { PlaylistView } from '@clickview/playlists';\r\n\r\nimport { AppChannels, Layouts, Actions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass SubjectAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'subjects/preferences?step=subjects': 'preferences',\r\n 'subjects/:id/playlists/:playlistId(/)': 'playlist',\r\n 'subjects/:id(/)': 'classification',\r\n 'series/:id': 'series'\r\n };\r\n }\r\n}\r\n\r\nexport class SubjectApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Subject Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SubjectAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get appChannels(): HashObject<string> {\r\n return {\r\n dashboard: AppChannels.DASHBOARD,\r\n subject: AppChannels.SUBJECT\r\n };\r\n }\r\n\r\n public classification(classificationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <ClassificationView\r\n key={classificationId}\r\n id={classificationId}\r\n appChannels={this.appChannels}\r\n />);\r\n }\r\n\r\n public playlist(id: string, playlistId: string): void {\r\n const getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n });\r\n\r\n const getSeriesAppLink = (series: Series) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n });\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistView\r\n playlistId={playlistId}\r\n application={AppChannels.PLAYLISTS}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n allowEdit\r\n />\r\n );\r\n }\r\n\r\n public preferences({ step = 'subjects' }: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PreferencesView\r\n application={AppChannels.SUBJECT}\r\n step={step}\r\n />\r\n );\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {}\r\n}","import './apps/search/components/filter-actions/filter-actions.lang.json'; import './apps/search/components/reset-button/reset-button.lang.json'; import './apps/search/components/search-filters/search-filters.lang.json'; import './apps/search/utils/search-utils.lang.json'; import './apps/search/views/search-results/search-results.lang.json'; import './shared/components/clips/clips.lang.json'; import './shared/components/immersive-reader/immersive-reader.lang.json'; import './shared/components/interactives/interactives.lang.json'; import './shared/components/play-page/play-page.lang.json'; import './shared/components/synopsis/synopsis.lang.json'; import './shared/components/upload-file-select/upload-file-select.lang.json'; import './shared/components/uploading-item/uploading-item.lang.json'; import './shared/components/user-options/user-options.lang.json'; import './shared/components/video-details/video-details.lang.json'; import './shared/errors/not-found/not-found.lang.json'; import './shared/layouts/teacher-layout/drag-mask/drag-mask.lang.json'; import './shared/services/video-upload-services.lang.json'; import './shared/views/favorite-videos/favorite-videos-view.lang.json'; import './shared/views/left-nav/left-nav-view.lang.json'; import './shared/views/my-uploads/my-uploads-view.lang.json'; import './shared/views/series/series-view.lang.json';\r\n\r\nimport './styles';\r\n\r\n/**\r\n * Files that are needed by outside projects. E.g. applications, services.\r\n */\r\nexport * from './shared/constants';\r\nexport * from './shared/errors';\r\nexport * from './shared/layouts';\r\nexport * from './shared/services';\r\n\r\nexport * from './apps/default/LiteDefaultApplication';\r\n\r\nexport * from './apps/playlists/LitePlaylistsApplication';\r\nexport * from './apps/embed/LiteEmbedApplication';\r\nexport * from './apps/dashboard/LiteDashboardApplication';\r\nexport * from './apps/subjects/LiteSubjectApplication';\r\nexport * from './apps/search/LiteSearchApplication';\r\nexport * from './apps/content-updates/LiteContentUpdatesApplication';\r\n\r\nexport * from './apps/search/constants/SearchAppVariables';\r\n\r\nexport * from './apps/notifications/LiteNotificationsApplication';\r\nexport * from './apps/notifications/constants/NotificationsAppVariables';","import * as React from 'react';\r\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { Clip, SvgContainer, cvSvgLibrary, SvgContainerSize, DurationHelper, Badge, BadgeType } from '@clickview/shared';\r\n\r\nimport styles from './clips.scss';\r\n\r\nfunction ClipDuration(props: ClipItemProps): JSX.Element {\r\n const { clip } = props;\r\n\r\n const clipLength = clip.endTime - clip.startTime;\r\n\r\n const displayDuration = DurationHelper.ToDisplayDuration(clipLength * 1000);\r\n\r\n const duration = props.duration / 1000;\r\n const start = (clip.startTime / duration) * 100;\r\n const length = (clipLength / duration) * 100;\r\n\r\n const overlay = (\r\n <Tooltip id={`tooltip-top`}>\r\n {displayDuration}\r\n </Tooltip>\r\n );\r\n\r\n return (\r\n <div className={`${styles.bar} rounded mt-2`}>\r\n <OverlayTrigger overlay={overlay}>\r\n <div\r\n className={`${styles.subBar} bg-primary rounded`}\r\n style={{ width: `${length}%`, marginLeft: `${start}%` }}>\r\n </div>\r\n </OverlayTrigger>\r\n </div>\r\n );\r\n}\r\n\r\ninterface ClipItemProps {\r\n clip: Clip;\r\n duration: number;\r\n}\r\n\r\nexport function ClipItem(props: ClipItemProps): JSX.Element {\r\n const { clip } = props;\r\n\r\n const clipLength = clip.endTime - clip.startTime;\r\n\r\n return (\r\n <div className='border rounded w-33 py-3 px-1 d-flex align-items-center mr-3 flex-wrap'>\r\n <div className='d-flex align-self-center w-100'>\r\n <SvgContainer\r\n className='svg-container align-self-center'\r\n svgName={cvSvgLibrary.Play}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n <span className={styles.content}>\r\n <div className='d-flex'>\r\n <h3 className={`h6 mb-0 d-inline-block text-truncate`} title={clip.name}>\r\n {clip.name}\r\n </h3>\r\n <div className='flex-shrink-0'>\r\n <Badge type={ BadgeType.Duration } data={clipLength * 1000} />\r\n </div>\r\n </div>\r\n {clip.description &&\r\n <p className={`${styles.clampedDescription} mb-0 clamp-2`} title={clip.description}>{clip.description}</p>}\r\n <ClipDuration {...props} />\r\n </span>\r\n <SvgContainer\r\n className='svg-container align-self-center'\r\n svgName={cvSvgLibrary.More}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Text, Video, cvSvgLibrary, IconButton, SvgContainer } from '@clickview/shared';\r\n\r\nimport { ClipItem } from './ClipItem';\r\n\r\nconst namespace = 'shared.clips';\r\n\r\ninterface ClipsProps {\r\n video: Video;\r\n}\r\n\r\nexport function Clips(props: ClipsProps): JSX.Element {\r\n const { video } = props;\r\n\r\n const hasClips = video?.clips?.data?.length;\r\n\r\n return (\r\n <div className='pb-3'>\r\n <h2 className='h4'>\r\n <Text namespace={namespace} phrase='clips' />\r\n <IconButton className='btn btn-outline-dark ml-3 align-middle' svgName={cvSvgLibrary.Plus}>\r\n <Text namespace={namespace} phrase='create' />\r\n </IconButton>\r\n </h2>\r\n <div className='d-flex align-items-stretch'>\r\n {hasClips\r\n ? video.clips.data.map(c => <ClipItem duration={video.duration} clip={c} key={c.id} />)\r\n : <div>\r\n <SvgContainer className='svg-container mr-2 align-top' svgName={cvSvgLibrary.Star} />\r\n <Text namespace={namespace} phrase='empty' />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--22tRu\",\"clamped\":\"cv--clamped--_LK8Q\",\"clampedDescription\":\"cv--clampedDescription--18yOL\",\"bar\":\"cv--bar--3-kb8\",\"subBar\":\"cv--subBar--1ROlV\"};","import * as React from 'react';\r\n\r\ninterface DivButtonProps extends React.ButtonHTMLAttributes<HTMLDivElement> {\r\n onClick: (...args: any) => any;\r\n}\r\n\r\n/**\r\n * This element lets us use `div` elements as buttons without losing the accessibility of\r\n * a regular HTML button element\r\n */\r\nexport function DivButton(props: React.PropsWithChildren<DivButtonProps>): JSX.Element {\r\n return (\r\n <div\r\n role='button'\r\n tabIndex={0}\r\n className={props.className ? props.className : ''}\r\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && props.onClick(e)}\r\n onClick={props.onClick}\r\n >\r\n {props.children}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { SvgContainer, cvSvgLibrary, AppLink, SeriesLink, Video, Series } from '@clickview/shared';\r\n\r\nimport { PlayerContext } from 'shared/contexts';\r\nimport { WebPlayer } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport styles from './floating-player.scss';\r\n\r\nfunction getSeriesAppLink(id: string): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [id]\r\n };\r\n}\r\n\r\nfunction getVideoAppLink(id: string): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [id]\r\n };\r\n}\r\n\r\ninterface FloatingPlayerTitleProps {\r\n video: Video;\r\n}\r\n\r\nfunction FloatingPlayerTitle(props: FloatingPlayerTitleProps): JSX.Element {\r\n const { video } = props;\r\n\r\n return (\r\n <h2 className='mb-0 h6'>\r\n {!!video.series && <SeriesLink video={video} appLink={getSeriesAppLink(video.series.id)} />}\r\n <AppLink appLink={getVideoAppLink(video.id)}>\r\n {video.name}\r\n </AppLink>\r\n </h2>\r\n );\r\n}\r\n\r\nexport function FloatingPlayer(): React.ReactElement {\r\n const { video, webPlayerUrl, viewportPosition, setVideo, isOnPlayPage } = React.useContext(PlayerContext);\r\n\r\n if (!video)\r\n return <></>;\r\n\r\n let style = {};\r\n let className = styles.fixed;\r\n\r\n if (viewportPosition) {\r\n className = styles.inline;\r\n style = viewportPosition;\r\n }\r\n\r\n /**\r\n * Add box shadow when player is floating\r\n */\r\n if (!viewportPosition)\r\n className += ' shadow';\r\n\r\n return (\r\n <div style={style} className={`${className}`}>\r\n <WebPlayer id={video.id} webPlayerHost={webPlayerUrl} className={'embed-responsive-16by9'} key={video.id} />\r\n {!viewportPosition &&\r\n <div className='p-2 bg-white d-flex justify-content-between align-items-center'>\r\n <FloatingPlayerTitle video={video} />\r\n <span className={`${styles.buttons} flex-shrink-1`}>\r\n <span className={`cursor-pointer ml-1 float-right`} role='button' tabIndex={0} onClick={() => setVideo(null)}>\r\n <SvgContainer svgName={cvSvgLibrary.Close} />\r\n </span>\r\n <AppLink appLink={getVideoAppLink(video.id)}>\r\n {!isOnPlayPage && <SvgContainer\r\n svgName={cvSvgLibrary.NewWindow}\r\n className={`${styles.flippedIcon} d-inline-block svg-container float-right`} />}\r\n </AppLink>\r\n </span>\r\n </div>}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fixed\":\"cv--fixed--3C4_W\",\"inline\":\"cv--inline--2voRI\",\"closeSvg\":\"cv--closeSvg--2RiDj\",\"buttons\":\"cv--buttons--ZbN3s\",\"flippedIcon\":\"cv--flippedIcon--3nkTw\"};","import * as React from 'react';\r\nimport * as ImmersiveReaderSdk from '@microsoft/immersive-reader-sdk';\r\n\r\nimport { Flight, LanguageService } from '@clickview/common';\r\nimport { ConfigRequests } from '@clickview/shared';\r\n\r\nimport styles from './immersive-reader.scss';\r\n\r\nconst namespace = 'shared.immersiveReader';\r\n\r\ninterface ImmersiveReaderResponse {\r\n token: string;\r\n subdomain: string;\r\n}\r\n\r\ninterface ImmersiveReaderProps {\r\n text: string;\r\n title?: string;\r\n className?: string;\r\n}\r\n\r\nexport function ImmersiveReader(props: ImmersiveReaderProps): JSX.Element {\r\n const config = Flight.useBasicFetch(ConfigRequests.config);\r\n const immersiveReaderResponse = Flight.useBasicFetch<ImmersiveReaderResponse>({\r\n url: '/api/integrations/token/immersive-reader',\r\n key: 'immersive:reader:token'\r\n });\r\n\r\n if (!config.data || !immersiveReaderResponse.data)\r\n return <></>;\r\n\r\n if (!props.title)\r\n props.title = LanguageService.getPhrase(namespace, 'titleFallback');\r\n\r\n function launchImmersiveReader(): void {\r\n // TODO: analytics\r\n\r\n const content = {\r\n title: props.title,\r\n chunks: [{\r\n content: props.text\r\n }]\r\n };\r\n\r\n const { data: { subdomain, token } } = immersiveReaderResponse;\r\n\r\n const options = {\r\n uiZIndex: 5000 // Should always appear above our content\r\n };\r\n\r\n ImmersiveReaderSdk.launchAsync(token, subdomain, content, options);\r\n }\r\n\r\n return (\r\n <div className={`${styles.button} ${props.className || ''}`} onClick={launchImmersiveReader}>\r\n <svg viewBox='0 0 40 37'>\r\n <path d='M37.4,0.9 L37.4,9.6 L35.4,9.6 L35.4,2.9 L24.4,2.9 C22.9,3.3 20,4.5 20,6 L20,17.2 L18,17.2 L18,6 C18,5 15.6,3.6 13.8,2.9 L2,2.9 L2,29 L12.4,29 L12.4,31 L0,31 L0,0.9 L14.1,0.9 L14.3,1 C15,1.2 17.5,2.2 18.9,3.7 C20.5,1.9 23.5,1.1 23.9,1 L24.1,1 L37.4,1 L37.4,0.9 Z' fill='#000000'></path>\r\n <path d='M27.4,37 L25.8,37 L18.4,29.4 L14,29.4 L14,21 L18.4,20.9 L26.1,13 L27.4,13 L27.4,37 Z M16,27.4 L19.2,27.4 L25.3,33.7 L25.3,16.6 L19.2,22.9 L15.9,22.9 L15.9,27.4 L16,27.4 Z' fill='#0197F2'></path>\r\n <path d='M31.3,32.7 L29.6,31.7 C29.6,31.7 31.7,28.3 31.7,25.2 C31.7,21.9 29.6,18.5 29.6,18.4 L31.3,17.4 C31.4,17.6 33.7,21.3 33.7,25.2 C33.7,28.8 31.4,32.6 31.3,32.7 Z' fill='#0197F2'></path>\r\n <path d='M36.4,36.2 L34.8,35 C34.8,35 38,30.8 38,25.2 C38,19.6 34.8,15.4 34.8,15.4 L36.4,14.2 C36.5,14.4 40,19 40,25.3 C40,31.5 36.5,36 36.4,36.2 Z' fill='#0197F2'></path>\r\n </svg>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"cv--button--10_KK\"};","export * from './web-player/WebPlayer';\r\nexport * from './floating-player/FloatingPlayer';\r\nexport * from './resources/Resources';\r\nexport * from './video-details/VideoDetails';\r\nexport * from './uploading-item/UploadingItem';\r\nexport * from './play-page/PlayPage';\r\nexport * from './user-options/UserOptions';\r\nexport * from './synopsis/Synopsis';\r\nexport * from './interactives/Interactives';\r\nexport * from './clips/Clips';\r\nexport * from './upload-file-select/UploadFileSelect';\r\nexport * from './div-button/DivButton';\r\nexport * from './immersive-reader/ImmersiveReader';","import * as React from 'react';\r\nimport { Text, Interactive, SvgContainer, cvSvgLibrary, SvgContainerSize } from '@clickview/shared';\r\n\r\nimport styles from './interactives.scss';\r\n\r\nconst namespace = 'shared.interactives';\r\n\r\n\r\nfunction getContributorName(interactive: Interactive): string {\r\n const { owner } = interactive;\r\n\r\n if (!owner || !owner.name || !owner.surname)\r\n return '';\r\n\r\n return owner.name.substring(0, 1) + '. ' + owner.surname;\r\n}\r\n\r\nfunction getContributorOrg(interactive: Interactive): string {\r\n const { owner } = interactive;\r\n return owner?.customers?.data?.[0]?.organisation?.name;\r\n}\r\n\r\ninterface InteractiveItemProps {\r\n interactive: Interactive;\r\n}\r\n\r\nexport function InteractiveItem(props: InteractiveItemProps): JSX.Element {\r\n const { interactive } = props;\r\n\r\n const contributor = getContributorName(interactive);\r\n const org = getContributorOrg(interactive);\r\n\r\n return (\r\n <div className='border rounded w-33 py-3 px-1 d-flex align-items-center mr-3'>\r\n <div className='d-flex align-items-center w-100'>\r\n <SvgContainer\r\n className='svg-container'\r\n svgName={cvSvgLibrary.Play}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n <span className={styles.content}>\r\n {org &&\r\n <small>{contributor && <>{contributor}, </>}<em>{org}</em></small>}\r\n <h3 className={`h6 mb-0 clamp-2 ${styles.clamped}`} title={interactive.name}>{interactive.name}</h3>\r\n <SvgContainer className='svg-container align-middle mr-1' svgName={cvSvgLibrary.Preview} />\r\n <span className='text-info'><Text namespace={namespace} phrase={'preview'} /></span>\r\n </span>\r\n <SvgContainer\r\n className='svg-container'\r\n svgName={cvSvgLibrary.More}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Text, Video, cvSvgLibrary, IconButton, SvgContainer } from '@clickview/shared';\r\n\r\nimport { InteractiveItem } from './InteractiveItem';\r\n\r\nconst namespace = 'shared.interactives';\r\n\r\ninterface InteractivesProps {\r\n video: Video;\r\n}\r\n\r\nexport function Interactives(props: InteractivesProps): JSX.Element {\r\n const { video } = props;\r\n\r\n const hasInteractives = video?.interactives?.data?.length;\r\n\r\n return (\r\n <div className='pb-3'>\r\n <h2 className='h4'>\r\n <Text namespace={namespace} phrase='interactives' />\r\n <IconButton className='btn btn-outline-dark ml-3 align-middle' svgName={cvSvgLibrary.Plus}>\r\n <Text namespace={namespace} phrase='create' />\r\n </IconButton>\r\n </h2>\r\n <div className='d-flex align-items-stretch'>\r\n {hasInteractives\r\n ? video.interactives.data.map(i => <InteractiveItem interactive={i} key={i.id} />)\r\n : <div>\r\n <SvgContainer className='svg-container mr-2 align-top' svgName={cvSvgLibrary.Star} />\r\n <Text namespace={namespace} phrase='empty' />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--1D6Hx\",\"clamped\":\"cv--clamped--2sHZC\"};","import * as React from 'react';\r\nimport { Video } from '@clickview/shared';\r\n\r\ninterface BadgesProps {\r\n video: Video;\r\n}\r\n\r\nexport function Badges(props: BadgesProps): React.ReactElement {\r\n const { video } = props;\r\n const { rating, productionYear } = video;\r\n\r\n return (\r\n <div>\r\n {rating && <span className='badge badge-light p-1 mr-1'>{rating.code}</span>}\r\n {productionYear && <span className='badge badge-light p-1 mr-1'>{productionYear}</span>}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { IconButton, cvSvgLibrary, LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nconst namespace = 'shared.playPage';\r\n\r\nexport function Buttons(): React.ReactElement {\r\n const leftBtnClasses = 'btn btn-outline-secondary mr-2';\r\n const rightBtnClasses = 'btn btn-light float-right ml-2';\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='mt-3 clearfix'>\r\n <IconButton svgName={cvSvgLibrary.Plus} className={leftBtnClasses}><Text phrase='createInteractive' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.Plus} className={leftBtnClasses}><Text phrase='createClip' /></IconButton>\r\n\r\n <IconButton svgName={cvSvgLibrary.More} className={rightBtnClasses}><Text phrase='more' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.Share} className={rightBtnClasses}><Text phrase='share' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.AddToPlaylists} className={rightBtnClasses}><Text phrase='addToPlaylist' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.Plus} className={rightBtnClasses}><Text phrase='favourite' /></IconButton>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { FunctionHelper, Core } from '@clickview/common';\r\nimport { BackButton, Video, Text, VideoList, Series, VideoActionsContext } from '@clickview/shared';\r\n\r\nimport { Resources, VideoDetailsWithScrollbar, Interactives, Clips } from 'shared/components';\r\nimport { PlayerPosition, PlayerContext } from 'shared/contexts';\r\nimport { useOnScroll, useOnResize } from 'shared/hooks';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { VideoTitle } from './VideoTitle';\r\nimport { Badges } from './Badges';\r\nimport { Buttons } from './Buttons';\r\nimport { Synopsis } from '../synopsis/Synopsis';\r\nimport { getVideoActionAppLink } from 'shared/utils';\r\n\r\nconst namespace = 'shared.playPage';\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n});\r\n\r\nfunction getUpdate(\r\n placeholder: React.MutableRefObject<HTMLElement>,\r\n setPosition: (position: PlayerPosition) => void\r\n): () => void {\r\n return () => {\r\n if (!placeholder.current)\r\n return;\r\n\r\n const rect = placeholder.current.getBoundingClientRect();\r\n const left = window.pageXOffset || document.documentElement.scrollLeft;\r\n const top = window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n /**\r\n * Only show floating player\r\n * if the normal player is no longer in view\r\n */\r\n if (rect.top < -rect.height) {\r\n setPosition(null);\r\n return;\r\n }\r\n\r\n setPosition({ top: top + rect.top, left: left + rect.left, width: rect.width });\r\n };\r\n}\r\n\r\ninterface PlayPageProps {\r\n video: Video;\r\n relatedVideos: Video[];\r\n setFavorite?: (favorite: boolean) => void;\r\n}\r\n\r\nexport function PlayPage(props: PlayPageProps): JSX.Element {\r\n const { video, relatedVideos } = props;\r\n\r\n const { setViewportPosition, setIsOnPlayPage } = React.useContext(PlayerContext);\r\n\r\n /**\r\n * TODO: Change this to default to showSynopsis if we have a glance\r\n */\r\n const [ showSynopsis, setShowSynopsis ] = React.useState(true);\r\n /**\r\n * Get reference to the placeholder domElement\r\n */\r\n const placeholder = React.useRef(null);\r\n const placeholderRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n placeholder.current = node;\r\n update();\r\n }, []);\r\n\r\n /**\r\n * Memoize so we don't call throttle repeatedly\r\n */\r\n const update = React.useMemo(() => FunctionHelper.throttle(getUpdate(placeholder, setViewportPosition), 100, {\r\n leading: true,\r\n trailing: true\r\n }), []);\r\n\r\n /**\r\n * Bind update to 'scroll' and 'resize'\r\n */\r\n useOnScroll(update);\r\n useOnResize(update);\r\n\r\n /**\r\n * Clear the position when this component is closed\r\n */\r\n React.useEffect(() => {\r\n\r\n setIsOnPlayPage(true);\r\n return () => {\r\n setViewportPosition(null);\r\n setIsOnPlayPage(false);\r\n };\r\n }, []);\r\n\r\n return (\r\n <VideoActionsContext.Provider value={{ getActionAppLink: getVideoActionAppLink }}>\r\n <div className='d-flex justify-content-between'>\r\n <BackButton\r\n appLink={{\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }}\r\n backToName='Home'\r\n />\r\n <button className='btn btn-light'><Text namespace={namespace} phrase='classroomMode' /></button>\r\n </div>\r\n <div className='embed-responsive embed-responsive-16by9 my-3' ref={placeholderRef}></div>\r\n <VideoTitle video={video} setFavorite={props.setFavorite} />\r\n <Badges video={video} />\r\n <Buttons />\r\n <hr />\r\n {showSynopsis\r\n ? <Synopsis video={video} onClickFullDescription={() => setShowSynopsis(false)} />\r\n : <VideoDetailsWithScrollbar video={video} onClickShowSynopsis={() => setShowSynopsis(true)} /> }\r\n <Resources video={video} className='my-3' />\r\n <Interactives video={video} />\r\n <Clips video={video} />\r\n {!!relatedVideos && <>\r\n <h2 className={'h4 mt-3'}><Text namespace={namespace} phrase={'relatedVideos'} /></h2>\r\n <VideoList\r\n videos={relatedVideos}\r\n getSeriesAppLink={getSeriesAppLink}\r\n getVideoAppLink={getVideoAppLink}\r\n />\r\n </>}\r\n </VideoActionsContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core, FunctionHelper } from '@clickview/common';\r\nimport { Video, SeriesLink, FavoriteButton } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\ninterface VideoTitleProps {\r\n video: Video;\r\n setFavorite?: (favorite: boolean) => void;\r\n}\r\n\r\nexport function VideoTitle(props: VideoTitleProps): React.ReactElement {\r\n const { video } = props;\r\n\r\n const tempAppLink: Core.AppLink = {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: video.series ? [video.series.id] : []\r\n };\r\n\r\n return (\r\n <div className='mb-2'>\r\n <h1 className='h3 d-inline-block m-0'>\r\n {!!video.series && <SeriesLink video={video} appLink={tempAppLink} />}\r\n {video.name}\r\n </h1>\r\n {!!FunctionHelper.isFunction(props.setFavorite) &&\r\n <FavoriteButton\r\n setFavorite={props.setFavorite}\r\n video={video}\r\n className='d-inline-block ml-2 align-text-bottom'\r\n />\r\n }\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Video } from '@clickview/shared';\r\n\r\ninterface VideoResourcesProps {\r\n video: Video;\r\n className?: string;\r\n}\r\n\r\nexport function Resources(props: VideoResourcesProps): React.ReactElement {\r\n const { video } = props;\r\n\r\n if (!video.resources || !video.resources.data || !video.resources.data.length)\r\n return <></>;\r\n\r\n return (\r\n <div className={props.className}>\r\n <h2 className='h4'>Resources</h2>\r\n {video.resources.data.map((r, i) => <div key={i}>{r.name}</div>)}\r\n </div>\r\n );\r\n}","import { Video, Text } from '@clickview/shared';\r\nimport * as React from 'react';\r\nimport * as marked from 'marked';\r\n\r\nimport styles from './synopsis.scss';\r\n\r\nconst namespace = 'shared.synopsis';\r\n\r\ninterface BackgroundContainerProps {\r\n className: string;\r\n url: String;\r\n}\r\n\r\nfunction BackgroundContainer(props: BackgroundContainerProps): JSX.Element {\r\n const { className, url } = props;\r\n return (\r\n <div\r\n className={`${className} ${styles.background}`}\r\n style={{ backgroundImage: `url('${url}')` }}\r\n ></div>\r\n );\r\n}\r\n\r\ninterface SynopsisProps {\r\n video: Video;\r\n onClickFullDescription: () => void;\r\n}\r\n\r\nconst markdown = `\r\n- Explaing the roles of producers, consumers and decomposers\r\n- Explore diets of various safari animals\r\n- How did the giraffe get it's long neck\r\n- What does the giraffe do for the ecosystem\r\n`;\r\n\r\nexport function Synopsis(props: SynopsisProps): JSX.Element {\r\n const { video, onClickFullDescription } = props;\r\n\r\n/**\r\n * TODO: Uncomment below and update to use the data from the video\r\n * instead of the hard coded values\r\n */\r\n\r\n // /**\r\n // * If we don't have a glance, or our glance is not markdown\r\n // * we tell the PlayPage to render the description instead and return.\r\n // */\r\n // if (!video.glance || !video.glance.content || video.glance.format !== 'text/markdown') {\r\n // onClickFullDescription();\r\n // return <></>;\r\n // }\r\n\r\n /* These url values should be replaced by something dynamic in the future */\r\n const images = [\r\n { className: styles.topLeft, url: 'https://i.imgur.com/3GafOwO.png' },\r\n { className: styles.topRight, url: 'https://i.imgur.com/wcNZVth.png' },\r\n { className: styles.bottomLeft, url: 'https://i.imgur.com/vUEo7H2.png' },\r\n { className: styles.bottomRight, url: 'https://i.imgur.com/R3gcyGY.png' },\r\n ];\r\n\r\n return (\r\n <div className={`\r\n rounded border px-3 position-relative d-flex align-items-center justify-content-center ${styles.container}`}>\r\n <div className={`${styles.content} py-5`}>\r\n <h2><Text namespace={namespace} phrase='videoAtAGlance' /></h2>\r\n <div dangerouslySetInnerHTML={{ __html: marked(markdown) }}></div>\r\n <span onClick={props.onClickFullDescription} role='button' tabIndex={0} className='cursor-pointer'>\r\n <strong><Text namespace={namespace} phrase='showFullDescription' /></strong>\r\n </span>\r\n </div>\r\n {images.map((k, i) => <BackgroundContainer key={i} className={k.className} url={k.url} />)}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"cv--container--1XOYA\",\"content\":\"cv--content--UcxNO\",\"background\":\"cv--background--3gpaY\",\"topLeft\":\"cv--topLeft--2s7I6\",\"bottomLeft\":\"cv--bottomLeft--23UKL\",\"topRight\":\"cv--topRight--ec_-l\",\"bottomRight\":\"cv--bottomRight--1xMKp\"};","import * as React from 'react';\r\nimport { IconButton, cvSvgLibrary, Text } from '@clickview/shared';\r\nimport { useService } from '@clickview/common';\r\nimport { VideoUploadService } from 'shared/services';\r\nimport { Services } from 'shared/constants';\r\n\r\nconst namespace = 'shared.uploadFileSelect';\r\n\r\ninterface UploadFileSelectProps {\r\n hideButtonText?: boolean;\r\n}\r\n\r\nexport const UploadFileSelect = React.memo(function(props: UploadFileSelectProps): JSX.Element {\r\n const { hideButtonText = false } = props;\r\n\r\n const videoUploadService = useService<VideoUploadService>(Services.VideoUpload);\r\n\r\n const ref = React.useRef(null);\r\n const useRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n ref.current = node;\r\n }, []);\r\n\r\n const onClick = (e: React.MouseEvent) => {\r\n ref.current.value = null;\r\n ref.current.click(null);\r\n };\r\n\r\n const onChange = (files: FileList) => {\r\n /**\r\n * TODO: Need up update UploadService in shared to \r\n * use FileList instead of File[]\r\n */\r\n videoUploadService.addFiles(files as any);\r\n };\r\n\r\n return (\r\n <>\r\n <IconButton\r\n svgName={cvSvgLibrary.Upload}\r\n className='btn btn-secondary'\r\n onClick={onClick}\r\n iconOnly={hideButtonText} >\r\n { !hideButtonText && <Text phrase='uploadVideo' namespace={namespace} /> }\r\n </IconButton>\r\n\r\n <input\r\n type='file'\r\n autoComplete='off'\r\n className='file-select d-none'\r\n multiple\r\n accept='video/*'\r\n ref={useRef}\r\n onChange={e => onChange(e.target.files)}\r\n />\r\n </>\r\n );\r\n});","import { ProgressBar, Row, Col } from 'react-bootstrap';\r\nimport * as React from 'react';\r\nimport { ThumbnailFallback, ThumbnailFallbackType, BaseThumbnail, AspectRatio, SvgContainer, cvSvgLibrary } from '@clickview/shared';\r\nimport { CombinedUploadStatus, CombinedUpload } from 'shared/services';\r\nimport { LanguageService } from '@clickview/common';\r\n\r\nconst NAMESPACE = 'lite.uploadItem';\r\n\r\nfunction getClassName(status: CombinedUploadStatus): string {\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return 'text-success';\r\n case CombinedUploadStatus.Processing:\r\n return 'text-info';\r\n case CombinedUploadStatus.Errored:\r\n return 'text-danger';\r\n }\r\n}\r\n\r\nfunction getVariant(status: CombinedUploadStatus): 'success' | 'info' | 'danger' {\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return 'success';\r\n case CombinedUploadStatus.Processing:\r\n return 'info';\r\n case CombinedUploadStatus.Errored:\r\n return 'danger';\r\n }\r\n}\r\n\r\nfunction getProgressText(status: CombinedUploadStatus, progress: number): string {\r\n const rounded = Math.round(progress) || 0;\r\n\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return `${LanguageService.getPhrase(NAMESPACE, 'uploading')} ${rounded}%`;\r\n case CombinedUploadStatus.Processing:\r\n return `${LanguageService.getPhrase(NAMESPACE, 'processing')} ${rounded}%`;\r\n case CombinedUploadStatus.Errored:\r\n return LanguageService.getPhrase(NAMESPACE, 'error');\r\n }\r\n}\r\n\r\ninterface UploadingItemProps {\r\n item: CombinedUpload;\r\n onClickDelete: (item: CombinedUpload) => void;\r\n onClickAlternate: (item: CombinedUpload) => void;\r\n}\r\n\r\nexport function UploadingItem(props: UploadingItemProps): JSX.Element {\r\n const { status, progress, name } = props.item;\r\n\r\n /**\r\n * We're using React.useCallback here because this view\r\n * will get re-rendered many times by it's parent during\r\n * an upload\r\n */\r\n const onClickAlternate = React.useCallback(() => {\r\n props.onClickAlternate(props.item);\r\n }, []);\r\n\r\n const onClickDelete = React.useCallback(() => {\r\n props.onClickDelete(props.item);\r\n }, []);\r\n\r\n return (\r\n <Row className='py-2'>\r\n <Col lg={4}>\r\n <BaseThumbnail data='' aspectRatio={AspectRatio.SixteenByNine}>\r\n <ThumbnailFallback type={ThumbnailFallbackType.Video} />\r\n </BaseThumbnail>\r\n </Col>\r\n <Col lg={8}>\r\n <h5 className='m-0 pb-1'>{name}</h5>\r\n <span className={getClassName(status)}>{getProgressText(status, progress)}</span>\r\n <div className='d-flex'>\r\n <ProgressBar className='flex-grow-1 align-self-center' variant={getVariant(status)} now={progress} />\r\n <SvgContainer\r\n className='svg-container cursor-pointer ml-2'\r\n svgName={status === CombinedUploadStatus.Errored ? cvSvgLibrary.Bell : cvSvgLibrary.Edit}\r\n onClick={onClickAlternate}\r\n />\r\n <SvgContainer\r\n className='svg-container cursor-pointer ml-2'\r\n svgName={cvSvgLibrary.Delete}\r\n onClick={onClickDelete}\r\n />\r\n </div>\r\n </Col>\r\n </Row>\r\n );\r\n}","import * as React from 'react';\r\nimport { CurrentUser, LanguageNamespaceContext, Text, AppLink } from '@clickview/shared';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nimport styles from './user-options.scss';\r\n\r\ninterface UserOptionsProps {\r\n user: CurrentUser;\r\n}\r\n\r\n/**\r\n * TODO: Implement user options properly;\r\n */\r\nexport const UserOptions = React.memo(function(props: UserOptionsProps): React.ReactElement {\r\n const { user } = props;\r\n\r\n if (!user)\r\n return <Button variant={'primary'} className='mx-2 px-2'>Log in</Button>;\r\n\r\n const { avatar, displayName, customerName } = user;\r\n\r\n /**\r\n * We're not using react-bootstrap dropdown here because we need a custom toggle\r\n * and it doesn't seem like it's worth the hassle https://react-bootstrap.github.io/components/dropdowns/\r\n */\r\n return (\r\n <LanguageNamespaceContext.Provider value='shared.userOptions'>\r\n <div className='cursor-pointer mx-2 px-2 position-relative' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\r\n <span className={styles.avatar} style={{ backgroundImage: `url('${avatar}')` }}>\r\n &nbsp;\r\n </span>\r\n <nav className={`dropdown-menu dropdown-arrow dropdown-menu-right ${styles.dropdownMenu}`}>\r\n <div className='dropdown-item'>\r\n <div className='m-0'><strong>{displayName}</strong></div>\r\n <div className='m-0 text-muted'>{customerName}</div>\r\n </div>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'myProfile'} />\r\n </AppLink>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'myPreferences'} />\r\n </AppLink>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'signOut'} />\r\n </AppLink>\r\n </nav>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}, (prevProps, nextProps): boolean => {\r\n return prevProps.user?.id === nextProps.user?.id\r\n && prevProps.user?.avatar === nextProps.user?.avatar\r\n && prevProps.user?.displayName === nextProps.user?.displayName\r\n && prevProps.user?.customerName === nextProps.user?.customerName;\r\n});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"cv--avatar--3g8JZ\",\"iconPlaceholder\":\"cv--iconPlaceholder--2hr_4\"};","import * as React from 'react';\r\nimport Scrollbars from 'react-custom-scrollbars';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { Video, BaseObject, BasePaginatedCollection, TagCollection, LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nimport { ImmersiveReader } from 'shared/components';\r\n\r\nimport styles from './video-details.scss';\r\n\r\nconst namespace = 'shared.videoDetails';\r\n\r\ninterface TagListProps {\r\n tags: TagCollection;\r\n className?: string;\r\n}\r\n\r\nfunction TagList(props: TagListProps): React.ReactElement {\r\n const { tags, className } = props;\r\n\r\n const hasTags = tags && tags.data && tags.data.length;\r\n\r\n if (!hasTags)\r\n return <></>;\r\n\r\n return (\r\n <div className={className}>\r\n <Text phrase='tags' /> {tags.data.map((t, i) =>\r\n <span className='badge mr-1 p-1 badge-light' key={i}>{t.name}</span>)}\r\n </div>\r\n );\r\n}\r\n\r\ninterface CommaListProps {\r\n label: string;\r\n items: BasePaginatedCollection<BaseObject>;\r\n className?: string;\r\n}\r\n\r\nfunction CommaList(props: CommaListProps): React.ReactElement {\r\n const { label, items, className } = props;\r\n\r\n const hasItems = items && items.data && items.data.length;\r\n\r\n if (!hasItems)\r\n return <></>;\r\n\r\n const commaSeperated = items.data.map(i => i.name).join(', ');\r\n\r\n return (\r\n <div className={className}>{label}: {commaSeperated}</div>\r\n );\r\n}\r\n\r\ninterface VideoDetailsProps {\r\n video: Video;\r\n}\r\n\r\nfunction VideoDetails(props: VideoDetailsProps): React.ReactElement {\r\n const { video } = props;\r\n const { tags, rating, productionYear, productionCompanies, distributors } = video;\r\n\r\n const ratingCode = rating && rating.code;\r\n\r\n /**\r\n * TODO: Use language service\r\n */\r\n return (\r\n <>\r\n <h2 className='h4'><Text phrase='details' /></h2>\r\n <div className='row no-gutters'>\r\n <div className='col-3'>\r\n {ratingCode && <div className='pb-2'><Text phrase='rating' options={{ code: ratingCode }} /></div>}\r\n {productionYear && <div className='pb-2'><Text phrase='productionYear' options={{ year: productionYear }} /></div>}\r\n </div>\r\n <div className='col-9'>\r\n <CommaList label={LanguageService.getPhrase(namespace, 'productionCompanies')} items={productionCompanies} className='pb-2' />\r\n <CommaList label={LanguageService.getPhrase(namespace, 'distributors')} items={distributors} className='pb-2' />\r\n <TagList tags={tags} className='pb-2' />\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\ninterface DescriptionProperties {\r\n description: string;\r\n immersiveReaderTitle?: string;\r\n}\r\n\r\nfunction Description(props: DescriptionProperties): React.ReactElement {\r\n const { description, immersiveReaderTitle } = props;\r\n\r\n if (!description)\r\n return <></>;\r\n\r\n /**\r\n * TODO: Linkify the description\r\n */\r\n return (\r\n <>\r\n <h2 className='h4'>\r\n <Text phrase='description' />\r\n <ImmersiveReader text={description} title={immersiveReaderTitle} className='pl-2' />\r\n </h2>\r\n <p>{description}</p>\r\n </>\r\n );\r\n}\r\n\r\ninterface DetailsPaneProps {\r\n video: Video;\r\n onClickShowSynopsis: () => void;\r\n}\r\n\r\nexport function VideoDetailsWithScrollbar(props: DetailsPaneProps): React.ReactElement {\r\n const { video } = props;\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='rounded border px-3 mb-3'>\r\n {/* 368 is the min height of Video at a glance which is defined as $glanceHeight in synopsis.scss */}\r\n <Scrollbars autoHeight autoHeightMax={368}>\r\n <div className='py-3'>\r\n <VideoDetails video={video} />\r\n <Description description={video.description} immersiveReaderTitle={video.name} />\r\n <span className={`${styles.showGlance} cursor-pointer`} onClick={props.onClickShowSynopsis} role='button' tabIndex={0}>\r\n <strong><Text namespace={namespace} phrase='showGlance' /></strong>\r\n </span>\r\n </div>\r\n </Scrollbars>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"showGlance\":\"cv--showGlance--2fhqC\"};","import * as React from 'react';\r\n\r\ninterface WebPlayerProps {\r\n className?: string;\r\n webPlayerHost: string;\r\n id: string;\r\n}\r\n\r\nexport function WebPlayer(props: WebPlayerProps): React.ReactElement {\r\n const url = `${props.webPlayerHost}home/ev?vid=${props.id}`;\r\n\r\n return (\r\n <div className={`embed-responsive ${props.className ? props.className : ''}`}>\r\n <iframe\r\n src={url}\r\n className='embed-responsive-item'\r\n allowFullScreen\r\n allow='autoplay; fullscreen'/>\r\n </div>\r\n );\r\n}","import { Actions as PlaylistActions } from '@clickview/playlists';\r\nimport { Actions as DashboardActions } from '@clickview/dashboard';\r\n\r\nexport const Actions = {\r\n Default: {\r\n HOME: 'index',\r\n ERROR: 'error',\r\n NOT_FOUND: 'not:found',\r\n DEV_ERROR: 'dev:error',\r\n DIALOG_ERROR: 'dialog:error',\r\n\r\n MY_UPLOADS: 'my:uploads',\r\n SERIES: 'series',\r\n PLAY_VIDEO: 'play:video',\r\n FAVORITE_VIDEOS: 'favorite:videos',\r\n EDIT_VIDEO: 'edit:video',\r\n EDIT_UPLOAD: 'edit:upload'\r\n },\r\n\r\n Playlists: {\r\n HOME: PlaylistActions.Playlists.HOME,\r\n PLAYLIST: PlaylistActions.Playlists.PLAYLIST,\r\n NEW_PLAYLIST: PlaylistActions.Playlists.NEW_PLAYLIST,\r\n EDIT_PLAYLIST: PlaylistActions.Playlists.EDIT_PLAYLIST,\r\n DELETE_PLAYLIST: PlaylistActions.Playlists.DELETE_PLAYLIST,\r\n ADD_TO_PLAYLIST: PlaylistActions.Playlists.ADD_TO_PLAYLIST,\r\n REMOVE_VIDEO_FROM_PLAYLIST: PlaylistActions.Playlists.REMOVE_VIDEO_FROM_PLAYLIST\r\n },\r\n\r\n Dashboard: {\r\n HOME: DashboardActions.Dashboard.HOME,\r\n DASHBOARD: DashboardActions.Dashboard.DASHBOARD,\r\n VIDEO: DashboardActions.Dashboard.VIDEO\r\n },\r\n\r\n Classifications: {\r\n CLASSIFICATION: DashboardActions.Classifications.CLASSIFICATION,\r\n PLAYLIST: DashboardActions.Classifications.PLAYLIST,\r\n VIDEO: DashboardActions.Classifications.VIDEO,\r\n SERIES: DashboardActions.Classifications.SERIES\r\n },\r\n\r\n Notifications: {\r\n HOME: 'index'\r\n },\r\n\r\n Search: {\r\n HOME: 'index'\r\n },\r\n\r\n ContentUpdates: {\r\n CONTENT_UPDATES: PlaylistActions.ContentUpdates.CONTENT_UPDATES,\r\n CLASSIFICATION_UPDATE: PlaylistActions.ContentUpdates.CLASSIFICATION_UPDATE\r\n }\r\n};","export const LayoutRegions = {\r\n CONTENT: 'content',\r\n POPUP: 'popup',\r\n ALERT: 'alert'\r\n};","export const Layouts = {\r\n TEACHER_LAYOUT: 'TeacherLayout',\r\n EMBED_LAYOUT: 'EmbedLayout'\r\n};","export const AppChannels = {\r\n DEFAULT: 'default:application',\r\n PLAYLISTS: 'lite:playlists:application',\r\n DASHBOARD: 'lite:dashboard:application',\r\n SUBJECT: 'lite:subject:application',\r\n EMBED: 'embed:application',\r\n NOTIFICATIONS: 'notifications:application',\r\n SEARCH: 'search:application',\r\n CONTENT_UPDATES: 'content:updates:application'\r\n};","import { SharedDataChannels } from '@clickview/shared';\r\n\r\nexport const DataChannels = {\r\n ...SharedDataChannels\r\n};","import { SharedDataServices, SharedServices } from '@clickview/shared';\r\n\r\nexport const Services = {\r\n ...SharedServices\r\n};\r\n\r\nexport const DataServices = {\r\n ...SharedDataServices\r\n};","const ObjectWithStatements = {\r\n VIDEO: 'series,season,rating,producers,distributors,resources,tags,productionCompanies,directors,links,thumbnail,interactives[owner[customers[organisation]]],clips'\r\n};\r\n\r\nconst CollectionWithStatements = {\r\n VIDEO_COLLECTION: `thumbnail,tags,rating,series,season`\r\n};\r\n\r\nexport const WithStatements = {\r\n ...ObjectWithStatements,\r\n ...CollectionWithStatements\r\n};","export * from './LiteActions';\r\nexport * from './LiteRadioChannels';\r\nexport * from './LiteLayoutRegions';\r\nexport * from './LiteLayouts';\r\nexport * from './WithStatements';\r\nexport * from './RadioChannels';\r\nexport * from './Services';","export * from './player/PlayerContext';","import * as React from 'react';\r\nimport { Flight } from '@clickview/common';\r\nimport { Config, Video, ConfigRequests } from '@clickview/shared';\r\n\r\nexport interface PlayerPosition {\r\n top: number;\r\n left: number;\r\n width: number;\r\n}\r\n\r\ninterface PlayerContextProps {\r\n webPlayerUrl: string;\r\n\r\n /**\r\n * Video that the player is currently plaing\r\n */\r\n video?: Video;\r\n setVideo: (video: Video) => void;\r\n\r\n /**\r\n * Position of the video player when we're on a play page\r\n * no position means we're floating on the bottom right of the screen\r\n */\r\n viewportPosition: PlayerPosition;\r\n setViewportPosition: (position: PlayerPosition) => void;\r\n\r\n /**\r\n * Tells the floating player to not render when it has\r\n * as video but no position. This prevents\r\n * a bug where the floating player flashes briefly when the\r\n * PlayView has set a video but not yet set a position\r\n */\r\n isOnPlayPage: boolean;\r\n setIsOnPlayPage: (isOnPlayPage: boolean) => void;\r\n}\r\n\r\nexport const PlayerContext = React.createContext<PlayerContextProps>(undefined);\r\n\r\nexport function PlayerContextProvider(props: React.PropsWithChildren<{}>): React.ReactElement {\r\n const { children } = props;\r\n\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n\r\n const [ video, setVideo ] = React.useState<Video>(null);\r\n const [ viewportPosition, setViewportPosition ] = React.useState<PlayerPosition>(null);\r\n const [ isOnPlayPage, setIsOnPlayPage ] = React.useState<boolean>(false);\r\n\r\n const context = {\r\n webPlayerUrl: config.data ? config.data.webPlayerUrl : '',\r\n video,\r\n setVideo,\r\n viewportPosition,\r\n setViewportPosition,\r\n isOnPlayPage,\r\n setIsOnPlayPage\r\n };\r\n\r\n return (\r\n <PlayerContext.Provider value={context}>\r\n {children}\r\n </PlayerContext.Provider>\r\n );\r\n}","export * from './not-found/LiteNotFoundError';","import { Core, LanguageService } from '@clickview/common';\r\n\r\nconst lang = 'shared.notFound';\r\n\r\nexport class NotFoundError extends Core.SilentError {\r\n constructor() {\r\n /**\r\n * TODO: Set up language service properly\r\n */\r\n // super(LanguageService.getPhrase(lang, 'title'));\r\n super('Not Found');\r\n }\r\n\r\n public get name(): string {\r\n return 'NotFoundError';\r\n }\r\n}","import { Flight } from '@clickview/common';\r\n\r\nexport const AudienceRequests = {\r\n presentationAudiences(): Flight.Request {\r\n return {\r\n url: '/api/domain/v1/subjects/audiences',\r\n key: `presentation:audiences`\r\n };\r\n }\r\n};","import { Flight } from '@clickview/common';\r\nimport { WithStatements } from 'shared/constants';\r\n\r\nconst endpoints = {\r\n series: (id: string) => `/api/domain/v2/objects/${id}`,\r\n seriesVideos: (id: string, cursor: string) =>\r\n `/api/domain/v2/objects/${id}/videos?query=${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`,\r\n\r\n breadcrumbs: (id: string) => `/api/domain/v1/subjects/${id}/path`\r\n};\r\n\r\nexport const SeriesRequests = {\r\n series(id: string): Flight.Request {\r\n return {\r\n url: endpoints.series(id),\r\n key: `series:${id}`\r\n };\r\n },\r\n seriesVideos(id: string, cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.seriesVideos(id, cursor),\r\n key: `series:${id}:videos:${cursor}`\r\n };\r\n },\r\n breadcrumbs(classificationId: string): Flight.Request {\r\n if (!classificationId)\r\n return;\r\n\r\n return {\r\n url: endpoints.breadcrumbs(classificationId),\r\n key: `series:${classificationId}:breadcrumbs`\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","import { Flight } from '@clickview/common';\r\nimport { WithStatements } from 'shared/constants';\r\n\r\nexport const ShareRequests = {\r\n sharedResource(shortCode: string): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/share/${shortCode}?query=${WithStatements.VIDEO}`,\r\n key: `shared:resource:${shortCode}`\r\n };\r\n }\r\n};","import { Flight, HttpVerbs } from '@clickview/common';\r\nimport { WithStatements } from 'shared/constants';\r\nimport { Video, UpdateVideoRequest } from '@clickview/shared';\r\n\r\nconst endpoints = {\r\n video: (id: string) => `/api/domain/v2/objects/${id}?query=${WithStatements.VIDEO}`,\r\n\r\n // workspace: () => `api/domain/v2/me/workspace?query=${WithStatements.WORKSPACE_VIDEOS}${addCursor(cursor)}`,\r\n workspace: (id: string, cursor: string) => {\r\n const query = `{orderbydesc:datecreated}${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`;\r\n return `api/domain/v2/objects/${id}/videos?query=${query}`;\r\n },\r\n\r\n getVideosById: (ids: string[]) => {\r\n const params = ids.map(i => `id=${i}`);\r\n return `/api/domain/v2/objects?${params.join('&')}`;\r\n },\r\n\r\n favoriteVideos: (cursor: string) =>\r\n `/api/domain/v2/objects/9160822/videos?query=${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`\r\n};\r\n\r\nexport const VideoRequests = {\r\n video(id: string): Flight.Request {\r\n return {\r\n url: endpoints.video(id),\r\n key: `videos:${id}`\r\n };\r\n },\r\n\r\n workspace(id: string, cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.workspace(id, cursor),\r\n key: `workspace:${id}:${cursor}`\r\n };\r\n },\r\n\r\n videos(ids: string[], success?: (videos: Video[]) => void): Flight.Request {\r\n return {\r\n url: endpoints.getVideosById(ids),\r\n key: `videos:by:id:${ids.join(',')}`,\r\n success\r\n };\r\n },\r\n\r\n updateVideo(data: UpdateVideoRequest, success?: () => void): Flight.Request {\r\n return {\r\n key: `update:video:${data.id}`,\r\n url: `/api/domain/v2/objects/${data.id}`,\r\n type: HttpVerbs.PUT,\r\n data,\r\n success\r\n };\r\n },\r\n\r\n favoriteVideos(cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.favoriteVideos(cursor),\r\n key: `favorite:videos:${cursor}`\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","export * from './VideoRequests';\r\nexport * from './SeriesRequests';\r\nexport * from './ShareRequests';\r\nexport * from './AudienceRequests';","export * from './useWindowListeners';","import * as React from 'react';\r\n\r\nfunction createUseWindowListener(event: string): any {\r\n return function useWindowListener(callback: () => void): void {\r\n /**\r\n * Memoize the callback so it's the same function\r\n * when we call removeEventListener\r\n */\r\n const memoCallback = React.useCallback(callback, []);\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(event, memoCallback);\r\n return () => window.removeEventListener(event, memoCallback);\r\n }, []);\r\n };\r\n}\r\n\r\nexport const useOnScroll = createUseWindowListener('scroll');\r\nexport const useOnResize = createUseWindowListener('resize');\r\n\r\n","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\n\r\nexport interface EmbedLayoutComponentProps {\r\n store: Store;\r\n contentChild?: React.ReactNode;\r\n}\r\n\r\nfunction EmbedLayoutComponent(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { contentChild } = props;\r\n\r\n return (\r\n <>\r\n {contentChild}\r\n </>\r\n );\r\n}\r\n\r\nfunction WrapLayoutWithProviders(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { store } = props;\r\n\r\n return (\r\n <Provider store={store}>\r\n <EmbedLayoutComponent {...props} />\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as EmbedLayoutComponent };","import * as React from 'react';\r\nimport { ReactLayoutView, HashObject } from '@clickview/common';\r\n\r\nimport { Layouts, LayoutRegions } from 'shared/constants';\r\n\r\nimport { EmbedLayoutComponent, EmbedLayoutComponentProps } from './EmbedLayoutComponent';\r\nimport EmbedLayoutTemplate from './EmbedLayout.hbs';\r\n\r\n\r\nexport class EmbedLayoutView extends ReactLayoutView {\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'EmbedLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return EmbedLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(): string {\r\n return Layouts.EMBED_LAYOUT;\r\n }\r\n\r\n public regions(): HashObject {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): EmbedLayoutComponentProps {\r\n return {\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n store: this.options.store\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <EmbedLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","export * from './teacher-layout/TeacherLayoutView';\r\nexport * from './embed-layout/EmbedLayoutView';","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region position-relative\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\nimport { useDropzone } from 'react-dropzone';\r\n\r\nimport { useService } from '@clickview/common';\r\nimport { useMediaQuery, MediaQueryStrings, BaseVideoUploadService, SearchAppContextProvider } from '@clickview/shared';\r\n\r\nimport { HeaderView, LeftNavView, LeftNavState } from 'shared/views';\r\nimport { PlayerContextProvider, PlayerContext } from 'shared/contexts';\r\nimport { FloatingPlayer } from 'shared/components';\r\nimport { Services } from 'shared/constants';\r\n\r\nimport { DragMask } from './drag-mask/DragMask';\r\n\r\nimport styles from './teacher-layout.scss';\r\n\r\ninterface DerivedNavState {\r\n state: LeftNavState;\r\n showMask: boolean;\r\n contentClass: string;\r\n}\r\n\r\nfunction getDerivedNavState(\r\n collapse: boolean, isMobile: boolean, isIPad: boolean\r\n): DerivedNavState {\r\n if (isMobile) {\r\n return {\r\n state: collapse ? LeftNavState.Hidden : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.hiddenNavContent\r\n };\r\n }\r\n\r\n if (isIPad) {\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.collapsedNavContent\r\n };\r\n }\r\n\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: false,\r\n contentClass: collapse ? styles.collapsedNavContent : styles.openNavContent\r\n };\r\n}\r\n\r\nexport interface TeacherLayoutComponentProps {\r\n showNav: boolean;\r\n\r\n contentChild?: React.ReactNode;\r\n popupChild?: React.ReactNode;\r\n alertChild?: React.ReactNode;\r\n\r\n store: Store;\r\n}\r\n\r\nconst TeacherLayoutComponent = (props: TeacherLayoutComponentProps): React.ReactElement => {\r\n const { showNav, contentChild, popupChild, alertChild } = props;\r\n\r\n const { viewportPosition: playerViewportPosition } = React.useContext(PlayerContext);\r\n\r\n const [ collapse, setCollapse ] = React.useState(false);\r\n\r\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\r\n const isIPad = useMediaQuery(MediaQueryStrings.SM);\r\n const isLargeDesktop = useMediaQuery(MediaQueryStrings.XL);\r\n\r\n const toggleLeftNav = () => {\r\n setCollapse(!collapse);\r\n };\r\n\r\n React.useEffect(() => {\r\n setCollapse(!isLargeDesktop);\r\n }, [isLargeDesktop]);\r\n\r\n const navState = getDerivedNavState(collapse, isMobile, isIPad);\r\n\r\n const videoUploadService = useService<BaseVideoUploadService>(Services.VideoUpload);\r\n const onDrop = React.useCallback((acceptedFiles: File[]) => {\r\n videoUploadService.addFiles(acceptedFiles);\r\n }, []);\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n noClick: true,\r\n noKeyboard: true\r\n });\r\n\r\n // Right align content in the alert-player container.\r\n let alertPlayerContainerClassName = 'd-flex flex-column align-items-end';\r\n let alertContainerClassName = '';\r\n\r\n /**\r\n * If playerViewportPosition is truthy, the player isn't floating,\r\n * so we only apply the fixed position styling to the alert container.\r\n * \r\n * Else if playerViewportPosition is falsy, we fix the entire\r\n * alert-player container.\r\n */\r\n if (playerViewportPosition)\r\n alertContainerClassName = styles.fixedBottomRightContainer;\r\n else\r\n alertPlayerContainerClassName += ` ${styles.fixedBottomRightContainer}`;\r\n\r\n return (\r\n <div {...getRootProps()}>\r\n <HeaderView toggleLeftNav={toggleLeftNav} showLeftNavToggle={showNav} />\r\n {showNav && <LeftNavView navState={navState.state}/>}\r\n <div className={`${styles.content} ${navState.contentClass}`}>\r\n <div className='container'>\r\n {contentChild}\r\n </div>\r\n </div>\r\n {popupChild}\r\n {navState.showMask && <div className={`modal-backdrop show ${styles.mask}`}></div>}\r\n <div className={alertPlayerContainerClassName}>\r\n {!!alertChild && <div className={alertContainerClassName}>{alertChild}</div>}\r\n <FloatingPlayer />\r\n </div>\r\n {isDragActive && <DragMask />}\r\n <input {...getInputProps()} />\r\n </div>\r\n );\r\n};\r\n\r\nfunction WrapLayoutWithProviders(props: TeacherLayoutComponentProps): React.ReactElement {\r\n return (\r\n <Provider store={props.store}>\r\n <SearchAppContextProvider>\r\n <PlayerContextProvider>\r\n <TeacherLayoutComponent {...props} />\r\n </PlayerContextProvider>\r\n </SearchAppContextProvider>\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as TeacherLayoutComponent };","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from '@clickview/common';\r\n\r\nimport { Layouts, LayoutRegions } from 'shared/constants';\r\n\r\nimport { TeacherLayoutComponent, TeacherLayoutComponentProps } from './TeacherLayoutComponent';\r\nimport TeacherLayoutTemplate from './TeacherLayout.hbs';\r\n\r\nexport interface TeacherLayoutViewOptions extends ReactLayoutViewOptions {\r\n showNav: boolean;\r\n}\r\n\r\nexport class TeacherLayoutView extends ReactLayoutView {\r\n protected options: TeacherLayoutViewOptions;\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n constructor(options?: TeacherLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'TeacherLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return TeacherLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(options: TeacherLayoutViewOptions): string {\r\n return `${Layouts.TEACHER_LAYOUT}:${options.showNav}`;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): TeacherLayoutComponentProps {\r\n return {\r\n showNav: this.options.showNav,\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n popupChild: this.childComponents[LayoutRegions.POPUP],\r\n alertChild: this.childComponents[LayoutRegions.ALERT],\r\n store: this.options.store\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <TeacherLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Text } from '@clickview/shared';\r\n\r\nimport styles from './drag-mask.scss';\r\n\r\nexport function DragMask(): React.ReactElement {\r\n return (\r\n <>\r\n <div className={styles.dropMask}></div>\r\n <div className={styles.dropContent}>\r\n <div className={styles.border}>\r\n <h1><Text namespace={'shared.dragMask'} phrase={'message'} /></h1>\r\n </div>\r\n </div>\r\n <div className={styles.dropArea}></div>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropMask\":\"cv--dropMask--3bFev\",\"dropContent\":\"cv--dropContent--2_7SU\",\"dropArea\":\"cv--dropArea--3oOzB\",\"border\":\"cv--border--1IoKS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--1SX2l\",\"collapsedNavContent\":\"cv--collapsedNavContent--3LJFz\",\"openNavContent\":\"cv--openNavContent--34Pt4\",\"hiddenNavContent\":\"cv--hiddenNavContent--1gZ0J\",\"mask\":\"cv--mask--mE2Dq\",\"fixedBottomRightContainer\":\"cv--fixedBottomRightContainer--Sgmex\"};","import { Core, InstanceManager, HashObject, DevError } from '@clickview/common';\r\nimport { BaseVideoUploadService, BasePendingItemsService, PendingItemsHelper } from '@clickview/shared';\r\nimport { Services, Actions } from 'shared/constants';\r\nimport { AppChannels } from '@clickview/playlists';\r\n\r\nclass CombinedCollection extends Core.Collection {\r\n public modelId(attrs: HashObject): string {\r\n return attrs.pendingProcessId || attrs.id;\r\n }\r\n\r\n public get comparator(): (item1: Core.Model, item2: Core.Model) => number {\r\n return (item1: Core.Model, item2: Core.Model) => {\r\n const item1Status = item1.get('status');\r\n const item2Status = item2.get('status');\r\n if (item1Status === CombinedUploadStatus.Errored)\r\n return 1;\r\n if (item2Status === CombinedUploadStatus.Errored)\r\n return -1;\r\n\r\n return 0;\r\n };\r\n }\r\n}\r\n\r\nexport enum CombinedUploadStatus {\r\n Uploading,\r\n Processing,\r\n Errored\r\n}\r\n\r\nexport interface CombinedUpload {\r\n id: string;\r\n name: string;\r\n status: CombinedUploadStatus;\r\n progress: number;\r\n pendingProcessId: number;\r\n videoId?: string;\r\n}\r\n\r\n/**\r\n * The sole purpose of this service is to combine the collections in the\r\n * VideoUploadService and the PendingItemsService in a way that's consumable\r\n * by the MyuploadsView\r\n */\r\nexport class CombineUploadsService extends Core.Service {\r\n private videoUploadService: BaseVideoUploadService;\r\n private pendingItemsService: BasePendingItemsService;\r\n\r\n private uploads: Core.Collection;\r\n private pendingItems: Core.Collection;\r\n\r\n private combined: CombinedCollection;\r\n\r\n public get name(): string {\r\n return 'combine:uploads:service';\r\n }\r\n\r\n public initialize(): void {\r\n this.initializeServices();\r\n this.initializeCollections();\r\n this.bindListeners();\r\n }\r\n\r\n private initializeServices(): void {\r\n this.videoUploadService = InstanceManager.getInstance(Services.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n }\r\n\r\n private initializeCollections(): void {\r\n this.uploads = this.videoUploadService.getCollection();\r\n this.pendingItems = this.pendingItemsService.getPendingItems();\r\n this.combined = new CombinedCollection();\r\n\r\n this.uploads.each(this.addUpload);\r\n this.pendingItems.each(this.addPendingItem);\r\n }\r\n\r\n private bindListeners(): void {\r\n this.listenTo(this.uploads, 'add', this.addUpload);\r\n this.listenTo(this.pendingItems, 'add', this.addPendingItem);\r\n\r\n this.listenTo(this.uploads, 'remove', this.removeUpload);\r\n this.listenTo(this.pendingItems, 'remove', this.removePendingItem);\r\n\r\n this.listenTo(this.uploads, 'change', this.onChangeUpload);\r\n this.listenTo(this.pendingItems, 'change', this.onChangePendingItem);\r\n }\r\n\r\n private getUploadAttrs(upload: Core.Model): CombinedUpload {\r\n return {\r\n id: upload.get('id'),\r\n name: upload.get('name'),\r\n progress: upload.get('progress'),\r\n status: CombinedUploadStatus.Uploading,\r\n pendingProcessId: upload.get('pendingProcessId')\r\n };\r\n }\r\n\r\n private getPendingItemAttrs(pendingItem: Core.Model): CombinedUpload {\r\n return {\r\n id: pendingItem.get('pendingProcessId'),\r\n name: pendingItem.get('video').get('name'),\r\n progress: pendingItem.get('foregroundProgress'),\r\n status: PendingItemsHelper.hasError(pendingItem) ? CombinedUploadStatus.Errored : CombinedUploadStatus.Processing,\r\n pendingProcessId: pendingItem.get('pendingProcessId'),\r\n videoId: pendingItem.get('video').get('id')\r\n };\r\n }\r\n\r\n private addUpload(upload: Core.Model): void {\r\n this.combined.add(this.getUploadAttrs(upload));\r\n }\r\n\r\n private addPendingItem(pendingItem: Core.Model): void {\r\n const existing = this.combined.findWhere({ pendingProcessId: pendingItem.get('pendingProcessId') });\r\n\r\n if (existing) {\r\n existing.set(this.getPendingItemAttrs(pendingItem));\r\n return;\r\n }\r\n\r\n this.combined.add(this.getPendingItemAttrs(pendingItem));\r\n }\r\n\r\n private removeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n this.combined.remove(item);\r\n }\r\n\r\n private removePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n this.combined.remove(item);\r\n }\r\n\r\n private onChangeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n item.set(this.getUploadAttrs(upload));\r\n }\r\n\r\n private onChangePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n item.set(this.getPendingItemAttrs(pendingItem));\r\n }\r\n\r\n public cancelItem(item: CombinedUpload): void {\r\n if (item.status === CombinedUploadStatus.Uploading) {\r\n this.videoUploadService.cancelUpload(item.id);\r\n return;\r\n }\r\n\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: item.id });\r\n this.pendingItemsService.clearPendingItem(pendingItem);\r\n }\r\n\r\n public retryItem(item: CombinedUpload): void {\r\n if (item.status === CombinedUploadStatus.Uploading)\r\n Core.ErrorHelper.throw(new DevError('Cannot retry uploading items.'));\r\n\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: item.id });\r\n this.pendingItemsService.retryPendingItem(pendingItem, () => {\r\n this.pendingItemsService.forceFetchPendingItems();\r\n });\r\n }\r\n\r\n public editUpload(item: CombinedUpload): void {\r\n if (item.status !== CombinedUploadStatus.Uploading)\r\n return;\r\n\r\n const upload = this.uploads.get(item.id);\r\n\r\n /**\r\n * If the upload has sending set to true the VideoUploadService is in the middle of \r\n * posting the video to v2/process so we can't let the user edit the video via the edit upload form.\r\n * \r\n * This will only happen if the user clicks edit exactly as the video is posted\r\n */\r\n if (upload.get('sending'))\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.EDIT_UPLOAD,\r\n args: [item.id]\r\n });\r\n }\r\n\r\n public updateUploadMetadata(videoId: string, name: string): void {\r\n const item = this.combined.findWhere({ videoId });\r\n\r\n if (!item) return;\r\n\r\n item.set({ name });\r\n }\r\n\r\n public getCollection(): Core.Collection {\r\n return this.combined;\r\n }\r\n}","import { Store } from 'redux';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { BaseLibraryDataService, SharedDataServices, SharedWithStatements, Folder, LibraryAPIResponse } from '@clickview/shared';\r\n\r\nconst requests = {\r\n getLibraries: (success?: (data: LibraryAPIResponse[]) => void): Flight.Request => {\r\n return {\r\n url: '/api/domain/v2/me/libraries?type=customlibrary&type=unpublishedcustomlibrary',\r\n key: 'libraries',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getFolder: (id: string, success?: (data: Core.Model) => void): Flight.Request => {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.FOLDER}`,\r\n key: `folder:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightLibraryDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightLibraryDataService implements BaseLibraryDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightLibraryDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Library;\r\n }\r\n\r\n public get channelName(): string {\r\n return 'library:data:service';\r\n }\r\n\r\n public getLibraries(callback?: (data: Core.Collection) => void): Core.Collection {\r\n const request = requests.getLibraries((libraries: LibraryAPIResponse[]) => {\r\n Radio.channel(this.channelName).trigger('libraries:sync', libraries);\r\n\r\n callback && callback(new Core.Collection(libraries));\r\n });\r\n\r\n const flightResponse = Flight.getResponse<LibraryAPIResponse[]>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Collection(flightResponse.data.map(res => res.data));\r\n }\r\n\r\n public getFolder(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getFolder(id, (folder: Folder) => callback && callback(new Core.Model(folder)));\r\n const flightResponse = Flight.getResponse<Folder>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Store } from 'redux';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { BaseSeriesDataService, SharedDataServices, SharedWithStatements, SharedDataChannels, Series } from '@clickview/shared';\r\n\r\nconst requests = {\r\n getOne(id: string, success?: (data: Series) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.SERIES}`,\r\n key: `series:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightSeriesDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightSeriesDataService implements BaseSeriesDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightSeriesDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Series;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.SERIES;\r\n }\r\n\r\n public getSeries(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getOne(id, (series: Series) => callback && callback(new Core.Model(series)));\r\n const flightResponse = Flight.getResponse<Series>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Core, Flight, FunctionHelper } from '@clickview/common';\r\nimport { BaseVideoDataService, Video } from '@clickview/shared';\r\nimport { Store } from 'redux';\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { DataServices } from 'shared/constants';\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightVideoDataService implements BaseVideoDataService<Core.Collection> {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.Video;\r\n }\r\n\r\n public clearVideoCache(): void {\r\n this.store.dispatch<Flight.InvalidateAction>({\r\n type: Flight.Actions.INVALIDATE,\r\n keys: ['video'],\r\n request: null\r\n });\r\n }\r\n public getVideos(\r\n ids: string[],\r\n callback?: (videos: Core.Collection<Core.Model>) => void\r\n ): Core.Collection {\r\n const wrappedCallback = (videos: Video[]) => {\r\n if (!FunctionHelper.isFunction(callback))\r\n return;\r\n\r\n callback(new Core.Collection(videos));\r\n };\r\n const request = VideoRequests.videos(ids, wrappedCallback);\r\n const response = Flight.getResponse<Video[]>(this.store.getState(), request.key);\r\n\r\n if (response.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n else\r\n wrappedCallback(response.data);\r\n return new Core.Collection(response.data);\r\n }\r\n}","import { Store } from 'redux';\r\nimport { Core, Flight, HashObject, HttpVerbs } from '@clickview/common';\r\nimport { BaseVideoUploadDataService, VideoOrigin, PendingProcessOrigin } from '@clickview/shared';\r\nimport { DataServices } from 'shared/constants';\r\n\r\nconst pendingItemRequests = {\r\n delete(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:clear:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n cancel(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/cancel?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:cancel:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n retry(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/retry?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:retry:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.POST\r\n };\r\n },\r\n\r\n get(id: string, success?: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/${id}`,\r\n key: `pending:item:${id}`,\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getAll(success: (items: HashObject[]) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process?destination=2&status=1&status=-1',\r\n key: 'pending',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n completeUpload(completeRequest: CompletePendingItemRequest, success: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process',\r\n key: `complete:upload:${completeRequest.id}`,\r\n type: HttpVerbs.POST,\r\n success,\r\n data: completeRequest\r\n };\r\n }\r\n};\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\ninterface CompletePendingItemVideo {\r\n name: string;\r\n description?: string;\r\n}\r\n\r\ninterface CompletePendingItemRequest {\r\n id: string;\r\n userId: string;\r\n customerId: string;\r\n libraryId: string;\r\n categoryId: string;\r\n fileUrl: string;\r\n pendingProcessOrigin: PendingProcessOrigin;\r\n origin: VideoOrigin;\r\n video: CompletePendingItemVideo;\r\n}\r\n\r\nexport class FlightVideoUploadDataService implements BaseVideoUploadDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.VideoUpload;\r\n }\r\n\r\n public clearPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.delete(ids, callback));\r\n }\r\n public cancelPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.cancel(ids, callback));\r\n }\r\n public retryPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.retry(ids, callback));\r\n }\r\n public getPendingItem(id: string, callback: (item: Core.Model) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.get(id, (data: any) => {\r\n callback(new Core.Model(data));\r\n }));\r\n }\r\n public getPendingItems(callback: (items: HashObject[]) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.getAll(callback));\r\n }\r\n public completeVideoUpload(request: CompletePendingItemRequest, callback?: (item: HashObject) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.completeUpload(request, callback));\r\n }\r\n}","import { BaseVideoUploadService, UserDataService, UploadEventNames, BasePendingItemsService, PendingProcessOrigin } from '@clickview/shared';\r\nimport { FlightVideoUploadDataService } from './FlightVideoUploadDataService';\r\nimport { InstanceManager, Core, HashObject, LanguageService } from '@clickview/common';\r\nimport { VideoOrigin } from '@clickview/shared';\r\nimport { Services, DataServices } from 'shared/constants';\r\n\r\nexport class VideoUploadService extends BaseVideoUploadService {\r\n private videoUploadDataService: FlightVideoUploadDataService;\r\n private pendingItemsService: BasePendingItemsService;\r\n private userDataService: UserDataService;\r\n\r\n public initialize(): void {\r\n super.initialize();\r\n\r\n this.videoUploadDataService = InstanceManager.getInstance(DataServices.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n this.userDataService = InstanceManager.getInstance(DataServices.User, this);\r\n\r\n this.listenTo(this.channelName, UploadEventNames.FILES_ADDED, this.lockUnload);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_COMPLETE, this.unlockUnload);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_CANCELLED, this.unlockUnload);\r\n }\r\n\r\n private lockUnload(): void {\r\n /**\r\n * TODO: Move NavLockService out of Library Editor into Shared\r\n */\r\n $(window).on('beforeunload', (e: any) => {\r\n const phrase = LanguageService.getPhrase('shared.uploadService', 'navLock');\r\n e.returnValue = phrase;\r\n return phrase;\r\n });\r\n }\r\n\r\n private unlockUnload(): void {\r\n const collection = this.getCollection();\r\n\r\n if (collection.some(upload => upload.get('progress') < 100))\r\n return;\r\n\r\n $(window).off('beforeunload');\r\n }\r\n\r\n private getUpload(file: File): Core.Model {\r\n const fileId = this.uploader.getId(file);\r\n\r\n return this.getCollection().get(fileId);\r\n }\r\n\r\n private completeUpload(upload: Core.Model, response: any): void {\r\n upload.set('sending', true);\r\n this.userDataService.getCurrentUser((user: HashObject) => {\r\n this.userDataService.getWorkspace((workspace: HashObject) => {\r\n this.videoUploadDataService.completeVideoUpload({\r\n id: upload.get('id'),\r\n userId: user.id,\r\n customerId: user.customerId,\r\n libraryId: workspace.id,\r\n categoryId: workspace.categoryTree.id,\r\n pendingProcessOrigin: PendingProcessOrigin.Upload,\r\n // TODO: Update this once cam has created a new origin value in master\r\n origin: VideoOrigin.Curator,\r\n fileUrl: response.url,\r\n video: { name: upload.get('name'), description: upload.get('description') }\r\n }, (item: any) => {\r\n upload.set('pendingProcessId', item.pendingProcessId);\r\n this.pendingItemsService.forceFetchPendingItems({\r\n resetTimeout: true,\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n protected onSuccess(file: File, response: any): void {\r\n super.onSuccess(file, response);\r\n\r\n const upload = this.getUpload(file);\r\n\r\n /**\r\n * editingMetadata is set by the EditUploadView.\r\n * If it's set, we wait till the user is done editing the metadata before\r\n * we post the data\r\n */\r\n if (upload.get('editingMetadata')) {\r\n this.listenToOnce(upload, 'change:editingMetadata', () => {\r\n this.completeUpload(upload, response);\r\n });\r\n } else {\r\n this.completeUpload(upload, response);\r\n }\r\n }\r\n}","export * from './FlightSeriesDataService';\r\nexport * from './FlightLibraryDataService';\r\nexport * from './VideoUploadService';\r\nexport * from './CombineUploadsService';\r\nexport * from './FlightVideoDataService';\r\nexport * from './FlightVideoUploadDataService';","import { Core } from '@clickview/common';\r\nimport { Video, VideoAction } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport function getVideoActionAppLink(video: Video, action: VideoAction): Core.AppLink {\r\n switch (action) {\r\n case VideoAction.AddToPlaylist:\r\n return { application: AppChannels.PLAYLISTS, action: Actions.Playlists.ADD_TO_PLAYLIST, args: [video.id]};\r\n case VideoAction.Share:\r\n return { application: AppChannels.DEFAULT, action: 'index' };\r\n }\r\n}","export * from './LiteAppLinkUtils';","import { useService } from '@clickview/common';\r\nimport { PopupViewProps, Popup, EditVideoDetails, UpdateVideoRequest } from '@clickview/shared';\r\nimport { Services } from 'shared/constants';\r\nimport * as React from 'react';\r\nimport { VideoUploadService } from 'shared/services';\r\n\r\ninterface EditUploadViewProps {\r\n uploadId: string;\r\n}\r\n\r\nexport function EditUploadView(props: EditUploadViewProps & PopupViewProps): JSX.Element {\r\n const { uploadId } = props;\r\n\r\n const videoUploadService = useService<VideoUploadService>(Services.VideoUpload);\r\n\r\n var upload = videoUploadService.getCollection().get(uploadId);\r\n\r\n /**\r\n * We set editingMetadata to true while the user has the edit form open\r\n * This prevents the VideoUploadService from posting till the user is done\r\n */\r\n if (!upload.get('editingMetadata'))\r\n upload.set('editingMetadata', true);\r\n\r\n const closePopup = () => {\r\n upload.set('editingMetadata', false);\r\n props.closePopup();\r\n };\r\n\r\n const saveUpload = (data: UpdateVideoRequest) => {\r\n upload.set(data);\r\n closePopup();\r\n };\r\n\r\n return (\r\n <Popup closePopup={closePopup} title={'Edit upload details'}>\r\n <EditVideoDetails\r\n video={{ name: upload.get('name'), description: upload.get('description'), productionYear: 0 }}\r\n saveVideo={saveUpload}\r\n onClickCancel={closePopup} />\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Flight, useService } from '@clickview/common';\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { Video, Popup, PopupViewProps, UpdateVideoRequest, EditVideoDetails } from '@clickview/shared';\r\nimport { CombineUploadsService } from 'shared/services';\r\n\r\ninterface EditVideoViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditVideoView(props: EditVideoViewProps & PopupViewProps): JSX.Element {\r\n const { id, closePopup } = props;\r\n\r\n const combinedUploadService = useService<CombineUploadsService>('combine:uploads:service');\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(id));\r\n const dispatch = useDispatch();\r\n\r\n const saveVideo = (data: UpdateVideoRequest) => {\r\n data.id = video.data.id;\r\n const request = VideoRequests.updateVideo(data, () => {\r\n combinedUploadService.updateUploadMetadata(data.id, data.name);\r\n closePopup();\r\n });\r\n Flight.fetch(dispatch, request);\r\n };\r\n\r\n if (!video.data)\r\n return <></>;\r\n\r\n return (\r\n <Popup closePopup={closePopup} title={'Edit video details'}>\r\n <EditVideoDetails\r\n video={video.data}\r\n saveVideo={saveVideo}\r\n onClickCancel={closePopup} />\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core, LanguageService, Flight } from '@clickview/common';\r\nimport {\r\n BannerHeader,\r\n VideoActionsContext,\r\n Config,\r\n VideoList,\r\n VideoCollection,\r\n Video,\r\n Series,\r\n ConfigRequests\r\n} from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { getVideoActionAppLink } from 'shared/utils';\r\n\r\nconst namespace = 'shared.favoriteVideos';\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [series.id]\r\n});\r\n\r\ninterface FavoriteVideosViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function FavoriteVideosView(props: FavoriteVideosViewProps): JSX.Element {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const favoriteVideos = Flight.useBasicFetch<VideoCollection>(VideoRequests.favoriteVideos(props.cursor));\r\n\r\n return (\r\n <VideoActionsContext.Provider value={{ getActionAppLink: getVideoActionAppLink }}>\r\n {!!config.data &&\r\n <BannerHeader\r\n heading={LanguageService.getPhrase(namespace, 'header')}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n />\r\n }\r\n {!!favoriteVideos.data &&\r\n <VideoList\r\n videos={favoriteVideos.data.data}\r\n cursors={favoriteVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n />\r\n }\r\n </VideoActionsContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\nimport { Flight, ViewModelService, BackboneViewWrapper, LanguageService } from '@clickview/common';\r\nimport { SvgContainer, cvSvgLibrary, CurrentUser, IconButton, NotificationHeaderView, SearchBarView, Query, UserRequests, SearchAppContext, Text } from '@clickview/shared';\r\n\r\nimport { UserOptions, UploadFileSelect } from 'shared/components';\r\n\r\nimport styles from './header.scss';\r\n\r\nfunction ClickViewLogo(): React.ReactElement {\r\n return (\r\n <svg viewBox='0 0 434 71'>\r\n <g>\r\n <path fill='#000000' d='M114.44 56.57l3.5 3.5a32.87 32.87 0 0 1-25.16 11.26c-19.63 0-33.62-15.54-33.62-35.16C59.16 16.55 73.16 1 92.78 1a32.31 32.31 0 0 1 24.19 10.4l-3.6 3.3a27.32 27.32 0 0 0-20.59-8.74c-16.91 0-28.39 13.5-28.39 30.21s11.48 30.21 28.39 30.21a28.08 28.08 0 0 0 21.66-9.81zM126.64 1h4.55v70.22h-4.73L126.64 1zm17.3 10.6a3.7 3.7 0 1 1 0 7.4 3.7 3.7 0 0 1 0-7.4zm-2.41 15.07h4.81v44.56h-4.81V26.67zm48 33.15l3.33 3.15a21.8 21.8 0 0 1-17.31 8.61c-12.59 0-21.76-10-21.76-22.22 0-12.22 9.17-22.22 21.76-22.22a21.84 21.84 0 0 1 16.85 8l-3.43 3.06a17.15 17.15 0 0 0-13.42-6.3c-10.09 0-16.76 8.15-16.76 17.5s6.67 17.5 16.76 17.5a17.38 17.38 0 0 0 13.98-7.08zm14.99-9.33v20.74h-4.73V1.01h4.73v47.75l20.74-19.02h6.64l-21.56 19.84L234 71.23h-7.01l-22.47-20.74z'/>\r\n <path fill='#F8981D' d='M304.09 19.4a5.56 5.56 0 1 1 0-11.12 5.56 5.56 0 0 1 0 11.12zm-5.56 7.27h11.11v44.56h-11.11V26.67zm61.42 22.15c0 .81 0 2.42-.09 4h-31.75c.8 3.77 5.2 8.61 11.93 8.61a17.11 17.11 0 0 0 11.66-4.31l5.38 8.16a27.23 27.23 0 0 1-17 6.1c-12.92 0-22.88-9.87-22.88-22.34s9.06-22.33 21.35-22.33c11.62-.04 21.4 9.02 21.4 22.11zm-10.77-3.76c-.18-3.68-3.58-8.62-10.67-8.62-6.91 0-10.05 4.85-10.4 8.62h21.07zM385.92 71h-6.42l-19.64-44.37h13.97l9.16 23.98 9.72-23.98h8.31l9.63 23.98 9.16-23.98h13.97L414.24 71h-6.52l-10.85-23.7L385.92 71zm-120.22.35h-6L226.11 1.01h17.01l19.42 44.18 18.08-44.18h16.91L265.7 71.35zM0 1l41 35L0 71V1z'/>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n\r\ninterface HeaderViewProps {\r\n toggleLeftNav: () => void;\r\n showLeftNavToggle: boolean;\r\n}\r\n\r\nexport function HeaderView(props: HeaderViewProps): React.ReactElement {\r\n const userRequest = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser);\r\n const user = userRequest.data;\r\n\r\n const searchCtx = React.useContext(SearchAppContext);\r\n const showSearch = searchCtx.getSearchInNav();\r\n\r\n return (\r\n <nav className={`navbar navbar-expanded sticky-top ${styles.nav}`}>\r\n\r\n <div className='justify-content-start'>\r\n {props.showLeftNavToggle &&\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Handle}\r\n className={`${styles.hamburger} ml-2 mr-3`}\r\n onClick={props.toggleLeftNav}\r\n />}\r\n\r\n <a className={`navbar-brand text-hide align-top ${styles.logoContainer} d-inline-block'`} href='/'>\r\n <ClickViewLogo />\r\n </a>\r\n </div>\r\n\r\n {showSearch &&\r\n <div className='justify-content-center'>\r\n <BackboneViewWrapper\r\n className={`container ${styles.searchBarNavContainer}`}\r\n view={SearchBarView}\r\n options={{\r\n model: ViewModelService.get<Query>('search', { ctor: Query }),\r\n disableMask: true\r\n }}\r\n />\r\n </div>\r\n }\r\n\r\n <div className={`d-flex align-items-center justify-content-end pr-1 ${styles.actionButtons}`}>\r\n {\r\n !!user && <UploadFileSelect hideButtonText={showSearch}/>\r\n }\r\n <BackboneViewWrapper view={NotificationHeaderView} className='ml-2 pl-2' />\r\n\r\n <UserOptions user={user} />\r\n </div>\r\n </nav>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav\":\"cv--nav--3RLQ9\",\"logoContainer\":\"cv--logoContainer--UIlc9\",\"searchBar\":\"cv--searchBar--2E7RQ\",\"actionButtons\":\"cv--actionButtons--2HygL\",\"hamburger\":\"cv--hamburger--2BRko\",\"searchBarNavContainer\":\"cv--searchBarNavContainer--2bUnK\"};","export * from './favorite-videos/FavoriteVideosView';\r\nexport * from './header/HeaderView';\r\nexport * from './left-nav/LeftNavView';\r\nexport * from './play/PlayView';\r\nexport * from './my-uploads/MyUploadsView';\r\nexport * from './series/SeriesView';\r\nexport * from './play-shared/PlaySharedView';\r\nexport * from './edit-video/EditVideoView';\r\nexport * from './edit-upload/EditUploadView';","import * as React from 'react';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\n\r\nimport { Core, LanguageService } from '@clickview/common';\r\nimport { AppLink } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\nconst namespace = 'shared.leftNav';\r\n\r\nexport enum LeftNavState {\r\n Open,\r\n Collapsed,\r\n Hidden\r\n}\r\n\r\ninterface LeftNavItemProps {\r\n name: string;\r\n appLink?: Core.AppLink;\r\n}\r\n\r\nconst LeftNavItem = (props: LeftNavItemProps): React.ReactElement => (\r\n <AppLink className={`${styles.leftNavAnchor} d-block my-3`} appLink={props.appLink}>\r\n <span className={`${styles.iconPlaceholder}`}></span>\r\n <span className={`${styles.leftNavText}`}>{props.name}</span>\r\n </AppLink>\r\n);\r\n\r\ninterface LeftNavViewProps {\r\n navState: LeftNavState;\r\n}\r\n\r\nexport const LeftNavView = React.memo(function(props: LeftNavViewProps): React.ReactElement {\r\n if (props.navState === LeftNavState.Hidden)\r\n return <></>;\r\n\r\n const collapsed = props.navState === LeftNavState.Collapsed;\r\n\r\n const getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\n /**\r\n * TODO: Set up applinks for all of these pages\r\n */\r\n return (\r\n <nav className={`${styles.leftNav} ${collapsed ? styles.leftNavCollapsed : ''}`}>\r\n <Scrollbars height='100%'>\r\n <LeftNavItem name={getPhrase('home')} appLink={{\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }} />\r\n <LeftNavItem\r\n name={getPhrase('myPlaylists')}\r\n appLink={{ application: AppChannels.PLAYLISTS, action: Actions.Playlists.HOME }}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('myUploads')}\r\n appLink={{ application: AppChannels.DEFAULT, action: Actions.Default.MY_UPLOADS }}\r\n />\r\n <LeftNavItem name={getPhrase('following')} />\r\n <LeftNavItem\r\n name={getPhrase('favouritedVideos')}\r\n appLink={{ application: AppChannels.DEFAULT, action: Actions.Default.FAVORITE_VIDEOS }}\r\n\r\n />\r\n {!collapsed &&\r\n <>\r\n <hr />\r\n <LeftNavItem name={getPhrase('watchHistory')} />\r\n <LeftNavItem name={getPhrase('myClassrooms')} />\r\n </>\r\n }\r\n </Scrollbars>\r\n </nav>\r\n );\r\n});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"leftNav\":\"cv--leftNav--3jVyN\",\"iconPlaceholder\":\"cv--iconPlaceholder--1ud9G\",\"leftNavAnchor\":\"cv--leftNavAnchor--3A_-8\",\"leftNavText\":\"cv--leftNavText--3qbRh\",\"leftNavCollapsed\":\"cv--leftNavCollapsed--2idO9\"};","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\nimport { Text } from '@clickview/shared';\r\n\r\nconst namespace = 'shared.myUploads';\r\n\r\nexport function DismissibleAlert(): JSX.Element {\r\n const [ show, setShow ] = React.useState(!localStorage.getItem('uploadInfoDismissed'));\r\n\r\n const onDismiss = () => {\r\n localStorage.setItem('uploadInfoDismissed', '1');\r\n setShow(false);\r\n };\r\n\r\n if (!show)\r\n return <></>;\r\n\r\n return (\r\n <Alert variant={'info'} onClose={onDismiss} dismissible>\r\n <Text namespace={namespace} phrase={'alertMessage'} /><br />\r\n <small><Text namespace={namespace} phrase={'alertSecondaryMessage'} /></small>\r\n </Alert>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight, LanguageService, Core, useService } from '@clickview/common';\r\nimport {\r\n BannerHeader,\r\n Config,\r\n Text,\r\n VideoCollection,\r\n Video,\r\n Series,\r\n ActionOptions,\r\n cvSvgLibrary,\r\n VideoActionsContext,\r\n Library,\r\n VideoAction,\r\n VideoList,\r\n ConfigRequests,\r\n UserRequests\r\n} from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { useGetUploadingItems } from './useGetUploadingItems';\r\nimport { UploadingItem } from 'shared/components';\r\nimport { CombinedUpload, CombinedUploadStatus, CombineUploadsService } from 'shared/services';\r\nimport { DismissibleAlert } from './DismissableAlert';\r\n\r\n/**\r\n * This will need to change when this is moved into its own application directory.\r\n */\r\nconst namespace = 'shared.myUploads';\r\n\r\n// This must be a function as the LanguageService config won't be set until runtime.\r\nconst getHeaderActions = (): ActionOptions[] => ([\r\n {\r\n label: LanguageService.getPhrase(namespace, 'share'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Share,\r\n className: 'btn btn-light',\r\n button: true\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'edit'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Edit,\r\n className: 'btn btn-light',\r\n button: true\r\n }\r\n]);\r\n\r\nfunction getVideoActions(): VideoAction[] {\r\n return [\r\n VideoAction.Edit,\r\n VideoAction.AddToPlaylist,\r\n VideoAction.Share\r\n ];\r\n}\r\n\r\nfunction getVideoActionAppLink(video: Video, action: VideoAction): Core.AppLink {\r\n switch (action) {\r\n case VideoAction.Edit:\r\n return { application: AppChannels.DEFAULT, action: Actions.Default.EDIT_VIDEO, args: [video.id]};\r\n case VideoAction.Share:\r\n return { application: AppChannels.DEFAULT, action: 'index', args: [video.id]};\r\n case VideoAction.AddToPlaylist:\r\n return { application: AppChannels.PLAYLISTS, action: 'add:to:playlist', args: [video.id]};\r\n }\r\n}\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [series.id]\r\n});\r\n\r\ninterface MyUploadsViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function MyUploadsView(props: MyUploadsViewProps): JSX.Element {\r\n\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const workspace = Flight.useBasicFetch<Library>(UserRequests.workspace);\r\n\r\n const workspaceRequest = workspace.data && VideoRequests.workspace(workspace.data.id, props.cursor);\r\n const workspaceVideos = Flight.useGetResponse<VideoCollection>(workspaceRequest && workspaceRequest.key);\r\n const fetchData = Flight.useGetFetch(workspaceRequest);\r\n\r\n /**\r\n * Get reference to the combined service even though useGetUploadingItems does it too\r\n * so that we can provide the callbacks\r\n */\r\n const combinedUploadService = useService<CombineUploadsService>('combine:uploads:service');\r\n\r\n /**\r\n * fetchData will be undefined on the first run through of this view because\r\n * the workspace.data will be null, so we pass a dependency of !workspace.data\r\n * so this callback is re-created once we have wokspace.data and the fetchData\r\n * is properly encapsulated.\r\n */\r\n const items = useGetUploadingItems(() => {\r\n fetchData && fetchData();\r\n }, [!!workspace.data]);\r\n\r\n /**\r\n * Using React.useCallback because this component will render\r\n * every time a chunk is loaded and every time the pending items\r\n * is fetched\r\n */\r\n const onClickDelete = React.useCallback((item: CombinedUpload) => {\r\n combinedUploadService.cancelItem(item);\r\n }, []);\r\n const onClickAlternate = React.useCallback((item: CombinedUpload) => {\r\n switch (item.status) {\r\n case CombinedUploadStatus.Errored:\r\n combinedUploadService.retryItem(item);\r\n return;\r\n case CombinedUploadStatus.Processing:\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.EDIT_VIDEO,\r\n args: [item.videoId]\r\n });\r\n return;\r\n case CombinedUploadStatus.Uploading:\r\n combinedUploadService.editUpload(item);\r\n break;\r\n default:\r\n // This should never happen\r\n }\r\n }, []);\r\n\r\n if (workspace.shouldFetch || !workspace.data) {\r\n return <></>;\r\n }\r\n\r\n if (workspaceVideos.shouldFetch)\r\n fetchData();\r\n\r\n if (!config.data || !workspaceVideos.data)\r\n return <></>;\r\n\r\n return (\r\n <VideoActionsContext.Provider\r\n value={{\r\n videoActions: getVideoActions(),\r\n getActionAppLink: getVideoActionAppLink\r\n }}>\r\n <BannerHeader\r\n heading={LanguageService.getPhrase(namespace, 'header')}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n actions={getHeaderActions()}\r\n />\r\n <div>\r\n <p className='pt-3'><Text namespace={namespace} phrase='description' /></p>\r\n <DismissibleAlert />\r\n {items.map(item => <UploadingItem\r\n item={item}\r\n onClickAlternate={onClickAlternate}\r\n onClickDelete={onClickDelete}\r\n key={item.id}\r\n />)}\r\n <VideoList\r\n videos={workspaceVideos.data.data}\r\n cursors={workspaceVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n />\r\n </div>\r\n </VideoActionsContext.Provider>\r\n );\r\n}","import { useService, TimeHelper } from '@clickview/common';\r\nimport * as React from 'react';\r\nimport { CombineUploadsService, CombinedUpload } from 'shared/services';\r\n\r\nexport function useGetUploadingItems(onRemove: () => void, dependencies: React.DependencyList): CombinedUpload[] {\r\n const combineUploadsService = useService<CombineUploadsService>('combine:uploads:service');\r\n\r\n const [ , setUpdate ] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n const collection = combineUploadsService.getCollection();\r\n collection.off('add remove change');\r\n collection.on('add remove change', () => {\r\n setUpdate(s => !s);\r\n });\r\n collection.on('remove', onRemove);\r\n return () => collection.off('add remove change');\r\n }, dependencies);\r\n\r\n return combineUploadsService.getCollection().toJSON();\r\n}","import * as React from 'react';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { Video, VideoCollection } from '@clickview/shared';\r\n\r\nimport { PlayerContext } from 'shared/contexts';\r\nimport { PlayPage } from 'shared/components';\r\nimport { ShareRequests } from 'shared/flight-requests/ShareRequests';\r\nimport { VideoRequests } from 'shared/flight-requests';\r\n\r\ninterface PlayViewProps {\r\n shortCode: string;\r\n}\r\n\r\nexport function PlaySharedView(props: PlayViewProps): React.ReactElement {\r\n const { setVideo } = React.useContext(PlayerContext);\r\n\r\n const video = Flight.useBasicFetch<Video>(ShareRequests.sharedResource(props.shortCode));\r\n const relatedVideos = Flight.useBasicFetch<VideoCollection>(VideoRequests.favoriteVideos(null));\r\n\r\n React.useEffect(() => {\r\n if (!video.data)\r\n return;\r\n\r\n setVideo(video.data);\r\n }, [!!video.data]);\r\n\r\n if (!video.data)\r\n return <></>;\r\n\r\n return (\r\n <PlayPage\r\n video={video.data}\r\n relatedVideos={relatedVideos.data ? relatedVideos.data.data : null}\r\n />\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { Video, VideoCollection } from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { PlayerContext } from 'shared/contexts';\r\nimport { PlayPage } from 'shared/components';\r\n\r\ninterface PlayViewProps {\r\n id: string;\r\n}\r\n\r\nexport function PlayView(props: PlayViewProps): React.ReactElement {\r\n const { setVideo } = React.useContext(PlayerContext);\r\n\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\r\n const relatedVideos = Flight.useBasicFetch<VideoCollection>(VideoRequests.favoriteVideos(null));\r\n\r\n React.useEffect(() => {\r\n setVideo(video.data);\r\n }, [!!video.data]);\r\n\r\n if (!video.data)\r\n return <></>;\r\n\r\n return (\r\n <PlayPage\r\n video={video.data}\r\n relatedVideos={relatedVideos.data ? relatedVideos.data.data : null}\r\n setFavorite={console.log}\r\n />\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight, LanguageService, Core } from '@clickview/common';\r\nimport { BannerHeader, Series, Config, VideoList, Video, Breadcrumbs, BreadcrumbType, Classification, VideoCollection, ActionOptions, cvSvgLibrary, PartialBreadcrumbs, PartialVideoList, BaseObject, ConfigRequests } from '@clickview/shared';\r\n\r\nimport { SeriesRequests } from 'shared/flight-requests';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\n/**\r\n * This will need to change when this is moved into its own application directory.\r\n */\r\nconst namespace = 'shared.series';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\n// Update this applink when we pull dashboard in\r\nconst getClassificationAppLink = (classification: Classification): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [classification.id]\r\n});\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n});\r\n\r\nconst getHeaderActions = (): ActionOptions[] => ([\r\n {\r\n label: LanguageService.getPhrase(namespace, 'share'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Share,\r\n className: 'btn btn-light mr-2',\r\n button: true\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'follow'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Edit, // TODO: Change to \"Follow\" icon\r\n className: 'btn btn-light',\r\n button: true\r\n }\r\n]);\r\n\r\ninterface SeriesViewProps {\r\n id: string;\r\n classificationId?: string;\r\n cursor?: string;\r\n}\r\n\r\nexport function SeriesView(props: SeriesViewProps): JSX.Element {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.id));\r\n const seriesVideos = Flight.useBasicFetch<VideoCollection>(SeriesRequests.seriesVideos(props.id, props.cursor));\r\n\r\n let breadcrumbs: BaseObject[] = [series.data];\r\n if (props.classificationId) {\r\n const subjectPath = Flight.useBasicFetch<Classification[]>(SeriesRequests.breadcrumbs(props.classificationId));\r\n if (subjectPath.data) {\r\n breadcrumbs.unshift(...subjectPath.data);\r\n }\r\n }\r\n\r\n if (!seriesVideos.data || !config.data)\r\n return <></>;\r\n\r\n const heading = getPhrase('series', { seriesName: series.data.name });\r\n\r\n return (\r\n <>\r\n <BannerHeader\r\n heading={heading}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n backButtonAppLink={{\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }}\r\n backButtonText='Home' // this needs to be changed eventually\r\n actions={getHeaderActions()}\r\n />\r\n <div>\r\n <div className='border-bottom py-3 mb-3'>\r\n {(props.classificationId && breadcrumbs.length < 2)\r\n ? <PartialBreadcrumbs />\r\n : <Breadcrumbs\r\n currentItem={series.data}\r\n type={BreadcrumbType.Static}\r\n getItemAppLink={getClassificationAppLink}\r\n data={breadcrumbs}\r\n rootItem={{\r\n label: getPhrase('dashboard'),\r\n appLink: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.HOME\r\n }\r\n }}\r\n />\r\n }\r\n\r\n {series.data.description && (\r\n <p className='pt-3'>{series.data.description}</p>\r\n )}\r\n </div>\r\n\r\n {seriesVideos.data\r\n ? !seriesVideos.isFetching\r\n ? <VideoList\r\n videos={seriesVideos.data.data}\r\n cursors={seriesVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n />\r\n : <PartialVideoList />\r\n : <>Empty State</>\r\n }\r\n </div>\r\n </>\r\n );\r\n}","import './theme-overrides.scss';","// extracted by mini-css-extract-plugin","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_common__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_dashboard__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_playlists__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_shared__;","module.exports = __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_handlebars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_marked__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_bootstrap__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dropzone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_redux__;"],"sourceRoot":""}