@clickview/lite 0.0.24-rc.4 → 0.0.24

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 (194) hide show
  1. package/dist/css/11.chunk.css.map +1 -1
  2. package/dist/css/12.chunk.css.map +1 -1
  3. package/dist/css/13.chunk.css.map +1 -1
  4. package/dist/css/14.chunk.css.map +1 -1
  5. package/dist/css/15.chunk.css.map +1 -1
  6. package/dist/css/16.chunk.css.map +1 -1
  7. package/dist/css/17.chunk.css.map +1 -1
  8. package/dist/css/18.chunk.css.map +1 -1
  9. package/dist/css/20.chunk.css.map +1 -1
  10. package/dist/css/29.chunk.css.map +1 -1
  11. package/dist/css/3.chunk.css.map +1 -1
  12. package/dist/css/30.chunk.css.map +1 -1
  13. package/dist/css/31.chunk.css.map +1 -1
  14. package/dist/css/33.chunk.css.map +1 -1
  15. package/dist/css/38.chunk.css +11 -34
  16. package/dist/css/38.chunk.css.map +1 -1
  17. package/dist/css/4.chunk.css +3 -3
  18. package/dist/css/44.chunk.css +11 -3
  19. package/dist/css/44.chunk.css.map +1 -1
  20. package/dist/css/45.chunk.css +38 -0
  21. package/dist/css/45.chunk.css.map +1 -0
  22. package/dist/css/5.chunk.css.map +1 -1
  23. package/dist/css/52.chunk.css +52 -0
  24. package/dist/css/52.chunk.css.map +1 -0
  25. package/dist/css/59.chunk.css +14 -0
  26. package/dist/css/59.chunk.css.map +1 -0
  27. package/dist/css/6.chunk.css.map +1 -1
  28. package/dist/css/60.chunk.css +43 -0
  29. package/dist/css/60.chunk.css.map +1 -0
  30. package/dist/en.json +1 -1
  31. package/dist/libs/shared/src/components/curriculum-links/CurriculumLinks.d.ts +9 -0
  32. package/dist/libs/shared/src/components/widgets/items/resource-widget-item/ResourceWidgetItem.d.ts +12 -0
  33. package/dist/libs/shared/src/enums/CurriculumType.d.ts +6 -0
  34. package/dist/libs/shared/src/flight-requests/ClassificationRequests.d.ts +1 -0
  35. package/dist/libs/shared/src/flight-requests/ResourceRequests.d.ts +11 -0
  36. package/dist/libs/shared/src/interfaces/collections/SubtitleCollection.d.ts +3 -0
  37. package/dist/libs/shared/src/interfaces/models/Curriculum.d.ts +14 -0
  38. package/dist/libs/shared/src/interfaces/models/FileUpload.d.ts +20 -0
  39. package/dist/libs/shared/src/interfaces/models/Language.d.ts +4 -0
  40. package/dist/libs/shared/src/interfaces/models/Pdf.d.ts +4 -0
  41. package/dist/libs/shared/src/interfaces/models/Subtitle.d.ts +7 -0
  42. package/dist/libs/shared/src/interfaces/models/index.d.ts +1 -0
  43. package/dist/libs/shared/src/interfaces/requests/UpdateObjectChannel.d.ts +3 -0
  44. package/dist/libs/shared/src/interfaces/requests/UpdateObjectRating.d.ts +3 -0
  45. package/dist/libs/shared/src/interfaces/requests/UpdateResourceRequest.d.ts +3 -0
  46. package/dist/projects/lite/src/app.d.ts +1 -0
  47. package/dist/projects/lite/src/shared/components/play-page/PlayPage.d.ts +2 -1
  48. package/dist/projects/lite/src/shared/components/synopsis/Synopsis.d.ts +3 -1
  49. package/dist/projects/lite/src/shared/components/video-details/VideoDetails.d.ts +2 -0
  50. package/dist/projects/lite/src/shared/constants/MinimumGlanceHeight.d.ts +1 -0
  51. package/dist/projects/lite/src/shared/views/preview-pdf/PreviewPdfView.d.ts +7 -0
  52. package/dist/scripts/0-b02efe11fb.chunk.js +1 -0
  53. package/dist/scripts/1-4f19a5caea.chunk.js +17 -0
  54. package/dist/scripts/1.chunk.js.map +1 -1
  55. package/dist/scripts/10.chunk.js +484 -1203
  56. package/dist/scripts/10.chunk.js.map +1 -1
  57. package/dist/scripts/11-32e30d10ce.chunk.js +1 -0
  58. package/dist/scripts/11.chunk.js +289 -1388
  59. package/dist/scripts/11.chunk.js.map +1 -1
  60. package/dist/scripts/12-72a5373486.chunk.js +1 -0
  61. package/dist/scripts/12.chunk.js +1371 -283
  62. package/dist/scripts/12.chunk.js.map +1 -1
  63. package/dist/scripts/13-1cd85ad3ee.chunk.js +1 -0
  64. package/dist/scripts/13.chunk.js +361 -394
  65. package/dist/scripts/13.chunk.js.map +1 -1
  66. package/dist/scripts/14-3d60b8ee85.chunk.js +1 -0
  67. package/dist/scripts/14.chunk.js +793 -332
  68. package/dist/scripts/14.chunk.js.map +1 -1
  69. package/dist/scripts/15-90226fb996.chunk.js +1 -0
  70. package/dist/scripts/15.chunk.js +295 -214
  71. package/dist/scripts/15.chunk.js.map +1 -1
  72. package/dist/scripts/16-913b2535ea.chunk.js +1 -0
  73. package/dist/scripts/16.chunk.js +530 -434
  74. package/dist/scripts/16.chunk.js.map +1 -1
  75. package/dist/scripts/17-d6c19ccb60.chunk.js +1 -0
  76. package/dist/scripts/17.chunk.js +296 -170
  77. package/dist/scripts/17.chunk.js.map +1 -1
  78. package/dist/scripts/18-33efcac0c6.chunk.js +1 -0
  79. package/dist/scripts/18.chunk.js +265 -199
  80. package/dist/scripts/18.chunk.js.map +1 -1
  81. package/dist/scripts/19-2380200cfb.chunk.js +1 -0
  82. package/dist/scripts/19.chunk.js +7 -3
  83. package/dist/scripts/19.chunk.js.map +1 -1
  84. package/dist/scripts/2-53e37c2047.chunk.js +1 -0
  85. package/dist/scripts/2.chunk.js +18673 -622
  86. package/dist/scripts/2.chunk.js.map +1 -1
  87. package/dist/scripts/20-ca85f0514e.chunk.js +1 -0
  88. package/dist/scripts/20.chunk.js +1824 -221
  89. package/dist/scripts/20.chunk.js.map +1 -1
  90. package/dist/scripts/21-ef4a226771.chunk.js +1 -0
  91. package/dist/scripts/22-99c04e164f.chunk.js +1 -0
  92. package/dist/scripts/23-028eb81a43.chunk.js +1 -0
  93. package/dist/scripts/23.chunk.js +1 -1
  94. package/dist/scripts/23.chunk.js.map +1 -1
  95. package/dist/scripts/24-68f8df3eca.chunk.js +1 -0
  96. package/dist/scripts/24.chunk.js.map +1 -1
  97. package/dist/scripts/25-7ad07f87d4.chunk.js +1 -0
  98. package/dist/scripts/25.chunk.js.map +1 -1
  99. package/dist/scripts/26-f3dcacfe4f.chunk.js +1 -0
  100. package/dist/scripts/26.chunk.js +1 -1
  101. package/dist/scripts/26.chunk.js.map +1 -1
  102. package/dist/scripts/27-e844268f38.chunk.js +1 -0
  103. package/dist/scripts/28-853bc5de1f.chunk.js +1 -0
  104. package/dist/scripts/29-b164ecafe9.chunk.js +1 -0
  105. package/dist/scripts/29.chunk.js +435 -500
  106. package/dist/scripts/29.chunk.js.map +1 -1
  107. package/dist/scripts/3-a1bd8c9016.chunk.js +7 -0
  108. package/dist/scripts/3.chunk.js +625 -18676
  109. package/dist/scripts/3.chunk.js.map +1 -1
  110. package/dist/scripts/30-2cfcf52ea1.chunk.js +1 -0
  111. package/dist/scripts/30.chunk.js +634 -429
  112. package/dist/scripts/30.chunk.js.map +1 -1
  113. package/dist/scripts/31-e6a8291d2f.chunk.js +1 -0
  114. package/dist/scripts/31.chunk.js +371 -670
  115. package/dist/scripts/31.chunk.js.map +1 -1
  116. package/dist/scripts/32-7030dc98ed.chunk.js +1 -0
  117. package/dist/scripts/32.chunk.js +27 -54
  118. package/dist/scripts/32.chunk.js.map +1 -1
  119. package/dist/scripts/33-47b0ac90bd.chunk.js +1 -0
  120. package/dist/scripts/33.chunk.js +700 -312
  121. package/dist/scripts/33.chunk.js.map +1 -1
  122. package/dist/scripts/34-2de007b628.chunk.js +1 -0
  123. package/dist/scripts/34.chunk.js +3 -3
  124. package/dist/scripts/34.chunk.js.map +1 -1
  125. package/dist/scripts/35-d2fb66920b.chunk.js +1 -0
  126. package/dist/scripts/36-bc85df33de.chunk.js +1 -0
  127. package/dist/scripts/36.chunk.js.map +1 -1
  128. package/dist/scripts/37-e26652840b.chunk.js +1 -0
  129. package/dist/scripts/37.chunk.js +288 -464
  130. package/dist/scripts/37.chunk.js.map +1 -1
  131. package/dist/scripts/38-0b6a6b9619.chunk.js +1 -0
  132. package/dist/scripts/39-6549f483c6.chunk.js +1 -0
  133. package/dist/scripts/39.chunk.js +1 -1
  134. package/dist/scripts/39.chunk.js.map +1 -1
  135. package/dist/scripts/4-9e83a22d7a.chunk.js +1 -0
  136. package/dist/scripts/4.chunk.js +259 -1021
  137. package/dist/scripts/4.chunk.js.map +1 -1
  138. package/dist/scripts/40-8e6e9d285f.chunk.js +1 -0
  139. package/dist/scripts/41-2b44a2e66f.chunk.js +1 -0
  140. package/dist/scripts/42-9e75f420d8.chunk.js +1 -0
  141. package/dist/scripts/42.chunk.js.map +1 -1
  142. package/dist/scripts/43-1141245420.chunk.js +1 -0
  143. package/dist/scripts/44-9bc4201e0f.chunk.js +1 -0
  144. package/dist/scripts/45-5ded8ca3db.chunk.js +1 -0
  145. package/dist/scripts/46-2afd7ee1fb.chunk.js +1 -0
  146. package/dist/scripts/47-ab30686138.chunk.js +1 -0
  147. package/dist/scripts/48-d9cd99d55e.chunk.js +1 -0
  148. package/dist/scripts/49-f43a08f90b.chunk.js +1 -0
  149. package/dist/scripts/5-974660e17b.chunk.js +1 -0
  150. package/dist/scripts/5.chunk.js +1017 -259
  151. package/dist/scripts/5.chunk.js.map +1 -1
  152. package/dist/scripts/50-af699c531e.chunk.js +1 -0
  153. package/dist/scripts/51-aa7b835007.chunk.js +1 -0
  154. package/dist/scripts/52-805f7fe04d.chunk.js +1 -0
  155. package/dist/scripts/53-d75ca53045.chunk.js +1 -0
  156. package/dist/scripts/54-2e75bad46f.chunk.js +1 -0
  157. package/dist/scripts/55-ed637c4847.chunk.js +1 -0
  158. package/dist/scripts/55.chunk.js.map +1 -1
  159. package/dist/scripts/56-2ed3b5764b.chunk.js +1 -0
  160. package/dist/scripts/57-e51101c8a1.chunk.js +1 -0
  161. package/dist/scripts/58-9a32a6fb2d.chunk.js +1 -0
  162. package/dist/scripts/59-da8a8c97a9.chunk.js +1 -0
  163. package/dist/scripts/6-6ac39034e0.chunk.js +1 -0
  164. package/dist/scripts/6.chunk.js +291 -1250
  165. package/dist/scripts/6.chunk.js.map +1 -1
  166. package/dist/scripts/60-5713de53e2.chunk.js +1 -0
  167. package/dist/scripts/61-7d2ad17963.chunk.js +1 -0
  168. package/dist/scripts/62-a0a69501ac.chunk.js +1 -0
  169. package/dist/scripts/63-c921b87f3f.chunk.js +1 -0
  170. package/dist/scripts/64-87c1cf6985.chunk.js +1 -0
  171. package/dist/scripts/65-2322082836.chunk.js +1 -0
  172. package/dist/scripts/66-6d5356f6ce.chunk.js +1 -0
  173. package/dist/scripts/67-2e0d661c52.chunk.js +1 -0
  174. package/dist/scripts/7-5ac5be64dd.chunk.js +1 -0
  175. package/dist/scripts/7.chunk.js +1 -1
  176. package/dist/scripts/76.chunk.js +3 -3
  177. package/dist/scripts/76.chunk.js.map +1 -1
  178. package/dist/scripts/79.chunk.js +931 -347
  179. package/dist/scripts/79.chunk.js.map +1 -1
  180. package/dist/scripts/8-95563e3d36.chunk.js +1 -0
  181. package/dist/scripts/8.chunk.js +14 -920
  182. package/dist/scripts/8.chunk.js.map +1 -1
  183. package/dist/scripts/80.chunk.js +22 -313
  184. package/dist/scripts/80.chunk.js.map +1 -1
  185. package/dist/scripts/9.chunk.js +320 -17
  186. package/dist/scripts/9.chunk.js.map +1 -1
  187. package/dist/scripts/bundle-9ed1e126dd.min.js +15 -0
  188. package/dist/scripts/bundle.js +147 -121
  189. package/dist/scripts/bundle.js.map +1 -1
  190. package/dist/scripts/bundles.json +2 -2
  191. package/dist/scripts/pdf.worker.entry.worker.js +46239 -0
  192. package/dist/scripts/pdf.worker.entry.worker.js.map +1 -0
  193. package/dist/scripts/polyfills-2723daf478.min.js +1 -0
  194. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/TypeHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/search-bar/SearchBar.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/search-bar/SearchInput.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/search-bar/SearchUtils.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/search-bar/search-bar.scss?d22e"],"names":[],"mappings":"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","file":"scripts/14.chunk.js","sourcesContent":["export const TypeHelper = {\r\n isNumber(obj: any): boolean {\r\n return TypeHelper.isType(obj, 'number');\r\n },\r\n\r\n isString(obj: any): boolean {\r\n return TypeHelper.isType(obj, 'string');\r\n },\r\n\r\n isType(obj: any, type: string): boolean {\r\n return typeof obj === type;\r\n }\r\n};","import * as React from 'react';\r\nimport * as Autosuggest from 'react-autosuggest';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\n\r\nimport * as SearchUtils from './SearchUtils';\r\nimport { SearchInput } from './SearchInput';\r\n\r\nconst namespace = 'shared.searchBar';\r\n\r\nconst isFunction = FunctionHelper.isFunction;\r\n\r\ninterface SearchBarWrapperProps {\r\n renderAsForm: boolean;\r\n onSubmit: (event: React.FormEvent) => void;\r\n}\r\n\r\nfunction SearchBarWrapper(props: React.PropsWithChildren<SearchBarWrapperProps>): JSX.Element {\r\n if (!props.renderAsForm)\r\n return (\r\n <>\r\n {props.children}\r\n </>\r\n );\r\n\r\n return (\r\n <form onSubmit={props.onSubmit}>\r\n {props.children}\r\n </form>\r\n );\r\n}\r\n\r\nexport interface SearchBarProps<T extends HashObject> {\r\n /**\r\n * Optional initial query. Useful for populating the search bar\r\n * on a search results page.\r\n */\r\n initialQuery?: string;\r\n\r\n /**\r\n * Callback function for when a suggestion is selected.\r\n */\r\n onSuggestionSelected: (suggestion: T) => void;\r\n\r\n /**\r\n * Flag to determine if the query should be updated when a\r\n * suggestion is selected. Defaults to `true` in `defaultProps`.\r\n * If true, SearchUtils.getSuggestionValue is used to update the query.\r\n */\r\n updateQueryOnSelection?: boolean;\r\n\r\n /**\r\n * Optional callback for when the search query changes.\r\n */\r\n onQueryChange?: (query: string) => void;\r\n\r\n /**\r\n * Optional callback for when the search is submitted.\r\n */\r\n onSubmit?: (query: string) => void;\r\n\r\n /**\r\n * Optional callback to get the remote resource if remote search\r\n * results are being used.\r\n */\r\n getRemoteUrl?: (query: string) => string;\r\n\r\n /**\r\n * Optional formatting function for the data returned from the remote resource.\r\n */\r\n formatRemoteSuggestions?: (data: any) => T[];\r\n\r\n /**\r\n * Optional array of recent searches.\r\n */\r\n recentSearches?: T[];\r\n\r\n /**\r\n * A label for the recent search section.\r\n * A default is provided in the i18n config.\r\n */\r\n recentSearchHeading?: string;\r\n\r\n /**\r\n * A label for the main suggestions section.\r\n * Will not be used if getSections is passed as a prop.\r\n */\r\n suggestionsHeading?: string;\r\n\r\n /**\r\n * Optional array of local data to be used as suggestion sources.\r\n */\r\n local?: T[];\r\n\r\n /**\r\n * Optional array of initial suggestions. These suggestions will be available\r\n * when no query is present. Entering a query will begin filtering suggestions.\r\n * This is useful for using SearchBar to filter a list.\r\n */\r\n initialSuggestions?: T[];\r\n\r\n /**\r\n * Key used to filter local data. This is required if local is provided,\r\n * however a default of 'name' is set in `defaultProps`.\r\n */\r\n valueKey?: keyof T;\r\n\r\n /**\r\n * Optional function to filter suggestions from local data.\r\n * SearchUtils.getLocalSuggestions will be used by default.\r\n */\r\n getLocalSuggestions?: (query: string, local: T[]) => T[];\r\n\r\n /**\r\n * Optional function for splitting suggestions into sections.\r\n * Doesn't apply to recent searches (SuggestionType.Recent).\r\n */\r\n getSections?: (suggestions: T[]) => SearchUtils.SuggestionSection<T>[];\r\n\r\n /**\r\n * Placeholder for the search input.\r\n * A default is provided in the i18n config.\r\n */\r\n placeholder?: string;\r\n\r\n /**\r\n * The number of characters required to begin providing suggestions.\r\n * A default is provided in `defaultProps`.\r\n */\r\n activationLength?: number;\r\n\r\n /**\r\n * Max number of suggestions to render. A default is set in `defaultProps`.\r\n * Set to false to render all suggestions (e.g. for filtering a list in memory).\r\n */\r\n suggestionLimit?: number | false;\r\n\r\n /**\r\n * Callback function to get the component to be rendered for a suggestion.\r\n * SearchUtils.getSuggestionComponent is used a default. This uses\r\n * `valueKey` to render text.\r\n */\r\n getSuggestionComponent?: (suggestion: T) => JSX.Element;\r\n\r\n /**\r\n * If true, suggestions will be rendered, even if the input isn't focussed.\r\n */\r\n alwaysRenderSuggestions?: boolean;\r\n\r\n /*\r\n * Optional theme hash to override `defaultTheme` in SearchUtils.\r\n */\r\n theme?: Autosuggest.Theme;\r\n\r\n /**\r\n * Option to determine whether to render the search icon and if so,\r\n * which side to render it on. Defaults to `right` in `defaultProps`\r\n */\r\n searchIconPlacement?: 'left' | 'right' | false;\r\n\r\n /**\r\n * If true, a cross svg will be rendered.\r\n * Clicking this icon will reset the query.\r\n */\r\n showClearInputIcon?: boolean;\r\n\r\n /**\r\n * Optional callback function to be called when the clear input\r\n * icon is clicked.\r\n * The query will be reset automatically, this callback is for\r\n * adding additional functionality.\r\n */\r\n onClickClearInput?: () => void;\r\n\r\n /**\r\n * Flag to determine whether clicking the search icon should trigger\r\n * submitting the search query.\r\n */\r\n submitOnClickSearchIcon?: boolean;\r\n\r\n /**\r\n * Flag to determine whether the search input should be autofocused.\r\n */\r\n autoFocusInput?: boolean;\r\n\r\n /**\r\n * If true, the default Bootstrap styling will be applied when the\r\n * input is focused.\r\n */\r\n highlightInputOnFocus?: boolean;\r\n\r\n /**\r\n * When true, the input field will be cleared whenever a suggestion is selected.\r\n */\r\n clearQueryOnSelect?: boolean;\r\n\r\n onBackspace?: () => void;\r\n\r\n /**\r\n * When true, the search input will be wrapped in a <form />.\r\n * This is true by default.\r\n * If rendering <SearchBar /> within another form, set this to false.\r\n */\r\n renderAsForm?: boolean;\r\n}\r\n\r\nSearchBar.defaultProps = {\r\n updateQueryOnSelection: true,\r\n valueKey: 'name',\r\n activationLength: 3,\r\n suggestionLimit: 5,\r\n recentSearches: [],\r\n initialSuggestions: [],\r\n searchIconPlacement: 'right',\r\n renderAsForm: true\r\n};\r\n\r\nexport function SearchBar<T extends HashObject>(props: SearchBarProps<T>): JSX.Element {\r\n const initialState = SearchUtils.getInitialState(props.initialSuggestions, props.recentSearches);\r\n\r\n const [ query, setQuery ] = React.useState(props.initialQuery || '');\r\n const [ suggestions, setSuggestions ] = React.useState<SearchUtils.SuggestionState<T>>(initialState);\r\n\r\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\r\n\r\n React.useEffect(() => {\r\n const initialQuery = props.initialQuery || '';\r\n\r\n if (query !== initialQuery)\r\n setQuery(initialQuery);\r\n }, [props.initialQuery]);\r\n\r\n const resetSuggestions = () => {\r\n setSuggestions(initialState);\r\n };\r\n\r\n const onChange = (e: React.ChangeEvent, { newValue }: Autosuggest.ChangeEvent) => {\r\n setQuery(newValue);\r\n\r\n if (isFunction(props.onQueryChange))\r\n props.onQueryChange(newValue);\r\n };\r\n\r\n const onSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n\r\n if (isFunction(props.onSubmit))\r\n props.onSubmit(query);\r\n };\r\n\r\n const onKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === 8 && props.onBackspace && !query)\r\n props.onBackspace();\r\n };\r\n\r\n const onClickClearInput = () => {\r\n setQuery('');\r\n\r\n if (isFunction(props.onClickClearInput))\r\n props.onClickClearInput();\r\n };\r\n\r\n return (\r\n <SearchBarWrapper onSubmit={onSubmit} renderAsForm={!!props.renderAsForm}>\r\n <Autosuggest<T>\r\n suggestions={\r\n SearchUtils.getSuggestionSections(\r\n suggestions,\r\n !query,\r\n props.recentSearchHeading || LanguageService.getPhrase(namespace, 'recentSearchHeading'),\r\n props.suggestionsHeading,\r\n props.getSections,\r\n props.suggestionLimit\r\n )\r\n }\r\n onSuggestionsFetchRequested={\r\n SearchUtils.onSuggestionsFetchRequestedHandler(props, setSuggestions, resetSuggestions)\r\n }\r\n onSuggestionsClearRequested={() => {\r\n if (!props.alwaysRenderSuggestions)\r\n resetSuggestions();\r\n }}\r\n onSuggestionSelected={(e: React.FormEvent, { suggestion }: Autosuggest.SuggestionSelectedEventData<T>) => {\r\n if (props.clearQueryOnSelect)\r\n setQuery('');\r\n\r\n props.onSuggestionSelected(suggestion);\r\n }}\r\n getSuggestionValue={(suggestion: T) => {\r\n if (!props.updateQueryOnSelection)\r\n return query;\r\n\r\n return SearchUtils.getSuggestionValue(props.valueKey, suggestion);\r\n }}\r\n renderSuggestion={(suggestion: T) => {\r\n if (isFunction(props.getSuggestionComponent))\r\n return props.getSuggestionComponent(suggestion);\r\n\r\n return SearchUtils.getSuggestionComponent(props.valueKey, suggestion);\r\n }}\r\n alwaysRenderSuggestions={props.alwaysRenderSuggestions}\r\n /** \r\n * Setting focusInputOnSuggestionClick to false when isMobile is true prevents the keyboard from \r\n * appearing on mobile devices when a suggestion is clicked.\r\n */\r\n focusInputOnSuggestionClick={!isMobile}\r\n inputProps={{\r\n placeholder: props.placeholder || LanguageService.getPhrase(namespace, 'placeholder'),\r\n value: query,\r\n onChange,\r\n onKeyDown,\r\n autoFocus: !!props.autoFocusInput,\r\n highlightOnFocus: props.highlightInputOnFocus,\r\n onClickSearchIcon: !!props.submitOnClickSearchIcon && onSubmit,\r\n searchIconPlacement: props.searchIconPlacement,\r\n showClearInputIcon: !!props.showClearInputIcon && !!query.length,\r\n onClickClearInput\r\n } as Autosuggest.InputProps<T>}\r\n renderInputComponent={SearchInput}\r\n theme={SearchUtils.getTheme(props.theme)}\r\n multiSection\r\n renderSectionTitle={SearchUtils.renderSectionTitle}\r\n getSectionSuggestions={SearchUtils.getSectionSuggestions}\r\n />\r\n </SearchBarWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport * as Autosuggest from 'react-autosuggest';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport styles from './search-bar.scss';\r\n\r\nfunction getInputClassName<T>(props: SearchInputProps<T>): string {\r\n const { searchIconPlacement, showClearInputIcon, highlightOnFocus, className } = props;\r\n\r\n let inputClassName = 'form-control';\r\n\r\n if (!highlightOnFocus)\r\n inputClassName += ` ${styles.inputWithoutHighlight}`;\r\n\r\n if (searchIconPlacement === 'left')\r\n inputClassName += ` ${styles.inputWithLeftIcon}`;\r\n\r\n if (searchIconPlacement === 'right' && !showClearInputIcon || searchIconPlacement === 'left' && showClearInputIcon)\r\n inputClassName += ` ${styles.inputWithRightIcon}`;\r\n\r\n if (searchIconPlacement === 'right' && showClearInputIcon)\r\n inputClassName += ` ${styles.inputWithTwoRightIcons}`;\r\n\r\n if (className)\r\n inputClassName += `${className}`;\r\n\r\n return inputClassName;\r\n}\r\n\r\nfunction getSvgContainerClassName(onClickSvg: () => void): string {\r\n const className = 'd-inline-block svg-container';\r\n\r\n if (!FunctionHelper.isFunction(onClickSvg))\r\n return className;\r\n\r\n return className + ' cursor-pointer';\r\n}\r\n\r\ninterface SearchInputProps<T> extends Autosuggest.InputProps<T>{\r\n onClickSearchIcon?: () => void;\r\n searchIconPlacement?: 'left' | 'right' | false;\r\n showClearInputIcon?: boolean;\r\n onClickClearInput?: () => void;\r\n highlightOnFocus?: boolean;\r\n}\r\n\r\nexport function SearchInput<T extends {}>(props: SearchInputProps<T>): JSX.Element {\r\n const {\r\n onClickSearchIcon,\r\n searchIconPlacement,\r\n showClearInputIcon,\r\n onClickClearInput,\r\n highlightOnFocus,\r\n className,\r\n ...inputProps\r\n } = props;\r\n\r\n const SearchIcon = () => (\r\n <div className='d-inline-block'>\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Search}\r\n size={SvgContainerSize.Standard}\r\n onClick={onClickSearchIcon}\r\n className={getSvgContainerClassName(onClickSearchIcon)}\r\n />\r\n </div>\r\n );\r\n\r\n const ClearIcon = () => (\r\n <div className={`d-inline-block text-muted ${styles.clearButton}`}>\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Close}\r\n size={SvgContainerSize.Standard}\r\n onClick={onClickClearInput}\r\n className={getSvgContainerClassName(onClickClearInput)}\r\n />\r\n </div>\r\n );\r\n\r\n return (\r\n <div className={`position-relative ${styles.inputContainer}`}>\r\n {searchIconPlacement === 'left' &&\r\n <div className={`${styles.iconContainer} ${styles.leftIconContainer}`}>\r\n <SearchIcon />\r\n </div>\r\n }\r\n <input className={getInputClassName<T>(props)} {...inputProps as any} />\r\n {(searchIconPlacement === 'right' || !!showClearInputIcon) &&\r\n <div className={`${styles.iconContainer} ${styles.rightIconContainer}`}>\r\n {!!showClearInputIcon && <ClearIcon />}\r\n {searchIconPlacement === 'right' && <SearchIcon />}\r\n </div>\r\n }\r\n </div>\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport * as Autosuggest from 'react-autosuggest';\r\n\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { TypeHelper } from 'libs/common/react/utils/TypeHelper';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { SearchBarProps } from './SearchBar';\r\n\r\nimport styles from './search-bar.scss';\r\n\r\nexport enum SuggestionType {\r\n Local = 'local',\r\n Recent = 'recent',\r\n Remote = 'remote'\r\n}\r\n\r\n/**\r\n * Suggestions grouped as a section\r\n */\r\nexport interface SuggestionSection<T extends HashObject> {\r\n data: T[];\r\n title?: string;\r\n}\r\n\r\n/**\r\n * How suggestion data is stored in state in SearchBar\r\n */\r\nexport type SuggestionState<T extends HashObject> = { [ key in SuggestionType ]: T[] };\r\n\r\nexport function getInitialState<T extends HashObject>(\r\n initialSuggestions: T[], recentSearches: T[]\r\n): SuggestionState<T> {\r\n return {\r\n [SuggestionType.Recent]: recentSearches,\r\n [SuggestionType.Local]: initialSuggestions,\r\n [SuggestionType.Remote]: []\r\n };\r\n}\r\n\r\nfunction hasAttribute<T extends HashObject>(obj: T, valueKey: keyof T): boolean {\r\n return ObjectHelper.isObject(obj) && obj.hasOwnProperty(valueKey) && TypeHelper.isString(obj[valueKey]);\r\n}\r\n\r\nfunction getLocalSuggestions<T extends HashObject>(query: string, data: T[], valueKey: keyof T): T[] {\r\n const q = query.trim().toLowerCase();\r\n\r\n if (!q.length)\r\n return [];\r\n\r\n return data.filter(d => {\r\n if (!hasAttribute(d, valueKey) || !TypeHelper.isString(d[valueKey]))\r\n return false;\r\n\r\n return d[valueKey].trim().toLowerCase().includes(q);\r\n });\r\n}\r\n\r\nfunction fetchSuggestions<T extends HashObject>(\r\n getUrl: (query: string) => string, query: string, callback: (suggestions: T[]) => void\r\n): void {\r\n const resource = FunctionHelper.isFunction(getUrl) && getUrl(query);\r\n\r\n if (!resource)\r\n return;\r\n\r\n Flight.ajaxRequest({\r\n resource,\r\n type: HttpVerbs.GET,\r\n success: callback,\r\n error: () => {}\r\n });\r\n}\r\n\r\nexport function onSuggestionsFetchRequestedHandler<T extends HashObject>(\r\n props: SearchBarProps<T>,\r\n setSuggestions: React.Dispatch<React.SetStateAction<SuggestionState<T>>>,\r\n resetSuggestions: () => void\r\n): (params: Autosuggest.SuggestionsFetchRequestedParams) => void {\r\n return ({ value }: Autosuggest.SuggestionsFetchRequestedParams) => {\r\n if (!value.length)\r\n resetSuggestions();\r\n\r\n if (value.length < props.activationLength)\r\n return;\r\n\r\n if (props.local) {\r\n const filtered = FunctionHelper.isFunction(props.getLocalSuggestions)\r\n ? props.getLocalSuggestions(value, props.local)\r\n : getLocalSuggestions(value, props.local, props.valueKey);\r\n\r\n setSuggestions(s => ({ ...s, [SuggestionType.Local]: filtered }));\r\n }\r\n\r\n if (props.getRemoteUrl)\r\n fetchSuggestions(\r\n props.getRemoteUrl,\r\n value,\r\n (data: any) => setSuggestions(\r\n s => ({\r\n ...s,\r\n [SuggestionType.Remote]: FunctionHelper.isFunction(props.formatRemoteSuggestions)\r\n ? props.formatRemoteSuggestions(data)\r\n : data\r\n })\r\n )\r\n );\r\n };\r\n}\r\n\r\nexport function getSuggestionValue<T extends HashObject>(valueKey: keyof T, suggestion: T): string {\r\n if (!hasAttribute(suggestion, valueKey))\r\n return '';\r\n\r\n return suggestion[valueKey];\r\n}\r\n\r\n/**\r\n * Default suggestion component. Renders text based on valueKey.\r\n * \r\n * @param valueKey object attribute to be rendered.\r\n */\r\nexport function getSuggestionComponent<T extends HashObject>(valueKey: keyof T, suggestion: T): JSX.Element {\r\n return hasAttribute(suggestion, valueKey)\r\n ? <>\r\n {suggestion[valueKey]}\r\n </>\r\n : <></>;\r\n}\r\n\r\n/**\r\n * Maps the suggestion state into sections.\r\n * \r\n * @param getSections - an optional function passed in from anything consuming\r\n * SearchBar used to break the local and remote suggestions into sections.\r\n */\r\nexport function getSuggestionSections<T extends HashObject>(\r\n suggestionState: SuggestionState<T>,\r\n showRecentSearches: boolean,\r\n recentSearchHeading: string,\r\n suggestionsHeading?: string,\r\n getSections?: (suggestions: T[]) => SuggestionSection<T>[],\r\n suggestionLimit?: number | false\r\n): SuggestionSection<T>[] {\r\n const getTypeSuggestions = (type: SuggestionType) => {\r\n const typeSuggestions = suggestionState[type];\r\n\r\n return typeSuggestions || [];\r\n };\r\n\r\n const recentSuggestions = showRecentSearches ? getTypeSuggestions(SuggestionType.Recent) : [];\r\n const localSuggestions = getTypeSuggestions(SuggestionType.Local);\r\n const remoteSuggestions = getTypeSuggestions(SuggestionType.Remote);\r\n\r\n let sections: SuggestionSection<T>[] = [];\r\n\r\n if (recentSuggestions.length)\r\n sections.push({\r\n title: recentSearchHeading,\r\n data: recentSuggestions\r\n });\r\n\r\n const matchedSuggestions = [ ...localSuggestions, ...remoteSuggestions ];\r\n\r\n if (Number.isInteger((suggestionLimit as number)) && sections.length > suggestionLimit)\r\n matchedSuggestions.slice(0, (suggestionLimit as number));\r\n\r\n if (FunctionHelper.isFunction(getSections))\r\n sections.push(...getSections(matchedSuggestions));\r\n else\r\n sections.push({ title: suggestionsHeading, data: matchedSuggestions });\r\n\r\n return sections;\r\n}\r\n\r\n/**\r\n * Maps a section into a list of suggestions.\r\n */\r\nexport function getSectionSuggestions<T extends HashObject>(section: SuggestionSection<T>): T[] {\r\n return section.data;\r\n}\r\n\r\nexport function renderSectionTitle<T extends HashObject>(section: SuggestionSection<T>): JSX.Element | null {\r\n if (section.title)\r\n return <strong>{section.title}</strong>;\r\n}\r\n\r\nconst defaultTheme = {\r\n container: 'position-relative',\r\n suggestionsContainerOpen: `bg-white py-1 border rounded ${styles.suggestionsContainerOpen}`,\r\n suggestionsList: 'list-unstyled m-0',\r\n suggestion: 'cursor-pointer py-1 px-2',\r\n suggestionHighlighted: styles.suggestionHighlighted,\r\n sectionContainer: `border-bottom py-1 ${styles.sectionContainer}`\r\n};\r\n\r\nexport function getTheme(theme: Autosuggest.Theme = {}): Autosuggest.Theme {\r\n return Object.assign(defaultTheme, theme);\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputWithoutHighlight\":\"cv--inputWithoutHighlight---L0yF\",\"suggestionsContainerOpen\":\"cv--suggestionsContainerOpen--ahMdW\",\"sectionContainer\":\"cv--sectionContainer--xstWL\",\"suggestionHighlighted\":\"cv--suggestionHighlighted--3YTCa\",\"inputContainer\":\"cv--inputContainer--1wn3m\",\"clearButton\":\"cv--clearButton--1BwBs\",\"inputWithLeftIcon\":\"cv--inputWithLeftIcon--qxZOe\",\"inputWithRightIcon\":\"cv--inputWithRightIcon--3U4W-\",\"inputWithTwoRightIcons\":\"cv--inputWithTwoRightIcons--2rgzF\",\"iconContainer\":\"cv--iconContainer--1DLw5\",\"leftIconContainer\":\"cv--leftIconContainer--AZCtZ\",\"rightIconContainer\":\"cv--rightIconContainer--1R52s\"};"],"sourceRoot":""}
1
+ {"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/components/playlist-list/PartialPlaylistList.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/widgets/dynamic-widget/DynamicWidget.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/widgets/dynamic-widget/DynamicWidgetEventHandlers.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/widgets/dynamic-widget/DynamicWidgetReducer.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/widgets/dynamic-widget/dynamic-widget.scss?a460","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/widgets/items/series-widget-item/PartialSeriesList.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/widgets/items/subject-widget-item/PartialSubjectWidgetItem.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/widgets/items/subject-widget-item/SubjectWidgetItem.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/widgets/items/subject-widget-item/subject-widget-item.scss?cb11","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/AudienceRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseResizeListener.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/PartialLoadingHelper.ts"],"names":[],"mappings":"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","file":"scripts/14.chunk.js","sourcesContent":["import * as React from 'react';\r\nimport { Row, Col } from 'react-bootstrap';\r\n\r\nimport styles from './playlist.scss';\r\n\r\ninterface PartialPlaylistListProps {\r\n numItems?: number;\r\n itemClassName?: string;\r\n showHeading?: boolean;\r\n}\r\n\r\nPartialPlaylistList.defaultProps = {\r\n numItems: 8\r\n};\r\n\r\nexport function PartialPlaylistList(props: PartialPlaylistListProps): JSX.Element {\r\n const PARTIAL_PLAYLISTS = [...Array(props.numItems)];\r\n\r\n const className = props.itemClassName || '';\r\n\r\n return (\r\n <>\r\n {props.showHeading && <div className={`${styles.partialHeading} partial-loading-background`} />}\r\n <Row>\r\n {PARTIAL_PLAYLISTS.map((p, idx) =>\r\n <Col key={idx} xs={6} sm={4} lg={3} className={className}>\r\n <div className='py-2'>\r\n <div className={`${styles.playlistItem} partial-loading-background`} />\r\n </div>\r\n </Col>\r\n )}\r\n </Row>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport * as _ from 'underscore';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nimport { useResizeListener } from 'libs/shared/hooks/UseResizeListener';\r\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\r\nimport { CssMeasurement } from 'libs/shared/enums/CssMeasurement';\r\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\r\nimport { PartialSubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/PartialSubjectWidgetItem';\r\nimport { SlidingListContainer } from 'libs/shared/components/widgets/sliding-list/SlidingListContainer';\r\nimport { SlidingListRefs } from 'libs/shared/interfaces/SlidingListRefs';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\r\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\n\r\nimport { getDragEndHandler, getDragHandler, getResizeEndHandler, getResizeHandler, getTouchMoveHandler, getTouchEndHandler } from './DynamicWidgetEventHandlers';\r\nimport { DynamicWidgetReducer, DynamicWidgetState, initialSliderState } from './DynamicWidgetReducer';\r\n\r\nimport styles from './dynamic-widget.scss';\r\nimport { SvgContainer, SvgContainerSize } from '../../svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nconst namespace = 'shared.dynamicWidget';\r\n\r\ninterface WidgetSnapshot extends DynamicWidgetState {\r\n initialMouseX: number;\r\n}\r\n\r\ninterface StaticChild {\r\n position: 'start' | 'end';\r\n component: React.ElementType;\r\n}\r\n\r\ninterface DynamicWidgetProps {\r\n childAppLink: Core.AppLink;\r\n childComponent: React.ElementType;\r\n staticChildren?: StaticChild[];\r\n collection?: BaseObject[];\r\n fetch?: (...args: any[]) => any;\r\n lazyLoad?: boolean;\r\n\r\n headingPhraseKey?: 'topics' | 'teach';\r\n headingAppLink?: Core.AppLink;\r\n\r\n analyticsData?: HashObject;\r\n analyticsOptions?: AnalyticsOptions;\r\n}\r\n\r\nexport function DynamicWidget(props: DynamicWidgetProps): JSX.Element {\r\n const { childComponent: WidgetItemComponent, staticChildren } = props;\r\n\r\n const [ state, dispatch ] = React.useReducer(DynamicWidgetReducer, initialSliderState);\r\n\r\n // A snapshot of the widget state is captured on the very first `Drag` event as a point of reference\r\n const [ widgetSnapshot, setWidgetSnapshot ] = React.useState<WidgetSnapshot>(null);\r\n\r\n const elementRefs: SlidingListRefs = {\r\n container: React.useRef(null),\r\n firstElement: React.useRef(null),\r\n lastElement: React.useRef(null)\r\n };\r\n\r\n useResizeListener(getResizeHandler(elementRefs, dispatch), getResizeEndHandler(elementRefs.container));\r\n\r\n const { ref, inView } = useLazyLoad(!props.lazyLoad);\r\n\r\n let widgetData = props.collection;\r\n if (!props.collection && FunctionHelper.isFunction(props.fetch))\r\n widgetData = props.fetch(inView);\r\n\r\n /**\r\n * Once the widget data has been set, we can initialize the reducer. This is because\r\n * the reducer depends on the refs being set, but they don't get set until the markup has been loaded.\r\n */\r\n React.useEffect(() => {\r\n if (!widgetData || ObjectHelper.isEmpty(widgetData))\r\n return;\r\n\r\n dispatch({\r\n type: WidgetInteraction.Init,\r\n payload: elementRefs\r\n });\r\n\r\n }, [widgetData]);\r\n\r\n function getWidgetItems(): JSX.Element {\r\n if (!widgetData)\r\n return;\r\n\r\n let FirstComponent: React.ElementType;\r\n let LastComponent: React.ElementType;\r\n\r\n if (staticChildren?.length) {\r\n const firstChild = ArrayHelper.findWhere<StaticChild, {}>(staticChildren, { position: 'start' });\r\n const lastChild = ArrayHelper.findWhere<StaticChild, {}>(staticChildren, { position: 'end' });\r\n\r\n FirstComponent = firstChild ? firstChild.component : null;\r\n LastComponent = lastChild ? lastChild.component : null;\r\n }\r\n\r\n const items = widgetData.map((widgetItem, index) => {\r\n let itemRef: React.MutableRefObject<HTMLDivElement>;\r\n\r\n if (widgetItem === ArrayHelper.first(widgetData) && !FirstComponent)\r\n itemRef = elementRefs.firstElement;\r\n\r\n if (widgetItem === ArrayHelper.last(widgetData) && !LastComponent)\r\n itemRef = elementRefs.lastElement;\r\n\r\n return (\r\n <div key={widgetItem.id} ref={itemRef} className={styles.itemSpacing}>\r\n <WidgetItemComponent\r\n data={widgetItem}\r\n appLink={props.childAppLink}\r\n analyticsData={{ itemIndex: index, ...props?.analyticsData }}\r\n analyticsOptions={{ ...props?.analyticsOptions, ...WidgetHelper.getSliderItemAnalyticsOptions() }}\r\n />\r\n </div>\r\n );\r\n });\r\n\r\n if (FirstComponent)\r\n items.unshift((\r\n <div key='first-widget-component' ref={elementRefs.firstElement} className={styles.itemSpacing}>\r\n <FirstComponent />\r\n </div>\r\n ));\r\n\r\n if (LastComponent)\r\n items.push((\r\n <div key='end-widget-component' ref={elementRefs.lastElement} className={styles.itemSpacing}>\r\n <LastComponent />\r\n </div>\r\n ));\r\n\r\n return <>{items}</>;\r\n }\r\n\r\n const widgetItems = React.useMemo(getWidgetItems, [widgetData]);\r\n\r\n if (widgetData && !widgetData.length)\r\n return <></>;\r\n\r\n if (!widgetData || ObjectHelper.isEmpty(widgetData)) {\r\n return (\r\n <div ref={ref}>\r\n <PartialDynamicWidget />\r\n </div>\r\n );\r\n }\r\n\r\n const getSliderAnalyticsData = (type: WidgetInteraction) => ({\r\n ...props.analyticsData,\r\n name: LanguageService.getPhrase(namespace, props.headingPhraseKey),\r\n direction: type === WidgetInteraction.Next ? 'right' : 'left'\r\n });\r\n\r\n return (\r\n <>\r\n {(() => {\r\n if (!props.headingPhraseKey)\r\n return <></>;\r\n\r\n const isTopic = props.headingPhraseKey === 'topics';\r\n\r\n return (\r\n <AppLink appLink={props.headingAppLink}>\r\n <h2 className={`${styles.heading} ${ props.headingAppLink ? styles.link : ''} h4 d-inline-block mr-2 pl-1 mb-2`}>\r\n <Text namespace={namespace} phrase={props.headingPhraseKey} />\r\n {isTopic && (\r\n <SvgContainer svgName={cvSvgLibrary.ChevronRight} size={SvgContainerSize.Small} />\r\n )}\r\n </h2>\r\n </AppLink>);\r\n })()}\r\n <div className='position-relative px-1'>\r\n <WidgetButton\r\n direction={WidgetButtonDirection.Left}\r\n onClick={() => {\r\n dispatch({ type: WidgetInteraction.Previous });\r\n AnalyticsHelper.logUserAction(\r\n getSliderAnalyticsData(WidgetInteraction.Previous),\r\n WidgetHelper.getSliderAnalyticsOptions());\r\n }}\r\n hide={state.hideLeftButton}\r\n useGradientBackdrop\r\n />\r\n <div className='overflow-hidden'>\r\n <SlidingListContainer\r\n position={state.offset}\r\n positionType={CssMeasurement.Pixels}\r\n onDrag={getDragHandler(elementRefs.container, state, dispatch, widgetSnapshot, setWidgetSnapshot)}\r\n onDragEnd={getDragEndHandler(elementRefs.container, setWidgetSnapshot)}\r\n onTouchMove={getTouchMoveHandler(elementRefs.container, state, dispatch, widgetSnapshot, setWidgetSnapshot)}\r\n onTouchEnd={getTouchEndHandler(elementRefs.container, setWidgetSnapshot)}\r\n ref={elementRefs.container}\r\n >\r\n {widgetItems}\r\n </SlidingListContainer>\r\n </div>\r\n <WidgetButton\r\n direction={WidgetButtonDirection.Right}\r\n onClick={() => {\r\n dispatch({ type: WidgetInteraction.Next });\r\n AnalyticsHelper.logUserAction(\r\n getSliderAnalyticsData(WidgetInteraction.Next),\r\n WidgetHelper.getSliderAnalyticsOptions());\r\n }}\r\n hide={state.hideRightButton}\r\n useGradientBackdrop\r\n />\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nconst PARTIAL_WIDGET_ITEMS = PartialLoadingHelper.getPartialLoadingItems();\r\n\r\nexport const PartialDynamicWidget = () => (\r\n <div className='pb-3 d-flex flex-nowrap'>\r\n {PARTIAL_WIDGET_ITEMS.map((item, idx) => <PartialSubjectWidgetItem key={idx} />)}\r\n </div>\r\n);","import { ReducerActions } from 'libs/common/react/interfaces';\r\n\r\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\r\nimport { SlidingListRefs } from 'libs/shared/interfaces/SlidingListRefs';\r\n\r\nimport { DynamicWidgetState } from './DynamicWidgetReducer';\r\n\r\ninterface WidgetSnapshot extends DynamicWidgetState {\r\n initialMouseX: number;\r\n}\r\n\r\n/**\r\n * Resize events\r\n */\r\nexport const getResizeHandler = (\r\n elementRefs: SlidingListRefs,\r\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction>>\r\n) => () => {\r\n if (elementRefs.container.current)\r\n elementRefs.container.current.style.transition = '';\r\n\r\n dispatch({\r\n type: WidgetInteraction.Resize,\r\n payload: elementRefs\r\n });\r\n};\r\n\r\nexport const getResizeEndHandler = (containerRef: React.MutableRefObject<HTMLDivElement>) => () => {\r\n if (containerRef.current)\r\n containerRef.current.style.transition = 'transform .4s ease-in-out';\r\n};\r\n\r\n/**\r\n * Touch / Drag start events\r\n */\r\nexport const getDragHandler = (\r\n containerRef: React.MutableRefObject<HTMLDivElement>,\r\n widgetState: DynamicWidgetState,\r\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction>>,\r\n widgetSnapshot: WidgetSnapshot,\r\n setWidgetSnapshot: React.Dispatch<WidgetSnapshot>\r\n) => (event: React.DragEvent<HTMLDivElement>): void => {\r\n const mouseX = event.clientX;\r\n\r\n handleDragOrTouchMove(mouseX, containerRef, widgetState, dispatch, widgetSnapshot, setWidgetSnapshot);\r\n};\r\n\r\nexport const getTouchMoveHandler = (\r\n containerRef: React.MutableRefObject<HTMLDivElement>,\r\n widgetState: DynamicWidgetState,\r\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction>>,\r\n widgetSnapshot: WidgetSnapshot,\r\n setWidgetSnapshot: React.Dispatch<WidgetSnapshot>\r\n) => (event: React.TouchEvent<HTMLDivElement>): void => {\r\n const firstTouch = event.touches.item(0);\r\n const touchX = firstTouch.clientX;\r\n\r\n handleDragOrTouchMove(touchX, containerRef, widgetState, dispatch, widgetSnapshot, setWidgetSnapshot);\r\n};\r\n\r\nfunction handleDragOrTouchMove(\r\n xCoord: number,\r\n containerRef: React.MutableRefObject<HTMLDivElement>,\r\n widgetState: DynamicWidgetState,\r\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction>>,\r\n widgetSnapshot: WidgetSnapshot,\r\n setWidgetSnapshot: React.Dispatch<WidgetSnapshot>\r\n): void {\r\n let snapshot = widgetSnapshot;\r\n\r\n if (!snapshot) {\r\n snapshot = { ...widgetState, initialMouseX: xCoord };\r\n setWidgetSnapshot(snapshot);\r\n containerRef.current.style.transition = '';\r\n }\r\n\r\n dispatch({\r\n type: WidgetInteraction.Drag,\r\n payload: {\r\n widgetSnapshot: snapshot,\r\n currentMouseX: xCoord\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Touch / Drag end events\r\n */\r\nexport const getDragEndHandler = (\r\n containerRef: React.MutableRefObject<HTMLDivElement>,\r\n setWidgetSnapshot: React.Dispatch<WidgetSnapshot>\r\n) => () => {\r\n containerRef.current.style.transition = 'transform .4s ease-in-out';\r\n setWidgetSnapshot(null);\r\n};\r\n\r\nexport const getTouchEndHandler = getDragEndHandler;","import { ReducerActions } from 'libs/common/react/interfaces';\r\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\r\n\r\nexport interface DynamicWidgetState {\r\n /**\r\n * X-position argument for `translate3d()` to determine where the slider is positioned.\r\n */\r\n offset: number;\r\n\r\n /**\r\n * Left position of the slider container.\r\n * Set on `Init`, and updated on `Resize`.\r\n * Used for calculations on `Previous`, or for dragging to the right.\r\n */\r\n containerLeftPosition: number;\r\n\r\n /**\r\n * Right position of the slider container.\r\n * Set on Init, and updated on Resize.\r\n * Used for calculations on `Next`, or for dragging to the left.\r\n */\r\n containerRightPosition: number;\r\n\r\n /**\r\n * The position of the left edge of the very first element in the slider list.\r\n * Initially this will always be equal to `containerLeftPosition`.\r\n */\r\n firstElementPosition: number;\r\n\r\n /**\r\n * The position of the right edge of the very last element in the slider list.\r\n */\r\n lastElementPosition: number;\r\n\r\n /**\r\n * True when `firstElementPosition === containerLeftPosition`.\r\n */\r\n hideLeftButton: boolean;\r\n\r\n /**\r\n * True when `lastElementPositon === containerRightPosition`.\r\n */\r\n hideRightButton: boolean;\r\n\r\n /**\r\n * When clicking left or right, this number is the max distance in pixels that the slider.\r\n * will move.\r\n * Default 300.\r\n * Can only be set once on `Init` action.\r\n */\r\n maxSlideDistance: number;\r\n\r\n /**\r\n * This is calculated on `Init`, and is the lowest number the `offset` state can ever be.\r\n * This is needed for the `Drag` event, as the `Drag` event can only calculate whole numbers.\r\n * 99% of the time, the leftOffsetLimit is a very specific decimal number, so we calculate it\r\n * on `Init` and reference it on `Drag` events when necessary.\r\n */\r\n leftOffsetLimit: number;\r\n}\r\n\r\nconst MAX_SLIDE_DISTANCE = 500; // px\r\n\r\n/**\r\n * `null` values are initialized in the `Init` action. This is dispatched\r\n * later, because it uses JQuery elements that aren't immediately available\r\n * when `useReducer` is called.\r\n */\r\nexport const initialSliderState: DynamicWidgetState = {\r\n offset: 0,\r\n containerLeftPosition: null,\r\n containerRightPosition: null,\r\n firstElementPosition: null,\r\n lastElementPosition: null,\r\n hideLeftButton: true,\r\n hideRightButton: true,\r\n maxSlideDistance: MAX_SLIDE_DISTANCE,\r\n leftOffsetLimit: null\r\n};\r\n\r\nfunction onInit(payload: any): object {\r\n const { container = {}, lastElement = {} } = payload;\r\n\r\n if (!container.current || !lastElement.current)\r\n return initialSliderState;\r\n\r\n const containerLeftPosition = payload.container.current.getBoundingClientRect().left;\r\n const containerRightPosition = payload.container.current.getBoundingClientRect().right;\r\n\r\n const firstElementPosition = containerLeftPosition;\r\n const lastElementPosition = payload.lastElement.current.getBoundingClientRect().right;\r\n const leftOffsetLimit = containerRightPosition - lastElementPosition;\r\n\r\n return {\r\n ...initialSliderState,\r\n containerLeftPosition,\r\n containerRightPosition,\r\n firstElementPosition,\r\n lastElementPosition,\r\n hideRightButton: lastElementPosition < containerRightPosition,\r\n leftOffsetLimit\r\n };\r\n}\r\n\r\nfunction onNext(prevState: DynamicWidgetState): object {\r\n const { firstElementPosition, lastElementPosition, maxSlideDistance, offset, containerRightPosition } = prevState;\r\n\r\n /**\r\n * The distance in pixels that the slider will move along the x-axis.\r\n * This will be the `maxSlideDistance` constant value, or if that value is too large we calculate\r\n * the remaining overflowing space and only slide by that amount.\r\n */\r\n const slideDistance = lastElementPosition - containerRightPosition >= maxSlideDistance\r\n ? maxSlideDistance\r\n : lastElementPosition - containerRightPosition;\r\n\r\n return {\r\n firstElementPosition: firstElementPosition - slideDistance,\r\n lastElementPosition: lastElementPosition - slideDistance,\r\n offset: offset - slideDistance,\r\n hideRightButton: lastElementPosition - slideDistance === containerRightPosition,\r\n hideLeftButton: false\r\n };\r\n}\r\n\r\nfunction onPrevious(prevState: DynamicWidgetState): object {\r\n const { containerLeftPosition, firstElementPosition, lastElementPosition, maxSlideDistance, offset } = prevState;\r\n\r\n const fullSlide = firstElementPosition + maxSlideDistance <= containerLeftPosition;\r\n const slideDistance = fullSlide ? maxSlideDistance : Math.abs(offset);\r\n\r\n return {\r\n firstElementPosition: firstElementPosition + slideDistance,\r\n lastElementPosition: lastElementPosition + slideDistance,\r\n offset: offset + slideDistance,\r\n hideLeftButton: !fullSlide || firstElementPosition + slideDistance === containerLeftPosition,\r\n hideRightButton: false\r\n };\r\n}\r\n\r\nfunction onDrag(prevState: DynamicWidgetState, payload: any): object {\r\n const { widgetSnapshot, currentMouseX } = payload;\r\n\r\n // Disable dragging if the slider isn't long enough\r\n if (widgetSnapshot.hideLeftButton && widgetSnapshot.hideRightButton)\r\n return {};\r\n\r\n // The distance from the initial `MouseDown` event x-coordinate, to the present x-coordinate\r\n const dragDistance = widgetSnapshot.initialMouseX - currentMouseX;\r\n\r\n let offset = widgetSnapshot.offset - dragDistance;\r\n let firstElementPosition = widgetSnapshot.firstElementPosition - dragDistance;\r\n let lastElementPosition = widgetSnapshot.lastElementPosition - dragDistance;\r\n let hideLeftButton = false;\r\n let hideRightButton = false;\r\n\r\n if (firstElementPosition > prevState.containerLeftPosition) {\r\n offset = 0;\r\n firstElementPosition = prevState.containerLeftPosition;\r\n lastElementPosition = prevState.lastElementPosition;\r\n hideLeftButton = true;\r\n }\r\n\r\n if (lastElementPosition <= prevState.containerRightPosition) {\r\n offset = prevState.leftOffsetLimit;\r\n firstElementPosition = prevState.containerLeftPosition - Math.abs(prevState.leftOffsetLimit);\r\n lastElementPosition = widgetSnapshot.containerRightPosition;\r\n hideRightButton = true;\r\n }\r\n\r\n return {\r\n offset,\r\n firstElementPosition,\r\n lastElementPosition,\r\n hideLeftButton,\r\n hideRightButton\r\n };\r\n}\r\n\r\nexport function DynamicWidgetReducer(\r\n prevState: DynamicWidgetState,\r\n action: ReducerActions<WidgetInteraction>\r\n): DynamicWidgetState {\r\n switch (action.type) {\r\n case WidgetInteraction.Init:\r\n case WidgetInteraction.Resize:\r\n return {\r\n ...prevState,\r\n ...onInit(action.payload)\r\n };\r\n\r\n case WidgetInteraction.Next:\r\n return {\r\n ...prevState,\r\n ...onNext(prevState)\r\n };\r\n\r\n case WidgetInteraction.Previous:\r\n return {\r\n ...prevState,\r\n ...onPrevious(prevState)\r\n };\r\n\r\n case WidgetInteraction.Drag:\r\n return {\r\n ...prevState,\r\n ...onDrag(prevState, action.payload)\r\n };\r\n default:\r\n return prevState;\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"itemSpacing\":\"cv--itemSpacing--10Pgb\",\"heading\":\"cv--heading--2uNzU\",\"link\":\"cv--link--3IGFJ\"};","import * as React from 'react';\r\nimport styles from './series-widget-item.scss';\r\n\r\nconst PARTIAL_SERIES = [...Array(4)];\r\n\r\nexport const PartialSeriesList = () => (\r\n <div className='pb-3'>\r\n <div className={`partial-loading-background ${styles.partialLoadingHeading}`} dangerouslySetInnerHTML={{ __html: '&nbsp' }} />\r\n <div className='row'>\r\n {PARTIAL_SERIES.map((s, idx) =>\r\n <div key={idx} className='col-6 col-sm-4 col-lg-3 '>\r\n <div className='py-2'>\r\n <div className={`${styles.partialLoading} partial-loading-background`} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n);","import * as React from 'react';\r\n\r\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\r\n\r\nimport { ThumbnailFallback, ThumbnailFallbackType } from 'libs/shared/components/thumbnails/base/ThumbnailFallback';\r\n\r\nimport styles from './subject-widget-item.scss';\r\n\r\nexport const PartialSubjectWidgetItem = () => {\r\n const [width] = React.useState(RandomHelper.getRandomInt(5) + 3 + 'rem');\r\n\r\n return (\r\n <div className={`border d-flex position-relative mr-2 ${styles.widgetItem}`}>\r\n <div className={styles.imagePanel} />\r\n <div className='px-2' style={{ width }}>&nbsp;</div>\r\n <ThumbnailFallback type={ThumbnailFallbackType.Subject} />\r\n </div>\r\n );\r\n};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\r\nimport { ImageSize } from 'libs/shared/enums/Images';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { ThumbnailFallback, ThumbnailFallbackType } from 'libs/shared/components/thumbnails/base/ThumbnailFallback';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\r\n\r\nimport styles from './subject-widget-item.scss';\r\n\r\nconst namespace = 'shared.subjectWidgetItem';\r\n\r\ninterface NamePanelProps {\r\n name: string;\r\n multiline?: boolean;\r\n}\r\n\r\nconst ComingSoonNamePanel = ({ name, multiline }: NamePanelProps) => {\r\n let wrapperClassName = `${styles.comingSoonPanel} \r\n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\r\n\r\n let textClassName = `${styles.name} h6 mb-0 pb-1`;\r\n\r\n if (!multiline) {\r\n wrapperClassName += ' text-nowrap';\r\n textClassName += ' text-truncate';\r\n } else {\r\n textClassName += ` ${styles.clamped} clamp-2`;\r\n\r\n }\r\n\r\n return (\r\n <div className={wrapperClassName}>\r\n <small className='text-muted'><Text namespace={namespace} phrase='comingSoon' /></small>\r\n <p className={textClassName}>{name}</p>\r\n </div>\r\n );\r\n};\r\n\r\nconst NormalNamePanel = ({ name, multiline }: NamePanelProps) => {\r\n let wrapperClassName = 'px-3 text-center d-flex align-items-center';\r\n let textClassName = `${styles.name} h6 mb-0 pb-1`;\r\n\r\n if (!multiline) {\r\n wrapperClassName += ' text-nowrap text-truncate';\r\n textClassName += ' text-truncate';\r\n } else {\r\n textClassName += ` ${styles.clamped} clamp-2 text-left`;\r\n }\r\n\r\n return (\r\n <div className={wrapperClassName}>\r\n <p className={textClassName}>{name}</p>\r\n </div>\r\n );\r\n};\r\n\r\ninterface SubjectWidgetItemProps {\r\n data: Classification;\r\n appLink: Core.AppLink;\r\n isLarge?: boolean;\r\n analyticsData?: HashObject;\r\n analyticsOptions?: AnalyticsOptions;\r\n}\r\n\r\nfunction SubjectWidgetItem(props: SubjectWidgetItemProps): JSX.Element {\r\n const appLink = {\r\n ...props.appLink,\r\n args: [ props.data.id, TextHelper.slugify(props.data.name) ]\r\n };\r\n\r\n const coverUrl = ImageHelper.createUrl(props.data.cover?.url, { size: ImageSize.Small });\r\n\r\n const analyticsData = { ...props.analyticsData,\r\n id: props.data?.id,\r\n name: props.data?.name,\r\n presentationId: props.data?.presentationId,\r\n comingSoon: !!props.data?.comingSoon\r\n };\r\n\r\n const analyticsOptions = { ...props.analyticsOptions,\r\n actionType: UserAction.Click,\r\n entity: EntityType.Classification,\r\n descriptor: ClickDescriptor.Cover\r\n };\r\n\r\n return (\r\n <AppLink appLink={appLink} analyticsData={analyticsData} analyticsOptions={analyticsOptions}>\r\n <div className={`border d-flex position-relative ${styles.widgetItem}`} id={props.data.id}>\r\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\r\n <div className={styles.image} style={{ backgroundImage: `url('${coverUrl}')` }} />\r\n <ThumbnailFallback type={ThumbnailFallbackType.Subject} extraClasses={props.isLarge ? styles.large : ''} />\r\n </div>\r\n {props.data.comingSoon\r\n ? <ComingSoonNamePanel name={props.data.name} multiline={props.isLarge} />\r\n : <NormalNamePanel name={props.data.name} multiline={props.isLarge} />\r\n }\r\n </div>\r\n </AppLink>\r\n );\r\n}\r\n\r\nconst Memoized = React.memo(SubjectWidgetItem);\r\n\r\nexport { Memoized as SubjectWidgetItem };","// extracted by mini-css-extract-plugin\nmodule.exports = {\"widgetItem\":\"cv--widgetItem--1oyw1\",\"imagePanel\":\"cv--imagePanel--1UOVG\",\"image\":\"cv--image--1_BF4\",\"large\":\"cv--large--1EtWs\",\"comingSoonPanel\":\"cv--comingSoonPanel--3js2e\",\"name\":\"cv--name--3csgE\",\"clamped\":\"cv--clamped--1y2oG\",\"editSubjectsItem\":\"cv--editSubjectsItem--1yBMf\",\"allSubjectsItem\":\"cv--allSubjectsItem--2oBMH\",\"logoContainer\":\"cv--logoContainer--T3Lym\"};","import { Flight } from 'libs/common/flight';\r\n\r\nconst endpoints = {\r\n presentationAudiences: () => `/api/domain/v1/subjects/audiences?type=subject`\r\n};\r\n\r\nexport const AudienceRequests = {\r\n presentationAudiences(): Flight.Request {\r\n return {\r\n bootstrapName: 'presentationAudiences',\r\n url: endpoints.presentationAudiences(),\r\n key: `presentation:audiences`,\r\n normalize: false\r\n };\r\n }\r\n};","import * as React from 'react';\r\n\r\n/**\r\n * Hook function for listening to scroll events\r\n * @param onResize - gets called on resize.\r\n * @param onResizeEnd (optional) - gets called 100ms after the last resize event. Timer restarts everytime the callback\r\n * runs so that endCallback only fires after a stretch of resize events.\r\n * @param dependencies - values from the component (e.g. state, props and functions) that are used \r\n * inside the effect hook.\r\n */\r\nexport function useResizeListener(onResize: () => void, onResizeEnd?: () => void, dependencies: any[] = []): void {\r\n let resizeTimeout: number;\r\n\r\n const onResizeModified = () => {\r\n onResize();\r\n\r\n window.clearTimeout(resizeTimeout);\r\n resizeTimeout = window.setTimeout(onResizeEnd, 100);\r\n };\r\n\r\n React.useEffect(() => {\r\n window.addEventListener('resize', onResizeEnd ? onResizeModified : onResize);\r\n return () => window.removeEventListener('resize', onResizeEnd ? onResizeModified : onResize);\r\n }, [...dependencies]);\r\n}","const DEFAULT_NUM_ITEMS = 5;\r\nconst DEFAULT_MIN_WIDTH = 50; // px\r\nconst DEFAULT_MAX_WIDTH = 100; // px\r\n\r\ninterface PartialLoadingOptions {\r\n numItems?: number;\r\n minWidth?: number;\r\n maxWidth?: number;\r\n}\r\n\r\ninterface PartialLoadingItem {\r\n width: string;\r\n}\r\n\r\nexport const PartialLoadingHelper = {\r\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\r\n const {\r\n numItems = DEFAULT_NUM_ITEMS,\r\n minWidth = DEFAULT_MIN_WIDTH,\r\n maxWidth = DEFAULT_MAX_WIDTH\r\n } = options;\r\n\r\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * maxWidth), minWidth);\r\n\r\n return [...Array(numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\r\n }\r\n};"],"sourceRoot":""}
@@ -0,0 +1 @@
1
+ (window.webpackJsonp_clickview_lite=window.webpackJsonp_clickview_lite||[]).push([[15],{1017:function(e,t,a){"use strict";var n,r=a(159);!function(e){e.Learner="learner",e.Staff="staff"}(n||(n={})),a.d(t,"a",(function(){return i}));var i={getUserGroup:function(e){return e===r.a.Student?n.Learner:n.Staff}}},1018:function(e,t,a){"use strict";var n=a(79),r=a(878),i=a(57);function o(e){var t=e.page,a=e.totalPages,n=r.a.isNumber(t)&&t>0&&t<a&&t+1,o=r.a.isNumber(t)&&t>1&&t-1,c={};if(n&&n<=a&&(c.next=n.toString()),o&&(c.previous=o.toString()),!i.a.isEmpty(c))return c}var c=function(e){if(e)return{data:e.data,pagination:{cursors:o(e.pagination),limit:e.pagination.pageSize}}};a.d(t,"a",(function(){return u}));var s=function(e,t,a,r){return n.a.urlBuilder("/api/domain/v2/dashboards/widgets",{libraryType:e,customerType:t,userRole:a,countryCode:r})},l=function(e,t,a,r,i){var o="/api/domain/v2/dashboards/playlists/".concat(e,"/videos");return n.a.urlBuilder(o,{maxRatingValue:t,userGroup:a,page:r,limit:i})},u={widgets:function(e,t,a,n){return{url:s(e,t,a,n),key:"widgets:".concat(e,":").concat(t,":").concat(n),expiryTime:1/0}},widgetPlaylist:function(e,t,a,n,r){return{url:l(e,t,a,n,r),key:"widget:".concat(e,":").concat(t,":").concat(a,":").concat(n),formatData:function(e){var t={data:e.videos.data,pagination:e.videos.pagination};return Object.assign(Object.assign({},e),{videos:c(t)})},expiryTime:1/0}}}},1234:function(e,t,a){e.exports={partialHeading:"_1AG7e"}},1318:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),i=a(61),o=a(14),c=a(47),s=a(831),l=a(154),u=a(1017),d=a(159),p=a(830),m=a(40),v=a(3),f=a(7),g=a(5),y=a(10),b=a(850),E=a(824),k=a(1018),h=a(848),N=a(1234),w=a.n(N);function O(){return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{className:"partial-loading-background mb-2 ".concat(w.a.partialHeading)}),r.a.createElement(h.a,null))}a.d(t,"DashboardWidgetView",(function(){return S}));var C=function(e){return{application:g.a.DEFAULT,action:y.a.Default.PLAY_VIDEO,args:[e.id,c.a.slugify(e.name)]}};function S(e){var t,a,n=e.widgetId,h=e.cursor,N=Object(i.useDispatch)(),w=Object(E.a)(),S=o.a.useBasicFetch(l.a.currentUser(),{optimize:!0}),L=o.a.useBasicFetch(n&&k.a.widgetPlaylist(n,null,u.a.getUserGroup(d.a.Staff),h,25),{optimize:!0});return Object(b.a)((null===(a=null===(t=L.data)||void 0===t?void 0:t.videos)||void 0===a?void 0:a.data)?L.data.videos.data:null),L.data&&S.data?r.a.createElement(r.a.Fragment,null,r.a.createElement("h1",{className:"mb-2"},L.data.name),r.a.createElement(p.c,{videos:L.data.videos.data,getVideoAppLink:C,getSeriesAppLink:function(e){var t;return(null===(t=e)||void 0===t?void 0:t.id)?function(e){return{application:g.a.DEFAULT,action:y.a.Default.SERIES,args:[e.id,c.a.slugify(e.name)]}}(e):null},setFavourite:function(e,t){o.a.fetch(N,s.a.updateIsVideoFavourited(e.id,S.data.id,t,(function(){m.a.logUserAction({id:e.id},{entity:v.d.Video,actionType:v.n.Favourite,descriptor:t?v.m.On:v.m.Off,location:v.j.VideoThumbnail,workflowPhase:v.o.Complete}),w.success(f.a.getPhrase("dashboard.dashboardWidget",t?"favourited":"unfavourited",{video:e.name}))})))},cursors:L.data.videos.pagination.cursors})):r.a.createElement(O,null)}S.defaultProps={cursor:1}},825:function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(0);function r(e){return n.createElement("div",{role:"button",tabIndex:0,className:"".concat(e.className?e.className:""," cursor-pointer"),onKeyDown:function(t){return"Enter"===t.key&&e.onClick(t)},onClick:e.onClick,style:e.style?e.style:{}},e.children)}},827:function(e,t,a){e.exports={buttonList:"_2v9CT",dropdownToggle:"AYBvQ"}},828:function(e,t,a){"use strict";var n=a(0),r=a(33),i=a(240),o=a(40),c=a(55),s=a(51),l=a(13),u=a(827),d=a.n(u),p=a(35);function m(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function v(e){if(e.action.appLink)return n.createElement(s.a,{appLink:e.action.appLink,onClick:e.action.onClick,className:m(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions},e.action.label);return n.createElement("span",{className:"cursor-pointer ".concat(m(e.action.className)),onClick:function(t){e.action.analyticsData&&e.action.analyticsOptions&&o.a.logUserAction(e.action.analyticsData,e.action.analyticsOptions),p.a.isFunction(e.action.onClick)&&e.action.onClick(t)}},e.action.label)}function f(e){if(!e.actions||!e.actions.length)return n.createElement(n.Fragment,null);var t="actions-dropdown-".concat(i.a.getRandomInt()),a="px-0 ".concat(d.a.dropdownToggle);return e.dropdownToggleClassName&&(a+=" ".concat(e.dropdownToggleClassName)),n.createElement(r.Dropdown,{className:e.className?e.className:"",alignRight:!0},n.createElement(r.Dropdown.Toggle,{as:"button",type:"button",id:t,className:a},n.createElement(c.a,{svgName:l.b.More,size:c.b.Small})),n.createElement(r.Dropdown.Menu,null,e.actions.map((function(e,t){return n.createElement(v,{key:t,action:e})}))))}f.defaultProps={dropdownToggleClassName:"btn btn-light"};var g=a(235),y=a(156);function b(e){var t="ml-2";e.className&&(t+=" ".concat(e.className));var a=e.showSpinner?n.createElement(r.Spinner,{as:"span",animation:"border",role:"status",size:"sm"}):e.children;if(e.tooltip)return n.createElement(y.a,{title:e.tooltip},n.createElement(g.a,{appLink:e.appLink,svgName:e.svgName,onClick:e.onClick,className:t,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},a));if(e.svgName)return n.createElement(g.a,{onClick:e.onClick,appLink:e.appLink,svgName:e.svgName,className:t,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},a);if(e.appLink)return n.createElement(s.a,{onClick:e.onClick,appLink:e.appLink,className:t,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},a);return n.createElement("button",{onClick:function(t){e.analyticsData&&e.analyticsOptions&&o.a.logUserAction(e.analyticsData,e.analyticsOptions),p.a.isFunction(e.onClick)&&e.onClick(t)},className:t},a)}function E(e){var t=[],a=[];e.actions.forEach((function(e){e.button?t.push(e):a.push(e)}));var r="d-flex";return e.className&&(r+=" ".concat(e.className)),n.createElement("div",{className:r},n.createElement(n.Fragment,null,!!t.length&&n.createElement("span",{className:d.a.buttonList},t.map((function(e,t){return n.createElement(n.Fragment,{key:t},e.label?n.createElement(b,{appLink:e.appLink,onClick:e.onClick,svgName:e.svgName,className:e.className,tooltip:e.tooltip,showSpinner:e.showSpinner,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},e.label):n.createElement(g.a,{appLink:e.appLink,onClick:e.onClick,svgName:e.svgName,className:e.className,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}))}))),e.sortComponent?e.sortComponent:"",!!a.length&&n.createElement(f,{actions:a,className:!!t.length&&"ml-2",dropdownToggleClassName:e.actionsDropdownClassName})))}a.d(t,"a",(function(){return E}))},830:function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"c",(function(){return l})),a.d(t,"b",(function(){return u}));var n=a(0),r=a(818),i=a(2),o=a(837),c=a(844),s=n.createContext({isSortable:!1});function l(e){var t=n.useContext(s).isSortable?c.a:c.b,a=i.a.AppLinkHelper.getCurrentAppLink();return n.createElement(n.Fragment,null,n.createElement("div",{className:"position-relative"},e.videos.map((function(a,r){return n.createElement(t,{key:a.id,idx:r,index:r,video:a,getVideoAppLink:e.getVideoAppLink,getSeriesAppLink:e.getSeriesAppLink,setFavourite:e.setFavourite,hideInteractiveBadge:e.hideInteractiveBadge})}))),e.cursors&&n.createElement(o.b,{appLink:a,cursors:e.cursors}))}var u=Object(r.SortableContainer)((function(e){return n.createElement(s.Provider,{value:{isSortable:!0,currentSortingIndex:e.currentSortingIndex}},n.createElement(l,Object.assign({},e)))}))},831:function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(21),r=a(46),i=function(e,t){var a={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(a[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(a[n[r]]=e[n[r]])}return a};function o(e,t,a,r){return{url:"/api/domain/v2/objects/".concat(t),key:"favourite:video:".concat(t,":").concat(e),data:{favouriteVideos:e},type:n.a.PUT,invalidationKeys:["favourite:videos:".concat(t),"video:is:favourited:".concat(t)],success:a,error:r}}function c(e,t,a,r){return{url:"/api/domain/v2/objects/".concat(t,"/favouriteVideos/").concat(e),key:"favourite:video:".concat(t,":").concat(e),type:n.a.DELETE,invalidationKeys:["favourite:videos:".concat(t),"video:is:favourited:".concat(t)],success:a,error:r}}var s={favouriteVideos:function(e,t){var a="".concat(r.a.VIDEO_COLLECTION).concat(function(e){return e?"&cursor=".concat(e):""}(t));return{url:"/api/domain/v2/objects/".concat(e,"/favouriteVideos?query=").concat(a),key:"favourite:videos:".concat(e).concat(t?":".concat(t):"")}},updateIsVideoFavourited:function(e,t,a,n,r){return(a?o:c)(e,t,n,r)},isFavourited:function(e,t){var a=t.slice().sort(),n=a.map((function(e){return"id=".concat(e)}));if(n.length)return{url:"/api/domain/v2/objects?query=favouritedBy{id:".concat(e,"}&").concat(n.join("&")),key:"video:is:favourited:".concat(e,":by:id:").concat(a.join(",")),formatData:function(e){var t;if(!(null===(t=e)||void 0===t?void 0:t.length))return e;return e.map((function(e){var t,a,n=e.favouritedBy,r=i(e,["favouritedBy"]);return Object.assign(Object.assign({},r),{isFavourited:!!(null===(a=null===(t=n)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)})}))}}}}},837:function(e,t,a){"use strict";a.d(t,"b",(function(){return u})),a.d(t,"a",(function(){return d}));var n=a(0),r=a(825),i=a(51),o=a(73),c=a(40),s=a(3);function l(e,t){return t?{application:e.application,action:e.action,args:e.args,params:Object.assign({},e.params,{cursor:t})}:null}function u(e){var t=e.appLink,a=e.cursors,r=e.className;function u(e){c.a.logUserAction({page:e},{location:s.j.Pagination,entity:s.d.Pagination,actionType:s.n.Navigate})}return n.createElement(o.a.Provider,{value:"shared.pagination"},n.createElement("div",{className:r},n.createElement(i.a,{appLink:l(t,a.previous),className:"btn btn-secondary mr-1 ".concat(a.previous?"":"disabled"),onClick:function(){return u("previous")}},n.createElement(o.b,{phrase:"previous"})),n.createElement(i.a,{appLink:l(t,a.next),className:"btn btn-secondary ".concat(a.next?"":"disabled"),onClick:function(){return u("next")}},n.createElement(o.b,{phrase:"next"}))))}function d(e){function t(e){c.a.logUserAction({page:e},{location:s.j.Pagination,entity:s.d.Pagination,actionType:s.n.Navigate})}return n.createElement(o.a.Provider,{value:"shared.pagination"},n.createElement("div",{className:e.className},n.createElement(r.a,{onClick:function(){1!==e.currentPage&&(t("previous"),e.onClickBack())},className:"btn btn-secondary mr-1 cursor-pointer ".concat(1===e.currentPage?"disabled":"")},n.createElement(o.b,{phrase:"previous"})),n.createElement(r.a,{onClick:function(){e.currentPage!==e.totalPages&&(t("next"),e.onClickNext())},className:"btn btn-secondary cursor-pointer ".concat(e.currentPage===e.totalPages?"disabled":"")},n.createElement(o.b,{phrase:"next"}))))}u.defaultProps={className:"py-2"},d.defaultProps={className:"py-2"}},843:function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));var n={userVideoHistory:function(e,t,a,n,r,i){var o="video:history:".concat(e,":").concat(t),c="/api/videoviews/v1/customers/".concat(e,"/users/").concat(t,"/videos/history");return a&&(o+=":".concat(a),c+="?cursor=".concat(a)),{key:o,url:c,success:n,error:r,always:i}},videoHistory:function(e,t,a,n,r,i){var o=a.sort().map((function(e){return"videoId=".concat(e)}));return{key:"video:history:".concat(e,":").concat(t,":videos:").concat(o.join("&")),url:"/api/videoviews/v1/customers/".concat(e,"/users/").concat(t,"/videos/history?").concat(o.join("&")),formatData:function(e){var t;return(null===(t=e)||void 0===t?void 0:t.length)?e.map((function(e){return{id:e.videoId,lastProgressPoint:e.lastProgressPoint}})):e},success:n,error:r,always:i}}}},844:function(e,t,a){"use strict";var n=a(0),r=a(33),i=a(818),o=a(860),c=a(245),s=a(55),l=a(839),u=a(854),d=a(45),p=function(e){return!!e&&e.series&&!!e.series.id},m=a(13),v=a(830),f=a(35),g=a(828),y=a(242),b=a(128),E=a(107),k=a(845),h=a.n(k),N=[b.a.AddToPlaylist,b.a.Share];function w(e){var t=n.useContext(y.a),a=t.videoActions,r=void 0===a?N:a,i=t.getActionAppLink,o=t.hideLabel,c=Object(E.a)(d.a.XS);if(!f.a.isFunction(i))return n.createElement(n.Fragment,null);var s=[];return r.forEach((function(t){var a=i(e.video,t);a&&s.push(Object.assign({appLink:a,className:"btn btn-link",button:!c},Object(b.b)()[t]))})),o&&!c&&(s=s.map((function(e){return Object.assign(Object.assign({},e),{label:null})}))),n.createElement(g.a,{actions:s,className:"float-right mt-n1",actionsDropdownClassName:"btn btn-link rounded-circle p-0 ".concat(h.a.actionsDropdown)})}var O=a(73),C=a(846),S=a.n(C);function L(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],n=!0,r=!1,i=void 0;try{for(var o,c=e[Symbol.iterator]();!(n=(o=c.next()).done)&&(a.push(o.value),!t||a.length!==t);n=!0);}catch(e){r=!0,i=e}finally{try{n||null==c.return||c.return()}finally{if(r)throw i}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return j(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(e);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return j(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function x(e){var t=L(n.useState(e.truncate),2),a=t[0],r=t[1];return Object(E.a)(d.a.XS)?n.createElement(n.Fragment,null):n.createElement("div",{className:"position-relative overflow-hidden ".concat(a?"clamp-2":"")},n.createElement("p",{className:"m-0"},e.video.description,!!e.isExpandable&&n.createElement("span",{className:"cursor-pointer ".concat(S.a.ellipsis),onClick:function(){return r(!a)}},n.createElement(O.b,{namespace:"shared.videoItemDescription",phrase:a?"showMore":"showLess"}))))}x.defaultProps={truncate:!0};var A=a(51);function D(e){return n.createElement(A.a,{appLink:e.appLink},n.createElement("h5",{className:"m-0 mb-1 clamp-2"},e.video.name))}var P=a(863),F=a(858),I=a(847),T=a.n(I),V=a(236),B=a(3);a.d(t,"b",(function(){return U})),a.d(t,"a",(function(){return H}));var R=Object(i.SortableHandle)((function(){return n.createElement(r.Col,{xs:2,className:"d-flex justify-content-center align-items-center cursor-pointer ".concat(T.a.dragHandleContainer)},n.createElement(s.a,{svgName:m.b.Handle,size:s.b.Small}))}));function U(e){var t,a=Object(V.a)(),i=a===d.a.XS,s=a===d.a.SM||a===d.a.MD,m=a===d.a.SM,f=n.useContext(v.a).isSortable&&!i,g=e.getVideoAppLink(e.video),y=p(e.video)&&e.getSeriesAppLink(e.video.series);return n.createElement(r.Row,{className:"py-2"},n.createElement(r.Col,{xs:i?12:s?4:3,className:"flex-column align-items-flex-start mb-1"},n.createElement(r.Row,null,!!f&&n.createElement(R,null),n.createElement(r.Col,{xs:(t=f,t?10:12)},n.createElement(o.a,{video:e.video,appLink:g,seriesAppLink:y,size:f?l.a.Small:l.a.Medium,textPosition:u.a.Independent,setFavourite:e.setFavourite,type:"static",analyticsOptions:{location:B.j.VideoListItem}})))),n.createElement(r.Col,{xs:i?12:s?8:9},n.createElement(w,{video:e.video}),n.createElement(c.a,{className:"d-block",video:e.video,appLink:y,analyticsOptions:{location:B.j.VideoListItem}}),n.createElement(D,{video:e.video,appLink:e.getVideoAppLink(e.video)}),n.createElement(P.a,null,n.createElement(F.a,{type:F.b.Rating,data:e.video.rating}),n.createElement(F.a,{type:F.b.ProductionYear,data:e.video.productionYear}),!e.hideInteractiveBadge&&n.createElement(F.a,{type:F.b.Interactive,data:e.video.interactives})),!m&&n.createElement(x,{video:e.video})))}var H=Object(i.SortableElement)((function(e){return n.createElement(U,Object.assign({},e))}))},845:function(e,t,a){e.exports={actionsDropdown:"XR0aX"}},846:function(e,t,a){e.exports={ellipsis:"LJY5U"}},847:function(e,t,a){e.exports={dragHandleContainer:"_24s1b"}},848:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(33),o=a(45),c=a(236),s=a(849),l=a.n(s);function u(e){var t=Object(c.a)(),a=t===o.a.XS,n=t===o.a.SM||t===o.a.MD,s=e.withReordering&&!a;return r.a.createElement(r.a.Fragment,null,Array(e.numVideos).fill(null).map((function(e,t){return r.a.createElement(i.Row,{key:t,className:"py-2"},r.a.createElement(i.Col,{xs:a?12:n?4:3,className:"flex-column align-items-flex-start mb-1"},r.a.createElement(i.Row,null,!!s&&r.a.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},r.a.createElement("div",{className:"partial-loading-background ".concat(l.a.partialDragHandle)})),r.a.createElement(i.Col,{xs:s?10:12},r.a.createElement("div",{className:"partial-loading-background rounded-lg ".concat(l.a.partialThumbnail)})))),r.a.createElement(i.Col,{xs:a?12:n?8:9},r.a.createElement("div",{className:"partial-loading-background ".concat(l.a.partialSeriesLink)}),r.a.createElement("div",{className:"partial-loading-background mb-1 ".concat(l.a.partialName)}),r.a.createElement("div",{className:"partial-loading-background ".concat(l.a.partialDescription)}),r.a.createElement("div",{className:"partial-loading-background ".concat(l.a.partialBadges)}),r.a.createElement("div",{className:"partial-loading-background ".concat(l.a.partialActions)})))})))}u.defaultProps={numVideos:15}},849:function(e,t,a){e.exports={partialName:"_7KNC2",partialDescription:"Vk_wR",partialThumbnail:"_3peRZ",partialDragHandle:"_1F7_f"}},850:function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(14),r=a(154),i=a(831),o=a(239),c=a(843);function s(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(e);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return l(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}var u={ratings:!0,favourites:!0,watchHistory:!0};function d(e,t){var a,r=n.a.useGetResponse(null===(a=t)||void 0===a?void 0:a.key),i=n.a.useGetFetch(t);e&&t&&r.shouldFetch&&i()}function p(e){var t,a,l,p=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=Object.assign(Object.assign({},u),p),v=m.ratings,f=m.favourites,g=m.watchHistory,y=n.a.useBasicFetch(r.a.currentUser()),b=e&&(Array.isArray(e)?e.filter(Boolean).map((function(e){return e.id})):e.data.filter(Boolean).map((function(e){return e.id}))),E=y.data,k=[];v&&(k=[].concat(s(k),[!!(null===(t=b)||void 0===t?void 0:t.length)&&o.a.videoRatings(b)])),f&&(k=[].concat(s(k),[!!(null===(a=b)||void 0===a?void 0:a.length)&&E&&i.a.isFavourited(E.id,b)])),g&&(k=[].concat(s(k),[!!(null===(l=b)||void 0===l?void 0:l.length)&&E&&c.a.videoHistory(E.customerId,E.id,b)])),k.forEach((function(t){return d(!!e,t)}))}},878:function(e,t,a){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}a.d(t,"a",(function(){return r}));var r={isNumber:function(e){return r.isType(e,"number")},isString:function(e){return r.isType(e,"string")},isType:function(e,t){return n(e)===t}}}}]);