@clickview/curator 1.0.14-rc.0 → 1.0.15-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (698) hide show
  1. package/dist/curator-app.css +10 -2
  2. package/dist/curator-app.css.map +1 -0
  3. package/dist/curator-app.js +1 -1
  4. package/dist/curator-app.js.map +1 -0
  5. package/dist/en.json +1 -1
  6. package/dist/libs/analytics/src/enums/RegionName.d.ts +5 -0
  7. package/dist/libs/analytics/src/interfaces/AnalyticsTypes.d.ts +236 -0
  8. package/dist/libs/analytics/src/interfaces/Config.d.ts +3 -0
  9. package/dist/libs/analytics/src/interfaces/Folder.d.ts +3 -0
  10. package/dist/libs/analytics/src/interfaces/HashObject.d.ts +3 -0
  11. package/dist/libs/analytics/src/interfaces/Owner.d.ts +3 -0
  12. package/dist/libs/analytics/src/interfaces/Playlist.d.ts +3 -0
  13. package/dist/libs/analytics/src/interfaces/Rating.d.ts +4 -0
  14. package/dist/libs/analytics/src/interfaces/Region.d.ts +5 -0
  15. package/dist/libs/analytics/src/interfaces/RegionalUrl.d.ts +5 -0
  16. package/dist/libs/analytics/src/interfaces/Resource.d.ts +5 -0
  17. package/dist/libs/analytics/src/interfaces/Series.d.ts +3 -0
  18. package/dist/libs/analytics/src/interfaces/Subtitle.d.ts +4 -0
  19. package/dist/libs/analytics/src/interfaces/User.d.ts +6 -0
  20. package/dist/libs/analytics/src/interfaces/Video.d.ts +16 -0
  21. package/dist/libs/analytics/src/interfaces/index.d.ts +15 -0
  22. package/dist/libs/analytics/src/interfaces/primitives/BaseObject.d.ts +7 -0
  23. package/dist/libs/common/src/backbone/constants/Caches.d.ts +3 -0
  24. package/dist/libs/common/src/backbone/constants/CommonChannels.d.ts +5 -0
  25. package/dist/libs/common/src/backbone/constants/CommonServices.d.ts +5 -0
  26. package/dist/libs/common/src/backbone/constants/DataProviders.d.ts +4 -0
  27. package/dist/libs/common/src/backbone/core/AppLink.d.ts +37 -0
  28. package/dist/libs/common/src/backbone/core/BaseAppRouter.d.ts +95 -0
  29. package/dist/libs/common/src/backbone/core/BaseApplication.d.ts +76 -0
  30. package/dist/libs/common/src/backbone/core/BaseBehavior.d.ts +6 -0
  31. package/dist/libs/common/src/backbone/core/BaseCollection.d.ts +7 -0
  32. package/dist/libs/common/src/backbone/core/BaseCollectionView.d.ts +16 -0
  33. package/dist/libs/common/src/backbone/core/BaseError.d.ts +18 -0
  34. package/dist/libs/common/src/backbone/core/BaseLayoutView.d.ts +11 -0
  35. package/dist/libs/common/src/backbone/core/BaseModel.d.ts +27 -0
  36. package/dist/libs/common/src/backbone/core/BaseNestedModel.d.ts +21 -0
  37. package/dist/libs/common/src/backbone/core/BaseService.d.ts +10 -0
  38. package/dist/libs/common/src/backbone/core/BaseView.d.ts +127 -0
  39. package/dist/libs/common/src/backbone/core/EventNames.d.ts +16 -0
  40. package/dist/libs/common/src/backbone/core/LayoutService.d.ts +31 -0
  41. package/dist/libs/common/src/backbone/core/ListenToRadio.d.ts +3 -0
  42. package/dist/libs/common/src/backbone/core/LocationUtils.d.ts +23 -0
  43. package/dist/libs/common/src/backbone/core/Middleware.d.ts +10 -0
  44. package/dist/libs/common/src/backbone/core/Shell.d.ts +79 -0
  45. package/dist/libs/common/src/backbone/core/Types.d.ts +12 -0
  46. package/dist/libs/common/src/backbone/core/index.d.ts +18 -0
  47. package/dist/libs/common/src/backbone/enums/DataServiceErrorType.d.ts +8 -0
  48. package/dist/libs/common/src/backbone/enums/HttpStatus.d.ts +10 -0
  49. package/dist/libs/common/src/backbone/enums/HttpVerbs.d.ts +6 -0
  50. package/dist/libs/common/src/backbone/errors/DevError.d.ts +4 -0
  51. package/dist/libs/common/src/backbone/index.d.ts +2 -0
  52. package/dist/libs/common/src/backbone/interfaces/BaseCollectionIdentifier.d.ts +18 -0
  53. package/dist/libs/common/src/backbone/interfaces/ChainableDataService.d.ts +9 -0
  54. package/dist/libs/common/src/backbone/interfaces/DataCache.d.ts +8 -0
  55. package/dist/libs/common/src/backbone/interfaces/DataProvider.d.ts +15 -0
  56. package/dist/libs/common/src/backbone/interfaces/DataServiceError.d.ts +7 -0
  57. package/dist/libs/common/src/backbone/interfaces/DataServiceRequests.d.ts +218 -0
  58. package/dist/libs/common/src/backbone/interfaces/Pagination.d.ts +33 -0
  59. package/dist/libs/common/src/backbone/interfaces/StickitBinding.d.ts +38 -0
  60. package/dist/libs/common/src/backbone/interfaces/Xhr.d.ts +9 -0
  61. package/dist/libs/common/src/backbone/interfaces/index.d.ts +9 -0
  62. package/dist/libs/common/src/backbone/services/BaseAlertService.d.ts +69 -0
  63. package/dist/libs/common/src/backbone/services/BaseDataService.d.ts +82 -0
  64. package/dist/libs/common/src/backbone/services/EnvironmentVariables.d.ts +13 -0
  65. package/dist/libs/common/src/backbone/services/InstanceManager.d.ts +33 -0
  66. package/dist/libs/common/src/backbone/services/LanguageService.d.ts +22 -0
  67. package/dist/libs/common/src/backbone/services/caches/FifoMemoryCache.d.ts +20 -0
  68. package/dist/libs/common/src/backbone/services/data-providers/AjaxDataProvider.d.ts +31 -0
  69. package/dist/libs/common/src/backbone/utils/ConcurrencyHelper.d.ts +13 -0
  70. package/dist/libs/common/src/backbone/utils/DataServiceErrorHelper.d.ts +2 -0
  71. package/dist/libs/common/src/backbone/utils/FunctionHelper.d.ts +8 -0
  72. package/dist/libs/common/src/backbone/utils/UrlHelper.d.ts +13 -0
  73. package/dist/libs/common/src/react/core/ReactApplication.d.ts +9 -0
  74. package/dist/libs/common/src/react/core/ReactLayoutView.d.ts +13 -0
  75. package/dist/libs/common/src/react/flight/FlightHelpers.d.ts +13 -0
  76. package/dist/libs/common/src/react/flight/FlightMiddleware.d.ts +11 -0
  77. package/dist/libs/common/src/react/flight/FlightReducer.d.ts +2 -0
  78. package/dist/libs/common/src/react/flight/FlightSimulator.d.ts +24 -0
  79. package/dist/libs/common/src/react/flight/constants/Actions.d.ts +7 -0
  80. package/dist/libs/common/src/react/flight/constants/index.d.ts +1 -0
  81. package/dist/libs/common/src/react/flight/data-layers/AjaxRequest.d.ts +2 -0
  82. package/dist/libs/common/src/react/flight/data-layers/index.d.ts +1 -0
  83. package/dist/libs/common/src/react/flight/enums/RequestStatus.d.ts +6 -0
  84. package/dist/libs/common/src/react/flight/enums/index.d.ts +1 -0
  85. package/dist/libs/common/src/react/flight/index.d.ts +9 -0
  86. package/dist/libs/common/src/react/flight/interfaces/Action.d.ts +28 -0
  87. package/dist/libs/common/src/react/flight/interfaces/Dispatch.d.ts +3 -0
  88. package/dist/libs/common/src/react/flight/interfaces/FlightState.d.ts +22 -0
  89. package/dist/libs/common/src/react/flight/interfaces/HttpRequest.d.ts +24 -0
  90. package/dist/libs/common/src/react/flight/interfaces/NormalizeOptions.d.ts +4 -0
  91. package/dist/libs/common/src/react/flight/interfaces/NormalizedData.d.ts +7 -0
  92. package/dist/libs/common/src/react/flight/interfaces/Request.d.ts +29 -0
  93. package/dist/libs/common/src/react/flight/interfaces/Response.d.ts +9 -0
  94. package/dist/libs/common/src/react/flight/interfaces/UpdateStateOptions.d.ts +15 -0
  95. package/dist/libs/common/src/react/flight/interfaces/index.d.ts +9 -0
  96. package/dist/libs/common/src/react/flight/normalizer/Denormalizer.d.ts +3 -0
  97. package/dist/libs/common/src/react/flight/normalizer/Normalizer.d.ts +8 -0
  98. package/dist/libs/common/src/react/flight/normalizer/index.d.ts +2 -0
  99. package/dist/libs/common/src/react/flight/utils/SimulatorHelper.d.ts +5 -0
  100. package/dist/libs/common/src/react/flight/utils/StateHelper.d.ts +11 -0
  101. package/dist/libs/common/src/react/flight/utils/index.d.ts +2 -0
  102. package/dist/libs/common/src/react/hooks/UseBulkFetch.d.ts +10 -0
  103. package/dist/libs/common/src/react/hooks/UseFetch.d.ts +10 -0
  104. package/dist/libs/common/src/react/hooks/UseInstance.d.ts +6 -0
  105. package/dist/libs/common/src/react/hooks/UseService.d.ts +2 -0
  106. package/dist/libs/common/src/react/index.d.ts +2 -0
  107. package/dist/libs/common/src/react/interfaces/ApplicationData.d.ts +3 -0
  108. package/dist/libs/common/src/react/interfaces/ApplicationState.d.ts +8 -0
  109. package/dist/libs/common/src/react/interfaces/BaseReducerActions.d.ts +4 -0
  110. package/dist/libs/common/src/react/interfaces/HashObject.d.ts +3 -0
  111. package/dist/libs/common/src/react/interfaces/index.d.ts +4 -0
  112. package/dist/libs/common/src/react/utils/ArrayHelper.d.ts +39 -0
  113. package/dist/libs/common/src/react/utils/FetchHelper.d.ts +50 -0
  114. package/dist/libs/common/src/react/utils/ObjectHelper.d.ts +10 -0
  115. package/dist/libs/common/src/react/utils/RandomHelper.d.ts +3 -0
  116. package/dist/libs/common/src/react/utils/TimeHelper.d.ts +7 -0
  117. package/dist/libs/common/src/react/utils/TypeHelper.d.ts +5 -0
  118. package/dist/libs/shared/src/apps/notifications/enums/NotificationType.d.ts +16 -0
  119. package/dist/libs/shared/src/apps/playlists/enums/PlaylistSortType.d.ts +5 -0
  120. package/dist/libs/shared/src/apps/playlists/interfaces/data-requests/CreateOrUpdatePlaylistRequest.d.ts +7 -0
  121. package/dist/libs/shared/src/apps/playlists/interfaces/data-requests/index.d.ts +1 -0
  122. package/dist/libs/shared/src/apps/playlists/interfaces/identifiers/PlaylistCollectionIdentifier.d.ts +5 -0
  123. package/dist/libs/shared/src/apps/playlists/interfaces/identifiers/PlaylistVideoCollectionIdentifier.d.ts +4 -0
  124. package/dist/libs/shared/src/apps/playlists/interfaces/identifiers/index.d.ts +2 -0
  125. package/dist/libs/shared/src/apps/playlists/interfaces/index.d.ts +2 -0
  126. package/dist/libs/shared/src/components/actions/ActionButton.d.ts +7 -0
  127. package/dist/libs/shared/src/components/actions/Actions.d.ts +21 -0
  128. package/dist/libs/shared/src/components/actions/ActionsDropdown.d.ts +14 -0
  129. package/dist/libs/shared/src/components/alert/Alert.d.ts +7 -0
  130. package/dist/libs/shared/src/components/alert/AlertContent.d.ts +8 -0
  131. package/dist/libs/shared/src/components/alert/AlertList.d.ts +8 -0
  132. package/dist/libs/shared/src/components/app-link/AppLink.d.ts +9 -0
  133. package/dist/libs/shared/src/components/confirmation-popup/ConfirmationPopup.d.ts +17 -0
  134. package/dist/libs/shared/src/components/div-button/DivButton.d.ts +10 -0
  135. package/dist/libs/shared/src/components/forms/form-buttons/FormButtons.d.ts +7 -0
  136. package/dist/libs/shared/src/components/forms/form-checkbox/FormCheckbox.d.ts +7 -0
  137. package/dist/libs/shared/src/components/forms/form-field/CharacterCounter.d.ts +7 -0
  138. package/dist/libs/shared/src/components/forms/form-field/FormField.d.ts +16 -0
  139. package/dist/libs/shared/src/components/forms/form-wrapper/FormWrapper.d.ts +20 -0
  140. package/dist/libs/shared/src/components/icon-button/IconButton.d.ts +15 -0
  141. package/dist/libs/shared/src/components/pagination/Pagination.d.ts +28 -0
  142. package/dist/libs/shared/src/components/popup/Popup.d.ts +10 -0
  143. package/dist/libs/shared/src/components/popup/PopupButtons.d.ts +14 -0
  144. package/dist/libs/shared/src/components/popup/PopupLoadingSpinner.d.ts +2 -0
  145. package/dist/libs/shared/src/components/search-bar/SearchBar.d.ts +134 -0
  146. package/dist/libs/shared/src/components/search-bar/SearchInput.d.ts +8 -0
  147. package/dist/libs/shared/src/components/search-bar/SearchUtils.d.ts +44 -0
  148. package/dist/libs/shared/src/components/spinner-button/SpinnerButton.d.ts +7 -0
  149. package/dist/libs/shared/src/components/svg-container/SvgContainer.d.ts +20 -0
  150. package/dist/libs/shared/src/components/text/Text.d.ts +13 -0
  151. package/dist/libs/shared/src/components/tooltip/Tooltip.d.ts +16 -0
  152. package/dist/libs/shared/src/constants/AppVariables.d.ts +4 -0
  153. package/dist/libs/shared/src/constants/CacheDurations.d.ts +4 -0
  154. package/dist/libs/shared/src/constants/DataPrefixes.d.ts +12 -0
  155. package/dist/libs/shared/src/constants/ImageSizes.d.ts +8 -0
  156. package/dist/libs/shared/src/constants/LayoutRegions.d.ts +7 -0
  157. package/dist/libs/shared/src/constants/RadioChannels.d.ts +20 -0
  158. package/dist/libs/shared/src/constants/SharedServices.d.ts +25 -0
  159. package/dist/libs/shared/src/enums/ClassificationType.d.ts +4 -0
  160. package/dist/libs/shared/src/enums/CountryCode.d.ts +5 -0
  161. package/dist/libs/shared/src/enums/CustomerType.d.ts +11 -0
  162. package/dist/libs/shared/src/enums/GlanceFormat.d.ts +3 -0
  163. package/dist/libs/shared/src/enums/Images.d.ts +26 -0
  164. package/dist/libs/shared/src/enums/MasterType.d.ts +59 -0
  165. package/dist/libs/shared/src/enums/MediaQueries.d.ts +18 -0
  166. package/dist/libs/shared/src/enums/ThemeType.d.ts +3 -0
  167. package/dist/libs/shared/src/enums/UserRole.d.ts +15 -0
  168. package/dist/libs/shared/src/enums/WidgetContents.d.ts +7 -0
  169. package/dist/libs/shared/src/hooks/UseAlerts.d.ts +6 -0
  170. package/dist/libs/shared/src/hooks/UseCanSubmitForm.d.ts +10 -0
  171. package/dist/libs/shared/src/hooks/UseMediaQuery.d.ts +1 -0
  172. package/dist/libs/shared/src/hooks/UseReorderedItems.d.ts +9 -0
  173. package/dist/libs/shared/src/images/svg/ImportedSvgs.d.ts +81 -0
  174. package/dist/libs/shared/src/images/svg/actions/index.d.ts +21 -0
  175. package/dist/libs/shared/src/images/svg/arrows/index.d.ts +9 -0
  176. package/dist/libs/shared/src/images/svg/index.d.ts +2 -0
  177. package/dist/libs/shared/src/images/svg/objects/index.d.ts +33 -0
  178. package/dist/libs/shared/src/images/svg/player/index.d.ts +14 -0
  179. package/dist/libs/shared/src/images/svg/settings.d.ts +1 -0
  180. package/dist/libs/shared/src/images/svg/status/index.d.ts +13 -0
  181. package/dist/libs/shared/src/interfaces/AppLinkWithLabel.d.ts +5 -0
  182. package/dist/libs/shared/src/interfaces/DialogOptions.d.ts +13 -0
  183. package/dist/libs/shared/src/interfaces/ImageUrls.d.ts +16 -0
  184. package/dist/libs/shared/src/interfaces/QueryParams.d.ts +3 -0
  185. package/dist/libs/shared/src/interfaces/RegionalUrl.d.ts +5 -0
  186. package/dist/libs/shared/src/interfaces/WidgetContext.d.ts +9 -0
  187. package/dist/libs/shared/src/interfaces/app-variables/BaseNotificationsAppVariables.d.ts +16 -0
  188. package/dist/libs/shared/src/interfaces/app-variables/BaseSearchAppVariables.d.ts +14 -0
  189. package/dist/libs/shared/src/interfaces/app-variables/index.d.ts +2 -0
  190. package/dist/libs/shared/src/interfaces/collections/AudienceCollection.d.ts +4 -0
  191. package/dist/libs/shared/src/interfaces/collections/CategoryCollection.d.ts +4 -0
  192. package/dist/libs/shared/src/interfaces/collections/ClipCollection.d.ts +4 -0
  193. package/dist/libs/shared/src/interfaces/collections/CompanyCollection.d.ts +3 -0
  194. package/dist/libs/shared/src/interfaces/collections/CustomerCollection.d.ts +4 -0
  195. package/dist/libs/shared/src/interfaces/collections/FolderCollection.d.ts +4 -0
  196. package/dist/libs/shared/src/interfaces/collections/InteractiveCollection.d.ts +4 -0
  197. package/dist/libs/shared/src/interfaces/collections/LibraryCollection.d.ts +4 -0
  198. package/dist/libs/shared/src/interfaces/collections/LinkCollection.d.ts +4 -0
  199. package/dist/libs/shared/src/interfaces/collections/PersonCollection.d.ts +3 -0
  200. package/dist/libs/shared/src/interfaces/collections/PlaylistCollection.d.ts +4 -0
  201. package/dist/libs/shared/src/interfaces/collections/PresentationAudienceCollection.d.ts +4 -0
  202. package/dist/libs/shared/src/interfaces/collections/ResourceCollection.d.ts +3 -0
  203. package/dist/libs/shared/src/interfaces/collections/SeriesCollection.d.ts +4 -0
  204. package/dist/libs/shared/src/interfaces/collections/TagCollection.d.ts +4 -0
  205. package/dist/libs/shared/src/interfaces/collections/UserCollection.d.ts +3 -0
  206. package/dist/libs/shared/src/interfaces/collections/VideoCollection.d.ts +4 -0
  207. package/dist/libs/shared/src/interfaces/collections/WidgetCollection.d.ts +3 -0
  208. package/dist/libs/shared/src/interfaces/collections/index.d.ts +20 -0
  209. package/dist/libs/shared/src/interfaces/collections/primitives/BasePaginatedCollection.d.ts +7 -0
  210. package/dist/libs/shared/src/interfaces/collections/primitives/index.d.ts +1 -0
  211. package/dist/libs/shared/src/interfaces/index.d.ts +13 -0
  212. package/dist/libs/shared/src/interfaces/models/Audience.d.ts +3 -0
  213. package/dist/libs/shared/src/interfaces/models/Banner.d.ts +3 -0
  214. package/dist/libs/shared/src/interfaces/models/Category.d.ts +3 -0
  215. package/dist/libs/shared/src/interfaces/models/Channel.d.ts +3 -0
  216. package/dist/libs/shared/src/interfaces/models/Classification.d.ts +21 -0
  217. package/dist/libs/shared/src/interfaces/models/Clip.d.ts +6 -0
  218. package/dist/libs/shared/src/interfaces/models/Company.d.ts +3 -0
  219. package/dist/libs/shared/src/interfaces/models/Config.d.ts +11 -0
  220. package/dist/libs/shared/src/interfaces/models/Cover.d.ts +3 -0
  221. package/dist/libs/shared/src/interfaces/models/Customer.d.ts +5 -0
  222. package/dist/libs/shared/src/interfaces/models/Folder.d.ts +7 -0
  223. package/dist/libs/shared/src/interfaces/models/Following.d.ts +4 -0
  224. package/dist/libs/shared/src/interfaces/models/Glance.d.ts +7 -0
  225. package/dist/libs/shared/src/interfaces/models/HeroBanner.d.ts +3 -0
  226. package/dist/libs/shared/src/interfaces/models/Image.d.ts +7 -0
  227. package/dist/libs/shared/src/interfaces/models/Interactive.d.ts +5 -0
  228. package/dist/libs/shared/src/interfaces/models/LanguageConfig.d.ts +5 -0
  229. package/dist/libs/shared/src/interfaces/models/Library.d.ts +3 -0
  230. package/dist/libs/shared/src/interfaces/models/Link.d.ts +3 -0
  231. package/dist/libs/shared/src/interfaces/models/Organisation.d.ts +3 -0
  232. package/dist/libs/shared/src/interfaces/models/Person.d.ts +3 -0
  233. package/dist/libs/shared/src/interfaces/models/Playlist.d.ts +10 -0
  234. package/dist/libs/shared/src/interfaces/models/Poster.d.ts +3 -0
  235. package/dist/libs/shared/src/interfaces/models/Presentation.d.ts +3 -0
  236. package/dist/libs/shared/src/interfaces/models/PresentationAudience.d.ts +6 -0
  237. package/dist/libs/shared/src/interfaces/models/Rating.d.ts +5 -0
  238. package/dist/libs/shared/src/interfaces/models/Resource.d.ts +9 -0
  239. package/dist/libs/shared/src/interfaces/models/Restriction.d.ts +6 -0
  240. package/dist/libs/shared/src/interfaces/models/Season.d.ts +4 -0
  241. package/dist/libs/shared/src/interfaces/models/Series.d.ts +10 -0
  242. package/dist/libs/shared/src/interfaces/models/Share.d.ts +9 -0
  243. package/dist/libs/shared/src/interfaces/models/Subject.d.ts +13 -0
  244. package/dist/libs/shared/src/interfaces/models/Tag.d.ts +3 -0
  245. package/dist/libs/shared/src/interfaces/models/TallPoster.d.ts +3 -0
  246. package/dist/libs/shared/src/interfaces/models/Theme.d.ts +10 -0
  247. package/dist/libs/shared/src/interfaces/models/Thumbnail.d.ts +3 -0
  248. package/dist/libs/shared/src/interfaces/models/User.d.ts +53 -0
  249. package/dist/libs/shared/src/interfaces/models/UserChannel.d.ts +7 -0
  250. package/dist/libs/shared/src/interfaces/models/Video.d.ts +26 -0
  251. package/dist/libs/shared/src/interfaces/models/VideoWithRestrictions.d.ts +5 -0
  252. package/dist/libs/shared/src/interfaces/models/Widget.d.ts +15 -0
  253. package/dist/libs/shared/src/interfaces/models/index.d.ts +43 -0
  254. package/dist/libs/shared/src/interfaces/models/primitives/BaseObject.d.ts +7 -0
  255. package/dist/libs/shared/src/interfaces/models/primitives/index.d.ts +1 -0
  256. package/dist/libs/shared/src/interfaces/props/ViewProps.d.ts +8 -0
  257. package/dist/libs/shared/src/interfaces/props/index.d.ts +1 -0
  258. package/dist/libs/shared/src/interfaces/requests/ReorderRequest.d.ts +12 -0
  259. package/dist/libs/shared/src/interfaces/requests/UpdateVideoRequest.d.ts +5 -0
  260. package/dist/libs/shared/src/interfaces/requests/index.d.ts +2 -0
  261. package/dist/libs/shared/src/interfaces/services/BaseLibraryDataService.d.ts +10 -0
  262. package/dist/libs/shared/src/interfaces/services/BaseSeriesDataService.d.ts +4 -0
  263. package/dist/libs/shared/src/interfaces/services/BaseVideoDataService.d.ts +5 -0
  264. package/dist/libs/shared/src/interfaces/services/BaseVideoUploadDataService.d.ts +8 -0
  265. package/dist/libs/shared/src/interfaces/services/index.d.ts +4 -0
  266. package/dist/libs/shared/src/services/UserDataService.d.ts +22 -0
  267. package/dist/libs/shared/src/utils/CollectionHelper.d.ts +9 -0
  268. package/dist/libs/shared/src/utils/FormHelper.d.ts +4 -0
  269. package/dist/libs/shared/src/utils/ImageHelper.d.ts +30 -0
  270. package/dist/libs/shared/src/utils/ReorderHelper.d.ts +15 -0
  271. package/dist/libs/shared/src/utils/StateHelper.d.ts +13 -0
  272. package/dist/libs/shared/src/utils/SvgHelper.d.ts +19 -0
  273. package/dist/projects/curator/src/apps/companies/CompaniesApplication.d.ts +13 -0
  274. package/dist/projects/curator/src/apps/companies/components/edit-company/EditCompany.d.ts +9 -0
  275. package/dist/projects/curator/src/apps/companies/components/edit-company/EditCompanyForm.d.ts +6 -0
  276. package/dist/projects/curator/src/apps/companies/components/edit-company/index.d.ts +1 -0
  277. package/dist/projects/curator/src/apps/companies/components/index.d.ts +1 -0
  278. package/dist/projects/curator/src/apps/companies/flight-requests/CompanyRequests.d.ts +8 -0
  279. package/dist/projects/curator/src/apps/companies/flight-requests/index.d.ts +1 -0
  280. package/dist/projects/curator/src/apps/companies/interfaces/CreateOrUpdateCompanyRequest.d.ts +3 -0
  281. package/dist/projects/curator/src/apps/companies/interfaces/index.d.ts +1 -0
  282. package/dist/projects/curator/src/apps/companies/utils/CompanyValidation.d.ts +3 -0
  283. package/dist/projects/curator/src/apps/companies/utils/index.d.ts +1 -0
  284. package/dist/projects/curator/src/apps/companies/views/companies/CompaniesView.d.ts +6 -0
  285. package/dist/projects/curator/src/apps/companies/views/companies/index.d.ts +1 -0
  286. package/dist/projects/curator/src/apps/companies/views/edit-company/EditCompanyView.d.ts +6 -0
  287. package/dist/projects/curator/src/apps/companies/views/edit-company/index.d.ts +1 -0
  288. package/dist/projects/curator/src/apps/companies/views/index.d.ts +3 -0
  289. package/dist/projects/curator/src/apps/companies/views/new-company/NewCompanyView.d.ts +2 -0
  290. package/dist/projects/curator/src/apps/companies/views/new-company/index.d.ts +1 -0
  291. package/dist/projects/curator/src/apps/domain-options/DomainOptionsApplication.d.ts +16 -0
  292. package/dist/projects/curator/src/apps/domain-options/components/edit-domain-option-details/DefaultValueField.d.ts +8 -0
  293. package/dist/projects/curator/src/apps/domain-options/components/edit-domain-option-details/EditDomainOptionDetails.d.ts +8 -0
  294. package/dist/projects/curator/src/apps/domain-options/components/edit-domain-option-details/EditDomainOptionDetailsForm.d.ts +6 -0
  295. package/dist/projects/curator/src/apps/domain-options/components/edit-domain-option-details/index.d.ts +1 -0
  296. package/dist/projects/curator/src/apps/domain-options/components/index.d.ts +1 -0
  297. package/dist/projects/curator/src/apps/domain-options/data-requests/DomainOptionRequests.d.ts +9 -0
  298. package/dist/projects/curator/src/apps/domain-options/data-requests/index.d.ts +1 -0
  299. package/dist/projects/curator/src/apps/domain-options/interfaces/data-requests/CreateOrUpdateDomainOptionRequest.d.ts +2 -0
  300. package/dist/projects/curator/src/apps/domain-options/interfaces/data-requests/index.d.ts +1 -0
  301. package/dist/projects/curator/src/apps/domain-options/interfaces/index.d.ts +2 -0
  302. package/dist/projects/curator/src/apps/domain-options/interfaces/models/DomainOption.d.ts +24 -0
  303. package/dist/projects/curator/src/apps/domain-options/interfaces/models/index.d.ts +1 -0
  304. package/dist/projects/curator/src/apps/domain-options/utils/index.d.ts +1 -0
  305. package/dist/projects/curator/src/apps/domain-options/utils/validation/DomainOptionValidation.d.ts +3 -0
  306. package/dist/projects/curator/src/apps/domain-options/utils/validation/index.d.ts +1 -0
  307. package/dist/projects/curator/src/apps/domain-options/views/delete-domain-option/DeleteDomainOptionView.d.ts +7 -0
  308. package/dist/projects/curator/src/apps/domain-options/views/delete-domain-option/index.d.ts +1 -0
  309. package/dist/projects/curator/src/apps/domain-options/views/domain-options/DomainOptionsView.d.ts +2 -0
  310. package/dist/projects/curator/src/apps/domain-options/views/domain-options/index.d.ts +1 -0
  311. package/dist/projects/curator/src/apps/domain-options/views/edit-domain-option/EditDomainOptionView.d.ts +6 -0
  312. package/dist/projects/curator/src/apps/domain-options/views/edit-domain-option/index.d.ts +1 -0
  313. package/dist/projects/curator/src/apps/domain-options/views/index.d.ts +4 -0
  314. package/dist/projects/curator/src/apps/domain-options/views/new-domain-option/NewDomainOptionView.d.ts +2 -0
  315. package/dist/projects/curator/src/apps/domain-options/views/new-domain-option/index.d.ts +1 -0
  316. package/dist/projects/curator/src/apps/people/PeopleApplication.d.ts +13 -0
  317. package/dist/projects/curator/src/apps/people/components/edit-person/EditPerson.d.ts +9 -0
  318. package/dist/projects/curator/src/apps/people/components/edit-person/EditPersonForm.d.ts +6 -0
  319. package/dist/projects/curator/src/apps/people/components/edit-person/index.d.ts +1 -0
  320. package/dist/projects/curator/src/apps/people/components/index.d.ts +1 -0
  321. package/dist/projects/curator/src/apps/people/flight-requests/PersonRequests.d.ts +8 -0
  322. package/dist/projects/curator/src/apps/people/flight-requests/index.d.ts +1 -0
  323. package/dist/projects/curator/src/apps/people/interfaces/CreateOrUpdatePersonRequest.d.ts +3 -0
  324. package/dist/projects/curator/src/apps/people/interfaces/index.d.ts +1 -0
  325. package/dist/projects/curator/src/apps/people/utils/PersonValidation.d.ts +3 -0
  326. package/dist/projects/curator/src/apps/people/utils/index.d.ts +1 -0
  327. package/dist/projects/curator/src/apps/people/views/edit-person/EditPersonView.d.ts +6 -0
  328. package/dist/projects/curator/src/apps/people/views/edit-person/index.d.ts +1 -0
  329. package/dist/projects/curator/src/apps/people/views/index.d.ts +3 -0
  330. package/dist/projects/curator/src/apps/people/views/new-person/NewPersonView.d.ts +2 -0
  331. package/dist/projects/curator/src/apps/people/views/new-person/index.d.ts +1 -0
  332. package/dist/projects/curator/src/apps/people/views/people/PeopleView.d.ts +6 -0
  333. package/dist/projects/curator/src/apps/people/views/people/index.d.ts +1 -0
  334. package/dist/projects/curator/src/apps/playlists/PlaylistsApplication.d.ts +27 -0
  335. package/dist/projects/curator/src/apps/playlists/components/edit-playlist/EditPlaylistDetails.d.ts +9 -0
  336. package/dist/projects/curator/src/apps/playlists/components/edit-playlist/EditPlaylistDetailsForm.d.ts +8 -0
  337. package/dist/projects/curator/src/apps/playlists/components/edit-playlist/index.d.ts +1 -0
  338. package/dist/projects/curator/src/apps/playlists/components/edit-playlist-nav/EditPlaylistNav.d.ts +7 -0
  339. package/dist/projects/curator/src/apps/playlists/components/edit-playlist-nav/index.d.ts +1 -0
  340. package/dist/projects/curator/src/apps/playlists/components/index.d.ts +2 -0
  341. package/dist/projects/curator/src/apps/playlists/components/playlist-search/PlaylistSearch.d.ts +6 -0
  342. package/dist/projects/curator/src/apps/playlists/components/playlist-search/index.d.ts +1 -0
  343. package/dist/projects/curator/src/apps/playlists/context/PlaylistsAppContext.d.ts +4 -0
  344. package/dist/projects/curator/src/apps/playlists/context/index.d.ts +1 -0
  345. package/dist/projects/curator/src/apps/playlists/flight-requests/CuratorPlaylistRequests.d.ts +17 -0
  346. package/dist/projects/curator/src/apps/playlists/interfaces/data-requests/Playlist.d.ts +7 -0
  347. package/dist/projects/curator/src/apps/playlists/interfaces/data-requests/index.d.ts +1 -0
  348. package/dist/projects/curator/src/apps/playlists/interfaces/index.d.ts +1 -0
  349. package/dist/projects/curator/src/apps/playlists/utils/PlaylistNavHelper.d.ts +4 -0
  350. package/dist/projects/curator/src/apps/playlists/utils/index.d.ts +2 -0
  351. package/dist/projects/curator/src/apps/playlists/utils/validation/PlaylistValidation.d.ts +3 -0
  352. package/dist/projects/curator/src/apps/playlists/utils/validation/index.d.ts +1 -0
  353. package/dist/projects/curator/src/apps/playlists/views/delete-playlist/DeletePlaylistView.d.ts +7 -0
  354. package/dist/projects/curator/src/apps/playlists/views/delete-playlist/index.d.ts +1 -0
  355. package/dist/projects/curator/src/apps/playlists/views/edit-playlist/EditPlaylistView.d.ts +6 -0
  356. package/dist/projects/curator/src/apps/playlists/views/edit-playlist/index.d.ts +1 -0
  357. package/dist/projects/curator/src/apps/playlists/views/edit-playlist-audiences/EditPlaylistAudiencesView.d.ts +6 -0
  358. package/dist/projects/curator/src/apps/playlists/views/edit-playlist-audiences/index.d.ts +1 -0
  359. package/dist/projects/curator/src/apps/playlists/views/edit-playlist-subjects/EditPlaylistSubjectsView.d.ts +6 -0
  360. package/dist/projects/curator/src/apps/playlists/views/edit-playlist-subjects/index.d.ts +1 -0
  361. package/dist/projects/curator/src/apps/playlists/views/edit-playlist-videos/EditPlaylistVideosView.d.ts +6 -0
  362. package/dist/projects/curator/src/apps/playlists/views/edit-playlist-videos/index.d.ts +1 -0
  363. package/dist/projects/curator/src/apps/playlists/views/index.d.ts +7 -0
  364. package/dist/projects/curator/src/apps/playlists/views/new-playlist/NewPlaylistView.d.ts +2 -0
  365. package/dist/projects/curator/src/apps/playlists/views/new-playlist/index.d.ts +1 -0
  366. package/dist/projects/curator/src/apps/playlists/views/playlist-search-results/PlaylistSearchResultsView.d.ts +7 -0
  367. package/dist/projects/curator/src/apps/playlists/views/playlist-search-results/index.d.ts +1 -0
  368. package/dist/projects/curator/src/apps/playlists/views/playlists/PlaylistsView.d.ts +6 -0
  369. package/dist/projects/curator/src/apps/playlists/views/playlists/index.d.ts +1 -0
  370. package/dist/projects/curator/src/apps/playlists/views/remove-video/RemoveVideoView.d.ts +8 -0
  371. package/dist/projects/curator/src/apps/playlists/views/remove-video/index.d.ts +1 -0
  372. package/dist/projects/curator/src/apps/series/SeriesApplication.d.ts +21 -0
  373. package/dist/projects/curator/src/apps/series/components/edit-series-details/EditSeriesDetails.d.ts +10 -0
  374. package/dist/projects/curator/src/apps/series/components/edit-series-details/EditSeriesDetailsForm.d.ts +10 -0
  375. package/dist/projects/curator/src/apps/series/components/edit-series-details/index.d.ts +1 -0
  376. package/dist/projects/curator/src/apps/series/components/edit-series-nav/EditSeriesNav.d.ts +7 -0
  377. package/dist/projects/curator/src/apps/series/components/edit-series-nav/index.d.ts +1 -0
  378. package/dist/projects/curator/src/apps/series/components/index.d.ts +2 -0
  379. package/dist/projects/curator/src/apps/series/context/SeriesAppContext.d.ts +4 -0
  380. package/dist/projects/curator/src/apps/series/context/index.d.ts +1 -0
  381. package/dist/projects/curator/src/apps/series/flight-requests/CuratorSeriesRequests.d.ts +11 -0
  382. package/dist/projects/curator/src/apps/series/interfaces/data-requests/Series.d.ts +9 -0
  383. package/dist/projects/curator/src/apps/series/interfaces/data-requests/index.d.ts +1 -0
  384. package/dist/projects/curator/src/apps/series/interfaces/index.d.ts +1 -0
  385. package/dist/projects/curator/src/apps/series/utils/SeriesNavHelper.d.ts +4 -0
  386. package/dist/projects/curator/src/apps/series/utils/index.d.ts +2 -0
  387. package/dist/projects/curator/src/apps/series/utils/validation/SeriesValidation.d.ts +4 -0
  388. package/dist/projects/curator/src/apps/series/utils/validation/index.d.ts +1 -0
  389. package/dist/projects/curator/src/apps/series/views/edit-series/EditSeriesView.d.ts +6 -0
  390. package/dist/projects/curator/src/apps/series/views/edit-series/index.d.ts +1 -0
  391. package/dist/projects/curator/src/apps/series/views/edit-series-audiences/EditSeriesAudiencesView.d.ts +6 -0
  392. package/dist/projects/curator/src/apps/series/views/edit-series-audiences/index.d.ts +1 -0
  393. package/dist/projects/curator/src/apps/series/views/edit-series-subjects/EditSeriesSubjectsView.d.ts +6 -0
  394. package/dist/projects/curator/src/apps/series/views/edit-series-subjects/index.d.ts +1 -0
  395. package/dist/projects/curator/src/apps/series/views/index.d.ts +4 -0
  396. package/dist/projects/curator/src/apps/series/views/new-series/NewSeriesView.d.ts +2 -0
  397. package/dist/projects/curator/src/apps/series/views/new-series/index.d.ts +1 -0
  398. package/dist/projects/curator/src/apps/subjects/SubjectsApplication.d.ts +53 -0
  399. package/dist/projects/curator/src/apps/subjects/components/audiences/audience-levels/AudienceLevels.d.ts +9 -0
  400. package/dist/projects/curator/src/apps/subjects/components/audiences/audience-levels/index.d.ts +1 -0
  401. package/dist/projects/curator/src/apps/subjects/components/audiences/edit-audience-details/EditAudienceDetails.d.ts +11 -0
  402. package/dist/projects/curator/src/apps/subjects/components/audiences/edit-audience-details/EditAudienceDetailsForm.d.ts +9 -0
  403. package/dist/projects/curator/src/apps/subjects/components/audiences/edit-audience-details/index.d.ts +1 -0
  404. package/dist/projects/curator/src/apps/subjects/components/audiences/edit-object-audiences/EditObjectAudiences.d.ts +18 -0
  405. package/dist/projects/curator/src/apps/subjects/components/audiences/edit-object-audiences/index.d.ts +1 -0
  406. package/dist/projects/curator/src/apps/subjects/components/audiences/index.d.ts +4 -0
  407. package/dist/projects/curator/src/apps/subjects/components/audiences/select-audiences/SelectAudiences.d.ts +12 -0
  408. package/dist/projects/curator/src/apps/subjects/components/audiences/select-audiences/index.d.ts +1 -0
  409. package/dist/projects/curator/src/apps/subjects/components/classifications/classification-member-list/ClassificationMemberItem.d.ts +13 -0
  410. package/dist/projects/curator/src/apps/subjects/components/classifications/classification-member-list/ClassificationMemberList.d.ts +15 -0
  411. package/dist/projects/curator/src/apps/subjects/components/classifications/classification-member-list/index.d.ts +1 -0
  412. package/dist/projects/curator/src/apps/subjects/components/classifications/classification-member-list/usePinnedVideo.d.ts +9 -0
  413. package/dist/projects/curator/src/apps/subjects/components/classifications/edit-classification-details/EditClassificationDetails.d.ts +13 -0
  414. package/dist/projects/curator/src/apps/subjects/components/classifications/edit-classification-details/EditClassificationDetailsForm.d.ts +10 -0
  415. package/dist/projects/curator/src/apps/subjects/components/classifications/edit-classification-details/index.d.ts +1 -0
  416. package/dist/projects/curator/src/apps/subjects/components/classifications/edit-classification-nav/EditClassificationNav.d.ts +10 -0
  417. package/dist/projects/curator/src/apps/subjects/components/classifications/edit-classification-nav/index.d.ts +1 -0
  418. package/dist/projects/curator/src/apps/subjects/components/classifications/index.d.ts +4 -0
  419. package/dist/projects/curator/src/apps/subjects/components/classifications/select-classifications/SelectClassifications.d.ts +14 -0
  420. package/dist/projects/curator/src/apps/subjects/components/classifications/select-classifications/index.d.ts +1 -0
  421. package/dist/projects/curator/src/apps/subjects/components/index.d.ts +6 -0
  422. package/dist/projects/curator/src/apps/subjects/components/levels/edit-level-details/EditLevelDetails.d.ts +12 -0
  423. package/dist/projects/curator/src/apps/subjects/components/levels/edit-level-details/index.d.ts +1 -0
  424. package/dist/projects/curator/src/apps/subjects/components/levels/edit-level-nav/EditLevelNav.d.ts +7 -0
  425. package/dist/projects/curator/src/apps/subjects/components/levels/index.d.ts +2 -0
  426. package/dist/projects/curator/src/apps/subjects/components/levels/level-audiences/LevelAudiences.d.ts +11 -0
  427. package/dist/projects/curator/src/apps/subjects/components/levels/level-member-list/LevelMemberItem.d.ts +12 -0
  428. package/dist/projects/curator/src/apps/subjects/components/levels/level-member-list/LevelMemberList.d.ts +25 -0
  429. package/dist/projects/curator/src/apps/subjects/components/levels/level-member-list/LevelMemberListHeader.d.ts +14 -0
  430. package/dist/projects/curator/src/apps/subjects/components/levels/level-member-list/index.d.ts +1 -0
  431. package/dist/projects/curator/src/apps/subjects/components/levels/select-levels/SelectLevels.d.ts +15 -0
  432. package/dist/projects/curator/src/apps/subjects/components/levels/select-levels/index.d.ts +1 -0
  433. package/dist/projects/curator/src/apps/subjects/components/presentations/edit-presentation-details/EditPresentationDetails.d.ts +9 -0
  434. package/dist/projects/curator/src/apps/subjects/components/presentations/edit-presentation-details/EditPresentationDetailsForm.d.ts +8 -0
  435. package/dist/projects/curator/src/apps/subjects/components/presentations/edit-presentation-details/index.d.ts +1 -0
  436. package/dist/projects/curator/src/apps/subjects/components/presentations/index.d.ts +2 -0
  437. package/dist/projects/curator/src/apps/subjects/components/presentations/presentation-select/PresentationSelect.d.ts +15 -0
  438. package/dist/projects/curator/src/apps/subjects/components/presentations/presentation-select/index.d.ts +1 -0
  439. package/dist/projects/curator/src/apps/subjects/components/subjects/add-subject-members/AddSubjectMembers.d.ts +12 -0
  440. package/dist/projects/curator/src/apps/subjects/components/subjects/add-subject-members/index.d.ts +1 -0
  441. package/dist/projects/curator/src/apps/subjects/components/subjects/edit-object-subjects/EditObjectSubjects.d.ts +20 -0
  442. package/dist/projects/curator/src/apps/subjects/components/subjects/edit-object-subjects/index.d.ts +1 -0
  443. package/dist/projects/curator/src/apps/subjects/components/subjects/edit-subject-details/EditSubjectDetails.d.ts +11 -0
  444. package/dist/projects/curator/src/apps/subjects/components/subjects/edit-subject-details/EditSubjectDetailsForm.d.ts +8 -0
  445. package/dist/projects/curator/src/apps/subjects/components/subjects/edit-subject-details/index.d.ts +1 -0
  446. package/dist/projects/curator/src/apps/subjects/components/subjects/edit-subject-nav/EditSubjectNav.d.ts +7 -0
  447. package/dist/projects/curator/src/apps/subjects/components/subjects/edit-subject-nav/index.d.ts +1 -0
  448. package/dist/projects/curator/src/apps/subjects/components/subjects/index.d.ts +7 -0
  449. package/dist/projects/curator/src/apps/subjects/components/subjects/select-subjects/SelectSubjects.d.ts +18 -0
  450. package/dist/projects/curator/src/apps/subjects/components/subjects/select-subjects/index.d.ts +1 -0
  451. package/dist/projects/curator/src/apps/subjects/components/subjects/subject-classifications/SubjectClassifications.d.ts +11 -0
  452. package/dist/projects/curator/src/apps/subjects/components/subjects/subject-classifications/index.d.ts +1 -0
  453. package/dist/projects/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberItem.d.ts +12 -0
  454. package/dist/projects/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberList.d.ts +25 -0
  455. package/dist/projects/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberListHeader.d.ts +14 -0
  456. package/dist/projects/curator/src/apps/subjects/components/subjects/subject-member-list/index.d.ts +1 -0
  457. package/dist/projects/curator/src/apps/subjects/components/top-nav/TopNav.d.ts +8 -0
  458. package/dist/projects/curator/src/apps/subjects/components/top-nav/index.d.ts +1 -0
  459. package/dist/projects/curator/src/apps/subjects/context/PresentationContext.d.ts +6 -0
  460. package/dist/projects/curator/src/apps/subjects/context/SubjectsAppContext.d.ts +4 -0
  461. package/dist/projects/curator/src/apps/subjects/context/index.d.ts +2 -0
  462. package/dist/projects/curator/src/apps/subjects/enums/ObjectMemberType.d.ts +10 -0
  463. package/dist/projects/curator/src/apps/subjects/enums/OwnerType.d.ts +4 -0
  464. package/dist/projects/curator/src/apps/subjects/enums/SubjectMemberType.d.ts +5 -0
  465. package/dist/projects/curator/src/apps/subjects/enums/SubjectNodeType.d.ts +6 -0
  466. package/dist/projects/curator/src/apps/subjects/enums/index.d.ts +3 -0
  467. package/dist/projects/curator/src/apps/subjects/hooks/UseSetDefaultPresentation.d.ts +8 -0
  468. package/dist/projects/curator/src/apps/subjects/hooks/index.d.ts +1 -0
  469. package/dist/projects/curator/src/apps/subjects/interfaces/data-requests/Audience.d.ts +5 -0
  470. package/dist/projects/curator/src/apps/subjects/interfaces/data-requests/Classification.d.ts +17 -0
  471. package/dist/projects/curator/src/apps/subjects/interfaces/data-requests/Level.d.ts +3 -0
  472. package/dist/projects/curator/src/apps/subjects/interfaces/data-requests/Presentation.d.ts +4 -0
  473. package/dist/projects/curator/src/apps/subjects/interfaces/data-requests/Subject.d.ts +4 -0
  474. package/dist/projects/curator/src/apps/subjects/interfaces/data-requests/index.d.ts +5 -0
  475. package/dist/projects/curator/src/apps/subjects/interfaces/index.d.ts +2 -0
  476. package/dist/projects/curator/src/apps/subjects/interfaces/models/ClassificationTree.d.ts +4 -0
  477. package/dist/projects/curator/src/apps/subjects/interfaces/models/Level.d.ts +3 -0
  478. package/dist/projects/curator/src/apps/subjects/interfaces/models/Presentation.d.ts +4 -0
  479. package/dist/projects/curator/src/apps/subjects/interfaces/models/SubjectTree.d.ts +4 -0
  480. package/dist/projects/curator/src/apps/subjects/interfaces/models/index.d.ts +4 -0
  481. package/dist/projects/curator/src/apps/subjects/services/SubjectDataService.d.ts +68 -0
  482. package/dist/projects/curator/src/apps/subjects/services/index.d.ts +1 -0
  483. package/dist/projects/curator/src/apps/subjects/utils/LevelMemberHelper.d.ts +8 -0
  484. package/dist/projects/curator/src/apps/subjects/utils/LevelsNavHelper.d.ts +4 -0
  485. package/dist/projects/curator/src/apps/subjects/utils/SubjectMemberHelper.d.ts +8 -0
  486. package/dist/projects/curator/src/apps/subjects/utils/SubjectsNavHelper.d.ts +6 -0
  487. package/dist/projects/curator/src/apps/subjects/utils/index.d.ts +3 -0
  488. package/dist/projects/curator/src/apps/subjects/utils/validation/AudienceValidation.d.ts +3 -0
  489. package/dist/projects/curator/src/apps/subjects/utils/validation/ClassificationValidation.d.ts +3 -0
  490. package/dist/projects/curator/src/apps/subjects/utils/validation/LevelValidation.d.ts +3 -0
  491. package/dist/projects/curator/src/apps/subjects/utils/validation/PresentationValidation.d.ts +5 -0
  492. package/dist/projects/curator/src/apps/subjects/utils/validation/SubjectValidation.d.ts +3 -0
  493. package/dist/projects/curator/src/apps/subjects/utils/validation/index.d.ts +5 -0
  494. package/dist/projects/curator/src/apps/subjects/views/audiences/delete-audience/DeleteAudienceView.d.ts +9 -0
  495. package/dist/projects/curator/src/apps/subjects/views/audiences/delete-audience/index.d.ts +1 -0
  496. package/dist/projects/curator/src/apps/subjects/views/audiences/edit-audience/EditAudienceView.d.ts +7 -0
  497. package/dist/projects/curator/src/apps/subjects/views/audiences/edit-audience/index.d.ts +1 -0
  498. package/dist/projects/curator/src/apps/subjects/views/audiences/edit-audiences-list/EditAudiencesListView.d.ts +6 -0
  499. package/dist/projects/curator/src/apps/subjects/views/audiences/edit-audiences-list/index.d.ts +1 -0
  500. package/dist/projects/curator/src/apps/subjects/views/audiences/index.d.ts +4 -0
  501. package/dist/projects/curator/src/apps/subjects/views/audiences/new-audience/NewAudienceView.d.ts +6 -0
  502. package/dist/projects/curator/src/apps/subjects/views/audiences/new-audience/index.d.ts +1 -0
  503. package/dist/projects/curator/src/apps/subjects/views/classifications/classification-nav/ClassificationNavUtils.d.ts +7 -0
  504. package/dist/projects/curator/src/apps/subjects/views/classifications/classification-nav/ClassificationNavView.d.ts +7 -0
  505. package/dist/projects/curator/src/apps/subjects/views/classifications/classification-nav/index.d.ts +1 -0
  506. package/dist/projects/curator/src/apps/subjects/views/classifications/delete-classification/DeleteClassificationView.d.ts +9 -0
  507. package/dist/projects/curator/src/apps/subjects/views/classifications/delete-classification/index.d.ts +1 -0
  508. package/dist/projects/curator/src/apps/subjects/views/classifications/edit-classification/EditClassificationView.d.ts +7 -0
  509. package/dist/projects/curator/src/apps/subjects/views/classifications/edit-classification/index.d.ts +1 -0
  510. package/dist/projects/curator/src/apps/subjects/views/classifications/edit-classification-members/EditClassificationMembersView.d.ts +9 -0
  511. package/dist/projects/curator/src/apps/subjects/views/classifications/edit-classification-members/index.d.ts +1 -0
  512. package/dist/projects/curator/src/apps/subjects/views/classifications/index.d.ts +6 -0
  513. package/dist/projects/curator/src/apps/subjects/views/classifications/new-classification/NewClassificationView.d.ts +7 -0
  514. package/dist/projects/curator/src/apps/subjects/views/classifications/new-classification/index.d.ts +1 -0
  515. package/dist/projects/curator/src/apps/subjects/views/classifications/remove-classification-member/RemoveClassificationMemberView.d.ts +11 -0
  516. package/dist/projects/curator/src/apps/subjects/views/classifications/remove-classification-member/index.d.ts +1 -0
  517. package/dist/projects/curator/src/apps/subjects/views/index.d.ts +6 -0
  518. package/dist/projects/curator/src/apps/subjects/views/levels/edit-level/EditLevelView.d.ts +6 -0
  519. package/dist/projects/curator/src/apps/subjects/views/levels/edit-level/index.d.ts +1 -0
  520. package/dist/projects/curator/src/apps/subjects/views/levels/edit-level-members/EditLevelMembersUtils.d.ts +16 -0
  521. package/dist/projects/curator/src/apps/subjects/views/levels/edit-level-members/EditLevelMembersView.d.ts +16 -0
  522. package/dist/projects/curator/src/apps/subjects/views/levels/edit-levels-list/EditLevelsListView.d.ts +2 -0
  523. package/dist/projects/curator/src/apps/subjects/views/levels/edit-levels-list/index.d.ts +1 -0
  524. package/dist/projects/curator/src/apps/subjects/views/levels/index.d.ts +3 -0
  525. package/dist/projects/curator/src/apps/subjects/views/levels/level-audiences/LevelAudiencesView.d.ts +6 -0
  526. package/dist/projects/curator/src/apps/subjects/views/levels/level-nav/LevelNavView.d.ts +6 -0
  527. package/dist/projects/curator/src/apps/subjects/views/levels/levels-redirect/LevelsRedirectView.d.ts +2 -0
  528. package/dist/projects/curator/src/apps/subjects/views/levels/levels-redirect/index.d.ts +1 -0
  529. package/dist/projects/curator/src/apps/subjects/views/levels/new-level/NewLevelView.d.ts +2 -0
  530. package/dist/projects/curator/src/apps/subjects/views/levels/new-level/index.d.ts +1 -0
  531. package/dist/projects/curator/src/apps/subjects/views/presentations/edit-presentation/EditPresentationView.d.ts +6 -0
  532. package/dist/projects/curator/src/apps/subjects/views/presentations/edit-presentation/index.d.ts +1 -0
  533. package/dist/projects/curator/src/apps/subjects/views/presentations/edit-presentations-list/EditPresentationsListView.d.ts +2 -0
  534. package/dist/projects/curator/src/apps/subjects/views/presentations/edit-presentations-list/index.d.ts +1 -0
  535. package/dist/projects/curator/src/apps/subjects/views/presentations/index.d.ts +4 -0
  536. package/dist/projects/curator/src/apps/subjects/views/presentations/new-presentation/NewPresentationView.d.ts +2 -0
  537. package/dist/projects/curator/src/apps/subjects/views/presentations/new-presentation/index.d.ts +1 -0
  538. package/dist/projects/curator/src/apps/subjects/views/presentations/select-presentation/SelectPresentationView.d.ts +9 -0
  539. package/dist/projects/curator/src/apps/subjects/views/presentations/select-presentation/index.d.ts +1 -0
  540. package/dist/projects/curator/src/apps/subjects/views/subjects/add-subject-members/AddSubjectMembersUtils.d.ts +14 -0
  541. package/dist/projects/curator/src/apps/subjects/views/subjects/add-subject-members/AddSubjectMembersView.d.ts +15 -0
  542. package/dist/projects/curator/src/apps/subjects/views/subjects/add-subject-members/index.d.ts +1 -0
  543. package/dist/projects/curator/src/apps/subjects/views/subjects/delete-subject/DeleteSubjectView.d.ts +9 -0
  544. package/dist/projects/curator/src/apps/subjects/views/subjects/delete-subject/index.d.ts +1 -0
  545. package/dist/projects/curator/src/apps/subjects/views/subjects/edit-subject/EditSubjectView.d.ts +6 -0
  546. package/dist/projects/curator/src/apps/subjects/views/subjects/edit-subject/index.d.ts +1 -0
  547. package/dist/projects/curator/src/apps/subjects/views/subjects/edit-subject-members/EditSubjectMembersUtils.d.ts +16 -0
  548. package/dist/projects/curator/src/apps/subjects/views/subjects/edit-subject-members/EditSubjectMembersView.d.ts +16 -0
  549. package/dist/projects/curator/src/apps/subjects/views/subjects/edit-subject-members/index.d.ts +1 -0
  550. package/dist/projects/curator/src/apps/subjects/views/subjects/index.d.ts +8 -0
  551. package/dist/projects/curator/src/apps/subjects/views/subjects/new-subject/NewSubjectView.d.ts +6 -0
  552. package/dist/projects/curator/src/apps/subjects/views/subjects/new-subject/index.d.ts +1 -0
  553. package/dist/projects/curator/src/apps/subjects/views/subjects/remove-subject-member/RemoveSubjectMemberView.d.ts +11 -0
  554. package/dist/projects/curator/src/apps/subjects/views/subjects/remove-subject-member/index.d.ts +1 -0
  555. package/dist/projects/curator/src/apps/subjects/views/subjects/subject-classifications/SubjectClassificationsView.d.ts +6 -0
  556. package/dist/projects/curator/src/apps/subjects/views/subjects/subject-classifications/index.d.ts +1 -0
  557. package/dist/projects/curator/src/apps/subjects/views/subjects/subject-nav/SubjectNavView.d.ts +6 -0
  558. package/dist/projects/curator/src/apps/subjects/views/subjects/subject-nav/index.d.ts +1 -0
  559. package/dist/projects/curator/src/apps/subjects/views/top-nav/TopNavView.d.ts +7 -0
  560. package/dist/projects/curator/src/apps/subjects/views/top-nav/index.d.ts +1 -0
  561. package/dist/projects/curator/src/apps/themes/ThemesApplication.d.ts +16 -0
  562. package/dist/projects/curator/src/apps/themes/components/edit-theme/EditTheme.d.ts +11 -0
  563. package/dist/projects/curator/src/apps/themes/components/edit-theme/ThemeValidation.d.ts +3 -0
  564. package/dist/projects/curator/src/apps/themes/components/edit-theme/edit-data/EditGlanceData.d.ts +2 -0
  565. package/dist/projects/curator/src/apps/themes/components/edit-theme/index.d.ts +1 -0
  566. package/dist/projects/curator/src/apps/themes/context/ThemesAppContext.d.ts +4 -0
  567. package/dist/projects/curator/src/apps/themes/flight-requests/ThemeRequests.d.ts +11 -0
  568. package/dist/projects/curator/src/apps/themes/interfaces/CreateOrUpdateThemeRequest.d.ts +7 -0
  569. package/dist/projects/curator/src/apps/themes/interfaces/index.d.ts +1 -0
  570. package/dist/projects/curator/src/apps/themes/views/delete-theme/DeleteThemeView.d.ts +7 -0
  571. package/dist/projects/curator/src/apps/themes/views/delete-theme/index.d.ts +1 -0
  572. package/dist/projects/curator/src/apps/themes/views/edit-theme/EditThemeView.d.ts +6 -0
  573. package/dist/projects/curator/src/apps/themes/views/edit-theme/index.d.ts +1 -0
  574. package/dist/projects/curator/src/apps/themes/views/new-theme/NewThemeView.d.ts +2 -0
  575. package/dist/projects/curator/src/apps/themes/views/new-theme/index.d.ts +1 -0
  576. package/dist/projects/curator/src/apps/themes/views/themes/ThemesView.d.ts +2 -0
  577. package/dist/projects/curator/src/apps/themes/views/themes/index.d.ts +1 -0
  578. package/dist/projects/curator/src/apps/videos/VideosApplication.d.ts +18 -0
  579. package/dist/projects/curator/src/apps/videos/components/edit-video-details/EditGlance.d.ts +7 -0
  580. package/dist/projects/curator/src/apps/videos/components/edit-video-details/EditVideoDetails.d.ts +13 -0
  581. package/dist/projects/curator/src/apps/videos/components/edit-video-details/VideoDetailsForm.d.ts +12 -0
  582. package/dist/projects/curator/src/apps/videos/components/edit-video-details/index.d.ts +1 -0
  583. package/dist/projects/curator/src/apps/videos/components/edit-video-nav/EditVideoNav.d.ts +7 -0
  584. package/dist/projects/curator/src/apps/videos/components/edit-video-nav/index.d.ts +1 -0
  585. package/dist/projects/curator/src/apps/videos/context/VideosAppContext.d.ts +4 -0
  586. package/dist/projects/curator/src/apps/videos/context/index.d.ts +1 -0
  587. package/dist/projects/curator/src/apps/videos/flight-requests/CuratorVideoRequests.d.ts +10 -0
  588. package/dist/projects/curator/src/apps/videos/interfaces/RightslineVideo.d.ts +4 -0
  589. package/dist/projects/curator/src/apps/videos/interfaces/data-requests/UpdateVideoRequest.d.ts +13 -0
  590. package/dist/projects/curator/src/apps/videos/interfaces/data-requests/index.d.ts +1 -0
  591. package/dist/projects/curator/src/apps/videos/interfaces/index.d.ts +2 -0
  592. package/dist/projects/curator/src/apps/videos/utils/VideoNavHelper.d.ts +4 -0
  593. package/dist/projects/curator/src/apps/videos/utils/VideoValidation.d.ts +3 -0
  594. package/dist/projects/curator/src/apps/videos/views/edit-video/EditVideoView.d.ts +6 -0
  595. package/dist/projects/curator/src/apps/videos/views/edit-video/index.d.ts +1 -0
  596. package/dist/projects/curator/src/apps/videos/views/edit-video-aliases/EditVideoAliasesView.d.ts +6 -0
  597. package/dist/projects/curator/src/apps/videos/views/edit-video-aliases/index.d.ts +1 -0
  598. package/dist/projects/curator/src/apps/videos/views/edit-video-audiences/EditVideoAudiencesView.d.ts +6 -0
  599. package/dist/projects/curator/src/apps/videos/views/edit-video-audiences/index.d.ts +1 -0
  600. package/dist/projects/curator/src/apps/videos/views/edit-video-subjects/EditVideoSubjectsView.d.ts +6 -0
  601. package/dist/projects/curator/src/apps/videos/views/edit-video-subjects/index.d.ts +1 -0
  602. package/dist/projects/curator/src/apps/videos/views/index.d.ts +4 -0
  603. package/dist/projects/curator/src/index.d.ts +55 -0
  604. package/dist/projects/curator/src/shared/components/aliases/AddAlias.d.ts +7 -0
  605. package/dist/projects/curator/src/shared/components/aliases/AliasList.d.ts +13 -0
  606. package/dist/projects/curator/src/shared/components/aliases/Aliases.d.ts +9 -0
  607. package/dist/projects/curator/src/shared/components/aliases/index.d.ts +1 -0
  608. package/dist/projects/curator/src/shared/components/back-button/BackButton.d.ts +8 -0
  609. package/dist/projects/curator/src/shared/components/back-button/index.d.ts +1 -0
  610. package/dist/projects/curator/src/shared/components/checkbox/Checkbox.d.ts +8 -0
  611. package/dist/projects/curator/src/shared/components/checkbox/index.d.ts +1 -0
  612. package/dist/projects/curator/src/shared/components/forms/file-select/FileSelect.d.ts +11 -0
  613. package/dist/projects/curator/src/shared/components/forms/file-select/index.d.ts +1 -0
  614. package/dist/projects/curator/src/shared/components/forms/image-select/ImageSelect.d.ts +14 -0
  615. package/dist/projects/curator/src/shared/components/forms/image-select/index.d.ts +1 -0
  616. package/dist/projects/curator/src/shared/components/forms/index.d.ts +2 -0
  617. package/dist/projects/curator/src/shared/components/image-cropper/ImageCropper.d.ts +10 -0
  618. package/dist/projects/curator/src/shared/components/image-cropper/index.d.ts +1 -0
  619. package/dist/projects/curator/src/shared/components/index.d.ts +14 -0
  620. package/dist/projects/curator/src/shared/components/object-collection/ObjectCollection.d.ts +12 -0
  621. package/dist/projects/curator/src/shared/components/object-collection/index.d.ts +1 -0
  622. package/dist/projects/curator/src/shared/components/object-header/ObjectHeader.d.ts +9 -0
  623. package/dist/projects/curator/src/shared/components/object-header/index.d.ts +1 -0
  624. package/dist/projects/curator/src/shared/components/object-list/ObjectList.d.ts +11 -0
  625. package/dist/projects/curator/src/shared/components/object-list/index.d.ts +1 -0
  626. package/dist/projects/curator/src/shared/components/object-list-nav/ObjectListNav.d.ts +15 -0
  627. package/dist/projects/curator/src/shared/components/object-list-nav/index.d.ts +1 -0
  628. package/dist/projects/curator/src/shared/components/rating-select/RatingSelect.d.ts +12 -0
  629. package/dist/projects/curator/src/shared/components/rating-select/index.d.ts +1 -0
  630. package/dist/projects/curator/src/shared/components/tabs/Tabs.d.ts +13 -0
  631. package/dist/projects/curator/src/shared/components/tabs/index.d.ts +1 -0
  632. package/dist/projects/curator/src/shared/components/tree/Tree.d.ts +14 -0
  633. package/dist/projects/curator/src/shared/components/tree/TreeNode.d.ts +19 -0
  634. package/dist/projects/curator/src/shared/components/tree/TreeNodeLink.d.ts +13 -0
  635. package/dist/projects/curator/src/shared/components/tree/index.d.ts +2 -0
  636. package/dist/projects/curator/src/shared/components/tree-select/TreeSelect.d.ts +15 -0
  637. package/dist/projects/curator/src/shared/components/tree-select/TreeSelectHelper.d.ts +17 -0
  638. package/dist/projects/curator/src/shared/components/tree-select/index.d.ts +1 -0
  639. package/dist/projects/curator/src/shared/components/video-list/SortableVideoList.d.ts +12 -0
  640. package/dist/projects/curator/src/shared/components/video-list/VideoItem.d.ts +15 -0
  641. package/dist/projects/curator/src/shared/components/video-list/VideoList.d.ts +19 -0
  642. package/dist/projects/curator/src/shared/components/video-list/index.d.ts +2 -0
  643. package/dist/projects/curator/src/shared/constants/CuratorActions.d.ts +87 -0
  644. package/dist/projects/curator/src/shared/constants/DataPrefixes.d.ts +45 -0
  645. package/dist/projects/curator/src/shared/constants/FileExtensions.d.ts +3 -0
  646. package/dist/projects/curator/src/shared/constants/Layouts.d.ts +3 -0
  647. package/dist/projects/curator/src/shared/constants/RadioChannels.d.ts +16 -0
  648. package/dist/projects/curator/src/shared/constants/Services.d.ts +6 -0
  649. package/dist/projects/curator/src/shared/constants/index.d.ts +6 -0
  650. package/dist/projects/curator/src/shared/context/ImageStorageContext.d.ts +45 -0
  651. package/dist/projects/curator/src/shared/context/UserContext.d.ts +4 -0
  652. package/dist/projects/curator/src/shared/context/index.d.ts +2 -0
  653. package/dist/projects/curator/src/shared/enums/CurationStatus.d.ts +8 -0
  654. package/dist/projects/curator/src/shared/enums/CuratorGroup.d.ts +11 -0
  655. package/dist/projects/curator/src/shared/enums/index.d.ts +1 -0
  656. package/dist/projects/curator/src/shared/flight-requests/AliasRequests.d.ts +7 -0
  657. package/dist/projects/curator/src/shared/flight-requests/RatingRequests.d.ts +4 -0
  658. package/dist/projects/curator/src/shared/flight-requests/index.d.ts +1 -0
  659. package/dist/projects/curator/src/shared/interfaces/collections/AliasCollection.d.ts +4 -0
  660. package/dist/projects/curator/src/shared/interfaces/collections/index.d.ts +1 -0
  661. package/dist/projects/curator/src/shared/interfaces/data-requests/CreateAliasRequest.d.ts +3 -0
  662. package/dist/projects/curator/src/shared/interfaces/data-requests/UpdateObjectPermissionsRequest.d.ts +4 -0
  663. package/dist/projects/curator/src/shared/interfaces/data-requests/UpdateObjectRating.d.ts +3 -0
  664. package/dist/projects/curator/src/shared/interfaces/data-requests/index.d.ts +3 -0
  665. package/dist/projects/curator/src/shared/interfaces/index.d.ts +4 -0
  666. package/dist/projects/curator/src/shared/interfaces/models/Alias.d.ts +3 -0
  667. package/dist/projects/curator/src/shared/interfaces/models/CuratorUser.d.ts +5 -0
  668. package/dist/projects/curator/src/shared/interfaces/models/Group.d.ts +3 -0
  669. package/dist/projects/curator/src/shared/interfaces/models/Permission.d.ts +4 -0
  670. package/dist/projects/curator/src/shared/interfaces/models/index.d.ts +5 -0
  671. package/dist/projects/curator/src/shared/interfaces/models/primitives/BaseTree.d.ts +8 -0
  672. package/dist/projects/curator/src/shared/interfaces/models/primitives/index.d.ts +1 -0
  673. package/dist/projects/curator/src/shared/interfaces/view-models/NavItem.d.ts +6 -0
  674. package/dist/projects/curator/src/shared/interfaces/view-models/index.d.ts +1 -0
  675. package/dist/projects/curator/src/shared/layouts/curator-layout/CuratorLayoutView.d.ts +28 -0
  676. package/dist/projects/curator/src/shared/layouts/curator-layout/index.d.ts +1 -0
  677. package/dist/projects/curator/src/shared/layouts/index.d.ts +2 -0
  678. package/dist/projects/curator/src/shared/layouts/primitives/LayoutComponent.d.ts +17 -0
  679. package/dist/projects/curator/src/shared/layouts/primitives/index.d.ts +1 -0
  680. package/dist/projects/curator/src/shared/services/CuratorAppNavService.d.ts +17 -0
  681. package/dist/projects/curator/src/shared/services/ImageUploadDataService.d.ts +8 -0
  682. package/dist/projects/curator/src/shared/services/LanguageDataService.d.ts +11 -0
  683. package/dist/projects/curator/src/shared/services/UserDataService.d.ts +11 -0
  684. package/dist/projects/curator/src/shared/services/index.d.ts +4 -0
  685. package/dist/projects/curator/src/shared/utils/CuratorCollectionHelper.d.ts +10 -0
  686. package/dist/projects/curator/src/shared/utils/ImageSelectHelper.d.ts +6 -0
  687. package/dist/projects/curator/src/shared/utils/NavHelper.d.ts +5 -0
  688. package/dist/projects/curator/src/shared/utils/PermissionsHelper.d.ts +5 -0
  689. package/dist/projects/curator/src/shared/utils/PropHelper.d.ts +3 -0
  690. package/dist/projects/curator/src/shared/utils/StringHelper.d.ts +5 -0
  691. package/dist/projects/curator/src/shared/utils/TreeHelper.d.ts +7 -0
  692. package/dist/projects/curator/src/shared/utils/UserHelper.d.ts +4 -0
  693. package/dist/projects/curator/src/shared/utils/index.d.ts +7 -0
  694. package/dist/projects/curator/src/shared/views/image-upload/ImageUploadView.d.ts +8 -0
  695. package/dist/projects/curator/src/shared/views/image-upload/index.d.ts +1 -0
  696. package/dist/projects/curator/src/shared/views/index.d.ts +1 -0
  697. package/package.json +45 -46
  698. package/tooling/externals.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["file://C:/ClickView/front-end/clickview/packages/projects/curator/webpack/universalModuleDefinition","file://C:/ClickView/front-end/clickview/packages/projects/curator/webpack/bootstrap","file://C:/ClickView/front-end/clickview/node_modules/marked/src/InlineLexer.js","file://C:/ClickView/front-end/clickview/node_modules/marked/src/Lexer.js","file://C:/ClickView/front-end/clickview/node_modules/marked/src/Parser.js","file://C:/ClickView/front-end/clickview/node_modules/marked/src/Renderer.js","file://C:/ClickView/front-end/clickview/node_modules/marked/src/Slugger.js","file://C:/ClickView/front-end/clickview/node_modules/marked/src/TextRenderer.js","file://C:/ClickView/front-end/clickview/node_modules/marked/src/defaults.js","file://C:/ClickView/front-end/clickview/node_modules/marked/src/helpers.js","file://C:/ClickView/front-end/clickview/node_modules/marked/src/marked.js","file://C:/ClickView/front-end/clickview/node_modules/marked/src/rules.js","file://C:/ClickView/front-end/clickview/node_modules/object-assign/index.js","file://C:/ClickView/front-end/clickview/node_modules/prop-types/checkPropTypes.js","file://C:/ClickView/front-end/clickview/node_modules/prop-types/factoryWithTypeCheckers.js","file://C:/ClickView/front-end/clickview/node_modules/prop-types/index.js","file://C:/ClickView/front-end/clickview/node_modules/prop-types/lib/ReactPropTypesSecret.js","file://C:/ClickView/front-end/clickview/node_modules/react-autosuggest/dist/Autosuggest.js","file://C:/ClickView/front-end/clickview/node_modules/react-autosuggest/dist/index.js","file://C:/ClickView/front-end/clickview/node_modules/react-autosuggest/dist/theme.js","file://C:/ClickView/front-end/clickview/node_modules/react-autowhatever/dist/Autowhatever.js","file://C:/ClickView/front-end/clickview/node_modules/react-autowhatever/dist/Item.js","file://C:/ClickView/front-end/clickview/node_modules/react-autowhatever/dist/ItemsList.js","file://C:/ClickView/front-end/clickview/node_modules/react-autowhatever/dist/SectionTitle.js","file://C:/ClickView/front-end/clickview/node_modules/react-autowhatever/dist/compareObjects.js","file://C:/ClickView/front-end/clickview/node_modules/react-autowhatever/dist/index.js","file://C:/ClickView/front-end/clickview/node_modules/react-is/cjs/react-is.development.js","file://C:/ClickView/front-end/clickview/node_modules/react-is/index.js","file://C:/ClickView/front-end/clickview/node_modules/react-themeable/dist/index.js","file://C:/ClickView/front-end/clickview/node_modules/react-themeable/node_modules/object-assign/index.js","file://C:/ClickView/front-end/clickview/node_modules/reselect/es/index.js","file://C:/ClickView/front-end/clickview/node_modules/section-iterator/dist/index.js","file://C:/ClickView/front-end/clickview/node_modules/shallow-equal/arrays/index.js","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/constants/Caches.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/constants/CommonChannels.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/constants/CommonServices.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/constants/DataProviders.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/AppLink.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseAppRouter.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseApplication.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseBehavior.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseCollection.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseCollectionView.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseError.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseLayoutView.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseModel.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseNestedModel.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseService.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/BaseView.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/EventNames.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/LayoutService.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/ListenToRadio.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/LocationUtils.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/Middleware.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/Shell.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/core/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/enums/DataServiceErrorType.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/enums/HttpStatus.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/enums/HttpVerbs.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/errors/DevError.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/interfaces/DataServiceError.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/services/BaseAlertService.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/services/BaseDataService.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/services/EnvironmentVariables.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/services/InstanceManager.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/services/LanguageService.tsx","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/services/caches/FifoMemoryCache.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/services/data-providers/AjaxDataProvider.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/utils/ConcurrencyHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/utils/DataServiceErrorHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/utils/FunctionHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/backbone/utils/UrlHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/core/ReactApplication.tsx","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/core/ReactLayoutView.tsx","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/FlightHelpers.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/FlightMiddleware.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/FlightReducer.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/FlightSimulator.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/constants/Actions.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/constants/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/data-layers/AjaxRequest.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/data-layers/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/enums/RequestStatus.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/enums/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/normalizer/Denormalizer.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/normalizer/Normalizer.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/normalizer/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/utils/SimulatorHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/utils/StateHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/flight/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/hooks/UseBulkFetch.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/hooks/UseFetch.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/hooks/UseInstance.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/hooks/UseService.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/utils/ArrayHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/utils/FetchHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/utils/ObjectHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/utils/RandomHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/utils/TimeHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/common/src/react/utils/TypeHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/actions/ActionButton.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/actions/Actions.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/actions/actions.scss","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/alert/Alert.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/alert/AlertContent.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/alert/AlertList.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/alert/alert.scss","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/app-link/AppLink.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/confirmation-popup/ConfirmationPopup.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/div-button/DivButton.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/forms/form-buttons/FormButtons.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/icon-button/IconButton.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/icon-button/icon-button.scss","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/pagination/Pagination.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/popup/Popup.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/popup/PopupButtons.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/popup/PopupLoadingSpinner.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/search-bar/SearchBar.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/search-bar/SearchInput.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/search-bar/SearchUtils.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/search-bar/search-bar.scss","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/spinner-button/SpinnerButton.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/svg-container/SvgContainer.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/text/Text.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/tooltip/Tooltip.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/constants/CacheDurations.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/constants/DataPrefixes.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/constants/ImageSizes.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/constants/LayoutRegions.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/constants/RadioChannels.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/constants/SharedServices.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/enums/ClassificationType.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/enums/GlanceFormat.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/enums/Images.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/enums/MasterType.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/enums/MediaQueries.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/enums/ThemeType.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/hooks/UseAlerts.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/hooks/UseCanSubmitForm.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/hooks/UseMediaQuery.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/hooks/UseReorderedItems.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/ImportedSvgs.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/add-to-playlist.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/close.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/delete.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/down.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/edit-clickview.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/edit.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/expand.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/minus.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/more.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/new-window.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/no-edit.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/plus.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/preview.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/right.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/search.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/share.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/up-down.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/upload.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/visible-off.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/actions/visible-on.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/arrows/arrow-left.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/arrows/arrow-right.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/arrows/caret.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/arrows/chevron-down.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/arrows/chevron-left.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/arrows/chevron-right.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/arrows/chevron-up.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/arrows/enter.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/arrows/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/archive.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/bell.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/bookmark.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/broadcast.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/calendar.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/cog.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/compass.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/file-excel.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/file-img.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/file-pdf.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/file-ppt.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/file-word.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/file-zip.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/file.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/folder.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/handle.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/heart-outline.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/heart.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/history.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/interactive.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/link.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/playlist.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/publisher-archive.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/resources.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/series.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/star-o.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/star.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/subject.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/tag.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/time.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/video.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/objects/white-wave.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/close-caption.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/contract.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/full-screen.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/mute.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/next.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/pause.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/play-circle.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/play.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/previous.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/quality-240.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/quality-480.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/quality-hd.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/player/volume.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/settings.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/check-circle-o.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/check-circle.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/check.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/close-caption-badge.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/index.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/info.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/lock.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/question.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/verified.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/visible-off.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/visible-on.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/warning-o.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/images/svg/status/warning.svg","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/services/UserDataService.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/utils/CollectionHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/utils/FormHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/utils/ImageHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/utils/ReorderHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/utils/StateHelper.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/utils/SvgHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/CompaniesApplication.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/components/edit-company/EditCompany.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/components/edit-company/EditCompanyForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/components/edit-company/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/components/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/flight-requests/CompanyRequests.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/flight-requests/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/utils/CompanyValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/views/companies/CompaniesView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/views/companies/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/views/edit-company/EditCompanyView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/views/edit-company/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/views/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/views/new-company/NewCompanyView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/companies/views/new-company/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/DomainOptionsApplication.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/components/edit-domain-option-details/DefaultValueField.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/components/edit-domain-option-details/EditDomainOptionDetails.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/components/edit-domain-option-details/EditDomainOptionDetailsForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/components/edit-domain-option-details/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/components/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/data-requests/DomainOptionRequests.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/data-requests/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/interfaces/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/interfaces/models/DomainOption.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/interfaces/models/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/utils/validation/DomainOptionValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/utils/validation/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/views/delete-domain-option/DeleteDomainOptionView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/views/delete-domain-option/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/views/domain-options/DomainOptionsView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/views/domain-options/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/views/edit-domain-option/EditDomainOptionView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/views/edit-domain-option/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/views/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/views/new-domain-option/NewDomainOptionView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/domain-options/views/new-domain-option/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/PeopleApplication.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/components/edit-person/EditPerson.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/components/edit-person/EditPersonForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/components/edit-person/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/components/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/flight-requests/PersonRequests.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/flight-requests/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/utils/PersonValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/views/edit-person/EditPersonView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/views/edit-person/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/views/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/views/new-person/NewPersonView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/views/new-person/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/views/people/PeopleView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/people/views/people/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/PlaylistsApplication.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist-nav/EditPlaylistNav.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist/EditPlaylistDetails.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist/EditPlaylistDetailsForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/components/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/components/playlist-search/PlaylistSearch.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/components/playlist-search/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/context/PlaylistsAppContext.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/context/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/flight-requests/CuratorPlaylistRequests.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/utils/PlaylistNavHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/utils/validation/PlaylistValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/utils/validation/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/delete-playlist/DeletePlaylistView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/delete-playlist/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-audiences/EditPlaylistAudiencesView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-audiences/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-subjects/EditPlaylistSubjectsView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-subjects/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-videos/EditPlaylistVideosView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-videos/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist/EditPlaylistView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/new-playlist/NewPlaylistView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/new-playlist/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/playlist-search-results/PlaylistSearchResultsView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/playlist-search-results/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/playlists/PlaylistsView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/playlists/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/remove-video/RemoveVideoView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/playlists/views/remove-video/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/SeriesApplication.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/components/edit-series-details/EditSeriesDetails.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/components/edit-series-details/EditSeriesDetailsForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/components/edit-series-details/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/components/edit-series-nav/EditSeriesNav.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/components/edit-series-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/components/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/context/SeriesAppContext.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/context/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/flight-requests/CuratorSeriesRequests.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/utils/SeriesNavHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/utils/validation/SeriesValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/utils/validation/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/views/edit-series-audiences/EditSeriesAudiencesView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/views/edit-series-audiences/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/views/edit-series-subjects/EditSeriesSubjectsView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/views/edit-series-subjects/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/views/edit-series/EditSeriesView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/views/edit-series/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/views/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/views/new-series/NewSeriesView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/series/views/new-series/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/SubjectsApplication.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/audience-levels/AudienceLevels.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/audience-levels/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-audience-details/EditAudienceDetails.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-audience-details/EditAudienceDetailsForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-audience-details/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-object-audiences/EditObjectAudiences.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-object-audiences/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/select-audiences/SelectAudiences.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/audiences/select-audiences/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/classification-member-list/ClassificationMemberItem.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/classification-member-list/ClassificationMemberList.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/classification-member-list/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/classification-member-list/usePinnedVideo.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-details/EditClassificationDetails.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-details/EditClassificationDetailsForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-details/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-nav/EditClassificationNav.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/select-classifications/SelectClassifications.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/classifications/select-classifications/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/edit-level-details/EditLevelDetails.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/edit-level-details/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/edit-level-nav/EditLevelNav.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/level-audiences/LevelAudiences.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/level-member-list/LevelMemberItem.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/level-member-list/LevelMemberList.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/level-member-list/LevelMemberListHeader.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/level-member-list/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/select-levels/SelectLevels.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/levels/select-levels/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/presentations/edit-presentation-details/EditPresentationDetails.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/presentations/edit-presentation-details/EditPresentationDetailsForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/presentations/edit-presentation-details/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/presentations/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/presentations/presentation-select/PresentationSelect.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/presentations/presentation-select/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/add-subject-members/AddSubjectMembers.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/add-subject-members/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-object-subjects/EditObjectSubjects.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-object-subjects/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-details/EditSubjectDetails.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-details/EditSubjectDetailsForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-details/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-nav/EditSubjectNav.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/select-subjects/SelectSubjects.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/select-subjects/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-classifications/SubjectClassifications.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-classifications/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberItem.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberList.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberListHeader.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-member-list/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/top-nav/TopNav.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/components/top-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/context/PresentationContext.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/context/SubjectsAppContext.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/context/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/enums/ObjectMemberType.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/enums/OwnerType.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/enums/SubjectNodeType.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/enums/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/hooks/UseSetDefaultPresentation.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/hooks/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/services/SubjectDataService.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/services/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/LevelMemberHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/LevelsNavHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/SubjectMemberHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/SubjectsNavHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/validation/AudienceValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/validation/ClassificationValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/validation/LevelValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/validation/PresentationValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/validation/SubjectValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/utils/validation/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/audiences/delete-audience/DeleteAudienceView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/audiences/delete-audience/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/audiences/edit-audience/EditAudienceView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/audiences/edit-audience/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/audiences/edit-audiences-list/EditAudiencesListView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/audiences/edit-audiences-list/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/audiences/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/audiences/new-audience/NewAudienceView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/audiences/new-audience/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/classification-nav/ClassificationNavUtils.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/classification-nav/ClassificationNavView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/classification-nav/classification-nav.scss","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/classification-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/delete-classification/DeleteClassificationView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/delete-classification/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/edit-classification-members/EditClassificationMembersView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/edit-classification-members/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/edit-classification/EditClassificationView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/edit-classification/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/new-classification/NewClassificationView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/new-classification/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/remove-classification-member/RemoveClassificationMemberView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/classifications/remove-classification-member/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/edit-level/EditLevelView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/edit-level/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/level-audiences/LevelAudiencesView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/level-nav/LevelNavView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/level-nav/level-nav.scss","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/levels-redirect/LevelsRedirectView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/levels-redirect/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/new-level/NewLevelView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/levels/new-level/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/presentations/edit-presentation/EditPresentationView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/presentations/edit-presentation/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/presentations/edit-presentations-list/EditPresentationsListView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/presentations/edit-presentations-list/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/presentations/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/presentations/new-presentation/NewPresentationView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/presentations/new-presentation/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/presentations/select-presentation/SelectPresentationView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/presentations/select-presentation/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/add-subject-members/AddSubjectMembersUtils.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/add-subject-members/AddSubjectMembersView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/add-subject-members/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/delete-subject/DeleteSubjectView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/delete-subject/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject-members/EditSubjectMembersUtils.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject-members/EditSubjectMembersView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject-members/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject/EditSubjectView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/new-subject/NewSubjectView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/new-subject/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/remove-subject-member/RemoveSubjectMemberView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/remove-subject-member/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/subject-classifications/SubjectClassificationsView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/subject-classifications/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/subject-nav/SubjectNavView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/subject-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/subjects/subject-nav/subject-nav.scss","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/top-nav/TopNavView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/subjects/views/top-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/ThemesApplication.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/components/edit-theme/EditTheme.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/components/edit-theme/ThemeValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/components/edit-theme/edit-data/EditGlanceData.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/components/edit-theme/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/context/ThemesAppContext.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/flight-requests/ThemeRequests.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/views/delete-theme/DeleteThemeView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/views/delete-theme/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/views/edit-theme/EditThemeView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/views/edit-theme/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/views/new-theme/NewThemeView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/views/new-theme/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/views/themes/ThemesView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/themes/views/themes/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/VideosApplication.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/components/edit-video-details/EditGlance.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/components/edit-video-details/EditVideoDetails.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/components/edit-video-details/VideoDetailsForm.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/components/edit-video-details/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/components/edit-video-nav/EditVideoNav.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/components/edit-video-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/context/VideosAppContext.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/context/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/flight-requests/CuratorVideoRequests.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/utils/VideoNavHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/utils/VideoValidation.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/views/edit-video-aliases/EditVideoAliasesView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/views/edit-video-aliases/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/views/edit-video-audiences/EditVideoAudiencesView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/views/edit-video-audiences/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/views/edit-video-subjects/EditVideoSubjectsView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/views/edit-video-subjects/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/views/edit-video/EditVideoView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/views/edit-video/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/apps/videos/views/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/aliases/AddAlias.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/aliases/AliasList.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/aliases/Aliases.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/aliases/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/back-button/BackButton.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/back-button/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/checkbox/Checkbox.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/checkbox/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/forms/file-select/FileSelect.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/forms/file-select/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/forms/image-select/ImageSelect.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/forms/image-select/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/forms/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/image-cropper/ImageCropper.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/image-cropper/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/object-collection/ObjectCollection.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/object-collection/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/object-header/ObjectHeader.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/object-header/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/object-list-nav/ObjectListNav.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/object-list-nav/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/object-list/ObjectList.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/object-list/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/rating-select/RatingSelect.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/rating-select/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tabs/Tabs.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tabs/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tree-select/TreeSelect.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tree-select/TreeSelectHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tree-select/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tree/Tree.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tree/TreeNode.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tree/TreeNodeLink.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tree/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/tree/tree.scss","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/video-list/SortableVideoList.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/video-list/VideoItem.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/video-list/VideoList.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/video-list/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/components/video-list/video-list.scss","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/constants/CuratorActions.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/constants/DataPrefixes.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/constants/FileExtensions.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/constants/Layouts.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/constants/RadioChannels.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/constants/Services.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/constants/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/context/ImageStorageContext.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/context/UserContext.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/context/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/enums/CurationStatus.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/enums/CuratorGroup.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/enums/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/flight-requests/AliasRequests.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/flight-requests/RatingRequests.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/layouts/curator-layout/CuratorLayout.hbs","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/layouts/curator-layout/CuratorLayoutView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/layouts/curator-layout/curator-layout.scss","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/layouts/curator-layout/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/layouts/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/layouts/primitives/LayoutComponent.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/layouts/primitives/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/services/CuratorAppNavService.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/services/ImageUploadDataService.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/services/LanguageDataService.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/services/UserDataService.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/services/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/utils/CuratorCollectionHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/utils/ImageSelectHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/utils/NavHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/utils/PermissionsHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/utils/PropHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/utils/StringHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/utils/TreeHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/utils/UserHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/utils/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/views/image-upload/ImageUploadView.tsx","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/views/image-upload/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/src/shared/views/index.ts","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"FontAwesome\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"Backbone\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"Marionette\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"Cropper\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"DOMPurify\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"Formik\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"Handlebars\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"Polyglot\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"React\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"ReactBootstrap\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"ReactDOM\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"ReactRedux\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"SortableHOC\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"ReactTransitionGroup\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"_\"","file://C:/ClickView/front-end/clickview/packages/projects/curator/external \"Yup\""],"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,iBAAiB,mBAAO,CAAC,mEAAe;AACxC,OAAO,WAAW,GAAG,mBAAO,CAAC,mEAAe;AAC5C,OAAO,SAAS,GAAG,mBAAO,CAAC,6DAAY;AACvC;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;;;;;;;;;;;ACpSA,OAAO,WAAW,GAAG,mBAAO,CAAC,mEAAe;AAC5C,OAAO,QAAQ,GAAG,mBAAO,CAAC,6DAAY;AACtC;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mCAAmC,EAAE;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gBAAgB;AAC5D,iCAAiC,IAAI;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACjZA,iBAAiB,mBAAO,CAAC,mEAAe;AACxC,gBAAgB,mBAAO,CAAC,iEAAc;AACtC,oBAAoB,mBAAO,CAAC,yEAAkB;AAC9C,qBAAqB,mBAAO,CAAC,2EAAmB;AAChD,OAAO,WAAW,GAAG,mBAAO,CAAC,mEAAe;AAC5C;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,iBAAiB,+BAA+B;AAC9D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,8BAA8B;AACjD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,mBAAmB,6BAA6B;AAChD;;AAEA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7MA,OAAO,WAAW,GAAG,mBAAO,CAAC,mEAAe;AAC5C;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,WAAW,EAAE;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,gDAAgD;AAChD;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6DAA6D;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,kBAAkB,6BAA6B;;AAE/C;AACA;AACA;AACA;;AAEA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA,QAAQ,kBAAkB;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClPA,cAAc,mBAAO,CAAC,6DAAY;AAClC,eAAe,mBAAO,CAAC,+DAAa;AACpC,iBAAiB,mBAAO,CAAC,mEAAe;AACxC,qBAAqB,mBAAO,CAAC,2EAAmB;AAChD,oBAAoB,mBAAO,CAAC,yEAAkB;AAC9C,gBAAgB,mBAAO,CAAC,iEAAc;AACtC;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;AAC1B;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,mEAAe;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,UAAU,mBAAmB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,cAAc,IAAI,GAAG,GAAG,GAAG,GAAG,mCAAmC,IAAI;AACrE,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG;AACnD,eAAe,IAAI,GAAG,IAAI;AAC1B,mBAAmB,IAAI;AACvB,aAAa,IAAI,6BAA6B,GAAG;AACjD,YAAY,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA,+CAA+C,GAAG;AAClD,oGAAoG,GAAG;AACvG,oFAAoF,GAAG;AACvF;AACA,WAAW,IAAI;AACf;AACA;AACA,0BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,IAAI;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,GAAG,SAAS,GAAG,WAAW,GAAG;AACrE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,IAAI,EAAE,IAAI;AACnC;AACA,4BAA4B,IAAI;AAChC,wBAAwB,IAAI,KAAK,GAAG,GAAG,GAAG;AAC1C,sBAAsB,IAAI;AAC1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA,uCAAuC,GAAG;AAC1C,gEAAgE,GAAG;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,IAAI;AACtB;AACA;AACA;AACA,6BAA6B,IAAI;AACjC;AACA,8BAA8B,IAAI;AAClC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,kCAAkC,eAAe,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,+DAA+D,GAAG,UAAU,GAAG;AAC/E;;AAEA;AACA;AACA,2CAA2C,WAAW,EAAE;AACxD;;AAEA,yCAAyC,eAAe,EAAE;;AAE1D,yCAAyC,KAAK;AAC9C,2CAA2C,EAAE,kCAAkC,KAAK,6CAA6C,KAAK;AACtI;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA,0BAA0B,oCAAoC,UAAU;AACxE;AACA,2FAA2F,GAAG,+BAA+B,GAAG,gCAAgC,GAAG,aAAa,GAAG,6BAA6B,GAAG;AACnN,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB,gCAAgC,GAAG;AACnC;AACA,6BAA6B,GAAG;AAChC,gBAAgB,IAAI;AACpB;AACA,CAAC;;AAED;AACA;AACA;AACA;;;;;;;;;;;;;AC/OA;AACA;AACA;AACA;AACA;;AAEa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,IAAI,IAAqC;AACzC,6BAA6B,mBAAO,CAAC,gGAA4B;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,cAAc,mBAAO,CAAC,yDAAU;AAChC,aAAa,mBAAO,CAAC,mEAAe;;AAEpC,2BAA2B,mBAAO,CAAC,gGAA4B;AAC/D,qBAAqB,mBAAO,CAAC,4EAAkB;;AAE/C;AACA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,6BAA6B;AAC7B,QAAQ;AACR;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4BAA4B;AAC5B,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,KAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,KAAqC,4FAA4F,SAAM;AAC7I;AACA;;AAEA,mBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AC9kBA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,IAAqC;AACzC,gBAAgB,mBAAO,CAAC,yDAAU;;AAElC;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,8FAA2B;AACtD,CAAC,MAAM,EAIN;;;;;;;;;;;;;AClBD;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA;;;;;;;;;;;;;ACXa;;AAEb;AACA;AACA,CAAC;;AAED,mDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,aAAa,mBAAO,CAAC,oBAAO;;AAE5B;;AAEA,iBAAiB,mBAAO,CAAC,6DAAY;;AAErC;;AAEA,cAAc,mBAAO,CAAC,iFAAsB;;AAE5C;;AAEA,yBAAyB,mBAAO,CAAC,kFAAoB;;AAErD;;AAEA,aAAa,mBAAO,CAAC,sEAAS;;AAE9B,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP,mDAAmD;AACnD;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA,yBAAyB,qCAAqC;AAC9D;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA;AACA,2CAA2C,wCAAwC;AACnF;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,qCAAqC,+BAA+B;AACpE;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;AAEX;AACA,yCAAyC,wCAAwC;AACjF,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;;AAEA;AACA;AACA,eAAe;;AAEf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;;AAEA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA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AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;;AAEA,+CAA+C;;AAE/C;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;A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CA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;ACpLa;;AAEb,IAAI,KAAqC,EAAE,EAE1C;AACD,mBAAmB,mBAAO,CAAC,iGAA+B;AAC1D;;;;;;;;;;;;;ACNa;;AAEb;AACA;AACA,CAAC;;AAED,mCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,sCAAsC,uCAAuC,kBAAkB;;AAE/F,kCAAkC,0BAA0B,0CAA0C,gBAAgB,uBAAuB,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAE7L,oBAAoB,mBAAO,CAAC,gGAAe;;AAE3C;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,uFAAuF,aAAa;AACpG;AACA;;AAE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AnED,EAAY,SAAS,KAAT,SAAS,MAArB,E;;;;;;;;;;;ACvFA,kBAAkB,6lB;;;;;;;;;;;ACAlB,kBAAkB,4V;;;;;;;;;;;ACAlB,kBAAkB,ylB;;;;;;;;;;;ACAlB,kBAAkB,+E;;;;;;;;;;;ACAlB,kBAAkB,igL;;;;;;;;;;;ACAlB,kBAAkB,wb;;;;;;;;;;;ACAlB,kBAAkB,6O;;;;;;;;;;;;ACAlB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA,kBAAkB,6D;;;;;;;;;;;ACAlB,kBAAkB,8L;;;;;;;;;;;ACAlB,kBAAkB,wb;;;;;;;;;;;ACAlB,kBAAkB,imB;;;;;;;;;;;ACAlB,kBAAkB,mL;;;;;;;;;;;ACAlB,kBAAkB,irB;;;;;;;;;;;ACAlB,kBAAkB,gF;;;;;;;;;;;ACAlB,kBAAkB,0qB;;;;;;;;;;;ACAlB,kBAAkB,sO;;;;;;;;;;;ACAlB,kBAAkB,6G;;;;;;;;;;;ACAlB,kBAAkB,gZ;;;;;;;;;;;ACAlB,kBAAkB,qsB;;;;;;;;;;;ACAlB,kBAAkB,wU;;;;;;;;;;;ACAlB,kBAAkB,oU;;;;;;;;;;;ACAlB,kBAAkB,wU;;;;;;;;;;;ACAlB,kBAAkB,uF;;;;;;;;;;;ACAlB,kBAAkB,mR;;;;;;;;;;;ACAlB,kBAAkB,mR;;;;;;;;;;;ACAlB,kBAAkB,sR;;;;;;;;;;;ACAlB,kBAAkB,mR;;;;;;;;;;;ACAlB,kBAAkB,gS;;;;;;;;;;;;ACAlB;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;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA,kBAAkB,wsB;;;;;;;;;;;ACAlB,kBAAkB,qgB;;;;;;;;;;;ACAlB,kBAAkB,wL;;;;;;;;;;;ACAlB,kBAAkB,8Z;;;;;;;;;;;ACAlB,kBAAkB,2Q;;;;;;;;;;;ACAlB,kBAAkB,u/B;;;;;;;;;;;ACAlB,kBAAkB,8qZ;;;;;;;;;;;ACAlB,kBAAkB,mQ;;;;;;;;;;;ACAlB,kBAAkB,4Z;;;;;;;;;;;ACAlB,kBAAkB,q4C;;;;;;;;;;;ACAlB,kBAAkB,wkB;;;;;;;;;;;ACAlB,kBAAkB,yR;;;;;;;;;;;ACAlB,kBAAkB,yW;;;;;;;;;;;ACAlB,kBAAkB,2N;;;;;;;;;;;ACAlB,kBAAkB,gW;;;;;;;;;;;ACAlB,kBAAkB,8R;;;;;;;;;;;ACAlB,kBAAkB,onB;;;;;;;;;;;ACAlB,kBAAkB,wQ;;;;;;;;;;;ACAlB,kBAAkB,u2B;;;;;;;;;;;;ACAlB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChCA,kBAAkB,mO;;;;;;;;;;;ACAlB,kBAAkB,ozB;;;;;;;;;;;ACAlB,kBAAkB,+0D;;;;;;;;;;;ACAlB,kBAAkB,y4D;;;;;;;;;;;ACAlB,kBAAkB,+nB;;;;;;;;;;;ACAlB,kBAAkB,yyB;;;;;;;;;;;ACAlB,kBAAkB,uc;;;;;;;;;;;ACAlB,kBAAkB,mT;;;;;;;;;;;ACAlB,kBAAkB,ypB;;;;;;;;;;;ACAlB,kBAAkB,+qD;;;;;;;;;;;ACAlB,kBAAkB,mc;;;;;;;;;;;ACAlB,kBAAkB,qW;;;;;;;;;;;ACAlB,kBAAkB,mnB;;;;;;;;;;;ACAlB,kBAAkB,w2B;;;;;;;;;;;ACAlB,kBAAkB,kK;;;;;;;;;;;ACAlB,kBAAkB,yK;;;;;;;;;;;;ACAlB;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;AACA;;;;;;;;;;;;ACZA,kBAAkB,8Z;;;;;;;;;;;ACAlB,kBAAkB,6Q;;;;;;;;;;;ACAlB,kBAAkB,0R;;;;;;;;;;;ACAlB,kBAAkB,6kB;;;;;;;;;;;ACAlB,kBAAkB,8F;;;;;;;;;;;ACAlB,kBAAkB,4Q;;;;;;;;;;;ACAlB,kBAAkB,4zB;;;;;;;;;;;ACAlB,kBAAkB,sjC;;;;;;;;;;;ACAlB,kBAAkB,qsB;;;;;;;;;;;ACAlB,kBAAkB,8lB;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;A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","file":"curator-app.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"ReactTransitionGroup\"), require(\"Backbone\"), require(\"Marionette\"), require(\"Handlebars\"), require(\"React\"), require(\"ReactDOM\"), require(\"ReactRedux\"), require(\"_\"), require(\"DOMPurify\"), require(\"Formik\"), require(\"Polyglot\"), require(\"ReactBootstrap\"), require(\"Yup\"), require(\"Cropper\"), require(\"FontAwesome\"), require(\"SortableHOC\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"ReactTransitionGroup\", \"Backbone\", \"Marionette\", \"Handlebars\", \"React\", \"ReactDOM\", \"ReactRedux\", \"_\", \"DOMPurify\", \"Formik\", \"Polyglot\", \"ReactBootstrap\", \"Yup\", \"Cropper\", \"FontAwesome\", \"SortableHOC\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@clickview/curator\"] = factory(require(\"ReactTransitionGroup\"), require(\"Backbone\"), require(\"Marionette\"), require(\"Handlebars\"), require(\"React\"), require(\"ReactDOM\"), require(\"ReactRedux\"), require(\"_\"), require(\"DOMPurify\"), require(\"Formik\"), require(\"Polyglot\"), require(\"ReactBootstrap\"), require(\"Yup\"), require(\"Cropper\"), require(\"FontAwesome\"), require(\"SortableHOC\"));\n\telse\n\t\troot[\"@clickview/curator\"] = factory(root[\"ReactTransitionGroup\"], root[\"Backbone\"], root[\"Marionette\"], root[\"Handlebars\"], root[\"React\"], root[\"ReactDOM\"], root[\"ReactRedux\"], root[\"_\"], root[\"DOMPurify\"], root[\"Formik\"], root[\"Polyglot\"], root[\"ReactBootstrap\"], root[\"Yup\"], root[\"Cropper\"], root[\"FontAwesome\"], root[\"SortableHOC\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_react_transition_group__, __WEBPACK_EXTERNAL_MODULE_backbone__, __WEBPACK_EXTERNAL_MODULE_backbone_marionette__, __WEBPACK_EXTERNAL_MODULE_handlebars__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dom__, __WEBPACK_EXTERNAL_MODULE_react_redux__, __WEBPACK_EXTERNAL_MODULE_underscore__, __WEBPACK_EXTERNAL_MODULE_dompurify__, __WEBPACK_EXTERNAL_MODULE_formik__, __WEBPACK_EXTERNAL_MODULE_node_polyglot__, __WEBPACK_EXTERNAL_MODULE_react_bootstrap__, __WEBPACK_EXTERNAL_MODULE_yup__, __WEBPACK_EXTERNAL_MODULE_cropperjs__, __WEBPACK_EXTERNAL_MODULE__fortawesome_fontawesome__, __WEBPACK_EXTERNAL_MODULE_react_sortable_hoc__) {\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","const Renderer = require('./Renderer.js');\nconst { defaults } = require('./defaults.js');\nconst { inline } = require('./rules.js');\nconst {\n findClosingBracket,\n escape\n} = require('./helpers.js');\n\n/**\n * Inline Lexer & Compiler\n */\nmodule.exports = class InlineLexer {\n constructor(links, options) {\n this.options = options || defaults;\n this.links = links;\n this.rules = inline.normal;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.pedantic) {\n this.rules = inline.pedantic;\n } else if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n }\n }\n\n /**\n * Expose Inline Rules\n */\n static get rules() {\n return inline;\n }\n\n /**\n * Static Lexing/Compiling Method\n */\n static output(src, links, options) {\n const inline = new InlineLexer(links, options);\n return inline.output(src);\n }\n\n /**\n * Lexing/Compiling\n */\n output(src) {\n let out = '',\n link,\n text,\n href,\n title,\n cap,\n prevCapZero;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += escape(cap[1]);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^<a /i.test(cap[0])) {\n this.inLink = true;\n } else if (this.inLink && /^<\\/a>/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n }\n\n static escapes(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n }\n\n /**\n * Compile Link\n */\n outputLink(cap, link) {\n const href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n }\n\n /**\n * Smartypants Transformations\n */\n smartypants(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n }\n\n /**\n * Mangle Links\n */\n mangle(text) {\n if (!this.options.mangle) return text;\n const l = text.length;\n let out = '',\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n};\n","const { defaults } = require('./defaults.js');\nconst { block } = require('./rules.js');\nconst {\n rtrim,\n splitCells,\n escape\n} = require('./helpers.js');\n\n/**\n * Block Lexer\n */\nmodule.exports = class Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n this.rules = block.gfm;\n }\n }\n\n /**\n * Expose Block Rules\n */\n static get rules() {\n return block;\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n };\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n return this.token(src, true);\n };\n\n /**\n * Lexing\n */\n token(src, top) {\n src = src.replace(/^ +$/gm, '');\n let next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n const lastToken = this.tokens[this.tokens.length - 1];\n src = src.substring(cap[0].length);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.text += '\\n' + cap[0].trimRight();\n } else {\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n }\n continue;\n }\n\n // fences\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n };\n};\n","const Renderer = require('./Renderer.js');\nconst Slugger = require('./Slugger.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst { defaults } = require('./defaults.js');\nconst {\n merge,\n unescape\n} = require('./helpers.js');\n\n/**\n * Parsing & Compiling\n */\nmodule.exports = class Parser {\n constructor(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n };\n\n /**\n * Parse Loop\n */\n parse(tokens) {\n this.inline = new InlineLexer(tokens.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n tokens.links,\n merge({}, this.options, { renderer: new TextRenderer() })\n );\n this.tokens = tokens.reverse();\n\n let out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n };\n\n /**\n * Next Token\n */\n next() {\n this.token = this.tokens.pop();\n return this.token;\n };\n\n /**\n * Preview Next Token\n */\n peek() {\n return this.tokens[this.tokens.length - 1] || 0;\n };\n\n /**\n * Parse Text Tokens\n */\n parseText() {\n let body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n };\n\n /**\n * Parse Current Token\n */\n tok() {\n let body = '';\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n let header = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n const ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n const loose = this.token.loose;\n const checked = this.token.checked;\n const task = this.token.task;\n\n if (this.token.task) {\n if (loose) {\n if (this.peek().type === 'text') {\n const nextToken = this.peek();\n nextToken.text = this.renderer.checkbox(checked) + ' ' + nextToken.text;\n } else {\n this.tokens.push({\n type: 'text',\n text: this.renderer.checkbox(checked)\n });\n }\n } else {\n body += this.renderer.checkbox(checked);\n }\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n return this.renderer.listitem(body, task, checked);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n const errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n };\n};\n","const { defaults } = require('./defaults.js');\nconst {\n cleanUrl,\n escape\n} = require('./helpers.js');\n\n/**\n * Renderer\n */\nmodule.exports = class Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang, true)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n };\n\n blockquote(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n };\n\n html(html) {\n return html;\n };\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '<h'\n + level\n + ' id=\"'\n + this.options.headerPrefix\n + slugger.slug(raw)\n + '\">'\n + text\n + '</h'\n + level\n + '>\\n';\n }\n // ignore IDs\n return '<h' + level + '>' + text + '</h' + level + '>\\n';\n };\n\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n };\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n };\n\n listitem(text) {\n return '<li>' + text + '</li>\\n';\n };\n\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n };\n\n paragraph(text) {\n return '<p>' + text + '</p>\\n';\n };\n\n table(header, body) {\n if (body) body = '<tbody>' + body + '</tbody>';\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n };\n\n tablerow(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n };\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n };\n\n // span level renderer\n strong(text) {\n return '<strong>' + text + '</strong>';\n };\n\n em(text) {\n return '<em>' + text + '</em>';\n };\n\n codespan(text) {\n return '<code>' + text + '</code>';\n };\n\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n };\n\n del(text) {\n return '<del>' + text + '</del>';\n };\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + escape(href) + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n };\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n };\n\n text(text) {\n return text;\n };\n};\n","/**\n * Slugger generates header id\n */\nmodule.exports = class Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * Convert string to unique id\n */\n slug(value) {\n let slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n const originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n };\n};\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nmodule.exports = class TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n};\n","function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n xhtml: false\n };\n}\n\nfunction changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n}\n\nmodule.exports = {\n defaults: getDefaults(),\n getDefaults,\n changeDefaults\n};\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\nmodule.exports = {\n escape,\n unescape,\n edit,\n cleanUrl,\n resolveUrl,\n noopTest,\n merge,\n splitCells,\n rtrim,\n findClosingBracket,\n checkSanitizeDeprecation\n};\n","const Lexer = require('./Lexer.js');\nconst Parser = require('./Parser.js');\nconst Renderer = require('./Renderer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst Slugger = require('./Slugger.js');\nconst {\n merge,\n checkSanitizeDeprecation,\n escape\n} = require('./helpers.js');\nconst {\n getDefaults,\n changeDefaults,\n defaults\n} = require('./defaults.js');\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n const highlight = opt.highlight;\n let tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n const done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n let out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nmodule.exports = marked;\n","const {\n noopTest,\n edit,\n merge\n} = require('./helpers.js');\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}|~{3,})([^`~\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?>\\\\n*' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\\\\n*' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|</(?!script|pre|style)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *<?([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?-->/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} +')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}|~{3,})[^`\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*<\\[])\\*(?!\\*)|^_([^\\s<][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\*])\\*(?!\\*|[^\\spunctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*]|\\b_|$)|[^ ](?= {2,}\\n))|(?= {2,}\\n))/\n};\n\n// list of punctuation marks from common mark spec\n// without ` and ] to workaround Rule 17 (inline code blocks/links)\ninline._punctuation = '!\"#$%&\\'()*+,\\\\-./:;<=>?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*~]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))|(?= {2,}\\n|[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))/\n});\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n});\n\nmodule.exports = {\n block,\n inline\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _arrays = require('shallow-equal/arrays');\n\nvar _arrays2 = _interopRequireDefault(_arrays);\n\nvar _reactAutowhatever = require('react-autowhatever');\n\nvar _reactAutowhatever2 = _interopRequireDefault(_reactAutowhatever);\n\nvar _theme = require('./theme');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar alwaysTrue = function alwaysTrue() {\n return true;\n};\nvar defaultShouldRenderSuggestions = function defaultShouldRenderSuggestions(value) {\n return value.trim().length > 0;\n};\nvar defaultRenderSuggestionsContainer = function defaultRenderSuggestionsContainer(_ref) {\n var containerProps = _ref.containerProps,\n children = _ref.children;\n return _react2.default.createElement(\n 'div',\n containerProps,\n children\n );\n};\n\nvar Autosuggest = function (_Component) {\n _inherits(Autosuggest, _Component);\n\n function Autosuggest(_ref2) {\n var alwaysRenderSuggestions = _ref2.alwaysRenderSuggestions;\n\n _classCallCheck(this, Autosuggest);\n\n var _this = _possibleConstructorReturn(this, (Autosuggest.__proto__ || Object.getPrototypeOf(Autosuggest)).call(this));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n isFocused: false,\n isCollapsed: !alwaysRenderSuggestions,\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null\n };\n\n _this.justPressedUpDown = false;\n _this.justMouseEntered = false;\n\n _this.pressedSuggestion = null;\n return _this;\n }\n\n _createClass(Autosuggest, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n document.addEventListener('mousedown', this.onDocumentMouseDown);\n document.addEventListener('mouseup', this.onDocumentMouseUp);\n\n this.input = this.autowhatever.input;\n this.suggestionsContainer = this.autowhatever.itemsContainer;\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if ((0, _arrays2.default)(nextProps.suggestions, this.props.suggestions)) {\n if (nextProps.highlightFirstSuggestion && nextProps.suggestions.length > 0 && this.justPressedUpDown === false && this.justMouseEntered === false) {\n this.highlightFirstSuggestion();\n }\n } else {\n if (this.willRenderSuggestions(nextProps)) {\n if (this.state.isCollapsed && !this.justSelectedSuggestion) {\n this.revealSuggestions();\n }\n } else {\n this.resetHighlightedSuggestion();\n }\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _props = this.props,\n suggestions = _props.suggestions,\n onSuggestionHighlighted = _props.onSuggestionHighlighted,\n highlightFirstSuggestion = _props.highlightFirstSuggestion;\n\n\n if (!(0, _arrays2.default)(suggestions, prevProps.suggestions) && suggestions.length > 0 && highlightFirstSuggestion) {\n this.highlightFirstSuggestion();\n return;\n }\n\n if (onSuggestionHighlighted) {\n var highlightedSuggestion = this.getHighlightedSuggestion();\n var prevHighlightedSuggestion = prevState.highlightedSuggestion;\n\n if (highlightedSuggestion != prevHighlightedSuggestion) {\n onSuggestionHighlighted({\n suggestion: highlightedSuggestion\n });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('mousedown', this.onDocumentMouseDown);\n document.removeEventListener('mouseup', this.onDocumentMouseUp);\n }\n }, {\n key: 'updateHighlightedSuggestion',\n value: function updateHighlightedSuggestion(sectionIndex, suggestionIndex, prevValue) {\n var _this2 = this;\n\n this.setState(function (state) {\n var valueBeforeUpDown = state.valueBeforeUpDown;\n\n\n if (suggestionIndex === null) {\n valueBeforeUpDown = null;\n } else if (valueBeforeUpDown === null && typeof prevValue !== 'undefined') {\n valueBeforeUpDown = prevValue;\n }\n\n return {\n highlightedSectionIndex: sectionIndex,\n highlightedSuggestionIndex: suggestionIndex,\n highlightedSuggestion: suggestionIndex === null ? null : _this2.getSuggestion(sectionIndex, suggestionIndex),\n valueBeforeUpDown: valueBeforeUpDown\n };\n });\n }\n }, {\n key: 'resetHighlightedSuggestion',\n value: function resetHighlightedSuggestion() {\n var shouldResetValueBeforeUpDown = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.setState(function (state) {\n var valueBeforeUpDown = state.valueBeforeUpDown;\n\n\n return {\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: shouldResetValueBeforeUpDown ? null : valueBeforeUpDown\n };\n });\n }\n }, {\n key: 'revealSuggestions',\n value: function revealSuggestions() {\n this.setState({\n isCollapsed: false\n });\n }\n }, {\n key: 'closeSuggestions',\n value: function closeSuggestions() {\n this.setState({\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null,\n isCollapsed: true\n });\n }\n }, {\n key: 'getSuggestion',\n value: function getSuggestion(sectionIndex, suggestionIndex) {\n var _props2 = this.props,\n suggestions = _props2.suggestions,\n multiSection = _props2.multiSection,\n getSectionSuggestions = _props2.getSectionSuggestions;\n\n\n if (multiSection) {\n return getSectionSuggestions(suggestions[sectionIndex])[suggestionIndex];\n }\n\n return suggestions[suggestionIndex];\n }\n }, {\n key: 'getHighlightedSuggestion',\n value: function getHighlightedSuggestion() {\n var _state = this.state,\n highlightedSectionIndex = _state.highlightedSectionIndex,\n highlightedSuggestionIndex = _state.highlightedSuggestionIndex;\n\n\n if (highlightedSuggestionIndex === null) {\n return null;\n }\n\n return this.getSuggestion(highlightedSectionIndex, highlightedSuggestionIndex);\n }\n }, {\n key: 'getSuggestionValueByIndex',\n value: function getSuggestionValueByIndex(sectionIndex, suggestionIndex) {\n var getSuggestionValue = this.props.getSuggestionValue;\n\n\n return getSuggestionValue(this.getSuggestion(sectionIndex, suggestionIndex));\n }\n }, {\n key: 'getSuggestionIndices',\n value: function getSuggestionIndices(suggestionElement) {\n var sectionIndex = suggestionElement.getAttribute('data-section-index');\n var suggestionIndex = suggestionElement.getAttribute('data-suggestion-index');\n\n return {\n sectionIndex: typeof sectionIndex === 'string' ? parseInt(sectionIndex, 10) : null,\n suggestionIndex: parseInt(suggestionIndex, 10)\n };\n }\n }, {\n key: 'findSuggestionElement',\n value: function findSuggestionElement(startNode) {\n var node = startNode;\n\n do {\n if (node.getAttribute('data-suggestion-index') !== null) {\n return node;\n }\n\n node = node.parentNode;\n } while (node !== null);\n\n console.error('Clicked element:', startNode); // eslint-disable-line no-console\n throw new Error(\"Couldn't find suggestion element\");\n }\n }, {\n key: 'maybeCallOnChange',\n value: function maybeCallOnChange(event, newValue, method) {\n var _props$inputProps = this.props.inputProps,\n value = _props$inputProps.value,\n onChange = _props$inputProps.onChange;\n\n\n if (newValue !== value) {\n onChange(event, { newValue: newValue, method: method });\n }\n }\n }, {\n key: 'willRenderSuggestions',\n value: function willRenderSuggestions(props) {\n var suggestions = props.suggestions,\n inputProps = props.inputProps,\n shouldRenderSuggestions = props.shouldRenderSuggestions;\n var value = inputProps.value;\n\n\n return suggestions.length > 0 && shouldRenderSuggestions(value);\n }\n }, {\n key: 'getQuery',\n value: function getQuery() {\n var inputProps = this.props.inputProps;\n var value = inputProps.value;\n var valueBeforeUpDown = this.state.valueBeforeUpDown;\n\n\n return (valueBeforeUpDown === null ? value : valueBeforeUpDown).trim();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props3 = this.props,\n suggestions = _props3.suggestions,\n renderInputComponent = _props3.renderInputComponent,\n onSuggestionsFetchRequested = _props3.onSuggestionsFetchRequested,\n renderSuggestion = _props3.renderSuggestion,\n inputProps = _props3.inputProps,\n multiSection = _props3.multiSection,\n renderSectionTitle = _props3.renderSectionTitle,\n id = _props3.id,\n getSectionSuggestions = _props3.getSectionSuggestions,\n theme = _props3.theme,\n getSuggestionValue = _props3.getSuggestionValue,\n alwaysRenderSuggestions = _props3.alwaysRenderSuggestions,\n highlightFirstSuggestion = _props3.highlightFirstSuggestion;\n var _state2 = this.state,\n isFocused = _state2.isFocused,\n isCollapsed = _state2.isCollapsed,\n highlightedSectionIndex = _state2.highlightedSectionIndex,\n highlightedSuggestionIndex = _state2.highlightedSuggestionIndex,\n valueBeforeUpDown = _state2.valueBeforeUpDown;\n\n var shouldRenderSuggestions = alwaysRenderSuggestions ? alwaysTrue : this.props.shouldRenderSuggestions;\n var value = inputProps.value,\n _onFocus = inputProps.onFocus,\n _onKeyDown = inputProps.onKeyDown;\n\n var willRenderSuggestions = this.willRenderSuggestions(this.props);\n var isOpen = alwaysRenderSuggestions || isFocused && !isCollapsed && willRenderSuggestions;\n var items = isOpen ? suggestions : [];\n var autowhateverInputProps = _extends({}, inputProps, {\n onFocus: function onFocus(event) {\n if (!_this3.justSelectedSuggestion && !_this3.justClickedOnSuggestionsContainer) {\n var shouldRender = shouldRenderSuggestions(value);\n\n _this3.setState({\n isFocused: true,\n isCollapsed: !shouldRender\n });\n\n _onFocus && _onFocus(event);\n\n if (shouldRender) {\n onSuggestionsFetchRequested({ value: value, reason: 'input-focused' });\n }\n }\n },\n onBlur: function onBlur(event) {\n if (_this3.justClickedOnSuggestionsContainer) {\n _this3.input.focus();\n return;\n }\n\n _this3.blurEvent = event;\n\n if (!_this3.justSelectedSuggestion) {\n _this3.onBlur();\n _this3.onSuggestionsClearRequested();\n }\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n\n var shouldRender = shouldRenderSuggestions(value);\n\n _this3.maybeCallOnChange(event, value, 'type');\n\n if (_this3.suggestionsContainer) {\n _this3.suggestionsContainer.scrollTop = 0;\n }\n\n _this3.setState(_extends({}, highlightFirstSuggestion ? {} : {\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null\n }, {\n valueBeforeUpDown: null,\n isCollapsed: !shouldRender\n }));\n\n if (shouldRender) {\n onSuggestionsFetchRequested({ value: value, reason: 'input-changed' });\n } else {\n _this3.onSuggestionsClearRequested();\n }\n },\n onKeyDown: function onKeyDown(event, data) {\n var keyCode = event.keyCode;\n\n\n switch (keyCode) {\n case 40: // ArrowDown\n case 38:\n // ArrowUp\n if (isCollapsed) {\n if (shouldRenderSuggestions(value)) {\n onSuggestionsFetchRequested({\n value: value,\n reason: 'suggestions-revealed'\n });\n _this3.revealSuggestions();\n }\n } else if (suggestions.length > 0) {\n var newHighlightedSectionIndex = data.newHighlightedSectionIndex,\n newHighlightedItemIndex = data.newHighlightedItemIndex;\n\n\n var newValue = void 0;\n\n if (newHighlightedItemIndex === null) {\n // valueBeforeUpDown can be null if, for example, user\n // hovers on the first suggestion and then pressed Up.\n // If that happens, use the original input value.\n newValue = valueBeforeUpDown === null ? value : valueBeforeUpDown;\n } else {\n newValue = _this3.getSuggestionValueByIndex(newHighlightedSectionIndex, newHighlightedItemIndex);\n }\n\n _this3.updateHighlightedSuggestion(newHighlightedSectionIndex, newHighlightedItemIndex, value);\n _this3.maybeCallOnChange(event, newValue, keyCode === 40 ? 'down' : 'up');\n }\n\n event.preventDefault(); // Prevents the cursor from moving\n\n _this3.justPressedUpDown = true;\n\n setTimeout(function () {\n _this3.justPressedUpDown = false;\n });\n\n break;\n\n // Enter\n case 13:\n {\n // See #388\n if (event.keyCode === 229) {\n break;\n }\n\n var highlightedSuggestion = _this3.getHighlightedSuggestion();\n\n if (isOpen && !alwaysRenderSuggestions) {\n _this3.closeSuggestions();\n }\n\n if (highlightedSuggestion != null) {\n var _newValue = getSuggestionValue(highlightedSuggestion);\n\n _this3.maybeCallOnChange(event, _newValue, 'enter');\n\n _this3.onSuggestionSelected(event, {\n suggestion: highlightedSuggestion,\n suggestionValue: _newValue,\n suggestionIndex: highlightedSuggestionIndex,\n sectionIndex: highlightedSectionIndex,\n method: 'enter'\n });\n\n _this3.justSelectedSuggestion = true;\n\n setTimeout(function () {\n _this3.justSelectedSuggestion = false;\n });\n }\n\n break;\n }\n\n // Escape\n case 27:\n {\n if (isOpen) {\n // If input.type === 'search', the browser clears the input\n // when Escape is pressed. We want to disable this default\n // behaviour so that, when suggestions are shown, we just hide\n // them, without clearing the input.\n event.preventDefault();\n }\n\n var willCloseSuggestions = isOpen && !alwaysRenderSuggestions;\n\n if (valueBeforeUpDown === null) {\n // Didn't interact with Up/Down\n if (!willCloseSuggestions) {\n var _newValue2 = '';\n\n _this3.maybeCallOnChange(event, _newValue2, 'escape');\n\n if (shouldRenderSuggestions(_newValue2)) {\n onSuggestionsFetchRequested({\n value: _newValue2,\n reason: 'escape-pressed'\n });\n } else {\n _this3.onSuggestionsClearRequested();\n }\n }\n } else {\n // Interacted with Up/Down\n _this3.maybeCallOnChange(event, valueBeforeUpDown, 'escape');\n }\n\n if (willCloseSuggestions) {\n _this3.onSuggestionsClearRequested();\n _this3.closeSuggestions();\n } else {\n _this3.resetHighlightedSuggestion();\n }\n\n break;\n }\n }\n\n _onKeyDown && _onKeyDown(event);\n }\n });\n var renderSuggestionData = {\n query: this.getQuery()\n };\n\n return _react2.default.createElement(_reactAutowhatever2.default, {\n multiSection: multiSection,\n items: items,\n renderInputComponent: renderInputComponent,\n renderItemsContainer: this.renderSuggestionsContainer,\n renderItem: renderSuggestion,\n renderItemData: renderSuggestionData,\n renderSectionTitle: renderSectionTitle,\n getSectionItems: getSectionSuggestions,\n highlightedSectionIndex: highlightedSectionIndex,\n highlightedItemIndex: highlightedSuggestionIndex,\n inputProps: autowhateverInputProps,\n itemProps: this.itemProps,\n theme: (0, _theme.mapToAutowhateverTheme)(theme),\n id: id,\n ref: this.storeAutowhateverRef\n });\n }\n }]);\n\n return Autosuggest;\n}(_react.Component);\n\nAutosuggest.propTypes = {\n suggestions: _propTypes2.default.array.isRequired,\n onSuggestionsFetchRequested: function onSuggestionsFetchRequested(props, propName) {\n var onSuggestionsFetchRequested = props[propName];\n\n if (typeof onSuggestionsFetchRequested !== 'function') {\n throw new Error(\"'onSuggestionsFetchRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsFetchRequestedProp\");\n }\n },\n onSuggestionsClearRequested: function onSuggestionsClearRequested(props, propName) {\n var onSuggestionsClearRequested = props[propName];\n\n if (props.alwaysRenderSuggestions === false && typeof onSuggestionsClearRequested !== 'function') {\n throw new Error(\"'onSuggestionsClearRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsClearRequestedProp\");\n }\n },\n onSuggestionSelected: _propTypes2.default.func,\n onSuggestionHighlighted: _propTypes2.default.func,\n renderInputComponent: _propTypes2.default.func,\n renderSuggestionsContainer: _propTypes2.default.func,\n getSuggestionValue: _propTypes2.default.func.isRequired,\n renderSuggestion: _propTypes2.default.func.isRequired,\n inputProps: function inputProps(props, propName) {\n var inputProps = props[propName];\n\n if (!inputProps.hasOwnProperty('value')) {\n throw new Error(\"'inputProps' must have 'value'.\");\n }\n\n if (!inputProps.hasOwnProperty('onChange')) {\n throw new Error(\"'inputProps' must have 'onChange'.\");\n }\n },\n shouldRenderSuggestions: _propTypes2.default.func,\n alwaysRenderSuggestions: _propTypes2.default.bool,\n multiSection: _propTypes2.default.bool,\n renderSectionTitle: function renderSectionTitle(props, propName) {\n var renderSectionTitle = props[propName];\n\n if (props.multiSection === true && typeof renderSectionTitle !== 'function') {\n throw new Error(\"'renderSectionTitle' must be implemented. See: https://github.com/moroshko/react-autosuggest#renderSectionTitleProp\");\n }\n },\n getSectionSuggestions: function getSectionSuggestions(props, propName) {\n var getSectionSuggestions = props[propName];\n\n if (props.multiSection === true && typeof getSectionSuggestions !== 'function') {\n throw new Error(\"'getSectionSuggestions' must be implemented. See: https://github.com/moroshko/react-autosuggest#getSectionSuggestionsProp\");\n }\n },\n focusInputOnSuggestionClick: _propTypes2.default.bool,\n highlightFirstSuggestion: _propTypes2.default.bool,\n theme: _propTypes2.default.object,\n id: _propTypes2.default.string\n};\nAutosuggest.defaultProps = {\n renderSuggestionsContainer: defaultRenderSuggestionsContainer,\n shouldRenderSuggestions: defaultShouldRenderSuggestions,\n alwaysRenderSuggestions: false,\n multiSection: false,\n focusInputOnSuggestionClick: true,\n highlightFirstSuggestion: false,\n theme: _theme.defaultTheme,\n id: '1'\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this4 = this;\n\n this.onDocumentMouseDown = function (event) {\n _this4.justClickedOnSuggestionsContainer = false;\n\n var node = event.detail && event.detail.target || // This is for testing only. Please show me a better way to emulate this.\n event.target;\n\n while (node !== null && node !== document) {\n if (node.getAttribute('data-suggestion-index') !== null) {\n // Suggestion was clicked\n return;\n }\n\n if (node === _this4.suggestionsContainer) {\n // Something else inside suggestions container was clicked\n _this4.justClickedOnSuggestionsContainer = true;\n return;\n }\n\n node = node.parentNode;\n }\n };\n\n this.storeAutowhateverRef = function (autowhatever) {\n if (autowhatever !== null) {\n _this4.autowhatever = autowhatever;\n }\n };\n\n this.onSuggestionMouseEnter = function (event, _ref3) {\n var sectionIndex = _ref3.sectionIndex,\n itemIndex = _ref3.itemIndex;\n\n _this4.updateHighlightedSuggestion(sectionIndex, itemIndex);\n\n if (event.target === _this4.pressedSuggestion) {\n _this4.justSelectedSuggestion = true;\n }\n\n _this4.justMouseEntered = true;\n\n setTimeout(function () {\n _this4.justMouseEntered = false;\n });\n };\n\n this.highlightFirstSuggestion = function () {\n _this4.updateHighlightedSuggestion(_this4.props.multiSection ? 0 : null, 0);\n };\n\n this.onDocumentMouseUp = function () {\n if (_this4.pressedSuggestion && !_this4.justSelectedSuggestion) {\n _this4.input.focus();\n }\n _this4.pressedSuggestion = null;\n };\n\n this.onSuggestionMouseDown = function (event) {\n // Checking if this.justSelectedSuggestion is already true to not duplicate touch events in chrome\n // See: https://github.com/facebook/react/issues/9809#issuecomment-413978405\n if (!_this4.justSelectedSuggestion) {\n _this4.justSelectedSuggestion = true;\n _this4.pressedSuggestion = event.target;\n }\n };\n\n this.onSuggestionsClearRequested = function () {\n var onSuggestionsClearRequested = _this4.props.onSuggestionsClearRequested;\n\n\n onSuggestionsClearRequested && onSuggestionsClearRequested();\n };\n\n this.onSuggestionSelected = function (event, data) {\n var _props4 = _this4.props,\n alwaysRenderSuggestions = _props4.alwaysRenderSuggestions,\n onSuggestionSelected = _props4.onSuggestionSelected,\n onSuggestionsFetchRequested = _props4.onSuggestionsFetchRequested;\n\n\n onSuggestionSelected && onSuggestionSelected(event, data);\n\n if (alwaysRenderSuggestions) {\n onSuggestionsFetchRequested({\n value: data.suggestionValue,\n reason: 'suggestion-selected'\n });\n } else {\n _this4.onSuggestionsClearRequested();\n }\n\n _this4.resetHighlightedSuggestion();\n };\n\n this.onSuggestionClick = function (event) {\n var _props5 = _this4.props,\n alwaysRenderSuggestions = _props5.alwaysRenderSuggestions,\n focusInputOnSuggestionClick = _props5.focusInputOnSuggestionClick;\n\n var _getSuggestionIndices = _this4.getSuggestionIndices(_this4.findSuggestionElement(event.target)),\n sectionIndex = _getSuggestionIndices.sectionIndex,\n suggestionIndex = _getSuggestionIndices.suggestionIndex;\n\n var clickedSuggestion = _this4.getSuggestion(sectionIndex, suggestionIndex);\n var clickedSuggestionValue = _this4.props.getSuggestionValue(clickedSuggestion);\n\n _this4.maybeCallOnChange(event, clickedSuggestionValue, 'click');\n _this4.onSuggestionSelected(event, {\n suggestion: clickedSuggestion,\n suggestionValue: clickedSuggestionValue,\n suggestionIndex: suggestionIndex,\n sectionIndex: sectionIndex,\n method: 'click'\n });\n\n if (!alwaysRenderSuggestions) {\n _this4.closeSuggestions();\n }\n\n if (focusInputOnSuggestionClick === true) {\n _this4.input.focus();\n } else {\n _this4.onBlur();\n }\n\n setTimeout(function () {\n _this4.justSelectedSuggestion = false;\n });\n };\n\n this.onBlur = function () {\n var _props6 = _this4.props,\n inputProps = _props6.inputProps,\n shouldRenderSuggestions = _props6.shouldRenderSuggestions;\n var value = inputProps.value,\n onBlur = inputProps.onBlur;\n\n var highlightedSuggestion = _this4.getHighlightedSuggestion();\n var shouldRender = shouldRenderSuggestions(value);\n\n _this4.setState({\n isFocused: false,\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null,\n isCollapsed: !shouldRender\n });\n\n onBlur && onBlur(_this4.blurEvent, { highlightedSuggestion: highlightedSuggestion });\n };\n\n this.onSuggestionMouseLeave = function (event) {\n _this4.resetHighlightedSuggestion(false); // shouldResetValueBeforeUpDown\n\n if (_this4.justSelectedSuggestion && event.target === _this4.pressedSuggestion) {\n _this4.justSelectedSuggestion = false;\n }\n };\n\n this.onSuggestionTouchStart = function () {\n _this4.justSelectedSuggestion = true;\n // todo: event.preventDefault when https://github.com/facebook/react/issues/2043\n // todo: gets released so onSuggestionMouseDown won't fire in chrome\n };\n\n this.onSuggestionTouchMove = function () {\n _this4.justSelectedSuggestion = false;\n _this4.pressedSuggestion = null;\n _this4.input.focus();\n };\n\n this.itemProps = function (_ref4) {\n var sectionIndex = _ref4.sectionIndex,\n itemIndex = _ref4.itemIndex;\n\n return {\n 'data-section-index': sectionIndex,\n 'data-suggestion-index': itemIndex,\n onMouseEnter: _this4.onSuggestionMouseEnter,\n onMouseLeave: _this4.onSuggestionMouseLeave,\n onMouseDown: _this4.onSuggestionMouseDown,\n onTouchStart: _this4.onSuggestionTouchStart,\n onTouchMove: _this4.onSuggestionTouchMove,\n onClick: _this4.onSuggestionClick\n };\n };\n\n this.renderSuggestionsContainer = function (_ref5) {\n var containerProps = _ref5.containerProps,\n children = _ref5.children;\n var renderSuggestionsContainer = _this4.props.renderSuggestionsContainer;\n\n\n return renderSuggestionsContainer({\n containerProps: containerProps,\n children: children,\n query: _this4.getQuery()\n });\n };\n};\n\nexports.default = Autosuggest;","'use strict';\n\nmodule.exports = require('./Autosuggest').default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar defaultTheme = exports.defaultTheme = {\n container: 'react-autosuggest__container',\n containerOpen: 'react-autosuggest__container--open',\n input: 'react-autosuggest__input',\n inputOpen: 'react-autosuggest__input--open',\n inputFocused: 'react-autosuggest__input--focused',\n suggestionsContainer: 'react-autosuggest__suggestions-container',\n suggestionsContainerOpen: 'react-autosuggest__suggestions-container--open',\n suggestionsList: 'react-autosuggest__suggestions-list',\n suggestion: 'react-autosuggest__suggestion',\n suggestionFirst: 'react-autosuggest__suggestion--first',\n suggestionHighlighted: 'react-autosuggest__suggestion--highlighted',\n sectionContainer: 'react-autosuggest__section-container',\n sectionContainerFirst: 'react-autosuggest__section-container--first',\n sectionTitle: 'react-autosuggest__section-title'\n};\n\nvar mapToAutowhateverTheme = exports.mapToAutowhateverTheme = function mapToAutowhateverTheme(theme) {\n var result = {};\n\n for (var key in theme) {\n switch (key) {\n case 'suggestionsContainer':\n result['itemsContainer'] = theme[key];\n break;\n\n case 'suggestionsContainerOpen':\n result['itemsContainerOpen'] = theme[key];\n break;\n\n case 'suggestion':\n result['item'] = theme[key];\n break;\n\n case 'suggestionFirst':\n result['itemFirst'] = theme[key];\n break;\n\n case 'suggestionHighlighted':\n result['itemHighlighted'] = theme[key];\n break;\n\n case 'suggestionsList':\n result['itemsList'] = theme[key];\n break;\n\n default:\n result[key] = theme[key];\n }\n }\n\n return result;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _sectionIterator = require('section-iterator');\n\nvar _sectionIterator2 = _interopRequireDefault(_sectionIterator);\n\nvar _reactThemeable = require('react-themeable');\n\nvar _reactThemeable2 = _interopRequireDefault(_reactThemeable);\n\nvar _SectionTitle = require('./SectionTitle');\n\nvar _SectionTitle2 = _interopRequireDefault(_SectionTitle);\n\nvar _ItemsList = require('./ItemsList');\n\nvar _ItemsList2 = _interopRequireDefault(_ItemsList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar emptyObject = {};\nvar defaultRenderInputComponent = function defaultRenderInputComponent(props) {\n return _react2.default.createElement('input', props);\n};\nvar defaultRenderItemsContainer = function defaultRenderItemsContainer(_ref) {\n var containerProps = _ref.containerProps,\n children = _ref.children;\n return _react2.default.createElement(\n 'div',\n containerProps,\n children\n );\n};\nvar defaultTheme = {\n container: 'react-autowhatever__container',\n containerOpen: 'react-autowhatever__container--open',\n input: 'react-autowhatever__input',\n inputOpen: 'react-autowhatever__input--open',\n inputFocused: 'react-autowhatever__input--focused',\n itemsContainer: 'react-autowhatever__items-container',\n itemsContainerOpen: 'react-autowhatever__items-container--open',\n itemsList: 'react-autowhatever__items-list',\n item: 'react-autowhatever__item',\n itemFirst: 'react-autowhatever__item--first',\n itemHighlighted: 'react-autowhatever__item--highlighted',\n sectionContainer: 'react-autowhatever__section-container',\n sectionContainerFirst: 'react-autowhatever__section-container--first',\n sectionTitle: 'react-autowhatever__section-title'\n};\n\nvar Autowhatever = function (_Component) {\n _inherits(Autowhatever, _Component);\n\n function Autowhatever(props) {\n _classCallCheck(this, Autowhatever);\n\n var _this = _possibleConstructorReturn(this, (Autowhatever.__proto__ || Object.getPrototypeOf(Autowhatever)).call(this, props));\n\n _this.storeInputReference = function (input) {\n if (input !== null) {\n _this.input = input;\n }\n };\n\n _this.storeItemsContainerReference = function (itemsContainer) {\n if (itemsContainer !== null) {\n _this.itemsContainer = itemsContainer;\n }\n };\n\n _this.onHighlightedItemChange = function (highlightedItem) {\n _this.highlightedItem = highlightedItem;\n };\n\n _this.getItemId = function (sectionIndex, itemIndex) {\n if (itemIndex === null) {\n return null;\n }\n\n var id = _this.props.id;\n\n var section = sectionIndex === null ? '' : 'section-' + sectionIndex;\n\n return 'react-autowhatever-' + id + '-' + section + '-item-' + itemIndex;\n };\n\n _this.onFocus = function (event) {\n var inputProps = _this.props.inputProps;\n\n\n _this.setState({\n isInputFocused: true\n });\n\n inputProps.onFocus && inputProps.onFocus(event);\n };\n\n _this.onBlur = function (event) {\n var inputProps = _this.props.inputProps;\n\n\n _this.setState({\n isInputFocused: false\n });\n\n inputProps.onBlur && inputProps.onBlur(event);\n };\n\n _this.onKeyDown = function (event) {\n var _this$props = _this.props,\n inputProps = _this$props.inputProps,\n highlightedSectionIndex = _this$props.highlightedSectionIndex,\n highlightedItemIndex = _this$props.highlightedItemIndex;\n\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n {\n var nextPrev = event.key === 'ArrowDown' ? 'next' : 'prev';\n\n var _this$sectionIterator = _this.sectionIterator[nextPrev]([highlightedSectionIndex, highlightedItemIndex]),\n _this$sectionIterator2 = _slicedToArray(_this$sectionIterator, 2),\n newHighlightedSectionIndex = _this$sectionIterator2[0],\n newHighlightedItemIndex = _this$sectionIterator2[1];\n\n inputProps.onKeyDown(event, { newHighlightedSectionIndex: newHighlightedSectionIndex, newHighlightedItemIndex: newHighlightedItemIndex });\n break;\n }\n\n default:\n inputProps.onKeyDown(event, { highlightedSectionIndex: highlightedSectionIndex, highlightedItemIndex: highlightedItemIndex });\n }\n };\n\n _this.highlightedItem = null;\n\n _this.state = {\n isInputFocused: false\n };\n\n _this.setSectionsItems(props);\n _this.setSectionIterator(props);\n _this.setTheme(props);\n return _this;\n }\n\n _createClass(Autowhatever, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.ensureHighlightedItemIsVisible();\n }\n\n // eslint-disable-next-line camelcase, react/sort-comp\n\n }, {\n key: 'UNSAFE_componentWillReceiveProps',\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.items !== this.props.items) {\n this.setSectionsItems(nextProps);\n }\n\n if (nextProps.items !== this.props.items || nextProps.multiSection !== this.props.multiSection) {\n this.setSectionIterator(nextProps);\n }\n\n if (nextProps.theme !== this.props.theme) {\n this.setTheme(nextProps);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.ensureHighlightedItemIsVisible();\n }\n }, {\n key: 'setSectionsItems',\n value: function setSectionsItems(props) {\n if (props.multiSection) {\n this.sectionsItems = props.items.map(function (section) {\n return props.getSectionItems(section);\n });\n this.sectionsLengths = this.sectionsItems.map(function (items) {\n return items.length;\n });\n this.allSectionsAreEmpty = this.sectionsLengths.every(function (itemsCount) {\n return itemsCount === 0;\n });\n }\n }\n }, {\n key: 'setSectionIterator',\n value: function setSectionIterator(props) {\n this.sectionIterator = (0, _sectionIterator2.default)({\n multiSection: props.multiSection,\n data: props.multiSection ? this.sectionsLengths : props.items.length\n });\n }\n }, {\n key: 'setTheme',\n value: function setTheme(props) {\n this.theme = (0, _reactThemeable2.default)(props.theme);\n }\n }, {\n key: 'renderSections',\n value: function renderSections() {\n var _this2 = this;\n\n if (this.allSectionsAreEmpty) {\n return null;\n }\n\n var theme = this.theme;\n var _props = this.props,\n id = _props.id,\n items = _props.items,\n renderItem = _props.renderItem,\n renderItemData = _props.renderItemData,\n renderSectionTitle = _props.renderSectionTitle,\n highlightedSectionIndex = _props.highlightedSectionIndex,\n highlightedItemIndex = _props.highlightedItemIndex,\n itemProps = _props.itemProps;\n\n\n return items.map(function (section, sectionIndex) {\n var keyPrefix = 'react-autowhatever-' + id + '-';\n var sectionKeyPrefix = keyPrefix + 'section-' + sectionIndex + '-';\n var isFirstSection = sectionIndex === 0;\n\n // `key` is provided by theme()\n /* eslint-disable react/jsx-key */\n return _react2.default.createElement(\n 'div',\n theme(sectionKeyPrefix + 'container', 'sectionContainer', isFirstSection && 'sectionContainerFirst'),\n _react2.default.createElement(_SectionTitle2.default, {\n section: section,\n renderSectionTitle: renderSectionTitle,\n theme: theme,\n sectionKeyPrefix: sectionKeyPrefix\n }),\n _react2.default.createElement(_ItemsList2.default, {\n items: _this2.sectionsItems[sectionIndex],\n itemProps: itemProps,\n renderItem: renderItem,\n renderItemData: renderItemData,\n sectionIndex: sectionIndex,\n highlightedItemIndex: highlightedSectionIndex === sectionIndex ? highlightedItemIndex : null,\n onHighlightedItemChange: _this2.onHighlightedItemChange,\n getItemId: _this2.getItemId,\n theme: theme,\n keyPrefix: keyPrefix,\n ref: _this2.storeItemsListReference\n })\n );\n /* eslint-enable react/jsx-key */\n });\n }\n }, {\n key: 'renderItems',\n value: function renderItems() {\n var items = this.props.items;\n\n\n if (items.length === 0) {\n return null;\n }\n\n var theme = this.theme;\n var _props2 = this.props,\n id = _props2.id,\n renderItem = _props2.renderItem,\n renderItemData = _props2.renderItemData,\n highlightedSectionIndex = _props2.highlightedSectionIndex,\n highlightedItemIndex = _props2.highlightedItemIndex,\n itemProps = _props2.itemProps;\n\n\n return _react2.default.createElement(_ItemsList2.default, {\n items: items,\n itemProps: itemProps,\n renderItem: renderItem,\n renderItemData: renderItemData,\n highlightedItemIndex: highlightedSectionIndex === null ? highlightedItemIndex : null,\n onHighlightedItemChange: this.onHighlightedItemChange,\n getItemId: this.getItemId,\n theme: theme,\n keyPrefix: 'react-autowhatever-' + id + '-'\n });\n }\n }, {\n key: 'ensureHighlightedItemIsVisible',\n value: function ensureHighlightedItemIsVisible() {\n var highlightedItem = this.highlightedItem;\n\n\n if (!highlightedItem) {\n return;\n }\n\n var itemsContainer = this.itemsContainer;\n\n var itemOffsetRelativeToContainer = highlightedItem.offsetParent === itemsContainer ? highlightedItem.offsetTop : highlightedItem.offsetTop - itemsContainer.offsetTop;\n\n var scrollTop = itemsContainer.scrollTop; // Top of the visible area\n\n if (itemOffsetRelativeToContainer < scrollTop) {\n // Item is off the top of the visible area\n scrollTop = itemOffsetRelativeToContainer;\n } else if (itemOffsetRelativeToContainer + highlightedItem.offsetHeight > scrollTop + itemsContainer.offsetHeight) {\n // Item is off the bottom of the visible area\n scrollTop = itemOffsetRelativeToContainer + highlightedItem.offsetHeight - itemsContainer.offsetHeight;\n }\n\n if (scrollTop !== itemsContainer.scrollTop) {\n itemsContainer.scrollTop = scrollTop;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var theme = this.theme;\n var _props3 = this.props,\n id = _props3.id,\n multiSection = _props3.multiSection,\n renderInputComponent = _props3.renderInputComponent,\n renderItemsContainer = _props3.renderItemsContainer,\n highlightedSectionIndex = _props3.highlightedSectionIndex,\n highlightedItemIndex = _props3.highlightedItemIndex;\n var isInputFocused = this.state.isInputFocused;\n\n var renderedItems = multiSection ? this.renderSections() : this.renderItems();\n var isOpen = renderedItems !== null;\n var ariaActivedescendant = this.getItemId(highlightedSectionIndex, highlightedItemIndex);\n var itemsContainerId = 'react-autowhatever-' + id;\n var containerProps = _extends({\n role: 'combobox',\n 'aria-haspopup': 'listbox',\n 'aria-owns': itemsContainerId,\n 'aria-expanded': isOpen\n }, theme('react-autowhatever-' + id + '-container', 'container', isOpen && 'containerOpen'), this.props.containerProps);\n var inputComponent = renderInputComponent(_extends({\n type: 'text',\n value: '',\n autoComplete: 'off',\n 'aria-autocomplete': 'list',\n 'aria-controls': itemsContainerId,\n 'aria-activedescendant': ariaActivedescendant\n }, theme('react-autowhatever-' + id + '-input', 'input', isOpen && 'inputOpen', isInputFocused && 'inputFocused'), this.props.inputProps, {\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeyDown: this.props.inputProps.onKeyDown && this.onKeyDown,\n ref: this.storeInputReference\n }));\n var itemsContainer = renderItemsContainer({\n containerProps: _extends({\n id: itemsContainerId,\n role: 'listbox'\n }, theme('react-autowhatever-' + id + '-items-container', 'itemsContainer', isOpen && 'itemsContainerOpen'), {\n ref: this.storeItemsContainerReference\n }),\n children: renderedItems\n });\n\n return _react2.default.createElement(\n 'div',\n containerProps,\n inputComponent,\n itemsContainer\n );\n }\n }]);\n\n return Autowhatever;\n}(_react.Component);\n\nAutowhatever.propTypes = {\n id: _propTypes2.default.string, // Used in aria-* attributes. If multiple Autowhatever's are rendered on a page, they must have unique ids.\n multiSection: _propTypes2.default.bool, // Indicates whether a multi section layout should be rendered.\n renderInputComponent: _propTypes2.default.func, // When specified, it is used to render the input element.\n renderItemsContainer: _propTypes2.default.func, // Renders the items container.\n items: _propTypes2.default.array.isRequired, // Array of items or sections to render.\n renderItem: _propTypes2.default.func, // This function renders a single item.\n renderItemData: _propTypes2.default.object, // Arbitrary data that will be passed to renderItem()\n renderSectionTitle: _propTypes2.default.func, // This function gets a section and renders its title.\n getSectionItems: _propTypes2.default.func, // This function gets a section and returns its items, which will be passed into `renderItem` for rendering.\n containerProps: _propTypes2.default.object, // Arbitrary container props\n inputProps: _propTypes2.default.object, // Arbitrary input props\n itemProps: _propTypes2.default.oneOfType([// Arbitrary item props\n _propTypes2.default.object, _propTypes2.default.func]),\n highlightedSectionIndex: _propTypes2.default.number, // Section index of the highlighted item\n highlightedItemIndex: _propTypes2.default.number, // Highlighted item index (within a section)\n theme: _propTypes2.default.oneOfType([// Styles. See: https://github.com/markdalgleish/react-themeable\n _propTypes2.default.object, _propTypes2.default.array])\n};\nAutowhatever.defaultProps = {\n id: '1',\n multiSection: false,\n renderInputComponent: defaultRenderInputComponent,\n renderItemsContainer: defaultRenderItemsContainer,\n renderItem: function renderItem() {\n throw new Error('`renderItem` must be provided');\n },\n renderItemData: emptyObject,\n renderSectionTitle: function renderSectionTitle() {\n throw new Error('`renderSectionTitle` must be provided');\n },\n getSectionItems: function getSectionItems() {\n throw new Error('`getSectionItems` must be provided');\n },\n containerProps: emptyObject,\n inputProps: emptyObject,\n itemProps: emptyObject,\n highlightedSectionIndex: null,\n highlightedItemIndex: null,\n theme: defaultTheme\n};\nexports.default = Autowhatever;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _compareObjects = require('./compareObjects');\n\nvar _compareObjects2 = _interopRequireDefault(_compareObjects);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Item = function (_Component) {\n _inherits(Item, _Component);\n\n function Item() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Item);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Item.__proto__ || Object.getPrototypeOf(Item)).call.apply(_ref, [this].concat(args))), _this), _this.storeItemReference = function (item) {\n if (item !== null) {\n _this.item = item;\n }\n }, _this.onMouseEnter = function (event) {\n var _this$props = _this.props,\n sectionIndex = _this$props.sectionIndex,\n itemIndex = _this$props.itemIndex;\n\n\n _this.props.onMouseEnter(event, { sectionIndex: sectionIndex, itemIndex: itemIndex });\n }, _this.onMouseLeave = function (event) {\n var _this$props2 = _this.props,\n sectionIndex = _this$props2.sectionIndex,\n itemIndex = _this$props2.itemIndex;\n\n\n _this.props.onMouseLeave(event, { sectionIndex: sectionIndex, itemIndex: itemIndex });\n }, _this.onMouseDown = function (event) {\n var _this$props3 = _this.props,\n sectionIndex = _this$props3.sectionIndex,\n itemIndex = _this$props3.itemIndex;\n\n\n _this.props.onMouseDown(event, { sectionIndex: sectionIndex, itemIndex: itemIndex });\n }, _this.onClick = function (event) {\n var _this$props4 = _this.props,\n sectionIndex = _this$props4.sectionIndex,\n itemIndex = _this$props4.itemIndex;\n\n\n _this.props.onClick(event, { sectionIndex: sectionIndex, itemIndex: itemIndex });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Item, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects2.default)(nextProps, this.props, ['renderItemData']);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n isHighlighted = _props.isHighlighted,\n item = _props.item,\n renderItem = _props.renderItem,\n renderItemData = _props.renderItemData,\n restProps = _objectWithoutProperties(_props, ['isHighlighted', 'item', 'renderItem', 'renderItemData']);\n\n delete restProps.sectionIndex;\n delete restProps.itemIndex;\n\n if (typeof restProps.onMouseEnter === 'function') {\n restProps.onMouseEnter = this.onMouseEnter;\n }\n\n if (typeof restProps.onMouseLeave === 'function') {\n restProps.onMouseLeave = this.onMouseLeave;\n }\n\n if (typeof restProps.onMouseDown === 'function') {\n restProps.onMouseDown = this.onMouseDown;\n }\n\n if (typeof restProps.onClick === 'function') {\n restProps.onClick = this.onClick;\n }\n\n return _react2.default.createElement(\n 'li',\n _extends({ role: 'option' }, restProps, { ref: this.storeItemReference }),\n renderItem(item, _extends({ isHighlighted: isHighlighted }, renderItemData))\n );\n }\n }]);\n\n return Item;\n}(_react.Component);\n\nItem.propTypes = {\n sectionIndex: _propTypes2.default.number,\n isHighlighted: _propTypes2.default.bool.isRequired,\n itemIndex: _propTypes2.default.number.isRequired,\n item: _propTypes2.default.any.isRequired,\n renderItem: _propTypes2.default.func.isRequired,\n renderItemData: _propTypes2.default.object.isRequired,\n onMouseEnter: _propTypes2.default.func,\n onMouseLeave: _propTypes2.default.func,\n onMouseDown: _propTypes2.default.func,\n onClick: _propTypes2.default.func\n};\nexports.default = Item;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Item = require('./Item');\n\nvar _Item2 = _interopRequireDefault(_Item);\n\nvar _compareObjects = require('./compareObjects');\n\nvar _compareObjects2 = _interopRequireDefault(_compareObjects);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ItemsList = function (_Component) {\n _inherits(ItemsList, _Component);\n\n function ItemsList() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ItemsList);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ItemsList.__proto__ || Object.getPrototypeOf(ItemsList)).call.apply(_ref, [this].concat(args))), _this), _this.storeHighlightedItemReference = function (highlightedItem) {\n _this.props.onHighlightedItemChange(highlightedItem === null ? null : highlightedItem.item);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ItemsList, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects2.default)(nextProps, this.props, ['itemProps']);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n items = _props.items,\n itemProps = _props.itemProps,\n renderItem = _props.renderItem,\n renderItemData = _props.renderItemData,\n sectionIndex = _props.sectionIndex,\n highlightedItemIndex = _props.highlightedItemIndex,\n getItemId = _props.getItemId,\n theme = _props.theme,\n keyPrefix = _props.keyPrefix;\n\n var sectionPrefix = sectionIndex === null ? keyPrefix : keyPrefix + 'section-' + sectionIndex + '-';\n var isItemPropsFunction = typeof itemProps === 'function';\n\n return _react2.default.createElement(\n 'ul',\n _extends({ role: 'listbox' }, theme(sectionPrefix + 'items-list', 'itemsList')),\n items.map(function (item, itemIndex) {\n var isFirst = itemIndex === 0;\n var isHighlighted = itemIndex === highlightedItemIndex;\n var itemKey = sectionPrefix + 'item-' + itemIndex;\n var itemPropsObj = isItemPropsFunction ? itemProps({ sectionIndex: sectionIndex, itemIndex: itemIndex }) : itemProps;\n var allItemProps = _extends({\n id: getItemId(sectionIndex, itemIndex),\n 'aria-selected': isHighlighted\n }, theme(itemKey, 'item', isFirst && 'itemFirst', isHighlighted && 'itemHighlighted'), itemPropsObj);\n\n if (isHighlighted) {\n allItemProps.ref = _this2.storeHighlightedItemReference;\n }\n\n // `key` is provided by theme()\n /* eslint-disable react/jsx-key */\n return _react2.default.createElement(_Item2.default, _extends({}, allItemProps, {\n sectionIndex: sectionIndex,\n isHighlighted: isHighlighted,\n itemIndex: itemIndex,\n item: item,\n renderItem: renderItem,\n renderItemData: renderItemData\n }));\n /* eslint-enable react/jsx-key */\n })\n );\n }\n }]);\n\n return ItemsList;\n}(_react.Component);\n\nItemsList.propTypes = {\n items: _propTypes2.default.array.isRequired,\n itemProps: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.func]),\n renderItem: _propTypes2.default.func.isRequired,\n renderItemData: _propTypes2.default.object.isRequired,\n sectionIndex: _propTypes2.default.number,\n highlightedItemIndex: _propTypes2.default.number,\n onHighlightedItemChange: _propTypes2.default.func.isRequired,\n getItemId: _propTypes2.default.func.isRequired,\n theme: _propTypes2.default.func.isRequired,\n keyPrefix: _propTypes2.default.string.isRequired\n};\nItemsList.defaultProps = {\n sectionIndex: null\n};\nexports.default = ItemsList;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _compareObjects = require('./compareObjects');\n\nvar _compareObjects2 = _interopRequireDefault(_compareObjects);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SectionTitle = function (_Component) {\n _inherits(SectionTitle, _Component);\n\n function SectionTitle() {\n _classCallCheck(this, SectionTitle);\n\n return _possibleConstructorReturn(this, (SectionTitle.__proto__ || Object.getPrototypeOf(SectionTitle)).apply(this, arguments));\n }\n\n _createClass(SectionTitle, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects2.default)(nextProps, this.props);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n section = _props.section,\n renderSectionTitle = _props.renderSectionTitle,\n theme = _props.theme,\n sectionKeyPrefix = _props.sectionKeyPrefix;\n\n var sectionTitle = renderSectionTitle(section);\n\n if (!sectionTitle) {\n return null;\n }\n\n return _react2.default.createElement(\n 'div',\n theme(sectionKeyPrefix + 'title', 'sectionTitle'),\n sectionTitle\n );\n }\n }]);\n\n return SectionTitle;\n}(_react.Component);\n\nSectionTitle.propTypes = {\n section: _propTypes2.default.any.isRequired,\n renderSectionTitle: _propTypes2.default.func.isRequired,\n theme: _propTypes2.default.func.isRequired,\n sectionKeyPrefix: _propTypes2.default.string.isRequired\n};\nexports.default = SectionTitle;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = compareObjects;\nfunction compareObjects(objA, objB) {\n var keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n if (objA === objB) {\n return false;\n }\n\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (aKeys.length !== bKeys.length) {\n return true;\n }\n\n var keysMap = {};\n var i = void 0,\n len = void 0;\n\n for (i = 0, len = keys.length; i < len; i++) {\n keysMap[keys[i]] = true;\n }\n\n for (i = 0, len = aKeys.length; i < len; i++) {\n var key = aKeys[i];\n var aValue = objA[key];\n var bValue = objB[key];\n\n if (aValue === bValue) {\n continue;\n }\n\n if (!keysMap[key] || aValue === null || bValue === null || (typeof aValue === 'undefined' ? 'undefined' : _typeof(aValue)) !== 'object' || (typeof bValue === 'undefined' ? 'undefined' : _typeof(bValue)) !== 'object') {\n return true;\n }\n\n var aValueKeys = Object.keys(aValue);\n var bValueKeys = Object.keys(bValue);\n\n if (aValueKeys.length !== bValueKeys.length) {\n return true;\n }\n\n for (var n = 0, length = aValueKeys.length; n < length; n++) {\n var aValueKey = aValueKeys[n];\n\n if (aValue[aValueKey] !== bValue[aValueKey]) {\n return true;\n }\n }\n }\n\n return false;\n}","'use strict';\n\nmodule.exports = require('./Autowhatever').default;","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar truthy = function truthy(x) {\n return x;\n};\n\nexports['default'] = function (input) {\n var _ref = Array.isArray(input) && input.length === 2 ? input : [input, null];\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var theme = _ref2[0];\n var classNameDecorator = _ref2[1];\n\n return function (key) {\n for (var _len = arguments.length, names = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n names[_key - 1] = arguments[_key];\n }\n\n var styles = names.map(function (name) {\n return theme[name];\n }).filter(truthy);\n\n return typeof styles[0] === 'string' || typeof classNameDecorator === 'function' ? { key: key, className: classNameDecorator ? classNameDecorator.apply(undefined, _toConsumableArray(styles)) : styles.join(' ') } : { key: key, style: _objectAssign2['default'].apply(undefined, [{}].concat(_toConsumableArray(styles))) };\n };\n};\n\nmodule.exports = exports['default'];","'use strict';\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction ownEnumerableKeys(obj) {\n\tvar keys = Object.getOwnPropertyNames(obj);\n\n\tif (Object.getOwnPropertySymbols) {\n\t\tkeys = keys.concat(Object.getOwnPropertySymbols(obj));\n\t}\n\n\treturn keys.filter(function (key) {\n\t\treturn propIsEnumerable.call(obj, key);\n\t});\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = ownEnumerableKeys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n","function defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = memoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.dependencies = dependencies;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nexport var createSelector = createSelectorCreator(defaultMemoize);\n\nexport function createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","\"use strict\";\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nmodule.exports = function (_ref) {\n var data = _ref.data;\n var multiSection = _ref.multiSection;\n\n function nextNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = 0;\n } else {\n sectionIndex++;\n }\n\n while (sectionIndex < data.length && data[sectionIndex] === 0) {\n sectionIndex++;\n }\n\n return sectionIndex === data.length ? null : sectionIndex;\n }\n\n function prevNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = data.length - 1;\n } else {\n sectionIndex--;\n }\n\n while (sectionIndex >= 0 && data[sectionIndex] === 0) {\n sectionIndex--;\n }\n\n return sectionIndex === -1 ? null : sectionIndex;\n }\n\n function next(position) {\n var _position = _slicedToArray(position, 2);\n\n var sectionIndex = _position[0];\n var itemIndex = _position[1];\n\n\n if (multiSection) {\n if (itemIndex === null || itemIndex === data[sectionIndex] - 1) {\n sectionIndex = nextNonEmptySectionIndex(sectionIndex);\n\n if (sectionIndex === null) {\n return [null, null];\n }\n\n return [sectionIndex, 0];\n }\n\n return [sectionIndex, itemIndex + 1];\n }\n\n if (data === 0 || itemIndex === data - 1) {\n return [null, null];\n }\n\n if (itemIndex === null) {\n return [null, 0];\n }\n\n return [null, itemIndex + 1];\n }\n\n function prev(position) {\n var _position2 = _slicedToArray(position, 2);\n\n var sectionIndex = _position2[0];\n var itemIndex = _position2[1];\n\n\n if (multiSection) {\n if (itemIndex === null || itemIndex === 0) {\n sectionIndex = prevNonEmptySectionIndex(sectionIndex);\n\n if (sectionIndex === null) {\n return [null, null];\n }\n\n return [sectionIndex, data[sectionIndex] - 1];\n }\n\n return [sectionIndex, itemIndex - 1];\n }\n\n if (data === 0 || itemIndex === 0) {\n return [null, null];\n }\n\n if (itemIndex === null) {\n return [null, data - 1];\n }\n\n return [null, itemIndex - 1];\n }\n\n function isLast(position) {\n return next(position)[1] === null;\n }\n\n return {\n next: next,\n prev: prev,\n isLast: isLast\n };\n};\n","'use strict';\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqualArrays;\n","export enum Caches {\r\n Fifo = 'FifoMemoryCache'\r\n}","export const CommonChannels = {\r\n SHELL: 'global:shell',\r\n ALERT: 'global:alert',\r\n POPUP: 'global:popup',\r\n};","export const CommonServices = {\r\n ALERT: 'AlertService',\r\n SCROLL: 'ScrollService',\r\n LANGUAGE: 'LanguageService'\r\n};","export enum DataProviders {\r\n Ajax = 'AjaxDataProvider',\r\n Notifications = 'NotificationsSignalRDataProvider'\r\n}","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash } from 'backbone';\r\nimport { LocationUtils } from './LocationUtils';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { EventNames } from './EventNames';\r\n\r\n/**\r\n * Used to match on params in a backbone route.\r\n * (e.g. matches :id in /videos/:id)\r\n * Borrowed directly from backbone.\r\n */\r\nconst routeParamMatcher = /((\\(\\?)?:\\w+)|(\\*\\w+)/;\r\n\r\n/**\r\n * Used to strip out parenths in optional sections of routes.\r\n * (e.g. /videos(/edit) will become /videos/edit)\r\n */\r\nconst parenthMatcher = /[\\(\\)]/g;\r\n\r\n/**\r\n * Excludes optional trailing slashes\r\n * (e.g. /videos/123(/) would become /videos/123)\r\n */\r\nconst optionalSlashMatcher = /\\(\\/\\)/g;\r\n\r\n/**\r\n * Removes trailing slashes. A more efficient way of\r\n * doing .endsWith('/')\r\n */\r\nconst trailingSlashMatcher = /\\/$/;\r\n\r\n\r\nexport interface AppLink {\r\n application: string;\r\n action: string;\r\n args?: (string | number)[];\r\n params?: string | ObjectHash;\r\n}\r\n\r\nexport interface AppLinkHash {\r\n [selector: string]: AppLink;\r\n}\r\n\r\nexport interface AppLinkOptions {\r\n replace?: boolean;\r\n}\r\n\r\nexport const AppLinkUtility = {\r\n routingStarted(): void {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger(EventNames.ROUTING_START);\r\n },\r\n routingEnded(): void {\r\n if (!AppLinkUtility.hasActiveRoute())\r\n return;\r\n\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger(EventNames.ROUTING_END);\r\n },\r\n hasActiveRoute(): boolean {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n return channel.request(EventNames.HAS_ACTIVE_ROUTE);\r\n }\r\n};\r\n\r\nconst triggerAppLink = (appLink: AppLink, options: AppLinkOptions = {}) => {\r\n (options as any).usedHelper = true;\r\n\r\n const { application, action } = appLink;\r\n Radio.channel(application).trigger(action, appLink, options);\r\n};\r\n\r\nexport const AppLinkHelper = {\r\n\r\n /**\r\n * Build a href string from an AppLink object \r\n * @param appLink \r\n */\r\n getHref(appLink: AppLink): string {\r\n if (!appLink)\r\n return '';\r\n\r\n const { application, action, args, params } = appLink;\r\n const shellChannel = Radio.channel(CommonChannels.SHELL);\r\n return `/${shellChannel.request(EventNames.ROUTE_LOOKUP, `${application}:${action}`, args, params)}`;\r\n },\r\n\r\n /**\r\n * This is the reverse process of extracting params out of a route.\r\n * (e.g. Will take the route '/videos/:id' and an array of args = [123]\r\n * and return '/videos/123')\r\n */\r\n buildRoute(route: string, appLink: AppLink): string {\r\n if (!appLink) return route;\r\n\r\n let args: any[] = appLink.args;\r\n let params: string | ObjectHash = appLink.params;\r\n\r\n _.each(args, arg => { route = route.replace(routeParamMatcher, arg || ''); });\r\n route = route.replace(optionalSlashMatcher, '');\r\n route = route.replace(parenthMatcher, '');\r\n route = route.replace(trailingSlashMatcher, '');\r\n\r\n if (!params)\r\n return route;\r\n\r\n const queryParams = LocationUtils.SerializeQueryParams(params);\r\n\r\n if (!queryParams.length)\r\n return route;\r\n\r\n return `${route}?${queryParams}`;\r\n },\r\n\r\n /**\r\n * Manually trigger an AppLink\r\n * @param appLink \r\n */\r\n trigger(appLink: AppLink, options?: AppLinkOptions): void {\r\n if (!appLink)\r\n return;\r\n\r\n if (!AppLinkUtility.hasActiveRoute()) {\r\n triggerAppLink(appLink, options);\r\n return;\r\n }\r\n\r\n /**\r\n * If there is currently an applink executing, we wait till that\r\n * execution is over before triggering the next applink.\r\n * \r\n * This will prevent the url being update to the first applink after\r\n * the second applink has run\r\n */\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.once('routing:end', () => {\r\n triggerAppLink(appLink, options);\r\n });\r\n },\r\n\r\n getCurrentAppLink(): AppLink {\r\n return Radio.channel(CommonChannels.SHELL)\r\n .request(EventNames.CURRENT_ROUTE);\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Radio } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { Shell } from './Shell';\r\nimport { BaseApplication, BaseApplicationOptions } from './BaseApplication';\r\nimport { AppLink, AppLinkUtility, AppLinkOptions, AppLinkHelper } from './AppLink';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { MiddlewareFunction, Middleware } from './Middleware';\r\nimport { EventNames } from './EventNames';\r\nimport { CoreError, ErrorHelper } from './BaseError';\r\nimport { LocationUtils } from './LocationUtils';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nexport interface ExecuteRouteOptions {\r\n isAppRoute: boolean;\r\n}\r\n\r\n/**\r\n * Used to split lowerCamelCase method names into words.\r\n */\r\nconst splitter = /([A-Z])/g;\r\n\r\n/**\r\n * Used to split event names into words.\r\n */\r\nconst reverseSplitter = /(^|:)(\\w)/gi;\r\n\r\n/**\r\n * This should only ever be used by the shell\r\n * creating a new instance of the AppRoute\r\n */\r\nexport interface BaseAppRouterOptions extends Marionette.AppRouterOptions {\r\n appConstructor: typeof BaseApplication;\r\n\r\n /**\r\n * These will be passed into the appConstructor\r\n * when creating an instance of the Application\r\n */\r\n appOptions?: BaseApplicationOptions;\r\n shell: Shell;\r\n}\r\n\r\n/**\r\n * Every Application must have an AppRouter\r\n */\r\nexport class BaseAppRouter extends Marionette.AppRouter {\r\n /**\r\n * A hash of urls to method names on the Application.\r\n * Exactly the same implementation as Backbone Router routes\r\n * except the methods exist on the Application.\r\n * See http://backbonejs.org/#Router-routes\r\n */\r\n protected appRoutes?: Marionette.AppRoutes;\r\n\r\n protected appLinks?: string[];\r\n\r\n /**\r\n * The channelName used to trigger the appLinks\r\n * on backbone.radio. This will match the Application's\r\n * channelName.\r\n */\r\n protected channelName?: string;\r\n\r\n /**\r\n * These are async middleware functions that are run\r\n * before any route on this router is executed.\r\n * \r\n * They can be used to prevent access to a router using\r\n * asyncronous code.\r\n */\r\n protected filters: MiddlewareFunction<AppLink>[];\r\n\r\n /**\r\n * See BaseAppRouterOptions above.\r\n */\r\n protected options?: BaseAppRouterOptions;\r\n\r\n constructor(options?: BaseAppRouterOptions) {\r\n super(options);\r\n\r\n this.bindDisposal();\r\n this.processAppEvents();\r\n }\r\n\r\n private bindDisposal(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTE, (appLink: AppLink) => {\r\n if (appLink.application !== this.channelName) this.destroyApp();\r\n });\r\n }\r\n\r\n /**\r\n * Creates all the reverse route lookups\r\n * and binds all the appLinks to the radio channel\r\n */\r\n private processAppEvents(): void {\r\n if (!this.appRoutes || !_.keys(this.appRoutes).length)\r\n ErrorHelper.throw(new CoreError('Implementations of Core.AppRouter must define at least 1 appRoute'));\r\n\r\n _.each(_.keys(this.appRoutes), route => {\r\n const methodName = this.appRoutes[route];\r\n const eventName = this.toEventName(methodName);\r\n\r\n /**\r\n * Create route look ups for each appRoute so that\r\n * anchor tags using appLinks can generate the correct href.\r\n * These are added to the shell so that all routes can be\r\n * easily found.\r\n */\r\n\r\n this.options.shell.addRouteLookup(\r\n `${this.channelName}:${eventName}`, (eventArgs?: any[], params?: string | ObjectHash) => {\r\n return AppLinkHelper.buildRoute(route, {\r\n application: this.channelName,\r\n action: eventName,\r\n args: eventArgs,\r\n params });\r\n }\r\n );\r\n\r\n /**\r\n * Adds an event listener on the application's channel\r\n * so that other parts of the application can directly trigger\r\n * routes without the use of window.navigate. This decouples\r\n * the application from the url bar in a browser.\r\n */\r\n this.listenTo(this.channelName, eventName, (appLink: AppLink, options: AppLinkOptions) => {\r\n if (!options || !(options as any).usedHelper)\r\n ErrorHelper.throw(new CoreError('Please use Core.AppLinkHelper.trigger({}) to trigger appLinks.'));\r\n\r\n this.executeRoute(appLink, { isAppRoute: true }, () => {\r\n const params = _.extend({}, this.controller.getAndClearDefaultQueryParams(), appLink.params);\r\n appLink.params = params;\r\n LocationUtils.UpdateUrl(route, appLink, options);\r\n });\r\n });\r\n });\r\n\r\n if (!this.appLinks)\r\n return;\r\n\r\n _.each(this.appLinks, methodName => {\r\n const eventName = this.toEventName(methodName);\r\n\r\n this.listenTo(this.channelName, eventName, (appLink: AppLink, options: AppLinkOptions) => {\r\n if (!options || !(options as any).usedHelper)\r\n ErrorHelper.throw(new CoreError('Please use Core.AppLinkHelper.trigger({}) to trigger appLinks.'));\r\n\r\n this.executeRoute(appLink, { isAppRoute: false });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * This is the heart of the AppRouter. Every single route both page loads\r\n * and appLinks will go through this method.\r\n *\r\n * This will return false if onBeforeAction returns false\r\n * and the window history will not be altered.\r\n */\r\n private executeRoute(appLink: AppLink, options: ExecuteRouteOptions, done?: () => void): void {\r\n this.validateAppLink(appLink);\r\n\r\n const methodName = this.toMethodName(appLink.action);\r\n\r\n /**\r\n * AppLinkUtility lets us ensure that no other appLink\r\n * is fired and executed while this appLink is executing.\r\n */\r\n AppLinkUtility.routingStarted();\r\n\r\n const shellChannel = Radio.channel(CommonChannels.SHELL);\r\n\r\n /**\r\n * Prevent a navigate event where the Shell has been locked\r\n */\r\n if (this.options.shell.isNavLocked()) {\r\n shellChannel.trigger(EventNames.NAV_IS_LOCKED, appLink);\r\n AppLinkUtility.routingEnded();\r\n return;\r\n }\r\n\r\n const middleware = new Middleware<AppLink>();\r\n\r\n /**\r\n * Each of the filters defined on the router is run through\r\n * before we execute this route. Any filter can prevent the route from\r\n * executing by not calling next, instead calling AppLinkUtility.routingEnded(); \r\n * and throwing an error.\r\n */\r\n _.each(this.filters, filter => middleware.use(filter));\r\n\r\n middleware.go(appLink, () => {\r\n /**\r\n * Let the entire application know that the page is moving\r\n * to a new route. Also informs which application we're moving to.\r\n * \r\n * Options will let the application know if this appLink has an associated route\r\n */\r\n shellChannel.trigger(EventNames.ROUTE, appLink, options);\r\n\r\n /**\r\n * Instantiate the app if it had not already been created.\r\n */\r\n this.createApp();\r\n const app = this.controller;\r\n\r\n /**\r\n * Ensure the action is defined on the application\r\n */\r\n if (!_.isFunction(app[methodName])) {\r\n AppLinkUtility.routingEnded();\r\n ErrorHelper.throw(new CoreError(`${methodName} does not exist on the ${_.result(app, 'name')}.`));\r\n }\r\n\r\n /**\r\n * Check if the application wants to trigger the action\r\n * by calling onBeforeAction. If onBeforeAction returns falls\r\n * onActionCancelled is triggered on the application.\r\n */\r\n if (app.triggerMethod('before:action') === false) {\r\n app.triggerMethod('action:cancelled');\r\n AppLinkUtility.routingEnded();\r\n return;\r\n }\r\n\r\n /**\r\n * Ask the application to load it's layout.\r\n * onLoadLayout is defined in Core.Application\r\n * and should not be extended.\r\n */\r\n app.triggerMethod('load:layout');\r\n\r\n /**\r\n * Call the application's action passing the \r\n * deserialized query params as the last argument.\r\n */\r\n app[methodName].apply(app, [ ...(appLink.args || []), appLink.params || {} ]);\r\n\r\n if (_.isFunction(done))\r\n done();\r\n\r\n AppLinkUtility.routingEnded();\r\n });\r\n }\r\n\r\n /**\r\n * Instantiates and starts the application if there was\r\n * not already an instance.\r\n *\r\n * Why is the application stores on this.controller?\r\n * In Marionette AppRouters hold reference to a controller\r\n * which in turn is responsibile for maintaining reference to an application.\r\n * We've restructured this architecture so that AppRouters directly hold\r\n * the instance of the Application, but are still leveraging Marionette's\r\n * use of appRoutes on the controller.\r\n */\r\n private createApp(): void {\r\n if (this.controller) return;\r\n\r\n this.controller = new this.options.appConstructor(this.options.appOptions);\r\n this.controller.start();\r\n }\r\n\r\n private destroyApp(): void {\r\n if (!this.controller) return;\r\n\r\n const app = this.controller as BaseApplication;\r\n app.destroy();\r\n delete this.controller;\r\n }\r\n\r\n /**\r\n * Overriding Marionette.AppRouter's _addAppRoute so that\r\n * execute route is called instead of the method directly.\r\n *\r\n * We do this so that executeRoute can be called for every single\r\n * route, whether it's a page load or an appLink. This will make it easier\r\n * to modify the action\r\n */\r\n private _addAppRoute(controller: BaseApplication, route: string, methodName: string): void {\r\n this.route(route, methodName, (...args: any[]) => {\r\n const appLink: AppLink = {\r\n application: this.channelName,\r\n action: this.toEventName(methodName),\r\n args: args.slice(0, args.length - 1),\r\n params: LocationUtils.DeserializeQueryParams(args[args.length - 1])\r\n };\r\n\r\n this.executeRoute(appLink, { isAppRoute: true }, () => {\r\n LocationUtils.UpdateQuery(_.extend(this.controller.getAndClearDefaultQueryParams(), appLink.params));\r\n });\r\n });\r\n }\r\n\r\n private toEventName(methodName: string): string {\r\n return methodName.replace(splitter, ':$1').toLowerCase();\r\n }\r\n\r\n private toMethodName(eventName: string): string {\r\n const titleCase = eventName.replace(reverseSplitter, (match: string, prefix: string, name: string) => {\r\n return name.toUpperCase();\r\n });\r\n return titleCase[0].toLowerCase() + titleCase.slice(1, titleCase.length);\r\n }\r\n\r\n private validateAppLink(appLink: AppLink): void {\r\n if (!appLink.application || !appLink.action) {\r\n AppLinkUtility.routingEnded();\r\n ErrorHelper.throw(new CoreError('Invalid AppLink'));\r\n }\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { Shell } from './Shell';\r\nimport { BaseLayoutView, BaseLayoutViewOptions } from './BaseLayoutView';\r\nimport { LayoutService, LayoutOptions } from './LayoutService';\r\nimport { BaseAppRouter } from './BaseAppRouter';\r\nimport { CoreView } from './BaseView';\r\nimport { EventNames } from './EventNames';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\nexport interface BaseApplicationOptions extends Marionette.ApplicationOptions {\r\n shell: Shell;\r\n layoutService: LayoutService;\r\n channelName?: string;\r\n}\r\n\r\nexport class BaseApplication extends Marionette.Application {\r\n /**\r\n * Layout service is used to retreive the layout on each route\r\n */\r\n private layoutService: LayoutService;\r\n\r\n /** \r\n * The layout that should be used to render all content into the DOM\r\n */\r\n protected layout?: BaseLayoutView;\r\n\r\n /**\r\n * This is specified by all children of Core.Application\r\n * to determine which layout to load in from layout service,\r\n * and what options to instantiate it with.\r\n */\r\n protected layoutOptions: LayoutOptions<BaseLayoutViewOptions>;\r\n\r\n /**\r\n * A reference to the shell is always kept as a \r\n * way to both render the layout into the dom\r\n * and keep reference to global services\r\n */\r\n protected shell: Shell;\r\n\r\n /**\r\n * An instance of the Core.AppRouter is created\r\n * for each Application in order to listen to applink\r\n * events. The application instance is only then instantiated\r\n * when the Application route is hit\r\n */\r\n public static router: typeof BaseAppRouter;\r\n\r\n /** \r\n * Provides the ability to define useful error messages.\r\n */\r\n public name: string;\r\n\r\n /** When overridden determines which options are \r\n * mixed into the instance */\r\n public props: string[];\r\n\r\n /**\r\n * Used by application actions to set default options.\r\n */\r\n private defaultQueryParams: ObjectHash;\r\n\r\n /** \r\n * Shell and layoutService will be mixed into each instance\r\n * of Core.Applicataion\r\n */\r\n public get defaultProps(): string[] {\r\n return [ 'shell', 'layoutService' ];\r\n }\r\n\r\n /**\r\n * The constructor will merge in props and ensure any required properties\r\n * are defined\r\n * @constructor\r\n */\r\n constructor(options?: BaseApplicationOptions) {\r\n super(options);\r\n\r\n /** merge in any properties we want added to `this` */\r\n this.mergeOptions(options, [ ...this.defaultProps, ...(this.props || []) ]);\r\n\r\n if (!_.result(this, 'name'))\r\n ErrorHelper.throw(new CoreError('BaseApplication must define a name'));\r\n\r\n if (!_.result(this, 'channelName'))\r\n ErrorHelper.throw(new CoreError('BaseApplication must define a channelName'));\r\n\r\n this.listenTo(this.getGlobalRadioChannel('popup'), EventNames.SHOW_POPUP, this.onShowPopup);\r\n this.listenTo(this.getGlobalRadioChannel('alert'), 'show:alert', this.onShowAlert);\r\n }\r\n\r\n private getGlobalRadioChannel(prop: string): Radio.Channel {\r\n const globalChannels = this.shell.getGlobalRadioChannels();\r\n const channelName = globalChannels[prop.toUpperCase()];\r\n\r\n if (!channelName)\r\n ErrorHelper.throw(new CoreError(`Global channel ${channelName} does not exist`));\r\n\r\n return Radio.channel(channelName);\r\n }\r\n\r\n /**\r\n * This method is triggered by Core.AppRouter when it loads\r\n * in a route for this application. It will swap in the appropriate \r\n * layout before hitting the application's action.\r\n * \r\n */\r\n private onLoadLayout(): void {\r\n if (!this.layoutOptions || !this.layoutOptions.name) return;\r\n var options = _.extend({}, this.layoutOptions.options || {}, { store: this.shell.store });\r\n this.layout = this.layoutService.getLayout(_.extend(this.layoutOptions, { options }));\r\n\r\n if (!this.layout)\r\n ErrorHelper.throw(new CoreError(\r\n `Layout: ${this.layoutOptions.name} does not exist or was not registered`\r\n ));\r\n\r\n this.shell.showView(this.layout);\r\n\r\n /**\r\n * This is triggered so that applications can render in \r\n * any layout-esk components that need to be slightly more\r\n * application specific than a layout can handle. \r\n * For example the top navigation, where the application\r\n * needs to specify which item is highlighted.\r\n */\r\n this.triggerMethod('layout:loaded');\r\n }\r\n\r\n private onShowPopup(view: CoreView): void {\r\n if (!this.layout.getRegion('popup'))\r\n ErrorHelper.throw(new CoreError('Your application layout must define a popup region'));\r\n\r\n this.layout.showChildView('popup', view);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash): void {\r\n const { ctor, collection } = options;\r\n\r\n const region = this.layout.getRegion('alert');\r\n\r\n if (!region)\r\n ErrorHelper.throw(new CoreError('Your application layout must define an alert region'));\r\n\r\n // Only construct the alert view if an instance doesn not already\r\n // exist in the current region.\r\n if (region.hasView())\r\n return;\r\n\r\n this.layout.showChildView('alert', new ctor({ collection }));\r\n }\r\n\r\n protected setDefaultQueryParams(params: ObjectHash): void {\r\n /**\r\n * If an action calls another action within a single route\r\n * workflow setDefaultQueryParams may be called more than once\r\n * so we need to preserve all values passed it.\r\n * The last values will always override the first ones.\r\n */\r\n if (this.defaultQueryParams)\r\n params = _.extend(this.defaultQueryParams, params);\r\n\r\n this.defaultQueryParams = params;\r\n }\r\n\r\n public getAndClearDefaultQueryParams(): ObjectHash {\r\n const params = this.defaultQueryParams;\r\n delete this.defaultQueryParams;\r\n return params || {};\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","import * as Marionette from 'backbone.marionette';\r\nimport { ListenToRadio } from './ListenToRadio';\r\n\r\nexport class BaseBehavior extends Marionette.Behavior{\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","import * as Backbone from 'backbone';\r\nimport { BaseModel } from './BaseModel';\r\nimport { ListenToRadio } from './ListenToRadio';\r\n\r\nexport class BaseCollection<TModel extends BaseModel = BaseModel> extends Backbone.Collection<TModel> {\r\n public parent?: BaseModel | BaseCollection;\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import * as Marionette from 'backbone.marionette';\r\n\r\nimport { BaseCollection } from './BaseCollection';\r\nimport { CoreView } from './BaseView';\r\nimport { BaseModel } from './BaseModel';\r\nimport * as _ from 'underscore';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\nexport interface BaseCollectionViewOptions<TModel extends BaseModel = BaseModel>\r\n extends Marionette.CollectionViewOptions<TModel>\r\n{\r\n channelName?: string;\r\n}\r\n\r\nexport class BaseCollectionView<\r\n TModel extends BaseModel = BaseModel,\r\n TView extends CoreView<TModel> = CoreView<TModel>,\r\n TCollection extends BaseCollection<TModel> = BaseCollection<TModel>\r\n> extends Marionette.CollectionView<TModel, TView, TCollection> {\r\n protected options: BaseCollectionViewOptions<TModel>;\r\n\r\n constructor(options?: BaseCollectionViewOptions<TModel>) {\r\n super(options);\r\n\r\n if (!_.result(this, 'name')) {\r\n ErrorHelper.throw(new CoreError(`Error: View with cid:${this.cid} requires a name.`));\r\n }\r\n }\r\n\r\n public serializeModel(): any {\r\n if (!this.model) {\r\n return {};\r\n }\r\n return this.model.toJSON();\r\n }\r\n public serializeCollection(): any[] {\r\n if (!this.collection) {\r\n return [];\r\n }\r\n return this.collection.toJSON();\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import { Radio } from 'backbone';\r\n\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\nimport { EventNames } from './EventNames';\r\n\r\nexport class BaseError extends Error {\r\n public name: string;\r\n\r\n constructor(message: string) {\r\n super(message);\r\n }\r\n}\r\n\r\n/**\r\n * You can use these if you want to leverage the convenience \r\n * of the error set up without actually throwing the error\r\n */\r\nexport abstract class SilentError extends BaseError {\r\n public get name(): string {\r\n return 'SilentError';\r\n }\r\n}\r\n\r\nexport class CoreError extends Error {\r\n public get name(): string {\r\n return 'CoreError';\r\n }\r\n}\r\n\r\nconst ErrorHelper = {\r\n throw(error: BaseError): void {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger(EventNames.ERROR, error);\r\n\r\n if (!(error instanceof SilentError) && !EnvironmentVariables.isDevelopment)\r\n throw error;\r\n }\r\n};\r\n\r\nexport { ErrorHelper };","import * as _ from 'underscore';\r\n\r\nimport { BaseView, BaseViewOptions } from './BaseView';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { Store } from 'redux';\r\n\r\nexport interface BaseLayoutViewOptions extends BaseViewOptions {\r\n store?: Store;\r\n}\r\n\r\nexport class BaseLayoutView extends BaseView {\r\n protected options: BaseLayoutViewOptions;\r\n\r\n constructor(options: BaseLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public static getCacheKey(options: BaseLayoutViewOptions): string {\r\n ErrorHelper.throw(new DevError(`Must define getCacheKey for ${this.name}.`));\r\n\r\n return;\r\n }\r\n\r\n public unmountRegion(regionName: string): void {\r\n this.trigger(`unmount:${regionName}`);\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport * as Backbone from 'backbone';\r\nimport { BaseCollection } from './BaseCollection';\r\nimport { ListenToRadio } from './ListenToRadio';\r\n\r\nexport class BaseModel extends Backbone.Model {\r\n public parent?: BaseModel | BaseCollection;\r\n public collection: BaseCollection;\r\n\r\n /**\r\n * Mechanism to allow properties/functions to be attached to\r\n * the instance of a model at runtime. \r\n * @param propertyHash \r\n * \r\n * I feel like this implementation is a bit naive, \r\n * but it will suffice for the time being - Mike\r\n */\r\n private mixin(propertyHash: Backbone.ObjectHash): void {\r\n const proto = this as any;\r\n\r\n for (let prop in propertyHash) {\r\n\r\n if (proto.hasOwnProperty(prop)) {\r\n const currentProperty = proto[prop];\r\n proto[prop] = _.extend({}, currentProperty, propertyHash[prop]);\r\n return;\r\n }\r\n\r\n proto[prop] = propertyHash[prop];\r\n }\r\n }\r\n\r\n /**\r\n * Helper to facilitate model validation at runtime \r\n * @param validation \r\n */\r\n public addValidation(validation: any): void {\r\n this.mixin({ validation });\r\n }\r\n\r\n /**\r\n * Backbone Validation mixin functions\r\n */\r\n\r\n public preValidate: (attr: any, value: any) => any;\r\n\r\n /* \r\n * Override the base validate parameters to make attributes optional.\r\n * Backbone Validation will default to validating all attributes where\r\n * an attributes hash is not passed.\r\n */\r\n public validate(attributes?: any, options?: any): any {\r\n super.validate.call(this, attributes, options);\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ModelSetOptions, ObjectHash } from 'backbone';\r\n\r\nimport { BaseModel } from './BaseModel';\r\nimport { BaseCollection } from './BaseCollection';\r\n\r\ninterface Association {\r\n new (...args: any[]): (BaseCollection | BaseModel);\r\n}\r\n\r\nexport interface BaseNestedModelOptions extends ModelSetOptions {\r\n unset?: boolean;\r\n}\r\n\r\nexport class BaseNestedModel extends BaseModel {\r\n [name: string]: any;\r\n\r\n protected associations: {\r\n [name: string]: Association;\r\n };\r\n\r\n public set(key: string | object, value?: any | ModelSetOptions, options?: BaseNestedModelOptions): BaseNestedModel {\r\n let attr, attrs: any;\r\n\r\n if (key === null) return this;\r\n\r\n if (typeof key === 'object') {\r\n attrs = key;\r\n options = value;\r\n } else {\r\n attrs = {};\r\n attrs[key] = value;\r\n }\r\n\r\n options || (options = {});\r\n\r\n // if(!this._validate(attrs, options)) return false;\r\n\r\n for (attr in attrs) {\r\n if (_.has(this.associations, attr))\r\n attrs[attr] = this.setAssociation(attr, attrs[attr], options);\r\n }\r\n\r\n return super.set.call(this, attrs, options);\r\n }\r\n\r\n public get(attributeName: string): any {\r\n var splitIndex = attributeName.indexOf('.');\r\n\r\n if (splitIndex === -1) return super.get.call(this, attributeName);\r\n\r\n const assoc = attributeName.substr(0, splitIndex);\r\n const nestedModel = this.attributes[assoc];\r\n\r\n if (!nestedModel || !_.isFunction(nestedModel.get))\r\n return super.get.call(this, attributeName);\r\n\r\n const propName = attributeName.substr(splitIndex + 1);\r\n return nestedModel.get(propName);\r\n }\r\n\r\n public setAssociation(\r\n key: string, value: any, options: BaseNestedModelOptions\r\n ): BaseModel | BaseCollection<BaseModel> {\r\n const assocFn = this.associations[key];\r\n const previous = this.attributes[key];\r\n\r\n if (!_.isFunction(assocFn)) return value;\r\n\r\n if (options.unset) {\r\n previous && delete previous.parent;\r\n delete this[key];\r\n return previous;\r\n }\r\n\r\n if (previous) {\r\n if (previous instanceof BaseModel) previous.set(value, options);\r\n if (previous instanceof BaseCollection) previous.set(value, options);\r\n\r\n if (!options.silent) this.trigger(`change:${key}`, this, value, options);\r\n\r\n return previous;\r\n }\r\n\r\n const associatedModel =\r\n value instanceof BaseModel ? value : new assocFn(value, { parse: true });\r\n\r\n associatedModel.parent = this;\r\n\r\n this[key] = associatedModel;\r\n\r\n return associatedModel;\r\n }\r\n\r\n public toJSON(...args: any[]): ObjectHash {\r\n const json = super.toJSON.apply(this, args);\r\n\r\n _.each(this.associations, (assoc: any, key: string) => {\r\n if (_.has(json, key) && _.isFunction(json[key].toJSON))\r\n json[key] = json[key].toJSON();\r\n else\r\n json[key] = new assoc().toJSON();\r\n });\r\n\r\n return json;\r\n }\r\n\r\n public toFlatJSON(...args: any[]): ObjectHash {\r\n return _.omit(super.toJSON.apply(this, args), _.keys(this.associations));\r\n }\r\n}\r\n","import * as Marionette from 'backbone.marionette';\r\n\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\nexport interface BaseServiceOptions extends Marionette.ObjectOptions {}\r\n\r\nexport class BaseService extends Marionette.Object {\r\n public name: string;\r\n\r\n public constructor(options?: BaseServiceOptions) {\r\n super(options);\r\n\r\n if (!this.name)\r\n ErrorHelper.throw(new CoreError('Your service must be named.'));\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport * as Backbone from 'backbone';\r\nimport { Radio } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { StickitBinding } from 'libs/common/backbone/interfaces/StickitBinding';\r\n\r\nimport { BaseModel } from './BaseModel';\r\n\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\nimport { AppLinkHash, AppLinkHelper } from './AppLink';\r\n\r\ninterface UIHash {\r\n [selector: string]: any;\r\n}\r\n\r\nexport interface RequiredResourceHash {\r\n [propName: string]: RequiredResourceDefinition;\r\n}\r\n\r\nexport interface RequiredResourceDefinition<T = any> {\r\n dataServiceName: string;\r\n eventName: string;\r\n getData: (instance: any) => T;\r\n getInstance: (context: Backbone.Events) => any;\r\n beforeOnBeforeRender: boolean;\r\n}\r\n\r\nexport interface BaseViewOptions<TModel extends BaseModel = BaseModel> extends Marionette.ViewOptions<TModel> {\r\n channelName?: string;\r\n}\r\n\r\nexport class CoreView<TModel extends BaseModel = BaseModel> extends Marionette.View<TModel> {\r\n /**\r\n * This is of the name class. It should be used on\r\n * all warnings and errors to make debugging easier.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Takes a Handlebars template function.\r\n */\r\n public template: any;\r\n\r\n /**\r\n * Specify the properties you want to be\r\n * taken from `options` and added to the context.\r\n */\r\n public props: string[];\r\n\r\n /**\r\n * This is what the page title will be set to\r\n * when this view is rendered.\r\n */\r\n public title: string | boolean;\r\n\r\n /**\r\n * The default properties that will be taken\r\n * from `options` and added to the context.\r\n */\r\n private get defaultProps(): string[] {\r\n return [ 'shell', 'layoutService' ];\r\n }\r\n\r\n public viewModel: BaseModel;\r\n\r\n private static ViewDataExtensions: (Function | Backbone.ObjectHash)[] = [];\r\n\r\n /**\r\n * Update instance options to include defaults. Passing options\r\n * to the view via the ctor will always override defaults.\r\n * @param options\r\n */\r\n private _setOptions(options: any): void {\r\n this.options = _.extend({}, _.result(this, 'defaults'), options);\r\n }\r\n\r\n /**\r\n * Mix in the class name into the dom attributes to\r\n * help us out with debugging\r\n */\r\n private _setAttributes(attributes: any): void {\r\n if (EnvironmentVariables.isDevelopment) {\r\n _.extend(attributes, {\r\n ['cv-classname']: this.name\r\n });\r\n }\r\n\r\n this.$el.attr(attributes);\r\n }\r\n\r\n private uiStorage: Backbone.ObjectHash;\r\n public get ui(): Backbone.ObjectHash {\r\n if (this.uiStorage)\r\n return this.uiStorage;\r\n\r\n this.uiStorage = this.elements;\r\n return this.uiStorage;\r\n }\r\n public set ui(value: Backbone.ObjectHash) {\r\n this.uiStorage = value;\r\n }\r\n\r\n public get elements(): Backbone.ObjectHash {\r\n return null;\r\n }\r\n\r\n protected defaults: Backbone.ObjectHash;\r\n protected options: BaseViewOptions<TModel>;\r\n\r\n /**\r\n * Base class for all views to inherit from.\r\n * @constructor\r\n */\r\n constructor(options?: BaseViewOptions<TModel>) {\r\n super(options);\r\n\r\n const props = [ ...this.defaultProps, ...(this.props || []) ];\r\n\r\n // Merge props into the view instance\r\n this.mergeOptions(options, props);\r\n\r\n if (!_.result(this, 'name')) {\r\n ErrorHelper.throw(new CoreError(`Error: View with cid:${this.cid} requires a name.`));\r\n }\r\n }\r\n\r\n public appLinks: AppLinkHash;\r\n public normalizeUIKeys: (hash: UIHash) => UIHash;\r\n\r\n // Allow projects to add their own view data\r\n public static AddViewDataExtension(ext: Function | Backbone.ObjectHash): void {\r\n CoreView.ViewDataExtensions.push(ext);\r\n }\r\n\r\n public serializeModel(): any {\r\n if (!this.model) {\r\n return {};\r\n }\r\n return this.model.toJSON();\r\n }\r\n\r\n public serializeCollection(): any[] {\r\n if (!this.collection) {\r\n return [];\r\n }\r\n return this.collection.toJSON();\r\n }\r\n\r\n /**\r\n * This is a utility that can be used if your\r\n * className is dynamic between renders.\r\n * Simply call this.resetClassName() in\r\n * onRender()\r\n */\r\n protected resetClassName(): void {\r\n this.$el.attr('class', _.result(this, 'className'));\r\n }\r\n\r\n public serializeData(): any {\r\n const modelData = super.serializeData();\r\n const viewOptions = _.result(this, 'viewOptions');\r\n\r\n const result = _.extend({}, modelData, { options: viewOptions });\r\n\r\n if (!CoreView.ViewDataExtensions.length)\r\n return result;\r\n\r\n return _.extend(result, ..._.map(CoreView.ViewDataExtensions, (ext: Function | Backbone.ObjectHash) => {\r\n return ext instanceof Function\r\n ? ext(this)\r\n : ext;\r\n }));\r\n }\r\n\r\n // View options will be passed to our template by default\r\n protected viewOptions(): Backbone.ObjectHash {\r\n return this.options;\r\n }\r\n\r\n /**\r\n * Ensures that multiple click events arent bound\r\n * if the view is getting re-rendered.\r\n */\r\n private undelegateAppLinks(): void {\r\n if (this.$el) this.$el.off(`.appLinks${this.cid}`);\r\n }\r\n\r\n /**\r\n * This will take the appLinks hash defined on a view and used it to add\r\n * hrefs to the anchor tags and provide the application linking.\r\n */\r\n protected renderAppLinks(): void {\r\n let appLinks = this.appLinks;\r\n\r\n if (!appLinks) return;\r\n\r\n const events: any = {};\r\n\r\n /**\r\n * This allows appLinks to be defined with the\r\n * Marionette 'click @ui.myAnchorTag' syntax.\r\n */\r\n appLinks = this.normalizeUIKeys(appLinks);\r\n\r\n this.undelegateAppLinks();\r\n\r\n _.each(_.keys(appLinks), (key: string) => {\r\n let selector = key;\r\n const link = appLinks[key];\r\n\r\n /**\r\n * Gets the routeLookup from the shell. These\r\n * are added to the shell by\r\n * Core.AppRouter.processAppEvents() when the shell starts\r\n */\r\n const href = AppLinkHelper.getHref(link);\r\n\r\n /**\r\n * This allows an appLink to be defined on a view's root\r\n * element. This prevents us from over complicating the dom\r\n * structure if our view is simply an anchor tag on it's own.\r\n *\r\n * E.g.\r\n * tagName: 'a',\r\n * appLinks: {\r\n * '[this]': {\r\n * application: 'example:application',\r\n * action: 'details:page'\r\n * }\r\n * }\r\n */\r\n if (selector === '[this]') {\r\n selector = null;\r\n }\r\n\r\n const $el = selector ? this.$el.find(key) : this.$el;\r\n\r\n /**\r\n * We only create appLinks on anchor tags.\r\n * This is so we can support browser functions\r\n * such as open in a new window and so we can create\r\n * a strong SEO profile.\r\n */\r\n if (!$el.is('a') && !$el.is('button')) return;\r\n\r\n /**\r\n * Adds the href to the anchor tag if an actual route\r\n * exists.\r\n */\r\n if (href && href !== '/')\r\n $el.attr('href', href);\r\n\r\n /**\r\n * Bind click events on the anchor tag. Which will prevent the default\r\n * browser action of page loading to the href and instead\r\n * trigger an appLink to do a same page route.\r\n *\r\n * This callback must be a regular function rather than an\r\n * arrow function because of the way delegate() sets context\r\n */\r\n this.delegate(`click.appLinks${this.cid}`, selector, function(event: JQuery.Event): void {\r\n event.preventDefault();\r\n\r\n AppLinkHelper.trigger(link);\r\n });\r\n });\r\n }\r\n\r\n private hasPartialLoadingRegions(): boolean {\r\n /**\r\n * Defining const self = this as any so that we can\r\n * reference private variables\r\n */\r\n const self = this as any;\r\n\r\n if (self._hasPartialLoadingRegions !== undefined) {\r\n return self._hasPartialLoadingRegions;\r\n }\r\n\r\n self._hasPartialLoadingRegions = _.some(\r\n self.regions, ((r: any) => (\r\n _.has(r, 'partialLoading')\r\n )));\r\n\r\n return self._hasPartialLoadingRegions;\r\n }\r\n\r\n protected renderPartialLoading(region?: string): void {\r\n /**\r\n * PartialLoadingHelper is listening to this event\r\n * and will render the views partial loading regions\r\n * when the event is fired.\r\n */\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger('render:partial:loading', this, region);\r\n }\r\n\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n\r\n public render(): CoreView<TModel> {\r\n /**\r\n * Defining const self = this as any so that we can\r\n * reference private variables\r\n */\r\n const self = this as any;\r\n\r\n if (self._isDestroyed) {\r\n return this;\r\n }\r\n\r\n /**\r\n * Fetch required resources before onBeforeRender\r\n */\r\n let shouldRender = this.processRequriedResources(true);\r\n\r\n /**\r\n * Run onBeforeRender if there are no required resources,\r\n * or if the require resources have fetched\r\n */\r\n if (shouldRender)\r\n shouldRender = self.triggerMethod('before:render', this);\r\n\r\n /**\r\n * We do this because if onBeforeRender returns nothing we should render\r\n */\r\n if (shouldRender !== false)\r\n shouldRender = true;\r\n\r\n /**\r\n * Fetch required resources after onBeforeRender\r\n * Resources that shouldn't block any fetches being made in onBeforeRender\r\n * are fetched here\r\n */\r\n shouldRender = shouldRender && this.processRequriedResources(false);\r\n\r\n if (shouldRender === false) {\r\n if (self._partialLoadingRendered || !self.hasPartialLoadingRegions()) {\r\n return this;\r\n }\r\n\r\n self._partialLoadingRendered = true;\r\n self._reInitRegions();\r\n self._renderTemplate();\r\n self.renderPartialLoading();\r\n return this;\r\n }\r\n\r\n if (self._isRendered || self._partialLoadingRendered) {\r\n self._reInitRegions();\r\n }\r\n\r\n this.setTitle();\r\n self._renderTemplate();\r\n self.bindUIElements();\r\n this.renderAppLinks();\r\n\r\n self._partialLoadingRendered = false;\r\n self._isRendered = true;\r\n self.triggerMethod('render', this);\r\n\r\n return this;\r\n }\r\n\r\n /** backbone.stickit stuff that is mixed in at run time.\r\n *\r\n * TODO: This should ideally be handled higher up that BaseView,\r\n * (yet another one of those TODOs that is likely\r\n * to sit here till the end of time. - Sha)\r\n */\r\n public bindings: { [selector: string]: StickitBinding };\r\n public stickit: (model?: BaseModel, options?: any) => void;\r\n public addbinding: (model: BaseModel, selector: string, configuration: any) => void;\r\n public unstickit: (model?: BaseModel, options?: any) => void;\r\n\r\n protected processRequriedResources(beforeOnBeforeRender: boolean): boolean { return true; }\r\n\r\n protected setTitle(): void { }\r\n}\r\n\r\nexport class BaseView<TModel extends BaseModel = BaseModel> extends CoreView<TModel> {\r\n private boundListeners: any;\r\n private resourceInstances: any;\r\n\r\n public requiredResources: {[propName: string]: RequiredResourceDefinition};\r\n\r\n constructor(options?: BaseViewOptions<TModel>) {\r\n super(options);\r\n\r\n this.boundListeners = {};\r\n this.resourceInstances = {};\r\n }\r\n\r\n protected processRequriedResources(beforeOnBeforeRender: boolean): boolean {\r\n const requiredResourceKeys = _.keys(this.requiredResources);\r\n\r\n if (!requiredResourceKeys.length)\r\n return true;\r\n\r\n const self = this as any;\r\n let shouldRender = true;\r\n\r\n _.each(requiredResourceKeys, key => {\r\n const requiredResource = this.requiredResources[key];\r\n\r\n if (requiredResource.beforeOnBeforeRender !== beforeOnBeforeRender)\r\n return;\r\n\r\n const dataServiceName = requiredResource.dataServiceName;\r\n\r\n if (!this.resourceInstances[dataServiceName]) {\r\n this.resourceInstances[dataServiceName] = requiredResource.getInstance(this);\r\n }\r\n\r\n if (!this.boundListeners[`${dataServiceName}:${requiredResource.eventName}`]) {\r\n this.listenTo(this.resourceInstances[dataServiceName].channelName, requiredResource.eventName, this.render);\r\n this.boundListeners[`${dataServiceName}:${requiredResource.eventName}`] = true;\r\n }\r\n\r\n self[key] = requiredResource.getData(this.resourceInstances[dataServiceName]);\r\n\r\n shouldRender = shouldRender && !!self[key];\r\n });\r\n return shouldRender;\r\n }\r\n\r\n public setTitle(): void {\r\n /**\r\n * A view can opt out of a page title by setting\r\n * this.title to false.\r\n */\r\n if (!_.isString(this.title) && this.title !== false)\r\n ErrorHelper.throw(new DevError(`Must define a title for ${this.name}.`));\r\n\r\n /**\r\n * PageTitleService is listening to this event\r\n * and will render the views partial loading regions\r\n * when the event is fired.\r\n */\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger('set:page:title', this.title);\r\n }\r\n}\r\n\r\nexport class BaseComponent<TModel extends BaseModel = BaseModel> extends CoreView<TModel> { }","const EventNames = {\r\n SHOW_POPUP: 'show:popup',\r\n ROUTE: 'route',\r\n LOCK_NAV: 'lock:nav',\r\n UNLOCK_NAV: 'unlock:nav',\r\n NAV_IS_LOCKED: 'navigation:islocked',\r\n NAV_UNLOCKED_BY_USER: 'navigation:unlocked:by:user',\r\n ROUTING_START: 'routing:start',\r\n ROUTING_END: 'routing:end',\r\n HAS_ACTIVE_ROUTE: 'has:active:route',\r\n ROUTE_LOOKUP: 'route:look:up',\r\n URL_CHANGE: 'url:change',\r\n ERROR: 'error',\r\n CURRENT_ROUTE: 'route:current'\r\n};\r\n\r\nexport { EventNames };","import * as _ from 'underscore';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { BaseLayoutView, BaseLayoutViewOptions } from './BaseLayoutView';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\ninterface Layouts {\r\n [name: string]: typeof BaseLayoutView;\r\n}\r\n\r\nexport interface LayoutOptions<T extends BaseLayoutViewOptions> {\r\n name: string;\r\n options?: T;\r\n}\r\n\r\nexport interface LayoutServiceOptions extends Marionette.ObjectOptions {\r\n requiredRegions?: string[];\r\n}\r\n\r\nexport class LayoutService extends Marionette.Object {\r\n private layouts: Layouts;\r\n private currentLayout: BaseLayoutView;\r\n private currentLayoutCacheKey: string;\r\n private requiredRegions: string[];\r\n public options: LayoutServiceOptions;\r\n\r\n constructor(options: LayoutServiceOptions) {\r\n super(options);\r\n this.layouts = {};\r\n this.requiredRegions = options.requiredRegions;\r\n }\r\n\r\n private clearLayout(): void {\r\n if (!this.currentLayout)\r\n return;\r\n\r\n this.currentLayout.destroy();\r\n delete this.currentLayout;\r\n delete this.currentLayoutCacheKey;\r\n }\r\n\r\n public registerLayout(name: string, layout: typeof BaseLayoutView): this {\r\n this.checkRequiredRegions(layout);\r\n this.layouts[name] = layout;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Either return the existing instance of a layout\r\n * or create the layout and cache it before returning.\r\n */\r\n public getLayout<T extends BaseLayoutViewOptions>(layoutOptions: LayoutOptions<T>): BaseLayoutView {\r\n const { name, options = {} } = layoutOptions;\r\n\r\n if (!this.layouts[name])\r\n ErrorHelper.throw(new CoreError(`${name} was not registered as a template.`));\r\n\r\n const cacheKey = this.layouts[name].getCacheKey(options);\r\n\r\n if (this.currentLayoutCacheKey === cacheKey && this.currentLayout) {\r\n this.currentLayout.triggerMethod('layout:requested', options);\r\n return this.currentLayout;\r\n }\r\n\r\n this.clearLayout();\r\n\r\n this.currentLayoutCacheKey = cacheKey;\r\n\r\n this.currentLayout = new this.layouts[name](options);\r\n this.listenToOnce(this.currentLayout, 'destroy', this.clearLayout);\r\n\r\n return this.currentLayout;\r\n }\r\n\r\n /**\r\n * Every layout that is registered must have all required/mandatory regions\r\n */\r\n private checkRequiredRegions(layout: typeof BaseLayoutView): void {\r\n _.each(this.requiredRegions, regionName => {\r\n if (!_.has(_.result(layout.prototype, 'regions'), regionName))\r\n ErrorHelper.throw(new CoreError(`Layout: ${layout.prototype.name} must define an ${regionName} region.`));\r\n });\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import { Radio } from 'backbone';\r\n\r\nfunction ListenToRadio(\r\n obj: string | Backbone.Events, events: string, callback: Function, originalListenTo: Function\r\n): any {\r\n let listenObj = obj;\r\n\r\n if (typeof(obj) === 'string')\r\n listenObj = Radio.channel(obj);\r\n\r\n return originalListenTo.call(this, listenObj, events, callback);\r\n}\r\n\r\nexport { ListenToRadio };","import * as _ from 'underscore';\r\nimport * as Backbone from 'backbone';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash, History, history } from 'backbone';\r\nimport { AppLinkHelper, AppLink, AppLinkUtility } from './AppLink';\r\n\r\nimport { EventNames } from './EventNames';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\n/**\r\n * This is the only file in the entire project\r\n * that should ever reference window.location.\r\n */\r\nconst LocationUtils = {\r\n GetQuery(): ObjectHash {\r\n return LocationUtils.DeserializeQueryParams((window.location.search).substring(1));\r\n },\r\n UpdateQuery(params: ObjectHash): void {\r\n if (!params)\r\n return;\r\n\r\n const currentQuery = LocationUtils.GetQuery();\r\n let query = LocationUtils.SerializeQueryParams(_.extend(currentQuery, params));\r\n\r\n if (query)\r\n query = `?${query}`;\r\n\r\n LocationUtils.UpdateUrl(`${LocationUtils.GetCurrentPath()}${query}`, null, { replace: true, trigger: false });\r\n },\r\n UpdateUrl(route: string, appLink: AppLink, options?: ObjectHash): void {\r\n const url = AppLinkHelper.buildRoute(route, appLink);\r\n\r\n Backbone.history.navigate(url, options);\r\n\r\n Radio.channel(CommonChannels.SHELL)\r\n .trigger(EventNames.URL_CHANGE, appLink, options);\r\n },\r\n SerializeQueryParams(params: string | ObjectHash): string {\r\n if (!params)\r\n return '';\r\n\r\n if (typeof(params) === 'string')\r\n return params;\r\n\r\n return $.param(params, true);\r\n },\r\n DeserializeQueryParams(params: string): ObjectHash {\r\n if (!params)\r\n return {};\r\n\r\n return _.reduce(params.split('&'), (queryParams: ObjectHash, param: string) => {\r\n const kvp = param.split('=');\r\n const key = kvp[0];\r\n const value = kvp.length > 0 ? decodeURIComponent(kvp[1]) : '';\r\n\r\n if (!queryParams[key]) {\r\n queryParams[key] = value;\r\n return queryParams;\r\n }\r\n\r\n if (queryParams[key] instanceof Array) {\r\n queryParams[key].push(value);\r\n return queryParams;\r\n }\r\n\r\n queryParams[key] = [ queryParams[key], value ];\r\n return queryParams;\r\n }, {});\r\n },\r\n StartHistory(): void {\r\n if (History.started) history.stop();\r\n history.start({ pushState: true });\r\n },\r\n PageLoad(href: string, newTab: boolean = false): void {\r\n if (!newTab) {\r\n window.location.href = href;\r\n return;\r\n }\r\n\r\n window.open(href, '_blank');\r\n },\r\n Redirect(href: string, replace: boolean = true): void {\r\n const redirect = () => replace\r\n ? window.location.replace(href)\r\n : window.location.href = href;\r\n\r\n /**\r\n * If there is currently an applink executing, we wait till that\r\n * execution is over before redirecting.\r\n * \r\n * This will prevent the wrong url being replaced.\r\n */\r\n if (AppLinkUtility.hasActiveRoute())\r\n Radio.channel(CommonChannels.SHELL).once('routing:end', redirect);\r\n else\r\n redirect();\r\n },\r\n Reload(force: boolean = true): void {\r\n window.location.reload(force);\r\n },\r\n GetCurrentPath(): string {\r\n return window.location.pathname;\r\n },\r\n GetCurrentQueryString(): string {\r\n return window.location.search;\r\n },\r\n GetCurrentUrl(): string {\r\n return window.location.href;\r\n },\r\n GetCurrentReferrer(): string {\r\n return document.referrer;\r\n },\r\n SetPageTitle(title: string): void {\r\n document.title = title;\r\n }\r\n};\r\n\r\nexport { LocationUtils };","export interface MiddlewareNext<T> {\r\n (options: T): void;\r\n}\r\n\r\nexport interface MiddlewareFunction<T> {\r\n (options: T, next: MiddlewareNext<T>): void;\r\n}\r\n\r\nexport class Middleware<T> {\r\n public use(fn: MiddlewareFunction<T>): void {\r\n const wrapper = (stack: any) => {\r\n return (options: T, next: MiddlewareNext<T>) => {\r\n return stack(options, () => fn(options, next));\r\n };\r\n };\r\n\r\n this.go = wrapper(this.go);\r\n }\r\n\r\n public go(options: T, next: MiddlewareNext<T>): void {\r\n next(options);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Radio } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { BaseApplication } from './BaseApplication';\r\nimport { BaseAppRouterOptions } from './BaseAppRouter';\r\nimport { LayoutService } from './LayoutService';\r\nimport { AppLinkUtility, AppLink } from './AppLink';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { BaseError, ErrorHelper, CoreError } from './BaseError';\r\nimport { EventNames } from './EventNames';\r\nimport { LocationUtils } from './LocationUtils';\r\nimport { BaseLayoutView } from './BaseLayoutView';\r\nimport { Store } from 'redux';\r\n\r\ninterface RouteLookup {\r\n [name: string]: (eventArgs?: any[], params?: string | ObjectHash) => string;\r\n}\r\n\r\ninterface ErrorHandler {\r\n errorType: Function & { prototype: BaseError };\r\n handler: (error: BaseError) => void;\r\n}\r\n\r\n/**\r\n * Maintain high-level shell state that spans across multiple applications.\r\n * Do NOT hold any low-level application-specific state here, use the\r\n * ViewModelService instead.\r\n */\r\ninterface ShellState {\r\n navLock: boolean;\r\n activeRoute: boolean;\r\n currentAppLink: AppLink;\r\n}\r\n\r\ninterface InitializationStep {\r\n (shell: Shell, next: InitializationStep): void;\r\n}\r\n\r\ninterface StartUpSet {\r\n (shell: Shell, options: any, next: StartUpSet): void;\r\n}\r\n\r\n\r\nclass ApplicationMeta {\r\n private application: typeof BaseApplication;\r\n private options?: ObjectHash;\r\n\r\n constructor(application: typeof BaseApplication, options?: ObjectHash) {\r\n this.application = application;\r\n this.options = options || {};\r\n }\r\n\r\n public get Application(): typeof BaseApplication {\r\n return this.application;\r\n }\r\n\r\n public get Options(): ObjectHash {\r\n return this.options;\r\n }\r\n}\r\n\r\nexport interface ShellOptions extends Marionette.ApplicationOptions {}\r\n\r\nexport class Shell extends Marionette.Application {\r\n /**\r\n * Used to retreive and cache layout views.\r\n */\r\n private layoutService: LayoutService;\r\n\r\n private applications: ApplicationMeta[];\r\n private routeLookup: RouteLookup;\r\n\r\n private shellState: ShellState;\r\n\r\n public initialize(options?: ShellOptions): void {\r\n this.mergeOptions(options, ['layoutService']);\r\n\r\n this.applications = [];\r\n this.routeLookup = {};\r\n this.shellState = {\r\n navLock: false,\r\n activeRoute: false,\r\n currentAppLink: null\r\n };\r\n this.errorHandlers = [];\r\n }\r\n\r\n private bindListeners(): void {\r\n this.bindRouteLookup();\r\n this.bindNavLockListeners();\r\n this.bindAppLinkListeners();\r\n this.bindErrorHandlers();\r\n this.bindErrorListener();\r\n }\r\n\r\n private bindNavLockListeners(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.LOCK_NAV, () => this.shellState.navLock = true);\r\n this.listenTo(CommonChannels.SHELL, EventNames.UNLOCK_NAV, () => this.shellState.navLock = false);\r\n }\r\n\r\n private bindAppLinkListeners(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTING_START, () => this.shellState.activeRoute = true);\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTING_END, () => this.shellState.activeRoute = false);\r\n\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTE,\r\n (appLink: AppLink) => this.shellState.currentAppLink = appLink);\r\n\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.reply(EventNames.HAS_ACTIVE_ROUTE, _.bind(this.hasActiveRoute, this));\r\n channel.reply(EventNames.CURRENT_ROUTE, () => this.shellState.currentAppLink);\r\n }\r\n\r\n private bindErrorHandlers(): void {\r\n window.addEventListener('error', () => {\r\n /**\r\n * If an error is unintentially thrown within a route executing,\r\n * this error listener will make sure all the application's applinks\r\n * don't freeze up.\r\n */\r\n AppLinkUtility.routingEnded();\r\n });\r\n }\r\n\r\n private bindErrorListener(): void {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n this.listenTo(channel, EventNames.ERROR, this.handleError);\r\n }\r\n\r\n /**\r\n * Using all the routeLookups passed in during AppRouter initialization\r\n * we create a bunch of channel replies on the shell channel.\r\n * \r\n * Both Core.AppRouter and Core.View use this to reverse engineer\r\n * the application routes and regenerate urls with a list of arguments.\r\n * \r\n * These need to exist on the shell rather than on the Core.AppRouter\r\n * because consumers of this reply wont know which instance of Core.AppRoute\r\n * to call.\r\n */\r\n private bindRouteLookup(): void {\r\n const shellChannel = Radio.channel(CommonChannels.SHELL);\r\n shellChannel.reply(\r\n EventNames.ROUTE_LOOKUP,\r\n (name: string, eventArgs: any[], params: string | ObjectHash): string => {\r\n if (this.routeLookup[name])\r\n return this.routeLookup[name](eventArgs, params);\r\n\r\n return '';\r\n },\r\n this\r\n );\r\n }\r\n\r\n public addRouteLookup(name: string, func: () => string): void {\r\n this.routeLookup[name] = func;\r\n }\r\n\r\n public registerApplication(application: typeof BaseApplication, options?: ObjectHash): this {\r\n this.applications.push(new ApplicationMeta(application, options));\r\n return this;\r\n }\r\n\r\n public getGlobalRadioChannels(): ObjectHash {\r\n return CommonChannels;\r\n }\r\n\r\n public isNavLocked(): boolean {\r\n return this.shellState.navLock;\r\n }\r\n\r\n public start(options?: any): void {\r\n /**\r\n * We ensure options is at least an empty object\r\n * so that any start up steps can add to it asyncronously\r\n * (For example adding the version number from a DataService)\r\n */\r\n options || (options = {});\r\n this.runInitializationSteps(this, (shell: Shell, next: InitializationStep) => {\r\n this.runStartUpSteps(this, options, (shell1: Shell, options1: any, next1: StartUpSet) => {\r\n super.start(options);\r\n });\r\n });\r\n }\r\n\r\n public hasActiveRoute(): boolean {\r\n return this.shellState.activeRoute;\r\n }\r\n\r\n /**\r\n * On Shell start up an instance of each Applications router is instantiated\r\n * so that it can listen to application events or route in the current page\r\n */\r\n public onStart(): void {\r\n _.each(this.applications, meta => {\r\n const options: BaseAppRouterOptions = {\r\n appConstructor: meta.Application,\r\n shell: this,\r\n appOptions: {\r\n /* For some reason region is not optional in \r\n * Marionette.ApplicationOptions when it should be */\r\n region: '',\r\n shell: this,\r\n layoutService: this.layoutService,\r\n ...meta.Options\r\n }\r\n };\r\n\r\n new meta.Application.router(options);\r\n });\r\n\r\n /**\r\n * During each AppRouters initialization, it will have added each of it's \r\n * routes to the route lookup via addRouteLookup(). So we now call \r\n * bindRouteLookup so that the View's appLinks and the AppRouter's\r\n * update route can generate urls.\r\n */\r\n this.bindListeners();\r\n\r\n LocationUtils.StartHistory();\r\n }\r\n\r\n /**\r\n * these are based on node/express middleware: \r\n * https://gist.github.com/darrenscerri/5c3b3dcbe4d370435cfa\r\n * \r\n * Initialization steps should be used to do stuff like register \r\n * services with the instance manager, register analytics clients\r\n * and enrichers, add any data provider middle ware and register layouts\r\n */\r\n public addInitializationStep(fn: InitializationStep): Shell {\r\n this.runInitializationSteps = ((stack: any) => (ev: any, next: any) =>\r\n stack(ev, () => fn(ev, next)))(this.runInitializationSteps);\r\n\r\n return this;\r\n }\r\n\r\n private runInitializationSteps(shell: Shell, next: any): void {\r\n next(shell);\r\n }\r\n\r\n public addStartUpStep(fn: StartUpSet): Shell {\r\n this.runStartUpSteps = ((stack: any) => (ev: any, options: any, next: any) =>\r\n stack(ev, options, () => fn(ev, options, next)))(this.runStartUpSteps);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Start up steps should be used to inject options into the shell\r\n * or run any other code that we want to run just before the application starts\r\n */\r\n private runStartUpSteps(shell: Shell, options: any, next: any): void {\r\n next(shell, options);\r\n }\r\n\r\n public registerLayout(name: string, layout: typeof BaseLayoutView): Shell {\r\n this.layoutService.registerLayout(name, layout);\r\n return this;\r\n }\r\n\r\n private errorHandlers: ErrorHandler[];\r\n\r\n public registerErrorHandler<T extends BaseError>(\r\n errorType: Function & { prototype: T }, handler: (error: T) => void\r\n ): Shell {\r\n if (!errorType) {\r\n ErrorHelper.throw(new CoreError('An error must have a name in order to register a handler for it.'));\r\n }\r\n\r\n if (_.any(this.errorHandlers, eh => eh.errorType === errorType))\r\n ErrorHelper.throw(new CoreError(`An error handler for ${errorType.prototype.name} has already been defined.`));\r\n\r\n this.errorHandlers.push({ errorType, handler });\r\n\r\n return this;\r\n }\r\n\r\n public handleError(error: BaseError): void {\r\n const errorHandler = _.find(this.errorHandlers, eh => error instanceof eh.errorType);\r\n if (errorHandler && errorHandler.handler)\r\n errorHandler.handler(error);\r\n }\r\n\r\n public store: Store;\r\n public registerStore(store: Store): void {\r\n this.store = store;\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","export { AppLink, AppLinkOptions, AppLinkHash, AppLinkHelper, AppLinkUtility } from './AppLink';\r\nexport { BaseApplication as Application } from './BaseApplication';\r\nexport { BaseAppRouter as AppRouter, ExecuteRouteOptions } from './BaseAppRouter';\r\nexport { BaseBehavior as Behavior } from './BaseBehavior';\r\nexport { BaseCollection as Collection } from './BaseCollection';\r\nexport {\r\n BaseCollectionView as CollectionView,\r\n BaseCollectionViewOptions as CollectionViewOptions,\r\n BaseCollectionView as ComponentCollection,\r\n BaseCollectionViewOptions as ComponentCollectionOptions,\r\n} from './BaseCollectionView';\r\nexport { BaseError as Error, ErrorHelper, SilentError } from './BaseError';\r\nexport { BaseLayoutView as LayoutView, BaseLayoutViewOptions as LayoutViewOptions } from './BaseLayoutView';\r\nexport {\r\n BaseNestedModel as NestedModel,\r\n BaseNestedModelOptions as NestedModelOptions\r\n} from './BaseNestedModel';\r\nexport {\r\n BaseService as Service,\r\n BaseServiceOptions as ServiceOptions\r\n} from './BaseService';\r\nexport { BaseModel as Model } from './BaseModel';\r\nexport {\r\n BaseView as View,\r\n BaseViewOptions as ViewOptions ,\r\n BaseComponent as Component,\r\n BaseViewOptions as ComponentOptions,\r\n RequiredResourceDefinition, RequiredResourceHash\r\n} from './BaseView';\r\nexport { EventNames } from './EventNames';\r\nexport { LayoutService, LayoutOptions } from './LayoutService';\r\nexport { Middleware, MiddlewareFunction, MiddlewareNext } from './Middleware';\r\nexport { LocationUtils } from './LocationUtils';\r\nexport { Shell } from './Shell';\r\nexport * from './Types';\r\n","export enum DataServiceErrorType {\r\n Unknown, // ??\r\n BadRequest, // 400\r\n Unauthorized, // 401\r\n Forbidden, // 403\r\n NotFound, // 404\r\n InternalServer // 500\r\n}","export enum HttpStatus {\r\n Ok = 200,\r\n NoContent = 204,\r\n BadRequest = 400,\r\n Unauthorized = 401,\r\n Forbidden = 403,\r\n NotFound = 404,\r\n Conflict = 409,\r\n InternalServer = 500\r\n}","export enum HttpVerbs {\r\n GET = 'GET',\r\n POST = 'POST',\r\n PUT = 'PUT',\r\n DELETE = 'DELETE'\r\n}\r\n","import { BaseError } from 'libs/common/backbone/core/BaseError';\r\n\r\nexport class DevError extends BaseError {\r\n public get name(): string {\r\n return 'DevError';\r\n }\r\n}","import * as Core from './core';\r\n\r\nexport { Core };\r\n","import { DataServiceErrorType } from 'libs/common/backbone/enums/DataServiceErrorType';\r\n\r\nexport interface DataServiceError {\r\n type: DataServiceErrorType;\r\n message: string;\r\n code: number;\r\n}\r\n\r\nexport const DefaultDataServiceError: DataServiceError = {\r\n type: DataServiceErrorType.Unknown,\r\n message: '',\r\n code: 0\r\n};\r\n","import * as React from 'react';\r\nimport * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport { AppLink } from 'libs/common/backbone/core/AppLink';\r\nimport { BaseView } from 'libs/common/backbone/core/BaseView';\r\nimport { BaseCollectionView } from 'libs/common/backbone/core/BaseCollectionView';\r\nimport { BaseCollection } from 'libs/common/backbone/core/BaseCollection';\r\nimport { BaseModel } from 'libs/common/backbone/core/BaseModel';\r\nimport { BaseComponent } from 'libs/common/backbone/core/BaseView';\r\nimport { ViewCtor } from 'libs/common/backbone/core/Types';\r\nimport { BaseService, BaseServiceOptions } from 'libs/common/backbone/core/BaseService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nexport enum AlertType {\r\n Success = 'success',\r\n Warning = 'warning',\r\n Fail = 'danger',\r\n Info = 'info'\r\n}\r\n\r\nexport enum DefaultAlertHeading {\r\n Success = 'Success! 🙌',\r\n Warning = 'Whoops...',\r\n Fail = 'Oops...',\r\n Info = 'FYI'\r\n}\r\n\r\nexport interface BaseAlert {\r\n id?: string;\r\n type: AlertType;\r\n heading: string;\r\n message?: string;\r\n appLink?: AppLink;\r\n appLinkText?: string;\r\n appLinkClassName?: string;\r\n timeout?: number;\r\n}\r\n\r\nexport interface DefaultAlertCallback {\r\n (message?: string, options?: ObjectHash): void;\r\n}\r\n\r\nexport interface BaseAlertOptions {\r\n useXHR: boolean;\r\n}\r\n\r\ntype View = BaseView | BaseCollectionView | BaseComponent;\r\n\r\ninterface AlertProps {\r\n alerts: BaseAlert[];\r\n removeAlert: (id: string) => void;\r\n}\r\n\r\nexport interface BaseAlertServiceOptions extends BaseServiceOptions {\r\n maxAlerts?: number;\r\n defaultSuccessAlert: BaseAlert;\r\n defaultErrorAlert: BaseAlert;\r\n alertViewCtor?: ViewCtor<View> | ((props: AlertProps) => React.ReactElement);\r\n}\r\n\r\nexport class BaseAlertService extends BaseService {\r\n private options: BaseAlertServiceOptions;\r\n private alertCollection: BaseCollection;\r\n\r\n public constructor(options: BaseAlertServiceOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.alertCollection = new BaseCollection();\r\n\r\n this.listenTo(CommonChannels.ALERT, 'remove:alert', this.removeAlert);\r\n\r\n this.showAlerts();\r\n }\r\n\r\n public get name(): string {\r\n return CommonServices.ALERT;\r\n }\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n maxAlerts: 3\r\n };\r\n }\r\n\r\n /**\r\n * As it's not known which application is currently in scope,\r\n * we emit a render event to construct the alert collection view\r\n * if required. If the current application already has a alert\r\n * view rendered, it will simply be ignored.\r\n */\r\n private showAlerts(): void {\r\n const channel = Radio.channel(CommonChannels.ALERT);\r\n\r\n let options = { collection: this.alertCollection };\r\n\r\n if (this.options.alertViewCtor)\r\n options = _.extend({}, options, { ctor: this.options.alertViewCtor });\r\n\r\n channel.trigger('show:alert', options);\r\n }\r\n\r\n public removeAlert(id: string): void {\r\n this.alertCollection.remove(id);\r\n\r\n this.showAlerts();\r\n }\r\n\r\n public createAlert(alertData: BaseAlert): void {\r\n if (this.alertCollection.length === this.options.maxAlerts)\r\n this.alertCollection.shift();\r\n\r\n if (!alertData.id)\r\n alertData = _.extend({}, alertData, { id: this.generateUniqueAlertId() });\r\n\r\n this.alertCollection.push(new BaseModel(alertData));\r\n\r\n this.showAlerts();\r\n }\r\n\r\n public clearAllAlerts(): void {\r\n this.alertCollection.reset(null);\r\n }\r\n\r\n public success(successAlert: string | BaseAlert | BaseAlertOptions): DefaultAlertCallback {\r\n // Construct alert object from string\r\n if (typeof successAlert === 'string')\r\n return _.bind(() =>\r\n this.createAlert(_.extend({}, this.options.defaultSuccessAlert, { message: successAlert })), this);\r\n\r\n // Construct alert object from our XHR response\r\n if ((successAlert as BaseAlertOptions).useXHR) {\r\n return _.bind((data: any, textStatus: any) =>\r\n this.createAlert(_.extend({}, this.options.defaultSuccessAlert, { message: textStatus })), this);\r\n }\r\n\r\n // Use alert passed as an argument \r\n return _.bind(() => this.createAlert(_.extend({}, this.options.defaultSuccessAlert, successAlert)), this);\r\n }\r\n\r\n public error(errorAlert: string | BaseAlert | BaseAlertOptions): DefaultAlertCallback {\r\n // Construct alert object from string\r\n if (typeof errorAlert === 'string')\r\n return _.bind(() =>\r\n this.createAlert(_.extend({}, this.options.defaultErrorAlert, { message: errorAlert })), this);\r\n\r\n // Construct alert object from our XHR response\r\n if ((errorAlert as BaseAlertOptions).useXHR) {\r\n return _.bind((error: DataServiceError) =>\r\n this.createAlert(_.extend({}, this.options.defaultErrorAlert, { message: error.message })), this);\r\n }\r\n\r\n // Use alert passed as an argument \r\n return _.bind(() => this.createAlert(_.extend({}, this.options.defaultErrorAlertIL_DEFAULT, errorAlert)), this);\r\n }\r\n\r\n private generateUniqueAlertId(): string {\r\n return _.uniqueId('alert_');\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Cursors, OffsetPagination, LegacyPagination } from 'libs/common/backbone/interfaces/Pagination';\r\nimport { DataProvider } from 'libs/common/backbone/interfaces/DataProvider';\r\nimport { DataServiceGetRequest, DataServiceCreateRequest, DataServiceUpdateRequest, DataServiceDeleteRequest } from 'libs/common/backbone/interfaces/DataServiceRequests';\r\nimport { DataCache } from 'libs/common/backbone/interfaces/DataCache';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\n\r\nimport { BaseDataServiceRequest, DataServiceCacheOptions, DataServiceRequestOptions, RequestSignatures, DataServiceClearAndGetRequest } from 'libs/common/backbone/interfaces/DataServiceRequests';\r\nimport { ChainableDataService } from 'libs/common/backbone/interfaces/ChainableDataService';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { BaseAlertService } from './BaseAlertService';\r\n\r\n\r\nexport interface BaseDataServiceOptions {\r\n dataProvider: DataProvider;\r\n cache: DataCache;\r\n bootstrapData?: ObjectHash;\r\n defaultErrorHandler?: (...args: any[]) => any;\r\n alertService: BaseAlertService;\r\n}\r\n\r\nexport class BaseDataService extends BaseService {\r\n private bootstrapData: ObjectHash;\r\n\r\n /**\r\n * This is what is used to actually fetch the data.\r\n * This can be an AjaxDataProvider, a SignalRDataProvider\r\n * or a LocalStorageDataProvider.\r\n */\r\n private dataProvider: DataProvider;\r\n\r\n /**\r\n * Store fetched data.\r\n */\r\n private cache: DataCache;\r\n\r\n /**\r\n * Maintain a hash of dataRequestSignatures to ensure\r\n * that we only bind listeners for the first data event\r\n * for a given eventprefix. \r\n */\r\n private dataRequestSignatures: RequestSignatures;\r\n\r\n /**\r\n * Default errorHandler attached as a callback to the errorEvent fired on the dataProvider's dataChannel.\r\n * Will not be bound if an alternative errorHandler is passed in as an option when making a data request\r\n * or if false is passed in as the errorHandler option.\r\n */\r\n private defaultErrorHandler: (...args: any[]) => any;\r\n\r\n /**\r\n * A reference to the consuming applications alert service.\r\n */\r\n protected alertService: BaseAlertService;\r\n\r\n /**\r\n * Specify the properties you want to be\r\n * taken from `options` and added to the context.\r\n */\r\n public props: string[];\r\n\r\n /**\r\n * The default properties that will be taken\r\n * from `options` and added to the context.\r\n */\r\n private get defaultProps(): string[] {\r\n return [ 'dataProvider', 'cache', 'bootstrapData', 'defaultErrorHandler', 'alertService' ];\r\n }\r\n\r\n constructor(options: BaseDataServiceOptions) {\r\n super(options);\r\n\r\n if (!_.result(this, 'name'))\r\n ErrorHelper.throw(new DevError(\r\n 'Must provide a name when extending BaseDataService'\r\n ));\r\n\r\n if (!_.result(this, 'channelName'))\r\n ErrorHelper.throw(new DevError(\r\n `Must provide a channelName for ${_.result(this, 'name')}`\r\n ));\r\n\r\n const props = [ ...this.defaultProps, ...(this.props || []) ];\r\n this.dataRequestSignatures = {};\r\n\r\n this.mergeOptions(options, props);\r\n }\r\n\r\n protected getCursors(cacheKey: string): Cursors {\r\n const cachedObj = this.cache.get(cacheKey);\r\n return cachedObj ? cachedObj.cursors : {};\r\n }\r\n\r\n protected clearCacheAndGet<T>(options: DataServiceClearAndGetRequest<T>): void {\r\n const {\r\n callback, errorCallback, eventPrefix\r\n } = options;\r\n\r\n const { syncEvent, errorEvent } = this.getEventNames(eventPrefix);\r\n\r\n const cachedObj = this.cache.get(eventPrefix);\r\n\r\n /**\r\n * If there is already an open request, simply bind the callback\r\n */\r\n if (cachedObj && cachedObj.openRequest) {\r\n\r\n const onSuccess = (data: any) => {\r\n if (_.isFunction(errorCallback))\r\n this.stopListening(this.getChannel(), errorEvent, errorCallback);\r\n\r\n _.isFunction(callback) && callback(data);\r\n };\r\n\r\n\r\n const onError = () => {\r\n if (_.isFunction(callback))\r\n this.stopListening(this.getChannel(), syncEvent, callback);\r\n\r\n _.isFunction(errorCallback) && errorCallback();\r\n };\r\n\r\n this.listenToOnce(this.getChannel(), syncEvent, onSuccess);\r\n this.listenToOnce(this.getChannel(), errorEvent, onError);\r\n\r\n return;\r\n }\r\n\r\n this.cache.remove(options.eventPrefix);\r\n this.get<T>(options);\r\n }\r\n\r\n protected get<T>(options: DataServiceGetRequest<T>): T {\r\n const {\r\n callback, errorCallback, eventPrefix, resource, formatData,\r\n expiryTime, successHandler, errorHandler, bootstrapName\r\n } = options;\r\n\r\n const {\r\n syncEvent, requestEvent, successEvent, errorEvent\r\n } = this.getEventNames(eventPrefix);\r\n\r\n const channel = this.getChannel();\r\n const timestamp = this.currentTimestamp();\r\n\r\n /**\r\n * If we have data bootstrapped in load it into the cache so \r\n * we don't fetch the first time\r\n */\r\n if (this.bootstrapData && this.bootstrapData[bootstrapName]) {\r\n this.cacheData(eventPrefix, this.bootstrapData[bootstrapName], formatData, { openRequest: false, timestamp });\r\n delete this.bootstrapData[bootstrapName];\r\n }\r\n\r\n const cachedObj = this.cache.get(eventPrefix);\r\n\r\n let cachedData: any;\r\n\r\n if (cachedObj)\r\n cachedData = cachedObj.data;\r\n\r\n const hasOpenRequest = cachedObj && cachedObj.openRequest;\r\n const isExpired = this.isExpired(eventPrefix, expiryTime);\r\n\r\n /**\r\n * If there is an open request for the current event prefix\r\n * bind a listener to fire the callback once we have our data.\r\n */\r\n if (hasOpenRequest) {\r\n const onSuccess = (data: any) => {\r\n if (_.isFunction(errorCallback))\r\n this.stopListening(this.getChannel(), errorEvent, errorCallback);\r\n\r\n _.isFunction(callback) && callback(data);\r\n };\r\n\r\n const onError = () => {\r\n if (_.isFunction(callback))\r\n this.stopListening(this.getChannel(), syncEvent, callback);\r\n\r\n _.isFunction(errorCallback) && errorCallback();\r\n };\r\n\r\n this.listenToOnce(channel, syncEvent, onSuccess);\r\n this.listenToOnce(channel, errorEvent, onError);\r\n }\r\n\r\n /**\r\n * If we have not yet requested the data, the data is stale, \r\n * or the data has been pushed out of our cache. We request the data.\r\n */\r\n if (!this.cache.has(eventPrefix) || isExpired) {\r\n\r\n channel.trigger(requestEvent);\r\n\r\n /**\r\n * Set up data listeners to trigger once the read call completes\r\n */\r\n this.listenToResponse({\r\n eventPrefix,\r\n formatData,\r\n cacheOptions: { timestamp },\r\n callback,\r\n errorCallback,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n /**\r\n * We load the cache with the timestamp and the fact that \r\n * we have an open request, but with no data. This will let\r\n * other calls coming in while a request is open bind\r\n * to the sync event.\r\n */\r\n this.cacheData<T>(eventPrefix, null, null, { openRequest: true, timestamp });\r\n\r\n this.dataProvider.read<T>(resource, {\r\n channel: this.getTransportChannel(),\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n if (cachedData && _.isFunction(callback) && !isExpired)\r\n callback(cachedData);\r\n\r\n if (cachedData)\r\n return cachedData;\r\n }\r\n\r\n protected create<T>(options: DataServiceCreateRequest<T>): void {\r\n const {\r\n eventPrefix, resource, data, formatData, callback, errorCallback,\r\n invalidationKeys, successHandler, errorHandler\r\n } = options;\r\n\r\n const {\r\n requestEvent, successEvent, errorEvent\r\n } = this.getEventNames(options.eventPrefix);\r\n\r\n const channel = this.getChannel();\r\n const dataChannel = this.getTransportChannel();\r\n\r\n channel.trigger(requestEvent);\r\n\r\n this.listenToResponse({\r\n eventPrefix,\r\n formatData,\r\n invalidationKeys,\r\n callback,\r\n errorCallback,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n this.dataProvider.create<T>(resource, data, {\r\n channel: dataChannel,\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n protected update<T>(options: DataServiceUpdateRequest<T>): void {\r\n const {\r\n data, callback, errorCallback, resource, formatData, eventPrefix,\r\n invalidationKeys, errorHandler, successHandler\r\n } = options;\r\n\r\n const {\r\n requestEvent, successEvent, errorEvent\r\n } = this.getEventNames(options.eventPrefix);\r\n\r\n const channel = this.getChannel();\r\n const dataChannel = this.getTransportChannel();\r\n\r\n channel.trigger(requestEvent);\r\n\r\n this.listenToResponse({\r\n eventPrefix,\r\n formatData,\r\n invalidationKeys,\r\n callback,\r\n errorCallback,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n this.dataProvider.update<T>(resource, data, {\r\n channel: dataChannel,\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n protected delete(options: DataServiceDeleteRequest): void {\r\n const {\r\n eventPrefix, resource, callback, errorCallback, invalidationKeys, successHandler, errorHandler\r\n } = options;\r\n\r\n const { successEvent, errorEvent } = this.getEventNames(eventPrefix);\r\n\r\n const dataChannel = this.getTransportChannel();\r\n const cacheOptions: DataServiceCacheOptions = { noCache: true, clearCacheKey: true };\r\n\r\n this.listenToResponse({\r\n eventPrefix,\r\n invalidationKeys,\r\n callback,\r\n errorCallback,\r\n cacheOptions,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n this.dataProvider.delete(resource, {\r\n channel: dataChannel,\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n private listenToResponse<T>(options: DataServiceRequestOptions): void {\r\n const {\r\n eventPrefix, formatData,\r\n callback, errorCallback,\r\n successHandler, errorHandler,\r\n invalidationKeys, cacheOptions = {}\r\n } = options;\r\n\r\n const {\r\n syncEvent, requestEvent,\r\n successEvent, errorEvent,\r\n successAlertEvent, errorAlertEvent\r\n } = this.getEventNames(eventPrefix);\r\n\r\n const appChannel = this.getChannel();\r\n const dataChannel = this.getTransportChannel();\r\n const alertChannel = this.getAlertChannel();\r\n\r\n if (_.isFunction(callback))\r\n this.listenToOnce(appChannel, syncEvent, callback);\r\n\r\n if (_.isFunction(errorCallback))\r\n this.listenToOnce(appChannel, errorEvent, errorCallback);\r\n\r\n /**\r\n * Bind Alert handlers to the dataChannel\r\n */\r\n\r\n this.stopListening(alertChannel, successAlertEvent);\r\n this.stopListening(alertChannel, errorAlertEvent);\r\n\r\n if (_.isFunction(successHandler))\r\n this.listenToOnce(alertChannel, successAlertEvent, successHandler);\r\n\r\n if (_.isFunction(errorHandler))\r\n this.listenToOnce(alertChannel, errorAlertEvent, errorHandler);\r\n\r\n /**\r\n * AlertService.error({ useXHR: true }) will be bound as the errorHandler unless an\r\n * alternative error handler was passed in or if false is passed in.\r\n */\r\n if (!_.isFunction(errorHandler) && errorHandler !== false && _.isFunction(this.defaultErrorHandler))\r\n this.listenToOnce(alertChannel, errorAlertEvent, this.defaultErrorHandler);\r\n\r\n /**\r\n * Check whether we've already bound the request signature for the \r\n * current data event. We only need to setup the listeners for the first\r\n * request for a given eventprent.\r\n */\r\n if (this.hasRequestSignature(eventPrefix))\r\n return;\r\n\r\n /**\r\n * Subsequent data event requests that match the same\r\n * signature will only have the app-level events bound and will listen\r\n * to the transport channel event that was previously bound.\r\n */\r\n this.setRequestSignature(eventPrefix);\r\n\r\n /**\r\n * All request methods currently utilise this callback once the DataProvider\r\n * triggers the successEvent.\r\n */\r\n const onSuccess = (data: any, ...args: any[]) => {\r\n /**\r\n * Unbind errorCallback\r\n */\r\n this.stopListening(appChannel, errorEvent, errorCallback);\r\n\r\n alertChannel.trigger(successAlertEvent, data, ...args);\r\n\r\n const formattedData = cacheOptions.noCache\r\n ? this.formatData<T>(data, formatData)\r\n : this.cacheData<T>(eventPrefix, data, formatData);\r\n\r\n if (cacheOptions.clearCacheKey)\r\n this.cache.remove(eventPrefix);\r\n\r\n /**\r\n * Let everyone know their pie is ready.\r\n */\r\n appChannel.trigger(syncEvent, formattedData);\r\n\r\n if (invalidationKeys && invalidationKeys.length)\r\n this.cache.invalidate(invalidationKeys, (cacheKey: string) => appChannel.trigger(`${cacheKey}:invalidate`));\r\n };\r\n\r\n /**\r\n * All request methods will utilise this callback once the DataProvider\r\n * triggers the errorEvent.\r\n */\r\n const onError = (...args: any[]) => {\r\n /**\r\n * Unbind success callback\r\n */\r\n this.stopListening(appChannel, syncEvent, callback);\r\n\r\n const parsedError = this.dataProvider.parseError(...args);\r\n alertChannel.trigger(errorAlertEvent, parsedError);\r\n appChannel.trigger(errorEvent, parsedError);\r\n\r\n if (cacheOptions.noCache)\r\n return;\r\n\r\n /**\r\n * Cache the null response so that openRequest\r\n * will be updated from true to false.\r\n */\r\n this.cacheData<T>(eventPrefix, null, null);\r\n };\r\n\r\n /**\r\n * Listen on data channel for responses from our\r\n * data provider.\r\n */\r\n this.listenTo(dataChannel, successEvent, onSuccess);\r\n this.listenTo(dataChannel, errorEvent, onError);\r\n }\r\n\r\n private cacheData<T>(cacheKey: string, data: any,\r\n formatData: (data: any) => any, options: DataServiceCacheOptions = {}): T {\r\n\r\n let { openRequest = false, timestamp } = options;\r\n\r\n if (!timestamp)\r\n timestamp = this.currentTimestamp();\r\n\r\n const cursors = this.processPagination(data);\r\n\r\n /**\r\n * Format and cache out data.\r\n */\r\n const formattedData = this.formatData<T>(data, formatData);\r\n\r\n this.cache.set(cacheKey, {\r\n data: formattedData,\r\n timestamp,\r\n cursors,\r\n openRequest\r\n });\r\n\r\n return formattedData;\r\n }\r\n\r\n private processPagination(data: ObjectHash): Cursors {\r\n if (!data) return;\r\n\r\n const { pagination } = data;\r\n\r\n if (!pagination)\r\n return;\r\n\r\n if (pagination.cursors)\r\n return pagination.cursors;\r\n\r\n if (!_.isUndefined(pagination.offset) && !_.isUndefined(pagination.pageSize))\r\n return this.convertOffsetPaginationToCursors(pagination);\r\n\r\n if (pagination.page)\r\n return this.convertLegacyPaginationToCursors(pagination);\r\n }\r\n\r\n private formatData<T>(data: any, formatData: (data: any) => any): T {\r\n return _.isFunction(formatData) ? formatData(data) : data;\r\n }\r\n\r\n /**\r\n * Used to syncronously execute dataService operations.\r\n * This will mainly be used if we need to update a model\r\n * or collection after an api call.\r\n */\r\n protected chain(): ChainableDataService {\r\n /**\r\n * Used as a FIFO buffer with pop and shift.\r\n */\r\n const callbacks: Function[] = [];\r\n\r\n const safeRun = (callback: Function, data?: any) => {\r\n if (_.isFunction(callback))\r\n callback(data);\r\n };\r\n\r\n const base = (options: BaseDataServiceRequest, operation: string) => {\r\n\r\n const callback = () => {\r\n /**\r\n * Store reference to the original callback\r\n */\r\n const oldCallback = options.callback;\r\n\r\n /**\r\n * Replace the original callback with a callback\r\n * that calls both the orignal callback and the \r\n * next operation in the stack.\r\n */\r\n options.callback = (data: any) => {\r\n safeRun(oldCallback, data);\r\n safeRun(callbacks.shift());\r\n };\r\n\r\n /**\r\n * Run out operation with our new options\r\n */\r\n (this as any)[operation](options);\r\n };\r\n\r\n /**\r\n * Push operation into the FIFO stack\r\n */\r\n callbacks.push(callback);\r\n\r\n return chainable;\r\n };\r\n\r\n /**\r\n * We return this object at the end of each function\r\n * in order to enable continuous chaining\r\n */\r\n const chainable = {\r\n func(callback: any): ChainableDataService {\r\n callbacks.push(() => {\r\n callback(callbacks.shift() || (() => {}));\r\n });\r\n return chainable;\r\n },\r\n get<T>(options: DataServiceGetRequest<T>): ChainableDataService {\r\n return base(options, 'get');\r\n },\r\n create<T>(options: DataServiceCreateRequest<T>): ChainableDataService {\r\n return base(options, 'create');\r\n },\r\n update<T>(options: DataServiceUpdateRequest<T>): ChainableDataService {\r\n return base(options, 'update');\r\n },\r\n delete(options: DataServiceDeleteRequest): ChainableDataService {\r\n return base(options, 'delete');\r\n },\r\n\r\n /**\r\n * This should be the last thing called when using chain\r\n * and will simply kick off the first function in the FIFO buffer\r\n */\r\n run(): void {\r\n safeRun(callbacks.shift());\r\n }\r\n };\r\n\r\n return chainable;\r\n }\r\n\r\n protected invalidateCache(invalidationKeys?: string[]): void {\r\n if (!invalidationKeys || !invalidationKeys.length)\r\n return;\r\n\r\n this.cache.invalidate(invalidationKeys);\r\n }\r\n\r\n private currentTimestamp(): number {\r\n return new Date().valueOf();\r\n }\r\n\r\n private isExpired(key: string, expiryTime: number): boolean {\r\n if (!expiryTime)\r\n return false;\r\n\r\n const cachedObj = this.cache.get(key);\r\n\r\n if (!cachedObj || !cachedObj.timestamp) return true;\r\n\r\n const millisecondMultiplier = 1000;\r\n\r\n const lastTime = cachedObj.timestamp;\r\n const expiryTimeMilliseconds = expiryTime * millisecondMultiplier;\r\n\r\n return lastTime < (this.currentTimestamp() - expiryTimeMilliseconds);\r\n }\r\n\r\n private getEventNames(eventPrefix: string): {[key: string]: string} {\r\n return {\r\n syncEvent: `${eventPrefix}:sync`,\r\n requestEvent: `${eventPrefix}:request`,\r\n successEvent: `${eventPrefix}:success`,\r\n errorEvent: `${eventPrefix}:error`,\r\n successAlertEvent: `${eventPrefix}:success:alert`,\r\n errorAlertEvent: `${eventPrefix}:error:alert`,\r\n };\r\n }\r\n\r\n private getTransportChannel(): Radio.Channel {\r\n return Radio.channel(`${this.channelName}:transport`);\r\n }\r\n\r\n private getAlertChannel(): Radio.Channel {\r\n return Radio.channel(`${this.channelName}:alert`);\r\n }\r\n\r\n private setRequestSignature(signature: string): void {\r\n this.dataRequestSignatures[signature] = signature;\r\n }\r\n\r\n private hasRequestSignature(signature: string): boolean {\r\n return !!this.dataRequestSignatures[signature];\r\n }\r\n\r\n private convertOffsetPaginationToCursors(pagination: OffsetPagination): Cursors {\r\n const { offset, pageSize, totalItems } = pagination;\r\n\r\n const nextPage = totalItems > 0 && offset < totalItems && offset + pageSize;\r\n const prevPage = totalItems > 0 && offset > 0 && Math.max(offset - pageSize, 0);\r\n\r\n let cursors: ObjectHash = {};\r\n\r\n if (nextPage && nextPage < totalItems)\r\n cursors.next = nextPage.toString();\r\n\r\n if (_.isNumber(prevPage))\r\n cursors.previous = prevPage.toString();\r\n\r\n if (_.isEmpty(cursors))\r\n return;\r\n\r\n return cursors as Cursors;\r\n }\r\n\r\n private convertLegacyPaginationToCursors(pagination: LegacyPagination): Cursors {\r\n const { page, totalPages } = pagination;\r\n\r\n const nextPage = _.isNumber(page) && page > 0 && page < totalPages && page + 1;\r\n const prevPage = _.isNumber(page) && page > 1 && page - 1;\r\n\r\n let cursors: ObjectHash = {};\r\n\r\n if (nextPage && nextPage <= totalPages)\r\n cursors.next = nextPage.toString();\r\n\r\n if (prevPage)\r\n cursors.previous = prevPage.toString();\r\n\r\n if (_.isEmpty(cursors))\r\n return;\r\n\r\n return cursors as Cursors;\r\n }\r\n}\r\n","import { ObjectHash } from 'backbone';\r\n\r\nclass StaticEnvironmentVariables {\r\n private static instance: StaticEnvironmentVariables;\r\n private variables: ObjectHash;\r\n\r\n constructor() {\r\n this.variables = {};\r\n }\r\n\r\n public static get Instance(): StaticEnvironmentVariables {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public get name(): string {\r\n return 'EnvironmentVariables';\r\n }\r\n\r\n public get isDevelopment(): boolean {\r\n return this.variables.isDevelopment;\r\n }\r\n\r\n public get(name: string): any {\r\n return this.variables[name];\r\n }\r\n\r\n public setUpVariables(variables: ObjectHash): void {\r\n this.variables = variables;\r\n }\r\n}\r\n\r\nexport const EnvironmentVariables = StaticEnvironmentVariables.Instance;","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseDataServiceOptions, BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { BaseAlertService } from './BaseAlertService';\r\n\r\ninterface DataServiceConstructor {\r\n new (options: BaseDataServiceOptions): BaseDataService;\r\n}\r\n\r\ninterface DataServiceInstanceOptions {\r\n cache: string;\r\n dataProvider: string;\r\n bootstrapData?: ObjectHash;\r\n defaultErrorHandler?: (...args: any[]) => any;\r\n alertService: BaseAlertService;\r\n}\r\n\r\nclass StaticInstanceManager extends BaseService {\r\n private static instance: StaticInstanceManager;\r\n\r\n private constructors: {[name: string]: () => Marionette.Object};\r\n private destructors: {[name: string]: () => void};\r\n private instances: {[name: string]: any};\r\n private singletonInstances: {[name: string]: any};\r\n private referenceCounts: {[name: string]: number};\r\n\r\n private constructor() {\r\n super();\r\n\r\n this.constructors = {};\r\n this.destructors = {};\r\n this.instances = {};\r\n this.singletonInstances = {};\r\n this.referenceCounts = {};\r\n }\r\n\r\n public get name(): string {\r\n return 'InstanceManager';\r\n }\r\n\r\n public static get Instance(): StaticInstanceManager {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public registerDataService(\r\n ctor: DataServiceConstructor, options: DataServiceInstanceOptions\r\n ): this {\r\n this.validateConstructor(ctor);\r\n\r\n const name = ctor.prototype.name;\r\n\r\n this.referenceCounts[name] = 0;\r\n this.constructors[name] = () => new ctor({\r\n dataProvider: this.getInstance(options.dataProvider),\r\n cache: this.getInstance(options.cache),\r\n bootstrapData: options.bootstrapData,\r\n defaultErrorHandler: options.defaultErrorHandler,\r\n alertService: options.alertService\r\n });\r\n this.destructors[name] = () => {\r\n if (this.instances[name])\r\n this.instances[name].destroy();\r\n else\r\n ErrorHelper.throw(new DevError(`Trying to destroy a ${name} instance that has already been destroyed`));\r\n\r\n this.releaseInstance(options.dataProvider);\r\n this.releaseInstance(options.cache);\r\n };\r\n\r\n return this;\r\n }\r\n\r\n public registerInstance<TInstanceOptions>(ctor: new(...args: any[]) => any, options?: TInstanceOptions): this {\r\n this.validateConstructor(ctor);\r\n\r\n const name = ctor.prototype.name;\r\n\r\n this.referenceCounts[name] = 0;\r\n this.constructors[name] = () => new ctor(options);\r\n this.destructors[name] = () => _.isFunction(this.instances[name].destroy) && this.instances[name].destroy();\r\n\r\n return this;\r\n }\r\n\r\n public registerSingleton(instance: any): this {\r\n const name = instance.name;\r\n\r\n this.singletonInstances[name] = instance;\r\n\r\n return this;\r\n }\r\n\r\n public getInstance<T>(name: string, owner?: Backbone.Events): T {\r\n if (this.singletonInstances[name])\r\n return this.singletonInstances[name];\r\n\r\n if (!this.constructors[name])\r\n ErrorHelper.throw(new DevError(`${name} was not registered with ${this.name}`));\r\n\r\n this.referenceCounts[name]++;\r\n\r\n if (owner)\r\n this.listenTo(owner, 'destroy', () => this.releaseInstance(name));\r\n\r\n if (!this.instances[name]) {\r\n this.instances[name] = this.constructors[name]();\r\n }\r\n\r\n return this.instances[name];\r\n }\r\n\r\n public releaseInstance(name: string): this {\r\n if (!this.instances[name])\r\n return;\r\n\r\n /**\r\n * In scenarios where an application redirects to another application\r\n * within one execution cycle, an instance may be initialized, used to fetch\r\n * data and disposed of, before the instance is requested again, which will leave\r\n * a hanging open fetch request.\r\n *\r\n * By wrapping the below in a setTimeout we ensure any instance clean up\r\n * will always happen at the end of any execution cycle.\r\n */\r\n window.setTimeout(() => {\r\n this.referenceCounts[name]--;\r\n\r\n if (this.referenceCounts[name] < 1) {\r\n this.destructors[name]();\r\n delete this.instances[name];\r\n }\r\n }, 0);\r\n\r\n return this;\r\n }\r\n\r\n private validateConstructor(ctor: new(...args: any[]) => any): void {\r\n const name = ctor.prototype.name;\r\n\r\n if (!name)\r\n ErrorHelper.throw(new DevError(`Classes registered with ${this.name} must have a unique name property.`));\r\n\r\n if (this.constructors[name]) {\r\n ErrorHelper.throw(\r\n new DevError(`A class with the name: ${name} has already been registered with ${this.name}`)\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const InstanceManager = StaticInstanceManager.Instance;","import * as Polyglot from 'node-polyglot';\r\nimport * as _ from 'underscore';\r\nimport * as DOMPurify from 'dompurify';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\n\r\ninterface LanguageInterpolationOptions {\r\n smartCount?: number;\r\n [propName: string]: any;\r\n}\r\n\r\ninterface LanguageConfig {\r\n locale: string;\r\n phrases: ObjectHash;\r\n}\r\n\r\nclass StaticLanguageService extends BaseService {\r\n private static instance: StaticLanguageService;\r\n private polyglot: Polyglot;\r\n\r\n private cache: ObjectHash;\r\n\r\n public static get Instance(): StaticLanguageService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public get name(): string {\r\n return CommonServices.LANGUAGE;\r\n }\r\n\r\n public setConfig(config: LanguageConfig): void {\r\n this.polyglot = new Polyglot({\r\n locale: config.locale,\r\n // TODO: Loading from rootElement is a temp fix. Figure out why this is broke. \r\n phrases: config.phrases.rootElement || config.phrases\r\n });\r\n\r\n this.cache = {};\r\n }\r\n\r\n public getPhrase(namespace: string, phraseKey: string, options?: LanguageInterpolationOptions): string {\r\n const fullKey = `${namespace}.${phraseKey}`;\r\n\r\n /**\r\n * Error handling\r\n */\r\n if (!this.polyglot)\r\n ErrorHelper.throw(new DevError('LanguageService config must be set.'));\r\n\r\n if (!this.polyglot.has(fullKey)) {\r\n if (!EnvironmentVariables.isDevelopment) {\r\n const trackJs = (window as any).trackJs;\r\n\r\n // Log language service errors to track js in production without throwing an execution-breaking error\r\n if (trackJs)\r\n trackJs.console.error(`No phrase set for ${fullKey} in language config`);\r\n\r\n return '';\r\n }\r\n\r\n ErrorHelper.throw(new DevError(`No phrase set for ${fullKey} in language config.`));\r\n }\r\n\r\n if (!options || _.isEmpty(options)) {\r\n const cachedPhrase = this.cache[fullKey];\r\n\r\n if (cachedPhrase)\r\n return cachedPhrase;\r\n\r\n const phrase = this.polyglot.t(fullKey);\r\n this.cache[fullKey] = phrase;\r\n return phrase;\r\n }\r\n\r\n const interpolationOptions = _.omit(options, 'smartCount');\r\n\r\n let sanitizedInterpolationOptions: ObjectHash = {};\r\n for (let key in interpolationOptions) {\r\n sanitizedInterpolationOptions[key] = DOMPurify.sanitize(interpolationOptions[key]);\r\n }\r\n\r\n if (_.isNumber(options.smartCount))\r\n sanitizedInterpolationOptions.smart_count = options.smartCount;\r\n\r\n const cacheKey = `${fullKey}:${_.values({ ...sanitizedInterpolationOptions }).join(':')}`;\r\n const cachedText = this.cache[cacheKey];\r\n\r\n if (cachedText)\r\n return cachedText;\r\n\r\n const text = this.polyglot.t(fullKey, sanitizedInterpolationOptions);\r\n this.cache[cacheKey] = text;\r\n return text;\r\n }\r\n\r\n public encloseNamespace(namespace: string): Function {\r\n return (phraseKey: string, options?: LanguageInterpolationOptions): string => {\r\n return this.getPhrase(namespace, phraseKey, options);\r\n };\r\n }\r\n}\r\n\r\nexport const LanguageService = StaticLanguageService.Instance;","import * as _ from 'underscore';\r\n\r\nimport { ObjectHash } from 'backbone';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { DataCache } from 'libs/common/backbone/interfaces/DataCache';\r\nimport { Caches } from 'libs/common/backbone/constants/Caches';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\n\r\ninterface FifoMemoryCacheOptions {\r\n size: number;\r\n}\r\n\r\nexport class FifoMemoryCache extends BaseService implements DataCache {\r\n private size: number;\r\n private cache: ObjectHash;\r\n private cachedkeys: string[];\r\n\r\n constructor(options: FifoMemoryCacheOptions) {\r\n super();\r\n\r\n this.size = options.size;\r\n this.cache = {};\r\n this.cachedkeys = [];\r\n }\r\n\r\n public get name(): string {\r\n return Caches.Fifo;\r\n }\r\n\r\n private removeCacheKey(cacheKey: string): void {\r\n this.cachedkeys = _.without(this.cachedkeys, cacheKey);\r\n }\r\n\r\n public has(cacheKey: string): boolean {\r\n return !!this.cache[cacheKey];\r\n }\r\n\r\n public get(cacheKey: string): any {\r\n return this.cache[cacheKey];\r\n }\r\n\r\n public set(cacheKey: string, value: any): void {\r\n if (!cacheKey || !value) {\r\n ErrorHelper.throw(new DevError('Must provide a cache key and a value to cache in FifoMemoryCache.'));\r\n }\r\n\r\n /**\r\n * Calling set on an existing key should move it to the front\r\n * of the buffer again.\r\n */\r\n if (this.has(cacheKey))\r\n this.removeCacheKey(cacheKey);\r\n\r\n this.cachedkeys.push(cacheKey);\r\n\r\n this.cache[cacheKey] = value;\r\n\r\n if (this.cachedkeys.length > this.size)\r\n delete this.cache[this.cachedkeys.shift()];\r\n }\r\n\r\n public getOrSet(cacheKey: string, getter: () => any): any {\r\n if (this.has(cacheKey))\r\n return this.get(cacheKey);\r\n\r\n const value = getter();\r\n this.set(cacheKey, value);\r\n return value;\r\n }\r\n\r\n public remove(cacheKey: string): boolean {\r\n if (!this.has(cacheKey))\r\n return false;\r\n\r\n delete this.cache[cacheKey];\r\n this.removeCacheKey(cacheKey);\r\n return true;\r\n }\r\n\r\n public invalidate(cacheKeys: string[], callback?: (cacheKey: string) => void): void {\r\n // Create a an object hash of all the cached keys\r\n const keyHash: ObjectHash = _.object(this.cachedkeys, this.cachedkeys);\r\n let invalidationSet: string[] = [];\r\n\r\n _.each(cacheKeys, (ck: string) => {\r\n // Direct match on the key\r\n if (keyHash[ck])\r\n invalidationSet.push(ck);\r\n\r\n // Find all matches against the given cache key regex\r\n const regex = new RegExp(ck, 'i');\r\n const keysToInvalidate = _.filter(keyHash, (k: string) => regex.test(k));\r\n\r\n // Merge regex matches with direct matches\r\n invalidationSet.push(...keysToInvalidate);\r\n });\r\n\r\n if (!invalidationSet.length)\r\n return;\r\n\r\n invalidationSet = _.uniq(invalidationSet);\r\n\r\n // Delete all matches and remove cache keys\r\n _.each(invalidationSet, ik => {\r\n delete this.cache[ik];\r\n\r\n if (_.isFunction(callback))\r\n callback(ik);\r\n });\r\n\r\n this.cachedkeys = _.without(this.cachedkeys, ...invalidationSet);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { DataServiceError, DefaultDataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\nimport { DataProvider, DataProviderResponseOptions } from 'libs/common/backbone/interfaces/DataProvider';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { DataServiceErrorType } from 'libs/common/backbone/enums/DataServiceErrorType';\r\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\r\nimport { DataServiceErrorHelper } from 'libs/common/backbone/utils/DataServiceErrorHelper';\r\n\r\ninterface MiddlewareCallback {\r\n (data: any, textStatus: any, jqXHR: any): any;\r\n}\r\n\r\ninterface MiddlewareHash {\r\n [name: string]: MiddlewareCallback;\r\n}\r\n\r\ninterface AjaxDataProviderOptions {\r\n dataServiceErrorMessageMappings: ObjectHash;\r\n defaultErrorMessageKey: string;\r\n}\r\n\r\nexport class AjaxDataProvider extends Marionette.Object implements DataProvider {\r\n private successMiddleware: MiddlewareHash;\r\n private errorMiddleware: MiddlewareHash;\r\n private dataServiceErrorMessageMappings: ObjectHash;\r\n private defaultErrorMessageKey: string;\r\n\r\n constructor(options?: AjaxDataProviderOptions) {\r\n super(options);\r\n\r\n $.ajaxSetup({\r\n cache: false,\r\n contentType: 'application/json; charset=utf-8'\r\n });\r\n\r\n this.successMiddleware = {};\r\n this.errorMiddleware = {};\r\n this.dataServiceErrorMessageMappings = options.dataServiceErrorMessageMappings;\r\n this.defaultErrorMessageKey = options.defaultErrorMessageKey;\r\n }\r\n\r\n public get name(): string {\r\n return DataProviders.Ajax;\r\n }\r\n\r\n private parseUrl(url: string): HTMLAnchorElement {\r\n const a = document.createElement('a');\r\n a.href = url;\r\n\r\n if (a.host === '') a.href = a.href;\r\n\r\n return a;\r\n }\r\n\r\n private makeHttps(url: string): string {\r\n const fullUrl = this.parseUrl(url);\r\n\r\n if (fullUrl.protocol === 'http:') fullUrl.protocol = 'https:';\r\n\r\n return fullUrl.href;\r\n }\r\n\r\n private base<T>(\r\n resource: string,\r\n data: T,\r\n method: string,\r\n opts: ObjectHash = {}\r\n ): JQuery.Promise<T> {\r\n method || (method = HttpVerbs.GET);\r\n\r\n const o = _.defaults(opts, { forceHttps: false });\r\n\r\n const options: ObjectHash = {\r\n url: resource,\r\n method: method,\r\n type: method\r\n };\r\n\r\n if (data) {\r\n options.data =\r\n method === HttpVerbs.POST || method === HttpVerbs.PUT\r\n ? JSON.stringify(data)\r\n : data;\r\n }\r\n\r\n if (o.forceHttps) options.url = this.makeHttps(options.url);\r\n\r\n if (o.traditional) options.traditional = o.traditional;\r\n\r\n /** \r\n * jQuery.jqXHR does inherit from JQuery.Promise, but the typings in \r\n * definitelytyped's jQuery are so messed up that casting to any \r\n * is just easier. \r\n * \r\n * I mean there is a JQuery.Promise, JQuery.Promise1, JQuery.Promise2 & JQuery.Promise. Jesus... 🙏\r\n */\r\n const promise = $.ajax(options);\r\n\r\n if (_.keys(this.successMiddleware).length)\r\n promise.done(_.values(this.successMiddleware));\r\n\r\n if (_.keys(this.errorMiddleware).length)\r\n promise.fail(_.values(this.errorMiddleware));\r\n\r\n return promise as any;\r\n }\r\n\r\n public create<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base<T>(resource, obj, HttpVerbs.POST)\r\n .done((data: any, textStatus: any, jqXHR: any) =>\r\n channel.trigger(successEvent, data, textStatus, jqXHR))\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) =>\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown));\r\n }\r\n\r\n public read<T>(resource: string, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base<T>(resource, null, HttpVerbs.GET)\r\n .done((data: any, textStatus: any, jqXHR: any) => {\r\n channel.trigger(successEvent, data, textStatus, jqXHR);\r\n })\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) => {\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown);\r\n });\r\n }\r\n\r\n public update<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base<T>(resource, obj, HttpVerbs.PUT)\r\n .done((data: any, textStatus: any, jqXHR: any) =>\r\n channel.trigger(successEvent, data, textStatus, jqXHR))\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) =>\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown));\r\n }\r\n\r\n public delete(resource: string, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base(resource, null, HttpVerbs.DELETE)\r\n .done((data: any, textStatus: any, jqXHR: any) =>\r\n channel.trigger(successEvent, data, textStatus, jqXHR))\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) =>\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown));\r\n }\r\n\r\n public useMiddleware(name: string, callback: MiddlewareCallback): void {\r\n if (this.successMiddleware[name])\r\n return;\r\n\r\n this.successMiddleware[name] = callback;\r\n }\r\n\r\n public useErrorMiddleware(name: string, callback: MiddlewareCallback): void {\r\n if (this.errorMiddleware[name])\r\n return;\r\n\r\n this.errorMiddleware[name] = callback;\r\n }\r\n\r\n public parseError(jqXHR: JQuery.jqXHR, textStatus: string, errorThrown: any): DataServiceError {\r\n const response = jqXHR.responseJSON;\r\n\r\n const error = DefaultDataServiceError;\r\n\r\n error.code = jqXHR.status;\r\n\r\n error.message = DataServiceErrorHelper.parseErrorMessage(\r\n this.dataServiceErrorMessageMappings, this.defaultErrorMessageKey, response);\r\n\r\n switch (jqXHR.status) {\r\n case 400:\r\n error.type = DataServiceErrorType.BadRequest;\r\n break;\r\n case 401:\r\n error.type = DataServiceErrorType.Unauthorized;\r\n break;\r\n case 403:\r\n error.type = DataServiceErrorType.Forbidden;\r\n break;\r\n case 404:\r\n error.type = DataServiceErrorType.NotFound;\r\n break;\r\n case 500:\r\n error.type = DataServiceErrorType.InternalServer;\r\n break;\r\n }\r\n\r\n return error;\r\n }\r\n}","/**\r\n * Not really for concurrency 😂\r\n * But useful in circumstances where we need to manually wait for\r\n * a sequence of callbacks or other resources to execute and don't \r\n * want the overhead of promises.\r\n */\r\nexport class ConcurrencyHelper {\r\n private value: number;\r\n\r\n constructor(initialValue: number) {\r\n this.value = initialValue;\r\n }\r\n\r\n public increment(): void {\r\n this.value += 1;\r\n }\r\n\r\n public decrement(): void {\r\n this.value -= 1;\r\n }\r\n\r\n public getValue(): number {\r\n return this.value;\r\n }\r\n}\r\n","import { ObjectHash } from 'backbone';\r\n\r\ninterface ApiErrorResponse {\r\n errorCode: string;\r\n errorSubCode: string;\r\n requestUrl: string;\r\n detailedMessage: string;\r\n requestId: string;\r\n data: ObjectHash;\r\n}\r\n\r\nexport const DataServiceErrorHelper: ObjectHash = {\r\n parseErrorMessage(errorMessageMappings: ObjectHash, defaultErrorCode: string, error: ApiErrorResponse): string {\r\n if (!error || !error.errorCode)\r\n return errorMessageMappings[defaultErrorCode];\r\n\r\n let errorMessageKey = `${error.errorCode}`;\r\n\r\n if (error.errorSubCode)\r\n errorMessageKey += `.${error.errorSubCode}`;\r\n\r\n return errorMessageMappings[errorMessageKey] || errorMessageMappings[defaultErrorCode];\r\n }\r\n};","import * as _ from 'underscore';\r\n\r\nexport const FunctionHelper = {\r\n debounce<T extends Function>(fn: T, wait: number, immediate?: boolean): T & _.Cancelable {\r\n return _.debounce<T>(fn, wait, immediate);\r\n },\r\n\r\n throttle<T extends Function>(fn: T, wait: number, options?: _.ThrottleSettings): T & _.Cancelable {\r\n return _.throttle<T>(fn, wait, options);\r\n },\r\n\r\n isFunction(object: any): object is Function {\r\n return _.isFunction(object);\r\n },\r\n\r\n useIdentity<T>(): (...args: any[]) => T {\r\n return _.identity;\r\n },\r\n\r\n memoize<T = Function>(fn: T, hashFn?: (...args: any[]) => string): T {\r\n return _.memoize(fn, hashFn);\r\n }\r\n};","import { ObjectHash } from 'backbone';\r\nimport * as _ from 'underscore';\r\n\r\ninterface FilterParams {\r\n limit?: number;\r\n cursor?: string;\r\n before?: string; // dateCreated upper limit\r\n}\r\n\r\nexport const UrlHelper = {\r\n urlBuilder(base: string, queryStringObj: ObjectHash): string {\r\n const qsValues = _.map(queryStringObj, (value, key) => {\r\n if (key && Array.isArray(value)) {\r\n const params = value.map(v => `${key}=${encodeURIComponent(v)}`);\r\n return params.join('&');\r\n }\r\n\r\n if (key && typeof value !== 'undefined')\r\n return `${key}=${encodeURIComponent(value)}`;\r\n\r\n return '';\r\n });\r\n\r\n const qs = _.reduce(qsValues, (memo, value) => {\r\n if (!value)\r\n return memo;\r\n\r\n if (!memo)\r\n return value;\r\n\r\n return `${memo}&${value}`;\r\n });\r\n\r\n if (qs)\r\n return `${base}?${qs}`;\r\n\r\n return base;\r\n },\r\n\r\n buildFilter(params: FilterParams): string {\r\n let filters: string[] = [];\r\n\r\n if (params.limit)\r\n filters.push(`limit:${params.limit}`);\r\n\r\n if (params.cursor)\r\n filters.push(`page:${params.cursor}`);\r\n\r\n if (params.before)\r\n filters.push(`dateCreated:...${params.before}`);\r\n\r\n if (!filters.length)\r\n return;\r\n\r\n return filters.join(',');\r\n },\r\n\r\n makeHttps(url: string): string {\r\n if (!_.isString(url))\r\n return url;\r\n\r\n if (url.indexOf('http://') === -1) return url;\r\n\r\n url = url.replace('http://', 'https://');\r\n\r\n return url;\r\n },\r\n\r\n safeUrlConcat(baseUrl: string, path: string): string {\r\n if (!baseUrl) return;\r\n\r\n let url = baseUrl;\r\n\r\n if (!baseUrl.endsWith('/'))\r\n url += '/';\r\n\r\n if (!path) return url;\r\n\r\n url += path.startsWith('/')\r\n ? path.slice(1)\r\n : path;\r\n\r\n return url;\r\n }\r\n};","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { BaseApplication } from 'libs/common/backbone/core/BaseApplication';\r\nimport { LayoutOptions } from 'libs/common/backbone/core/LayoutService';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from './ReactLayoutView';\r\n\r\nexport class ReactApplication extends BaseApplication {\r\n protected layout: ReactLayoutView;\r\n protected layoutOptions: LayoutOptions<ReactLayoutViewOptions>;\r\n\r\n protected onShowAlert(options: ObjectHash): void {\r\n if (!this.layoutOptions.options.alertRegion)\r\n return;\r\n\r\n const { ctor: AlertList, collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(this.layoutOptions.options.alertRegion,\r\n <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport { BaseLayoutViewOptions, BaseLayoutView } from 'libs/common/backbone/core/BaseLayoutView';\r\n\r\nexport interface ReactLayoutViewOptions extends BaseLayoutViewOptions {\r\n alertRegion?: string;\r\n}\r\n\r\nexport class ReactLayoutView extends BaseLayoutView {\r\n protected options: ReactLayoutViewOptions;\r\n\r\n private isReactComponent(component: any): boolean {\r\n return React && React.isValidElement(component);\r\n }\r\n\r\n public showChildView(regionName: string, component: any): void {\r\n if (this.isReactComponent(component)) {\r\n this.showChildReactComponent(regionName, component);\r\n return;\r\n }\r\n }\r\n\r\n private showChildReactComponent(regionName: string, component: any): void {\r\n if (this.isAttached()) {\r\n this.renderChildReactComponent(regionName, component);\r\n return;\r\n }\r\n\r\n this.listenToOnce(this, 'attach', () => this.renderChildReactComponent(regionName, component));\r\n }\r\n\r\n private renderChildReactComponent(regionName: string, component: any): void {\r\n const region = this.getRegion(regionName);\r\n\r\n const el = this.$el.find(region.el);\r\n\r\n if (!el || !el.length)\r\n return;\r\n\r\n /**\r\n * Trigger 'before:show' on region.\r\n */\r\n region.trigger('before:show');\r\n\r\n /**\r\n * Trigger 'show' on region once the component has been rendered.\r\n */\r\n ReactDOM.render(component, el[0], () => region.trigger('show'));\r\n\r\n this.listenToOnce(this, `unmount:${regionName}`, () => ReactDOM.unmountComponentAtNode(el[0]));\r\n\r\n this.listenToOnce(this, 'before:destroy', () => ReactDOM.unmountComponentAtNode(el[0]));\r\n }\r\n\r\n protected wrapWithStore(child: React.ReactElement): React.ReactElement {\r\n return (\r\n <Provider store={this.options.store}>\r\n {child}\r\n </Provider>\r\n );\r\n }\r\n}","import { useDispatch, useSelector } from 'react-redux';\r\nimport { OutputSelector, defaultMemoize, createSelectorCreator, createSelector } from 'reselect';\r\nimport { TimeHelper } from 'libs/common/react/utils/TimeHelper';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nimport { Actions } from './constants';\r\nimport { Request, Response, Dispatch, Resources, NormalizedEntities, Resource } from './interfaces';\r\nimport { denormalize } from './normalizer';\r\nimport { RequestStatus } from './enums';\r\nimport { useMemo } from 'react';\r\n\r\ninterface ObjOptions<T> {\r\n status: RequestStatus;\r\n statusCode?: HttpStatus;\r\n requestTime?: number;\r\n cacheDuration?: number;\r\n data?: T;\r\n}\r\n\r\nclass FlightObj<T> implements Response<T> {\r\n private requestTime: number;\r\n private cacheDuration: number;\r\n\r\n public status: RequestStatus;\r\n public statusCode: HttpStatus;\r\n public data: T;\r\n\r\n constructor(options: ObjOptions<T>) {\r\n this.status = options.status;\r\n this.requestTime = options.requestTime;\r\n this.cacheDuration = options.cacheDuration;\r\n this.data = options.data;\r\n this.statusCode = options.statusCode;\r\n }\r\n\r\n public get shouldFetch(): boolean {\r\n if (this.status === RequestStatus.None)\r\n return true;\r\n\r\n return this.isExpired;\r\n }\r\n\r\n public get isExpired(): boolean {\r\n return TimeHelper.isExpired(this.requestTime, this.cacheDuration);\r\n }\r\n\r\n public get isFetching(): boolean {\r\n return this.status === RequestStatus.Fetching;\r\n }\r\n\r\n public get hasError(): boolean {\r\n return this.status === RequestStatus.Error;\r\n }\r\n\r\n public get isComplete(): boolean {\r\n return this.status === RequestStatus.Success || this.status === RequestStatus.Error;\r\n }\r\n}\r\n\r\nfunction makeGetOptimizedResponse<T>(\r\n key: string\r\n): OutputSelector<ApplicationState, Response<T>, (r: Resource, e: NormalizedEntities) => Response<T>> {\r\n\r\n const getResource = (state: ApplicationState) => state.flightData.resources[key];\r\n\r\n const getEntities = (state: ApplicationState) => {\r\n const resource = state.flightData.resources[key];\r\n\r\n if (!resource?.entityIds) return {};\r\n\r\n return resource.entityIds.reduce((obj: any, id: string) => {\r\n obj[id] = state.flightData.entities[id];\r\n return obj;\r\n }, {});\r\n };\r\n\r\n const isEqual = (currentVal: any, previousVal: any) => {\r\n const omitValues = [ 'response', 'request' ];\r\n return ObjectHelper.isEqual(\r\n ObjectHelper.omit(currentVal, omitValues), ObjectHelper.omit(previousVal, omitValues)\r\n );\r\n };\r\n\r\n const selectorCreator = createSelectorCreator(defaultMemoize, isEqual);\r\n\r\n return selectorCreator(\r\n getResource,\r\n getEntities,\r\n (resource: Resource, entities: NormalizedEntities) => {\r\n return getResponseInternal(key, resource, entities);\r\n }\r\n );\r\n}\r\n\r\nfunction makeGetResponse<T>(\r\n key: string\r\n): OutputSelector<ApplicationState, Response<T>, (r: Resource, e: NormalizedEntities) => Response<T>> {\r\n return createSelector(\r\n (state: ApplicationState) => state.flightData.resources[key],\r\n (state: ApplicationState) => state.flightData.entities,\r\n (resource: Resource, entities: NormalizedEntities) => {\r\n return getResponseInternal(key, resource, entities);\r\n }\r\n );\r\n}\r\n\r\n\r\nfunction getResponseInternal<T>(key: string, resource: Resource, entities: NormalizedEntities): Response<T> {\r\n if (!key || !resource) {\r\n return emptyResponse();\r\n }\r\n\r\n let data = resource.response as T;\r\n if (resource.request.normalize !== false)\r\n data = denormalize(resource.response, entities) as T;\r\n\r\n return new FlightObj<T>({\r\n status: resource.status,\r\n statusCode: resource.statusCode,\r\n requestTime: resource.timestamp,\r\n cacheDuration: resource.request.expiryTime,\r\n data\r\n });\r\n}\r\n\r\nexport function emptyResponse<T>(): Response<T> {\r\n return new FlightObj<T>({\r\n status: RequestStatus.None\r\n });\r\n}\r\n\r\nexport function getResponse<T>(state: ApplicationState, key: string): Response<T> {\r\n return getResponseInternal(key, state.flightData.resources[key], state.flightData.entities);\r\n}\r\n\r\nexport function getFetch(dispatch: Dispatch, request: Request): () => void {\r\n return () => {\r\n fetch(dispatch, request);\r\n };\r\n}\r\n\r\nexport function fetch(dispatch: Dispatch, request: Request): void {\r\n dispatch({\r\n type: Actions.API_REQUEST,\r\n request\r\n });\r\n}\r\n\r\nexport function useGetFetch(request: Request): () => void {\r\n const dispatch = useDispatch();\r\n return getFetch(dispatch, request);\r\n}\r\n\r\ninterface GetResponseOptions {\r\n optimize: boolean;\r\n}\r\n\r\nexport function useGetResponse<T>(key: string, options?: GetResponseOptions): Response<T> {\r\n const memoizedGetResponse = useMemo(() => {\r\n return options?.optimize ? makeGetOptimizedResponse<T>(key) : makeGetResponse<T>(key);\r\n }, [key]);\r\n return useSelector((state: ApplicationState) => {\r\n return memoizedGetResponse(state);\r\n });\r\n}\r\n\r\nexport function useBasicFetch<T>(request: Request, options?: GetResponseOptions): Response<T> {\r\n const dispatch = useDispatch();\r\n const response = useGetResponse<T>(request && request.key, options);\r\n const fetchData = getFetch(dispatch, request);\r\n\r\n if (request && response.shouldFetch)\r\n fetchData();\r\n\r\n return response;\r\n}","import { Dispatch, Middleware, MiddlewareAPI, AnyAction } from 'redux';\r\n\r\nimport { TimeHelper } from 'libs/common/react/utils/TimeHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\n\r\nimport {\r\n Request,\r\n NormalizedData,\r\n ResponseAction,\r\n ErrorAction,\r\n InvalidateAction,\r\n HttpRequest,\r\n Action,\r\n UpdateAction,\r\n UpdateStateOptions\r\n} from './interfaces';\r\nimport { RequestStatus } from './enums';\r\nimport { Actions } from './constants';\r\nimport { normalize, denormalize } from './normalizer';\r\nimport { StateHelper, SimulatorHelper } from './utils';\r\n\r\ntype FlightMiddlewareApi = MiddlewareAPI<Dispatch<AnyAction>, ApplicationState>;\r\n\r\ntype FlightMiddlewareResponse = (next: Dispatch<AnyAction>) => (action: Action) => void;\r\n\r\ninterface MiddlewareOptions {\r\n fetchData: HttpRequest;\r\n bootstrappedData?: HashObject;\r\n defaultExpiryTime?: number;\r\n}\r\n\r\nexport function createMiddleware(options: MiddlewareOptions): Middleware<{}, ApplicationState, Dispatch<AnyAction>> {\r\n const { fetchData, bootstrappedData, defaultExpiryTime } = options;\r\n\r\n const FLIGHT_REQUEST_DEFAULTS = Object.freeze<Request>({\r\n key: null,\r\n url: null,\r\n type: HttpVerbs.GET,\r\n normalize: true,\r\n formatData: d => d,\r\n expiryTime: defaultExpiryTime\r\n });\r\n\r\n return function FlightMiddleware(store: FlightMiddlewareApi): FlightMiddlewareResponse {\r\n return (next: Dispatch<AnyAction>) => (action: Action) => {\r\n /**\r\n * This middleware only applies to API_REQUEST actions\r\n */\r\n if (action.type !== Actions.API_REQUEST) {\r\n next(action);\r\n return;\r\n }\r\n\r\n const state = store.getState();\r\n const {\r\n success,\r\n error,\r\n always,\r\n formatData,\r\n ...request } = Object.assign({}, FLIGHT_REQUEST_DEFAULTS, action.request);\r\n\r\n /**\r\n * As soon as next() is called on the first API_REQUEST for a particular resource\r\n * the status will be set to RequestStatus.Fetching.\r\n * For this reason we need to pull the existing resource out of the state before\r\n * we call next() so we can accurately test existing.status before it is manipulated\r\n * by this dispatch call\r\n */\r\n const existing = state.flightData.resources[request.key];\r\n\r\n next(action);\r\n\r\n /** \r\n * If our request exists and is currently fetching we do nothing\r\n */\r\n if (existing && existing.status === RequestStatus.Fetching) {\r\n return;\r\n }\r\n\r\n /**\r\n * Pull data from bootstrapped data if it's there\r\n */\r\n if (request.bootstrapName && bootstrappedData[action.request.bootstrapName]) {\r\n onSuccess(bootstrappedData[action.request.bootstrapName]);\r\n onAlways();\r\n delete bootstrappedData[action.request.bootstrapName];\r\n return;\r\n }\r\n\r\n const httpRequestOptions = {\r\n resource: request.url,\r\n type: request.type,\r\n data: request.data,\r\n success: onSuccess,\r\n error: onError,\r\n always: onAlways\r\n };\r\n\r\n /**\r\n * Call our data layer\r\n */\r\n if (SimulatorHelper.isSimulated(request))\r\n SimulatorHelper.simulateFetchData(httpRequestOptions, request);\r\n else\r\n fetchData(httpRequestOptions);\r\n\r\n /**\r\n * Middleware ends here, all functions below are simply enclosing variables from above\r\n */\r\n return;\r\n\r\n /**\r\n * Format and normalize our data before dispatching API_RESPONSE\r\n */\r\n function onSuccess(data: HashObject, xhr?: Xhr): void {\r\n const formatted = formatData(data);\r\n let response: NormalizedData = {\r\n result: formatted,\r\n entities: {}\r\n };\r\n\r\n if (request.normalize)\r\n response = normalize(formatted, request.normalizeOptions);\r\n\r\n store.dispatch<ResponseAction>({\r\n type: Actions.API_REPONSE,\r\n result: response.result,\r\n entities: response.entities,\r\n request: request,\r\n timestamp: TimeHelper.currentTimestamp(),\r\n xhr\r\n });\r\n\r\n if (request.updateState) {\r\n const updateOptions = Array.isArray(request.updateState)\r\n ? request.updateState\r\n : [request.updateState];\r\n\r\n updateOptions.forEach((u: UpdateStateOptions) => {\r\n updateState(u);\r\n });\r\n }\r\n\r\n if (!success) return;\r\n\r\n let successObj = response.result as HashObject | HashObject[];\r\n if (request.normalize) {\r\n successObj = denormalize(response.result, {\r\n ...state.flightData.entities, ...response.entities\r\n });\r\n }\r\n success(successObj);\r\n }\r\n\r\n /**\r\n * Build out our error response before dispatching API_RESPONSE\r\n */\r\n function onError(xhr?: Xhr): void {\r\n store.dispatch<ErrorAction>({\r\n type: Actions.API_ERROR,\r\n errorResponse: xhr.responseJSON,\r\n request: action.request,\r\n timestamp: TimeHelper.currentTimestamp(),\r\n xhr\r\n });\r\n error && error(xhr);\r\n }\r\n\r\n /**\r\n * If we have any invalidation keys dispatch INVALIDATE\r\n */\r\n function onAlways(): void {\r\n if (request.invalidationKeys) {\r\n store.dispatch<InvalidateAction>({\r\n type: Actions.INVALIDATE,\r\n keys: request.invalidationKeys,\r\n request\r\n });\r\n }\r\n always && always();\r\n }\r\n\r\n function updateState(updateStateOptions: UpdateStateOptions): void {\r\n const keyMap = StateHelper.getMatchingKeyMap(state.flightData, updateStateOptions.keys);\r\n\r\n /**\r\n * Filter out state to update using keyMap and denormalize where applicable. \r\n */\r\n const dataToUpdate: HashObject = {\r\n ...Object.keys(state.flightData.resources)\r\n .filter(key => keyMap[key])\r\n .reduce((obj: HashObject, key) => {\r\n const resource = state.flightData.resources[key];\r\n\r\n let data = resource.response;\r\n\r\n if (resource.request.normalize)\r\n data = denormalize(resource.response, state.flightData.entities);\r\n\r\n obj[key] = data;\r\n return obj;\r\n }, {})\r\n };\r\n\r\n const updatedData = updateStateOptions.updateData(dataToUpdate);\r\n\r\n /**\r\n * Dispatch update actions with updated data.\r\n */\r\n Object.keys(updatedData)\r\n .forEach(key => {\r\n const resource = state.flightData.resources[key];\r\n const updatedResult = updatedData[key];\r\n\r\n let data: NormalizedData = {\r\n result: updatedResult,\r\n entities: {}\r\n };\r\n\r\n if (resource.request.normalize)\r\n data = normalize(updatedResult, resource.request.normalizeOptions);\r\n\r\n store.dispatch<UpdateAction>({\r\n type: Actions.UPDATE,\r\n result: data.result,\r\n entities: data.entities,\r\n request: resource.request\r\n });\r\n });\r\n }\r\n };\r\n };\r\n}\r\n\r\n","import {\r\n FlightState,\r\n RequestAction,\r\n ResponseAction,\r\n ErrorAction,\r\n InvalidateAction,\r\n Action,\r\n UpdateAction,\r\n NormalizedEntities\r\n} from './interfaces';\r\nimport { Actions } from './constants';\r\nimport { RequestStatus } from './enums';\r\nimport { StateHelper } from './utils';\r\n\r\nfunction mergeEntitites(existingEntities: NormalizedEntities, newEntities: NormalizedEntities): NormalizedEntities {\r\n const entities = { ...existingEntities };\r\n\r\n Object.keys(newEntities).forEach(key => {\r\n if (!existingEntities[key]) {\r\n entities[key] = newEntities[key];\r\n return;\r\n }\r\n\r\n entities[key] = { ...existingEntities[key], ...newEntities[key] };\r\n });\r\n\r\n return entities;\r\n}\r\n\r\nfunction ApiRequestReducer(state: FlightState, action: RequestAction): FlightState {\r\n const request = state.resources[action.request.key];\r\n\r\n return {\r\n entities: { ...state.entities },\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n request: action.request,\r\n status: RequestStatus.Fetching,\r\n response: request ? request.response : null,\r\n entityIds: request ? request.entityIds : null\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction ApiResponseReducer(state: FlightState, action: ResponseAction): FlightState {\r\n const entityIds = action.entities ? Object.keys(action.entities) : [];\r\n\r\n return {\r\n entities: mergeEntitites(state.entities, action.entities),\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n request: action.request,\r\n status: RequestStatus.Success,\r\n response: action.result,\r\n timestamp: action.timestamp,\r\n statusCode: action.xhr?.status,\r\n entityIds\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction ApiErrorReducer(state: FlightState, action: ErrorAction): FlightState {\r\n return {\r\n entities: { ...state.entities },\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n request: action.request,\r\n status: RequestStatus.Error,\r\n errorResponse: action.errorResponse,\r\n timestamp: action.timestamp,\r\n statusCode: action.xhr?.status\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction InvalidateReducer(state: FlightState, action: InvalidateAction): FlightState {\r\n const invalidationMap = StateHelper.getMatchingKeyMap(state, action.keys, action.request?.key);\r\n\r\n return {\r\n entities: { ...state.entities },\r\n resources: {\r\n ...state.resources,\r\n ...Object.keys(state.resources)\r\n .filter(key => invalidationMap[key])\r\n .reduce((obj: any, key) => {\r\n const resource = state.resources[key];\r\n obj[key] = Object.assign({}, resource, {\r\n status: RequestStatus.None,\r\n });\r\n return obj;\r\n }, {})\r\n }\r\n };\r\n}\r\n\r\nfunction UpdateReducer(state: FlightState = defaultState, action: UpdateAction): FlightState {\r\n const entityIds = action.entities ? Object.keys(action.entities) : [];\r\n\r\n return {\r\n entities: mergeEntitites(state.entities, action.entities),\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n ...state.resources[action.request.key],\r\n request: action.request,\r\n response: action.result,\r\n entityIds\r\n }\r\n }\r\n };\r\n}\r\n\r\nconst defaultState: FlightState = {\r\n resources: {},\r\n entities: {}\r\n};\r\n\r\nexport function FlightReducer(state: FlightState = defaultState, action: Action): FlightState {\r\n switch (action.type) {\r\n case Actions.API_REQUEST:\r\n return ApiRequestReducer(state, action as RequestAction);\r\n case Actions.API_REPONSE:\r\n return ApiResponseReducer(state, action as ResponseAction);\r\n case Actions.API_ERROR:\r\n return ApiErrorReducer(state, action as ErrorAction);\r\n case Actions.INVALIDATE:\r\n return InvalidateReducer(state, action as InvalidateAction);\r\n case Actions.UPDATE:\r\n return UpdateReducer(state, action as UpdateAction);\r\n }\r\n\r\n return state;\r\n}","import { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\n/**\r\n * We might need to pontentially expant this in the future\r\n * so that options can be passed in, but I'll leave it like this\r\n * for now - Sha\r\n */\r\nconst options = {\r\n idProperty: 'id'\r\n};\r\n\r\nfunction write(name: string, items: HashObject[]): HashObject[] {\r\n localStorage.setItem(name, JSON.stringify(items));\r\n return items;\r\n}\r\n\r\nfunction read(name: string): HashObject[] {\r\n const item = localStorage.getItem(name);\r\n\r\n if (!item)\r\n return null;\r\n\r\n return JSON.parse(item);\r\n}\r\n\r\nfunction getId(): string {\r\n return (Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1).toString();\r\n}\r\n\r\n/**\r\n * This is a very basic implementation and we almost definitely will\r\n * need to extend upon this, so please don't be afraid to add to it.\r\n */\r\nexport const Simulator = {\r\n getAll(name: string, init?: HashObject[]): HashObject[] {\r\n let items = read(name);\r\n\r\n if (items && items.length)\r\n return items;\r\n\r\n if (!items && init) {\r\n init.forEach(item => Simulator.create(name, item));\r\n return read(name);\r\n }\r\n\r\n return [];\r\n },\r\n\r\n get(name: string, id: string): HashObject {\r\n const items = Simulator.getAll(name);\r\n\r\n if (!items.length)\r\n return null;\r\n\r\n return items.find(i => i[options.idProperty] === id);\r\n },\r\n\r\n create(name: string, item: HashObject): HashObject {\r\n const items = Simulator.getAll(name);\r\n\r\n const newItem = {\r\n ...item,\r\n [options.idProperty]: item[options.idProperty] || getId()\r\n };\r\n\r\n items.push(newItem);\r\n write(name, items);\r\n return newItem;\r\n },\r\n\r\n update(name: string, item: HashObject): HashObject {\r\n const items = Simulator.getAll(name);\r\n\r\n if (!items.length)\r\n return item;\r\n\r\n const itemIndex = items.findIndex(i => i[options.idProperty] === item[options.idProperty]);\r\n items[itemIndex] = item;\r\n write(name, items);\r\n return item;\r\n },\r\n\r\n delete(name: string, ids: string | string[]): void {\r\n const items = Simulator.getAll(name);\r\n\r\n if (!items.length)\r\n return;\r\n\r\n if (!Array.isArray(ids))\r\n ids = [ids];\r\n\r\n ids.forEach(id => {\r\n const itemIndex = items.findIndex(i => i[options.idProperty] === id);\r\n items.splice(itemIndex, 1);\r\n });\r\n\r\n write(name, items);\r\n },\r\n\r\n /**\r\n * \r\n * @param objectName - the name your object can be found under in local storage (e.g. `classrooms`).\r\n * @param objectId - the id of the object you want to associate something to.\r\n * @param assocName - the field name of your assoc, which will go on your object (e.g. `students`).\r\n * @param flightSimName - the name your assoc objects will be created under (e.g. `school:students`).\r\n * @param assocObject - the object you're creating and associating.\r\n * \r\n * Having a difficult time coming up with good param names here. Feel free to update, ty\r\n */\r\n assoc(\r\n objectName: string, objectId: string, assocName: string, flightSimName: string, assocObjects: any | any[]\r\n ): any | any[] {\r\n const isAssoccingMany = Array.isArray(assocObjects);\r\n\r\n let assocObjectsArray = isAssoccingMany ? assocObjects : [assocObjects];\r\n\r\n // If we're passing in ids instead of objects, find the objects in local storage\r\n if (typeof ArrayHelper.first(assocObjectsArray) === 'string') {\r\n assocObjectsArray = Simulator.getAll(flightSimName).filter(obj => assocObjectsArray.includes(obj.id));\r\n }\r\n\r\n // Get the full assoc objects from local storage, OR create brand new ones if they don't exist yet.\r\n const createdAssocObjects = assocObjectsArray.map((obj: any) => {\r\n if (obj.id)\r\n return obj;\r\n\r\n return Simulator.create(flightSimName, obj);\r\n });\r\n\r\n let items = Simulator.getAll(objectName);\r\n\r\n if (!items.length)\r\n return;\r\n\r\n let item = items.find(_item => _item.id === objectId);\r\n\r\n if (!item)\r\n return;\r\n\r\n // Actually associate our objects to each other\r\n createdAssocObjects.forEach((assoc: any) => {\r\n if (!item[assocName]) {\r\n item[assocName] = isAssoccingMany ? [assoc] : assoc;\r\n\r\n return;\r\n }\r\n\r\n if (Array.isArray(item[assocName])) {\r\n // Don't re-assoc if assoc already exists\r\n if (item[assocName].find((existingAssoc: any) => existingAssoc.id === assoc.id))\r\n return;\r\n\r\n item[assocName].push(assoc);\r\n\r\n return;\r\n }\r\n\r\n item[assocName] = assoc;\r\n });\r\n\r\n // Prepare to write changes to local storage\r\n items = items.map(oldItem => {\r\n if (oldItem.id !== item.id)\r\n return oldItem;\r\n\r\n return item;\r\n });\r\n\r\n write(objectName, items);\r\n\r\n // Return the object(s) we've just assocced\r\n return isAssoccingMany ? createdAssocObjects : ArrayHelper.first(createdAssocObjects);\r\n },\r\n\r\n dissoc(objectName: string, objectId: string, assocName: string, ids: string | string[]): HashObject[] {\r\n let items = Simulator.getAll(objectName);\r\n\r\n if (!items.length)\r\n return;\r\n\r\n let item = items.find(_item => _item.id === objectId);\r\n\r\n if (!item)\r\n return;\r\n\r\n let assoc = item[assocName as any];\r\n\r\n if (!assoc)\r\n return;\r\n\r\n if (!Array.isArray(ids))\r\n ids = [ids];\r\n\r\n if (!Array.isArray(assoc))\r\n assoc = [assoc];\r\n\r\n ids.forEach(id => {\r\n const assoccedItemIndex = assoc.findIndex((a: HashObject) => a.id === id);\r\n assoc.splice(assoccedItemIndex, 1);\r\n });\r\n\r\n item[assocName as any] = assoc;\r\n items = items.map(oldItem => {\r\n if (oldItem.id !== item.id)\r\n return oldItem;\r\n\r\n return item;\r\n });\r\n\r\n write(objectName, items);\r\n\r\n return items;\r\n }\r\n};","export const Actions = {\r\n API_REQUEST: 'API_REQUEST',\r\n API_REPONSE: 'API_RESPONSE',\r\n API_ERROR: 'API_ERROR',\r\n INVALIDATE: 'INVALIDATE',\r\n UPDATE: 'UPDATE'\r\n};","export * from './Actions';","import { HttpRequestOptions } from '../interfaces';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\n\r\nfunction formatXhr(jqXHR: JQuery.jqXHR): Xhr {\r\n const { getResponseHeader, responseJSON, status } = jqXHR;\r\n\r\n return { getResponseHeader, responseJSON, status };\r\n}\r\n\r\nconst dataMethods = [ HttpVerbs.POST, HttpVerbs.PUT ];\r\n\r\nexport function ajaxRequest(options: HttpRequestOptions): void {\r\n const {\r\n resource,\r\n type,\r\n success,\r\n error,\r\n always\r\n } = options;\r\n\r\n const ajaxOptions: JQuery.AjaxSettings = {\r\n url: resource,\r\n method: type\r\n };\r\n\r\n if (dataMethods.includes(type) && options.data) {\r\n ajaxOptions.data = JSON.stringify(options.data);\r\n }\r\n\r\n $.ajax(ajaxOptions)\r\n .done((responseData: any, textStatus: any, jqXHR: JQuery.jqXHR) => {\r\n success && success(responseData, formatXhr(jqXHR));\r\n })\r\n .fail((jqXHR: JQuery.jqXHR, textStatus: any, errorThrown: any) => {\r\n error && error(formatXhr(jqXHR));\r\n })\r\n .always(() => {\r\n always && always();\r\n });\r\n}\r\n","export * from './AjaxRequest';","export enum RequestStatus {\r\n None = 'None',\r\n Fetching = 'Fetching',\r\n Success = 'Success',\r\n Error = 'Error'\r\n}","export * from './RequestStatus';","\r\nexport * from './constants';\r\nexport * from './enums';\r\nexport * from './interfaces';\r\nexport * from './data-layers';\r\nexport * from './normalizer';\r\nexport * from './FlightHelpers';\r\nexport * from './FlightMiddleware';\r\nexport * from './FlightReducer';\r\nexport * from './FlightSimulator';","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { NormalizedEntities, Normalized } from '../interfaces';\r\n\r\nfunction denormalizeString(id: string, collection: NormalizedEntities, visited: HashObject): HashObject {\r\n if (visited[id])\r\n return visited[id];\r\n\r\n visited[id] = {};\r\n const denormalized = _denormalize(collection[id], collection, visited);\r\n Object.assign(visited[id], denormalized);\r\n\r\n if (ObjectHelper.isEmpty(visited[id]))\r\n delete visited[id];\r\n\r\n return visited[id];\r\n}\r\n\r\nfunction _denormalize(\r\n data: Normalized, collection: NormalizedEntities, visited: HashObject\r\n): HashObject | HashObject[] {\r\n if (!data)\r\n return;\r\n\r\n if (typeof data === 'string') {\r\n return denormalizeString(data, collection, visited);\r\n }\r\n\r\n if (Array.isArray(data)) {\r\n return (data as HashObject[]).map(d => _denormalize(d, collection, visited));\r\n }\r\n\r\n if (typeof data === 'object') {\r\n const obj: HashObject = {};\r\n Object.keys(data).forEach(key => {\r\n obj[key] = _denormalize(data[key], collection, visited) || data[key];\r\n });\r\n return obj;\r\n }\r\n}\r\n\r\nexport function denormalize(\r\n ids: Normalized, collection: NormalizedEntities\r\n): HashObject | HashObject[] {\r\n return _denormalize(ids, collection, {});\r\n}","import { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { NormalizeOptions, NormalizedData } from '../interfaces';\r\nimport { ErrorHelper } from 'libs/common/backbone/core';\r\n\r\nconst ID_ATTRIBUTE = 'id';\r\n\r\nfunction getNormalizedId(data: HashObject, options: NormalizeOptions = {}): string {\r\n const { idAttribute = ID_ATTRIBUTE, namespace = '' } = options;\r\n\r\n if (!data[idAttribute]) {\r\n ErrorHelper.throw(new DevError('There was an issue during normalization. Object did not have an id attribute.'));\r\n }\r\n return `${namespace}__${data[idAttribute]}`;\r\n}\r\n\r\nfunction normalizeArray(data: HashObject[], collection: HashObject, options: NormalizeOptions = {}): string[] {\r\n const { idAttribute = ID_ATTRIBUTE } = options;\r\n\r\n const ids: string[] = [];\r\n data.forEach((v: HashObject) => {\r\n if (v[idAttribute])\r\n ids.push(getNormalizedId(v, options));\r\n\r\n _normalize(v, collection, options);\r\n });\r\n\r\n return ids;\r\n}\r\n\r\nfunction normalizeObject(\r\n data: HashObject, collection: HashObject, options: NormalizeOptions = {}\r\n): string | HashObject {\r\n const { idAttribute = ID_ATTRIBUTE } = options;\r\n\r\n const orig: HashObject = { ...data };\r\n\r\n Object.keys(data).forEach(key => {\r\n const value = data[key];\r\n\r\n if (!value)\r\n return;\r\n\r\n if (Array.isArray(value)) {\r\n var ids = normalizeArray(value, collection, options);\r\n if (ids.length) orig[key] = ids;\r\n return;\r\n }\r\n\r\n if (typeof value === 'object') {\r\n var result = normalizeObject(value, collection, options);\r\n\r\n if (value[idAttribute]) {\r\n orig[key] = getNormalizedId(value, options);\r\n } else {\r\n orig[key] = result;\r\n }\r\n }\r\n });\r\n\r\n if (data[idAttribute]) {\r\n const id = getNormalizedId(data, options);\r\n collection[id] = orig;\r\n return id;\r\n }\r\n\r\n return orig;\r\n}\r\n\r\nfunction _normalize(\r\n data: HashObject | HashObject[], collection: HashObject, options: NormalizeOptions = {}\r\n): string | string [] | HashObject {\r\n if (!data)\r\n return;\r\n\r\n if (Array.isArray(data))\r\n return normalizeArray(data, collection, options);\r\n\r\n if (typeof data === 'object')\r\n return normalizeObject(data, collection, options);\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * This is a pure function, while normalize() above is not.\r\n * normalize() manipulates it's parameters. If we ever write unit tests for this\r\n * only test this function, not the above ones.\r\n */\r\nexport function normalize(data: HashObject | HashObject[], options?: NormalizeOptions): NormalizedData {\r\n\r\n const collection = {};\r\n\r\n return {\r\n result: _normalize(data, collection, options),\r\n entities: collection\r\n };\r\n}","export * from './Normalizer';\r\nexport * from './Denormalizer';","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\nimport { Request, SimulatedRequest, HttpRequestOptions } from '../interfaces';\r\n\r\n/**\r\n * Timeout has a 50% variability. So if you pass in 200\r\n * your response will happen anywhere between 100ms and 200ms\r\n */\r\nfunction getTimeout(request: Request): number {\r\n const simulatorRequest = request as SimulatedRequest;\r\n const base = simulatorRequest.timeout || 300;\r\n return base / 2 + (Math.floor(Math.random() * base / 2) + 1);\r\n}\r\n\r\nexport const SimulatorHelper = {\r\n isSimulated(request: Request): boolean {\r\n /**\r\n * If the request has the successResponse, errorResponse or noResponse properties\r\n * the SimulatedRequest interface has been used as the user\r\n * wants the requests to be simulated\r\n */\r\n const simulatorRequest = request as SimulatedRequest;\r\n return !!(simulatorRequest.successResponse\r\n || simulatorRequest.errorResponse\r\n || simulatorRequest.noResponse);\r\n },\r\n\r\n simulateFetchData(options: HttpRequestOptions, request: Request): void {\r\n const {\r\n success,\r\n error,\r\n always\r\n } = options;\r\n\r\n const simulatorRequest = request as SimulatedRequest;\r\n\r\n window.setTimeout(() => {\r\n if (simulatorRequest.noResponse)\r\n return;\r\n\r\n if (simulatorRequest.successResponse)\r\n success(simulatorRequest.successResponse(), {\r\n status: HttpStatus.Ok,\r\n getResponseHeader: (name: string) => ''\r\n });\r\n else if (simulatorRequest.errorResponse)\r\n error(simulatorRequest.errorResponse() as Xhr);\r\n\r\n always();\r\n }, getTimeout(request));\r\n }\r\n};","import { FlightState } from '../interfaces';\r\n\r\nexport const StateHelper = {\r\n /**\r\n * Returns a map of keys state.resources which match the keys param.\r\n * \r\n * @param state FlightState.\r\n * @param keys a key or array of keys to match on.\r\n * @param requestKey optionally include the current request key to exclude it from the map.\r\n */\r\n getMatchingKeyMap(state: FlightState, keys: string | string[], requestKey?: string): any {\r\n const keyArray = Array.isArray(keys) ? keys : [keys];\r\n\r\n let matchingKeys: string[] = [];\r\n\r\n keyArray.forEach(key => {\r\n const regex = new RegExp(key, 'i');\r\n const matches = Object.keys(state.resources).filter(k => regex.test(k));\r\n matchingKeys.push(...matches);\r\n });\r\n\r\n if (requestKey)\r\n matchingKeys = matchingKeys.filter(k => k !== requestKey);\r\n\r\n return matchingKeys.reduce((obj: any, key) => {\r\n obj[key] = true;\r\n return obj;\r\n }, {});\r\n }\r\n};","export * from './StateHelper';\r\nexport * from './SimulatorHelper';","import * as React from 'react';\r\n\r\nimport { FetchHelper, FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nconst getInitDataFetchedArray = (fetchOptions: FetchOptions[]) =>\r\n Array(Array.isArray(fetchOptions) ? fetchOptions.length : 0).fill(false);\r\n\r\n/**\r\n * Hook function to make multiple data calls using the useEffect hook. \r\n *\r\n * @param optionCollection - array of FetchOptions, one for each data call.\r\n * @param dependencies - values from the component (e.g. state, props and functions) that are used \r\n * inside the effect hook. The hook will only run when a dependency changes. If an empty array is\r\n * passed in, the hook will just run once. If null is passed in, the hook will run on every update.\r\n */\r\nexport function useBulkFetch(fetchOptions: FetchOptions[], dependencies: any[], shouldFetch: boolean = true): void {\r\n /**\r\n * dataFetched - array of flags used to track\r\n * data that has been fetched and to trigger\r\n * re-fetches to pull the data from the data service.\r\n */\r\n const [ dataFetched, setDataFetched ] = React.useState(getInitDataFetchedArray(fetchOptions));\r\n\r\n React.useEffect(() => {\r\n setDataFetched(getInitDataFetchedArray(fetchOptions));\r\n }, [...dependencies]);\r\n\r\n React.useEffect(() => {\r\n if (!shouldFetch)\r\n return;\r\n\r\n const cleanUpFns: (() => void)[] = [];\r\n\r\n !!fetchOptions && fetchOptions.forEach((options, idx) => {\r\n /**\r\n * \r\n * @param status - whether or not the data has been fetched.\r\n * \r\n * If dataFetched at the current index has changed, we update\r\n * the value stored in state so that FetchHelper.fetch will be\r\n * called again to pull the data from the cache and set it\r\n * on the view using useBulkFetch.\r\n */\r\n const setDataFetchedAtIdx = (status: boolean) => {\r\n if (status !== dataFetched[idx])\r\n setDataFetched(ArrayHelper.cloneAndReplaceAtIdx(dataFetched, idx, status));\r\n };\r\n\r\n /**\r\n * Fetch the requested data from the data service.\r\n */\r\n cleanUpFns.push(FetchHelper.fetch(options, setDataFetchedAtIdx));\r\n });\r\n\r\n return () => cleanUpFns.forEach(fn => fn());\r\n }, [ dataFetched, shouldFetch ]);\r\n}","import * as React from 'react';\r\n\r\nimport { FetchHelper, FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\n\r\n/**\r\n * Hook function to fetch data using the useEffect hook.\r\n * \r\n * @param options - FetchOptions\r\n * @param dependencies - values from the component (e.g. state, props and functions) that are used \r\n * inside the effect hook. The hook will only run when a dependency changes. If an empty array is\r\n * passed in, the hook will just run once. If null is passed in, the hook will run on every update.\r\n */\r\nexport function useFetch(options: FetchOptions, dependencies: any[], shouldFetch: boolean = true): void {\r\n /**\r\n * dataFetched - flag used to trigger\r\n * fetching data from the data service.\r\n */\r\n const [ dataFetched, setDataFetched ] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n setDataFetched(false);\r\n }, [...dependencies]);\r\n\r\n React.useEffect(() => {\r\n if (!shouldFetch)\r\n return;\r\n\r\n /**\r\n * Fetch the requested data from the data service.\r\n */\r\n return FetchHelper.fetch(options, setDataFetched);\r\n }, [ dataFetched, shouldFetch ]);\r\n}","import * as React from 'react';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\n/**\r\n * Hook to retrieve an instance from InstanceManager.\r\n * It handles releasing the instance in the cleanup function.\r\n * @param instanceName \r\n */\r\nexport function useInstance<T>(instanceName: string): T {\r\n const instance = InstanceManager.getInstance<T>(instanceName);\r\n\r\n React.useEffect(() => {\r\n return () => InstanceManager.releaseInstance(instanceName);\r\n }), [];\r\n\r\n return instance;\r\n}","import { BaseService } from 'libs/common/backbone/core/BaseService';\r\n\r\nimport { useInstance } from './UseInstance';\r\n\r\nexport function useService<T extends BaseService>(serviceName: string): T {\r\n const service = useInstance<T>(serviceName);\r\n\r\n return service;\r\n}","import * as Flight from './flight';\r\n\r\nexport { Flight };","import * as _ from 'underscore';\r\nimport { ObjectHelper } from './ObjectHelper';\r\n\r\ntype Iterator<T, TResult = T> = (value: T, index: number, list: T[]) => TResult;\r\n\r\nexport const ArrayHelper = {\r\n first<T>(arr: T[]): T {\r\n return _.first(arr);\r\n },\r\n\r\n firstFew<T>(arr: T[], count: number): T[] {\r\n return _.first(arr, count);\r\n },\r\n\r\n last<T>(arr: T[]): T {\r\n return _.last(arr);\r\n },\r\n\r\n lastFew<T>(arr: T[], count: number): T[] {\r\n return _.last(arr, count);\r\n },\r\n\r\n max<T, TResult = T>(arr: T[], iterator?: Iterator<T, TResult>): T {\r\n return _.max(arr, iterator);\r\n },\r\n\r\n cloneAndReplaceAtIdx<T>(arr: T[], idx: number, newVal: T, defaultValue: any = null): T[] {\r\n let newArr = !!arr && arr.length ? arr.slice() : [];\r\n\r\n /**\r\n * If idx is out of bounds, fill array\r\n * with defaultValue up to idx.\r\n */\r\n if (idx + 1 > newArr.length)\r\n newArr = [ ...newArr, ...Array(idx + 1 - newArr.length).fill(defaultValue) ];\r\n\r\n newArr.splice(idx, 1, newVal);\r\n\r\n return newArr;\r\n },\r\n\r\n moveItem<T>(arr: T[], fromIdx: number, toIdx: number): T[] {\r\n const newArray = arr.slice();\r\n\r\n newArray.splice(toIdx, 0, newArray.splice(fromIdx, 1)[0]);\r\n\r\n return newArray;\r\n },\r\n\r\n isEmpty<T>(arr: T[]): boolean {\r\n return arr && !arr.length;\r\n },\r\n\r\n findIndex<T>(arr: T[], predicate: (item: T) => boolean): number {\r\n return _.findIndex(arr, predicate);\r\n },\r\n\r\n where<T, U extends {}>(arr: T[], properties: U): T[] {\r\n return _.where(arr, properties);\r\n },\r\n\r\n groupBy<T>(arr: T[], property: string): { [index: string]: T[]} {\r\n return _.groupBy(arr, property);\r\n },\r\n\r\n flatten<T>(arr: T[], shallow?: boolean): T[] {\r\n return _.flatten(arr, shallow);\r\n },\r\n\r\n intersection<T>(...arrays: T[][]): T[] {\r\n return _.intersection(...arrays);\r\n },\r\n\r\n /**\r\n * Add a value to an array, or if it is already in the array, remove it.\r\n * \r\n * @param arr array of values\r\n * @param value value to be added or removed.\r\n */\r\n addOrRemove<T = string | number>(arr: T[], value: T): T[] {\r\n const idxOfValue = arr.indexOf(value);\r\n\r\n if (idxOfValue === -1)\r\n arr.push(value);\r\n else\r\n arr.splice(idxOfValue, 1);\r\n\r\n return arr;\r\n },\r\n\r\n addOrRemoveImmutable<T>(arr: T[], value: T): T[] {\r\n const idxOfValue = arr.indexOf(value);\r\n\r\n const clonedArr = ObjectHelper.deepClone(arr);\r\n\r\n if (idxOfValue === -1)\r\n return [ ...clonedArr, value ];\r\n else\r\n return [ ...clonedArr.slice(0, idxOfValue), ...clonedArr.slice(idxOfValue + 1) ];\r\n },\r\n\r\n /**\r\n * Returns a (stably) sorted copy of list, ranked in ascending order \r\n * by the results of running each value through iteratee.\r\n * \r\n * @param arr array of values\r\n * @param iteratee an iterator function or a string name of the property to sort by.\r\n */\r\n sortBy<T extends {}, TSort = T>(arr: T[], iteratee?: Iterator<T, TSort> | keyof T): T[] {\r\n return _.sortBy<T, TSort>(arr, iteratee as Iterator<T, TSort>);\r\n },\r\n\r\n chunk<T>(array: _.Collection<T>, count: number): T[][] {\r\n return _.chunk(array, count) as T[][];\r\n },\r\n\r\n uniq<T>(array: _.List<T>): T[] {\r\n return _.uniq(array);\r\n }\r\n};","import { Radio } from 'backbone';\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ErrorHelper } from 'libs/common/backbone/core';\r\n\r\nexport interface FetchOptions {\r\n /**\r\n * Name of the required data service for fetchData.\r\n */\r\n dataServiceName: string;\r\n\r\n /**\r\n * @deprecated \r\n * DataChannelName is now referenced directly from the data service\r\n * instance itself. \r\n * \r\n * The channelName of the data service's dataChannel.\r\n */\r\n dataChannelName?: string;\r\n\r\n /**\r\n * The eventPrefix for the data being fetched.\r\n */\r\n eventPrefix: string;\r\n\r\n /**\r\n * Callback fn to fetch data give a data service instance.\r\n */\r\n fetchData: (dataService: BaseDataService) => any;\r\n\r\n /**\r\n * Callback fn to set the data when it is returned from the data service.\r\n * This will usually be a setState function.\r\n * \r\n * Deliberately a loose Function type so that we can use React setState setters.\r\n */\r\n setData: Function;\r\n\r\n /**\r\n * onError callback fn.\r\n */\r\n onError?: (error: DataServiceError) => void;\r\n\r\n /**\r\n * The eventPrefix for the corresponding delete event for the object being\r\n * fetched. This is used to listen to the delete event so that any cache\r\n * invalidation listeners can be unbound to prevent an attempt to re-fetch\r\n * the now deleted data.\r\n */\r\n deleteEventPrefix?: string;\r\n}\r\n\r\nexport const FetchHelper = {\r\n /**\r\n * Helper function to fetch data inside a hook. Listeners are bound to the data channel\r\n * request and sync events, then the request is sent. If data is returned it will be\r\n * set using the setData function passed in.\r\n */\r\n fetch<T extends BaseDataService>(options: FetchOptions, setDataFetched: (fetched: boolean) => void): () => void {\r\n const {\r\n dataServiceName,\r\n eventPrefix,\r\n fetchData,\r\n setData,\r\n onError,\r\n deleteEventPrefix\r\n } = options;\r\n\r\n if (!FunctionHelper.isFunction(fetchData)) {\r\n ErrorHelper.throw(new DevError('A fetchData function must be passed to fetch'));\r\n return;\r\n }\r\n\r\n if (!FunctionHelper.isFunction(setData)) {\r\n ErrorHelper.throw(new DevError('A setData function must be passed to fetch'));\r\n return;\r\n }\r\n\r\n const hasErrorCallback = onError && FunctionHelper.isFunction(onError);\r\n\r\n const dataService = InstanceManager.getInstance<T>(dataServiceName);\r\n\r\n const channel = Radio.channel(dataService.channelName);\r\n\r\n /**\r\n * Event names\r\n */\r\n const requestEventName = `${eventPrefix}:request`;\r\n const syncEventName = `${eventPrefix}:sync`;\r\n const errorEventName = `${eventPrefix}:error`;\r\n const invalidateEventName = `${eventPrefix}:invalidate`;\r\n const deleteEventName = deleteEventPrefix && `${deleteEventPrefix}:sync`;\r\n\r\n /**\r\n * If the object is fetched from elsewhere in the app we want the data to be\r\n * updated everywhere so we set dataFetched to false to trigger a re-fetch.\r\n */\r\n const onRequest = () => setDataFetched(false);\r\n\r\n const onSync = () => setDataFetched(true);\r\n\r\n /**\r\n * Trigger a re-fetch when the cached object is invalidated.\r\n */\r\n const onInvalidate = () => setDataFetched(false);\r\n\r\n /**\r\n * If the object is successfully deleted we don't want to\r\n * re-fetch it, so we unbind the invalidation listener.\r\n */\r\n const onDelete = () => channel.off(invalidateEventName, onInvalidate);\r\n\r\n /**\r\n * Bind listeners\r\n */\r\n channel.once(requestEventName, onRequest);\r\n channel.once(syncEventName, onSync);\r\n channel.once(invalidateEventName, onInvalidate);\r\n\r\n if (hasErrorCallback)\r\n channel.once(errorEventName, onError);\r\n\r\n if (deleteEventName)\r\n channel.once(deleteEventName, onDelete);\r\n\r\n const data = fetchData(dataService);\r\n\r\n if (data) {\r\n setDataFetched(true);\r\n options.setData(data);\r\n }\r\n\r\n /**\r\n * Clean up function to returned from a hook that fetches data.\r\n * It will dispose of the data service instance and unbind the listeners\r\n * bound above when the effect is cleaned up.\r\n */\r\n return () => {\r\n InstanceManager.releaseInstance(dataServiceName);\r\n\r\n channel.off(requestEventName, onRequest);\r\n channel.off(syncEventName, onSync);\r\n channel.off(invalidateEventName, onInvalidate);\r\n\r\n if (hasErrorCallback)\r\n channel.off(errorEventName, onError);\r\n\r\n if (deleteEventName)\r\n channel.off(deleteEventName, onDelete);\r\n };\r\n }\r\n};","import * as _ from 'underscore';\r\n\r\nexport const ObjectHelper = {\r\n isEmpty(obj: any): boolean {\r\n return _.isEmpty(obj);\r\n },\r\n\r\n values(obj: any): any[] {\r\n return _.values(obj);\r\n },\r\n\r\n keys(obj: any): string[] {\r\n return _.keys(obj);\r\n },\r\n\r\n deepClone(obj: any): any {\r\n const mapFn = _.isArray(obj) ? _.map : _.mapObject;\r\n\r\n return mapFn(obj, item => {\r\n if (_.isObject(item) || _.isArray(item))\r\n return ObjectHelper.deepClone(item);\r\n\r\n return item;\r\n });\r\n },\r\n\r\n getEnumKeys(obj: any): any[] {\r\n return Object.keys(obj).filter(x => !(parseInt(x) >= 0));\r\n },\r\n\r\n isObject(obj: any): boolean {\r\n return _.isObject(obj);\r\n },\r\n\r\n isEqual(obj1: any, obj2: any): boolean {\r\n return _.isEqual(obj1, obj2);\r\n },\r\n\r\n omit(obj: any, keys: string[]): any {\r\n return _.omit(obj, keys);\r\n }\r\n};","export const RandomHelper = {\r\n getRandomInt(max: number = 10000): number {\r\n return Math.floor(Math.random() * Math.floor(max));\r\n }\r\n};","const MILLISECOND_MULTIPLIER = 1000;\r\n\r\n// Time of day boundaries (in 24hr adult time)\r\nconst AFTERNOON_START = 12; // 12pm \r\nconst EVENING_START = 18; // 6pm\r\n\r\ntype TimeOfDay = 'morning' | 'afternoon' | 'evening';\r\n\r\nexport const TimeHelper = {\r\n currentTimestamp(): number {\r\n return new Date().valueOf();\r\n },\r\n\r\n isExpired(timestamp: number, cacheDuration: number): boolean {\r\n if (!cacheDuration)\r\n return false;\r\n\r\n const expiryTimeMilliseconds = cacheDuration * MILLISECOND_MULTIPLIER;\r\n\r\n return timestamp < (TimeHelper.currentTimestamp() - expiryTimeMilliseconds);\r\n },\r\n\r\n currentTimeOfDay(currentTime?: Date): TimeOfDay {\r\n if (!currentTime)\r\n currentTime = new Date();\r\n\r\n const currentHour = currentTime.getHours();\r\n\r\n if (currentHour >= AFTERNOON_START && currentHour < EVENING_START)\r\n return 'afternoon';\r\n\r\n if (currentHour >= EVENING_START)\r\n return 'evening';\r\n\r\n return 'morning';\r\n }\r\n};","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\n\r\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\r\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { ActionOptions } from './Actions';\r\n\r\ninterface ActionButtonProps {\r\n actionOptions: ActionOptions;\r\n}\r\n\r\nexport function ActionButton(props: React.PropsWithChildren<ActionButtonProps>): JSX.Element {\r\n const { onClick, appLink, svgName, tooltip } = props.actionOptions;\r\n\r\n let className = 'ml-2';\r\n\r\n if (props.actionOptions.className)\r\n className += ` ${props.actionOptions.className}`;\r\n\r\n if (tooltip) {\r\n return (\r\n <Tooltip title={tooltip}>\r\n <IconButton\r\n appLink={appLink}\r\n svgName={svgName}\r\n onClick={onClick}\r\n className={className}\r\n >\r\n {props.children}\r\n </IconButton>\r\n </Tooltip>\r\n );\r\n }\r\n\r\n if (svgName) {\r\n return (\r\n <IconButton\r\n onClick={onClick}\r\n appLink={appLink}\r\n svgName={svgName}\r\n className={className}\r\n >\r\n {props.children}\r\n </IconButton>\r\n );\r\n }\r\n\r\n if (appLink)\r\n return <AppLink onClick={onClick} appLink={appLink} className={className}>{props.children}</AppLink>;\r\n\r\n return (\r\n <button onClick={onClick} className={className}>\r\n {props.children}\r\n </button>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { ActionsDropdown } from './ActionsDropdown';\r\nimport { ActionButton } from './ActionButton';\r\n\r\nimport styles from './actions.scss';\r\n\r\nexport interface ActionOptions {\r\n label: string;\r\n appLink?: Core.AppLink;\r\n onClick?: (e: React.MouseEvent) => void;\r\n svgName?: string;\r\n className?: string;\r\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\r\n tooltip?: string;\r\n}\r\n\r\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\r\n\r\ninterface ActionsProps {\r\n actions: ActionOptions[];\r\n className?: string;\r\n actionsDropdownClassName?: string;\r\n sortComponent?: JSX.Element;\r\n}\r\n\r\nexport function Actions(props: ActionsProps): JSX.Element {\r\n const buttonActions: ActionOptions[] = [];\r\n const moreActions: ActionOptions[] = [];\r\n\r\n props.actions.forEach(a => {\r\n if (a.button)\r\n buttonActions.push(a);\r\n else\r\n moreActions.push(a);\r\n });\r\n\r\n let className = 'd-flex';\r\n\r\n if (props.className)\r\n className += ` ${props.className}`;\r\n\r\n return (\r\n <div className={className}>\r\n <>\r\n {!!buttonActions.length &&\r\n <span className={styles.buttonList}>\r\n {buttonActions.map((a, idx) =>\r\n <ActionButton key={idx} actionOptions={a}>\r\n {a.label}\r\n </ActionButton>\r\n )}\r\n </span>\r\n }\r\n {props.sortComponent ? props.sortComponent : '' }\r\n {!!moreActions.length &&\r\n <ActionsDropdown\r\n actions={moreActions}\r\n className={!!buttonActions.length && 'ml-2'}\r\n dropdownToggleClassName={props.actionsDropdownClassName}\r\n />\r\n }\r\n </>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\r\n\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport styles from './actions.scss';\r\n\r\nimport { ActionOptions } from './Actions';\r\n\r\nfunction getDropdownItemClassName(actionClassName?: string): string {\r\n let className = 'dropdown-item';\r\n\r\n if (actionClassName)\r\n className += ` ${actionClassName}`;\r\n\r\n return className;\r\n}\r\n\r\ninterface ActionsDropdownProps {\r\n actions: ActionOptions[];\r\n className?: string;\r\n dropdownToggleClassName?: string;\r\n}\r\n\r\nActionsDropdown.defaultProps = {\r\n dropdownToggleClassName: 'btn btn-light'\r\n};\r\n\r\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\r\n if (!props.actions || !props.actions.length)\r\n return <></>;\r\n\r\n // Generate unique id to avoid collisions.\r\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\r\n\r\n let dropdownToggleClassName = `px-0 ${styles.dropdownToggle}`;\r\n\r\n if (props.dropdownToggleClassName)\r\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\r\n\r\n return (\r\n <Dropdown className={props.className ? props.className : ''} alignRight>\r\n <Dropdown.Toggle as='button' type='button' id={dropdownToggleId} className={dropdownToggleClassName}>\r\n <SvgContainer svgName={cvSvgLibrary.More} size={SvgContainerSize.Small} />\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu>\r\n {props.actions.map((a, idx) =>\r\n <AppLink key={idx} appLink={a.appLink} className={getDropdownItemClassName(a.className)}>\r\n {a.label}\r\n </AppLink>\r\n )}\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonList\":\"cv--buttonList--2v9CT\",\"dropdownToggle\":\"cv--dropdownToggle--AYBvQ\"};","import * as React from 'react';\r\nimport { BaseAlert, AlertType } from 'libs/common/backbone/services/BaseAlertService';\r\n\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport { AlertContent } from './AlertContent';\r\nimport styles from './alert.scss';\r\n\r\nconst ALERT_FADE_TIMER = 3000;\r\n\r\nconst getAlertSvgType = (alert: BaseAlert) => {\r\n switch (alert.type) {\r\n case AlertType.Success:\r\n return cvSvgLibrary.CheckCircleOutline;\r\n\r\n case AlertType.Fail:\r\n case AlertType.Warning:\r\n return cvSvgLibrary.Warning;\r\n\r\n case AlertType.Info:\r\n default:\r\n return cvSvgLibrary.Info;\r\n }\r\n};\r\n\r\nexport interface AlertProps {\r\n alert: BaseAlert;\r\n closeAlert: () => void;\r\n}\r\n\r\nexport function Alert({ alert, closeAlert }: AlertProps): React.ReactElement {\r\n const [ closeOnTimeout, setCloseOnTimeout ] = React.useState(true);\r\n\r\n const timeoutRef = React.useRef<number>();\r\n\r\n React.useEffect(() => {\r\n if (!closeOnTimeout) {\r\n clearTimeout(timeoutRef.current);\r\n return;\r\n }\r\n\r\n timeoutRef.current = window.setTimeout(closeAlert, ALERT_FADE_TIMER);\r\n }, [closeOnTimeout]);\r\n\r\n const typeClassName = `text-${alert.type.toLowerCase()}`;\r\n\r\n return (\r\n <li\r\n className={`bg-white mt-2 p-2 show clearfix ${styles.alertItem}`}\r\n onMouseEnter={() => setCloseOnTimeout(false)} onMouseLeave={() => setCloseOnTimeout(true)}\r\n >\r\n <AlertContent\r\n alert={alert}\r\n svgName={getAlertSvgType(alert)}\r\n svgClassName={typeClassName}\r\n closeAlert={closeAlert}\r\n />\r\n </li>\r\n );\r\n}","import * as React from 'react';\r\nimport { sanitize } from 'dompurify';\r\n\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AlertProps } from './Alert';\r\nimport styles from './alert.scss';\r\n\r\ninterface AlertContentProps extends AlertProps {\r\n svgName: string;\r\n svgClassName: string;\r\n}\r\n\r\nexport function AlertContent(props: AlertContentProps): React.ReactElement {\r\n const { alert, svgName, svgClassName, closeAlert } = props;\r\n\r\n const { message, heading, appLink, appLinkText, appLinkClassName = '' } = alert;\r\n\r\n const sanitizedMessage = sanitize(message);\r\n\r\n return (\r\n <>\r\n <div className={`d-inline-block ${styles.icon}`}>\r\n <SvgContainer svgName={svgName} className={`svg-container ${svgClassName}`} />\r\n </div>\r\n <div className={`pl-2 d-inline-block ${styles.alertContent}`}>\r\n <p className={`p-0 m-0 pb-1 ${styles.heading}`}>{heading}</p>\r\n <p className={`p-0 m-0 ${styles.message}`} dangerouslySetInnerHTML={{ __html: sanitizedMessage }} />\r\n {!!appLink &&\r\n <AppLink className={appLinkClassName} appLink={appLink}>{appLinkText}</AppLink>\r\n }\r\n </div>\r\n <div className='close d-inline-block cursor-pointer' role='button' aria-hidden='true' onClick={closeAlert}>&times;</div>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\n\r\nimport { Alert } from './Alert';\r\nimport styles from './alert.scss';\r\n\r\ninterface AlertListProps {\r\n alerts: BaseAlert[];\r\n removeAlert: (id: string) => void;\r\n}\r\n\r\nexport function AlertList({ alerts, removeAlert }: AlertListProps): React.ReactElement {\r\n return (\r\n <div className={styles.alertBox}>\r\n <TransitionGroup component='ul' className={`${styles.alertList} list-unstyled`}>\r\n {alerts && alerts.map((alert, idx) =>\r\n <CSSTransition key={idx} timeout={200} classNames='alert'>\r\n <Alert alert={alert} closeAlert={() => removeAlert(alert.id)} />\r\n </CSSTransition>\r\n )}\r\n </TransitionGroup>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"alertItem\":\"cv--alertItem--3ppPT\",\"alertBox\":\"cv--alertBox--2gPqV\",\"alertList\":\"cv--alertList--1_wrK\",\"icon\":\"cv--icon--2gpnl\",\"alertContent\":\"cv--alertContent--1akpi\",\"heading\":\"cv--heading--3jnJY\"};","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\n\r\nexport interface AppLinkProps {\r\n appLink: Core.AppLink;\r\n className?: string;\r\n tag?: 'a' | 'button';\r\n onClick?: (e: React.MouseEvent) => void;\r\n}\r\n\r\nexport function AppLink(props: React.PropsWithChildren<AppLinkProps>): React.ReactElement {\r\n const { appLink, className, children, tag: AppLinkTag = 'a' } = props;\r\n\r\n if (!appLink) {\r\n return (\r\n <span className={className || ''}>\r\n {children}\r\n </span>\r\n );\r\n }\r\n\r\n let onClick = props.onClick;\r\n if (!onClick) {\r\n onClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n };\r\n }\r\n\r\n const propsToInject = {\r\n onClick,\r\n href: Core.AppLinkHelper.getHref(appLink),\r\n className\r\n };\r\n\r\n return <AppLinkTag {...propsToInject}>{children}</AppLinkTag>;\r\n}","import * as React from 'react';\r\n\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { PopupButton, PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\n\r\ninterface ConfirmationPopupProps {\r\n title: string;\r\n onClickConfirm: () => void;\r\n confirmButtonText?: string;\r\n cancelButtonText?: string;\r\n}\r\n\r\nConfirmationPopup.defaultProps = {\r\n confirmButtonText: 'Confirm',\r\n cancelButtonText: 'Cancel'\r\n};\r\n\r\ntype PropTypes = React.PropsWithChildren<ConfirmationPopupProps & PopupViewProps>;\r\n\r\nexport function ConfirmationPopup(props: PropTypes): React.ReactElement {\r\n const {\r\n title,\r\n onClickConfirm,\r\n confirmButtonText,\r\n cancelButtonText,\r\n closePopup\r\n } = props;\r\n\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: cancelButtonText\r\n },\r\n {\r\n variant: 'primary',\r\n onClick: () => { setShowButtonSpinner(true); onClickConfirm(); },\r\n buttonText: confirmButtonText,\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n return (\r\n <Popup title={title} closePopup={closePopup}>\r\n <>\r\n {props.children}\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n </Popup>\r\n );\r\n}","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 : ''} cursor-pointer`}\r\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && props.onClick(e)}\r\n onClick={props.onClick}\r\n style={props.style ? props.style : {}}\r\n >\r\n {props.children}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nconst namespace = 'shared.formButtons';\r\n\r\nconst ENTER_KEY_CODE = 13;\r\n\r\ninterface FormButtonsProps {\r\n isNew: boolean;\r\n hasNext?: boolean;\r\n}\r\n\r\nexport function FormButtons<Values extends object>(props: FormButtonsProps): JSX.Element {\r\n const formikProps = useFormikContext<Values>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n /**\r\n * This hook listens to \"Enter\" keypress events, and submits the form if there\r\n * are no errors. This prevents any edge cases where submitting doesn't work on\r\n * Enter normally, such as when a custom component is in focus.\r\n */\r\n React.useEffect(() => {\r\n function onKeyPress(e: KeyboardEvent): void {\r\n if (e.keyCode !== ENTER_KEY_CODE || !canSubmit)\r\n return;\r\n\r\n formikProps.validateForm().then(errors => {\r\n if (!Object.keys(errors).length)\r\n formikProps.submitForm();\r\n });\r\n }\r\n\r\n window.addEventListener('keypress', onKeyPress);\r\n return () => window.removeEventListener('keypress', onKeyPress);\r\n }, [canSubmit]);\r\n\r\n let phraseKey = 'save';\r\n if (props.isNew)\r\n phraseKey = 'create';\r\n if (props.hasNext)\r\n phraseKey = 'next';\r\n\r\n return (\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n <Text namespace={namespace} phrase={phraseKey} />\r\n </SpinnerButton>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { FieldAttributes } from 'formik';\r\nimport { Form } from 'react-bootstrap';\r\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\r\n\r\n/**\r\n * Use this checkbox within Formik contexts\r\n */\r\nexport function FormCheckbox<Values extends object>(props: FieldAttributes<FormFieldProps<Values>>): JSX.Element {\r\n const { label, ...fieldProps } = props;\r\n\r\n return (\r\n <Form.Group>\r\n <div className='custom-control custom-checkbox'>\r\n <FieldWrapper<Values> className='custom-control-input' {...fieldProps} />\r\n <Form.Label className='custom-control-label' htmlFor={fieldProps.id}>{label}</Form.Label>\r\n </div>\r\n </Form.Group>\r\n );\r\n}\r\n\r\n","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\ninterface CharacterCounterProps<Values extends object> {\r\n fieldName: keyof Values;\r\n limit: number;\r\n}\r\n\r\nexport function CharacterCounter<Values extends object>(props: CharacterCounterProps<Values>): JSX.Element {\r\n const { values } = useFormikContext<Values>();\r\n\r\n const field = values[props.fieldName];\r\n\r\n if (typeof field !== 'string')\r\n return <></>;\r\n\r\n return (\r\n <div className='float-right text-muted'>\r\n {field.length}/{props.limit}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Field, FieldAttributes, useFormikContext, ErrorMessage, FieldProps } from 'formik';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\n\r\nimport { CharacterCounter } from './CharacterCounter';\r\nimport { FormCheckbox } from '../form-checkbox/FormCheckbox';\r\n\r\nexport interface FormFieldProps<Values extends object> {\r\n /**\r\n * The name prop MUST be the same as the attribute\r\n * name of the value that the field is bound to.\r\n */\r\n name: string;\r\n label?: string;\r\n children?: ((props: FieldProps) => React.ReactNode) | React.ReactNode;\r\n showCharacterCounter?: boolean;\r\n}\r\n\r\nexport function FieldWrapper<Values extends object>(\r\n props: FieldAttributes<FormFieldProps<Values>> & { className: string }\r\n): React.ReactElement {\r\n const { children, ...fieldProps } = props;\r\n\r\n return (\r\n <Field {...fieldProps}>\r\n {FunctionHelper.isFunction(children)\r\n ? (f: FieldProps) => children(f)\r\n : React.Children.count(children) ? children : null\r\n }\r\n </Field>\r\n );\r\n}\r\n\r\nexport function FormField<Values extends object>(props: FieldAttributes<FormFieldProps<Values>>): React.ReactElement {\r\n const { label, className, showCharacterCounter, ...fieldProps } = props;\r\n\r\n const { errors, touched } = useFormikContext<Values>();\r\n\r\n if (fieldProps.type === 'checkbox')\r\n return <FormCheckbox<Values> {...props} />;\r\n\r\n return (\r\n <Form.Group>\r\n {!!label && <Form.Label htmlFor={fieldProps.id}>{label}</Form.Label>}\r\n <FieldWrapper<Values>\r\n className={FormHelper.getCustomFormControlClassName(errors, touched, fieldProps.name, className)}\r\n {...fieldProps}\r\n />\r\n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\r\n <CharacterCounter\r\n fieldName={(fieldProps.name as keyof Values)}\r\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\r\n />\r\n }\r\n <ErrorMessage name={fieldProps.name}>\r\n {(errorMessage: string) => <Form.Control.Feedback type='invalid'>{errorMessage}</Form.Control.Feedback>}\r\n </ErrorMessage>\r\n </Form.Group>\r\n );\r\n}","import * as React from 'react';\r\nimport { Formik, FormikValues, FormikConfig, FormikProps, FormikHelpers, useFormikContext, FormikContextType } from 'formik';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\r\n const values = ObjectHelper.deepClone(initialValues);\r\n\r\n Object.keys(values).forEach((key: keyof Values) => {\r\n if (!values.hasOwnProperty(key))\r\n return;\r\n\r\n if (ObjectHelper.isObject(values[key]))\r\n values[key] = omitNullInitialValues(values[key]);\r\n else if (values[key] === null)\r\n delete values[key];\r\n });\r\n\r\n return values;\r\n}\r\n\r\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\r\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\r\n\r\ninterface InitialStatus {\r\n allowInitialSubmit: boolean;\r\n}\r\n\r\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\r\n initialValues: FormValues | ApiValues;\r\n onSubmit: (data: FormValues, onDone: () => void) => void;\r\n castInitialValues?: boolean; // cast to validationSchema\r\n castValuesOnSubmit?: boolean; // cast to validationSchema\r\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\r\n resetOnSubmit?: boolean;\r\n}\r\n\r\nFormWrapper.defaultProps = {\r\n castInitialValues: true,\r\n castValuesOnSubmit: true\r\n};\r\n\r\nexport function FormWrapper<\r\n FormValues extends FormikValues = FormikValues,\r\n ApiValues extends FormikValues = FormikValues,\r\n ExtraProps = {}\r\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\r\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, resetOnSubmit, ...formikProps } = props;\r\n\r\n /**\r\n * If castInitialValues is true, cast initialValues to the validationSchema.\r\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\r\n */\r\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\r\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\r\n : initialValues;\r\n\r\n const onSubmitHandler = (\r\n values: FormValues,\r\n { setSubmitting, resetForm }: FormikHelpers<FormValues>\r\n ) => {\r\n /**\r\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\r\n * This is useful for trimming inputs:\r\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\r\n */\r\n const formattedData = castValuesOnSubmit && props.validationSchema\r\n ? props.validationSchema.cast(values)\r\n : values;\r\n\r\n onSubmit(formattedData, () => {\r\n resetOnSubmit && resetForm();\r\n setSubmitting(false);\r\n });\r\n };\r\n\r\n const initialStatus: InitialStatus = {\r\n allowInitialSubmit: props.allowInitialSubmit\r\n };\r\n\r\n return (\r\n <Formik<FormValues, ExtraProps>\r\n enableReinitialize\r\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\r\n initialValues={formattedInitialValues}\r\n onSubmit={onSubmitHandler}\r\n initialStatus={initialStatus}\r\n >\r\n {FunctionHelper.isFunction(props.children)\r\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\r\n : React.Children.count(props.children) ? props.children : null\r\n }\r\n </Formik>\r\n );\r\n}\r\n\r\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\r\n return useFormikContext<T>();\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport styles from './icon-button.scss';\r\n\r\ninterface IconButtonProps {\r\n svgName: string;\r\n className?: string;\r\n appLink?: Core.AppLink;\r\n onClick?: (e: React.MouseEvent) => void;\r\n}\r\n\r\n/**\r\n * Renders a button with an svg followed by text.\r\n * The svg is required and is set using the svgName prop.\r\n * Button text is optional and can be set using props.children.\r\n */\r\nexport function IconButton(props: React.PropsWithChildren<IconButtonProps>): React.ReactElement {\r\n const { svgName, children, appLink, className, onClick } = props;\r\n\r\n let buttonClassName = `${className} ${styles.iconButton}`;\r\n\r\n if (children) {\r\n buttonClassName += ` ${styles.iconWithText}`;\r\n } else {\r\n buttonClassName += ` ${styles.iconOnly}`;\r\n }\r\n\r\n const svg = <SvgContainer svgName={svgName} className={styles.svg} />;\r\n\r\n if (!appLink) {\r\n return (\r\n <button className={buttonClassName} onClick={onClick}>\r\n {svg}\r\n {children}\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <AppLink appLink={appLink} className={buttonClassName} onClick={onClick}>\r\n {svg}\r\n {children}\r\n </AppLink>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svg\":\"cv--svg--3OUhC\",\"iconButton\":\"cv--iconButton--3t3VL\",\"iconWithText\":\"cv--iconWithText--2KLHo\",\"iconOnly\":\"cv--iconOnly--2rQWb\"};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { Cursors } from 'libs/common/backbone/interfaces';\r\n\r\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\r\n\r\nfunction buildCursor(appLink: Core.AppLink, cursorParam: string): Core.AppLink {\r\n if (!cursorParam)\r\n return null;\r\n\r\n return {\r\n application: appLink.application,\r\n action: appLink.action,\r\n args: appLink.args,\r\n params: Object.assign({}, appLink.params, { cursor: cursorParam })\r\n };\r\n}\r\n\r\ninterface CursorPaginationProps {\r\n cursors: Cursors;\r\n appLink: Core.AppLink;\r\n className?: string;\r\n}\r\n\r\nPagination.defaultProps = {\r\n className: 'py-2'\r\n};\r\n\r\nexport function Pagination({ appLink, cursors, className }: CursorPaginationProps): JSX.Element {\r\n return (\r\n <LanguageNamespaceContext.Provider value='shared.pagination'>\r\n <div className={className}>\r\n <AppLink appLink={buildCursor(appLink, cursors.previous)} className={`btn btn-secondary mr-1 ${!cursors.previous ? 'disabled' : ''}`}>\r\n <Text phrase='previous' />\r\n </AppLink>\r\n\r\n <AppLink appLink={buildCursor(appLink, cursors.next)} className={`btn btn-secondary ${!cursors.next ? 'disabled' : ''}`}>\r\n <Text phrase='next' />\r\n </AppLink>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}\r\n\r\ninterface LocalPaginationProps {\r\n onClickNext: () => void;\r\n onClickBack: () => void;\r\n currentPage: number;\r\n totalPages: number;\r\n className?: string;\r\n}\r\n\r\nLocalPagination.defaultProps = {\r\n className: 'py-2'\r\n};\r\n\r\nexport function LocalPagination(props: LocalPaginationProps): JSX.Element {\r\n function onClickBack(): void {\r\n if (props.currentPage === 1)\r\n return;\r\n props.onClickBack();\r\n }\r\n\r\n function onClickNext(): void {\r\n if (props.currentPage === props.totalPages)\r\n return;\r\n props.onClickNext();\r\n }\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value='shared.pagination'>\r\n <div className={props.className}>\r\n <DivButton\r\n onClick={onClickBack}\r\n className={`btn btn-secondary mr-1 cursor-pointer ${props.currentPage === 1 ? 'disabled' : ''}`}\r\n >\r\n <Text phrase='previous' />\r\n </DivButton>\r\n\r\n <DivButton\r\n onClick={onClickNext}\r\n className={`btn btn-secondary cursor-pointer ${props.currentPage === props.totalPages ? 'disabled' : ''}`}\r\n >\r\n <Text phrase='next' />\r\n </DivButton>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { PopupLoadingSpinner } from './PopupLoadingSpinner';\r\n\r\ninterface PopupProps {\r\n title?: string;\r\n closeButton?: boolean;\r\n closePopup: () => void;\r\n onEntered?: () => void;\r\n showLoadingSpinner?: boolean;\r\n}\r\n\r\nexport function Popup(props: React.PropsWithChildren<PopupProps>): React.ReactElement {\r\n const { title, closeButton = true, closePopup, onEntered, showLoadingSpinner } = props;\r\n\r\n const modalProps = {\r\n show: true,\r\n onHide: closePopup,\r\n ...(FunctionHelper.isFunction(onEntered) ? { onEntered } : {})\r\n };\r\n\r\n return (\r\n <Modal {...modalProps}>\r\n {!!title &&\r\n <Modal.Header closeButton={closeButton}>\r\n <Modal.Title>{title}</Modal.Title>\r\n </Modal.Header>\r\n }\r\n {showLoadingSpinner\r\n ? <PopupLoadingSpinner />\r\n : <Modal.Body>\r\n {props.children}\r\n </Modal.Body>\r\n }\r\n </Modal>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button, ButtonProps } from 'react-bootstrap';\r\n\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\n\r\nexport interface PopupButton extends ButtonProps {\r\n className?: string;\r\n onClick: () => void;\r\n buttonText: string;\r\n isSpinnerButton?: boolean;\r\n showSpinner?: boolean;\r\n}\r\n\r\nconst getButton = (props: PopupButton, idx: number) => {\r\n const {\r\n buttonText,\r\n type = 'button',\r\n isSpinnerButton,\r\n showSpinner = false,\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n const btnProps = {\r\n key: idx,\r\n type,\r\n className: `ml-2${className ? ` ${className}` : ''}`,\r\n ...rest\r\n };\r\n\r\n if (isSpinnerButton)\r\n return <SpinnerButton showSpinner={showSpinner} {...btnProps}>{buttonText}</SpinnerButton>;\r\n\r\n return <Button {...btnProps}>{buttonText}</Button>;\r\n};\r\n\r\ninterface PopupButtonsProps {\r\n buttons: PopupButton[];\r\n}\r\n\r\nexport function PopupButtons({ buttons }: PopupButtonsProps): React.ReactElement {\r\n return (\r\n <div className='d-flex justify-content-end border-top pt-3 px-3 mx-n3'>\r\n {buttons.map((b, idx) => getButton(b, idx))}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Spinner } from 'react-bootstrap';\r\n\r\nexport function PopupLoadingSpinner(): React.ReactElement {\r\n return (\r\n <div className='text-center p-5'>\r\n <Spinner as='div' animation='border' role='status' />\r\n </div>\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\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 * 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 * 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\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};\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 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 return (\r\n <form onSubmit={onSubmit}>\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 onClickSearchIcon: !!props.submitOnClickSearchIcon && onSubmit,\r\n searchIconPlacement: props.searchIconPlacement\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 </form>\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\nconst getSvgContainerClassName = (onClickSearch: () => void) => {\r\n const className = 'd-inline-block svg-container';\r\n\r\n if (!FunctionHelper.isFunction(onClickSearch))\r\n return className;\r\n\r\n return className + ' cursor-pointer';\r\n};\r\n\r\ninterface SearchInputProps {\r\n onClickSearchIcon?: () => void;\r\n searchIconPlacement?: 'left' | 'right' | false;\r\n}\r\n\r\nexport function SearchInput<T extends {}>(props: SearchInputProps & Autosuggest.InputProps<T>): JSX.Element {\r\n const { onClickSearchIcon, searchIconPlacement, className, ...inputProps } = props;\r\n\r\n let inputClassName = `form-control ${styles.input}`;\r\n\r\n let iconContainerClassName = 'input-group-text bg-white';\r\n\r\n\r\n if (searchIconPlacement === 'right') {\r\n inputClassName += ' border-right-0';\r\n iconContainerClassName += ' pl-0';\r\n }\r\n\r\n if (searchIconPlacement === 'left') {\r\n inputClassName += ' border-left-0';\r\n iconContainerClassName += ' pr-0';\r\n }\r\n\r\n if (className)\r\n inputClassName += ` ${className}`;\r\n\r\n\r\n const SearchIcon = () => (\r\n <div className={iconContainerClassName}>\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Search}\r\n size={SvgContainerSize.Small}\r\n onClick={onClickSearchIcon}\r\n className={getSvgContainerClassName(onClickSearchIcon)}\r\n />\r\n </div>\r\n );\r\n\r\n return (\r\n <div className='input-group'>\r\n {searchIconPlacement === 'left' &&\r\n <div className='input-group-prepend'>\r\n <SearchIcon />\r\n </div>\r\n }\r\n <input className={inputClassName} {...inputProps as React.HTMLProps<HTMLInputElement>} />\r\n {searchIconPlacement === 'right' &&\r\n <div className='input-group-append'>\r\n <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 = {\"input\":\"cv--input--3MysI\",\"suggestionsContainerOpen\":\"cv--suggestionsContainerOpen--ahMdW\",\"sectionContainer\":\"cv--sectionContainer--xstWL\",\"suggestionHighlighted\":\"cv--suggestionHighlighted--3YTCa\"};","import * as React from 'react';\r\nimport { Button, ButtonProps, Spinner } from 'react-bootstrap';\r\n\r\ninterface ButtonDimensions {\r\n height?: number;\r\n width?: number;\r\n}\r\n\r\nexport interface SpinnerButtonProps extends ButtonProps {\r\n showSpinner: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport function SpinnerButton(props: React.PropsWithChildren<SpinnerButtonProps>): React.ReactElement {\r\n const { showSpinner, children, ...otherProps } = props;\r\n\r\n const ref = React.useRef<Button & HTMLButtonElement>();\r\n const [ dimensions, setDimensions ] = React.useState<ButtonDimensions>({});\r\n\r\n React.useEffect(() => {\r\n const { width, height } = dimensions;\r\n\r\n // Only set dimensions once\r\n if (width && height)\r\n return;\r\n\r\n const el = ref.current;\r\n\r\n const elHeight = el.offsetHeight;\r\n const elWidth = el.offsetWidth;\r\n\r\n if (!elHeight || !elWidth)\r\n return;\r\n\r\n setDimensions({\r\n width: elWidth,\r\n height: elHeight\r\n });\r\n });\r\n\r\n React.useEffect(() => {\r\n const { width, height } = dimensions;\r\n\r\n if (!width || !height)\r\n return;\r\n\r\n const el = ref.current;\r\n\r\n /**\r\n * offsetHeight and offsetWidth return floored\r\n * integers so we add 1px to each to account\r\n * for any rounding loss.\r\n */\r\n el.style.width = `${width + 1}px`;\r\n el.style.height = `${height + 1}px`;\r\n }, [dimensions]);\r\n\r\n return (\r\n <Button ref={ref} disabled={showSpinner} {...otherProps} >\r\n {showSpinner\r\n ? <Spinner as='span' animation='border' role='status' size='sm' />\r\n : children\r\n }\r\n </Button>\r\n );\r\n}","import * as React from 'react';\r\nimport { Placement } from 'react-bootstrap/Overlay';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { SvgHelper } from 'libs/shared/utils/SvgHelper';\r\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\r\n\r\nconst DEFAULT_CLASS_NAME = 'd-inline-block svg-container';\r\nconst DEFAULT_TAG_NAME = 'span';\r\n\r\nexport enum SvgContainerSize {\r\n Standard = 'std',\r\n Small = 'sm',\r\n Medium = 'md',\r\n Large = 'lg',\r\n ExtraLarge = 'xlg'\r\n}\r\n\r\ninterface SvgContainerProps {\r\n svgName: string;\r\n size?: SvgContainerSize;\r\n className?: string;\r\n tagName?: React.ElementType;\r\n onClick?: (...args: any[]) => void;\r\n title?: string;\r\n tooltipPlacement?: Placement;\r\n}\r\n\r\nexport function SvgContainer(props: SvgContainerProps): React.ReactElement {\r\n const {\r\n svgName,\r\n className = DEFAULT_CLASS_NAME,\r\n tagName = DEFAULT_TAG_NAME,\r\n size = SvgContainerSize.Standard,\r\n onClick,\r\n title,\r\n tooltipPlacement = 'right'\r\n } = props;\r\n\r\n const Container = tagName;\r\n\r\n const containerProps = {\r\n dangerouslySetInnerHTML: { __html: SvgHelper.getSvg(svgName) },\r\n className: `${className} ${size}`,\r\n onClick: FunctionHelper.isFunction(onClick) ? onClick : null\r\n };\r\n\r\n if (!title)\r\n return <Container {...containerProps} />;\r\n\r\n return (\r\n <Tooltip title={title} placement={tooltipPlacement}>\r\n <Container {...containerProps} />\r\n </Tooltip>\r\n );\r\n}","import * as React from 'react';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\ninterface LanguageInterpolationOptions {\r\n smartCount?: number;\r\n [propName: string]: any;\r\n}\r\n\r\ninterface TextProps {\r\n phrase: string;\r\n namespace?: string;\r\n options?: LanguageInterpolationOptions;\r\n}\r\n\r\n// Value is the language namespace\r\nexport const LanguageNamespaceContext = React.createContext<string>('');\r\n\r\nexport const Text = React.memo(function(props: TextProps): JSX.Element {\r\n const { phrase, namespace: namespaceProp, options } = props;\r\n\r\n const contextNamespace = React.useContext(LanguageNamespaceContext);\r\n const namespace = namespaceProp || contextNamespace;\r\n\r\n const translation = LanguageService.getPhrase(namespace, phrase, options);\r\n\r\n return <span dangerouslySetInnerHTML={{ __html: translation }}></span>;\r\n}, (prevProps, nextProps) => {\r\n return (\r\n prevProps.namespace === nextProps.namespace\r\n && prevProps.phrase === nextProps.phrase\r\n && ObjectHelper.isEqual(prevProps.options, nextProps.options)\r\n );\r\n});","import * as React from 'react';\r\nimport { OverlayTrigger, Tooltip as BsTooltip } from 'react-bootstrap';\r\nimport { Placement } from 'react-bootstrap/Overlay';\r\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\r\n\r\ntype TriggerType = 'hover' | 'click' | 'focus';\r\n\r\ninterface TooltipProps {\r\n title: string;\r\n placement?: Placement;\r\n trigger?: TriggerType | TriggerType[];\r\n}\r\n\r\nTooltip.defaultProps = {\r\n trigger: [ 'hover', 'click', 'focus' ],\r\n placement: 'top'\r\n};\r\n\r\nexport function Tooltip(props: React.PropsWithChildren<TooltipProps>): React.ReactElement {\r\n const { title, placement, trigger, children } = props;\r\n\r\n return (\r\n <OverlayTrigger\r\n placement={placement}\r\n overlay={<BsTooltip id={`${title}-${RandomHelper.getRandomInt()}`}>{title}</BsTooltip>}\r\n trigger={trigger}\r\n >\r\n {children}\r\n </OverlayTrigger>\r\n );\r\n}\r\n","export const CacheDurations = {\r\n SHORT: 120, // 2 minutes\r\n STANDARD: 600 // 10 minutes\r\n};","export const SharedDataPrefixes = {\r\n SUBJECT_PLAYLISTS: 'subject:playlists',\r\n CURRENT_USER: 'current:user',\r\n WORKSPACE: 'workspace',\r\n CONFIG: 'config',\r\n LOCALE: 'locale',\r\n PHRASES: 'phrases',\r\n SEARCH_FILTERS: 'search:filters',\r\n SERIES: 'series',\r\n NOTIFICATIONS: 'notifications',\r\n SUGGEST_EDIT: 'suggest:edit'\r\n};","import { ImageType } from 'libs/shared/enums/Images';\r\n\r\ninterface IImageMinDimensions {\r\n width: number;\r\n height: number;\r\n}\r\n\r\n// Dimensions taken from the CV Image Style Guide:\r\n// https://clickview.quip.com/iKonAkQXrNDO/Image-Format-Guide-V5-Feb-2020\r\nexport const ImageMinDimensions: { [index: string]: IImageMinDimensions } = {\r\n [ImageType.Thumbnails]: {\r\n width: 1280,\r\n height: 720\r\n },\r\n\r\n [ImageType.Banners]: {\r\n width: 3600,\r\n height: 666\r\n },\r\n\r\n [ImageType.Covers]: {\r\n width: 1080,\r\n height: 1080\r\n },\r\n\r\n [ImageType.Posters]: {\r\n width: 1000,\r\n height: 1500\r\n },\r\n\r\n [ImageType.TallPosters]: {\r\n width: 1080,\r\n height: 1920\r\n },\r\n\r\n [ImageType.HeroBanners]: {\r\n width: 1920,\r\n height: 640\r\n }\r\n};","export const LayoutRegions = {\r\n TOP_NAV: 'top:nav',\r\n LEFT_NAV: 'left:nav',\r\n CONTENT: 'content',\r\n POPUP: 'popup',\r\n ALERT: 'alert',\r\n};","export const SharedDataChannels = {\r\n CONFIG: 'config:data:service',\r\n USER: 'user:data:service',\r\n LANGUAGE: 'language:data:service',\r\n LIBRARY: 'library:data:service',\r\n SEARCH: 'search:data:service',\r\n SERIES: 'series:data:service',\r\n NOTIFICATIONS: 'notifications:data:service',\r\n NOTIFICATIONS_SOCKET: 'notifications:socket:service'\r\n};\r\n\r\nexport const SharedServiceChannels = {\r\n PENDING_ITEMS: 'pending:items:service',\r\n VIDEO_UPLOAD: 'video:upload:service',\r\n SUBTITLE_UPLOAD: 'subtitle:upload:service',\r\n RESOURCE_UPLOAD: 'resource:upload:service',\r\n CONTEXTUAL_SEARCH: 'contextual:search:service'\r\n};\r\n\r\nexport const SharedAppChannels = {\r\n NOTIFICATIONS: 'notifications:application'\r\n};","export const SharedDataServices = {\r\n Config: 'ConfigDataService',\r\n User: 'UserDataService',\r\n Language: 'LanguageDataService',\r\n Video: 'VideoDataService',\r\n VideoUpload: 'VideoUpload',\r\n Library: 'LibraryDataService',\r\n Search: 'SearchDataService',\r\n Series: 'SeriesDataService',\r\n Notification: 'NotificationDataService',\r\n NotificationSocket: 'NotificationSocketService'\r\n};\r\n\r\nexport const SharedServices = {\r\n ImageUrl: 'ImageUrlService',\r\n PendingItems: 'PendingItemsService',\r\n Alerts: 'AlertService',\r\n VideoUpload: 'VideoUploadService',\r\n ResourceUpload: 'ResourceUploadService',\r\n SubtitleUpload: 'SubtitleUploadService',\r\n VideoMixin: 'VideoMixinService',\r\n ContextualSearch: 'ContextualSearchService',\r\n Context: 'ContextService',\r\n Notification: 'NotificationService',\r\n AppOptions: 'AppOptionsService'\r\n};","// Maps to enum in SubjectApi but uses the\r\n// key rather than the value\r\nexport enum ClassificationType {\r\n Subject = 'Subject',\r\n Topic = 'Topic'\r\n}","export enum GlanceFormat {\r\n Markdown = 'text/markdown'\r\n}","export enum ImageSize {\r\n Small = 'small',\r\n Medium = 'medium',\r\n Large = 'large'\r\n}\r\n\r\nexport enum ImageType {\r\n Thumbnails = 0,\r\n Banners = 1,\r\n Avatars = 2,\r\n Logos = 3,\r\n Covers = 4,\r\n Posters = 5,\r\n TallPosters = 6,\r\n HeroBanners = 7\r\n}\r\n\r\nexport enum ResizeType {\r\n Crop,\r\n Stretched,\r\n Cover\r\n}\r\n\r\nexport enum FileIdType {\r\n None,\r\n ImageAPIv1,\r\n FileAPIv1,\r\n ImageAPIv2,\r\n}","export enum MasterType {\r\n Audience = 1,\r\n Category = 2,\r\n Channel = 3,\r\n Chapter = 4,\r\n Comment = 5,\r\n OwnerComment = 6,\r\n Image = 7,\r\n Thumbnail = 8,\r\n Avatar = 9,\r\n Banner = 10,\r\n Video = 11,\r\n Trailer = 12,\r\n Rating = 13,\r\n Topic = 14,\r\n Series = 15,\r\n Season = 16,\r\n HostedMediaObjectCollection = 17,\r\n ExchangeCollection = 18,\r\n CustomMediaObjectCollection = 19,\r\n Playlist = 20,\r\n ClickViewTvCollection = 21,\r\n ClickViewProductionsCollection = 22,\r\n User = 23,\r\n SystemUser = 24,\r\n Customer = 25,\r\n Country = 26,\r\n Organisation = 28,\r\n SystemOrganisation = 29,\r\n Group = 30,\r\n SystemGroup = 31,\r\n FlagReason = 32,\r\n Library = 33,\r\n Interactive = 34,\r\n WorkspaceCollection = 35,\r\n Conversation = 36,\r\n Message = 37,\r\n Notification = 38,\r\n Clip = 39,\r\n Link = 40,\r\n UserChannel = 41,\r\n Resource = 42,\r\n VideoStream = 43,\r\n AudioStream = 44,\r\n Tag = 45,\r\n Subtitle = 46,\r\n LicencedContentCollection = 47,\r\n PublicCollection = 48,\r\n CategoryTree = 49,\r\n Logo = 50,\r\n Permission = 51,\r\n Subject = 52,\r\n Field = 53,\r\n Company = 54,\r\n Person = 55,\r\n Cover = 56,\r\n Poster = 57,\r\n SubjectAudience = 58\r\n}","/**\r\n * Breakpoints:\r\n * - xs: 0\r\n * - sm: 576px\r\n * - md: 768px\r\n * - lg: 992px\r\n * - xl: 1200px\r\n */\r\n\r\nexport enum MediaQueryStrings {\r\n XS = `(max-width: 575px)`,\r\n SM = `(min-width: 576px) and (max-width: 767px)`,\r\n MD = `(min-width: 768px) and (max-width: 991px)`,\r\n LG = `(min-width: 992px)`,\r\n XL = `(min-width: 1200px)`,\r\n XXL = `(min-width: 1440px)`, // XXL is enough for both a max size .container and our left nav\r\n\r\n SMDown = `(max-width: 576px)`,\r\n MDDown = `(max-width: 768px)`\r\n}","export enum ThemeType {\r\n Glance = 'glance'\r\n}","import { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseAlertService, BaseAlert, BaseAlertOptions, AlertType, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nexport const useAlerts = () => {\r\n const alertService = useService<BaseAlertService>(CommonServices.ALERT);\r\n\r\n return {\r\n success(alertContent: string | BaseAlert | BaseAlertOptions): void {\r\n alertService.success(alertContent)();\r\n },\r\n error(alertContent: string | BaseAlert | BaseAlertOptions): void {\r\n alertService.error(alertContent)();\r\n },\r\n warning(alertContent: string): void {\r\n alertService.createAlert({\r\n type: AlertType.Warning,\r\n heading: DefaultAlertHeading.Warning,\r\n message: alertContent\r\n });\r\n }\r\n };\r\n};","import * as React from 'react';\r\nimport { FormikValues, FormikProps } from 'formik';\r\n\r\n/**\r\n * useCanSubmitForm determines if a form can be submitted.\r\n * \r\n * It will return true if a form is valid and has been changed from it's initial state.\r\n * \r\n * A common use case for this is determining whether or not to enable\r\n * a submit button in a form.\r\n */\r\nexport function useCanSubmitForm<Values extends FormikValues>(formikProps: FormikProps<Values>): boolean {\r\n const [ canSubmit, setCanSubmit ] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (!formikProps.isValid) {\r\n setCanSubmit(false);\r\n return;\r\n }\r\n\r\n // If the form values have changed of if allowInitialSubmit is true, set canSubmit to true.\r\n if (formikProps.dirty || formikProps.initialStatus?.allowInitialSubmit)\r\n setCanSubmit(true);\r\n else\r\n setCanSubmit(false);\r\n\r\n }, [ formikProps.isValid, formikProps.initialStatus?.allowInitialSubmit, formikProps.dirty, formikProps.values ]);\r\n\r\n React.useEffect(() => {\r\n if (formikProps.isSubmitting)\r\n setCanSubmit(false);\r\n }, [formikProps.isSubmitting]);\r\n\r\n return canSubmit;\r\n}\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport function useMediaQuery(query: string): boolean {\r\n const [ matches, setMatches ] = useState(window.matchMedia(query).matches);\r\n\r\n useEffect(() => {\r\n const media = window.matchMedia(query);\r\n\r\n if (media.matches !== matches)\r\n setMatches(media.matches);\r\n\r\n const listener = () => setMatches(media.matches);\r\n\r\n media.addListener(listener);\r\n\r\n return () => media.removeListener(listener);\r\n }, [query]);\r\n\r\n return matches;\r\n}\r\n","import { useState, useEffect } from 'react';\r\n\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nfunction isOrderEqual(arr1: BaseObject[], arr2: BaseObject[]): boolean {\r\n let isEqual = true;\r\n\r\n if (arr1.length !== arr2.length)\r\n return false;\r\n\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i].id !== arr2[i].id) {\r\n isEqual = false;\r\n break;\r\n }\r\n }\r\n\r\n return isEqual;\r\n}\r\n\r\n/**\r\n * This function can be used to temporarily store an array of reordered objects\r\n * until the array obtained from the application store updates to the new order.\r\n * \r\n * @param items array of objects from application store.\r\n */\r\nexport function useReorderedItems<T extends BaseObject>(\r\n items: T[]\r\n): [ T[], React.Dispatch<React.SetStateAction<T[]>> ] {\r\n const [ reorderedItems, setReorderedItems ] = useState<T[]>();\r\n\r\n useEffect(() => {\r\n if (!reorderedItems)\r\n return;\r\n\r\n if (items.length !== reorderedItems.length || isOrderEqual(items, reorderedItems))\r\n setReorderedItems(null);\r\n }, [items]);\r\n\r\n return [ reorderedItems, setReorderedItems ];\r\n}","import * as Actions from './actions';\r\nimport * as Arrows from './arrows';\r\nimport * as Objects from './objects';\r\nimport * as Player from './player';\r\nimport * as Status from './status';\r\nimport * as _ from 'underscore';\r\n\r\n/**\r\n * SVGs must be exported here to ensure that they are part\r\n * of the final webpack bundle.\r\n * DO NOT import this into local Marionette files.\r\n */\r\nexport const importedSvgs = [\r\n Actions.AddToPlaylist,\r\n Actions.Delete,\r\n Actions.Edit,\r\n Actions.More,\r\n Actions.Preview,\r\n Actions.Search,\r\n Actions.Share,\r\n Actions.Upload,\r\n Actions.Plus,\r\n Actions.Close,\r\n Actions.Down,\r\n Actions.Right,\r\n Actions.UpDown,\r\n Actions.VisibleOff,\r\n Actions.VisibleOn,\r\n Actions.NewWindow,\r\n Actions.NoEdit,\r\n Actions.EditClickView,\r\n Arrows.Caret,\r\n Arrows.ArrowLeft,\r\n Arrows.ChevronUp,\r\n Arrows.ChevronDown,\r\n Arrows.ChevronLeft,\r\n Arrows.ChevronRight,\r\n Arrows.Enter,\r\n Objects.Folder,\r\n Objects.File,\r\n Objects.FileImg,\r\n Objects.FilePDF,\r\n Objects.FileExcel,\r\n Objects.FilePowerpoint,\r\n Objects.FileWord,\r\n Objects.FileZip,\r\n Objects.Resources,\r\n Objects.Star,\r\n Objects.StarOutline,\r\n Objects.Archive,\r\n Objects.Bell,\r\n Objects.Playlist,\r\n Objects.PublisherArchive,\r\n Objects.Link,\r\n Objects.Calendar,\r\n Objects.Handle,\r\n Objects.Subject,\r\n Objects.Series,\r\n Objects.Heart,\r\n Objects.HeartOutline,\r\n Objects.WhiteWave,\r\n Objects.Cog,\r\n Objects.Video,\r\n Objects.Compass,\r\n Objects.History,\r\n Objects.Tag,\r\n Player.Play,\r\n Player.PlayCircle,\r\n Player.CloseCaption,\r\n Status.Check,\r\n Status.CheckCircleOutline,\r\n Status.CheckCircle,\r\n Status.CloseCaptionBadge,\r\n Status.Info,\r\n Status.Question,\r\n Status.Lock,\r\n Status.Warning,\r\n Status.WarningOutline\r\n];\r\n\r\n/**\r\n * SVGs available within the CV library\r\n * Strings *must* match the svg filename.\r\n *\r\n * DO NOT import this into local Marionette files.\r\n * Use cvSvgLibrary instead.\r\n */\r\nexport enum localSvgs {\r\n AddToPlaylists = 'add-to-playlist',\r\n Caret = 'caret',\r\n Delete = 'delete',\r\n Edit = 'edit',\r\n NoEdit = 'no-edit',\r\n Close = 'close',\r\n Folder = 'folder',\r\n Resources = 'resources',\r\n More = 'more',\r\n Bell = 'bell',\r\n Plus = 'plus',\r\n Search = 'search',\r\n Share = 'share',\r\n Upload = 'upload',\r\n Preview = 'preview',\r\n CircleCheck = 'circle-check',\r\n Down = 'down',\r\n Right = 'right',\r\n UpDown = 'up-down',\r\n ChevronUp = 'chevron-up',\r\n ChevronDown = 'chevron-down',\r\n ChevronLeft = 'chevron-left',\r\n ChevronRight = 'chevron-right',\r\n VisibleOff = 'visible-off',\r\n VisibleOn = 'visible-on',\r\n PublisherArchive = 'publisher-archive',\r\n Play = 'play',\r\n PlayCircle = 'play-circle',\r\n ArrowLeft = 'arrow-left',\r\n CheckCircleOutline = 'check-circle-o',\r\n CheckCircle = 'check-circle',\r\n Check = 'check',\r\n Lock = 'lock',\r\n Link = 'link',\r\n Info = 'info',\r\n Question = 'question',\r\n Star = 'star',\r\n StarOutline = 'star-o',\r\n Archive = 'archive',\r\n Warning = 'warning',\r\n WarningOutline = 'warning-o',\r\n NewWindow = 'new-window',\r\n File = 'file',\r\n FilePDF = 'file-pdf',\r\n FileExcel = 'file-excel',\r\n FilePowerpoint = 'file-ppt',\r\n FileWord = 'file-word',\r\n FileImg = 'file-img',\r\n FileZip = 'file-zip',\r\n Enter = 'enter',\r\n Calendar = 'calendar',\r\n CloseCaption = 'close-caption',\r\n CloseCaptionBadge = 'close-caption-badge',\r\n Playlist = 'playlist',\r\n Handle = 'handle',\r\n Subject = 'subject',\r\n Series = 'series',\r\n EditClickView = 'edit-clickview',\r\n Heart = 'heart',\r\n HeartOutline = 'heart-outline',\r\n WhiteWave = 'white-wave',\r\n Cog = 'cog',\r\n Video = 'video',\r\n Compass = 'compass',\r\n History = 'history',\r\n Tag = 'tag'\r\n}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"add-to-playlist\",\"icon\":[\"24\",\"24\",[],\"\",\"M20.1 16.4h1.8a.6.6 0 1 1 0 1.2h-1.8v1.8a.6.6 0 1 1-1.2 0v-1.8h-1.8a.6.6 0 1 1 0-1.2h1.8v-1.8a.6.6 0 0 1 1.2 0v1.8zM10.5 9a.5.5 0 1 1 0-1h6a.5.5 0 1 1 0 1h-6zm0 3.5a.5.5 0 1 1 0-1h6a.5.5 0 1 1 0 1h-6zm0 3.5a.5.5 0 1 1 0-1h4a.5.5 0 1 1 0 1h-4zm5.5 3a.5.5 0 1 1 0 1H6.5A2.5 2.5 0 0 1 4 17.5v-11A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5V12a.5.5 0 1 1-1 0V6.5A1.5 1.5 0 0 0 17.5 5h-11A1.5 1.5 0 0 0 5 6.5v11A1.5 1.5 0 0 0 6.5 19H16zm-8-2.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-7a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"close\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.959 10.641l4.402-4.296a.964.964 0 0 1 1.358 0 .951.951 0 0 1 0 1.35l-4.403 4.297 4.403 4.378a.951.951 0 0 1 0 1.35.964.964 0 0 1-1.358 0l-4.402-4.378-4.32 4.378a.964.964 0 0 1-1.358 0 .951.951 0 0 1 0-1.35l4.32-4.378-4.32-4.362a.951.951 0 0 1 0-1.35.964.964 0 0 1 1.358 0l4.32 4.361z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"delete\",\"icon\":[\"24\",\"24\",[],\"\",\"M14.5 7h4a.5.5 0 1 1 0 1h-1.14a1 1 0 0 1-.005.09l-.909 10a1 1 0 0 1-.996.91h-6.9a1 1 0 0 1-.996-.91l-.91-10A1.013 1.013 0 0 1 6.64 8H5.5a.5.5 0 0 1 0-1h4A1.5 1.5 0 0 1 11 5.5h2A1.5 1.5 0 0 1 14.5 7zm-1 0a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 0-.5.5h3zm-4 3a.463.463 0 0 0-.462.499L9.462 16a.54.54 0 0 0 .574.498.463.463 0 0 0 .426-.498l-.424-5.502A.54.54 0 0 0 9.5 10zm2.5 0a.5.5 0 0 0-.5.5V16a.5.5 0 1 0 1 0v-5.5a.5.5 0 0 0-.5-.5zm2.5 0a.54.54 0 0 0-.538.499L13.538 16a.463.463 0 0 0 .462.5.54.54 0 0 0 .538-.499l.424-5.502A.463.463 0 0 0 14.5 10z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"down\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 10l8 .014L12 14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"edit-clickview\",\"icon\":[\"20\",\"20\",[],\"\",\"M17.6404852,5.71727477 L18.2297408,6.30653042 C18.7178962,6.79468579 18.7178962,7.58614201 18.2297408,8.07429738 L8.60812289,17.6959153 C6.71135346,18.0295451 5.75309028,18.1864816 5.73333333,18.1667246 C5.71357639,18.1469677 5.88616537,17.2043571 6.25110029,15.3388927 L15.8727182,5.71727477 C16.3608736,5.22911941 17.1523298,5.22911941 17.6404852,5.71727477 Z M8.7636789,16.361848 L16.05144,9.07408693 L14.8729287,7.89557563 L7.54002172,15.2284826 L8.7636789,16.361848 Z M6.74626541,17.1725049 C7.12145752,17.1092038 7.58975231,17.0283895 8.15085565,16.9301078 L6.99799308,15.862313 C6.89682248,16.3819093 6.8128974,16.8187273 6.74626541,17.1725049 Z M15.4621843,7.30631998 L16.6406956,8.48483128 L17.6404852,7.48504173 C17.8032036,7.32232327 17.8032036,7.05850453 17.6404852,6.89578608 L17.0512295,6.30653042 C16.8885111,6.14381197 16.6246923,6.14381197 16.4619739,6.30653042 L15.4621843,7.30631998 Z M6.33566019,14.9908489 C6.2812423,14.9851574 6.22594201,14.9756491 6.16991424,14.9622805 C5.78045547,14.8577915 5.5109401,14.5829916 5.41684139,14.197065 L5.16924027,13.2272939 L4.21481414,13.4992408 C3.82064978,13.614606 3.44283804,13.5120571 3.186267,13.236167 C2.88681965,12.9560388 2.78427075,12.578227 2.89864522,12.187493 L3.17158282,11.2296365 L2.20423564,10.9826478 C1.82188543,10.8870603 1.55144636,10.6218219 1.4331146,10.2152085 C1.34005988,9.82437875 1.44481708,9.45772856 1.72601896,9.19546209 L2.43808286,8.49887783 L1.73450689,7.81040417 C1.44481706,7.54002697 1.34005989,7.17337687 1.439649,6.75790801 C1.55144635,6.37593371 1.82188539,6.11069542 2.20181175,6.01572028 L3.17158282,5.76811916 L2.89963593,4.81369299 C2.78427075,4.41952863 2.88681965,4.04171689 3.16270985,3.78514587 C3.442838,3.48569854 3.82064974,3.38314964 4.2113838,3.49752411 L5.16924027,3.77046171 L5.41554008,2.80590417 C5.51183431,2.41109782 5.78619407,2.13673807 6.15902913,2.0463353 C6.55319349,1.93097012 6.93100525,2.03351902 7.20467421,2.32619001 L7.89999894,3.04211696 L8.594506,2.32703389 C8.87243071,2.03952554 9.24209506,1.93918808 9.61899753,2.04044384 C10.0138038,2.13673809 10.2881636,2.41109789 10.3831565,2.80069064 L10.6307576,3.77046171 L11.5851838,3.49851482 C11.9793481,3.38314964 12.3571599,3.48569854 12.6137309,3.76158875 C12.9131782,4.04171689 13.0157271,4.41952857 12.9013527,4.8102627 L12.6284151,5.76811916 L13.5957624,6.01510789 C13.9781125,6.11069542 14.2485515,6.37593369 14.3668833,6.78254721 C14.3761095,6.82129727 14.3833912,6.85980963 14.3887491,6.89800613 L12.4311686,8.86525019 C12.2885501,8.50246788 12.3664513,8.07377489 12.6626209,7.7840438 L13.3831727,7.07934901 C13.4057811,7.05824779 13.4051218,7.06055538 13.4006115,7.03880681 C13.3874896,6.9939735 13.3872742,6.99376225 13.3508029,6.98463799 L12.3810318,6.73703687 L12.3543769,6.72983797 C11.8232342,6.57849086 11.5153491,6.0252236 11.6666962,5.49408097 L11.9406245,4.53279433 C11.9501787,4.50015106 11.9538346,4.51362027 11.9070166,4.46830299 C11.8852565,4.44504217 11.8987257,4.44869811 11.8626522,4.45924293 L10.9047957,4.73218053 L10.8781408,4.73937942 C10.3430223,4.87600541 9.79846586,4.55296343 9.66183987,4.01784495 L9.41293742,3.04286026 C9.40513226,3.0108591 9.4140425,3.01976934 9.37095513,3.00912543 C9.33213613,2.99871057 9.33745796,2.99726608 9.31267674,3.02289983 L8.61735201,3.73882678 L8.59670876,3.75947002 C8.2005256,4.14425223 7.56742808,4.13500994 7.18264587,3.73882678 L6.48086195,3.01612347 C6.45910183,2.99286265 6.4725711,2.9965186 6.4179566,3.01196417 C6.38595535,3.01976935 6.39486559,3.01085911 6.3857591,3.04807388 L6.13815798,4.01784495 L6.13095909,4.04449986 C5.97961199,4.5756425 5.42634475,4.88352762 4.89520211,4.73218053 L3.93391535,4.45825223 C3.90127212,4.44869811 3.91474139,4.44504217 3.86942412,4.49186014 C3.84616328,4.51362028 3.84981922,4.50015102 3.86036404,4.53622453 L4.13330164,5.494081 L4.14050053,5.52073591 C4.27712653,6.05585439 3.95408454,6.60041087 3.41896607,6.73703687 L2.44677117,6.98525039 C2.41272371,6.99376225 2.41250834,6.99397349 2.40592081,7.01416766 C2.3948761,7.06055542 2.39421677,7.05824776 2.42531312,7.08745955 L3.13737702,7.78404381 L3.15291688,7.79958367 C3.53912638,8.1943756 3.53216895,8.82750235 3.13737702,9.21371185 L2.41682511,9.91840678 C2.39421677,9.93950789 2.3948761,9.93720022 2.3993864,9.95894886 C2.41250834,10.0037822 2.41272371,10.0039934 2.44919499,10.0131176 L3.41896606,10.2607188 L3.44562098,10.2679177 C3.97676362,10.4192648 4.28464874,10.972532 4.13330164,11.5036746 L3.85937334,12.4649614 C3.84981922,12.4976046 3.84616328,12.4841354 3.89298124,12.5294526 C3.91474137,12.5527135 3.90127209,12.5490575 3.93734565,12.5385127 L4.89520212,12.2655751 L4.92185702,12.2583762 C5.4569755,12.1217502 6.00153199,12.4447922 6.13815798,12.9799107 L6.38706042,13.9548953 C6.3957598,13.9905628 6.39169395,13.9864172 6.41528883,13.9929559 C6.46167656,14.0040006 6.45936885,14.00466 6.48858067,13.9735636 L7.18516493,13.2614997 L7.20070477,13.2459599 C7.4952939,12.9577749 7.92258715,12.888504 8.28097421,13.0359319 L6.33566019,14.9908489 Z M6.70489207,8.77616163 L9.31429327,6.16676041 C9.44212761,6.03892605 9.65593967,6.03389908 9.78471434,6.16267377 L10.2815938,6.65955323 C10.4116803,6.78963968 10.4085388,6.9989426 10.2775071,7.12997428 L6.95925927,10.4482222 C6.89767261,10.5098088 6.81613041,10.5428917 6.73375541,10.5462414 C6.63512454,10.5601257 6.53103126,10.5287286 6.45266973,10.450367 L4.80169873,8.79939603 C4.67185163,8.66954896 4.66967053,8.4612063 4.79975698,8.33111983 L5.29663643,7.83424043 C5.42541113,7.7054657 5.63211299,7.70338256 5.76491261,7.83618216 L6.70489207,8.77616163 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"edit\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.636 17.834l8.746-8.745-1.414-1.414-8.8 8.8 1.468 1.36zm-2.42.973c.45-.076 1.012-.173 1.685-.29l-1.383-1.282a173.71 173.71 0 0 0-.302 1.572zm10.459-11.84l1.414 1.415 1.2-1.2a.5.5 0 0 0 0-.707l-.708-.707a.5.5 0 0 0-.707 0l-1.2 1.2zm2.614-1.906l.707.707a1.5 1.5 0 0 1 0 2.121L7.45 19.435c-2.276.4-3.426.589-3.45.565-.024-.024.183-1.155.621-3.393L16.167 5.06a1.5 1.5 0 0 1 2.122 0z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"expand\",\"icon\":[\"24\",\"24\",[],\"\",\"M14.06 21.28l-.353.354-.707-.707.354-.354 7.22-7.22.353-.353.707.707-.354.354-7.22 7.22zm4 .465l-.353.353-.707-.707.354-.353 3.684-3.684.353-.354.707.707-.353.354-3.684 3.684z\"]}","import AddToPlaylist from './add-to-playlist.svg';\r\nimport Close from './close.svg';\r\nimport Delete from './delete.svg';\r\nimport Edit from './edit.svg';\r\nimport Expand from './expand.svg';\r\nimport Minus from './minus.svg';\r\nimport More from './more.svg';\r\nimport NewWindow from './new-window.svg';\r\nimport Plus from './plus.svg';\r\nimport Preview from './preview.svg';\r\nimport Search from './search.svg';\r\nimport Share from './share.svg';\r\nimport Upload from './upload.svg';\r\nimport Down from './down.svg';\r\nimport Right from './right.svg';\r\nimport UpDown from './up-down.svg';\r\nimport VisibleOff from './visible-off.svg';\r\nimport VisibleOn from './visible-on.svg';\r\nimport NoEdit from './no-edit.svg';\r\nimport EditClickView from './edit-clickview.svg';\r\n\r\nexport {\r\n AddToPlaylist,\r\n Close,\r\n Delete,\r\n Edit,\r\n Expand,\r\n Minus,\r\n More,\r\n NewWindow,\r\n Plus,\r\n Preview,\r\n Search,\r\n Share,\r\n Upload,\r\n Down,\r\n Right,\r\n UpDown,\r\n VisibleOff,\r\n VisibleOn,\r\n NoEdit,\r\n EditClickView\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"minus\",\"icon\":[\"24\",\"24\",[],\"\",\"\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"more\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"new-window\",\"icon\":[\"24\",\"24\",[],\"\",\"M17.395 5.526h-3.244a.763.763 0 0 1 0-1.526h5.086a.76.76 0 0 1 .763.763v5.086a.763.763 0 0 1-1.526 0V6.605l-5.172 5.172a.763.763 0 1 1-1.079-1.08l5.172-5.171zM8.5 5.5a.75.75 0 0 1 0 1.5H6.75a.25.25 0 0 0-.25.25v10c0 .138.112.25.25.25h10a.25.25 0 0 0 .25-.25V15.5a.75.75 0 1 1 1.5 0v1.75A1.75 1.75 0 0 1 16.75 19h-10A1.75 1.75 0 0 1 5 17.25v-10c0-.966.784-1.75 1.75-1.75H8.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"no-edit\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.321 14.15l.707.707-4.578 4.578c-2.276.4-3.426.589-3.45.565-.024-.024.183-1.155.621-3.393L9.2 12.028l.707.707-3.739 3.74 1.468 1.36 3.685-3.685zm2.828-2.829l2.233-2.232-1.414-1.414-2.233 2.232-.707-.707 4.14-4.14a1.5 1.5 0 0 1 2.12 0l.708.708a1.5 1.5 0 0 1 0 2.121l-4.14 4.14-.707-.708zm-8.933 7.486c.45-.076 1.012-.173 1.685-.29l-1.383-1.282a173.71 173.71 0 0 0-.302 1.572zm10.459-11.84l1.414 1.415 1.2-1.2a.5.5 0 0 0 0-.707l-.708-.707a.5.5 0 0 0-.707 0l-1.2 1.2zM4.646 5.355a.5.5 0 0 1 .708-.708L19.496 18.79a.5.5 0 1 1-.707.707L4.646 5.354z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"plus\",\"icon\":[\"24\",\"24\",[],\"\",\"M11 11V7.002a.999.999 0 1 1 2 0V11h3.998a.999.999 0 1 1 0 2H13v3.998a.999.999 0 1 1-2 0V13H7.002a.999.999 0 1 1 0-2H11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"preview\",\"icon\":[\"24\",\"24\",[],\"\",\"M17.278 17.333a3.056 3.056 0 1 0 0-6.11 3.056 3.056 0 0 0 0 6.11zm3.53-.637c.03.022.06.048.087.076l1.729 1.728a.794.794 0 1 1-1.124 1.124l-1.728-1.729a.801.801 0 0 1-.076-.088 4.278 4.278 0 1 1 1.112-1.112zM7.713 9C7.32 9 7 8.776 7 8.5s.32-.5.714-.5h8.572c.394 0 .714.224.714.5s-.32.5-.714.5H7.714zm-.357 3.5C7.16 12.5 7 12.276 7 12s.16-.5.357-.5h4.286c.197 0 .357.224.357.5s-.16.5-.357.5H7.357zM7.5 16a.5.5 0 1 1 0-1h4a.5.5 0 1 1 0 1h-4zm8.5 3a.5.5 0 1 1 0 1H6.5A2.5 2.5 0 0 1 4 17.5v-11A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5V9a.5.5 0 1 1-1 0V6.5A1.5 1.5 0 0 0 17.5 5h-11A1.5 1.5 0 0 0 5 6.5v11A1.5 1.5 0 0 0 6.5 19H16z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"right\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 10l8 .014L12 14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"search\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.803 14.306l3.917 3.954a1 1 0 0 1-.007 1.417l-.018.018-.018.018a.997.997 0 0 1-1.41 0l-3.918-3.953-.3.214c-1.14.713-2.323 1.07-3.549 1.07-1.796 0-3.328-.642-4.597-1.925C4.634 13.836 4 12.296 4 10.5c0-1.796.634-3.328 1.903-4.597C7.172 4.634 8.704 4 10.5 4c1.796 0 3.329.634 4.597 1.903 1.27 1.269 1.904 2.801 1.904 4.597a6.447 6.447 0 0 1-1.027 3.507l-.17.3zM10.5 5.368c-1.425 0-2.637.5-3.635 1.497-.998.998-1.497 2.21-1.497 3.635 0 1.426.5 2.637 1.497 3.635.998.998 2.21 1.497 3.635 1.497 1.426 0 2.637-.499 3.635-1.497 1.027-1.026 1.54-2.238 1.54-3.635 0-1.397-.513-2.608-1.54-3.635-.998-.998-2.21-1.497-3.635-1.497z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"share\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.091 15.463a2.187 2.187 0 1 1-.392.782L8.91 13.35a2.187 2.187 0 1 1-.1-2.82l5.88-2.812a2.187 2.187 0 1 1 .378.79l-5.811 2.778a2.184 2.184 0 0 1 .045 1.281l5.79 2.896z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"up-down\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 14l8 .014L12 18l-4-4zm0-4l4-4 4 3.986L8 10z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"upload\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.5 18.5h13v-2.75a.75.75 0 1 1 1.5 0V19a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3.25a.75.75 0 1 1 1.5 0v2.75zm7.249-11.796v8.57c0 .401-.35.726-.781.726-.432 0-.781-.325-.781-.725V6.704L7.89 9.658a.869.869 0 0 1-1.145 0 .692.692 0 0 1-.009-1.05l4.66-4.174a.869.869 0 0 1 1.144 0l4.66 4.174a.69.69 0 0 1 0 1.042.871.871 0 0 1-1.155.008L12.75 6.704z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-off\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.293 6.609l-.793.79A8.794 8.794 0 0 0 11.997 7C8.006 6.978 4 10.17 4 12c0 .925 1.062 2.216 2.63 3.254l-.715.714C4.174 14.76 3 13.228 3 12c0-2.44 4.5-6.025 9.003-6 1.119.006 2.239.234 3.29.609zm2.802 1.442C19.833 9.26 21 10.786 21 12c0 2.45-4.504 6-9 6-1.112 0-2.23-.223-3.279-.595l.794-.792A8.659 8.659 0 0 0 12 17c3.989 0 8-3.161 8-5 0-.911-1.055-2.196-2.62-3.235l.715-.714zm-7.65 7.635l.787-.785A3.005 3.005 0 0 0 15 12c0-.264-.034-.52-.098-.763l.787-.785a4 4 0 0 1-5.245 5.235zM8.318 13.57a4 4 0 0 1 5.257-5.246l-.785.782a3.003 3.003 0 0 0-3.687 3.68l-.785.784zm-3.466 6.285a.5.5 0 1 1-.706-.708l15-14.971a.5.5 0 1 1 .706.708l-15 14.97z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-on\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6zm1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12zm8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"arrow-left\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.182 11h11.89c.512 0 .928.448.928 1s-.416 1-.929 1H7.181l3.781 4.22a1.11 1.11 0 0 1 0 1.465c-.36.403-.943.418-1.311.045a.952.952 0 0 1-.032-.034l-5.343-5.963a1.112 1.112 0 0 1 0-1.466l5.343-5.963a.883.883 0 0 1 1.333 0c.378.421.378 1.066.01 1.477L7.182 11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"arrow-right\",\"icon\":[\"24\",\"24\",[],\"\",\"M16.818 11H4.928C4.417 11 4 11.448 4 12s.416 1 .929 1h11.89l-3.781 4.22a1.112 1.112 0 0 0 0 1.465c.36.403.943.418 1.311.045a.952.952 0 0 0 .032-.034l5.343-5.963a1.112 1.112 0 0 0 0-1.466l-5.343-5.963a.883.883 0 0 0-1.333 0 1.115 1.115 0 0 0-.01 1.477L16.818 11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"caret\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 10 16 10.0136253 12 14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-down\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.267 15.695L5.304 9.79a1.046 1.046 0 0 1 0-1.473l.01-.011a1.034 1.034 0 0 1 1.467 0L12 13.474l5.22-5.17a1.034 1.034 0 0 1 1.465 0l.011.012a1.046 1.046 0 0 1 0 1.473l-5.963 5.906a1.034 1.034 0 0 1-1.466 0z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-left\",\"icon\":[\"24\",\"24\",[],\"\",\"M8.305 11.267l5.906-5.963a1.046 1.046 0 0 1 1.473 0l.011.01a1.034 1.034 0 0 1 0 1.467L10.526 12l5.17 5.22c.406.41.406 1.055 0 1.465l-.012.011a1.046 1.046 0 0 1-1.473 0l-5.906-5.963a1.034 1.034 0 0 1 0-1.466z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-right\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.695 11.267c.407.41.407 1.056 0 1.466L9.79 18.696a1.046 1.046 0 0 1-1.474 0l-.01-.01a1.034 1.034 0 0 1 0-1.467L13.474 12l-5.17-5.22a1.034 1.034 0 0 1 0-1.465l.012-.011a1.046 1.046 0 0 1 1.474 0l5.905 5.963z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-up\",\"icon\":[\"24\",\"24\",[],\"\",\"M12.733 8.305l5.963 5.906a1.046 1.046 0 0 1 0 1.473l-.01.011a1.034 1.034 0 0 1-1.467 0L12 10.526l-5.22 5.17a1.034 1.034 0 0 1-1.465 0l-.011-.012a1.046 1.046 0 0 1 0-1.473l5.963-5.906a1.034 1.034 0 0 1 1.466 0z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"enter\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.613 13.959a.599.599 0 0 1-.213-.46c0-.155.058-.309.176-.426l3.75-3.75a.6.6 0 0 1 .848.848L7.446 12.9H13.5A3.9 3.9 0 0 0 17.4 9V6.747a.6.6 0 0 1 1.2 0V9a5.1 5.1 0 0 1-5.1 5.1H7.452l2.722 2.723a.6.6 0 0 1-.848.848L5.613 13.96z\"]}","import Caret from './caret.svg';\r\n\r\nimport ChevronUp from './chevron-up.svg';\r\nimport ChevronDown from './chevron-down.svg';\r\nimport ChevronLeft from './chevron-left.svg';\r\nimport ChevronRight from './chevron-right.svg';\r\n\r\nimport ArrowLeft from './arrow-left.svg';\r\nimport ArrowRight from './arrow-right.svg';\r\n\r\nimport Enter from './enter.svg';\r\n\r\nexport {\r\n Caret,\r\n ChevronUp,\r\n ChevronDown,\r\n ChevronLeft,\r\n ChevronRight,\r\n ArrowLeft,\r\n ArrowRight,\r\n Enter\r\n};\r\n","import './settings.ts';\r\nexport * from './ImportedSvgs';","module.exports = {\"prefix\":\"cv\",\"iconName\":\"archive\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.64 10.28a.55.55 0 1 1 1.1 0v6.878c0 1.582-1.386 2.842-3.07 2.842H6.33c-1.684 0-3.07-1.26-3.07-2.842V10.28a.55.55 0 1 1 1.1 0v6.877c0 .95.87 1.742 1.97 1.742h11.34c1.1 0 1.97-.793 1.97-1.742V10.28zM20.19 4c.99 0 1.81.747 1.81 1.696V7.99a.55.55 0 0 1-.55.55H2.55A.55.55 0 0 1 2 7.99V5.696C2 4.747 2.821 4 3.81 4h16.38zm.71 1.696c0-.317-.307-.596-.71-.596H3.81c-.403 0-.71.28-.71.596v1.742h17.8V5.696zm-5.83 5.73c0 .95-.821 1.697-1.81 1.697h-2.52c-.989 0-1.81-.747-1.81-1.696 0-.95.821-1.696 1.81-1.696h2.52c.989 0 1.81.747 1.81 1.696zm-1.1 0c0-.316-.307-.595-.71-.595h-2.52c-.403 0-.71.28-.71.596 0 .317.307.596.71.596h2.52c.403 0 .71-.28.71-.596z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"bell\",\"icon\":[\"24\",\"24\",[],\"\",\"M9.588 17.995H6.152c-.636 0-1.152-.53-1.152-1.182 0-.221.06-.438.175-.626l2.128-2.92V9.722c0-2.187 1.447-4.027 3.411-4.567v-.012A1.143 1.143 0 0 1 13 5.128c2.017.502 3.515 2.369 3.515 4.594v3.545l2.303 2.92a1.2 1.2 0 0 1-.366 1.628 1.13 1.13 0 0 1-.61.18h-3.716a2.286 2.286 0 0 1-4.538 0zm1.161 0a1.143 1.143 0 0 0 2.216 0H10.75zm4.615-4.31V9.723c0-1.958-1.547-3.546-3.455-3.546-1.908 0-3.454 1.588-3.454 3.546v3.939l-.23.314-2.073 2.838H17.83l-2.467-3.127z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"bookmark\",\"icon\":[\"24\",\"24\",[],\"\",\"M8.5 5h7A1.5 1.5 0 0 1 17 6.5v12.131a.2.2 0 0 1-.309.168L12 15.75 7.309 18.8A.2.2 0 0 1 7 18.63V6.5A1.5 1.5 0 0 1 8.5 5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"broadcast\",\"icon\":[\"24\",\"24\",[],\"\",\"M4.571 19C4.256 19 4 18.776 4 18.5s.256-.5.571-.5H19.43c.315 0 .571.224.571.5s-.256.5-.571.5H4.57zM4.125 5h15.75C20.496 5 21 5.537 21 6.2v9.6c0 .663-.504 1.2-1.125 1.2H4.125C3.504 17 3 16.463 3 15.8V6.2C3 5.537 3.504 5 4.125 5zM4 6v10h16V6H4zm6 2.35a.192.192 0 0 1 .295-.162l4.164 2.65a.192.192 0 0 1 0 .324l-4.164 2.65A.192.192 0 0 1 10 13.65v-5.3z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"calendar\",\"icon\":[\"24\",\"24\",[],\"\",\"M6.2 10.2V17a.8.8 0 0 0 .8.8h10a.8.8 0 0 0 .8-.8v-6.8H6.2zM16 5.5h2a1 1 0 0 1 1 1V17a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6.5a1 1 0 0 1 1-1h2v-.875a.625.625 0 1 1 1.25 0V5.5h5.5v-.875a.625.625 0 1 1 1.25 0V5.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"cog\",\"icon\":[\"24\",\"24\",[],\"\",\"M18.458 12c0 .944.514 1.722 1.542 2.333a10.98 10.98 0 0 1-.667 1.584c-.944-.223-1.805.055-2.583.833-.694.694-.917 1.556-.667 2.583A10.98 10.98 0 0 1 14.5 20c-.611-1.028-1.444-1.542-2.5-1.542s-1.889.514-2.5 1.542c-.5-.167-1.042-.389-1.625-.667.25-1.055.042-1.916-.625-2.583-.667-.667-1.528-.875-2.583-.625C4.389 15.542 4.167 15 4 14.5c1.028-.611 1.542-1.444 1.542-2.5 0-.944-.514-1.722-1.542-2.333a8.484 8.484 0 0 1 .667-1.584c.944.223 1.805-.055 2.583-.833.667-.667.875-1.528.625-2.583C8.458 4.389 9 4.167 9.5 4c.611 1.028 1.444 1.542 2.5 1.542S13.889 5.028 14.5 4c.5.167 1.042.389 1.625.667-.25 1.055-.042 1.916.625 2.583.778.778 1.639 1.056 2.583.833.306.611.528 1.14.667 1.584-1.028.61-1.542 1.389-1.542 2.333zM12 16.083c1.111 0 2.07-.402 2.875-1.208.806-.806 1.208-1.764 1.208-2.875s-.402-2.07-1.208-2.875c-.806-.806-1.764-1.208-2.875-1.208s-2.07.402-2.875 1.208c-.806.806-1.208 1.764-1.208 2.875s.402 2.07 1.208 2.875c.806.806 1.764 1.208 2.875 1.208z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"compass\",\"icon\":[\"24\",\"24\",[],\"\",\"M12,-1.71862524e-13 C13.3893905,-1.71862524e-13 14.5197317,1.12166968 14.5197317,2.50040137 C14.5197317,2.8215332 14.4594938,3.13263028 14.3442115,3.42156921 C16.2349366,3.84633285 17.9748233,4.78862459 19.3866372,6.17539419 L19.4316433,6.22680193 C21.3267651,8.11265804 22.5,10.713205 22.5,13.5805516 C22.5,19.3258216 17.7897333,24 12,24 L12,24 C6.21026669,24 1.5,19.3258216 1.5,13.5805516 L1.50006052,13.5243182 C1.50002021,13.5212739 1.5,13.5182249 1.5,13.5151711 L1.501,13.503 L1.50378159,13.2988768 C1.57785421,10.543134 2.73548466,8.05071265 4.56835673,6.22680193 L4.61336276,6.17539419 C6.02517671,4.78862459 7.76506343,3.84633285 9.65748913,3.42018903 C9.54056383,3.13263028 9.48031555,2.8215332 9.48031555,2.50040137 C9.48031555,1.12166968 10.6106095,-1.71862524e-13 12,-1.71862524e-13 Z M12,4.52624116 L11.6809164,4.53170146 C11.6454989,4.53291535 11.610132,4.53433052 11.5748169,4.53594584 L11.6816694,4.53162088 C11.5883913,4.53477816 11.4953516,4.53932139 11.4025747,4.54524062 L11.5748169,4.53594584 C11.4679256,4.54083509 11.3615084,4.54755809 11.2555967,4.55608379 L11.4025747,4.54524062 C11.3068176,4.55134999 11.2113405,4.55892518 11.1161702,4.56795525 L11.2555967,4.55608379 C11.095392,4.56897997 10.9363438,4.5860008 10.7785603,4.60703883 C10.7467123,4.6104578 10.7154515,4.61475211 10.6842289,4.61920452 L10.7785603,4.60703883 C10.6768565,4.62059949 10.5756781,4.63582921 10.4750543,4.65269924 L10.6842289,4.61920452 C10.600263,4.63117821 10.5165735,4.64429522 10.4331795,4.65854779 L10.4750543,4.65269924 C9.11485909,4.88074187 7.85598275,5.40850943 6.77005357,6.16492738 L8.00490498,7.39068924 C8.27354347,7.65726684 8.27354347,8.0894535 8.00490498,8.35612485 C7.87046765,8.48939021 7.69450873,8.55604633 7.5184081,8.55604633 C7.34230747,8.55604633 7.16634856,8.48943709 7.03200569,8.35612485 L5.70204148,7.03485023 C4.13204115,8.52299364 3.09475895,10.5601022 2.90659433,12.8322227 L4.30759576,12.8325787 C4.68743083,12.8325787 4.99546522,13.1382031 4.99546522,13.5151711 C4.99546522,13.892186 4.68747807,14.1977635 4.30764299,14.1977635 L2.89670934,14.1976473 C3.02371908,16.0609257 3.72135566,17.7714185 4.81716961,19.1579915 L4.97167812,19.3482139 C5.26113447,19.6949337 5.57609243,20.0199666 5.91367078,20.3204536 L7.03200569,19.2111609 C7.30069142,18.9445833 7.73612479,18.9445833 8.00490498,19.2111609 C8.27354347,19.4777385 8.27354347,19.9099252 8.00490498,20.1765497 L7.01386949,21.160078 C8.44796715,22.0922041 10.1613427,22.6346745 12,22.6346745 L12,22.6346745 C13.8583409,22.6346745 15.5887033,22.0805272 17.0320921,21.1300078 L16.0701299,20.1765497 C15.8014914,19.909972 15.8014914,19.4777854 16.0701299,19.2111609 C16.3388156,18.9445833 16.774249,18.9445833 17.042982,19.2111609 L18.1252566,20.2856043 C18.4481451,19.9948825 18.7500205,19.681572 19.0283219,19.3482139 L19.1828304,19.1579915 C20.2466397,17.8119151 20.9351906,16.1605635 21.0907063,14.3605101 L21.1032907,14.1976527 L21.1032907,14.1976527 L19.4302507,14.1977635 C19.0504157,14.1977635 18.7423813,13.8921391 18.7423813,13.5151711 C18.7423813,13.1381562 19.0504157,12.8325787 19.4302507,12.8325787 L21.0934057,12.8322227 C20.9067892,10.5787961 19.8849698,8.55653016 18.3366017,7.07169263 L17.0430292,8.35607798 C16.9085919,8.48943709 16.732633,8.55604633 16.5565323,8.55604633 C16.3804317,8.55604633 16.2044728,8.48943709 16.0701299,8.35612485 C15.8014914,8.08954725 15.8014914,7.65736059 16.0701299,7.39068924 L17.2742569,6.19598696 C16.1894526,5.4308071 14.9295636,4.89482891 13.5669368,4.65983993 C13.5528409,4.65615858 13.538853,4.65380129 13.5248569,4.65147595 L13.5669368,4.65983993 C13.4834378,4.64544029 13.3995531,4.63217086 13.3152992,4.62004816 L13.5248569,4.65147595 C13.4243139,4.63477151 13.3233471,4.61971567 13.2219896,4.60632197 L13.3152992,4.62004816 C13.1723723,4.59948341 13.0283832,4.58221861 12.8834131,4.56833442 C12.8374466,4.56355426 12.7909906,4.55949885 12.7444647,4.55579028 L12.8834131,4.56833442 C12.7886701,4.55926062 12.6935082,4.5516307 12.5979499,4.54546716 L12.7444647,4.55579028 C12.6381278,4.54731418 12.5314263,4.5406499 12.4243976,4.53581255 L12.5979499,4.54546716 C12.5053597,4.53949506 12.4123973,4.53489967 12.3190836,4.53170146 L12.4243976,4.53581255 C12.2834709,4.52944313 12.1419768,4.52624116 12,4.52624116 Z M12.2098775,18.4456908 C12.3524617,18.4551964 12.4902931,18.464702 12.6328773,18.4884661 C12.6851582,18.4932189 12.7421919,18.5074773 12.7944727,18.5169829 C12.8039783,18.5169829 12.813484,18.5169829 12.8229896,18.5217357 C12.8990345,18.5692638 12.984585,18.5740166 13.0701355,18.5930278 C13.0938996,18.5977806 13.1224164,18.6025334 13.1509332,18.612039 C13.1746973,18.6215447 13.1984613,18.6310503 13.2174725,18.6500615 C13.2364838,18.6690727 13.255495,18.6833311 13.2887647,18.688084 C13.3172815,18.6928368 13.3362927,18.7213536 13.3362927,18.7546232 C13.3362927,18.7831401 13.3315399,18.8116569 13.3267871,18.835421 C13.3077759,18.9304771 13.2887647,19.030286 13.2650006,19.1253422 C13.2602478,19.153859 13.2507422,19.1823759 13.2412366,19.2108927 C13.2174725,19.277432 13.2127197,19.3487241 13.1937085,19.4152634 C13.1794501,19.4532859 13.1746973,19.4960611 13.1556861,19.5340836 C13.1414276,19.5673532 13.131922,19.6006229 13.1034052,19.6386453 C13.0891468,19.6529038 13.084394,19.6766678 13.0796411,19.7004318 C13.0606299,19.7527127 13.0321131,19.7717239 12.9750794,19.7622183 L12.9750794,19.7622183 L12.960821,19.7622183 C12.8562592,19.7384543 12.7564503,19.7194431 12.6566413,19.6909262 C12.5473268,19.6624094 12.4380122,19.6529038 12.3286977,19.6576566 C12.3001808,19.6576566 12.271664,19.6671622 12.2431471,19.6766678 C12.2051247,19.6909262 12.1956191,19.7194431 12.1956191,19.7574655 C12.1956191,19.7764767 12.2003719,19.7907352 12.2193831,19.795488 C12.2811696,19.8287576 12.3382033,19.8620273 12.419001,19.8762857 C12.442765,19.8810385 12.4617762,19.8952969 12.4807875,19.9048025 C12.5045515,19.9190609 12.5235627,19.9285666 12.542574,19.9380722 C12.689911,20.0093643 12.8467536,20.0711508 12.9798322,20.1709597 C13.084394,20.2422518 13.1604389,20.3325551 13.2032141,20.4513753 L13.2032141,20.4513753 L13.3077759,20.7745662 C13.3410455,20.8933864 13.3362927,21.0217122 13.3315399,21.1452851 C13.3267871,21.2403413 13.3125287,21.3401502 13.279259,21.4304535 C13.2745062,21.4352064 13.2745062,21.4399592 13.2745062,21.4494648 C13.2840118,21.5587793 13.2507422,21.6585883 13.1889557,21.7441388 C13.084394,21.8962286 12.9513154,22.0293072 12.7897199,22.1291162 C12.6851582,22.1956555 12.5710908,22.2336779 12.4475178,22.257442 C12.3239448,22.281206 12.1956191,22.3144756 12.0672933,22.3287341 C11.9579787,22.3429925 11.8486642,22.3429925 11.7441024,22.3382397 C11.6157766,22.3239812 11.4922036,22.3002172 11.3638778,22.2764532 C11.3448666,22.2764532 11.3258554,22.2669476 11.3068442,22.2621948 C11.2165408,22.2194195 11.1262375,22.2051611 11.0311814,22.1956555 C10.9076084,22.1766442 10.7887882,22.1481274 10.6652152,22.1243634 C10.6366984,22.1196106 10.6081815,22.0958465 10.6081815,22.0625769 C10.6081815,21.9675207 10.5844175,21.8677118 10.5986759,21.7726556 C10.6129344,21.6015546 10.62244,21.4257007 10.6414512,21.2545997 C10.6509568,21.1642964 10.6747208,21.073993 10.6984849,20.9789369 C10.7127433,20.9219032 10.7507658,20.8981392 10.8125522,20.902892 C10.9028556,20.9123976 10.9931589,20.9171504 11.0787094,20.9314088 C11.188024,20.9456672 11.2925857,20.9599257 11.3971475,20.9931953 C11.4541812,21.0074537 11.5112149,21.0169593 11.5682485,21.0217122 C11.6633047,21.026465 11.753608,21.026465 11.8439113,21.026465 C11.8866866,21.026465 11.9294619,20.9836897 11.9342147,20.9456672 C11.9389675,20.9123976 11.9152034,20.8696223 11.8724282,20.8553639 C11.8391585,20.8458583 11.7963833,20.8363527 11.7583608,20.8315999 C11.7345968,20.8268471 11.7108328,20.8220943 11.6870687,20.8220943 C11.6015182,20.8173415 11.5254733,20.7935774 11.4446756,20.7650606 C11.3638778,20.7317909 11.2783273,20.7127797 11.1975296,20.6795101 C11.088215,20.6414876 10.9884061,20.5797011 10.8981028,20.508409 C10.817305,20.4466225 10.7792826,20.361072 10.7507658,20.2707687 C10.7079905,20.1234316 10.6937321,19.9713418 10.7127433,19.819252 C10.7270017,19.7051846 10.7317545,19.5911173 10.7507658,19.4818027 C10.793541,19.2441624 10.8885972,19.030286 11.0596982,18.859185 C11.2070352,18.711848 11.3876419,18.612039 11.5920126,18.5550054 C11.7060799,18.5217357 11.8249001,18.4932189 11.9437203,18.4694548 C12.0340236,18.4551964 12.124327,18.4551964 12.2098775,18.4456908 Z M14.7328664,9.61765309 C15.1590885,9.61765309 15.5675493,9.84298078 15.7988231,10.2056519 C16.0296718,10.5678544 16.0563136,11.0171504 15.8699625,11.4074308 L14.1147664,15.0838768 C13.9903906,15.3443138 13.7774449,15.5556727 13.5149472,15.6790944 L9.80998461,17.4209191 C9.63676546,17.5022939 9.45419332,17.5435907 9.2670864,17.5435907 C8.84086431,17.5435907 8.43240343,17.3182631 8.20112965,16.9555919 C7.97028099,16.5933895 7.94363916,16.1440935 8.12999028,15.753813 L9.88518638,12.077367 C10.0095622,11.81693 10.2225079,11.6055242 10.4850055,11.4821494 L14.1899681,9.74032473 C14.3631873,9.65894988 14.5457594,9.61765309 14.7328664,9.61765309 Z M14.4894526,11.1101033 L11.1110414,12.6984127 L9.51045294,16.050953 L12.8888641,14.4626436 L14.4894526,11.1101033 Z M13.0226075,6.1644377 C13.0938996,6.1691905 13.1651917,6.1691905 13.2364838,6.1691905 L13.2364838,6.1691905 L13.5121466,6.18344892 C13.5596746,6.18344892 13.5929443,6.21196577 13.5976971,6.26424664 C13.6309667,6.56842629 13.6547308,6.87260593 13.6357196,7.17678557 C13.5976971,7.72335837 13.6262139,8.27468397 13.6167083,8.82125677 C13.6167083,9.03513308 13.6214611,9.24900939 13.6452252,9.46763851 L13.6452252,9.46763851 L13.6452252,9.59121149 C13.6404724,9.6625036 13.6024499,9.69102044 13.5359106,9.68626763 C13.526405,9.68626763 13.5121466,9.69102044 13.502641,9.69102044 C13.4836297,9.69577324 13.4598657,9.70527886 13.4408545,9.70052605 C13.3695624,9.68626763 13.2935175,9.69102044 13.2222254,9.69102044 C13.1414276,9.68626763 13.0606299,9.69577324 12.9798322,9.70052605 C12.837248,9.71003166 12.689911,9.71953728 12.542574,9.72429009 C12.4997987,9.72904289 12.4760347,9.70527886 12.4570234,9.6672564 L12.4570234,9.6672564 L12.271664,9.34881834 C12.1195741,9.07315554 11.9532259,8.81175116 11.8201473,8.52658274 L11.8201473,8.52658274 L11.8011361,8.49331309 L11.8011361,8.53608835 C11.7916305,8.81650396 11.777372,9.09216676 11.7821249,9.37258237 C11.7821249,9.4628857 11.777372,9.55318904 11.7726192,9.64349237 C11.7678664,9.71478447 11.729844,9.75280693 11.6585519,9.76231254 L11.6585519,9.76231254 L11.5112149,9.77657096 C11.4066531,9.78607658 11.3068442,9.76231254 11.2070352,9.75280693 L11.2070352,9.75280693 L10.8077994,9.75280693 C10.7555186,9.75280693 10.6747208,9.78132377 10.6557096,9.72429009 C10.646204,9.70527886 10.6414512,9.69102044 10.646204,9.61972833 C10.646204,9.58170588 10.6509568,9.56269465 10.6509568,9.51991939 L10.6509568,9.51991939 L10.6604624,9.31079588 L10.6794736,8.66441414 C10.6889793,8.33171766 10.7032377,7.99902117 10.6937321,7.66632469 C10.6889793,7.45720118 10.6794736,7.24807768 10.669968,7.04370698 C10.669968,7.03420136 10.669968,7.01994294 10.6652152,7.01043733 C10.6319456,6.81081944 10.6366984,6.60644874 10.6557096,6.40207804 C10.6604624,6.39257243 10.6557096,6.37831401 10.6604624,6.36405559 C10.6604624,6.32603313 10.6984849,6.28801068 10.7365073,6.28325787 C10.769777,6.28325787 10.8077994,6.28801068 10.8410691,6.28801068 L10.8410691,6.28801068 L10.8838443,6.28801068 C11.0216757,6.26424664 11.1595071,6.24048261 11.3020914,6.24523541 L11.3020914,6.24523541 L11.458934,6.2357298 C11.5444845,6.23097699 11.630035,6.22622419 11.7155856,6.22622419 C11.729844,6.22622419 11.7488552,6.23097699 11.7631136,6.24048261 C11.7821249,6.25474103 11.8011361,6.25949384 11.8249001,6.25474103 C11.877181,6.24523541 11.9056978,6.25949384 11.9247091,6.30702191 C11.9864956,6.47812295 12.0767989,6.63971839 12.171855,6.79180821 C12.2478999,6.91538119 12.3001808,7.04370698 12.3477089,7.17678557 C12.3952369,7.29085294 12.4475178,7.4001675 12.5093043,7.50948206 L12.5093043,7.50948206 L12.5235627,7.52849329 C12.5235627,7.52849329 12.5283155,7.52849329 12.5330683,7.52374048 L12.5330683,7.52374048 L12.5330683,7.50472925 C12.5330683,7.28134733 12.5330683,7.0579654 12.5283155,6.83458347 C12.5283155,6.69199927 12.5188099,6.55416787 12.5188099,6.41633646 L12.5188099,6.41633646 L12.5188099,6.38781962 C12.5093043,6.30702191 12.5473268,6.24998822 12.6091133,6.20721296 C12.6328773,6.18344892 12.6613941,6.17394331 12.689911,6.17869612 C12.8039783,6.18344892 12.9132929,6.1644377 13.0226075,6.1644377 Z M12,1.36518483 C11.3691932,1.36518483 10.8560545,1.87443384 10.8560545,2.50035449 C10.8560545,2.7121822 10.9139202,2.91435368 11.0223297,3.09018146 C11.3472278,3.06046277 11.6746768,3.04536905 12,3.04536905 C12.3250871,3.04536905 12.6524415,3.06046277 12.977623,3.09027521 C13.0860798,2.91444743 13.1439455,2.7121822 13.1439455,2.50035449 C13.1439455,1.87438696 12.6308068,1.36518483 12,1.36518483 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-excel\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm5.09 7l-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6L11.09 12z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-img\",\"icon\":[\"24\",\"24\",[],\"\",\"M5 6v12h14V6H5zm0-1h14a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm2.4 10.3a.5.5 0 0 1-.8-.6l3-4a.5.5 0 0 1 .754-.054l.579.58 1.765-2.513a.5.5 0 0 1 .83.015l3.891 6a.5.5 0 0 1-.838.544l-3.49-5.379-1.682 2.394a.5.5 0 0 1-.763.067l-.592-.593L7.4 15.3zm.6-4.8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-pdf\",\"icon\":[\"24\",\"24\",[],\"\",\"M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.345 1.345 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292.142-.358.286-.762.43-1.205a41.787 41.787 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a7.96 7.96 0 0 1-.086 1.088c.158.195.33.398.513.606a30.903 30.903 0 0 0 1.73 1.81 14.011 14.011 0 0 0 .863.761c.464-.07.87-.106 1.213-.105.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a8.753 8.753 0 0 1-.538-.38 21.15 21.15 0 0 0-.944.191c-.39.087-.798.188-1.22.3a45.345 45.345 0 0 0-2.27.667zM6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm4.43 8.39c-.07.21-.138.412-.207.606l.055-.016a46.181 46.181 0 0 1 1.608-.459 33.869 33.869 0 0 1 1.538-.37 15.994 15.994 0 0 1-.378-.35 31.732 31.732 0 0 1-1.882-1.98l-.083.32a38.471 38.471 0 0 1-.652 2.248zm-2.157 2.603c.12-.107.248-.279.382-.51a2.35 2.35 0 0 0-.553.37c-.092.092-.09.086-.083.096a.54.54 0 0 0 .138.116c.017.01.025.01.116-.072zm7.434-2.3c-.047 0-.095 0-.146.002.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08zm-5.36-5.49c.065.156.16.334.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-ppt\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm5.07 6.96h1.22c.18 0 .353-.013.52-.04a1.21 1.21 0 0 0 .44-.155.844.844 0 0 0 .305-.325c.077-.14.115-.323.115-.55 0-.227-.038-.41-.115-.55a.844.844 0 0 0-.305-.325 1.21 1.21 0 0 0-.44-.155 3.288 3.288 0 0 0-.52-.04h-1.22v2.14zM9.5 8.6h3.22c.447 0 .827.065 1.14.195.313.13.568.302.765.515.197.213.34.457.43.73a2.715 2.715 0 0 1 0 1.695c-.09.277-.233.522-.43.735a2.133 2.133 0 0 1-.765.515c-.313.13-.693.195-1.14.195h-1.65v2.56H9.5V8.6z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-word\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54l-1.92 7.14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-zip\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm5 0h1v1h-1V5zm1 1h1v1h-1V6zm-1 1h1v1h-1V7zm1 1h1v1h-1V8zm-1 1h1v1h-1V9zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm6.586 1H6v14h12V9.414L12.586 5zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0V10z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"folder\",\"icon\":[\"24\",\"24\",[],\"\",\"M12.685 6H18.5A1.5 1.5 0 0 1 20 7.5v11a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 18.5v-13A1.5 1.5 0 0 1 5.5 4h4.66a1.5 1.5 0 0 1 1.095.474L12.685 6zM5.5 5a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5h-6.248l-1.727-1.842A.5.5 0 0 0 10.161 5H5.5zM5 10V9h14v1H5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"handle\",\"icon\":[\"16\",\"16\",[],\"\",\"M1 0h14a1 1 0 0 1 1 1v1.2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm0 6.4h14a1 1 0 0 1 1 1v1.2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7.4a1 1 0 0 1 1-1zm0 6.4h14a1 1 0 0 1 1 1V15a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-1.2a1 1 0 0 1 1-1z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"heart-outline\",\"icon\":[\"24\",\"24\",[],\"\",\"m11.466 22.776c.141.144.333.224.534.224s.393-.08.534-.224l9.594-9.721c2.491-2.523 2.491-6.63 0-9.154-1.21-1.226-2.819-1.901-4.532-1.901s-3.321.675-4.531 1.9l-1.065 1.08-1.065-1.079c-1.21-1.226-2.819-1.901-4.531-1.901-1.713 0-3.322.675-4.532 1.901-2.491 2.524-2.491 6.631 0 9.153zm-8.527-17.822c.926-.937 2.157-1.454 3.464-1.454 1.308 0 2.538.517 3.463 1.455l1.599 1.62c.281.285.786.285 1.067 0l1.599-1.621c.928-.937 2.158-1.454 3.465-1.454 1.308 0 2.538.517 3.464 1.454 1.917 1.943 1.917 5.104 0 7.048l-9.06 9.181-9.061-9.182c-1.917-1.942-1.917-5.104 0-7.047z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"heart\",\"icon\":[\"24\",\"24\",[],\"\",\"m11.466 22.776c.141.144.333.224.534.224s.393-.08.534-.224l9.594-9.721c4.001-4.053 1.158-11.055-4.532-11.055-3.417 0-4.985 2.511-5.596 2.98-.614-.471-2.172-2.98-5.596-2.98-5.672 0-8.55 6.984-4.531 11.055z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"history\",\"icon\":[\"24\",\"24\",[],\"\",\"M12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 Z M12,2.05714286 C6.50871163,2.05714286 2.05714286,6.50871163 2.05714286,12 C2.05714286,17.4912884 6.50871163,21.9428571 12,21.9428571 C17.4912884,21.9428571 21.9428571,17.4912884 21.9428571,12 C21.9428571,6.50871163 17.4912884,2.05714286 12,2.05714286 Z M12,5.82857143 C12.5680643,5.82857143 13.0285714,6.28907854 13.0285714,6.85714286 L13.0285714,11.5739518 L17.0130241,15.5584045 C17.4147062,15.9600866 17.4147062,16.611342 17.0130241,17.0130241 C16.611342,17.4147062 15.9600866,17.4147062 15.5584045,17.0130241 L11.2726902,12.7273098 C11.0797956,12.5344153 10.9714286,12.2727941 10.9714286,12 L10.9714286,6.85714286 C10.9714286,6.28907854 11.4319357,5.82857143 12,5.82857143 Z\"]}","import Archive from './archive.svg';\r\nimport Bell from './bell.svg';\r\nimport Bookmark from './bookmark.svg';\r\nimport Broadcast from './broadcast.svg';\r\nimport Calendar from './calendar.svg';\r\nimport Cog from './cog.svg';\r\nimport Folder from './folder.svg';\r\nimport Handle from './handle.svg';\r\nimport Heart from './heart.svg';\r\nimport HeartOutline from './heart-outline.svg';\r\nimport Interactive from './interactive.svg';\r\nimport Link from './link.svg';\r\nimport Playlist from './playlist.svg';\r\nimport PublisherArchive from './publisher-archive.svg';\r\nimport Resources from './resources.svg';\r\nimport StarOutline from './star-o.svg';\r\nimport Star from './star.svg';\r\nimport Tag from './tag.svg';\r\nimport Time from './time.svg';\r\nimport Video from './video.svg';\r\nimport Subject from './subject.svg';\r\nimport Series from './series.svg';\r\nimport WhiteWave from './white-wave.svg';\r\nimport Compass from './compass.svg';\r\nimport History from './history.svg';\r\n\r\nimport File from './file.svg';\r\nimport FilePDF from './file-pdf.svg';\r\nimport FileImg from './file-img.svg';\r\nimport FilePowerpoint from './file-ppt.svg';\r\nimport FileWord from './file-word.svg';\r\nimport FileZip from './file-zip.svg';\r\nimport FileExcel from './file-excel.svg';\r\n\r\nexport {\r\n Archive,\r\n Bell,\r\n Bookmark,\r\n Broadcast,\r\n Calendar,\r\n Cog,\r\n Folder,\r\n Handle,\r\n Interactive,\r\n Link,\r\n Playlist,\r\n PublisherArchive,\r\n Resources,\r\n StarOutline,\r\n Star,\r\n Tag,\r\n Time,\r\n Video,\r\n Subject,\r\n Series,\r\n File,\r\n FilePDF,\r\n FileImg,\r\n FilePowerpoint,\r\n FileWord,\r\n FileZip,\r\n FileExcel,\r\n Heart,\r\n HeartOutline,\r\n WhiteWave,\r\n Compass,\r\n History\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"interactive\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.978 13.65l7.525-9.99a.2.2 0 0 1 .357.154l-1.289 7.5 5.194-1.04a.2.2 0 0 1 .198.318l-7.447 9.733a.2.2 0 0 1-.355-.16l1.268-6.566-5.277.37a.2.2 0 0 1-.174-.32z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"link\",\"icon\":[\"24\",\"24\",[],\"\",\"M17 10c2.2 0 4 1.8 4 4s-1.8 4-4 4h-5a3.99 3.99 0 0 1-3-1.367v-.028a4.447 4.447 0 0 1-.889-2.679c0-.698.162-1.356.443-1.94A4 4 0 0 1 12 10h1.872v.098c0 .573-.322 1.081-.818 1.402H12c-.722 0-1.368.316-1.824.811-.453.418-.732.976-.732 1.591v.196c0 .575.244 1.1.645 1.508.46.545 1.146.894 1.911.894h5c1.375 0 2.5-1.125 2.5-2.5s-1.125-2.5-2.5-2.5h-.686a5.22 5.22 0 0 0 .24-1.5H17zm-9.556 3.926l.002.074H7c-2.2 0-4-1.8-4-4s1.8-4 4-4h5c1.462 0 2.743.797 3.441 1.975a4.48 4.48 0 0 1-.44 4.63v.024a3.982 3.982 0 0 1-3 1.37h-1.873v-.096c0-.574.322-1.082.817-1.403H12c.722 0 1.368-.316 1.824-.811.452-.418.731-.976.731-1.591v-.195c0-.576-.244-1.101-.645-1.51A2.496 2.496 0 0 0 12 7.5H7A2.507 2.507 0 0 0 4.5 10c0 1.375 1.125 2.5 2.5 2.5h.642c-.128.452-.198.93-.198 1.426z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"playlist\",\"icon\":[\"24\",\"24\",[],\"\",\"M4,19.0049107 C4,19.5548349 4.44525903,20 4.99508929,20 L19.0049107,20 C19.5548349,20 20,19.554741 20,19.0049107 L20,4.99508929 C20,4.44516513 19.554741,4 19.0049107,4 L4.99508929,4 C4.44516513,4 4,4.44525903 4,4.99508929 L4,19.0049107 Z M4.99508929,3 L19.0049107,3 C20.1067681,3 21,3.8926228 21,4.99508929 L21,19.0049107 C21,20.1067681 20.1073772,21 19.0049107,21 L4.99508929,21 C3.8932319,21 3,20.1073772 3,19.0049107 L3,4.99508929 C3,3.8932319 3.8926228,3 4.99508929,3 Z M17.5,17.3 C17.7761424,17.3 18,17.0761424 18,16.8 C18,16.5238576 17.7761424,16.3 17.5,16.3 L9.5,16.3 C9.22385763,16.3 9,16.5238576 9,16.8 C9,17.0761424 9.22385763,17.3 9.5,17.3 L17.5,17.3 Z M17.5,12.7 C17.7761424,12.7 18,12.4761424 18,12.2 C18,11.9238576 17.7761424,11.7 17.5,11.7 L9.5,11.7 C9.22385763,11.7 9,11.9238576 9,12.2 C9,12.4761424 9.22385763,12.7 9.5,12.7 L17.5,12.7 Z M8.07195299,7.22930174 L6.86542219,6.50538326 C6.38401051,6.21653625 6,6.43413716 6,6.98678206 L6,8.51032805 C6,9.06455544 6.38746271,9.27850253 6.86542219,8.99172685 L8.07195299,8.26780837 C8.55336467,7.97896136 8.54991246,7.51607743 8.07195299,7.22930174 Z M8.07195299,11.7293017 L6.86542219,11.0053833 C6.38401051,10.7165363 6,10.9341372 6,11.4867821 L6,13.010328 C6,13.5645554 6.38746271,13.7785025 6.86542219,13.4917268 L8.07195299,12.7678084 C8.55336467,12.4789614 8.54991246,12.0160774 8.07195299,11.7293017 Z M8.07195299,16.2293017 L6.86542219,15.5053833 C6.38401051,15.2165363 6,15.4341372 6,15.9867821 L6,17.510328 C6,18.0645554 6.38746271,18.2785025 6.86542219,17.9917268 L8.07195299,17.2678084 C8.55336467,16.9789614 8.54991246,16.5160774 8.07195299,16.2293017 Z M17.5,8.3 C17.7761424,8.3 18,8.07614237 18,7.8 C18,7.52385763 17.7761424,7.3 17.5,7.3 L9.5,7.3 C9.22385763,7.3 9,7.52385763 9,7.8 C9,8.07614237 9.22385763,8.3 9.5,8.3 L17.5,8.3 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"publisher-archive\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.6403207,10.2808023 C19.6403207,9.97696656 19.8864872,9.73065903 20.1901489,9.73065903 C20.4938106,9.73065903 20.7399771,9.97696656 20.7399771,10.2808023 L20.7399771,17.1575931 C20.7399771,18.7397289 19.3544729,20 17.6701031,20 L6.32989691,20 C4.64552709,20 3.26002291,18.7397289 3.26002291,17.1575931 L3.26002291,10.2808023 C3.26002291,9.97696656 3.50618937,9.73065903 3.80985109,9.73065903 C4.11351281,9.73065903 4.35967927,9.97696656 4.35967927,10.2808023 L4.35967927,17.1575931 C4.35967927,18.1074218 5.23070097,18.8997135 6.32989691,18.8997135 L17.6701031,18.8997135 C18.769299,18.8997135 19.6403207,18.1074218 19.6403207,17.1575931 L19.6403207,10.2808023 Z M20.1901489,4 C21.1786273,4 22,4.74713037 22,5.69627507 L22,7.98853868 C22,8.29237442 21.7538335,8.53868195 21.4501718,8.53868195 L2.54982818,8.53868195 C2.24616646,8.53868195 2,8.29237442 2,7.98853868 L2,5.69627507 C2,4.74713037 2.82137271,4 3.80985109,4 L20.1901489,4 Z M20.9003436,5.69627507 C20.9003436,5.37943754 20.5934534,5.10028653 20.1901489,5.10028653 L3.80985109,5.10028653 C3.40654659,5.10028653 3.09965636,5.37943754 3.09965636,5.69627507 L3.09965636,7.43839542 L20.9003436,7.43839542 L20.9003436,5.69627507 Z M15.069874,11.4269341 C15.069874,12.3760788 14.2485013,13.1232092 13.2600229,13.1232092 L10.7399771,13.1232092 C9.75149871,13.1232092 8.930126,12.3760788 8.930126,11.4269341 C8.930126,10.4777894 9.75149871,9.73065903 10.7399771,9.73065903 L13.2600229,9.73065903 C14.2485013,9.73065903 15.069874,10.4777894 15.069874,11.4269341 Z M13.9702176,11.4269341 C13.9702176,11.1100966 13.6633274,10.8309456 13.2600229,10.8309456 L10.7399771,10.8309456 C10.3366726,10.8309456 10.0297824,11.1100966 10.0297824,11.4269341 C10.0297824,11.7437716 10.3366726,12.0229226 10.7399771,12.0229226 L13.2600229,12.0229226 C13.6633274,12.0229226 13.9702176,11.7437716 13.9702176,11.4269341 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"resources\",\"icon\":[\"24\",\"24\",[],\"\",\"M4 6.83c0-.523.423-.948.948-.948H17.17c.524 0 .949.423.949.949v12.22a.947.947 0 0 1-.949.949H4.95a.947.947 0 0 1-.95-.948V6.83zm.941 12.222c0 .005 12.228.007 12.228.007.005 0 .007-12.228.007-12.228 0-.005-12.228-.007-12.228-.007-.005 0-.007 12.228-.007 12.228zm2.353-9.405a.47.47 0 1 1 0-.941h7.588a.47.47 0 1 1 0 .941H7.294zm0 2.824a.47.47 0 1 1 0-.942h7.588a.47.47 0 1 1 0 .942H7.294zm0 2.823a.47.47 0 1 1 0-.941h2.88a.47.47 0 1 1 0 .941h-2.88zM6.353 4.941a.47.47 0 1 1 0-.941h11.766C19.155 4 20 4.848 20 5.88v12.232a.47.47 0 1 1-.941 0V5.88a.945.945 0 0 0-.94-.938H6.353z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"series\",\"icon\":[\"24\",\"24\",[],\"\",\"M20.49,3.51c0.97,0,1.76,0.79,1.76,1.76v9.27c0,0.77-0.49,1.42-1.18,1.66l0.09-10.84c0-0.39-0.3-0.7-0.68-0.7l-14.27,0 C6.46,3.99,7.1,3.51,7.85,3.51H20.49z M18.38,5.56c0.97,0,1.76,0.79,1.76,1.75v9.27c0.01,0.77-0.49,1.42-1.17,1.66l0.09-10.86 c0-0.38-0.3-0.68-0.68-0.68l-14.28,0c0.25-0.67,0.89-1.14,1.64-1.14H18.38z M16.15,7.7c0.97,0,1.75,0.79,1.75,1.76v9.27 c0,0.97-0.79,1.75-1.75,1.75H3.5c-0.97,0-1.75-0.79-1.75-1.75V9.46c0-0.97,0.79-1.76,1.75-1.76H16.15z M16.14,8.85H3.51 c-0.38,0-0.68,0.3-0.68,0.68l0,0v9.13c0,0.38,0.3,0.68,0.68,0.68l0,0h12.62c0.38,0,0.68-0.3,0.68-0.68l0,0V9.53 C16.82,9.15,16.52,8.85,16.14,8.85L16.14,8.85z M8.46,12.41v3.37c0,0.18,0.21,0.28,0.35,0.18l2.31-1.69c0.12-0.09,0.12-0.27,0-0.35 L8.8,12.23C8.66,12.13,8.46,12.23,8.46,12.41\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"star-o\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.64 16.055a.768.768 0 0 1 .72 0l3.767 1.998-.806-4.602 3.357-3.249-4.626-.654L12 5.35 9.948 9.548l-4.626.654 3.357 3.25-.807 4.601 3.768-1.998zm-3.75 3.148a.768.768 0 0 1-1.116-.811l.804-4.583-3.344-3.235a.768.768 0 0 1 .426-1.312l4.607-.652 2.043-4.18a.768.768 0 0 1 1.38 0l2.043 4.18 4.607.652a.768.768 0 0 1 .426 1.312l-3.344 3.235.804 4.583a.768.768 0 0 1-1.116.81L12 17.023l-4.11 2.18z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"star\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.89 19.203a.768.768 0 0 1-1.116-.811l.804-4.583-3.344-3.235a.768.768 0 0 1 .426-1.312l4.607-.652 2.043-4.18a.768.768 0 0 1 1.38 0l2.043 4.18 4.607.652a.768.768 0 0 1 .426 1.312l-3.344 3.235.804 4.583a.768.768 0 0 1-1.116.81L12 17.023l-4.11 2.18z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"subject\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.15,21.08H5.1c-1.09,0-1.98-0.89-1.98-1.98V5.06c0-1.09,0.89-1.98,1.98-1.98h14.04c1.09,0,1.98,0.89,1.98,1.98V19.1 C21.12,20.19,20.24,21.08,19.15,21.08z M20.12,19.16V5c0-0.51-0.41-0.92-0.92-0.92H7.04C6.54,4.08,6.12,4.49,6.12,5v14.16 c0,0.51,0.41,0.92,0.92,0.92h12.16C19.71,20.08,20.12,19.67,20.12,19.16z M19.12,6.95V6.81c0-0.36-0.29-0.65-0.65-0.65H8.78 c-0.36,0-0.65,0.29-0.65,0.65v0.13c0,0.36,0.29,0.65,0.65,0.65h9.69C18.83,7.6,19.12,7.31,19.12,6.95z M19.12,9.95V9.81 c0-0.36-0.29-0.65-0.65-0.65H8.78c-0.36,0-0.65,0.29-0.65,0.65v0.13c0,0.36,0.29,0.65,0.65,0.65h9.69 C18.83,10.6,19.12,10.31,19.12,9.95z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"tag\",\"icon\":[\"24\",\"24\",[],\"\",\"M9.85651379,4 C10.5597673,4 11.2342681,4.27911643 11.7318501,4.77635695 L11.7318501,4.77635695 L19.5192508,12.5634018 C20.1602555,13.2045708 20.1602555,14.2439177 19.5192159,14.8851217 L19.5192159,14.8851217 L14.8855145,19.5192848 C14.2443321,20.1602442 13.2049876,20.1602442 12.5637184,19.519198 L12.5637184,19.519198 L4.7762613,11.7314233 C4.27913559,11.2340016 4,10.5595161 4,9.85635067 L4,9.85635067 L4,5.64191268 C4,4.7351029 4.73513649,4 5.64195885,4 L5.64195885,4 L9.85651379,4 Z M9.85658948,5.26315824 L5.64195885,5.26315824 C5.4327466,5.26315824 5.26315823,5.43273884 5.26315823,5.64191268 L5.26315823,5.64191268 L5.26315823,9.85642637 C5.26315823,10.2247328 5.40935021,10.5779817 5.66959105,10.8383776 L5.66959105,10.8383776 L13.4568376,18.6259418 C13.6047616,18.7738142 13.8445582,18.7738142 13.9923822,18.6260417 L13.9923822,18.6260417 L18.6259486,13.9920135 C18.7738119,13.8441123 18.7738119,13.6043763 18.6260161,13.4565426 L18.6260161,13.4565426 L10.8388259,5.6697082 C10.5782887,5.40934993 10.2250082,5.26315824 9.85658948,5.26315824 L9.85658948,5.26315824 Z M7.78947471,6.10526373 C8.71963876,6.10526373 9.4736857,6.85931068 9.4736857,7.78947472 C9.4736857,8.71963876 8.71963876,9.4736857 7.78947471,9.4736857 C6.85931067,9.4736857 6.10526373,8.71963876 6.10526373,7.78947472 C6.10526373,6.85931068 6.85931067,6.10526373 7.78947471,6.10526373 Z M7.78947471,7.36842197 C7.5569337,7.36842197 7.36842197,7.55693371 7.36842197,7.78947472 C7.36842197,8.02201573 7.5569337,8.21052747 7.78947471,8.21052747 C8.02201572,8.21052747 8.21052746,8.02201573 8.21052746,7.78947472 C8.21052746,7.55693371 8.02201572,7.36842197 7.78947471,7.36842197 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"time\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 4c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm0 1.077a6.88 6.88 0 0 0-4.896 2.027A6.877 6.877 0 0 0 5.077 12c0 1.85.72 3.588 2.027 4.896A6.877 6.877 0 0 0 12 18.923a6.88 6.88 0 0 0 4.896-2.027A6.877 6.877 0 0 0 18.923 12a6.88 6.88 0 0 0-2.027-4.896A6.877 6.877 0 0 0 12 5.077zm2.524 9.599a.6.6 0 0 1-.848.848l-2.5-2.5A.6.6 0 0 1 11 12.6V8.624a.6.6 0 0 1 1.2 0v3.727l2.324 2.325z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"video\",\"icon\":[\"24\",\"24\",[],\"\",\"M4.5 6a.5.5 0 0 0-.5.5v11a.5.5 0 0 0 .5.5h15a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5h-15zm0-1h15A1.5 1.5 0 0 1 21 6.5v11a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 17.5v-11A1.5 1.5 0 0 1 4.5 5zM10 9.26v5.48a.256.256 0 0 0 .39.218l4.482-2.74a.256.256 0 0 0 0-.436l-4.483-2.74a.256.256 0 0 0-.389.219z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"white-wave\",\"icon\":[\"1200\",\"244\",[],\"\",\"M1104.19651,33.5198863 C1084.14716,45.4511816 1067.10689,82.9623447 1047.23647,124.40502 C1023.86518,173.149287 924.725009,160.996474 830.060105,199.668011 C735.395201,238.339548 706.121292,249.351671 618.615175,241.737466 C531.109058,234.12326 495.404437,207.34459 432.2827,199.668011 C370.933901,192.207048 283.214734,200.240922 234.995453,186.264588 C153.311618,162.588569 167.948341,80.4093241 122.421855,59.9864363 C102.62311,51.1048469 61.8158253,37.3273576 0,18.6539685 L0,0 L1200,0 C1161.79495,7.07406031 1129.86046,18.2473557 1104.19651,33.5198863 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"close-caption\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm5.486 9.759c-1.002 0-1.834-.372-2.495-1.114-.66-.743-.991-1.68-.991-2.81 0-1.208.327-2.149.981-2.823C6.635 8.337 7.548 8 8.719 8c.579 0 1.226.08 1.941.24v1.127c-.76-.223-1.38-.335-1.86-.335-.687 0-1.24.259-1.657.776-.417.517-.625 1.207-.625 2.068 0 .834.214 1.508.642 2.023.429.515.99.773 1.682.773.615 0 1.248-.157 1.9-.472v1.162c-.87.265-1.622.397-2.256.397zm7 0c-1.002 0-1.834-.372-2.495-1.114-.66-.743-.991-1.68-.991-2.81 0-1.208.327-2.149.981-2.823C13.635 8.337 14.548 8 15.719 8c.579 0 1.226.08 1.941.24v1.127c-.76-.223-1.38-.335-1.86-.335-.687 0-1.24.259-1.657.776-.417.517-.625 1.207-.625 2.068 0 .834.214 1.508.642 2.023.429.515.99.773 1.682.773.615 0 1.248-.157 1.9-.472v1.162c-.87.265-1.622.397-2.256.397z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"contract\",\"icon\":[\"24\",\"24\",[],\"\",\"M8.5 8.5V5H10v5H5V8.5h3.5zm0 7H5V14h5v5H8.5v-3.5zm7-7H19V10h-5V5h1.5v3.5zm0 7V19H14v-5h5v1.5h-3.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"full-screen\",\"icon\":[\"24\",\"24\",[],\"\",\"M6.5 6.5V10H5V5h5v1.5H6.5zm0 11H10V19H5v-5h1.5v3.5zm11-11H14V5h5v5h-1.5V6.5zm0 11V14H19v5h-5v-1.5h3.5z\"]}","import Quality240 from './quality-240.svg';\r\nimport Quality480 from './quality-480.svg';\r\nimport QualityHD from './quality-hd.svg';\r\nimport CloseCaption from './close-caption.svg';\r\nimport Contract from './contract.svg';\r\nimport FullScreen from './full-screen.svg';\r\nimport Mute from './mute.svg';\r\nimport Next from './next.svg';\r\nimport Play from './play.svg';\r\nimport PlayCircle from './play-circle.svg';\r\nimport Pause from './pause.svg';\r\nimport Previous from './previous.svg';\r\nimport Volume from './volume.svg';\r\n\r\nexport {\r\n Quality240,\r\n Quality480,\r\n QualityHD,\r\n CloseCaption,\r\n Contract,\r\n FullScreen,\r\n Mute,\r\n Next,\r\n Play,\r\n PlayCircle,\r\n Pause,\r\n Previous,\r\n Volume\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"mute\",\"icon\":[\"24\",\"24\",[],\"\",\"M16.733 12.018l-1.57-1.57a.555.555 0 1 1 .785-.785l1.57 1.57 1.57-1.57a.555.555 0 1 1 .785.785l-1.57 1.57 1.57 1.57a.555.555 0 1 1-.785.785l-1.57-1.57-1.57 1.57a.555.555 0 1 1-.785-.785l1.57-1.57zM4 10.03c0-.557.443-1.01 1.01-1.01H8l4.284-4.246c.395-.393.716-.253.716.282v13.879c0 .548-.324.682-.721.303L7.814 14.97H5.002A1.003 1.003 0 0 1 4 13.96v-3.93z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"next\",\"icon\":[\"24\",\"24\",[],\"\",\"M16 6.5c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01a.501.501 0 0 1-.495-.5v-11zm-10.86.005a.5.5 0 0 1 .761-.427l9.003 5.5a.5.5 0 0 1 0 .853l-9.003 5.5a.5.5 0 0 1-.76-.426v-11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"pause\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 6.5c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01A.501.501 0 0 1 8 17.5v-11zm6 0c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01a.501.501 0 0 1-.495-.5v-11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"play-circle\",\"icon\":[\"24\",\"24\",[],\"\",\"M0,12 C0,5.372583 5.372583,0 12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 Z M23,12 C23,5.92486775 18.0751322,1 12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12 Z M9,7.49836245 C9,6.94698209 9.38671875,6.74169922 9.84669815,7.02918634 L17.1533018,11.5958137 C17.6209203,11.8880752 17.6132812,12.3666992 17.1533018,12.6541863 L9.84669815,17.2208137 C9.37907967,17.5130752 9,17.2950531 9,16.7516375 L9,7.49836245 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"play\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.5 6.505v11l9.002-5.5-9.002-5.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"previous\",\"icon\":[\"24\",\"24\",[],\"\",\"M5 6.5c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01A.501.501 0 0 1 5 17.5v-11zm13.602.005v11a.5.5 0 0 1-.76.426l-9.003-5.5a.5.5 0 0 1 0-.853l9.002-5.5a.5.5 0 0 1 .761.427z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"quality-240\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm1 4.818C4 9.644 4.94 8.8 6.261 8.8c1.272 0 2.182.777 2.182 1.81 0 .76-.45 1.334-1.285 2.178L5.58 14.347v.022h2.96v.932H4.062v-.769L6.407 12.2c.724-.737.923-1.064.923-1.54 0-.526-.473-.946-1.104-.946-.663 0-1.157.468-1.157 1.1v.017H4v-.013zm8.426 4.483v-1.206h-3.18v-.98c.553-1.043 1.264-2.178 2.646-4.187h1.62v4.235h.857v.932h-.856v1.206h-1.087zm-2.146-2.142v.03h2.164V9.773h-.018c-1.029 1.492-1.638 2.433-2.146 3.387zm7.234 2.27c-1.564 0-2.496-1.277-2.496-3.321 0-2.036.941-3.308 2.496-3.308 1.55 0 2.486 1.263 2.486 3.303s-.927 3.326-2.486 3.326zm0-.932c.843 0 1.333-.888 1.333-2.39 0-1.488-.499-2.375-1.333-2.375-.84 0-1.347.896-1.347 2.371 0 1.502.499 2.394 1.347 2.394z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"quality-480\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm3.964 9.269v-1.2H3.8v-.976c.55-1.037 1.257-2.166 2.632-4.166h1.613v4.215h.853v.927h-.853v1.2h-1.08zm-2.136-2.132v.031h2.154V9.767h-.018c-1.024 1.485-1.63 2.421-2.136 3.37zm7.185 2.26c-1.467 0-2.47-.761-2.47-1.842 0-.822.58-1.468 1.442-1.63v-.022c-.72-.185-1.19-.743-1.19-1.433 0-.962.926-1.67 2.218-1.67 1.297 0 2.215.703 2.215 1.674 0 .681-.466 1.235-1.186 1.429v.022c.861.167 1.446.813 1.446 1.63 0 1.085-1.016 1.841-2.475 1.841zm0-.867c.76 0 1.297-.448 1.297-1.059 0-.62-.536-1.063-1.297-1.063-.76 0-1.296.448-1.296 1.063 0 .611.536 1.06 1.296 1.06zm0-2.988c.638 0 1.095-.395 1.095-.94 0-.55-.453-.945-1.095-.945-.646 0-1.098.395-1.098.945 0 .545.452.94 1.098.94zm5.709 3.854c-1.556 0-2.483-1.27-2.483-3.304 0-2.026.936-3.292 2.483-3.292 1.542 0 2.474 1.257 2.474 3.287 0 2.03-.923 3.31-2.474 3.31zm0-.927c.84 0 1.327-.883 1.327-2.377 0-1.481-.497-2.365-1.327-2.365-.835 0-1.34.892-1.34 2.36 0 1.494.496 2.382 1.34 2.382z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"quality-hd\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm2 2.25h1.31v2.976h3.406V8.25h1.31v7.482h-1.31v-3.374H6.31v3.374H5V8.25zm7.597 0H15.7c.573 0 1.069.098 1.488.293.42.196.762.463 1.027.802.266.339.463.735.592 1.19.13.454.194.939.194 1.456a5.3 5.3 0 0 1-.194 1.457 3.43 3.43 0 0 1-.592 1.189 2.765 2.765 0 0 1-1.027.802c-.419.195-.915.293-1.488.293h-3.102V8.25zm1.31 6.413h1.29c.51 0 .927-.068 1.251-.204.325-.136.58-.325.765-.566.185-.241.311-.524.378-.849.066-.325.1-.676.1-1.053 0-.377-.034-.728-.1-1.053a2.043 2.043 0 0 0-.378-.849 1.832 1.832 0 0 0-.765-.566c-.324-.136-.742-.204-1.252-.204h-1.289v5.344z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"volume\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.8 11.25c-.137-.815-.44-1.549-.727-2.009a.48.48 0 0 1 .167-.67.507.507 0 0 1 .687.163c.35.56.7 1.41.86 2.359.24 1.439.001 2.866-.866 4.183a.508.508 0 0 1-.691.147.48.48 0 0 1-.15-.674c.724-1.1.922-2.285.72-3.5zm1.86 5.959c1.856-3.7 1.676-7.108 0-10.416a.558.558 0 0 1 .201-.728.483.483 0 0 1 .678.215c1.828 3.61 2.028 7.398.001 11.438a.483.483 0 0 1-.677.218.557.557 0 0 1-.203-.727zM4 10.03c0-.557.443-1.01 1.01-1.01H8l4.284-4.246c.395-.393.716-.253.716.282v13.879c0 .548-.324.682-.721.303L7.814 14.97H5.002A1.003 1.003 0 0 1 4 13.96v-3.93z\"]}","import * as FontAwesome from '@fortawesome/fontawesome';\r\nimport * as _ from 'underscore';\r\nimport { importedSvgs } from './ImportedSvgs';\r\n\r\nconst cvPrefix = 'cv' as FontAwesome.IconPrefix;\r\n\r\n_.extend(FontAwesome.config, {\r\n autoReplaceSvg: false,\r\n autoAddCss: false,\r\n familyPrefix : cvPrefix,\r\n autoA11y: true,\r\n observeMutations: false,\r\n replacementClass: 'cv-svg',\r\n keepOriginalSource: false\r\n});\r\n\r\n// Register our custom icons with FA\r\nFontAwesome.library.add(...importedSvgs);\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"check-circle-o\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 3c4.972 0 9 4.028 9 9s-4.028 9-9 9-9-4.028-9-9 4.028-9 9-9zm0 1.212a7.737 7.737 0 0 0-5.508 2.28A7.737 7.737 0 0 0 4.212 12c0 2.081.809 4.037 2.28 5.508A7.737 7.737 0 0 0 12 19.788a7.737 7.737 0 0 0 5.508-2.28A7.737 7.737 0 0 0 19.788 12a7.737 7.737 0 0 0-2.28-5.508A7.737 7.737 0 0 0 12 4.212zm3.186 4.434a.772.772 0 0 1 1.058-.068.7.7 0 0 1 .07 1.016l-5.25 5.76a.771.771 0 0 1-1.094.035l-2.25-2.16a.7.7 0 0 1 0-1.018.772.772 0 0 1 1.06 0l1.683 1.616 4.723-5.181z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"check-circle\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 3c4.972 0 9 4.028 9 9s-4.028 9-9 9-9-4.028-9-9 4.028-9 9-9zm3.186 5.646l-4.723 5.18-1.683-1.615a.772.772 0 0 0-1.06 0 .7.7 0 0 0 0 1.018l2.25 2.16a.771.771 0 0 0 1.094-.035l5.25-5.76a.7.7 0 0 0-.07-1.016.772.772 0 0 0-1.058.068z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"check\",\"icon\":[\"24\",\"24\",[],\"\",\"M16.247 7.341a1 1 0 0 1 1.506 1.318l-7 8a1 1 0 0 1-1.46.048l-3-3a1 1 0 0 1 1.414-1.414l2.244 2.244 6.296-7.196z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"close-caption-badge\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5h-9zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4zM11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9H11zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9H16z\"]}","import CheckCircle from './check-circle.svg';\r\nimport CheckCircleOutline from './check-circle-o.svg';\r\nimport Check from './check.svg';\r\nimport CloseCaptionBadge from './close-caption-badge.svg';\r\nimport Question from './question.svg';\r\nimport Info from './info.svg';\r\nimport Lock from './lock.svg';\r\nimport Verified from './verified.svg';\r\nimport VisibleOff from './visible-off.svg';\r\nimport VisibleOn from './visible-on.svg';\r\nimport WarningOutline from './warning-o.svg';\r\nimport Warning from './warning.svg';\r\n\r\nexport {\r\n CheckCircle,\r\n CheckCircleOutline,\r\n Check,\r\n CloseCaptionBadge,\r\n Info,\r\n Lock,\r\n Verified,\r\n VisibleOff,\r\n VisibleOn,\r\n WarningOutline,\r\n Warning,\r\n Question\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"info\",\"icon\":[\"24\",\"24\",[],\"\",\"M21 11.88c.026 2.49-.824 4.62-2.552 6.387-1.727 1.768-3.837 2.679-6.327 2.732-2.491.027-4.62-.823-6.388-2.55C3.965 16.72 3.054 14.61 3 12.12c-.027-2.491.823-4.62 2.55-6.388C7.28 3.965 9.39 3.054 11.88 3c2.491-.027 4.62.823 6.388 2.55 1.767 1.73 2.678 3.84 2.732 6.33zm-10-.38V15a2.5 2.5 0 0 0 2.5 2.5h.75a1 1 0 0 0 0-2h-.75a.5.5 0 0 1-.5-.5v-3.75a1.75 1.75 0 0 0-1.75-1.75h-.75a1 1 0 1 0 0 2h.5zm.636-3.25c.294 0 .553-.1.778-.301.224-.2.336-.477.336-.828 0-.316-.107-.582-.321-.797A1.073 1.073 0 0 0 11.636 6c-.319 0-.588.108-.807.324a1.07 1.07 0 0 0-.329.797c0 .356.113.634.34.832.227.198.492.297.796.297z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"lock\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.01 9.5C7.156 5.97 8.87 4 12 4s4.844 1.97 4.99 5.5h1.51a.5.5 0 0 1 .5.5v9.5a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5V10a.5.5 0 0 1 .5-.5h1.51zm2 0h5.98C14.88 7.037 13.932 6 12 6c-1.933 0-2.88 1.037-2.99 3.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"question\",\"icon\":[\"24\",\"24\",[],\"\",\"M21 11.88c.026 2.49-.824 4.62-2.552 6.387-1.727 1.768-3.837 2.679-6.327 2.732-2.491.027-4.62-.823-6.388-2.55C3.965 16.72 3.054 14.61 3 12.12c-.027-2.491.823-4.62 2.55-6.388C7.28 3.965 9.39 3.054 11.88 3c2.491-.027 4.62.823 6.388 2.55 1.767 1.73 2.678 3.84 2.732 6.33zM8.142 9.17c0 .247.103.476.309.687.206.212.46.318.76.318.508 0 .854-.303 1.036-.908.193-.579.428-1.017.707-1.314.278-.297.712-.446 1.302-.446.503 0 .914.147 1.233.442.319.294.478.656.478 1.085 0 .22-.052.423-.157.61a2.305 2.305 0 0 1-.385.51c-.153.153-.4.38-.744.68-.39.342-.701.638-.932.887-.23.25-.415.539-.554.868-.14.33-.209.72-.209 1.17 0 .358.095.629.285.81.19.183.425.274.703.274.536 0 .855-.279.956-.836a12.2 12.2 0 0 1 .133-.55c.03-.104.071-.209.125-.313.053-.105.135-.22.245-.346.11-.126.255-.272.438-.438a48.078 48.078 0 0 0 1.37-1.257c.254-.25.474-.545.658-.888.185-.343.278-.742.278-1.197a2.87 2.87 0 0 0-.486-1.608c-.325-.492-.784-.882-1.378-1.169-.595-.286-1.28-.43-2.057-.43-.836 0-1.567.172-2.194.515s-1.104.775-1.43 1.297c-.327.523-.49 1.038-.49 1.547zm3.868 9.579c.294 0 .553-.1.778-.301.224-.2.336-.477.336-.828 0-.316-.107-.582-.321-.797a1.073 1.073 0 0 0-.793-.324c-.319 0-.588.108-.807.324a1.07 1.07 0 0 0-.329.797c0 .356.113.634.34.832.227.198.492.297.796.297z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"verified\",\"icon\":[\"24\",\"24\",[],\"\",\"M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-off\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.293 6.609l-.793.79A8.794 8.794 0 0 0 11.997 7C8.006 6.978 4 10.17 4 12c0 .925 1.062 2.216 2.63 3.254l-.715.714C4.174 14.76 3 13.228 3 12c0-2.44 4.5-6.025 9.003-6 1.119.006 2.239.234 3.29.609zm2.802 1.442C19.833 9.26 21 10.786 21 12c0 2.45-4.504 6-9 6-1.112 0-2.23-.223-3.279-.595l.794-.792A8.659 8.659 0 0 0 12 17c3.989 0 8-3.161 8-5 0-.911-1.055-2.196-2.62-3.235l.715-.714zm-7.65 7.635l.787-.785A3.005 3.005 0 0 0 15 12c0-.264-.034-.52-.098-.763l.787-.785a4 4 0 0 1-5.245 5.235zM8.318 13.57a4 4 0 0 1 5.257-5.246l-.785.782a3.003 3.003 0 0 0-3.687 3.68l-.785.784zm-3.466 6.285a.5.5 0 1 1-.706-.708l15-14.971a.5.5 0 1 1 .706.708l-15 14.97z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-on\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6zm1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12zm8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"warning-o\",\"icon\":[\"24\",\"24\",[],\"\",\"M13.026 4.377l8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0zM12 5L3.5 19h17L12 5zm0 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm.75-3.677a.689.689 0 0 1-.7.677.689.689 0 0 1-.7-.677V8.677c0-.374.313-.677.7-.677.387 0 .7.303.7.677v5.646z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"warning\",\"icon\":[\"24\",\"24\",[],\"\",\"M13.026 4.377l8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0zM12 18a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm.75-3.677V8.677a.689.689 0 0 0-.7-.677c-.387 0-.7.303-.7.677v5.646c0 .374.313.677.7.677.387 0 .7-.303.7-.677z\"]}","import { FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nexport class UserDataService extends BaseDataService {\r\n public get name(): string {\r\n return SharedDataServices.User;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.USER;\r\n }\r\n\r\n public getCurrentUser<T>(callback?: (user: T) => void, errorCallback?: () => void): T {\r\n return this.get<T>({\r\n resource: '/api/currentuser',\r\n eventPrefix: SharedDataPrefixes.CURRENT_USER,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getWorkspace(callback: (workspace: HashObject) => void, errorCallback?: () => void): HashObject {\r\n return this.get({\r\n resource: '/api/domain/v2/me/workspace?query=categorytree',\r\n eventPrefix: SharedDataPrefixes.WORKSPACE,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: SharedDataServices.User,\r\n dataChannelName: SharedDataChannels.USER\r\n};\r\n\r\nexport const UserDataServiceHelper = {\r\n getCurrentUserFetchOptions<T> (\r\n setData: (data: T) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions {\r\n return {\r\n ...BaseFetchOptions,\r\n eventPrefix: SharedDataPrefixes.CURRENT_USER,\r\n fetchData: (d: UserDataService) => d.getCurrentUser(),\r\n setData,\r\n onError\r\n };\r\n },\r\n\r\n // For marionette views\r\n currentUser: {\r\n dataServiceName: SharedDataServices.User,\r\n eventName: `${SharedDataPrefixes.CURRENT_USER}:sync`,\r\n getData: (instance: UserDataService) => instance.getCurrentUser(),\r\n getInstance: (context: Backbone.Events) => InstanceManager.getInstance(SharedDataServices.User, context),\r\n beforeOnBeforeRender: true\r\n }\r\n};","import { BasePaginatedCollection, BaseObject } from 'libs/shared/interfaces';\r\n\r\nexport const CollectionHelper = {\r\n isEmpty(collection: BasePaginatedCollection<BaseObject>): boolean {\r\n return collection && !(collection.data && collection.data.length);\r\n },\r\n\r\n length(collection: BasePaginatedCollection<BaseObject>): number {\r\n return collection && collection.data && collection.data.length;\r\n },\r\n\r\n at<T extends BaseObject>(collection: BasePaginatedCollection<T>, idx: number): T {\r\n if (!collection || !collection.data || !collection.data.length || idx > collection.data.length)\r\n return;\r\n\r\n return collection.data[idx];\r\n },\r\n\r\n get<T extends BaseObject>(collection: BasePaginatedCollection<T>, id: string): T {\r\n if (!collection || !collection.data || !collection.data.length)\r\n return;\r\n\r\n return collection.data.find(c => c.id && c.id.toString() === id);\r\n },\r\n\r\n flattenCollections<T extends BaseObject, U extends BasePaginatedCollection<T>>(collections: U[]): T[] {\r\n if (!collections || !collections.length)\r\n return;\r\n\r\n let flattened: T[] = [];\r\n\r\n collections.forEach(c => {\r\n flattened = [ ...flattened, ...c.data ];\r\n });\r\n\r\n return flattened;\r\n },\r\n\r\n getNextCursor<T extends BaseObject, U extends BasePaginatedCollection<T>>(collection: U): string {\r\n return collection.pagination && collection.pagination.cursors && collection.pagination.cursors.next;\r\n }\r\n};","import { FormikErrors, FormikTouched, getIn } from 'formik';\r\n\r\nexport const FormHelper = {\r\n getCustomFormControlClassName<T>(\r\n errors: FormikErrors<T>,\r\n touched: FormikTouched<T>,\r\n attribute: string,\r\n additionalClassName?: string\r\n ): string {\r\n let className = 'form-control';\r\n\r\n // Using getIn as it supports dot notation\r\n if (getIn(touched, attribute) && getIn(errors, attribute))\r\n className += ' is-invalid';\r\n\r\n if (additionalClassName)\r\n className += ` ${additionalClassName}`;\r\n\r\n return className;\r\n }\r\n};","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Banner } from 'libs/shared/interfaces';\r\nimport { ImageType, ImageSize, ResizeType } from 'libs/shared/enums/Images';\r\n\r\nexport interface ImageOptions {\r\n size?: ImageSize;\r\n bgColor?: string;\r\n width?: number;\r\n height?: number;\r\n resizeType?: ResizeType;\r\n ratio?: string;\r\n name?: string;\r\n}\r\n\r\nexport interface CategoryMapperImageOptions {\r\n fallbackBaseUrl: string;\r\n fallbackCategoryName: string;\r\n type: ImageType;\r\n}\r\n\r\nenum ImageTypeString {\r\n Banner = 'banner',\r\n Thumbnail = 'thumbnail'\r\n}\r\n\r\nconst ImageTypes: { [index: number]: ImageTypeString } = {\r\n [ImageType.Banners]: ImageTypeString.Banner,\r\n [ImageType.Thumbnails]: ImageTypeString.Thumbnail\r\n};\r\n\r\nconst endpoints = {\r\n categoryMapper: (type: ImageTypeString) => `/v1/category-map/${type}`\r\n};\r\n\r\nexport const ImageHelper = {\r\n createUrl(baseUrl: string, options?: ImageOptions): string {\r\n return ImageHelper._createUrl(baseUrl, options);\r\n },\r\n\r\n createBannerUrl(\r\n banner: Banner, mappingOptions?: CategoryMapperImageOptions, imageOptions?: ImageOptions\r\n ): string {\r\n // Return existing banner url where we have one saved \r\n if (banner && banner.url)\r\n return ImageHelper._createUrl(banner.url, imageOptions);\r\n\r\n return ImageHelper._createCategoryMappedUrl(mappingOptions, imageOptions);\r\n },\r\n\r\n /**\r\n * Ensures that strings are properly escaped before using them\r\n * within a URL.\r\n */\r\n Rfc3986EncodeURIComponent(str: string): string {\r\n return encodeURIComponent(str).replace(/[!'()*]/g, escape);\r\n },\r\n\r\n _createCategoryMappedUrl(mappingOptions: CategoryMapperImageOptions, options?: ImageOptions): string {\r\n const { fallbackBaseUrl, fallbackCategoryName, type } = mappingOptions;\r\n\r\n // Generate a fallback url against the image mapper\r\n const baseUrl = UrlHelper.safeUrlConcat(fallbackBaseUrl, `${endpoints.categoryMapper(ImageTypes[type])}`);\r\n\r\n const ops = { name: ImageHelper.Rfc3986EncodeURIComponent(fallbackCategoryName), ...options };\r\n\r\n return ImageHelper._createUrl(baseUrl, ops);\r\n },\r\n\r\n _createUrl(baseUrl: string, options?: ImageOptions): string {\r\n if (!baseUrl)\r\n return;\r\n\r\n if (ObjectHelper.isEmpty(options))\r\n return baseUrl;\r\n\r\n const params = $.param(options);\r\n\r\n const separator = baseUrl.indexOf('?') === -1\r\n ? '?'\r\n : '&';\r\n\r\n return UrlHelper.safeUrlConcat(baseUrl, `${separator}${params}`);\r\n },\r\n\r\n // For Backbone ThumbnailComponent\r\n legacyCreateThumbnailUrl(thumbnail: string | Core.Model | HashObject, options?: ImageOptions): string {\r\n if (!thumbnail)\r\n return '';\r\n\r\n let baseUrl;\r\n\r\n if (!thumbnail)\r\n return;\r\n\r\n if (thumbnail instanceof Core.Model)\r\n baseUrl = thumbnail.get('url');\r\n else if (typeof thumbnail === 'string')\r\n baseUrl = thumbnail;\r\n else\r\n baseUrl = thumbnail.url;\r\n\r\n if (!baseUrl) return;\r\n\r\n const ops = {\r\n size: ImageSize.Small,\r\n bgColor: '000',\r\n ...options\r\n };\r\n\r\n return ImageHelper._createUrl(baseUrl as string, ops);\r\n }\r\n};","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { BaseObject, ReorderRequest } from 'libs/shared/interfaces';\r\n\r\ninterface ReorderResult<T extends BaseObject> {\r\n reorderRequest: ReorderRequest;\r\n reorderedItems: T[];\r\n}\r\n\r\nexport const ReorderHelper = {\r\n reorder<T extends BaseObject>(items: T[], oldIdx: number, newIdx: number): ReorderResult<T> {\r\n if (oldIdx === newIdx)\r\n return { reorderedItems: items, reorderRequest: null };\r\n\r\n const reorderedItems: T[] = ArrayHelper.moveItem(items, oldIdx, newIdx);\r\n\r\n /**\r\n * If newIdx is the last idx then we set\r\n * destinationMemberId to null.\r\n */\r\n const destinationMemberId = newIdx < items.length - 1\r\n ? reorderedItems[newIdx + 1].id\r\n : null;\r\n\r\n const reorderRequest: ReorderRequest = {\r\n sourceMemberId: reorderedItems[newIdx].id,\r\n destinationMemberId\r\n };\r\n\r\n return { reorderedItems, reorderRequest };\r\n },\r\n\r\n updateState(\r\n dataPrefix: string,\r\n reorderRequest: ReorderRequest,\r\n data: { [key: string]: HashObject\r\n }): { [key: string]: HashObject } {\r\n const items: BaseObject[] = [];\r\n const updatedData = ObjectHelper.deepClone(data);\r\n\r\n const keys = [dataPrefix]; // Maintain an ordered list of keys.\r\n let page = data[dataPrefix];\r\n const pageSize = !!page && !!page.data && page.data.length;\r\n\r\n /**\r\n * Flatten items\r\n */\r\n while (page) {\r\n if (!Array.isArray(page.data))\r\n break;\r\n\r\n items.push(...page.data as BaseObject[]);\r\n\r\n const nextCursor = page.pagination\r\n && page.pagination.cursors\r\n && page.pagination.cursors.next;\r\n\r\n const nextKey = !!nextCursor && `${dataPrefix}:${nextCursor}`;\r\n\r\n page = nextCursor && data[nextKey];\r\n\r\n if (page)\r\n keys.push(nextKey);\r\n }\r\n\r\n if (!items.length)\r\n return data;\r\n\r\n /**\r\n * Reorder items\r\n */\r\n const removeIdx = ArrayHelper.findIndex(items, i => i.id === reorderRequest.sourceMemberId);\r\n\r\n const reorderedItems = [...items];\r\n\r\n const itemToMove = reorderedItems.splice(removeIdx, 1);\r\n\r\n const insertIdx = reorderRequest.destinationMemberId\r\n ? ArrayHelper.findIndex(reorderedItems, r => r.id === reorderRequest.destinationMemberId)\r\n : reorderedItems.length;\r\n\r\n reorderedItems.splice(insertIdx, 0, itemToMove[0]);\r\n\r\n /**\r\n * Paginate reordered items\r\n */\r\n keys.forEach(key => {\r\n const itemsToInsert = reorderedItems.splice(0, pageSize);\r\n updatedData[key].data = itemsToInsert;\r\n });\r\n\r\n return updatedData;\r\n }\r\n};","import { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nexport const StateHelper = {\r\n /**\r\n * Helper function to get the setState function for an individual key in a state object.\r\n * \r\n * @param setState React setState action\r\n * @param key Property within the state object we're updating\r\n * @param callback Optional callback to modify data before setting state. Uses identity fn by default.\r\n * \r\n * @returns Newly updated state object\r\n */\r\n getSetStateByKey<T extends {}>(\r\n setState: React.Dispatch<React.SetStateAction<T>>,\r\n key: keyof T,\r\n callback?: (data: any, state?: T) => T[keyof T]\r\n ): (data: any) => void {\r\n return (data: any) => setState(state => {\r\n const fn = FunctionHelper.isFunction(callback) ? callback : FunctionHelper.useIdentity<T>();\r\n return { ...state, [key]: fn(data, state) };\r\n });\r\n }\r\n};","import * as FA from '@fortawesome/fontawesome';\r\nimport { localSvgs } from 'libs/shared/images/svg';\r\n\r\ninterface SVGDefinition extends FA.IconDefinition {}\r\ninterface SVGIcon extends FA.Icon {}\r\ninterface SVGIconParams extends FA.IconParams {}\r\n\r\nexport interface SVGOptions {\r\n prefix?: string;\r\n iconOptions?: SVGIconParams;\r\n}\r\n\r\nconst CV_PREFIX = 'cv';\r\n\r\nexport class StaticSvgHelper {\r\n private static instance: StaticSvgHelper;\r\n\r\n private constructor() {}\r\n\r\n public static get Instance(): StaticSvgHelper {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public getSvg(svgName: string, options: SVGOptions = {}): string {\r\n const iconMeta = this.faIconLookup(svgName, options);\r\n const icon = this.getIcon(iconMeta, options);\r\n\r\n if (!icon || icon && !icon.html.length) return;\r\n\r\n return icon.html.pop();\r\n }\r\n\r\n private getIcon(iconDefinition: SVGDefinition, options: SVGOptions): SVGIcon {\r\n return FA.icon(iconDefinition, options.iconOptions || {});\r\n }\r\n\r\n private faIconLookup(iconName: string, options?: SVGOptions): SVGDefinition {\r\n let { prefix = CV_PREFIX } = options;\r\n\r\n // Deliberately cast to FA types\r\n return FA.findIconDefinition({\r\n prefix: <FA.IconPrefix> prefix,\r\n iconName: <FA.IconName> iconName\r\n });\r\n }\r\n}\r\n\r\nexport const SvgHelper = StaticSvgHelper.Instance;\r\nexport const cvSvgLibrary = localSvgs;","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\n\r\nimport { CompaniesView, NewCompanyView, EditCompanyView } from 'apps/companies/views';\r\n\r\nclass CompaniesAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.COMPANIES;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/companies(/)': 'companies',\r\n 'manage/companies/new(/)': 'newCompany',\r\n 'manage/companies/:id(/)': 'editCompany',\r\n };\r\n }\r\n}\r\n\r\nexport class CompaniesApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'Companies Application';\r\n }\r\n\r\n public static get router(): any {\r\n return CompaniesAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.COMPANIES;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return { name: Layouts.CURATOR_LAYOUT };\r\n }\r\n\r\n public companies(params: ObjectHash): void {\r\n const { cursor } = params;\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <CompaniesView cursor={cursor} />);\r\n }\r\n\r\n public newCompany(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewCompanyView />);\r\n }\r\n\r\n public editCompany(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditCompanyView id={id} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Company } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\nimport { CompanyValidationSchema } from 'apps/companies/utils';\r\n\r\nimport { EditCompanyForm } from './EditCompanyForm';\r\n\r\ninterface EditCompanyProps {\r\n saveCompany: (data: CreateOrUpdateCompanyRequest, onDone: () => void) => void;\r\n company?: Company;\r\n}\r\n\r\nexport function EditCompany(props: EditCompanyProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdateCompanyRequest, Company>\r\n initialValues={props.company}\r\n validationSchema={CompanyValidationSchema}\r\n onSubmit={props.saveCompany}\r\n >\r\n <EditCompanyForm isNew={!(props.company && props.company.id)} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\n\r\ninterface EditCompanyFormProps {\r\n isNew: boolean;\r\n}\r\n\r\nexport function EditCompanyForm(props: EditCompanyFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateCompanyRequest>();\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateCompanyRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this company'\r\n autoFocus\r\n />\r\n <FormButtons isNew={props.isNew} />\r\n </Form>\r\n );\r\n}","export * from './EditCompany';","export * from './edit-company';","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\n\r\nconst endpoints = {\r\n getCompanies: (cursor?: string) => {\r\n const baseUrl = `/api/master/v2/companies`;\r\n\r\n if (!cursor)\r\n return baseUrl;\r\n\r\n return `${baseUrl}?cursor=${cursor}`;\r\n },\r\n\r\n getCompany: (id: string) => `/api/master/v2/objects/${id}`,\r\n\r\n createCompany: () => `/api/master/v2/companies`,\r\n\r\n updateCompany: (id: string) => `/api/master/v2/objects/${id}`\r\n};\r\n\r\nconst DataPrefixes = {\r\n COMPANIES: 'companies',\r\n COMPANY: 'company',\r\n UPDATE_COMPANY: 'update:company'\r\n};\r\n\r\nexport const CompanyRequests = {\r\n getCompanies(cursor?: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.COMPANIES}${cursor ? `:${cursor}` : ''}`,\r\n url: endpoints.getCompanies(cursor),\r\n };\r\n },\r\n\r\n getCompany(id: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.COMPANY}:${id}`,\r\n url: endpoints.getCompany(id),\r\n };\r\n },\r\n\r\n createCompany(\r\n data: CreateOrUpdateCompanyRequest, success?: (data: any) => void, error?: (data: any) => void\r\n ): Flight.Request {\r\n return {\r\n key: DataPrefixes.COMPANY,\r\n url: endpoints.createCompany(),\r\n data,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n invalidationKeys: [DataPrefixes.COMPANIES],\r\n };\r\n },\r\n\r\n updateCompany(id: string, data: CreateOrUpdateCompanyRequest, callback?: () => void): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.UPDATE_COMPANY}:${id}`,\r\n url: endpoints.updateCompany(id),\r\n data,\r\n type: HttpVerbs.PUT,\r\n always: callback\r\n };\r\n }\r\n};","export * from './CompanyRequests';","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\n\r\nexport const CompanyValidationSchema = Yup.object().shape<CreateOrUpdateCompanyRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default('')\r\n\r\n}).noUnknown();","export * from './CompanyValidation';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { CompanyCollection, Company } from 'libs/shared/interfaces';\r\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { CompanyRequests } from 'apps/companies/flight-requests';\r\n\r\nconst application = AppChannels.COMPANIES;\r\n\r\nconst SEARCH_URL = '/api/domain/v1/search/companies/instant/raw';\r\n\r\nconst getCompanyAppLink = (company: Company) =>\r\n ({ application, action: Actions.Companies.EDIT_COMPANY, args: [company.id]});\r\n\r\nconst goToCompany = (person: Company) => Core.AppLinkHelper.trigger(getCompanyAppLink(person));\r\n\r\ninterface CompaniesViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function CompaniesView(props: CompaniesViewProps): JSX.Element {\r\n const companiesResponse = Flight.useBasicFetch<CompanyCollection>(CompanyRequests.getCompanies(props.cursor));\r\n\r\n return (\r\n <>\r\n <div className='pb-3 w-50'>\r\n <SearchBar\r\n placeholder='Search for a company'\r\n onSuggestionSelected={goToCompany}\r\n getRemoteUrl={(q: string) => `${SEARCH_URL}?q=${q}`}\r\n activationLength={2}\r\n />\r\n </div>\r\n <ObjectCollection\r\n collection={companiesResponse && companiesResponse.data}\r\n collectionAppLink={{ application, action: Actions.Companies.COMPANIES }}\r\n newObjectAppLink={{ application, action: Actions.Companies.NEW_COMPANY }}\r\n getObjectAppLink={getCompanyAppLink}\r\n objectName={'Company'}\r\n />\r\n </>\r\n );\r\n}","export * from './CompaniesView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Company } from 'libs/shared/interfaces';\r\n\r\nimport { CompanyRequests } from 'apps/companies/flight-requests';\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\nimport { EditCompany } from 'apps/companies/components';\r\n\r\ninterface EditCompanyViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditCompanyView(props: EditCompanyViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const companyResponse = Flight.useBasicFetch<Company>(CompanyRequests.getCompany(props.id));\r\n\r\n const saveCompany = (data: CreateOrUpdateCompanyRequest, onDone: () => void): void =>\r\n Flight.fetch(dispatch, CompanyRequests.updateCompany(props.id, data, onDone));\r\n\r\n return (\r\n <>\r\n {!!companyResponse.data &&\r\n <EditCompany company={companyResponse.data} saveCompany={saveCompany} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditCompanyView';","export * from './edit-company';\r\nexport * from './new-company';\r\nexport * from './companies';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { Company } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { CompanyRequests } from 'apps/companies/flight-requests';\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\nimport { EditCompany } from 'apps/companies/components';\r\n\r\nexport function NewCompanyView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createCompany = (data: CreateOrUpdateCompanyRequest, onDone: () => void): void => {\r\n const onSuccess = (newCompany: Company) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PEOPLE,\r\n action: Actions.Companies.EDIT_COMPANY,\r\n args: [newCompany.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, CompanyRequests.createCompany(data, onSuccess, onDone));\r\n };\r\n\r\n return (\r\n <EditCompany saveCompany={createCompany} />\r\n );\r\n}","export * from './NewCompanyView';","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\n\r\nimport { DomainOptionsView, NewDomainOptionView, EditDomainOptionView, DeleteDomainOptionView } from 'apps/domain-options/views';\r\n\r\nclass DomainOptionsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.DOMAIN_OPTIONS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'developer/options(/)': 'domainOptions',\r\n 'developer/options/new(/)': 'newDomainOption',\r\n 'developer/options/:id(/)': 'editDomainOption'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deleteDomainOption'\r\n ];\r\n }\r\n}\r\n\r\nexport class DomainOptionsApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'Domain Options Application';\r\n }\r\n\r\n public static get router(): any {\r\n return DomainOptionsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DOMAIN_OPTIONS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return { name: Layouts.CURATOR_LAYOUT };\r\n }\r\n\r\n public domainOptions(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DomainOptionsView />);\r\n }\r\n\r\n public newDomainOption(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewDomainOptionView />);\r\n }\r\n\r\n public editDomainOption(optionId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditDomainOptionView optionId={optionId} />);\r\n }\r\n\r\n public deleteDomainOption(optionId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeleteDomainOptionView optionId={optionId} {...this.getPopupProps()} />\r\n );\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\nimport { FieldAttributes } from 'formik';\r\nimport { FormField, FormFieldProps } from 'libs/shared/components/forms/form-field/FormField';\r\n\r\nimport { DomainOptionType, DomainOption } from 'apps/domain-options/interfaces';\r\n\r\ninterface DefaultValueFieldProps {\r\n type: DomainOptionType;\r\n defaultValue: string | number;\r\n}\r\n\r\nexport function DefaultValueField({ type, defaultValue }: DefaultValueFieldProps): JSX.Element {\r\n if (!type)\r\n return <></>;\r\n\r\n const formFieldProps: FieldAttributes<FormFieldProps<DomainOption>> = {\r\n label: 'Default Value',\r\n name: 'defaultValue',\r\n id: 'defaultValue',\r\n value: defaultValue\r\n };\r\n\r\n if (type === DomainOptionType.Boolean) {\r\n return (\r\n <FormField<DomainOption>\r\n as='select'\r\n {...formFieldProps}\r\n >\r\n <option value='true'>True</option>\r\n <option value='false'>False</option>\r\n </FormField>\r\n );\r\n }\r\n\r\n if (type === DomainOptionType.Long || type === DomainOptionType.StaffRequest)\r\n return <FormField<DomainOption> as='input' type='number' {...formFieldProps} />;\r\n\r\n if (type === DomainOptionType.String)\r\n return <FormField<DomainOption> as='input' {...formFieldProps} />;\r\n}\r\n","import * as React from 'react';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionValidationSchema } from 'apps/domain-options/utils';\r\nimport { EditDomainOptionDetailsForm } from './EditDomainOptionDetailsForm';\r\n\r\ninterface EditDomainOptionDetailsProps {\r\n domainOption?: DomainOption;\r\n saveDomainOption: (data: DomainOption, onDone: () => void) => void;\r\n}\r\n\r\nexport function EditDomainOptionDetails(props: EditDomainOptionDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<DomainOption>\r\n initialValues={props.domainOption}\r\n validationSchema={DomainOptionValidationSchema}\r\n onSubmit={props.saveDomainOption}\r\n >\r\n <EditDomainOptionDetailsForm id={props.domainOption && props.domainOption.id} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { MasterType } from 'libs/shared/enums/MasterType';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { DomainOption, DomainOptionType, DomainOptionKind } from 'apps/domain-options/interfaces';\r\n\r\nimport { DefaultValueField } from './DefaultValueField';\r\n\r\nconst validEntities = [ MasterType.Customer, MasterType.User ];\r\n\r\ninterface EditDomainOptionDetailsFormProps {\r\n id?: string;\r\n}\r\n\r\nexport function EditDomainOptionDetailsForm(props: EditDomainOptionDetailsFormProps): React.ReactElement {\r\n const isNew = props.id === null || props.id === undefined;\r\n\r\n const formikProps = useFormikContext<DomainOption>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<DomainOption>\r\n label='Name (snake_case)'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this domain option'\r\n autoFocus\r\n />\r\n\r\n <FormField<DomainOption>\r\n label='Display Name'\r\n type='text'\r\n name='displayName'\r\n id='displayName'\r\n value={formikProps.values.displayName}\r\n placeholder='Enter a display name for this domain option'\r\n />\r\n\r\n <FormField<DomainOption>\r\n as='select'\r\n label='Kind'\r\n name='kind'\r\n id='kind'\r\n value={formikProps.values.kind}\r\n >\r\n {ObjectHelper.getEnumKeys(DomainOptionKind).map((key: DomainOptionKind) =>\r\n <option key={key} value={(DomainOptionKind as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n\r\n <FormField<DomainOption>\r\n as='select'\r\n label='Entity'\r\n name='entityType'\r\n id='entityType'\r\n value={formikProps.values.entityType}\r\n >\r\n {ObjectHelper.getEnumKeys(MasterType)\r\n .filter((key: MasterType) => validEntities.includes((MasterType as any)[key]))\r\n .map((key: MasterType) =>\r\n <option key={key} value={(MasterType as any)[key]}>{key}</option>\r\n )\r\n }\r\n </FormField>\r\n\r\n <FormField<DomainOption>\r\n as='select'\r\n label='Type'\r\n name='type'\r\n id='type'\r\n value={formikProps.values.type}\r\n >\r\n {ObjectHelper.getEnumKeys(DomainOptionType).map((key: DomainOptionType) =>\r\n <option key={key} value={(DomainOptionType as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n\r\n <DefaultValueField type={formikProps.values.type} defaultValue={formikProps.values.defaultValue} />\r\n\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.DELETE_DOMAIN_OPTION,\r\n args: [props.id]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditDomainOptionDetails';","export * from './edit-domain-option-details';","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { DomainOption, DomainOptionType } from 'apps/domain-options/interfaces';\r\n\r\nconst normalizeOptions = {\r\n namespace: 'domain_options'\r\n};\r\n\r\nconst endpoints = {\r\n getAll: () => `/api/domain/v3/settings/types`,\r\n getOne: (id: string) => `/api/domain/v3/settings/types/${id}`,\r\n createOne: () => `/api/domain/v3/settings/types`,\r\n updateOne: (id: string) => `/api/domain/v3/settings/types/${id}`,\r\n deleteOne: (id: string) => `/api/domain/v3/settings/types/${id}`\r\n};\r\n\r\nconst DataPrefixes = {\r\n DOMAIN_OPTIONS: 'domain:options',\r\n DOMAIN_OPTION: 'domain:option',\r\n UPDATE_DOMAIN_OPTION: 'update:domain:option',\r\n DELETE_DOMAIN_OPTION: 'delete:domain:option'\r\n};\r\n\r\nexport const DomainOptionRequests = {\r\n getAllOptions(): Flight.Request {\r\n return {\r\n key: DataPrefixes.DOMAIN_OPTIONS,\r\n url: endpoints.getAll(),\r\n normalizeOptions\r\n };\r\n },\r\n getOption(id: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.DOMAIN_OPTION}:${id}`,\r\n url: endpoints.getOne(id),\r\n normalizeOptions\r\n };\r\n },\r\n\r\n createOption(option: DomainOption, success: (data: any) => void, error: (data: any) => void): Flight.Request {\r\n /**\r\n * DefaultValue for String option types must always be wrapped with quotation marks.\r\n */\r\n if (option.type === DomainOptionType.String)\r\n option = quotifyDefaultValue(option);\r\n\r\n return {\r\n key: DataPrefixes.DOMAIN_OPTION,\r\n url: endpoints.createOne(),\r\n data: option,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n invalidationKeys: [DataPrefixes.DOMAIN_OPTIONS],\r\n normalizeOptions\r\n };\r\n },\r\n\r\n updateOption(option: DomainOption, callback: () => void): Flight.Request {\r\n /**\r\n * DefaultValue for String option types must always be wrapped with quotation marks.\r\n */\r\n if (option.type === DomainOptionType.String)\r\n option = quotifyDefaultValue(option);\r\n\r\n return {\r\n key: `${DataPrefixes.UPDATE_DOMAIN_OPTION}:${option.id}`,\r\n url: endpoints.updateOne(option.id),\r\n data: option,\r\n type: HttpVerbs.PUT,\r\n always: callback,\r\n formatData: () => option,\r\n normalizeOptions\r\n };\r\n },\r\n deleteOption(id: string, success: () => void): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.DELETE_DOMAIN_OPTION}:${id}`,\r\n url: endpoints.deleteOne(id),\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [DataPrefixes.DOMAIN_OPTIONS],\r\n normalizeOptions,\r\n success\r\n };\r\n },\r\n};\r\n\r\nfunction quotifyDefaultValue(option: DomainOption): DomainOption {\r\n const { defaultValue } = option;\r\n let defaultValueString = defaultValue as string;\r\n\r\n if (defaultValueString === '\"') {\r\n return {\r\n ...option,\r\n defaultValue: `\"${defaultValueString}\"`\r\n };\r\n }\r\n\r\n const firstChar = defaultValueString.charAt(0);\r\n const lastChar = defaultValueString.charAt(defaultValueString.length - 1);\r\n\r\n if (firstChar !== '\"')\r\n defaultValueString = `\"${defaultValueString}`;\r\n\r\n if (lastChar !== '\"')\r\n defaultValueString = `${defaultValueString}\"`;\r\n\r\n return {\r\n ...option,\r\n defaultValue: defaultValueString\r\n };\r\n}","export * from './DomainOptionRequests';","export * from './data-requests';\r\nexport * from './models';","import { MasterType } from 'libs/shared/enums/MasterType';\r\n\r\n/**\r\n * In the database the types are saved as C# types written as strings. Every field here\r\n * has been copied from what already exists in the database.\r\n */\r\nexport enum DomainOptionType {\r\n Boolean = 'System.Boolean',\r\n String = 'System.String',\r\n StaffRequest = 'ClickView.DomainApi.Models.Options.Enums.StaffRequestOption, ClickView.DomainApi.Models, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null',\r\n Long = 'System.Int64'\r\n}\r\n\r\nexport enum DomainOptionKind {\r\n Permanent = 0,\r\n Temporary = 1\r\n}\r\n\r\nexport interface DomainOption {\r\n id: string;\r\n name: string;\r\n displayName: string;\r\n type: DomainOptionType;\r\n entityType: MasterType;\r\n kind: DomainOptionKind;\r\n defaultValue: string | number;\r\n}","export * from './DomainOption';","export * from './validation';","import * as Yup from 'yup';\r\nimport { MasterType } from 'libs/shared/enums/MasterType';\r\n\r\nimport { DomainOption, DomainOptionType, DomainOptionKind } from 'apps/domain-options/interfaces';\r\n\r\nexport const DomainOptionValidationSchema = Yup.object().shape<DomainOption>({\r\n id: Yup.string(),\r\n\r\n name: Yup.string()\r\n .trim()\r\n .max(64, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n displayName: Yup.string()\r\n .trim()\r\n .max(255, 'Display name is too long')\r\n .required('Display name is required')\r\n .default(''),\r\n\r\n type: Yup.mixed<DomainOptionType>()\r\n .required('Type is required')\r\n .default(DomainOptionType.Boolean),\r\n\r\n entityType: Yup.mixed<MasterType>()\r\n .required('Entity type is required')\r\n .default(MasterType.Customer),\r\n\r\n kind: Yup.mixed<DomainOptionKind>()\r\n .required('Kind is required')\r\n .default(DomainOptionKind.Temporary),\r\n\r\n defaultValue: Yup.mixed<string | number>()\r\n .required('Default value is required')\r\n .default('false')\r\n\r\n}).noUnknown();","export * from './DomainOptionValidation';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\n\r\ninterface DeleteDomainOptionViewProps {\r\n optionId: string;\r\n}\r\n\r\nexport function DeleteDomainOptionView(props: DeleteDomainOptionViewProps & PopupViewProps): React.ReactElement {\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const domainOption = Flight.useBasicFetch<DomainOption>(DomainOptionRequests.getOption(props.optionId));\r\n const dispatch = useDispatch();\r\n\r\n const onDeleteSuccess = () => {\r\n props.closePopup();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.DOMAIN_OPTIONS\r\n });\r\n };\r\n\r\n const deleteDomainOption = () => {\r\n setShowButtonSpinner(true);\r\n\r\n Flight.fetch(dispatch, DomainOptionRequests.deleteOption(props.optionId, onDeleteSuccess));\r\n };\r\n\r\n return (\r\n <Popup title='Delete Domain Option' closePopup={props.closePopup} showLoadingSpinner={!domainOption.data}>\r\n {domainOption.data &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{domainOption.data.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteDomainOption,\r\n buttonText: 'Yes, delete this domain option',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteDomainOptionView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\n\r\nconst getOptionAppLink = (option: DomainOption) => ({\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.EDIT_DOMAIN_OPTION,\r\n args: [option.id]\r\n});\r\n\r\nconst newOptionAppLink = {\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.NEW_DOMAIN_OPTION\r\n};\r\n\r\nexport function DomainOptionsView(): JSX.Element {\r\n const domainOptions = Flight.useBasicFetch<DomainOption[]>(DomainOptionRequests.getAllOptions());\r\n\r\n if (!domainOptions.data)\r\n return <></>;\r\n\r\n const optionNames = domainOptions.data.map(option => {\r\n if (option.displayName)\r\n option.name = option.displayName;\r\n\r\n return option;\r\n });\r\n\r\n return (\r\n <>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select a domain option type to edit:</h5>\r\n <AppLink appLink={newOptionAppLink} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Domain Option</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav objects={optionNames} getAppLink={getOptionAppLink} />\r\n </>\r\n );\r\n}","export * from './DomainOptionsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\nimport { EditDomainOptionDetails } from 'apps/domain-options/components';\r\n\r\ninterface EditDomainOptionViewProps {\r\n optionId: string;\r\n}\r\n\r\nexport function EditDomainOptionView({ optionId }: EditDomainOptionViewProps): JSX.Element {\r\n const domainOption = Flight.useBasicFetch<DomainOption>(DomainOptionRequests.getOption(optionId));\r\n\r\n const dispatch = useDispatch();\r\n const saveDomainOption = (data: DomainOption, onDone: () => void): void =>\r\n Flight.fetch(dispatch, DomainOptionRequests.updateOption(data, onDone));\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Edit Domain Option</h4>\r\n {domainOption.data &&\r\n <EditDomainOptionDetails domainOption={domainOption.data} saveDomainOption={saveDomainOption} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditDomainOptionView';","export * from './delete-domain-option';\r\nexport * from './domain-options';\r\nexport * from './new-domain-option';\r\nexport * from './edit-domain-option';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\nimport { EditDomainOptionDetails } from 'apps/domain-options/components';\r\n\r\nexport function NewDomainOptionView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createDomainOption = (data: DomainOption, onDone: () => void): void => {\r\n const onSuccess = (newDomainOption: DomainOption) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.EDIT_DOMAIN_OPTION,\r\n args: [newDomainOption.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, DomainOptionRequests.createOption(data, onSuccess, onDone));\r\n };\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Create New Domain Option</h4>\r\n <EditDomainOptionDetails saveDomainOption={createDomainOption} />\r\n </>\r\n );\r\n}","export * from './NewDomainOptionView';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\n\r\nimport { PeopleView, NewPersonView, EditPersonView } from 'apps/people/views';\r\n\r\nclass PeopleAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.PEOPLE;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/people(/)': 'people',\r\n 'manage/people/new(/)': 'newPerson',\r\n 'manage/people/:id(/)': 'editPerson',\r\n };\r\n }\r\n}\r\n\r\nexport class PeopleApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'People Application';\r\n }\r\n\r\n public static get router(): any {\r\n return PeopleAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PEOPLE;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return { name: Layouts.CURATOR_LAYOUT };\r\n }\r\n\r\n public people(params: ObjectHash): void {\r\n const { cursor } = params;\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PeopleView cursor={cursor} />);\r\n }\r\n\r\n public newPerson(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewPersonView />);\r\n }\r\n\r\n public editPerson(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPersonView id={id} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Person } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\nimport { PersonValidationSchema } from 'apps/people/utils';\r\n\r\nimport { EditPersonForm } from './EditPersonForm';\r\n\r\ninterface EditPersonProps {\r\n savePerson: (data: CreateOrUpdatePersonRequest, onDone: () => void) => void;\r\n person?: Person;\r\n}\r\n\r\nexport function EditPerson(props: EditPersonProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdatePersonRequest, Person>\r\n initialValues={props.person}\r\n validationSchema={PersonValidationSchema}\r\n onSubmit={props.savePerson}\r\n >\r\n <EditPersonForm isNew={!(props.person && props.person.id)} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\n\r\ninterface EditPersonFormProps {\r\n isNew: boolean;\r\n}\r\n\r\nexport function EditPersonForm(props: EditPersonFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdatePersonRequest>();\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdatePersonRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this person'\r\n autoFocus\r\n />\r\n <FormButtons isNew={props.isNew} />\r\n </Form>\r\n );\r\n}","export * from './EditPerson';","export * from './edit-person';","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\n\r\nconst endpoints = {\r\n getPeople: (cursor?: string) => {\r\n const baseUrl = `/api/master/v2/people`;\r\n\r\n if (!cursor)\r\n return baseUrl;\r\n\r\n return `${baseUrl}?cursor=${cursor}`;\r\n },\r\n\r\n getPerson: (id: string) => `/api/master/v2/objects/${id}`,\r\n\r\n createPerson: () => `/api/master/v2/people`,\r\n\r\n updatePerson: (id: string) => `/api/master/v2/objects/${id}`\r\n};\r\n\r\nconst DataPrefixes = {\r\n PEOPLE: 'people',\r\n PERSON: 'person',\r\n UPDATE_PERSON: 'update:person'\r\n};\r\n\r\nexport const PersonRequests = {\r\n getPeople(cursor?: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.PEOPLE}${cursor ? `:${cursor}` : ''}`,\r\n url: endpoints.getPeople(cursor),\r\n };\r\n },\r\n\r\n getPerson(id: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.PERSON}:${id}`,\r\n url: endpoints.getPerson(id),\r\n };\r\n },\r\n\r\n createPerson(\r\n data: CreateOrUpdatePersonRequest, success?: (data: any) => void, error?: (data: any) => void\r\n ): Flight.Request {\r\n return {\r\n key: DataPrefixes.PERSON,\r\n url: endpoints.createPerson(),\r\n data,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n invalidationKeys: [DataPrefixes.PEOPLE],\r\n };\r\n },\r\n\r\n updatePerson(id: string, data: CreateOrUpdatePersonRequest, callback?: () => void): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.UPDATE_PERSON}:${id}`,\r\n url: endpoints.updatePerson(id),\r\n data,\r\n type: HttpVerbs.PUT,\r\n always: callback\r\n };\r\n }\r\n};","export * from './PersonRequests';","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\n\r\nexport const PersonValidationSchema = Yup.object().shape<CreateOrUpdatePersonRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default('')\r\n\r\n}).noUnknown();","export * from './PersonValidation';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Person } from 'libs/shared/interfaces';\r\n\r\nimport { PersonRequests } from 'apps/people/flight-requests';\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\nimport { EditPerson } from 'apps/people/components';\r\n\r\ninterface EditPersonViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditPersonView(props: EditPersonViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const personResponse = Flight.useBasicFetch<Person>(PersonRequests.getPerson(props.id));\r\n\r\n const savePerson = (data: CreateOrUpdatePersonRequest, onDone: () => void): void =>\r\n Flight.fetch(dispatch, PersonRequests.updatePerson(props.id, data, onDone));\r\n\r\n return (\r\n <>\r\n {!!personResponse.data &&\r\n <EditPerson person={personResponse.data} savePerson={savePerson} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPersonView';","export * from './edit-person';\r\nexport * from './new-person';\r\nexport * from './people';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { Person } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { PersonRequests } from 'apps/people/flight-requests';\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\nimport { EditPerson } from 'apps/people/components';\r\n\r\nexport function NewPersonView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createPerson = (data: CreateOrUpdatePersonRequest, onDone: () => void): void => {\r\n const onSuccess = (newPerson: Person) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PEOPLE,\r\n action: Actions.People.EDIT_PERSON,\r\n args: [newPerson.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, PersonRequests.createPerson(data, onSuccess, onDone));\r\n };\r\n\r\n return (\r\n <EditPerson savePerson={createPerson} />\r\n );\r\n}","export * from './NewPersonView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { PersonCollection, Person } from 'libs/shared/interfaces';\r\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { PersonRequests } from 'apps/people/flight-requests';\r\n\r\nconst application = AppChannels.PEOPLE;\r\n\r\nconst SEARCH_URL = '/api/domain/v1/search/people/instant/raw';\r\n\r\nconst getPersonAppLink = (person: Person) => ({ application, action: Actions.People.EDIT_PERSON, args: [person.id]});\r\n\r\nconst goToPerson = (person: Person) => Core.AppLinkHelper.trigger(getPersonAppLink(person));\r\n\r\ninterface PeopleViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function PeopleView(props: PeopleViewProps): JSX.Element {\r\n const peopleResponse = Flight.useBasicFetch<PersonCollection>(PersonRequests.getPeople(props.cursor));\r\n\r\n return (\r\n <>\r\n <div className='pb-3 w-50'>\r\n <SearchBar\r\n placeholder='Search for a person'\r\n onSuggestionSelected={goToPerson}\r\n getRemoteUrl={(q: string) => `${SEARCH_URL}?q=${q}`}\r\n activationLength={2}\r\n />\r\n </div>\r\n <ObjectCollection\r\n collection={peopleResponse && peopleResponse.data}\r\n collectionAppLink={{ application, action: Actions.People.PEOPLE }}\r\n newObjectAppLink={{ application, action: Actions.People.NEW_PERSON }}\r\n getObjectAppLink={getPersonAppLink}\r\n objectName={'Person'}\r\n />\r\n </>\r\n );\r\n}","export * from './PeopleView';","import * as React from 'react';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { AppChannels, Layouts, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views';\r\n\r\nimport { PlaylistsAppContextProvider } from 'apps/playlists/context';\r\nimport {\r\n NewPlaylistView,\r\n DeletePlaylistView,\r\n RemoveVideoView,\r\n EditPlaylistView,\r\n EditPlaylistVideosView,\r\n EditPlaylistSubjectsView,\r\n EditPlaylistAudiencesView\r\n} from 'apps/playlists/views';\r\nimport { PlaylistsView } from 'apps/playlists/views/playlists';\r\nimport { PlaylistSearchResultsView } from 'apps/playlists/views/playlist-search-results';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { RemoveSubjectMemberView } from 'apps/subjects/views';\r\n\r\nclass PlaylistsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/playlists(/)': 'index',\r\n 'manage/playlists/new(/)': 'newPlaylist',\r\n 'manage/playlists/search(/)': 'searchPlaylists',\r\n 'manage/playlists/:id(/)': 'editPlaylist',\r\n 'manage/playlists/:id/videos(/)': 'editPlaylistVideos',\r\n 'manage/playlists/:id/subjects(/)': 'editPlaylistSubjects',\r\n 'manage/playlists/:id/audiences(/)': 'editPlaylistAudiences'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deletePlaylist',\r\n 'removeVideo',\r\n 'uploadImage',\r\n 'removeFromSubject'\r\n ];\r\n }\r\n}\r\n\r\nexport class PlaylistsApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public initialize(): void {\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Playlists Application';\r\n }\r\n\r\n public static get router(): any {\r\n return PlaylistsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: PlaylistsAppContextProvider\r\n }\r\n };\r\n }\r\n\r\n public index(params?: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PlaylistsView cursor={params?.cursor} />);\r\n }\r\n\r\n public searchPlaylists(params?: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistSearchResultsView query={params?.query} cursor={params?.cursor} />);\r\n }\r\n\r\n public newPlaylist(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewPlaylistView />);\r\n }\r\n\r\n public editPlaylist(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPlaylistView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public editPlaylistVideos(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditPlaylistVideosView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public editPlaylistSubjects(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditPlaylistSubjectsView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public editPlaylistAudiences(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditPlaylistAudiencesView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public deletePlaylist(playlistId: string): void {\r\n const props = {\r\n playlistId,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeletePlaylistView {...props} />);\r\n }\r\n\r\n public removeVideo(playlistId: string, videoId: string): void {\r\n const props = {\r\n playlistId,\r\n videoId,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveVideoView {...props} />);\r\n }\r\n\r\n public removeFromSubject(playlistId: string, subjectId: string): void {\r\n const props = {\r\n subjectId,\r\n memberId: playlistId,\r\n memberType: SubjectMemberType.Playlists,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveSubjectMemberView {...props} />);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n const props = {\r\n imageType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <ImageUploadView {...props} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n\r\n private navigate(url: string): void {\r\n Core.LocationUtils.PageLoad(url);\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { UserContext } from 'shared/context';\r\n\r\nimport { PlaylistNavHelper } from 'apps/playlists/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditPlaylistNavProps {\r\n playlistId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditPlaylistNav({ playlistId, activeAction }: EditPlaylistNavProps): React.ReactElement {\r\n const user = React.useContext(UserContext);\r\n\r\n return (\r\n <div className='py-2'>\r\n {!!user &&\r\n <Tabs\r\n tabs={PlaylistNavHelper.getEditPlaylistTabs(user, playlistId)}\r\n isItemActive={isItemActive(activeAction)}\r\n />\r\n }\r\n </div>\r\n );\r\n}","export * from './EditPlaylistNav';","import * as React from 'react';\r\nimport { Playlist } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'libs/shared/apps/playlists/interfaces';\r\nimport { PlaylistValidationSchema } from 'apps/playlists/utils';\r\n\r\nimport { EditPlaylistDetailsForm } from './EditPlaylistDetailsForm';\r\n\r\nconst getActions = (playlistId: string) => ([{\r\n label: 'Delete playlist',\r\n appLink: {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.DELETE_PLAYLIST,\r\n args: [playlistId]\r\n },\r\n className: 'text-danger'\r\n}]);\r\n\r\ninterface EditPlaylistDetailsProps {\r\n savePlaylist: (data: CreateOrUpdatePlaylistRequest, onDone: () => void) => void;\r\n playlist?: Playlist;\r\n}\r\n\r\nexport function EditPlaylistDetails(props: EditPlaylistDetailsProps): React.ReactElement {\r\n const id = props.playlist && props.playlist.id;\r\n\r\n return (\r\n <FormWrapper<CreateOrUpdatePlaylistRequest>\r\n initialValues={props.playlist}\r\n validationSchema={PlaylistValidationSchema}\r\n onSubmit={props.savePlaylist}\r\n >\r\n <EditPlaylistDetailsForm id={id} actions={!!id && getActions(id)} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { Cover, Banner } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { ImageSelect } from 'shared/components';\r\nimport { AppChannels, Actions as AppActions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'libs/shared/apps/playlists/interfaces';\r\n\r\ninterface EditPlaylistDetailsFormProps {\r\n id?: string;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function EditPlaylistDetailsForm(props: EditPlaylistDetailsFormProps): React.ReactElement {\r\n const formikProps = useFormikContext<CreateOrUpdatePlaylistRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdatePlaylistRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this playlist'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdatePlaylistRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n value={formikProps.values.description}\r\n placeholder='Describe this playlist here'\r\n />\r\n <ImageSelect<CreateOrUpdatePlaylistRequest>\r\n imageType={ImageType.Covers}\r\n fieldName='cover'\r\n application={AppChannels.PLAYLISTS}\r\n uploadAction={AppActions.Playlists.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect<CreateOrUpdatePlaylistRequest>\r\n imageType={ImageType.Banners}\r\n fieldName='banner'\r\n application={AppChannels.PLAYLISTS}\r\n uploadAction={AppActions.Playlists.UPLOAD_IMAGE}\r\n />\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {!props.id ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!!props.actions && <Actions actions={props.actions} />}\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditPlaylistDetails';","export * from './edit-playlist';\r\nexport * from './edit-playlist-nav';","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\r\nimport { Playlist } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nconst REMOTE_SEARCH_URL = '/api/domain/v1/search/playlists/instant/raw';\r\n\r\nfunction getPlaylistAppLink(playlist: Playlist): Core.AppLink {\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.EDIT_PLAYLIST,\r\n args: [playlist.id]\r\n };\r\n}\r\n\r\nfunction goToPlaylist(playlist: Playlist): void {\r\n return Core.AppLinkHelper.trigger(getPlaylistAppLink(playlist));\r\n}\r\n\r\nfunction goToSearchResults(query: string): void {\r\n const appLink = query\r\n ? {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.SEARCH_PLAYLISTS,\r\n params: { query }\r\n }\r\n : {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLISTS\r\n };\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n}\r\n\r\ninterface PlaylistSearchProps {\r\n query?: string;\r\n}\r\n\r\nexport function PlaylistSearch(props: PlaylistSearchProps): JSX.Element {\r\n return (\r\n <div className='pb-3 w-50'>\r\n <SearchBar\r\n initialQuery={props.query}\r\n placeholder='Search for a playlist'\r\n onSuggestionSelected={goToPlaylist}\r\n getRemoteUrl={(q: string) => `${REMOTE_SEARCH_URL}?query=${q}`}\r\n activationLength={2}\r\n onSubmit={goToSearchResults}\r\n />\r\n </div>\r\n );\r\n}","export * from './PlaylistSearch';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider, UserContextProvider } from 'shared/context';\r\n\r\nexport const PlaylistsAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <UserContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </UserContextProvider>\r\n);","export * from './PlaylistsAppContext';","import { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { CollectionHelper } from 'shared/utils/CuratorCollectionHelper';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\nimport { ReorderRequest } from 'libs/shared/interfaces';\r\n\r\nexport const PlaylistRequests = {\r\n playlists(cursor: string = '1'): Flight.Request {\r\n return {\r\n key: `playlists:${cursor}`,\r\n url: `/ajax/playlists/curators?page=${cursor}`,\r\n formatData: CollectionHelper.convertLegacyPaginatedCollection\r\n };\r\n },\r\n\r\n searchPlaylists(query: string, cursor?: string): Flight.Request {\r\n let url = `/api/domain/v1/search/playlists?query=${query}`;\r\n\r\n if (cursor)\r\n url += `&filter={page:${cursor}}`;\r\n\r\n return {\r\n key: `playlists:search:${query}${cursor ? `:${cursor}` : ''}`,\r\n url,\r\n formatData: CollectionHelper.convertLegacyPaginatedCollection\r\n };\r\n },\r\n\r\n playlist(id: string): Flight.Request {\r\n return {\r\n key: `playlist:${id}`,\r\n url: `/api/master/v2/objects/${id}?query=cover,banner`\r\n };\r\n },\r\n\r\n playlistsById(ids: string[]): Flight.Request {\r\n const sortedIds = ids.slice().sort();\r\n\r\n return {\r\n key: `playlists:${sortedIds.join(',')}`,\r\n url: `/api/master/v2/objects?${sortedIds.map(id => `id=${id}`).join('&')}`\r\n };\r\n },\r\n\r\n createPlaylist(\r\n data: CreateOrUpdatePlaylistRequest,\r\n userId: string,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v2/objects/${userId}/playlists`,\r\n key: 'playlist',\r\n data,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: 'playlists',\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n updatePlaylist(\r\n id: string,\r\n data: CreateOrUpdatePlaylistRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v2/objects/${id}`,\r\n key: `update:playlist:${id}`,\r\n data,\r\n type: HttpVerbs.PUT,\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n deletePlaylist(\r\n id: string,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v1/playlists/${id}`,\r\n key: `delete:playlist:${id}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: 'playlists',\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n playlistVideos(id: string): Flight.Request {\r\n return {\r\n key: `playlist:${id}:videos`,\r\n url: `/api/master/v2/objects/${id}/videos?query={orderBy:orderindex,limit:100}`,\r\n };\r\n },\r\n\r\n reorderVideos(\r\n id: string,\r\n reorderRequest: ReorderRequest,\r\n success?: (data: any) => void,\r\n error?: (data: Xhr) => void\r\n ): Flight.Request {\r\n return {\r\n key: `reorder:playlist`,\r\n url: `/api/master/v1/objects/${id}/videos/reorder`,\r\n data: reorderRequest,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: `playlist:${id}:videos`,\r\n success,\r\n error\r\n };\r\n },\r\n\r\n removeVideo(\r\n playlistId: string,\r\n videoId: string,\r\n success?: (data: any) => void,\r\n error?: (data: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n key: 'remove:playlist:video',\r\n url: `/api/master/v1/playlists/${playlistId}/dissociate/${videoId}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: `playlist:${playlistId}:videos`,\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem, CuratorUser } from 'shared/interfaces';\r\nimport { PermissionsHelper } from 'shared/utils';\r\n\r\nexport const PlaylistNavHelper = {\r\n getEditPlaylistTabs(currentUser: CuratorUser, playlistId: string): NavItem[] {\r\n const application = AppChannels.PLAYLISTS;\r\n const actions = Actions.Playlists;\r\n\r\n const tabs: NavItem[] = [\r\n {\r\n label: 'Edit Playlist Details',\r\n appLink: { application, action: actions.EDIT_PLAYLIST, args: [playlistId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_PLAYLIST_VIDEOS, args: [playlistId]}\r\n }\r\n ];\r\n\r\n const canAccessSubjects = PermissionsHelper.hasSubjectsAccess(currentUser);\r\n\r\n if (canAccessSubjects)\r\n tabs.push(...[\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.EDIT_PLAYLIST_SUBJECTS, args: [playlistId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.EDIT_PLAYLIST_AUDIENCES, args: [playlistId]}\r\n }\r\n ]);\r\n\r\n return tabs;\r\n }\r\n};","export * from './validation';\r\nexport * from './PlaylistNavHelper';","import * as Yup from 'yup';\r\nimport { Cover, Banner } from 'libs/shared/interfaces';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'libs/shared/apps/playlists/interfaces';\r\n\r\nexport const PlaylistValidationSchema = Yup.object().shape<CreateOrUpdatePlaylistRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n description: Yup.string()\r\n .trim()\r\n .max(65535, 'Description is too long')\r\n .default(''),\r\n\r\n cover: Yup.object()\r\n .shape<Cover>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n banner: Yup.object()\r\n .shape<Banner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","export * from './PlaylistValidation';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Playlist, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons, PopupButton } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\ninterface DeletePlaylistViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function DeletePlaylistView(props: DeletePlaylistViewProps & PopupViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n\r\n function deletePlaylist(): void {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n alerts.success('Successfully deleted playlist.');\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLISTS\r\n });\r\n };\r\n\r\n const onError = () => {\r\n setShowButtonSpinner(false);\r\n alerts.error('Failed to delete playlist.');\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.deletePlaylist(props.playlistId, onSuccess, onError, props.closePopup));\r\n }\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel',\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deletePlaylist,\r\n buttonText: 'Yes, delete playlist',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n const dataLoaded = !!playlist.data;\r\n\r\n return (\r\n <Popup title='Delete Playlist' closePopup={props.closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{playlist.data.name}</strong>?</p>\r\n <p>Please ensure it is not being used in any widgets.</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeletePlaylistView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\n\r\nimport { Playlist, PresentationAudience } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { Actions, DataServices } from 'shared/constants';\r\n\r\nimport { EditPlaylistNav } from 'apps/playlists/components';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectAudiences } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { Presentation, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPlaylistAudiencesViewState {\r\n presentations?: Presentation[];\r\n levels?: Level[];\r\n\r\n playlistLevels?: Level[];\r\n playlistAudiences?: PresentationAudience[];\r\n\r\n currentPresentation?: Presentation;\r\n presentationAudiences?: PresentationAudience[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditPlaylistAudiencesViewState>>;\r\n\r\nfunction useFetchData(playlistId: string, state: EditPlaylistAudiencesViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditPlaylistAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch playlist and playlist levels\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getObjectLevelsFetchOptions(\r\n playlistId, SubjectMemberType.Playlists, getSetState('playlistLevels'))\r\n ], [playlistId]);\r\n\r\n // Fetch playlist audiences. Re-fetch when playlistLevels changes as audiences may have changed.\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectAudiencesFetchOptions(\r\n playlistId, SubjectMemberType.Playlists, getSetState('playlistAudiences')),\r\n [ playlistId, state.playlistLevels ]\r\n );\r\n\r\n // Fetch presentations and levels\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')),\r\n SubjectDataServiceHelper.getLevelsFetchOptions(getSetState('levels')),\r\n ], []);\r\n\r\n // Fetched audiences for current presentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getAudiencesFetchOptions(\r\n state.currentPresentation.id, getSetState('presentationAudiences')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n}\r\n\r\ninterface EditPlaylistAudiencesViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistAudiencesView(props: EditPlaylistAudiencesViewProps): JSX.Element {\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n\r\n const [ state, setState ] = React.useState<EditPlaylistAudiencesViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.playlistId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.presentations && !!state.levels && !!state.presentationAudiences\r\n && !!state.playlistLevels && !!state.playlistAudiences;\r\n\r\n return (\r\n <>\r\n <EditPlaylistNav playlistId={props.playlistId} activeAction={Actions.Playlists.EDIT_PLAYLIST_AUDIENCES} />\r\n <ObjectHeader object={playlist.data} />\r\n {!!dataLoaded &&\r\n <EditObjectAudiences\r\n objectLevels={state.playlistLevels}\r\n objectAudiences={state.playlistAudiences}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n levels={state.levels}\r\n presentationAudiences={state.presentationAudiences}\r\n memberType={SubjectMemberType.Playlists}\r\n saveLevels={(levelIds: string[], addToAudiences: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectLevels(\r\n props.playlistId, levelIds, SubjectMemberType.Playlists, addToAudiences, onDone, onDone)\r\n }\r\n saveAudiences={(audienceIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectAudiences(\r\n props.playlistId, state.currentPresentation.id, audienceIds, SubjectMemberType.Playlists, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPlaylistAudiencesView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\n\r\nimport { Playlist, Subject, Classification } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { EditPlaylistNav } from 'apps/playlists/components';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectSubjects } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPlaylistSubjectsViewState {\r\n playlistSubjects?: Subject[];\r\n subjectTree?: SubjectTree;\r\n subjectClassifications?: Classification[];\r\n\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n\r\n classificationTree?: ClassificationTree;\r\n playlistClassifications?: Classification[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditPlaylistSubjectsViewState>>;\r\n\r\nfunction useFetchData(playlistId: string, state: EditPlaylistSubjectsViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditPlaylistSubjectsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch subject tree and presentations\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getSubjectTreeFetchOptions(getSetState('subjectTree')),\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations'))\r\n ], []);\r\n\r\n // Fetch playlist and playlist subjects\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getObjectSubjectsFetchOptions(\r\n playlistId, SubjectMemberType.Playlists, getSetState('playlistSubjects'))\r\n ], [playlistId]);\r\n\r\n // Fetch classification tree for presentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getClassificationTreeFetchOptions(\r\n state.currentPresentation.id, getSetState('classificationTree')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n\r\n // Reset subjectClassifications whenever playlistSubjects changes\r\n React.useEffect(() => getSetState('subjectClassifications')([]), [state.playlistSubjects]);\r\n\r\n const setSubjectClassifications = (\r\n classifications: Classification[], currentState: EditPlaylistSubjectsViewState\r\n ) => ([ ...(currentState.subjectClassifications || []), ...classifications ]);\r\n\r\n // Fetch classifications for each subject\r\n const subjectClassificationsFetchOptions = state.playlistSubjects && state.playlistSubjects.map(s =>\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n s.id, StateHelper.getSetStateByKey(setState, 'subjectClassifications', setSubjectClassifications))\r\n );\r\n\r\n useBulkFetch(subjectClassificationsFetchOptions, [state.playlistSubjects], !!subjectClassificationsFetchOptions);\r\n\r\n // Fetch playlist classifications\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectClassificationsFetchOptions(playlistId, SubjectMemberType.Playlists, getSetState('playlistClassifications')),\r\n [ playlistId, state.playlistSubjects ]\r\n );\r\n}\r\n\r\ninterface EditPlaylistSubjectsViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistSubjectsView(props: EditPlaylistSubjectsViewProps): React.ReactElement {\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n\r\n const [ state, setState ] = React.useState<EditPlaylistSubjectsViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.playlistId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.playlistSubjects && !!state.subjectTree && !!state.presentations\r\n && !!state.classificationTree && !!state.playlistClassifications && !!state.subjectClassifications;\r\n\r\n return (\r\n <>\r\n <EditPlaylistNav playlistId={props.playlistId} activeAction={Actions.Playlists.EDIT_PLAYLIST_SUBJECTS} />\r\n <ObjectHeader object={playlist.data} />\r\n {dataLoaded &&\r\n <EditObjectSubjects\r\n objectSubjects={state.playlistSubjects}\r\n subjectTree={state.subjectTree}\r\n memberType={SubjectMemberType.Playlists}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n objectClassifications={state.playlistClassifications}\r\n objectSubjectClassifications={state.subjectClassifications}\r\n classificationTree={state.classificationTree}\r\n saveSubjects={(subjectsId: string[], addToClassifications: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectSubjects(\r\n props.playlistId, subjectsId, SubjectMemberType.Playlists, addToClassifications, onDone, onDone)\r\n }\r\n saveClassifications={(classificationIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectClassifications(\r\n props.playlistId,\r\n state.currentPresentation.id,\r\n classificationIds,\r\n SubjectMemberType.Playlists,\r\n onDone,\r\n onDone\r\n )\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPlaylistSubjectsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { Video, VideoCollection, Playlist } from 'libs/shared/interfaces';\r\nimport { ReorderHelper } from 'libs/shared/utils/ReorderHelper';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { useReorderedItems } from 'libs/shared/hooks/UseReorderedItems';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { SortableVideoList } from 'shared/components/video-list';\r\nimport { ObjectHeader } from 'shared/components/object-header';\r\n\r\nimport { EditPlaylistNav } from 'apps/playlists/components/edit-playlist-nav';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nconst getVideoActions = (playlistId: string) => (video: Video) => ([\r\n {\r\n label: 'Remove video',\r\n appLink: {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.REMOVE_VIDEO,\r\n args: [ playlistId.toString(), video.id.toString() ]\r\n },\r\n className: 'text-danger'\r\n }\r\n]);\r\n\r\nconst getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.VIDEOS,\r\n action: Actions.Videos.EDIT_VIDEO,\r\n args: [video.id]\r\n});\r\n\r\n\r\ninterface EditPlaylistVideosViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistVideosView(props: EditPlaylistVideosViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n const videos = Flight.useBasicFetch<VideoCollection>(PlaylistRequests.playlistVideos(props.playlistId));\r\n\r\n /**\r\n * Temporary storage of videos used while waiting for the reorder request response\r\n * and subsequent re-fetch of videos.\r\n */\r\n const [ reorderedVideos, setReorderedVideos ] = useReorderedItems(videos.data?.data);\r\n\r\n const onSort = (oldIdx: number, newIdx: number) => {\r\n if (oldIdx === newIdx)\r\n return;\r\n\r\n const { reorderRequest, reorderedItems } = ReorderHelper.reorder(videos.data.data, oldIdx, newIdx);\r\n\r\n setReorderedVideos(reorderedItems);\r\n\r\n const onError = () => {\r\n alerts.error('Failed to update playlist order.');\r\n setReorderedVideos(null);\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.reorderVideos(props.playlistId, reorderRequest, null, onError));\r\n };\r\n\r\n const videoCollection = reorderedVideos\r\n ? ({ data: reorderedVideos, pagination: null } as VideoCollection)\r\n : videos.data;\r\n\r\n return (\r\n <>\r\n <EditPlaylistNav playlistId={props.playlistId} activeAction={Actions.Playlists.EDIT_PLAYLIST_VIDEOS} />\r\n <ObjectHeader object={playlist.data} />\r\n {!!videoCollection &&\r\n <SortableVideoList\r\n onSortEnd={onSort}\r\n videos={videoCollection}\r\n getVideoAppLink={getVideoAppLink}\r\n getVideoActions={getVideoActions(props.playlistId)}\r\n emptyMessage='There are no videos in this playlist.'\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPlaylistVideosView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { Playlist } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { EditPlaylistDetails, EditPlaylistNav } from 'apps/playlists/components';\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\n\r\ninterface EditPlaylistViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistView(props: EditPlaylistViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n\r\n function savePlaylist(data: CreateOrUpdatePlaylistRequest, onDone: () => void): void {\r\n const onSuccess = () => {\r\n alerts.success('Successfully updated playlist.');\r\n };\r\n\r\n const onError = () => {\r\n alerts.error('Failed to update playlist.');\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.updatePlaylist(props.playlistId, data, onSuccess, onError, onDone));\r\n }\r\n\r\n return (\r\n <>\r\n <EditPlaylistNav playlistId={props.playlistId} activeAction={Actions.Playlists.EDIT_PLAYLIST} />\r\n {!!playlist.data && <EditPlaylistDetails playlist={playlist.data} savePlaylist={savePlaylist} />}\r\n </>\r\n );\r\n}","export * from './EditPlaylistView';","export * from './delete-playlist';\r\nexport * from './edit-playlist';\r\nexport * from './edit-playlist-audiences';\r\nexport * from './edit-playlist-subjects';\r\nexport * from './edit-playlist-videos';\r\nexport * from './new-playlist';\r\nexport * from './remove-video';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Playlist, CurrentUser } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { UserDataServiceHelper } from 'shared/services';\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { EditPlaylistDetails } from 'apps/playlists/components';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\n\r\nfunction goToPlaylist(playlist: Playlist): void {\r\n if (!playlist || !playlist.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.EDIT_PLAYLIST,\r\n args: [playlist.id]\r\n });\r\n}\r\n\r\nexport function NewPlaylistView(): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const [ currentUser, setCurrentUser ] = React.useState<CurrentUser>();\r\n\r\n useFetch(UserDataServiceHelper.getCurrentUserFetchOptions<CurrentUser>(setCurrentUser), []);\r\n\r\n function savePlaylist(data: CreateOrUpdatePlaylistRequest, onDone: () => void): void {\r\n const onSuccess = (playlist: Playlist) => {\r\n alerts.success('Successfully created playlist.');\r\n goToPlaylist(playlist);\r\n };\r\n\r\n const onError = () => {\r\n alerts.error('Failed to create playlist.');\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.createPlaylist(data, currentUser.id, onSuccess, onError, onDone));\r\n }\r\n\r\n return (\r\n <>\r\n {!!currentUser && <EditPlaylistDetails savePlaylist={savePlaylist} />}\r\n </>\r\n );\r\n}","export * from './NewPlaylistView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { PlaylistCollection, Playlist } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { PlaylistSearch } from 'apps/playlists/components/playlist-search';\r\n\r\nconst application = AppChannels.PLAYLISTS;\r\n\r\nconst getPlaylistAppLink = (playlist: Playlist) =>\r\n ({ application, action: Actions.Playlists.EDIT_PLAYLIST, args: [playlist.id]});\r\n\r\ninterface PlaylistSearchResultsViewProps {\r\n query: string;\r\n cursor?: string;\r\n}\r\n\r\nexport function PlaylistSearchResultsView(props: PlaylistSearchResultsViewProps): JSX.Element {\r\n const playlists = Flight.useBasicFetch<PlaylistCollection>(\r\n PlaylistRequests.searchPlaylists(props.query, props.cursor));\r\n\r\n return (\r\n <>\r\n <PlaylistSearch query={props.query} />\r\n {!!playlists.data && (playlists.data.data.length\r\n ? <ObjectCollection\r\n collection={playlists.data}\r\n collectionAppLink={{\r\n application,\r\n action: Actions.Playlists.SEARCH_PLAYLISTS,\r\n params: { query: props.query }\r\n }}\r\n newObjectAppLink={{ application, action: Actions.Playlists.NEW_PLAYLIST }}\r\n getObjectAppLink={getPlaylistAppLink}\r\n objectName={'Playlist'}\r\n />\r\n : <p>No playlists found, please try a different search query.</p>\r\n )}\r\n </>\r\n );\r\n}","export * from './PlaylistSearchResultsView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { PlaylistCollection, Playlist } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { PlaylistSearch } from 'apps/playlists/components/playlist-search';\r\n\r\nconst application = AppChannels.PLAYLISTS;\r\n\r\nconst getPlaylistAppLink = (playlist: Playlist) =>\r\n ({ application, action: Actions.Playlists.EDIT_PLAYLIST, args: [playlist.id]});\r\n\r\ninterface PlaylistsViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function PlaylistsView(props: PlaylistsViewProps): JSX.Element {\r\n const playlists = Flight.useBasicFetch<PlaylistCollection>(PlaylistRequests.playlists(props.cursor));\r\n\r\n return (\r\n <>\r\n <PlaylistSearch />\r\n <ObjectCollection\r\n collection={playlists && playlists.data}\r\n collectionAppLink={{ application, action: Actions.Playlists.PLAYLISTS }}\r\n newObjectAppLink={{ application, action: Actions.Playlists.NEW_PLAYLIST }}\r\n getObjectAppLink={getPlaylistAppLink}\r\n objectName={'Playlist'}\r\n />\r\n </>\r\n );\r\n}","export * from './PlaylistsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { Video, Playlist, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\ninterface RemoveVideoViewProps {\r\n videoId: string;\r\n playlistId: string;\r\n}\r\n\r\nexport function RemoveVideoView(props: RemoveVideoViewProps & PopupViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n function removeVideo(): void {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n alerts.success('Successfully removed video from playlist');\r\n };\r\n\r\n const onError = () => {\r\n alerts.error('Failed to remove video from playlist');\r\n };\r\n\r\n Flight.fetch(\r\n dispatch,\r\n PlaylistRequests.removeVideo(props.playlistId, props.videoId, onSuccess, onError, props.closePopup)\r\n );\r\n }\r\n\r\n const dataLoaded = !!playlist.data && !!video.data;\r\n\r\n return (\r\n <Popup title='Remove Video' closePopup={props.closePopup} showLoadingSpinner={!dataLoaded}>\r\n {!!dataLoaded &&\r\n <>\r\n <div>\r\n <p>\r\n Are you sure you want to remove <strong>\r\n {video.data.name}</strong> from <strong>{playlist.data.name}</strong>?\r\n </p>\r\n </div>\r\n <PopupButtons\r\n buttons={[\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeVideo,\r\n buttonText: 'Yes, remove video',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]}\r\n />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './RemoveVideoView';","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { AppChannels, Layouts, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutViewOptions, CuratorLayoutView } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views';\r\n\r\nimport { SeriesAppContextProvider } from 'apps/series/context';\r\nimport { EditSeriesView, NewSeriesView, EditSeriesAudiencesView, EditSeriesSubjectsView } from 'apps/series/views';\r\n\r\nclass SeriesAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SERIES;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/series/new(/)': 'newSeries',\r\n 'manage/series/:id(/)': 'editSeries',\r\n 'manage/series/:id/videos(/)': 'editSeriesVideos',\r\n 'manage/series/:id/subjects(/)': 'editSeriesSubjects',\r\n 'manage/series/:id/audiences(/)': 'editSeriesAudiences',\r\n\r\n 'manage/legacy/series/:id(/)': 'legacyEditSeries'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class SeriesApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public initialize(): void {\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Series Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SeriesAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SERIES;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: SeriesAppContextProvider\r\n }\r\n };\r\n }\r\n\r\n public newSeries(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewSeriesView />);\r\n }\r\n\r\n public editSeries(seriesId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSeriesView seriesId={seriesId} />);\r\n }\r\n\r\n public editSeriesVideos(seriesId: string): void {\r\n this.legacyEditSeries(seriesId);\r\n }\r\n\r\n public editSeriesSubjects(seriesId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSeriesSubjectsView seriesId={seriesId} />);\r\n }\r\n\r\n public editSeriesAudiences(seriesId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSeriesAudiencesView seriesId={seriesId} />);\r\n }\r\n\r\n public legacyEditSeries(seriesId: string): void {\r\n Core.LocationUtils.Redirect(`/manage/legacy/series/${seriesId}`, true);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n const props = {\r\n imageType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <ImageUploadView {...props} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\nimport { Series, Rating } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SeriesValidationSchema } from 'apps/series/utils';\r\n\r\nimport { EditSeriesDetailsForm } from './EditSeriesDetailsForm';\r\n\r\ninterface EditSeriesDetailsProps {\r\n saveSeries: (data: CreateOrUpdateSeriesRequest, onDone: () => void) => void;\r\n ratings: Rating[];\r\n series?: Series;\r\n}\r\n\r\nexport function EditSeriesDetails(props: EditSeriesDetailsProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdateSeriesRequest, Series>\r\n initialValues={props.series}\r\n validationSchema={SeriesValidationSchema}\r\n onSubmit={props.saveSeries}\r\n >\r\n <EditSeriesDetailsForm id={props.series && props.series.id} ratings={props.ratings} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { Banner, TallPoster, Rating } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\n\r\nimport { ImageSelect, RatingSelect } from 'shared/components';\r\nimport { AppChannels, Actions as AppActions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SERIES_MAX_DESCRIPTION_LENGTH } from 'apps/series/utils';\r\n\r\ninterface EditSeriesDetailsFormProps {\r\n ratings: Rating[];\r\n id?: string;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function EditSeriesDetailsForm(props: EditSeriesDetailsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateSeriesRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateSeriesRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this series'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdateSeriesRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n maxLength={SERIES_MAX_DESCRIPTION_LENGTH}\r\n value={formikProps.values.description}\r\n placeholder='Describe this series here'\r\n showCharacterCounter\r\n />\r\n <RatingSelect<CreateOrUpdateSeriesRequest> ratings={props.ratings} />\r\n <ImageSelect<CreateOrUpdateSeriesRequest>\r\n imageType={ImageType.TallPosters}\r\n fieldName='tallPoster'\r\n application={AppChannels.SERIES}\r\n uploadAction={AppActions.Series.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect<CreateOrUpdateSeriesRequest>\r\n imageType={ImageType.Banners}\r\n fieldName='banner'\r\n application={AppChannels.SERIES}\r\n uploadAction={AppActions.Playlists.UPLOAD_IMAGE}\r\n />\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {!props.id ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!!props.actions && <Actions actions={props.actions} />}\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditSeriesDetails';","import * as React from 'react';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { UserContext } from 'shared/context';\r\n\r\nimport { SeriesNavHelper } from 'apps/series/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditSeriesNavProps {\r\n seriesId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditSeriesNav({ seriesId, activeAction }: EditSeriesNavProps): React.ReactElement {\r\n const user = React.useContext(UserContext);\r\n\r\n return (\r\n <div className='py-2'>\r\n {!!user &&\r\n <Tabs tabs={SeriesNavHelper.getEditSeriesTabs(user, seriesId)} isItemActive={isItemActive(activeAction)} />\r\n }\r\n </div>\r\n );\r\n}","export * from './EditSeriesNav';","export * from './edit-series-details';\r\nexport * from './edit-series-nav';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider, UserContextProvider } from 'shared/context';\r\n\r\nexport const SeriesAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <UserContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </UserContextProvider>\r\n);","export * from './SeriesAppContext';","import { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { UpdateObjectPermissionsRequest } from 'shared/interfaces';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\n\r\nexport const SeriesRequests = {\r\n series(id: string): Flight.Request {\r\n return {\r\n key: `series:${id}`,\r\n url: `/api/master/v2/objects/${id}?query=thumbnail,tallPoster,banner,rating`\r\n };\r\n },\r\n\r\n seriesById(ids: string[]): Flight.Request {\r\n const sortedIds = ids.slice().sort();\r\n\r\n return {\r\n key: `series:${sortedIds.join(',')}`,\r\n url: `/api/master/v2/objects?${sortedIds.map(id => `id=${id}`).join('&')}`\r\n };\r\n },\r\n\r\n createSeries(\r\n data: CreateOrUpdateSeriesRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v2/series`,\r\n key: 'series',\r\n data,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n updateSeries(\r\n id: string,\r\n data: CreateOrUpdateSeriesRequest | UpdateObjectPermissionsRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v2/objects/${id}`,\r\n key: `update:series:${id}`,\r\n data,\r\n type: HttpVerbs.PUT,\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem, CuratorUser } from 'shared/interfaces';\r\nimport { PermissionsHelper } from 'shared/utils';\r\n\r\nexport const SeriesNavHelper = {\r\n getEditSeriesTabs(currentUser: CuratorUser, seriesId: string): NavItem[] {\r\n const application = AppChannels.SERIES;\r\n const actions = Actions.Series;\r\n\r\n const tabs: NavItem[] = [\r\n {\r\n label: 'Edit Series Details',\r\n appLink: { application, action: actions.EDIT_SERIES, args: [seriesId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_SERIES_VIDEOS, args: [seriesId]}\r\n }\r\n ];\r\n\r\n const canAccessSubjects = PermissionsHelper.hasSubjectsAccess(currentUser);\r\n\r\n if (canAccessSubjects)\r\n tabs.push(...[\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.EDIT_SERIES_SUBJECTS, args: [seriesId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.EDIT_SERIES_AUDIENCES, args: [seriesId]}\r\n }\r\n ]);\r\n\r\n return tabs;\r\n }\r\n};","export * from './validation';\r\nexport * from './SeriesNavHelper';","import * as Yup from 'yup';\r\nimport { TallPoster, Banner } from 'libs/shared/interfaces';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\n\r\nimport { UpdateObjectRating } from 'shared/interfaces';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\n\r\nexport const SERIES_MAX_DESCRIPTION_LENGTH = 350;\r\n\r\nexport const SeriesValidationSchema = Yup.object().shape<CreateOrUpdateSeriesRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n description: Yup.string()\r\n .trim()\r\n .max(SERIES_MAX_DESCRIPTION_LENGTH, 'Description is too long')\r\n .default(''),\r\n\r\n rating: Yup.object()\r\n .shape<UpdateObjectRating>({\r\n id: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n tallPoster: Yup.object()\r\n .shape<TallPoster>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n banner: Yup.object()\r\n .shape<Banner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","export * from './SeriesValidation';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Series, PresentationAudience } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { DataServices, Actions } from 'shared/constants';\r\nimport { ObjectHeader } from 'shared/components';\r\n\r\nimport { EditSeriesNav } from 'apps/series/components';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { EditObjectAudiences } from 'apps/subjects/components';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { Presentation, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditSeriesAudiencesViewState {\r\n presentations?: Presentation[];\r\n levels?: Level[];\r\n\r\n seriesLevels?: Level[];\r\n seriesAudiences?: PresentationAudience[];\r\n\r\n currentPresentation?: Presentation;\r\n presentationAudiences?: PresentationAudience[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditSeriesAudiencesViewState>>;\r\n\r\nfunction useFetchData(seriesId: string, state: EditSeriesAudiencesViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditSeriesAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch series levels\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectLevelsFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesLevels')),\r\n [seriesId]\r\n );\r\n\r\n // Fetch series audiences\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectAudiencesFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesAudiences')),\r\n [ seriesId, state.seriesLevels ]\r\n );\r\n\r\n // Fetch presentations and levels\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')),\r\n SubjectDataServiceHelper.getLevelsFetchOptions(getSetState('levels')),\r\n ], []);\r\n\r\n // Fetch audiences for currentPresentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getAudiencesFetchOptions(\r\n state.currentPresentation.id, getSetState('presentationAudiences')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n}\r\n\r\ninterface EditSeriesAudiencesViewProps {\r\n seriesId: string;\r\n}\r\n\r\nexport function EditSeriesAudiencesView(props: EditSeriesAudiencesViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<EditSeriesAudiencesViewState>({});\r\n\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.seriesId));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.seriesId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.presentations && !!state.levels && !!state.presentationAudiences\r\n && !!state.seriesLevels && !!state.seriesAudiences;\r\n\r\n return (\r\n <>\r\n <EditSeriesNav seriesId={props.seriesId} activeAction={Actions.Series.EDIT_SERIES_AUDIENCES} />\r\n <ObjectHeader object={series.data} />\r\n {!!dataLoaded &&\r\n <EditObjectAudiences\r\n objectLevels={state.seriesLevels}\r\n objectAudiences={state.seriesAudiences}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n levels={state.levels}\r\n presentationAudiences={state.presentationAudiences}\r\n memberType={SubjectMemberType.Series}\r\n saveLevels={(levelIds: string[], addToAudiences: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectLevels(\r\n props.seriesId, levelIds, SubjectMemberType.Series, addToAudiences, onDone, onDone)\r\n }\r\n saveAudiences={(audienceIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectAudiences(\r\n props.seriesId, state.currentPresentation.id, audienceIds, SubjectMemberType.Series, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSeriesAudiencesView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Series, Subject, Classification } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { EditSeriesNav } from 'apps/series/components';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectSubjects } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\n\r\ninterface EditSeriesSubjectsViewState {\r\n seriesSubjects?: Subject[];\r\n subjectTree?: SubjectTree;\r\n subjectClassifications?: Classification[];\r\n\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n\r\n classificationTree?: ClassificationTree;\r\n seriesClassifications?: Classification[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditSeriesSubjectsViewState>>;\r\n\r\nfunction useFetchData(seriesId: string, state: EditSeriesSubjectsViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditSeriesSubjectsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch subject tree and presentations\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getSubjectTreeFetchOptions(getSetState('subjectTree')),\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations'))\r\n ], []);\r\n\r\n // Fetch series subjects\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectSubjectsFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesSubjects')),\r\n [seriesId]\r\n );\r\n\r\n // Fetch classification tree for presentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getClassificationTreeFetchOptions(\r\n state.currentPresentation.id, getSetState('classificationTree')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n\r\n // Reset subjectClassifications whenever seriesSubjects changes\r\n React.useEffect(() => getSetState('subjectClassifications')([]), [state.seriesSubjects]);\r\n\r\n const setSubjectClassifications = (\r\n classifications: Classification[], currentState: EditSeriesSubjectsViewState\r\n ) => ([ ...(currentState.subjectClassifications || []), ...classifications ]);\r\n\r\n // Fetch classifications for each subject\r\n const subjectClassificationsFetchOptions = state.seriesSubjects && state.seriesSubjects.map(s =>\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n s.id, StateHelper.getSetStateByKey(setState, 'subjectClassifications', setSubjectClassifications))\r\n );\r\n\r\n useBulkFetch(subjectClassificationsFetchOptions, [state.seriesSubjects], !!subjectClassificationsFetchOptions);\r\n\r\n // Fetch series classifications\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectClassificationsFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesClassifications')),\r\n [ seriesId, state.seriesSubjects ]\r\n );\r\n}\r\n\r\ninterface EditSeriesSubjectsViewProps {\r\n seriesId: string;\r\n}\r\n\r\nexport function EditSeriesSubjectsView(props: EditSeriesSubjectsViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<EditSeriesSubjectsViewState>({});\r\n\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.seriesId));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.seriesId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.seriesSubjects && !!state.subjectTree && !!state.presentations\r\n && !!state.classificationTree && !!state.seriesClassifications && !!state.subjectClassifications;\r\n\r\n return (\r\n <>\r\n <EditSeriesNav seriesId={props.seriesId} activeAction={Actions.Series.EDIT_SERIES_SUBJECTS} />\r\n <ObjectHeader object={series.data} />\r\n {dataLoaded &&\r\n <EditObjectSubjects\r\n objectSubjects={state.seriesSubjects}\r\n subjectTree={state.subjectTree}\r\n memberType={SubjectMemberType.Series}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n objectClassifications={state.seriesClassifications}\r\n objectSubjectClassifications={state.subjectClassifications}\r\n classificationTree={state.classificationTree}\r\n saveSubjects={(subjectsId: string[], addToClassifications: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectSubjects(\r\n props.seriesId, subjectsId, SubjectMemberType.Series, addToClassifications, onDone, onDone)\r\n }\r\n saveClassifications={(classificationIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectClassifications(\r\n props.seriesId, state.currentPresentation.id, classificationIds, SubjectMemberType.Series, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSeriesSubjectsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Series, Rating } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\r\n\r\nimport { EditSeriesNav, EditSeriesDetails } from 'apps/series/components';\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\n\r\nfunction getLegacySeriesAppLink(seriesId: string): Core.AppLink {\r\n return {\r\n application: AppChannels.SERIES,\r\n action: Actions.Series.LEGACY_EDIT_SERIES,\r\n args: [seriesId]\r\n };\r\n}\r\n\r\ninterface EditSeriesViewProps {\r\n seriesId: string;\r\n}\r\n\r\nexport function EditSeriesView(props: EditSeriesViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.seriesId));\r\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\r\n\r\n function saveSeries(data: CreateOrUpdateSeriesRequest, onDone: () => void): void {\r\n const onSuccess = () => {\r\n alerts.success('Successfully updated series.');\r\n };\r\n\r\n const onError = () => {\r\n alerts.error('Failed to update series.');\r\n };\r\n\r\n Flight.fetch(dispatch, SeriesRequests.updateSeries(props.seriesId, data, onSuccess, onError, onDone));\r\n }\r\n\r\n return (\r\n <>\r\n <EditSeriesNav seriesId={props.seriesId} activeAction={Actions.Series.EDIT_SERIES} />\r\n {!!series.data && !!ratings.data &&\r\n <EditSeriesDetails series={series.data} saveSeries={saveSeries} ratings={ratings.data} />\r\n }\r\n <div className='py-3 text-right'>\r\n {'Can\\'t find what you\\'re looking for? Try the old edit series page '}\r\n <AppLink className='info-link' appLink={getLegacySeriesAppLink(props.seriesId)}>here</AppLink>.\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditSeriesView';","export * from './edit-series';\r\nexport * from './edit-series-audiences';\r\nexport * from './edit-series-subjects';\r\nexport * from './new-series';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Series, Rating } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\r\nimport { PermissionsHelper } from 'shared/utils/PermissionsHelper';\r\n\r\nimport { EditSeriesDetails } from 'apps/series/components';\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\n\r\nfunction goToSeries(series: Series): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SERIES,\r\n action: Actions.Series.EDIT_SERIES,\r\n args: [series.id]\r\n });\r\n}\r\n\r\n\r\nexport function NewSeriesView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\r\n\r\n function createSeries(data: CreateOrUpdateSeriesRequest, onDone: () => void): void {\r\n const onError = () => {\r\n alerts.error('Failed to create series.');\r\n };\r\n\r\n const onUpdateSuccess = (series: Series) => {\r\n alerts.success('Successfully created series.');\r\n goToSeries(series);\r\n };\r\n\r\n const onCreateSuccess = (series: Series) => {\r\n const permissionsData = { permissions: PermissionsHelper.getProtectedReadPermission() };\r\n Flight.fetch(dispatch, SeriesRequests.updateSeries(series.id, permissionsData, onUpdateSuccess, onError, onDone));\r\n };\r\n\r\n\r\n Flight.fetch(dispatch, SeriesRequests.createSeries(data, onCreateSuccess, onError));\r\n }\r\n\r\n return (\r\n <>\r\n {!!ratings.data && <EditSeriesDetails saveSeries={createSeries} ratings={ratings.data} />}\r\n </>\r\n );\r\n}","export * from './NewSeriesView';","import * as React from 'react';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { AppChannels, Layouts, Actions, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views';\r\n\r\nimport {\r\n ClassificationNavView,\r\n NewClassificationView,\r\n EditClassificationView,\r\n EditClassificationMembersView,\r\n DeleteClassificationView,\r\n EditPresentationsListView,\r\n NewPresentationView,\r\n EditPresentationView,\r\n SubjectNavView,\r\n NewSubjectView,\r\n EditSubjectView,\r\n EditSubjectMembersView,\r\n DeleteSubjectView,\r\n RemoveClassificationMemberView,\r\n AddSubjectMembersView,\r\n RemoveSubjectMemberView,\r\n TopNavView,\r\n SelectPresentationView,\r\n LevelsRedirectView,\r\n NewLevelView,\r\n EditLevelView,\r\n EditAudiencesListView,\r\n NewAudienceView,\r\n EditAudienceView,\r\n DeleteAudienceView,\r\n SubjectClassificationsView,\r\n LevelNavView,\r\n LevelAudiencesView\r\n} from 'apps/subjects/views';\r\n\r\nimport { SubjectTree, ClassificationTree, Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectsAppContextProvider } from 'apps/subjects/context';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\n\r\nclass SubjectsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SUBJECTS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/subjects(/)': 'subjects',\r\n 'manage/subjects/add-objects(/)': 'addSubjectMembers',\r\n 'manage/subjects/new(/)': 'newSubject',\r\n 'manage/subjects/:id/edit(/)': 'editSubject',\r\n 'manage/subjects/:id/edit/playlists(/)': 'editSubjectPlaylists',\r\n 'manage/subjects/:id/edit/series(/)': 'editSubjectSeries',\r\n 'manage/subjects/:id/edit/videos(/)': 'editSubjectVideos',\r\n 'manage/subjects/:id/classifications(/)': 'subjectClassifications',\r\n\r\n 'manage/subjects/classifications(/)': 'classifications',\r\n 'manage/subjects/presentations/:id/classifications(/)': 'presentationClassifications',\r\n 'manage/subjects/presentations/:id/classifications/new(/)': 'newClassification',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit(/)': 'editClassification',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit/playlists(/)': 'editClassificationPlaylists',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit/series(/)': 'editClassificationSeries',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit/videos(/)': 'editClassificationVideos',\r\n\r\n 'manage/subjects/levels(/)': 'levels',\r\n 'manage/subjects/levels/new(/)': 'newLevel',\r\n 'manage/subjects/levels/:id(/)': 'level',\r\n 'manage/subjects/levels/:id/edit(/)': 'editLevel',\r\n 'manage/subjects/levels/:id/edit/playlists(/)': 'editLevelPlaylists',\r\n 'manage/subjects/levels/:id/edit/series(/)': 'editLevelSeries',\r\n 'manage/subjects/levels/:id/edit/videos(/)': 'editLevelVideos',\r\n 'manage/subjects/levels/:id/audiences(/)': 'levelAudiences',\r\n\r\n 'manage/subjects/audiences(/)': 'audiences',\r\n 'manage/subjects/presentations/:id/audiences(/)': 'presentationAudiences',\r\n 'manage/subjects/presentations/:id/audiences/new(/)': 'newAudience',\r\n 'manage/subjects/presentations/:id/audiences/:id/edit(/)': 'editAudience',\r\n\r\n 'manage/subjects/presentations(/)': 'presentations',\r\n 'manage/subjects/presentations/new': 'newPresentation',\r\n 'manage/subjects/presentations/:id(/)': 'editPresentation'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deleteClassification',\r\n 'removeClassificationMember',\r\n 'deleteSubject',\r\n 'removeSubjectMember',\r\n 'deleteAudience',\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class SubjectsApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n private subjectDataService: SubjectDataService;\r\n\r\n private currentLeftNavId: string;\r\n\r\n public initialize(): void {\r\n this.subjectDataService = InstanceManager.getInstance(DataServices.SUBJECT, this);\r\n\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Subjects Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SubjectsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SUBJECTS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: SubjectsAppContextProvider,\r\n getTopNavView: this.getTopNav\r\n }\r\n };\r\n }\r\n\r\n public subjects(): void {\r\n this.subjectDataService.getSubjectTree((subjectTree: SubjectTree) => {\r\n const firstSubject = !!subjectTree.children && subjectTree.children[0];\r\n\r\n if (!firstSubject) {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_SUBJECT\r\n }, { replace: true });\r\n\r\n return;\r\n }\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [firstSubject.id]\r\n }, { replace: true });\r\n });\r\n }\r\n\r\n public newSubject(params: ObjectHash): void {\r\n const props = {\r\n parentId: params.parentId\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewSubjectView key={params.parentId} {...props} />);\r\n\r\n this.renderSubjectsLeftNav();\r\n }\r\n\r\n public editSubject(subjectId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSubjectView key={subjectId} subjectId={subjectId} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public editSubjectPlaylists(subjectId: string): void {\r\n const props = { subjectId, memberType: SubjectMemberType.Playlists };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditSubjectMembersView key={`${subjectId}:playlists`} {...props} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public editSubjectSeries(subjectId: string): void {\r\n const props = { subjectId, memberType: SubjectMemberType.Series };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditSubjectMembersView key={`${subjectId}:series`} {...props} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public editSubjectVideos(subjectId: string): void {\r\n const props = { subjectId, memberType: SubjectMemberType.Videos };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSubjectMembersView key={`${subjectId}:videos`} {...props} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public subjectClassifications(subjectId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <SubjectClassificationsView key={subjectId} subjectId={subjectId} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public addSubjectMembers(params: ObjectHash): void {\r\n const { memberType, objectIds } = params;\r\n\r\n if (!memberType || !objectIds)\r\n return;\r\n\r\n const props = {\r\n memberType,\r\n objectIds: Array.isArray(objectIds) ? objectIds : [objectIds]\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <AddSubjectMembersView {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public removeSubjectMember(subjectId: string, memberId: string, memberType: SubjectMemberType): void {\r\n const props = {\r\n subjectId,\r\n memberId,\r\n memberType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveSubjectMemberView {...props} />);\r\n }\r\n\r\n public deleteSubject(subjectId: string): void {\r\n /**\r\n * If the subject being deleted is currently displayed the in the CONTENT region,\r\n * we want to route away from it on delete.\r\n */\r\n const routeToOnDelete = subjectId.toString() === this.currentLeftNavId.toString()\r\n ? { application: AppChannels.SUBJECTS, action: Actions.Subjects.NEW_SUBJECT }\r\n : null;\r\n\r\n const props = {\r\n subjectId,\r\n routeToOnDelete: routeToOnDelete ? routeToOnDelete : null,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeleteSubjectView {...props} />);\r\n }\r\n\r\n public classifications(): void {\r\n const getAppLink = (presentation: Presentation) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_CLASSIFICATIONS,\r\n args: [presentation.id]\r\n });\r\n\r\n const props = { objectType: 'classifications', getAppLink };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SelectPresentationView {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public presentationClassifications(presentationId: string): void {\r\n this.subjectDataService.getClassificationTree(presentationId, (classificationTree: ClassificationTree) => {\r\n const firstClassification = !!classificationTree.children && classificationTree.children[0];\r\n\r\n if (!firstClassification) {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_CLASSIFICATION,\r\n args: [presentationId]\r\n }, { replace: true });\r\n\r\n return;\r\n }\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, firstClassification.id ]\r\n }, { replace: true });\r\n });\r\n }\r\n\r\n public newClassification(presentationId: string, params: ObjectHash): void {\r\n const props = {\r\n presentationId,\r\n parentId: params.parentId\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewClassificationView key={params.parentId} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId);\r\n }\r\n\r\n public editClassification(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditClassificationView key={classificationId} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public editClassificationPlaylists(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId, memberType: SubjectMemberType.Playlists };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditClassificationMembersView key={`${classificationId}:playlists`} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public editClassificationSeries(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId, memberType: SubjectMemberType.Series };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditClassificationMembersView key={`${classificationId}:series`} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public editClassificationVideos(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId, memberType: SubjectMemberType.Videos };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditClassificationMembersView key={`${classificationId}:videos`} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public removeClassificationMember(classificationId: string, memberId: string, memberType: SubjectMemberType): void {\r\n const props = {\r\n classificationId,\r\n memberId,\r\n memberType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveClassificationMemberView {...props} />);\r\n }\r\n\r\n public deleteClassification(presentationId: string, classificationId: string): void {\r\n /**\r\n * If the classification being deleted is currently displayed the in the CONTENT region,\r\n * we want to route away from it (and back to the presentation) on delete.\r\n */\r\n const routeToOnDelete = classificationId === this.currentLeftNavId\r\n ? {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_CLASSIFICATION,\r\n args: [presentationId]\r\n }\r\n : null;\r\n\r\n const props = {\r\n classificationId,\r\n routeToOnDelete: routeToOnDelete ? routeToOnDelete : null,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeleteClassificationView {...props} />);\r\n }\r\n\r\n public levels(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <LevelsRedirectView />);\r\n\r\n this.renderLevelsLeftNav();\r\n }\r\n\r\n public newLevel(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewLevelView />);\r\n\r\n this.renderLevelsLeftNav();\r\n }\r\n\r\n public level(id: string): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [id]\r\n }, { replace: true });\r\n }\r\n\r\n public editLevel(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditLevelView key={id} id={id} />);\r\n\r\n this.renderLevelsLeftNav();\r\n }\r\n\r\n public levelAudiences(levelId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <LevelAudiencesView key={levelId} levelId={levelId} />);\r\n this.renderLevelsLeftNav(levelId);\r\n }\r\n\r\n public editLevelPlaylists(levelId: string): void {\r\n const props = { levelId, memberType: SubjectMemberType.Playlists };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditLevelMembersView key={`${levelId}:playlists`} {...props} />);\r\n\r\n this.renderLevelsLeftNav(levelId);\r\n }\r\n\r\n public editLevelSeries(levelId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <>TODO</>);\r\n\r\n this.renderLevelsLeftNav(levelId);\r\n }\r\n\r\n public editLevelVideos(levelId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <>TODO</>);\r\n\r\n this.renderLevelsLeftNav(levelId);\r\n }\r\n\r\n public audiences(): void {\r\n const getAppLink = (presentation: Presentation) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentation.id]\r\n });\r\n\r\n const props = { objectType: 'audiences', getAppLink };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SelectPresentationView {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public presentationAudiences(presentationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditAudiencesListView presentationId={presentationId} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public newAudience(presentationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewAudienceView presentationId={presentationId} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public editAudience(presentationId: string, audienceId: string): void {\r\n const props = { presentationId, audienceId };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditAudienceView key={audienceId} {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public deleteAudience(presentationId: string, audienceId: string): void {\r\n const routeToOnDelete = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentationId]\r\n };\r\n\r\n const props = { id: audienceId, routeToOnDelete, ...this.getPopupProps() };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeleteAudienceView {...props} />);\r\n }\r\n\r\n public presentations(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPresentationsListView />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public newPresentation(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewPresentationView />);\r\n }\r\n\r\n public editPresentation(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPresentationView key={id} id={id} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n const props = {\r\n imageType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <ImageUploadView {...props} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private renderClassificationLeftNav(presentationId: string, selectedClassificationId?: string): void {\r\n this.setCurrentLeftNavItem(selectedClassificationId);\r\n\r\n const props = { presentationId, selectedClassificationId };\r\n\r\n this.layout.showChildView(LayoutRegions.LEFT_NAV, <ClassificationNavView {...props} />);\r\n }\r\n\r\n private renderSubjectsLeftNav(subjectId?: string): void {\r\n this.setCurrentLeftNavItem(subjectId);\r\n\r\n this.layout.showChildView(LayoutRegions.LEFT_NAV, <SubjectNavView selectedSubjectId={subjectId} />);\r\n }\r\n\r\n private renderLevelsLeftNav(levelId?: string): void {\r\n this.setCurrentLeftNavItem(levelId);\r\n\r\n this.layout.showChildView(LayoutRegions.LEFT_NAV, <LevelNavView selectedLevelId={levelId} />);\r\n }\r\n\r\n private setCurrentLeftNavItem(id?: string): void {\r\n if (id)\r\n this.currentLeftNavId = id;\r\n else\r\n this.currentLeftNavId = null;\r\n }\r\n\r\n private hideLeftNav(): void {\r\n this.setCurrentLeftNavItem();\r\n\r\n this.layout.hideLeftNav();\r\n }\r\n\r\n private getTopNav(currentAppLink: Core.AppLink): React.ReactElement {\r\n return <TopNavView currentAppLink={currentAppLink} />;\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\n\r\nconst getAudienceAppLink = (a: PresentationAudience) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ a.presentationId, a.masterId ]\r\n});\r\n\r\nconst getLevelAppLink = (l: Level) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [l.id]\r\n});\r\n\r\nconst getAudienceLevels = (audience: PresentationAudience, levels: Level[]) => {\r\n const audienceLevelIds = audience.levelIds;\r\n\r\n return levels.filter(l => audienceLevelIds.includes(l.id));\r\n};\r\n\r\ninterface AudienceLevelsHeaderProps {\r\n showLevels: boolean;\r\n}\r\n\r\nfunction AudienceLevelsHeader({ showLevels }: AudienceLevelsHeaderProps): JSX.Element {\r\n return (\r\n <thead>\r\n <tr>\r\n <th>Audiences</th>\r\n {!!showLevels && <th>Mapped Level(s)</th>}\r\n </tr>\r\n </thead>\r\n );\r\n}\r\n\r\ninterface AudienceLevelsRowProps {\r\n audience: PresentationAudience;\r\n levels: Level[];\r\n}\r\n\r\nfunction AudienceLevelsRow({ audience, levels }: AudienceLevelsRowProps): JSX.Element {\r\n return (\r\n <tr>\r\n <td>\r\n <AppLink appLink={getAudienceAppLink(audience)}>{audience.name}</AppLink>\r\n </td>\r\n <td>\r\n {levels.map(l =>\r\n <AppLink key={l.id} appLink={getLevelAppLink(l)} className='mr-2'>{l.name}</AppLink>\r\n )}\r\n </td>\r\n </tr>\r\n );\r\n}\r\n\r\ninterface AudienceLevelsProps {\r\n audiences: PresentationAudience[];\r\n levels: Level[];\r\n}\r\n\r\nexport function AudienceLevels({ audiences, levels }: AudienceLevelsProps): JSX.Element {\r\n return (\r\n <Table responsive bordered>\r\n <AudienceLevelsHeader showLevels={!!audiences.length} />\r\n <tbody>\r\n {audiences.length\r\n ? audiences.map(a =>\r\n <AudienceLevelsRow key={a.masterId} audience={a} levels={getAudienceLevels(a, levels)} />\r\n )\r\n : <tr><td>This presentation has no audiences.</td></tr>\r\n }\r\n </tbody>\r\n </Table>\r\n );\r\n}","export * from './AudienceLevels';","import * as React from 'react';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { CreateOrUpdateAudienceRequest, Level } from 'apps/subjects/interfaces';\r\nimport { AudienceValidationSchema } from 'apps/subjects/utils';\r\n\r\nimport { EditAudienceDetailsForm } from './EditAudienceDetailsForm';\r\n\r\ninterface EditAudienceDetailsProps {\r\n presentationId: string;\r\n levels: Level[];\r\n saveAudience: (data: CreateOrUpdateAudienceRequest, onDone: () => void) => void;\r\n audience?: PresentationAudience;\r\n}\r\n\r\nexport function EditAudienceDetails(props: EditAudienceDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<CreateOrUpdateAudienceRequest>\r\n initialValues={props.audience}\r\n validationSchema={AudienceValidationSchema}\r\n onSubmit={props.saveAudience}\r\n >\r\n <EditAudienceDetailsForm\r\n masterId={props.audience && props.audience.masterId}\r\n presentationId={props.presentationId}\r\n levels={props.levels}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdateAudienceRequest, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditAudienceDetailsFormProps {\r\n masterId?: string;\r\n presentationId: string;\r\n levels: Level[];\r\n}\r\n\r\nexport function EditAudienceDetailsForm(props: EditAudienceDetailsFormProps): React.ReactElement {\r\n const isNew = props.masterId === null || props.masterId === undefined;\r\n\r\n const formikProps = useFormikContext<CreateOrUpdateAudienceRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this audience'\r\n autoFocus\r\n />\r\n <FormField\r\n label='Mapped Level(s)'\r\n as='select'\r\n name='levelIds'\r\n id='level-ids'\r\n multiple\r\n size={props.levels.length}\r\n value={formikProps.values.levelIds}\r\n >\r\n {props.levels.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </FormField>\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_AUDIENCE,\r\n args: [ props.presentationId, props.masterId ]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditAudienceDetails';","import * as React from 'react';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\n\r\nimport { AudienceLevels, PresentationSelect, SelectLevels, SelectAudiences } from 'apps/subjects/components';\r\nimport { Level, Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\n// Filter out object audiences that aren't in current presentation.\r\nfunction filterAudiencesByPresentation(\r\n { objectAudiences, presentationAudiences }: EditObjectAudiencesProps\r\n): PresentationAudience[] {\r\n return objectAudiences.filter(a => presentationAudiences.some(p => p.masterId === a.masterId));\r\n}\r\n\r\nfunction getAllowedAudiences(\r\n { presentationAudiences, objectLevels, objectAudiences }: EditObjectAudiencesProps\r\n): PresentationAudience[] {\r\n const levelIds = objectLevels.map(l => l.id);\r\n\r\n /**\r\n * Show an audience if it is mapped to a level that the object is mapped to\r\n * OR if the object is already mapped to that audience so that it can be removed from the audience.\r\n */\r\n return presentationAudiences.filter(a =>\r\n ArrayHelper.intersection(a.levelIds, levelIds).length || objectAudiences.some(o => o.masterId === a.masterId));\r\n}\r\n\r\ninterface EditObjectAudiencesProps {\r\n objectLevels: Level[];\r\n objectAudiences: PresentationAudience[];\r\n presentations: Presentation[];\r\n currentPresentation: Presentation;\r\n setCurrentPresentation: (p: Presentation) => void;\r\n levels: Level[]; // List of all levels.\r\n presentationAudiences: PresentationAudience[]; // List of all audiences in presentations.\r\n memberType: SubjectMemberType;\r\n saveLevels: (levelIds: string[], addToAudiences: boolean, setSubmittingFalse: () => void) => void;\r\n saveAudiences: (audienceIds: string[], setSubmittingFalse: () => void) => void;\r\n}\r\n\r\nexport function EditObjectAudiences(props: EditObjectAudiencesProps): JSX.Element {\r\n const memberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const allowedPresentationAudiences = getAllowedAudiences(props);\r\n\r\n return (\r\n <>\r\n <div className='border-bottom pb-3 mb-3'>\r\n <h6>Levels</h6>\r\n <p>{`Select which levels this ${memberType} is mapped to.`}</p>\r\n <p>To see how levels correspond to audiences, scroll down to the audience-level mappings table.</p>\r\n <SelectLevels\r\n initialValues={{ levelIds: props.objectLevels.map(l => l.id), addToAudiences: true }}\r\n saveLevels={props.saveLevels}\r\n levels={props.levels}\r\n memberType={props.memberType}\r\n />\r\n </div>\r\n <h6>Audiences</h6>\r\n <p>{`Select a presentation to view its audiences and map them to this ${memberType}.`}</p>\r\n <div className='w-50 pb-3'>\r\n <PresentationSelect\r\n presentations={props.presentations}\r\n currentPresentation={props.currentPresentation}\r\n setCurrentPresentation={props.setCurrentPresentation}\r\n />\r\n </div>\r\n <p>Audience to level mappings for this presentation are displayed below.</p>\r\n <AudienceLevels levels={props.levels} audiences={props.presentationAudiences} />\r\n <p>\r\n {\r\n 'Only the audiences which are mapped to a level that this'\r\n + ` ${memberType} is mapped to are displayed below.`\r\n }\r\n </p>\r\n {!!allowedPresentationAudiences.length &&\r\n <SelectAudiences\r\n initialValues={{\r\n audienceIds: filterAudiencesByPresentation(props).map(a => a.masterId)\r\n }}\r\n saveAudiences={props.saveAudiences}\r\n audiences={allowedPresentationAudiences}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditObjectAudiences';","export * from './audience-levels';\r\nexport * from './edit-audience-details';\r\nexport * from './edit-object-audiences';\r\nexport * from './select-audiences';","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\n\r\ninterface SelectAudiencesFormValues {\r\n audienceIds: string[];\r\n}\r\n\r\ninterface SelectAudiencesFormProps {\r\n audiences: PresentationAudience[];\r\n}\r\n\r\nfunction SelectAudiencesForm(props: SelectAudiencesFormProps): JSX.Element {\r\n const formikProps = useFormikContext<SelectAudiencesFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectAudiencesFormValues>\r\n label='Audience(s)'\r\n as='select'\r\n name='audienceIds'\r\n id='audience-ids'\r\n multiple\r\n size={props.audiences.length}\r\n value={formikProps.values.audienceIds}\r\n >\r\n {props.audiences.map(a => <option key={a.masterId} value={a.masterId}>{a.name}</option>)}\r\n </FormField>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Save Audiences\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectAudiencesProps {\r\n initialValues: SelectAudiencesFormValues;\r\n audiences: PresentationAudience[];\r\n saveAudiences: (audienceIds: string[], onDone: () => void) => void;\r\n}\r\n\r\nexport function SelectAudiences(props: SelectAudiencesProps): JSX.Element {\r\n const onSubmit = ({ audienceIds }: SelectAudiencesFormValues, onDone: () => void) =>\r\n props.saveAudiences(audienceIds, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectAudiencesFormValues> initialValues={props.initialValues} onSubmit={onSubmit} enableReinitialize>\r\n <SelectAudiencesForm audiences={props.audiences} />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectAudiences';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { PinState } from './usePinnedVideo';\r\n\r\ninterface ClassificationMemberItemProps<T extends BaseObject> {\r\n item: T;\r\n getItemAppLink: (item: T) => Core.AppLink;\r\n pinState: PinState;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function ClassificationMemberItem<T extends BaseObject>(\r\n props: ClassificationMemberItemProps<T>\r\n): React.ReactElement {\r\n const { item, getItemAppLink, actions, pinState } = props;\r\n\r\n return (\r\n <tr>\r\n <td>\r\n <AppLink appLink={getItemAppLink(item)}>{item.name}</AppLink>\r\n </td>\r\n {pinState.isPinnable &&\r\n <td>\r\n <Checkbox\r\n selected={parseInt(item.id) === parseInt(pinState.currentPinnedVideo)}\r\n onToggle={(selected: boolean) => pinState.onChange(selected, item.id)}\r\n id={item.id}\r\n />\r\n </td>\r\n }\r\n {actions &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={actions} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { BaseObject, Classification } from 'libs/shared/interfaces';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport { ClassificationMemberItem } from './ClassificationMemberItem';\r\nimport { usePinnedVideo } from './usePinnedVideo';\r\n\r\ninterface ClassificationMemberListProps<T extends BaseObject> {\r\n items: T[];\r\n memberType: SubjectMemberType;\r\n classification: Classification;\r\n updatePinnedVideo: (id: string, callback: (data: Classification) => void) => void;\r\n getItemAppLink: (item: T) => Core.AppLink;\r\n getActions?: (item: T) => ActionOptions[];\r\n}\r\n\r\nexport function ClassificationMemberList<T extends BaseObject>(\r\n props: ClassificationMemberListProps<T>\r\n): React.ReactElement {\r\n const { items, memberType, classification, getItemAppLink, getActions, updatePinnedVideo } = props;\r\n\r\n const [ isSubmitting, setIsSubmitting ] = React.useState(false);\r\n const pinState = usePinnedVideo(classification, memberType);\r\n\r\n if (!items.length)\r\n return <div className='py-5'>{`No ${memberType} in this classification.`}</div>;\r\n\r\n const onSubmit = () => {\r\n setIsSubmitting(true);\r\n updatePinnedVideo(pinState.currentPinnedVideo, () => setIsSubmitting(false));\r\n };\r\n\r\n const memberHeading =\r\n `${StringHelper.capitalizeFirstLetter(SubjectMemberHelper.singularizeMemberType(memberType))} Name`;\r\n\r\n return (\r\n <>\r\n <Table responsive>\r\n <thead>\r\n <tr>\r\n <th>{memberHeading}</th>\r\n {pinState.isPinnable && <th>Pinned</th>}\r\n {FunctionHelper.isFunction(getActions) && <th></th>}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {items.map(item =>\r\n <ClassificationMemberItem\r\n item={item}\r\n key={item.id}\r\n getItemAppLink={getItemAppLink}\r\n actions={FunctionHelper.isFunction(getActions) && getActions(item)}\r\n pinState={pinState}\r\n />\r\n )}\r\n </tbody>\r\n </Table>\r\n {pinState.isPinnable && (\r\n <SpinnerButton\r\n showSpinner={isSubmitting}\r\n onClick={onSubmit}\r\n disabled={!pinState.canSubmit || isSubmitting}\r\n >\r\n Save\r\n </SpinnerButton>\r\n )}\r\n </>\r\n );\r\n}","export * from './ClassificationMemberList';","import * as React from 'react';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\n\r\nexport interface PinState {\r\n currentPinnedVideo: string;\r\n onChange: (selected: boolean, id: string) => void;\r\n canSubmit: boolean;\r\n isPinnable: boolean;\r\n}\r\n\r\nexport function usePinnedVideo(classification: Classification, memberType: SubjectMemberType): PinState {\r\n const initialPinnedVideo = classification.pinnedVideoMasterId || null;\r\n const [ currentPinnedVideo, setCurrentPinnedVideo ] = React.useState(initialPinnedVideo);\r\n\r\n const onChange = (selected: boolean, id: string): void => {\r\n setCurrentPinnedVideo(selected ? id : null);\r\n };\r\n\r\n const isPinnable = memberType === SubjectMemberType.Videos;\r\n const canSubmit = initialPinnedVideo !== currentPinnedVideo;\r\n\r\n return { currentPinnedVideo, onChange, canSubmit, isPinnable };\r\n}","import * as React from 'react';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { ClassificationValidationSchema } from 'apps/subjects/utils';\r\nimport {\r\n SubjectTree,\r\n ClassificationTree,\r\n CreateClassificationRequest,\r\n UpdateClassificationRequest\r\n} from 'apps/subjects/interfaces';\r\n\r\nimport { EditClassificationDetailsForm } from './EditClassificationDetailsForm';\r\n\r\ntype RequestType = CreateClassificationRequest | UpdateClassificationRequest;\r\n\r\ninterface EditClassificationDetailsProps {\r\n saveClassification: (data: RequestType, onDone: () => void) => void;\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n subjectTree: SubjectTree;\r\n classification?: Classification;\r\n}\r\n\r\nexport function EditClassificationDetails(props: EditClassificationDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<RequestType, Classification>\r\n initialValues={props.classification}\r\n validationSchema={ClassificationValidationSchema}\r\n onSubmit={props.saveClassification}\r\n >\r\n <EditClassificationDetailsForm\r\n id={props.classification && props.classification.id}\r\n presentationId={props.presentationId}\r\n classificationTree={props.classificationTree}\r\n subjectTree={props.subjectTree}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { Button } from 'react-bootstrap';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nimport { Cover, Banner } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\n\r\nimport { TreeSelect, ImageSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TreeHelper } from 'shared/utils';\r\n\r\nimport {\r\n SubjectTree,\r\n ClassificationTree,\r\n CreateClassificationRequest,\r\n UpdateClassificationRequest\r\n} from 'apps/subjects/interfaces';\r\n\r\ntype RequestType = CreateClassificationRequest | UpdateClassificationRequest;\r\n\r\nconst getSubjectAppLink = (subjectId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [subjectId]\r\n});\r\n\r\nconst isNodeDisabled = (classificationTree: ClassificationTree, classificationId: string) =>\r\n (node: ClassificationTree) => {\r\n if (node.id === classificationId)\r\n return true;\r\n\r\n const classificationNode = TreeHelper.find(classificationTree, classificationId);\r\n\r\n return !!TreeHelper.find(classificationNode, node.id);\r\n };\r\n\r\ninterface EditClassificationDetailsFormProps {\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n subjectTree: SubjectTree;\r\n id?: string;\r\n}\r\n\r\nexport function EditClassificationDetailsForm(props: EditClassificationDetailsFormProps): React.ReactElement {\r\n const formikProps = useFormikContext<RequestType>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n const isNew = props.id === null || props.id === undefined;\r\n\r\n const collapseInitialState = !isNew || !!(formikProps.values.parentIds && formikProps.values.parentIds.length);\r\n\r\n const [ collapseClassificationSelect, setCollapseClassificationSelect ] = React.useState(collapseInitialState);\r\n\r\n React.useEffect(() =>\r\n setCollapseClassificationSelect(collapseInitialState), [ props.id, formikProps.values.parentIds ]);\r\n\r\n /**\r\n * Set subjectIds to 'touched' so that errors will be displayed if no subject is selected.\r\n * On a new subject this will not trigger until a subject has been selected.\r\n */\r\n React.useEffect(() => {\r\n if (formikProps.values.subjectIds.length && !formikProps.touched.subjectIds)\r\n formikProps.setFieldTouched('subjectIds', true);\r\n }, [formikProps.values.subjectIds]);\r\n\r\n const handleParentIdSelect = (item: ClassificationTree) => formikProps.setFieldValue(\r\n 'parentIds',\r\n ArrayHelper.addOrRemove(formikProps.values.parentIds.map(pId => pId.toString()), item.id.toString())\r\n );\r\n\r\n const handleSubjectSelect = (item: SubjectTree) => formikProps.setFieldValue(\r\n 'subjectIds',\r\n ArrayHelper.addOrRemove(formikProps.values.subjectIds.map(sId => sId.toString()), item.id.toString())\r\n );\r\n\r\n const getTreeSelectClassName = (field: keyof RequestType) =>\r\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, field)} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<RequestType>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this classification'\r\n autoFocus\r\n />\r\n <FormField<RequestType>\r\n as='select'\r\n label='Type'\r\n name='type'\r\n id='type'\r\n value={formikProps.values.type}\r\n >\r\n {ObjectHelper.getEnumKeys(ClassificationType).map((key: ClassificationType) =>\r\n <option key={key} value={ClassificationType[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n <FormField<RequestType>\r\n label='Coming Soon'\r\n name='comingSoon'\r\n id='comingSoon'\r\n type='checkbox'\r\n checked={formikProps.values.comingSoon}\r\n />\r\n <FormField<RequestType>\r\n label='Emphasize'\r\n name='emphasize'\r\n id='emphasize'\r\n type='checkbox'\r\n checked={formikProps.values.emphasize}\r\n />\r\n <FormField<RequestType>\r\n label='Can Be Preferred'\r\n name='canBePreferred'\r\n id='canBePreferred'\r\n type='checkbox'\r\n checked={formikProps.values.canBePreferred}\r\n />\r\n <FormField<RequestType> name='parentIds'>\r\n {() => (\r\n <div className={getTreeSelectClassName('parentIds')}>\r\n <TreeSelect<ClassificationTree>\r\n label='Parent Classification(s)'\r\n tree={props.classificationTree}\r\n selectedIds={formikProps.values.parentIds}\r\n onSelect={handleParentIdSelect}\r\n collapse={collapseClassificationSelect}\r\n noSelectionMessage='No parent selected, this will be a root classification.'\r\n isNodeDisabled={isNodeDisabled(props.classificationTree, props.id)}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <FormField<RequestType> name='subjectIds'>\r\n {() => (\r\n <div className={getTreeSelectClassName('subjectIds')}>\r\n <TreeSelect<SubjectTree>\r\n label='Mapped Subject(s)'\r\n tree={props.subjectTree}\r\n selectedIds={formikProps.values.subjectIds}\r\n onSelect={handleSubjectSelect}\r\n collapse={!isNew}\r\n getSelectedItemAppLink={getSubjectAppLink}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <ImageSelect<RequestType>\r\n imageType={ImageType.Covers}\r\n fieldName='cover'\r\n application={AppChannels.SUBJECTS}\r\n uploadAction={Actions.Subjects.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect<RequestType>\r\n imageType={ImageType.Banners}\r\n fieldName='banner'\r\n application={AppChannels.SUBJECTS}\r\n uploadAction={Actions.Subjects.UPLOAD_IMAGE}\r\n />\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_CLASSIFICATION,\r\n args: [ props.presentationId, props.id ]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditClassificationDetails';","import * as React from 'react';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { Actions } from 'shared/constants';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectsNavHelper } from 'apps/subjects/utils';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\n\r\nconst isItemActive = (memberType?: SubjectMemberType) => (item: NavItem) => {\r\n if (!memberType)\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION;\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_PLAYLISTS;\r\n\r\n case SubjectMemberType.Series:\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_SERIES;\r\n\r\n case SubjectMemberType.Videos:\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_VIDEOS;\r\n\r\n }\r\n};\r\n\r\ninterface EditClassificationNavProps {\r\n presentation: Presentation;\r\n classificationId: string;\r\n memberType?: SubjectMemberType;\r\n}\r\n\r\nexport function EditClassificationNav(props: EditClassificationNavProps): React.ReactElement {\r\n const { presentation, classificationId, memberType } = props;\r\n\r\n if (!presentation)\r\n return <></>;\r\n\r\n return (\r\n <>\r\n <h6>{`Presentation: ${!!presentation && presentation.name}`}</h6>\r\n <div className='py-2'>\r\n <Tabs\r\n tabs={SubjectsNavHelper.getEditClassificationTabs(presentation.id, classificationId)}\r\n isItemActive={isItemActive(memberType)}\r\n />\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditClassificationNav';","export * from './classification-member-list';\r\nexport * from './edit-classification-details';\r\nexport * from './edit-classification-nav';\r\nexport * from './select-classifications';","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\n\r\nimport { TreeSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\nconst getClassificationAppLink = (presentationId: string) => (classificationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, classificationId ]\r\n});\r\n\r\ninterface SelectClassificationsFormValues {\r\n classificationIds: string[];\r\n}\r\n\r\ninterface SelectClassificationsFormProps {\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\r\n}\r\n\r\nfunction SelectClassificationsForm(props: SelectClassificationsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<SelectClassificationsFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n const handleSelect = (item: ClassificationTree) => formikProps.setFieldValue(\r\n 'classificationIds',\r\n ArrayHelper.addOrRemove(formikProps.values.classificationIds.map(id => id.toString()), item.id.toString())\r\n );\r\n\r\n const treeSelectClassName =\r\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'classificationIds')} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectClassificationsFormValues> name='classificationIds'>\r\n {() => (\r\n <div className={treeSelectClassName}>\r\n <TreeSelect<ClassificationTree>\r\n label='Mapped Classification(s)'\r\n tree={props.classificationTree}\r\n selectedIds={formikProps.values.classificationIds}\r\n onSelect={handleSelect}\r\n getSelectedItemAppLink={getClassificationAppLink(props.presentationId)}\r\n isNodeDisabled={props.isClassificationDisabled}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Save Classifications\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectClassificationsProps {\r\n initialValues: SelectClassificationsFormValues;\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n saveClassifications: (classificationIds: string[], setSubmittingFalse: () => void) => void;\r\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\r\n}\r\n\r\nexport function SelectClassifications(props: SelectClassificationsProps): JSX.Element {\r\n const onSubmit = ({ classificationIds }: SelectClassificationsFormValues, onDone: () => void) =>\r\n props.saveClassifications(classificationIds, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectClassificationsFormValues>\r\n initialValues={props.initialValues}\r\n onSubmit={onSubmit}\r\n enableReinitialize\r\n >\r\n <SelectClassificationsForm\r\n presentationId={props.presentationId}\r\n classificationTree={props.classificationTree}\r\n isClassificationDisabled={props.isClassificationDisabled}\r\n />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectClassifications';","export * from './audiences';\r\nexport * from './classifications';\r\nexport * from './levels';\r\nexport * from './presentations';\r\nexport * from './subjects';\r\nexport * from './top-nav';\r\n","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { CreateOrUpdateLevelRequest, Level } from 'apps/subjects/interfaces';\r\nimport { LevelValidationSchema } from 'apps/subjects/utils';\r\n\r\ninterface EditLevelDetailsFormProps {\r\n id?: string;\r\n}\r\n\r\nexport function EditLevelDetailsForm(props: EditLevelDetailsFormProps): React.ReactElement {\r\n const isNew = props.id === null || props.id === undefined;\r\n\r\n const formikProps = useFormikContext<CreateOrUpdateLevelRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateLevelRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this level'\r\n autoFocus\r\n />\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface EditLevelDetailsProps {\r\n level?: Level;\r\n saveLevel: (data: CreateOrUpdateLevelRequest, onDone: () => void) => void;\r\n}\r\n\r\nexport function EditLevelDetails(props: EditLevelDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<CreateOrUpdateLevelRequest>\r\n initialValues={props.level}\r\n validationSchema={LevelValidationSchema}\r\n onSubmit={props.saveLevel}\r\n >\r\n <EditLevelDetailsForm id={props.level && props.level.id} />\r\n </FormWrapper>\r\n );\r\n}","export * from './EditLevelDetails';","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { LevelsNavHelper } from 'apps/subjects/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditLevelNavProps {\r\n levelId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditLevelNav({ levelId, activeAction }: EditLevelNavProps): React.ReactElement {\r\n return (\r\n <>\r\n <Alert variant='danger'>\r\n Warning: You are editing the backbone levels.\r\n </Alert>\r\n <div className='py-2'>\r\n <Tabs tabs={LevelsNavHelper.getEditLevelTabs(levelId)} isItemActive={isItemActive(activeAction)} />\r\n </div>\r\n </>\r\n );\r\n}","export * from './edit-level-details';\r\nexport * from './select-levels';\r\nexport * from './edit-level-nav/EditLevelNav';\r\nexport * from './level-member-list';","import * as React from 'react';\r\nimport { Audience } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nconst getAudienceAppLink = (presentationId: string, audienceId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ presentationId, audienceId ]\r\n});\r\n\r\ninterface PresentationAudiencesProps {\r\n presentation: Presentation;\r\n audiences: Audience[];\r\n}\r\n\r\nconst PresentationAudiences = (props: PresentationAudiencesProps) => (\r\n <div className='border rounded p-2 mb-3'>\r\n <h6 className='border-bottom pb-1'>{props.presentation.name}</h6>\r\n {(props.audiences && props.audiences.length)\r\n ? <ul className='list-unstyled mb-0'>\r\n {props.audiences.map(c =>\r\n <li key={c.id} className='py-1'>\r\n <AppLink appLink={getAudienceAppLink(props.presentation.id, c.id)}>\r\n {c.name}\r\n </AppLink>\r\n </li>\r\n )}\r\n </ul>\r\n : <p><em>There are no audiences mapped to this level in this presentation.</em></p>\r\n }\r\n </div>\r\n);\r\n\r\ninterface LevelAudiencesProps {\r\n presentations: Presentation[];\r\n audienceDictionary: { [presentationId: string]: Audience[] };\r\n}\r\n\r\nexport const LevelAudiences = (props: LevelAudiencesProps) => (\r\n <>\r\n {!!props.presentations && !!props.audienceDictionary && props.presentations.map(p =>\r\n <PresentationAudiences\r\n key={p.id}\r\n presentation={p}\r\n audiences={props.audienceDictionary[p.id]}\r\n />\r\n )}\r\n </>\r\n);","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { LevelMemberViewModel } from './LevelMemberList';\r\n\r\ninterface LevelMemberItemProps {\r\n member: LevelMemberViewModel;\r\n getMemberAppLink: (memberId: string) => Core.AppLink;\r\n onToggleAudience: (audienceId: string, selected: boolean, memberId: string) => void;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function LevelMemberItem(props: LevelMemberItemProps): React.ReactElement {\r\n const {\r\n member: { id, name, audiences = []},\r\n getMemberAppLink,\r\n onToggleAudience,\r\n actions\r\n } = props;\r\n\r\n const appLink = FunctionHelper.isFunction(getMemberAppLink) && getMemberAppLink(id);\r\n\r\n if (audiences.length && !FunctionHelper.isFunction(onToggleAudience))\r\n Core.ErrorHelper.throw(new DevError('onToggleAudience must be passed to LevelMemberItem'));\r\n\r\n return (\r\n <tr>\r\n <td>\r\n {appLink\r\n ? <AppLink appLink={getMemberAppLink(id)}>{name}</AppLink>\r\n : name\r\n }\r\n </td>\r\n {!!audiences.length && audiences.map(c =>\r\n <td key={c.id}>\r\n <Checkbox\r\n selected={c.selected}\r\n onToggle={(s: boolean) => onToggleAudience(c.id, s, id)}\r\n />\r\n </td>\r\n )}\r\n {actions &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={actions} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { Audience } from 'libs/shared/interfaces';\r\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { LevelMemberType } from 'apps/subjects/enums';\r\n\r\nimport { LevelMemberListHeader } from './LevelMemberListHeader';\r\nimport { LevelMemberItem } from './LevelMemberItem';\r\n\r\nfunction allAudienceMembersSelected(\r\n memberType: LevelMemberType,\r\n members: LevelMemberViewModel[]\r\n): (audience: Audience) => boolean {\r\n return (audience: Audience) => {\r\n const audienceMembers = (audience as any)[memberType];\r\n\r\n const numSelectedMembers = CollectionHelper.length(audienceMembers);\r\n\r\n return !!numSelectedMembers && numSelectedMembers === members.length;\r\n };\r\n}\r\n\r\ntype AudienceViewModel = { id: string, selected: boolean };\r\n\r\nexport interface LevelMemberViewModel {\r\n id: string;\r\n name: string;\r\n audiences?: AudienceViewModel[];\r\n}\r\n\r\ninterface LevelMemberListProps {\r\n members: LevelMemberViewModel[];\r\n memberType: LevelMemberType;\r\n audiences: Audience[];\r\n getMemberAppLink: (memberId: string) => Core.AppLink;\r\n getAudienceAppLink: (audienceId: string) => Core.AppLink;\r\n onToggleAudience: (audienceId: string, selected: boolean, memberId?: string) => void;\r\n getActions?: (itemId: string) => ActionOptions[];\r\n}\r\n\r\nexport function LevelMemberList(props: LevelMemberListProps): React.ReactElement {\r\n const {\r\n members,\r\n memberType,\r\n getActions,\r\n audiences,\r\n getAudienceAppLink,\r\n onToggleAudience,\r\n ...itemProps\r\n } = props;\r\n\r\n if (!members.length)\r\n return <div className='py-5'>{`No ${memberType} in this level.`}</div>;\r\n\r\n const hasActions = FunctionHelper.isFunction(getActions);\r\n\r\n const headerProps = {\r\n memberType,\r\n audiences,\r\n getAudienceAppLink,\r\n getIsAudienceSelected: allAudienceMembersSelected(memberType, members),\r\n onToggleAudience,\r\n hasActions\r\n };\r\n\r\n return (\r\n <Table responsive bordered>\r\n <LevelMemberListHeader {...headerProps} />\r\n <tbody>\r\n {members.map((member, idx) =>\r\n <LevelMemberItem\r\n key={idx}\r\n member={member}\r\n actions={hasActions && getActions(member.id)}\r\n onToggleAudience={onToggleAudience}\r\n {...itemProps}\r\n />\r\n )}\r\n </tbody>\r\n </Table>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { Audience } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { LevelMemberType } from 'apps/subjects/enums';\r\nimport { LevelMemberHelper } from 'apps/subjects/utils';\r\n\r\nconst getAudienceLabel = (c: Audience, showAudienceSubHeader: boolean) =>\r\n showAudienceSubHeader ? c.name : `Audience: ${c.name}`;\r\n\r\ninterface AudienceHeaderColumnsProps {\r\n audiences: Audience[];\r\n getIsAudienceSelected: (audience: Audience) => boolean;\r\n onToggleAudience: (audienceId: string, selected: boolean) => void;\r\n getAudienceAppLink: (audienceId: string) => Core.AppLink;\r\n showAudienceSubHeader: boolean;\r\n}\r\n\r\nfunction AudienceHeaderColumns(props: AudienceHeaderColumnsProps): React.ReactElement {\r\n return (\r\n <>\r\n {props.audiences.map(c =>\r\n <th key={c.id}>\r\n <span className='d-inline-block'>\r\n <Checkbox\r\n selected={props.getIsAudienceSelected(c)}\r\n onToggle={(selected: boolean) => props.onToggleAudience(c.id, selected)}\r\n />\r\n </span>\r\n <AppLink appLink={props.getAudienceAppLink(c.id)}>\r\n {getAudienceLabel(c, props.showAudienceSubHeader)}\r\n </AppLink>\r\n </th>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\ninterface LevelMemberListHeaderProps {\r\n memberType: LevelMemberType;\r\n hasActions: boolean;\r\n audiences: Audience[];\r\n getIsAudienceSelected: (audience: Audience) => boolean;\r\n onToggleAudience: (audienceId: string, selected: boolean) => void;\r\n getAudienceAppLink: (audienceId: string) => Core.AppLink;\r\n}\r\n\r\nexport function LevelMemberListHeader(props: LevelMemberListHeaderProps): React.ReactElement {\r\n const { memberType, hasActions, audiences, ...otherProps } = props;\r\n\r\n const memberHeading =\r\n `${StringHelper.capitalizeFirstLetter(LevelMemberHelper.singularizeMemberType(memberType))} Name`;\r\n\r\n const hasAudiences = !!audiences && !!audiences.length;\r\n\r\n const showAudienceSubHeader = hasAudiences && audiences.length > 1;\r\n\r\n const rowSpan = hasAudiences ? 2 : 1;\r\n\r\n const audienceColumnsProps = { audiences, showAudienceSubHeader, ...otherProps };\r\n\r\n return (\r\n <thead>\r\n <tr>\r\n <th rowSpan={rowSpan}>{memberHeading}</th>\r\n {hasAudiences && (showAudienceSubHeader\r\n ? <th colSpan={audiences.length} className='text-center'>Audiences</th>\r\n : <AudienceHeaderColumns {...audienceColumnsProps} />\r\n )}\r\n {hasActions && <th rowSpan={rowSpan}></th>}\r\n </tr>\r\n {hasAudiences && showAudienceSubHeader &&\r\n <tr>\r\n <AudienceHeaderColumns {...audienceColumnsProps} />\r\n </tr>\r\n }\r\n </thead>\r\n );\r\n}","export * from './LevelMemberList';","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\ninterface SelectLevelsFormValues {\r\n levelIds: string[];\r\n addToAudiences: boolean;\r\n}\r\n\r\ninterface SelectLevelsFormProps {\r\n levels: Level[];\r\n memberType: SubjectMemberType;\r\n}\r\n\r\nfunction SelectLevelsForm(props: SelectLevelsFormProps): JSX.Element {\r\n const memberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const formikProps = useFormikContext<SelectLevelsFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectLevelsFormValues>\r\n label='Level(s)'\r\n as='select'\r\n name='levelIds'\r\n id='level-ids'\r\n multiple\r\n size={props.levels.length}\r\n value={formikProps.values.levelIds}\r\n >\r\n {props.levels.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </FormField>\r\n <FormField<SelectLevelsFormValues>\r\n label='Automatically add to audiences*'\r\n name='addToAudiences'\r\n id='add-to-audiences'\r\n type='checkbox'\r\n checked={formikProps.values.addToAudiences}\r\n />\r\n <p>\r\n <em>\r\n {\r\n `*If selected, when adding a ${memberType} to a level, all of that level\\'s`\r\n + ' audiences across all presentations will also be added to.'\r\n }\r\n </em>\r\n </p>\r\n <p>\r\n <strong>Note:</strong>{` When removing a ${memberType} from a level, that level's audiences `}\r\n <strong>will not</strong> be automatically removed from.\r\n </p>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Save Levels\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectLevelsProps {\r\n initialValues: SelectLevelsFormValues;\r\n levels: Level[];\r\n memberType: SubjectMemberType;\r\n saveLevels: (levelIds: string[], addToAudiences: boolean, setSubmittingFalse: () => void) => void;\r\n}\r\n\r\nexport function SelectLevels(props: SelectLevelsProps): JSX.Element {\r\n const onSubmit = ({ levelIds, addToAudiences }: SelectLevelsFormValues, onDone: () => void) =>\r\n props.saveLevels(levelIds, addToAudiences, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectLevelsFormValues> initialValues={props.initialValues} onSubmit={onSubmit}>\r\n <SelectLevelsForm levels={props.levels} memberType={props.memberType} />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectLevels';","import * as React from 'react';\r\nimport { Formik, FormikProps, FormikHelpers } from 'formik';\r\n\r\nimport { Presentation, CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\nimport { PresentationValidationSchema } from 'apps/subjects/utils';\r\n\r\nimport { EditPresentationDetailsForm } from './EditPresentationDetailsForm';\r\n\r\ninterface EditPresentationDetailsProps {\r\n presentation?: Presentation;\r\n savePresentation: (\r\n data: CreateOrUpdatePresentationRequest, formikHelpers: FormikHelpers<CreateOrUpdatePresentationRequest>\r\n ) => void;\r\n}\r\n\r\nexport function EditPresentationDetails(props: EditPresentationDetailsProps): React.ReactElement {\r\n const { presentation: { id = null, name = '', description = '' } = {}, savePresentation } = props;\r\n\r\n return (\r\n <Formik<CreateOrUpdatePresentationRequest>\r\n initialValues={{ name, description }}\r\n validationSchema={PresentationValidationSchema}\r\n onSubmit={savePresentation}\r\n >\r\n {(formikProps: FormikProps<CreateOrUpdatePresentationRequest>) =>\r\n <EditPresentationDetailsForm id={id} {...formikProps} />\r\n }\r\n </Formik>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, FormikProps } from 'formik';\r\n\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\n\r\nimport { CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPresentationDetailsFormProps extends FormikProps<CreateOrUpdatePresentationRequest> {\r\n id?: string;\r\n}\r\n\r\nexport function EditPresentationDetailsForm(props: EditPresentationDetailsFormProps): React.ReactElement {\r\n const { values: { name, description }, id, isSubmitting } = props;\r\n\r\n const isNew = !id;\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdatePresentationRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={name}\r\n placeholder='Enter a name for this presentation'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdatePresentationRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n value={description}\r\n placeholder='Describe this presentation here'\r\n />\r\n <SpinnerButton showSpinner={isSubmitting} type='submit'>{isNew ? 'Create' : 'Save'}</SpinnerButton>\r\n </Form>\r\n );\r\n}","export * from './EditPresentationDetails';","export * from './edit-presentation-details';\r\nexport * from './presentation-select';","import * as React from 'react';\r\nimport { Form, FormControlProps } from 'react-bootstrap';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nconst getById = (id: string, arr: BaseObject[]) =>\r\n ArrayHelper.first(arr.filter(o => o.id.toString() === id.toString()));\r\n\r\ninterface PresentationSelectProps {\r\n presentations: Presentation[];\r\n currentPresentation?: Presentation;\r\n setCurrentPresentation: (presentation: Presentation) => void;\r\n label?: string;\r\n}\r\n\r\nPresentationSelect.defaultProps = {\r\n label: 'Presentation'\r\n};\r\n\r\nexport function PresentationSelect(props: PresentationSelectProps): React.ReactElement {\r\n const { presentations, currentPresentation, setCurrentPresentation, label } = props;\r\n\r\n const onSelectPresentation = (presentationId: string) => {\r\n const presentation = getById(presentationId, presentations);\r\n setCurrentPresentation(presentation);\r\n };\r\n\r\n // If no currentPresentation is set, set the first one by default.\r\n React.useEffect(() => {\r\n if (!presentations || currentPresentation)\r\n return;\r\n\r\n setCurrentPresentation(presentations[0]);\r\n }, [presentations]);\r\n\r\n return (\r\n <>\r\n {!!currentPresentation &&\r\n <>\r\n <Form.Label>{label}</Form.Label>\r\n <Form.Control\r\n as='select'\r\n value={currentPresentation.id}\r\n onChange={(e: React.ChangeEvent<FormControlProps>) => onSelectPresentation(e.target.value)}\r\n className='cursor-pointer'\r\n >\r\n {presentations.map(p => <option value={p.id} key={p.id}>{p.name}</option>)}\r\n </Form.Control>\r\n </>\r\n }\r\n </>\r\n );\r\n}","export * from './PresentationSelect';","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SelectSubjects } from 'apps/subjects/components';\r\n\r\ninterface AddSubjectMembersProps {\r\n memberType: SubjectMemberType;\r\n subjectTree: SubjectTree;\r\n objects: BaseObject[];\r\n onClickAddToSubject: (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => void;\r\n}\r\n\r\nexport function AddSubjectMembers(props: AddSubjectMembersProps): React.ReactElement {\r\n return (\r\n <>\r\n <h4>{`${StringHelper.capitalizeFirstLetter(props.memberType)}`}</h4>\r\n <Table responsive>\r\n <tbody>\r\n {props.objects && props.objects.map(o =>\r\n <tr key={o.id}>\r\n <td>\r\n <AppLink appLink={SubjectMemberHelper.getMemberAppLink(props.memberType, o.id)}>{o.name}</AppLink>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n <SelectSubjects\r\n initialValues={{ subjectIds: [], addToClassifications: true }}\r\n subjectTree={props.subjectTree}\r\n saveSubjects={props.onClickAddToSubject}\r\n memberType={props.memberType}\r\n saveBtnText='Add to subject'\r\n subjectRequired\r\n />\r\n </>\r\n );\r\n}","export * from './AddSubjectMembers';","import * as React from 'react';\r\nimport { Subject, Classification } from 'libs/shared/interfaces';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SelectSubjects, PresentationSelect, SelectClassifications } from 'apps/subjects/components';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\ninterface EditObjectSubjectsProps {\r\n objectSubjects: Subject[];\r\n subjectTree: SubjectTree;\r\n saveSubjects: (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => void;\r\n memberType: SubjectMemberType;\r\n presentations: Presentation[];\r\n currentPresentation: Presentation;\r\n setCurrentPresentation: (p: Presentation) => void;\r\n classificationTree: ClassificationTree;\r\n // List of classifications mapped to a subject that the object is mapped to.\r\n objectSubjectClassifications: Classification[];\r\n objectClassifications: Classification[];\r\n saveClassifications: (classificationIds: string[], setSubmittingFalse: () => void) => void;\r\n allowedClassificationIds?: string[];\r\n}\r\n\r\nexport function EditObjectSubjects(props: EditObjectSubjectsProps): JSX.Element {\r\n const singularMemberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const allowedClassificationIds = [\r\n ...props.objectClassifications,\r\n ...props.objectSubjectClassifications\r\n ].map(c => c.id);\r\n\r\n const isClassificationDisabled = (classification: ClassificationTree) =>\r\n !allowedClassificationIds.includes(classification.id);\r\n\r\n return (\r\n <>\r\n <div className='border-bottom pb-3 mb-3'>\r\n <h6>Subjects</h6>\r\n <p>{`Select which subjects this ${singularMemberType} is mapped to.`}</p>\r\n <SelectSubjects\r\n initialValues={{ subjectIds: props.objectSubjects.map(s => s.id) }}\r\n subjectTree={props.subjectTree}\r\n saveSubjects={props.saveSubjects}\r\n memberType={props.memberType}\r\n saveBtnText='Save Subjects'\r\n allowMultiple\r\n />\r\n </div>\r\n <h6>Classifications</h6>\r\n <p>{`Select a presentation to view its classifications and map them to this ${singularMemberType}.`}</p>\r\n <div className='w-50 pb-3'>\r\n <PresentationSelect\r\n presentations={props.presentations}\r\n currentPresentation={props.currentPresentation}\r\n setCurrentPresentation={props.setCurrentPresentation}\r\n />\r\n </div>\r\n {!!props.currentPresentation &&\r\n (!!props.classificationTree && !!props.classificationTree.children.length)\r\n ? <>\r\n <p>Only classifications which are mapped to one of the subjects selected above can be selected.</p>\r\n <SelectClassifications\r\n initialValues={{ classificationIds: props.objectClassifications.map(c => c.id) }}\r\n presentationId={props.currentPresentation.id}\r\n classificationTree={props.classificationTree}\r\n saveClassifications={props.saveClassifications}\r\n isClassificationDisabled={isClassificationDisabled}\r\n />\r\n </>\r\n : <p>This presentation has no classifications.</p>\r\n }\r\n </>\r\n );\r\n}","export * from './EditObjectSubjects';","import * as React from 'react';\r\nimport { Subject } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\nimport { SubjectValidationSchema } from 'apps/subjects/utils';\r\n\r\nimport { EditSubjectDetailsForm } from './EditSubjectDetailsForm';\r\n\r\ntype RequestType = CreateOrUpdateSubjectRequest;\r\n\r\ninterface EditSubjectDetailsProps {\r\n saveSubject: (data: RequestType, onDone: () => void) => void;\r\n subjectTree: SubjectTree;\r\n subject?: Subject;\r\n}\r\n\r\nexport function EditSubjectDetails(props: EditSubjectDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<RequestType>\r\n initialValues={props.subject}\r\n validationSchema={SubjectValidationSchema}\r\n onSubmit={props.saveSubject}\r\n >\r\n <EditSubjectDetailsForm id={props.subject && props.subject.id} subjectTree={props.subjectTree} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { Button } from 'react-bootstrap';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { TreeSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TreeHelper } from 'shared/utils';\r\n\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\n\r\nconst isNodeDisabled = (subjectTree: SubjectTree, subjectId: string) =>\r\n (node: SubjectTree) => {\r\n if (node.id === subjectId)\r\n return true;\r\n\r\n const subjectNode = TreeHelper.find(subjectTree, subjectId);\r\n\r\n return !!TreeHelper.find(subjectNode, node.id);\r\n };\r\n\r\ninterface EditSubjectDetailsFormProps {\r\n id?: string;\r\n subjectTree: SubjectTree;\r\n}\r\n\r\nexport function EditSubjectDetailsForm(props: EditSubjectDetailsFormProps): React.ReactElement {\r\n const isNew = !props.id;\r\n\r\n const formikProps = useFormikContext<CreateOrUpdateSubjectRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n const collapseInitialState = !isNew || !!formikProps.values.parentId;\r\n\r\n const [ collapseParentSelect, setCollapseParentSelect ] = React.useState(collapseInitialState);\r\n\r\n React.useEffect(() => setCollapseParentSelect(collapseInitialState), [ props.id, formikProps.values.parentId ]);\r\n\r\n const onSelectParent = (item: SubjectTree) => {\r\n const newParentId = item.id === formikProps.values.parentId\r\n ? null\r\n : item.id;\r\n\r\n formikProps.setFieldValue('parentId', newParentId);\r\n };\r\n\r\n const treeSelectClassName = `${FormHelper.getCustomFormControlClassName(\r\n formikProps.errors, formikProps.touched, 'parentId')} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateSubjectRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this subject'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdateSubjectRequest> name='parentId'>\r\n {() =>\r\n <div className={treeSelectClassName}>\r\n <TreeSelect<SubjectTree>\r\n label='Parent Subject'\r\n tree={props.subjectTree}\r\n selectedIds={[formikProps.values.parentId]}\r\n onSelect={onSelectParent}\r\n collapse={collapseParentSelect}\r\n noSelectionMessage='No parent selected, this will be a root subject.'\r\n isNodeDisabled={isNodeDisabled(props.subjectTree, props.id)}\r\n />\r\n </div>\r\n }\r\n </FormField>\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_SUBJECT,\r\n args: [props.id]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditSubjectDetails';","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { SubjectsNavHelper } from 'apps/subjects/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditSubjectNavProps {\r\n subjectId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditSubjectNav({ subjectId, activeAction }: EditSubjectNavProps): React.ReactElement {\r\n return (\r\n <>\r\n <Alert variant='danger'>\r\n Warning: You are editing the backbone subjects.\r\n </Alert>\r\n <div className='py-2'>\r\n <Tabs tabs={SubjectsNavHelper.getEditSubjectTabs(subjectId)} isItemActive={isItemActive(activeAction)} />\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditSubjectNav';","export * from './add-subject-members';\r\nexport * from './edit-object-subjects';\r\nexport * from './edit-subject-details';\r\nexport * from './edit-subject-nav';\r\nexport * from './select-subjects';\r\nexport * from './subject-classifications';\r\nexport * from './subject-member-list';","import * as React from 'react';\r\nimport * as Yup from 'yup';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { TreeSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nconst getValidationSchema = (subjectRequired: boolean) => Yup.object().shape<SelectSubjectsFormValues>({\r\n subjectIds: subjectRequired\r\n ? Yup.array().of(Yup.string())\r\n .min(1, 'A subject is required')\r\n .required('A subject is required')\r\n : Yup.array().of(Yup.string()),\r\n\r\n addToClassifications: Yup.boolean()\r\n .default(true)\r\n\r\n}).noUnknown();\r\n\r\nconst getSubjectAppLink = (subjectId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [subjectId]\r\n});\r\n\r\ninterface SelectSubjectsFormValues {\r\n subjectIds: string[];\r\n addToClassifications?: boolean;\r\n}\r\n\r\ninterface SelectSubjectsFormProps {\r\n subjectTree: SubjectTree;\r\n memberType: SubjectMemberType;\r\n allowMultiple?: boolean;\r\n saveBtnText?: string;\r\n}\r\n\r\nSelectSubjectsForm.defaultProps = {\r\n saveBtnText: 'Save'\r\n};\r\n\r\nfunction SelectSubjectsForm(props: SelectSubjectsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<SelectSubjectsFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n const handleSelect = (item: SubjectTree) => {\r\n const subjectIds = props.allowMultiple\r\n ? ArrayHelper.addOrRemove(formikProps.values.subjectIds.map(id => id.toString()), item.id.toString())\r\n : [item.id];\r\n\r\n formikProps.setFieldValue('subjectIds', subjectIds);\r\n };\r\n\r\n const memberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const treeSelectClassName =\r\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'subjectIds')} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectSubjectsFormValues> name='subjectIds'>\r\n {() => (\r\n <div className={treeSelectClassName}>\r\n <TreeSelect<SubjectTree>\r\n label={`Mapped Subject${props.allowMultiple ? '(s)' : ''}`}\r\n tree={props.subjectTree}\r\n selectedIds={formikProps.values.subjectIds}\r\n onSelect={handleSelect}\r\n collapse={!!formikProps.initialValues.subjectIds.length}\r\n getSelectedItemAppLink={getSubjectAppLink}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <FormField<SelectSubjectsFormValues>\r\n label='Automatically add to classifications*'\r\n name='addToClassifications'\r\n id='add-to-classifications'\r\n type='checkbox'\r\n checked={formikProps.values.addToClassifications}\r\n />\r\n <p>\r\n <em>\r\n {\r\n `*If selected, when adding a ${memberType} to a subject, all of that subject\\'s`\r\n + ' mapped classifications across all presentations will also be added to.'\r\n }\r\n </em>\r\n </p>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {props.saveBtnText}\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectSubjectsProps {\r\n initialValues: SelectSubjectsFormValues;\r\n saveSubjects: (subjectIds: string[], addToClassifications: boolean, onDone: () => void) => void;\r\n subjectTree: SubjectTree;\r\n memberType: SubjectMemberType;\r\n subjectRequired?: boolean;\r\n allowMultiple?: boolean;\r\n saveBtnText?: string;\r\n}\r\n\r\nexport function SelectSubjects(props: SelectSubjectsProps): JSX.Element {\r\n const onSubmit = ({ subjectIds, addToClassifications }: SelectSubjectsFormValues, onDone: () => void) =>\r\n props.saveSubjects(subjectIds, addToClassifications, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectSubjectsFormValues>\r\n initialValues={props.initialValues}\r\n validationSchema={getValidationSchema(props.subjectRequired)}\r\n onSubmit={onSubmit}\r\n >\r\n <SelectSubjectsForm\r\n subjectTree={props.subjectTree}\r\n memberType={props.memberType}\r\n allowMultiple={props.allowMultiple}\r\n saveBtnText={props.saveBtnText}\r\n />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectSubjects';","import * as React from 'react';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nconst getClassificationAppLink = (presentationId: string, classificationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, classificationId ]\r\n});\r\n\r\ninterface PresentationClassificationsProps {\r\n presentation: Presentation;\r\n classifications: Classification[];\r\n}\r\n\r\nconst PresentationClassifications = (props: PresentationClassificationsProps) => (\r\n <div className='border rounded p-2 mb-3'>\r\n <h6 className='border-bottom pb-1'>{props.presentation.name}</h6>\r\n {(props.classifications && props.classifications.length)\r\n ? <ul className='list-unstyled mb-0'>\r\n {props.classifications.map(c =>\r\n <li key={c.id} className='py-1'>\r\n <AppLink appLink={getClassificationAppLink(props.presentation.id, c.id)}>\r\n {c.name}\r\n </AppLink>\r\n </li>\r\n )}\r\n </ul>\r\n : <p><em>There are no classifications mapped to this subject in this presentation.</em></p>\r\n }\r\n </div>\r\n);\r\n\r\ninterface SubjectClassificationsProps {\r\n presentations: Presentation[];\r\n classificationDictionary: { [presentationId: string]: Classification[] };\r\n}\r\n\r\nexport const SubjectClassifications = (props: SubjectClassificationsProps) => (\r\n <>\r\n {!!props.presentations && !!props.classificationDictionary && props.presentations.map(p =>\r\n <PresentationClassifications\r\n key={p.id}\r\n presentation={p}\r\n classifications={props.classificationDictionary[p.id]}\r\n />\r\n )}\r\n </>\r\n);","export * from './SubjectClassifications';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { SubjectMemberViewModel } from './SubjectMemberList';\r\n\r\ninterface SubjectMemberItemProps {\r\n member: SubjectMemberViewModel;\r\n getMemberAppLink: (memberId: string) => Core.AppLink;\r\n onToggleClassification: (classificationId: string, selected: boolean, memberId: string) => void;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function SubjectMemberItem(props: SubjectMemberItemProps): React.ReactElement {\r\n const {\r\n member: { id, name, classifications = []},\r\n getMemberAppLink,\r\n onToggleClassification,\r\n actions\r\n } = props;\r\n\r\n const appLink = FunctionHelper.isFunction(getMemberAppLink) && getMemberAppLink(id);\r\n\r\n if (classifications.length && !FunctionHelper.isFunction(onToggleClassification))\r\n Core.ErrorHelper.throw(new DevError('onToggleClassification must be passed to SubjectMemberItem'));\r\n\r\n return (\r\n <tr>\r\n <td>\r\n {appLink\r\n ? <AppLink appLink={getMemberAppLink(id)}>{name}</AppLink>\r\n : name\r\n }\r\n </td>\r\n {!!classifications.length && classifications.map(c =>\r\n <td key={c.id}>\r\n <Checkbox\r\n selected={c.selected}\r\n onToggle={(s: boolean) => onToggleClassification(c.id, s, id)}\r\n />\r\n </td>\r\n )}\r\n {actions &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={actions} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\n\r\nimport { SubjectMemberListHeader } from './SubjectMemberListHeader';\r\nimport { SubjectMemberItem } from './SubjectMemberItem';\r\n\r\nfunction allClassificationMembersSelected(\r\n memberType: SubjectMemberType,\r\n members: SubjectMemberViewModel[]\r\n): (classification: Classification) => boolean {\r\n return (classification: Classification) => {\r\n const classificationMembers = (classification as any)[memberType];\r\n\r\n const numSelectedMembers = CollectionHelper.length(classificationMembers);\r\n\r\n return !!numSelectedMembers && numSelectedMembers === members.length;\r\n };\r\n}\r\n\r\ntype ClassificationViewModel = { id: string, selected: boolean };\r\n\r\nexport interface SubjectMemberViewModel {\r\n id: string;\r\n name: string;\r\n classifications?: ClassificationViewModel[];\r\n}\r\n\r\ninterface SubjectMemberListProps {\r\n members: SubjectMemberViewModel[];\r\n memberType: SubjectMemberType;\r\n classifications: Classification[];\r\n getMemberAppLink: (memberId: string) => Core.AppLink;\r\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\r\n onToggleClassification: (classificationId: string, selected: boolean, memberId?: string) => void;\r\n getActions?: (itemId: string) => ActionOptions[];\r\n}\r\n\r\nexport function SubjectMemberList(props: SubjectMemberListProps): React.ReactElement {\r\n const {\r\n members,\r\n memberType,\r\n getActions,\r\n classifications,\r\n getClassificationAppLink,\r\n onToggleClassification,\r\n ...itemProps\r\n } = props;\r\n\r\n if (!members.length)\r\n return <div className='py-5'>{`No ${memberType} in this subject.`}</div>;\r\n\r\n const hasActions = FunctionHelper.isFunction(getActions);\r\n\r\n const headerProps = {\r\n memberType,\r\n classifications,\r\n getClassificationAppLink,\r\n getIsClassificationSelected: allClassificationMembersSelected(memberType, members),\r\n onToggleClassification,\r\n hasActions\r\n };\r\n\r\n return (\r\n <Table responsive bordered>\r\n <SubjectMemberListHeader {...headerProps} />\r\n <tbody>\r\n {members.map((member, idx) =>\r\n <SubjectMemberItem\r\n key={idx}\r\n member={member}\r\n actions={hasActions && getActions(member.id)}\r\n onToggleClassification={onToggleClassification}\r\n {...itemProps}\r\n />\r\n )}\r\n </tbody>\r\n </Table>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nconst getClassificationLabel = (c: Classification, showClassificationSubHeader: boolean) =>\r\n showClassificationSubHeader ? c.name : `Classification: ${c.name}`;\r\n\r\ninterface ClassificationHeaderColumnsProps {\r\n classifications: Classification[];\r\n getIsClassificationSelected: (classification: Classification) => boolean;\r\n onToggleClassification: (classificationId: string, selected: boolean) => void;\r\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\r\n showClassificationSubHeader: boolean;\r\n}\r\n\r\nfunction ClassificationHeaderColumns(props: ClassificationHeaderColumnsProps): React.ReactElement {\r\n return (\r\n <>\r\n {props.classifications.map(c =>\r\n <th key={c.id}>\r\n <span className='d-inline-block'>\r\n <Checkbox\r\n selected={props.getIsClassificationSelected(c)}\r\n onToggle={(selected: boolean) => props.onToggleClassification(c.id, selected)}\r\n />\r\n </span>\r\n <AppLink appLink={props.getClassificationAppLink(c.id)}>\r\n {getClassificationLabel(c, props.showClassificationSubHeader)}\r\n </AppLink>\r\n </th>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\ninterface SubjectMemberListHeaderProps {\r\n memberType: SubjectMemberType;\r\n hasActions: boolean;\r\n classifications: Classification[];\r\n getIsClassificationSelected: (classification: Classification) => boolean;\r\n onToggleClassification: (classificationId: string, selected: boolean) => void;\r\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\r\n}\r\n\r\nexport function SubjectMemberListHeader(props: SubjectMemberListHeaderProps): React.ReactElement {\r\n const { memberType, hasActions, classifications, ...otherProps } = props;\r\n\r\n const memberHeading =\r\n `${StringHelper.capitalizeFirstLetter(SubjectMemberHelper.singularizeMemberType(memberType))} Name`;\r\n\r\n const hasClassifications = !!classifications && !!classifications.length;\r\n\r\n const showClassificationSubHeader = hasClassifications && classifications.length > 1;\r\n\r\n const rowSpan = hasClassifications ? 2 : 1;\r\n\r\n const classificationColumnsProps = { classifications, showClassificationSubHeader, ...otherProps };\r\n\r\n return (\r\n <thead>\r\n <tr>\r\n <th rowSpan={rowSpan}>{memberHeading}</th>\r\n {hasClassifications && (showClassificationSubHeader\r\n ? <th colSpan={classifications.length} className='text-center'>Classifications</th>\r\n : <ClassificationHeaderColumns {...classificationColumnsProps} />\r\n )}\r\n {hasActions && <th rowSpan={rowSpan}></th>}\r\n </tr>\r\n {hasClassifications && showClassificationSubHeader &&\r\n <tr>\r\n <ClassificationHeaderColumns {...classificationColumnsProps} />\r\n </tr>\r\n }\r\n </thead>\r\n );\r\n}","export * from './SubjectMemberList';","import * as React from 'react';\r\nimport { Navbar, Nav, Container } from 'react-bootstrap';\r\nimport { Core } from 'libs/common/core';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { NavHelper } from 'shared/utils';\r\n\r\nexport interface TopNavProps {\r\n navItems: NavItem[];\r\n currentAppLink: Core.AppLink;\r\n}\r\n\r\nexport function TopNav({ navItems, currentAppLink }: TopNavProps): React.ReactElement {\r\n return (\r\n <Container>\r\n <Navbar className='justify-content-between align-items-center'>\r\n <Nav>\r\n {!!navItems && navItems.map((item, idx) =>\r\n <Nav.Item key={idx}>\r\n <AppLink\r\n appLink={item.appLink}\r\n className={`nav-link${NavHelper.isItemActive(item, currentAppLink) ? ' text-primary' : ''}`}\r\n >\r\n {item.label}\r\n </AppLink>\r\n </Nav.Item>\r\n )}\r\n </Nav>\r\n </Navbar>\r\n </Container>\r\n );\r\n}","export * from './TopNav';","import * as React from 'react';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\ntype IPresentationContent = [ Presentation, React.Dispatch<React.SetStateAction<Presentation>> ];\r\n\r\nexport const PresentationContext = React.createContext<IPresentationContent>(undefined);\r\n\r\nexport function PresentationContextProvider({ children }: React.PropsWithChildren<{}>): React.ReactElement {\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n return (\r\n <PresentationContext.Provider value={[ presentation, setPresentation ]}>\r\n {children}\r\n </PresentationContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider, UserContextProvider } from 'shared/context';\r\n\r\nimport { PresentationContextProvider } from 'apps/subjects/context';\r\n\r\nexport const SubjectsAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <UserContextProvider>\r\n <PresentationContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </PresentationContextProvider>\r\n </UserContextProvider>\r\n);","export * from './PresentationContext';\r\nexport * from './SubjectsAppContext';","export enum SubjectMemberType {\r\n Playlists = 'playlists',\r\n Series = 'series',\r\n Videos = 'videos'\r\n}\r\n\r\nexport enum LevelMemberType {\r\n Playlists = 'playlists',\r\n Series = 'series',\r\n Videos = 'videos'\r\n}","export enum OwnerType {\r\n Subject,\r\n Classification,\r\n Level\r\n}","export enum SubjectNodeType {\r\n Root = '0'\r\n}\r\n\r\nexport enum ClassificationNodeType {\r\n Root = 'root'\r\n}","export * from './OwnerType';\r\nexport * from './ObjectMemberType';\r\nexport * from './SubjectNodeType';","import * as React from 'react';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\ninterface StateWithPresentations {\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n}\r\n\r\nexport function useSetDefaultPresentation<T extends StateWithPresentations>(\r\n state: T, setState: React.Dispatch<React.SetStateAction<T>>\r\n): void {\r\n React.useEffect(() => {\r\n // If there is already a current presentation, we don't want to set a default.\r\n if (!state.presentations || state.currentPresentation)\r\n return;\r\n\r\n // Set the first presentation.\r\n StateHelper.getSetStateByKey(setState, 'currentPresentation')(ArrayHelper.first(state.presentations));\r\n }, [state.presentations]);\r\n}","export * from './UseSetDefaultPresentation';","import { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\nimport { FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\nimport {\r\n Subject,\r\n BasePaginatedCollection,\r\n BaseObject,\r\n Classification,\r\n PresentationAudience,\r\n Audience\r\n} from 'libs/shared/interfaces';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\nimport {\r\n SubjectTree,\r\n Presentation,\r\n ClassificationTree,\r\n CreateOrUpdatePresentationRequest,\r\n CreateClassificationRequest,\r\n UpdateClassificationRequest,\r\n CreateOrUpdateSubjectRequest,\r\n CreateOrUpdateLevelRequest,\r\n CreateOrUpdateAudienceRequest\r\n} from 'apps/subjects/interfaces';\r\n\r\nimport { SubjectNodeType, ClassificationNodeType, SubjectMemberType, LevelMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper, LevelMemberHelper } from 'apps/subjects/utils';\r\nimport { Level } from 'apps/subjects/interfaces';\r\n\r\nconst endpoints = {\r\n getSubjectTree: () => `/api/subjects/v1/subjects/tree`,\r\n\r\n getSubject: (id: string) => `/api/subjects/v1/subjects/${id}`,\r\n\r\n getSubjectMembers: (id: string, memberType: SubjectMemberType) =>\r\n `/api/subjects/v1/subjects/${id}/${memberType}?query={limit:100}`,\r\n\r\n getSubjectClassifications: (subjectId: string, presentationId?: string, memberType?: SubjectMemberType) => {\r\n let url = `/api/subjects/v1/subjects/${subjectId}/classifications`;\r\n\r\n const params = [];\r\n\r\n if (presentationId)\r\n params.push(`presentationId=${presentationId}`);\r\n\r\n if (memberType)\r\n params.push(`query=${memberType}{limit:100}`);\r\n\r\n if (!params.length)\r\n return url;\r\n\r\n return `${url}?${params.join('&')}`;\r\n },\r\n\r\n createSubject: () => `/api/subjects/v1/subjects`,\r\n\r\n updateSubject: (id: string) => `/api/subjects/v1/subjects/${id}`,\r\n\r\n deleteSubject: (id: string) => `/api/subjects/v1/subjects/${id}`,\r\n\r\n getObjectSubjects: (id: string) => `/api/subjects/v1/objects/${id}/subjects`,\r\n\r\n updateObjectSubjects: (id: string, addToClassifications?: boolean) =>\r\n `/api/subjects/v1/objects/${id}/subjects?addToClassifications=${!!addToClassifications}`,\r\n\r\n addObjectsToSubject: (subjectId: string, addToClassifications?: boolean) =>\r\n `/api/subjects/v1/subjects/${subjectId}/objects?addToClassifications=${!!addToClassifications}`,\r\n\r\n removeObjectsFromSubject: (subjectId: string, objectIds: string[]) =>\r\n `/api/subjects/v1/subjects/${subjectId}/objects?${objectIds.map(id => `objectId=${id}`).join('&')}`,\r\n\r\n getPresentations: () => `/api/subjects/v1/presentations`,\r\n\r\n getPresentation: (id: string) => `/api/subjects/v1/presentations/${id}`,\r\n\r\n createPresentation: () => `/api/subjects/v1/presentations`,\r\n\r\n updatePresentation: (id: string) => `/api/subjects/v1/presentations/${id}`,\r\n\r\n getClassificationTree: (presentationId: string) =>\r\n `/api/subjects/v1/presentations/${presentationId}/classifications/tree`,\r\n\r\n getClassification: (id: string) => `/api/subjects/v1/classifications/${id}?query=cover,banner`,\r\n\r\n getClassificationMembers: (id: string, memberType: SubjectMemberType) =>\r\n `/api/subjects/v1/classifications/${id}/${memberType}?query={limit:100}`,\r\n\r\n createClassification: () => `/api/subjects/v1/classifications`,\r\n\r\n updateClassification: (id: string) => `/api/subjects/v1/classifications/${id}`,\r\n\r\n deleteClassification: (id: string) => `/api/subjects/v1/classifications/${id}`,\r\n\r\n getObjectClassifications: (id: string) => `/api/subjects/v1/objects/${id}/classifications`,\r\n\r\n updateObjectClassifications: (id: string, presentationId: string) =>\r\n `/api/subjects/v1/objects/${id}/classifications?presentationId=${presentationId}`,\r\n\r\n addObjectsToClassification: (classificationId: string) =>\r\n `/api/subjects/v1/classifications/${classificationId}/objects`,\r\n\r\n removeObjectsFromClassification: (classificationId: string, objectIds: string[]) =>\r\n `/api/subjects/v1/classifications/${classificationId}/objects?${objectIds.map(id => `objectId=${id}`).join('&')}`,\r\n\r\n getLevels: () => `/api/subjects/v1/levels`,\r\n\r\n getLevel: (id: string) => `/api/subjects/v1/levels/${id}`,\r\n\r\n getLevelAudiences: (levelId: string, presentationId?: string) => {\r\n let url = `/api/subjects/v1/levels/${levelId}/audiences`;\r\n\r\n return presentationId ? `${url}?presentationId=${presentationId}` : url;\r\n },\r\n\r\n createLevel: () => `/api/subjects/v1/levels`,\r\n\r\n updateLevel: (id: string) => `/api/subjects/v1/levels/${id}`,\r\n\r\n getObjectLevels: (id: string) => `/api/subjects/v1/objects/${id}/levels`,\r\n\r\n updateObjectLevels: (id: string, addToAudiences?: boolean) =>\r\n `/api/subjects/v1/objects/${id}/levels?addToAudiences=${!!addToAudiences}`,\r\n\r\n addObjectsToLevel: (levelId: string, addToAudiences?: boolean) =>\r\n `/api/subjects/v1/levels/${levelId}/objects?addToAudiences=${!!addToAudiences}`,\r\n\r\n removeObjectsFromLevel: (levelId: string, objectIds: string[]) =>\r\n `/api/subjects/v1/levels/${levelId}/objects?${objectIds.map(id => `objectId=${id}`).join('&')}`,\r\n\r\n getAudiences: (presentationId: string) => `/api/subjects/v1/presentations/${presentationId}/audiences`,\r\n\r\n getAudience: (id: string) => `/api/subjects/v1/audiences/${id}`,\r\n\r\n createAudience: () => `/api/subjects/v1/audiences`,\r\n\r\n updateAudience: (id: string) => `/api/subjects/v1/audiences/${id}`,\r\n\r\n deleteAudience: (id: string) => `/api/subjects/v1/audiences/${id}`,\r\n\r\n getObjectAudiences: (id: string) => `/api/subjects/v1/objects/${id}/audiences`,\r\n\r\n updateObjectAudiences: (id: string, presentationId: string) =>\r\n `/api/subjects/v1/objects/${id}/audiences?presentationId=${presentationId}`\r\n};\r\n\r\nconst getSubjectClassificationsEventPrefix = (\r\n subjectId: string, presentationId?: string, memberType?: SubjectMemberType\r\n) => {\r\n let eventPrefix = `${DataPrefixes.SUBJECT}:${subjectId}`;\r\n\r\n if (presentationId)\r\n eventPrefix += `:${presentationId}`;\r\n\r\n eventPrefix += `:${DataPrefixes.CLASSIFICATIONS}`;\r\n\r\n if (memberType)\r\n eventPrefix += `:${memberType}`;\r\n\r\n return eventPrefix;\r\n};\r\n\r\nconst getLevelAudiencesEventPrefix = (\r\n levelId: string, presentationId?: string\r\n) => {\r\n let eventPrefix = `${DataPrefixes.LEVEL}:${levelId}`;\r\n\r\n if (presentationId)\r\n eventPrefix += `:${presentationId}`;\r\n\r\n eventPrefix += `:${DataPrefixes.AUDIENCES}`;\r\n\r\n return eventPrefix;\r\n};\r\n\r\nexport class SubjectDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.SUBJECT;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.SUBJECT;\r\n }\r\n\r\n public getPresentations(callback?: (data: Presentation[]) => void, errorCallback?: () => void): Presentation[] {\r\n return this.get<Presentation[]>({\r\n resource: endpoints.getPresentations(),\r\n eventPrefix: DataPrefixes.PRESENTATIONS,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getPresentation(\r\n id: string, callback?: (data: Presentation) => void, errorCallback?: () => void\r\n ): Presentation {\r\n return this.get<Presentation>({\r\n resource: endpoints.getPresentation(id),\r\n eventPrefix: `${DataPrefixes.PRESENTATION}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createPresentation(\r\n data: CreateOrUpdatePresentationRequest,\r\n callback?: (data: Presentation) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create<Presentation>({\r\n resource: endpoints.createPresentation(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.PRESENTATION,\r\n invalidationKeys: [DataPrefixes.PRESENTATIONS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created presentation.'),\r\n errorHandler: this.alertService.error('Failed to create presentation.')\r\n });\r\n }\r\n\r\n public updatePresentation(\r\n id: string,\r\n data: CreateOrUpdatePresentationRequest,\r\n callback?: (data: Presentation) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Presentation>({\r\n resource: endpoints.updatePresentation(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_PRESENTATION}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.PRESENTATION}:${id}`, DataPrefixes.PRESENTATIONS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated presentation.'),\r\n errorHandler: this.alertService.error('Failed to update presentation.')\r\n });\r\n }\r\n\r\n public getSubjectTree(callback?: (data: SubjectTree) => void, errorCallback?: () => void): SubjectTree {\r\n return this.get<SubjectTree>({\r\n resource: endpoints.getSubjectTree(),\r\n formatData: (response: any) => ({ children: response, name: SubjectNodeType.Root, id: null }),\r\n eventPrefix: DataPrefixes.SUBJECTS,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSubject(\r\n id: string, callback?: (data: Subject) => void, errorCallback?: () => void\r\n ): Subject {\r\n return this.get<Subject>({\r\n resource: endpoints.getSubject(id),\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSubjectMemberIds(\r\n subjectId: string, memberType: SubjectMemberType, callback?: (data: string[]) => void, errorCallback?: () => void\r\n ): string[] {\r\n return this.get<string[]>({\r\n resource: endpoints.getSubjectMembers(subjectId, memberType),\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSubjectClassifications(\r\n subjectId: string,\r\n presentationId?: string,\r\n memberType?: SubjectMemberType,\r\n callback?: (data: Classification[]) => void,\r\n errorCallback?: () => void\r\n ): Classification[] {\r\n return this.get<Classification[]>({\r\n resource: endpoints.getSubjectClassifications(subjectId, presentationId, memberType),\r\n eventPrefix: getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType),\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createSubject(\r\n data: CreateOrUpdateSubjectRequest,\r\n callback?: (data: Subject) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create<Subject>({\r\n resource: endpoints.createSubject(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.SUBJECT,\r\n invalidationKeys: [DataPrefixes.SUBJECTS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created subject.'),\r\n errorHandler: this.alertService.error('Failed to create subject.')\r\n });\r\n }\r\n\r\n public updateSubject(\r\n id: string,\r\n data: CreateOrUpdateSubjectRequest,\r\n callback?: (data: Subject) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Subject>({\r\n resource: endpoints.updateSubject(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_SUBJECT}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.SUBJECT}:${id}`, DataPrefixes.SUBJECTS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated subject.'),\r\n errorHandler: this.alertService.error('Failed to save subject.')\r\n });\r\n }\r\n\r\n public deleteSubject(id: string, callback?: () => void, errorCallback?: () => void): void {\r\n const errorHandler = (error: DataServiceError) => {\r\n const errorMessage = error?.code === HttpStatus.Conflict\r\n ? 'Cannot delete a subject with child subjects and/or classifications.'\r\n : 'Failed to delete subject.';\r\n\r\n this.alertService.error(errorMessage)();\r\n };\r\n\r\n return this.delete({\r\n resource: endpoints.deleteSubject(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_SUBJECT,\r\n invalidationKeys: [ `${DataPrefixes.SUBJECT}:${id}`, DataPrefixes.SUBJECTS ],\r\n successHandler: this.alertService.success('Successfully deleted subject.'),\r\n errorHandler\r\n });\r\n }\r\n\r\n public getObjectSubjects(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: Subject[]) => void,\r\n errorCallback?: () => void\r\n ): Subject[] {\r\n return this.get<Subject[]>({\r\n resource: endpoints.getObjectSubjects(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.SUBJECTS}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectSubjects(\r\n objectId: string,\r\n subjectIds: string[],\r\n memberType: SubjectMemberType,\r\n addToClassifications?: boolean,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n const invalidationKeys = [`${memberType}:${objectId}:${DataPrefixes.SUBJECTS}`];\r\n\r\n if (addToClassifications)\r\n invalidationKeys.push(`${memberType}:${objectId}:${DataPrefixes.CLASSIFICATIONS}`);\r\n\r\n invalidationKeys.push(...subjectIds.map(id => `${DataPrefixes.SUBJECTS}:${id}:${memberType}`));\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectSubjects(objectId, addToClassifications),\r\n data: subjectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_SUBJECTS}:${objectId}`,\r\n invalidationKeys,\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} subjects.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} subjects.`)\r\n });\r\n }\r\n\r\n public addObjectsToSubject(\r\n subjectId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n addToClassifications?: boolean,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [\r\n `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.SUBJECTS}`),\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`)\r\n ];\r\n\r\n return this.create({\r\n resource: endpoints.addObjectsToSubject(subjectId, addToClassifications),\r\n data: objectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.ADD_TO_SUBJECT}:${subjectId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully added ${alertMemberName} to subject.`),\r\n errorHandler: this.alertService.error(`Failed to add ${alertMemberName} to subject.`)\r\n });\r\n }\r\n\r\n public removeObjectsFromSubject(\r\n subjectId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [\r\n `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.SUBJECTS}`)\r\n ];\r\n\r\n return this.delete({\r\n resource: endpoints.removeObjectsFromSubject(subjectId, objectIds),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.REMOVE_FROM_SUBJECT}:${subjectId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully removed ${alertMemberName} from subject.`),\r\n errorHandler: this.alertService.error(`Failed to remove ${alertMemberName} from subject.`)\r\n });\r\n }\r\n\r\n public getClassificationTree(\r\n presentationId: string, callback?: (data: ClassificationTree) => void, errorCallback?: () => void\r\n ): ClassificationTree {\r\n return this.get<ClassificationTree>({\r\n resource: endpoints.getClassificationTree(presentationId),\r\n formatData: (response: any) => ({ children: response, name: ClassificationNodeType.Root, id: null }),\r\n eventPrefix: `${DataPrefixes.CLASSIFICATIONS}:${presentationId}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getClassification(\r\n id: string, callback?: (data: Classification) => void, errorCallback?: () => void\r\n ): Classification {\r\n return this.get<Classification>({\r\n resource: endpoints.getClassification(id),\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getClassificationMembers(\r\n classificationId: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: BasePaginatedCollection<BaseObject>) => void,\r\n errorCallback?: () => void\r\n ): BasePaginatedCollection<BaseObject> {\r\n return this.get<BasePaginatedCollection<BaseObject>>({\r\n resource: endpoints.getClassificationMembers(classificationId, memberType),\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createClassification(\r\n data: CreateClassificationRequest,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create<Classification>({\r\n resource: endpoints.createClassification(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.CLASSIFICATION,\r\n invalidationKeys: [DataPrefixes.CLASSIFICATIONS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created classification.'),\r\n errorHandler: this.alertService.error('Failed to create classification.')\r\n });\r\n }\r\n\r\n public updateClassification(\r\n id: string,\r\n data: UpdateClassificationRequest,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Classification>({\r\n resource: endpoints.updateClassification(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_CLASSIFICATION}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.CLASSIFICATION}:${id}`, DataPrefixes.CLASSIFICATIONS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated classification.'),\r\n errorHandler: this.alertService.error('Failed to save classification.')\r\n });\r\n }\r\n\r\n public deleteClassification(id: string, callback?: () => void, errorCallback?: () => void): void {\r\n return this.delete({\r\n resource: endpoints.deleteClassification(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_CLASSIFICATION,\r\n invalidationKeys: [ `${DataPrefixes.CLASSIFICATION}:${id}`, DataPrefixes.CLASSIFICATIONS ],\r\n successHandler: this.alertService.success('Successfully deleted classification'),\r\n errorHandler: this.alertService.error('Failed to delete classification')\r\n });\r\n }\r\n\r\n public getObjectClassifications(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: Classification[]) => void,\r\n errorCallback?: () => void\r\n ): Level[] {\r\n return this.get<Classification[]>({\r\n resource: endpoints.getObjectClassifications(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectClassifications(\r\n objectId: string,\r\n presentationId: string,\r\n classificationIds: string[],\r\n memberType: SubjectMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n const invalidationKeys = [`${memberType}:${objectId}:${DataPrefixes.CLASSIFICATIONS}`];\r\n\r\n invalidationKeys.push(...classificationIds.map(id => `${DataPrefixes.CLASSIFICATION}:${id}:${memberType}`));\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectClassifications(objectId, presentationId),\r\n data: classificationIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_CLASSIFICATIONS}:${objectId}`,\r\n invalidationKeys,\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} classifications.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} classifications.`)\r\n });\r\n }\r\n\r\n public addObjectsToClassification(\r\n classificationId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n subjectId?: string,\r\n presentationId?: string,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [`${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`];\r\n\r\n if (subjectId)\r\n invalidationKeys.push(getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType));\r\n\r\n invalidationKeys.push(...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`));\r\n\r\n return this.create({\r\n resource: endpoints.addObjectsToClassification(classificationId),\r\n data: objectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.ADD_TO_CLASSIFICATION}:${classificationId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully added ${alertMemberName} to classification.`),\r\n errorHandler: this.alertService.error(`Failed to add ${alertMemberName} to classification.`)\r\n });\r\n }\r\n\r\n public removeObjectsFromClassification(\r\n classificationId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n subjectId?: string,\r\n presentationId?: string,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [`${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`];\r\n\r\n if (subjectId)\r\n invalidationKeys.push(getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType));\r\n\r\n invalidationKeys.push(...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`));\r\n\r\n return this.delete({\r\n resource: endpoints.removeObjectsFromClassification(classificationId, objectIds),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.REMOVE_FROM_CLASSIFICATION}:${classificationId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully removed ${alertMemberName} from classification.`),\r\n errorHandler: this.alertService.error(`Failed to remove ${alertMemberName} from classification.`)\r\n });\r\n }\r\n\r\n public getLevels(callback?: (data: Level[]) => void, errorCallback?: () => void): Level[] {\r\n return this.get<Level[]>({\r\n resource: endpoints.getLevels(),\r\n eventPrefix: DataPrefixes.LEVELS,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getLevel(id: string, callback?: (data: Level) => void, errorCallback?: () => void): Level {\r\n return this.get<Level>({\r\n resource: endpoints.getLevel(id),\r\n eventPrefix: `${DataPrefixes.LEVEL}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getLevelAudiences(\r\n subjectId: string,\r\n presentationId?: string,\r\n callback?: (data: Audience[]) => void,\r\n errorCallback?: () => void\r\n ): Audience[] {\r\n return this.get<Audience[]>({\r\n resource: endpoints.getLevelAudiences(subjectId, presentationId),\r\n eventPrefix: getLevelAudiencesEventPrefix(subjectId, presentationId),\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createLevel(\r\n data: CreateOrUpdateLevelRequest, callback?: (data: Level) => void, errorCallback?: () => void\r\n ): void {\r\n return this.create<Level>({\r\n resource: endpoints.createLevel(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.LEVEL,\r\n invalidationKeys: [DataPrefixes.LEVELS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created level.'),\r\n errorHandler: this.alertService.error('Failed to create level.')\r\n });\r\n }\r\n\r\n public updateLevel(\r\n id: string,\r\n data: CreateOrUpdateLevelRequest,\r\n callback?: (data: Level) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Level>({\r\n resource: endpoints.updateLevel(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_LEVEL}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.LEVEL}:${id}`, DataPrefixes.LEVELS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated level.'),\r\n errorHandler: this.alertService.error('Failed to save level.')\r\n });\r\n }\r\n\r\n public getObjectLevels(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: Level[]) => void,\r\n errorCallback?: () => void\r\n ): Level[] {\r\n return this.get<Level[]>({\r\n resource: endpoints.getObjectLevels(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.LEVELS}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectLevels(\r\n objectId: string,\r\n levelsIds: string[],\r\n memberType: SubjectMemberType,\r\n addToAudiences?: boolean,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n const invalidationKeys = [`${memberType}:${objectId}:${DataPrefixes.LEVELS}`];\r\n\r\n if (addToAudiences)\r\n invalidationKeys.push(`${memberType}:${objectId}:${DataPrefixes.AUDIENCES}`);\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectLevels(objectId, addToAudiences),\r\n data: levelsIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_LEVELS}:${objectId}`,\r\n invalidationKeys,\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} levels.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} levels.`)\r\n });\r\n }\r\n\r\n public addObjectsToLevel(\r\n levelId: string,\r\n objectIds: string[],\r\n memberType: LevelMemberType,\r\n addToAudiences?: boolean,\r\n callback?: (data: Audience) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? LevelMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [\r\n `${DataPrefixes.LEVEL}:${levelId}:${memberType}`,\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.LEVELS}`),\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.AUDIENCES}`)\r\n ];\r\n\r\n return this.create({\r\n resource: endpoints.addObjectsToLevel(levelId, addToAudiences),\r\n data: objectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.ADD_TO_LEVEL}:${levelId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully added ${alertMemberName} to level.`),\r\n errorHandler: this.alertService.error(`Failed to add ${alertMemberName} to level.`)\r\n });\r\n }\r\n\r\n public removeObjectsFromLevel(\r\n levelId: string,\r\n objectIds: string[],\r\n memberType: LevelMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? LevelMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [\r\n `${DataPrefixes.LEVEL}:${levelId}:${memberType}`,\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.LEVELS}`)\r\n ];\r\n\r\n return this.delete({\r\n resource: endpoints.removeObjectsFromLevel(levelId, objectIds),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.REMOVE_FROM_LEVEL}:${levelId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully removed ${alertMemberName} from level.`),\r\n errorHandler: this.alertService.error(`Failed to remove ${alertMemberName} from level.`)\r\n });\r\n }\r\n\r\n public getAudiences(\r\n presentationId: string, callback?: (data: PresentationAudience[]) => void, errorCallback?: () => void\r\n ): PresentationAudience[] {\r\n return this.get<PresentationAudience[]>({\r\n resource: endpoints.getAudiences(presentationId),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.AUDIENCES}:${presentationId}`,\r\n expiryTime: CacheDurations.STANDARD\r\n });\r\n }\r\n\r\n public getAudience(\r\n id: string, callback?: (data: PresentationAudience) => void, errorCallback?: () => void\r\n ): PresentationAudience {\r\n return this.get<PresentationAudience>({\r\n resource: endpoints.getAudience(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.AUDIENCE}:${id}`,\r\n expiryTime: CacheDurations.STANDARD\r\n });\r\n }\r\n\r\n public createAudience(\r\n data: CreateOrUpdateAudienceRequest, callback?: (data: PresentationAudience) => void, errorCallback?: () => void\r\n ): void {\r\n return this.create<PresentationAudience>({\r\n resource: endpoints.createAudience(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.AUDIENCE,\r\n invalidationKeys: [DataPrefixes.AUDIENCES],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created audience.'),\r\n errorHandler: this.alertService.error('Failed to create audience.')\r\n });\r\n }\r\n\r\n public updateAudience(\r\n id: string,\r\n data: CreateOrUpdateAudienceRequest,\r\n callback?: (data: PresentationAudience) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<PresentationAudience>({\r\n resource: endpoints.updateAudience(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_AUDIENCE}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.AUDIENCE}:${id}`, DataPrefixes.AUDIENCES ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated audience.'),\r\n errorHandler: this.alertService.error('Failed to update audience.')\r\n });\r\n }\r\n\r\n public deleteAudience(id: string, callback?: () => void, errorCallback?: () => void): void {\r\n return this.delete({\r\n resource: endpoints.deleteAudience(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_AUDIENCE,\r\n invalidationKeys: [ `${DataPrefixes.AUDIENCE}:${id}`, DataPrefixes.AUDIENCES ],\r\n successHandler: this.alertService.success('Successfully deleted audience'),\r\n errorHandler: this.alertService.error('Failed to delete audience')\r\n });\r\n }\r\n\r\n public getObjectAudiences(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: PresentationAudience[]) => void,\r\n errorCallback?: () => void\r\n ): PresentationAudience[] {\r\n return this.get<PresentationAudience[]>({\r\n resource: endpoints.getObjectAudiences(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.AUDIENCES}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectAudiences(\r\n objectId: string,\r\n presentationId: string,\r\n audienceIds: string[],\r\n memberType: SubjectMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectAudiences(objectId, presentationId),\r\n data: audienceIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_AUDIENCES}:${objectId}`,\r\n invalidationKeys: [`${memberType}:${objectId}:${DataPrefixes.AUDIENCES}`],\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} audiences.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} audiences.`)\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: DataServices.SUBJECT,\r\n dataChannelName: DataChannels.SUBJECT\r\n};\r\n\r\nexport const SubjectDataServiceHelper = {\r\n getSubjectTreeFetchOptions: (\r\n setData: (data: SubjectTree) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.SUBJECTS,\r\n fetchData: (d: SubjectDataService) => d.getSubjectTree(),\r\n setData,\r\n onError\r\n }),\r\n\r\n getSubjectFetchOptions: (\r\n id: string, setData: (data: Subject) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getSubject(id),\r\n setData,\r\n onError,\r\n deleteEventPrefix: DataPrefixes.DELETE_SUBJECT\r\n }),\r\n\r\n getSubjectMemberIdsFetchOptions: (\r\n subjectId: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: string[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n fetchData: (d: SubjectDataService) => d.getSubjectMemberIds(subjectId, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getSubjectClassificationFetchOptions: (\r\n subjectId: string,\r\n setData: (data: Classification[]) => void,\r\n presentationId?: string,\r\n memberType?: SubjectMemberType,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType),\r\n fetchData: (d: SubjectDataService) => d.getSubjectClassifications(subjectId, presentationId, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectSubjectsFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: Subject[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.SUBJECTS}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectSubjects(id, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getPresentationsFetchOptions: (\r\n setData: (data: Presentation[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.PRESENTATIONS,\r\n fetchData: (d: SubjectDataService) => d.getPresentations(),\r\n setData,\r\n onError\r\n }),\r\n\r\n getPresentationFetchOptions: (\r\n id: string, setData: (data: Presentation) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.PRESENTATION}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getPresentation(id),\r\n setData,\r\n onError\r\n }),\r\n\r\n getClassificationTreeFetchOptions: (\r\n presentationId: string, setData: (data: ClassificationTree) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.CLASSIFICATIONS}:${presentationId}`,\r\n fetchData: (d: SubjectDataService) => d.getClassificationTree(presentationId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getClassificationFetchOptions: (\r\n id: string, setData: (data: Classification) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getClassification(id),\r\n setData,\r\n onError,\r\n deleteEventPrefix: DataPrefixes.DELETE_CLASSIFICATION\r\n }),\r\n\r\n getClassificationMembersFetchOptions: (\r\n classificationId: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: BasePaginatedCollection<BaseObject>) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`,\r\n fetchData: (d: SubjectDataService) => d.getClassificationMembers(classificationId, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectClassificationsFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: Classification[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectClassifications(id, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getLevelsFetchOptions: (\r\n setData: (data: Level[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.LEVELS,\r\n fetchData: (d: SubjectDataService) => d.getLevels(),\r\n setData,\r\n onError\r\n }),\r\n\r\n getLevelFetchOptions: (\r\n levelId: string, setData: (data: Level) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.LEVEL}:${levelId}`,\r\n fetchData: (d: SubjectDataService) => d.getLevel(levelId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getLevelAudiencesFetchOptions: (\r\n levelId: string,\r\n setData: (data: Audience[]) => void,\r\n presentationId?: string,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: getSubjectClassificationsEventPrefix(levelId, presentationId),\r\n fetchData: (d: SubjectDataService) => d.getLevelAudiences(levelId, presentationId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectLevelsFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: Level[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.LEVELS}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectLevels(id, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getAudiencesFetchOptions: (\r\n presentationId: string, setData: (data: PresentationAudience[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.AUDIENCES}:${presentationId}`,\r\n fetchData: (d: SubjectDataService) => d.getAudiences(presentationId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getAudienceFetchOptions: (\r\n id: string, setData: (data: PresentationAudience) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.AUDIENCE}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getAudience(id),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectAudiencesFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: PresentationAudience[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.AUDIENCES}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectAudiences(id, memberType),\r\n setData,\r\n onError\r\n })\r\n};","export * from './SubjectDataService';","import { Core } from 'libs/common/core';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { LevelMemberType, OwnerType } from 'apps/subjects/enums';\r\n\r\nexport const LevelMemberHelper = {\r\n singularizeMemberType(memberType: LevelMemberType): string {\r\n switch (memberType) {\r\n case LevelMemberType.Playlists:\r\n return 'playlist';\r\n\r\n case LevelMemberType.Series:\r\n return 'series';\r\n\r\n case LevelMemberType.Videos:\r\n return 'video';\r\n }\r\n },\r\n\r\n getMemberAppLink(memberType: LevelMemberType, memberId: string): Core.AppLink {\r\n const args = [memberId];\r\n\r\n switch (memberType) {\r\n case LevelMemberType.Playlists:\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.EDIT_PLAYLIST,\r\n args\r\n };\r\n\r\n case LevelMemberType.Series:\r\n return {\r\n application: AppChannels.SERIES,\r\n action: Actions.Series.EDIT_SERIES,\r\n args\r\n };\r\n\r\n case LevelMemberType.Videos:\r\n return {\r\n application: AppChannels.VIDEOS,\r\n action: Actions.Videos.EDIT_VIDEO,\r\n args\r\n };\r\n }\r\n },\r\n\r\n getMemberActions(\r\n subjectId: string, ownerType: OwnerType, memberType: LevelMemberType, memberId: string\r\n ): ActionOptions[] {\r\n return [\r\n {\r\n label: `Remove ${LevelMemberHelper.singularizeMemberType(memberType)}`,\r\n appLink: {\r\n application: AppChannels.SUBJECTS,\r\n action: ownerType === OwnerType.Subject\r\n ? Actions.Subjects.REMOVE_LEVEL_MEMBER\r\n : Actions.Subjects.REMOVE_AUDIENCE_MEMBER,\r\n args: [ subjectId, memberId, memberType ]\r\n },\r\n className: 'text-danger'\r\n }\r\n ];\r\n }\r\n};","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nexport const LevelsNavHelper = {\r\n getEditLevelTabs(levelId: string): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Edit Level Details',\r\n appLink: { application, action: actions.EDIT_LEVEL, args: [levelId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.LEVEL_AUDIENCES, args: [levelId]}\r\n },\r\n {\r\n label: 'Playlists',\r\n appLink: { application, action: actions.EDIT_LEVEL_PLAYLISTS, args: [levelId]}\r\n },\r\n {\r\n label: 'Series',\r\n appLink: { application, action: actions.EDIT_LEVEL_SERIES, args: [levelId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_LEVEL_VIDEOS, args: [levelId]}\r\n }\r\n ];\r\n }\r\n};","import { Core } from 'libs/common/core';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectMemberType, OwnerType } from 'apps/subjects/enums';\r\n\r\nexport const SubjectMemberHelper = {\r\n singularizeMemberType(memberType: SubjectMemberType): string {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return 'playlist';\r\n\r\n case SubjectMemberType.Series:\r\n return 'series';\r\n\r\n case SubjectMemberType.Videos:\r\n return 'video';\r\n }\r\n },\r\n\r\n getMemberAppLink(memberType: SubjectMemberType, memberId: string): Core.AppLink {\r\n const args = [memberId];\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.EDIT_PLAYLIST,\r\n args\r\n };\r\n\r\n case SubjectMemberType.Series:\r\n return {\r\n application: AppChannels.SERIES,\r\n action: Actions.Series.EDIT_SERIES,\r\n args\r\n };\r\n\r\n case SubjectMemberType.Videos:\r\n return {\r\n application: AppChannels.VIDEOS,\r\n action: Actions.Videos.EDIT_VIDEO,\r\n args\r\n };\r\n }\r\n },\r\n\r\n getMemberActions(\r\n subjectId: string, ownerType: OwnerType, memberType: SubjectMemberType, memberId: string\r\n ): ActionOptions[] {\r\n return [\r\n {\r\n label: `Remove ${SubjectMemberHelper.singularizeMemberType(memberType)}`,\r\n appLink: {\r\n application: AppChannels.SUBJECTS,\r\n action: ownerType === OwnerType.Subject\r\n ? Actions.Subjects.REMOVE_SUBJECT_MEMBER\r\n : Actions.Subjects.REMOVE_CLASSIFICATION_MEMBER,\r\n args: [ subjectId, memberId, memberType ]\r\n },\r\n className: 'text-danger'\r\n }\r\n ];\r\n }\r\n};","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nexport const SubjectsNavHelper = {\r\n getTopNavItems(): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Classifications',\r\n appLink: { application, action: actions.CLASSIFICATIONS },\r\n activeActions: [\r\n actions.CLASSIFICATIONS,\r\n actions.PRESENTATION_CLASSIFICATIONS,\r\n actions.NEW_CLASSIFICATION,\r\n actions.EDIT_CLASSIFICATION,\r\n actions.EDIT_CLASSIFICATION_PLAYLISTS,\r\n actions.EDIT_CLASSIFICATION_SERIES,\r\n actions.EDIT_CLASSIFICATION_VIDEOS,\r\n actions.DELETE_CLASSIFICATION,\r\n actions.REMOVE_CLASSIFICATION_MEMBER\r\n ]\r\n },\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.SUBJECTS },\r\n activeActions: [\r\n actions.SUBJECTS,\r\n actions.NEW_SUBJECT,\r\n actions.EDIT_SUBJECT,\r\n actions.EDIT_SUBJECT_PLAYLISTS,\r\n actions.EDIT_SUBJECT_SERIES,\r\n actions.EDIT_SUBJECT_VIDEOS,\r\n actions.SUBJECT_CLASSIFICATIONS,\r\n actions.DELETE_SUBJECT,\r\n actions.ADD_SUBJECT_MEMBERS,\r\n actions.REMOVE_SUBJECT_MEMBER\r\n ]\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.AUDIENCES },\r\n activeActions: [\r\n actions.AUDIENCES,\r\n actions.PRESENTATION_AUDIENCES,\r\n actions.NEW_AUDIENCE,\r\n actions.EDIT_AUDIENCE\r\n ]\r\n },\r\n {\r\n label: 'Levels',\r\n appLink: { application, action: actions.LEVELS },\r\n activeActions: [\r\n actions.LEVELS,\r\n actions.NEW_LEVEL,\r\n actions.EDIT_LEVEL,\r\n actions.LEVEL_AUDIENCES,\r\n actions.EDIT_LEVEL_PLAYLISTS,\r\n actions.EDIT_LEVEL_SERIES,\r\n actions.EDIT_LEVEL_VIDEOS\r\n ]\r\n },\r\n {\r\n label: 'Presentations',\r\n appLink: { application, action: actions.PRESENTATIONS },\r\n activeActions: [ actions.PRESENTATIONS, actions.NEW_PRESENTATION, actions.EDIT_PRESENTATION ]\r\n }\r\n ];\r\n },\r\n\r\n getEditSubjectTabs(subjectId: string): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Edit Subject Details',\r\n appLink: { application, action: actions.EDIT_SUBJECT, args: [subjectId]}\r\n },\r\n {\r\n label: 'Classifications',\r\n appLink: { application, action: actions.SUBJECT_CLASSIFICATIONS, args: [subjectId]}\r\n },\r\n {\r\n label: 'Playlists',\r\n appLink: { application, action: actions.EDIT_SUBJECT_PLAYLISTS, args: [subjectId]}\r\n },\r\n {\r\n label: 'Series',\r\n appLink: { application, action: actions.EDIT_SUBJECT_SERIES, args: [subjectId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_SUBJECT_VIDEOS, args: [subjectId]}\r\n }\r\n ];\r\n },\r\n\r\n getEditClassificationTabs(presentationId: string, classificationId: string): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Edit Classification Details',\r\n appLink: { application, action: actions.EDIT_CLASSIFICATION, args: [ presentationId, classificationId ]}\r\n },\r\n {\r\n label: 'Playlists',\r\n appLink: {\r\n application, action: actions.EDIT_CLASSIFICATION_PLAYLISTS, args: [ presentationId, classificationId ]\r\n }\r\n },\r\n {\r\n label: 'Series',\r\n appLink: { application, action: actions.EDIT_CLASSIFICATION_SERIES, args: [ presentationId, classificationId ]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_CLASSIFICATION_VIDEOS, args: [ presentationId, classificationId ]}\r\n }\r\n ];\r\n }\r\n};","export * from './validation';\r\nexport * from './SubjectMemberHelper';\r\nexport * from './SubjectsNavHelper';\r\nexport * from './LevelsNavHelper';\r\nexport * from './LevelMemberHelper';","import * as Yup from 'yup';\r\nimport { CreateOrUpdateAudienceRequest } from 'apps/subjects/interfaces';\r\n\r\n// Omitting presentationId as it is not controlled in the form.\r\ntype Schema = Omit<CreateOrUpdateAudienceRequest, 'presentationId'>;\r\n\r\nexport const AudienceValidationSchema = Yup.object().shape<Schema>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n levelIds: Yup.array().of(Yup.string())\r\n .required('A level is required')\r\n .default([])\r\n\r\n}).noUnknown();","import * as Yup from 'yup';\r\nimport { Cover, Banner } from 'libs/shared/interfaces';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\r\n\r\nimport { UpdateClassificationRequest } from 'apps/subjects/interfaces';\r\nimport { ClassificationNodeType } from 'apps/subjects/enums';\r\n\r\nexport const ClassificationValidationSchema = Yup.object().shape<UpdateClassificationRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n parentIds: Yup.array().of(Yup.string())\r\n .default([ClassificationNodeType.Root]),\r\n\r\n subjectIds: Yup.array().of(Yup.string())\r\n .min(1, 'A classification must be mapped to at least one subject')\r\n .required('A classification must be mapped to at least one subject')\r\n .default([]),\r\n\r\n type: Yup.mixed<ClassificationType>()\r\n .required('Type is required')\r\n .default(ClassificationType.Subject),\r\n\r\n emphasize: Yup.boolean()\r\n .default(false),\r\n\r\n comingSoon: Yup.boolean()\r\n .default(true),\r\n\r\n canBePreferred: Yup.boolean()\r\n .default(false),\r\n\r\n cover: Yup.object()\r\n .shape<Cover>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n banner: Yup.object()\r\n .shape<Banner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdateLevelRequest } from 'apps/subjects/interfaces';\r\n\r\nexport const LevelValidationSchema = Yup.object().shape<CreateOrUpdateLevelRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default('')\r\n\r\n}).noUnknown();","import * as Yup from 'yup';\r\n\r\nexport const PresentationValidationSchema = Yup.object().shape({\r\n name: Yup.string()\r\n .max(255, 'Name is too long')\r\n .required('Name is required'),\r\n description: Yup.string()\r\n .max(65535, 'Description is too long')\r\n .required('Description is required'),\r\n});","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\nimport { SubjectNodeType } from 'apps/subjects/enums';\r\n\r\nexport const SubjectValidationSchema = Yup.object().shape<CreateOrUpdateSubjectRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n parentId: Yup.string()\r\n .default(SubjectNodeType.Root)\r\n\r\n}).noUnknown();","export * from './AudienceValidation';\r\nexport * from './ClassificationValidation';\r\nexport * from './LevelValidation';\r\nexport * from './PresentationValidation';\r\nexport * from './SubjectValidation';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { PresentationAudience, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons, PopupButton } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\n\r\nconst getButtons = (deleteAudience: () => void, close: () => void, showSpinner: boolean): PopupButton[] => ([\r\n {\r\n variant: 'link',\r\n onClick: close,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteAudience,\r\n buttonText: 'Yes, delete this audience',\r\n isSpinnerButton: true,\r\n showSpinner: showSpinner\r\n }\r\n]);\r\n\r\ninterface DeleteAudienceViewProps {\r\n id: string;\r\n routeToOnDelete?: Core.AppLink;\r\n}\r\n\r\nexport function DeleteAudienceView(props: DeleteAudienceViewProps & PopupViewProps): React.ReactElement {\r\n const { id, routeToOnDelete, closePopup } = props;\r\n\r\n const [ audience, setAudience ] = React.useState<PresentationAudience>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getAudienceFetchOptions(id, setAudience), [id]);\r\n\r\n const deleteAudience = (): void => {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n closePopup();\r\n\r\n if (routeToOnDelete)\r\n Core.AppLinkHelper.trigger(routeToOnDelete);\r\n };\r\n\r\n subjectDataService.deleteAudience(id, onSuccess, closePopup);\r\n };\r\n\r\n return (\r\n <Popup title='Delete Audience' closePopup={closePopup} showLoadingSpinner={!audience}>\r\n {!!audience &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{audience.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={getButtons(deleteAudience, closePopup, showButtonSpinner)} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteAudienceView';","import * as React from 'react';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { EditAudienceDetails } from 'apps/subjects/components';\r\nimport { Presentation, CreateOrUpdateAudienceRequest, Level } from 'apps/subjects/interfaces';\r\n\r\nconst getAudiencesAppLink = (presentationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentationId]\r\n});\r\n\r\ninterface EditAudienceViewProps {\r\n presentationId: string;\r\n audienceId: string;\r\n}\r\n\r\nexport function EditAudienceView({ presentationId, audienceId }: EditAudienceViewProps): React.ReactElement {\r\n const [ audience, setAudience ] = React.useState<PresentationAudience>();\r\n const [ levels, setLevels ] = React.useState<Level[]>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getAudienceFetchOptions(audienceId, setAudience), [audienceId]);\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), [presentationId]);\r\n\r\n const saveAudience = (data: CreateOrUpdateAudienceRequest, onDone: () => void) =>\r\n subjectDataService.updateAudience(audienceId, { ...data, presentationId }, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <div className='pb-3'>\r\n <BackButton appLink={getAudiencesAppLink(presentationId)} backToName='audiences' />\r\n </div>\r\n {!!presentation && <h6>{`Presentation: ${presentation.name}`}</h6>}\r\n {!!audience && !!levels &&\r\n <EditAudienceDetails\r\n audience={audience}\r\n levels={levels}\r\n saveAudience={saveAudience}\r\n presentationId={presentationId}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditAudienceView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAudienceAppLink = (presentationId: string) => (audience: PresentationAudience) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ presentationId, audience.masterId ]\r\n});\r\n\r\nconst getNewAudienceAppLink = (presentationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_AUDIENCE,\r\n args: [presentationId]\r\n});\r\n\r\nconst selectPresentationAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.AUDIENCES\r\n};\r\n\r\ninterface EditAudiencesListViewProps {\r\n presentationId: string;\r\n}\r\n\r\nexport function EditAudiencesListView(props: EditAudiencesListViewProps): React.ReactElement {\r\n const { presentationId } = props;\r\n\r\n const [ audiences, setAudiences ] = React.useState<PresentationAudience[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getAudiencesFetchOptions(presentationId, setAudiences), []);\r\n\r\n return (\r\n <>\r\n <div className='pb-3'>\r\n <BackButton appLink={selectPresentationAppLink} backToName='presentations' />\r\n </div>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select an audience to edit:</h5>\r\n <AppLink appLink={getNewAudienceAppLink(presentationId)} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Audience</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav\r\n objects={audiences}\r\n getAppLink={getAudienceAppLink(props.presentationId)}\r\n // \\u002B is the unicode number for &plus\r\n emptyMessage={'There are no audiences in this presentation yet. Click \\'\\u002B New Audience\\' to create one.'}\r\n />\r\n </>\r\n );\r\n}","export * from './EditAudiencesListView';","export * from './delete-audience';\r\nexport * from './edit-audience';\r\nexport * from './edit-audiences-list';\r\nexport * from './new-audience';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions, DataServices } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\n\r\nimport { EditAudienceDetails } from 'apps/subjects/components';\r\nimport { Presentation, Level, CreateOrUpdateAudienceRequest } from 'apps/subjects/interfaces';\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAudiencesAppLink = (presentationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentationId]\r\n});\r\n\r\nconst onCreateSuccess = (presentationId: string, onDone: () => void) => (newAudience: PresentationAudience) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ presentationId, newAudience.masterId ]\r\n });\r\n};\r\n\r\ninterface NewAudienceViewProps {\r\n presentationId: string;\r\n}\r\n\r\nexport function NewAudienceView({ presentationId }: NewAudienceViewProps): React.ReactElement {\r\n const [ levels, setLevels ] = React.useState<Level[]>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), [presentationId]);\r\n\r\n const saveAudience = (data: CreateOrUpdateAudienceRequest, onDone: () => void) =>\r\n subjectDataService.createAudience(\r\n { ...data, presentationId }, onCreateSuccess(presentationId, onDone), onDone\r\n );\r\n\r\n return (\r\n <>\r\n <div className='pb-2'>\r\n <BackButton appLink={getAudiencesAppLink(presentationId)} backToName='audiences' />\r\n </div>\r\n {!!presentation && <h6>{`Presentation: ${presentation.name}`}</h6>}\r\n {!!levels && <EditAudienceDetails levels={levels} presentationId={presentationId} saveAudience={saveAudience} />}\r\n </>\r\n );\r\n}","export * from './NewAudienceView';","import { Core } from 'libs/common/core';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TreeNodeAction } from 'shared/components';\r\n\r\nimport { ClassificationTree, Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nexport function useFetchData(\r\n presentationId: string,\r\n setClassificationTree: (data: ClassificationTree) => void,\r\n setPresentation: (data: Presentation) => void\r\n): void {\r\n const classificationTreeFetchOptions =\r\n SubjectDataServiceHelper.getClassificationTreeFetchOptions(presentationId, setClassificationTree);\r\n\r\n const presentationFetchOptions =\r\n SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation);\r\n\r\n useBulkFetch([ classificationTreeFetchOptions, presentationFetchOptions ], [presentationId]);\r\n}\r\n\r\nexport function getClassificationAppLink(presentationId: string, classification: ClassificationTree): Core.AppLink {\r\n return {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, classification.id ]\r\n };\r\n}\r\n\r\nexport function getNewClassificationAppLink(presentationId: string): Core.AppLink {\r\n return {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_CLASSIFICATION,\r\n args: [presentationId]\r\n };\r\n}\r\n\r\nexport function getActions(presentationId: string): TreeNodeAction<ClassificationTree>[] {\r\n return [\r\n {\r\n label: 'Add child',\r\n getAppLink: (c: ClassificationTree) => ({\r\n ...getNewClassificationAppLink(presentationId),\r\n args: [presentationId],\r\n params: { parentId: c.id }\r\n })\r\n },\r\n {\r\n label: 'Delete classification',\r\n getAppLink: (c: ClassificationTree) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_CLASSIFICATION,\r\n args: [ presentationId, c.id ]\r\n }),\r\n className: 'text-danger'\r\n }\r\n ];\r\n}","import * as React from 'react';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { Tree } from 'shared/components';\r\n\r\nimport { ClassificationTree, Presentation } from 'apps/subjects/interfaces';\r\n\r\nimport { getNewClassificationAppLink, getClassificationAppLink, getActions, useFetchData } from './ClassificationNavUtils';\r\nimport styles from './classification-nav.scss';\r\n\r\ninterface ClassificationNavViewProps {\r\n presentationId: string;\r\n selectedClassificationId?: string;\r\n}\r\n\r\nexport function ClassificationNavView(props: ClassificationNavViewProps): React.ReactElement {\r\n const { presentationId, selectedClassificationId } = props;\r\n\r\n const [ classificationTree, setClassificationTree ] = React.useState<ClassificationTree>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n useFetchData(presentationId, setClassificationTree, setPresentation);\r\n\r\n return (\r\n <div className={`${styles.navContainer} h-auto pr-2 border-right`}>\r\n {!!presentation && <h6 className='border-bottom pb-2'>{`Classifications (${presentation.name})`}</h6>}\r\n <AppLink appLink={getNewClassificationAppLink(presentationId)} className='d-inline-block pb-2'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Classification</span>\r\n </AppLink>\r\n {!!classificationTree &&\r\n <div className='border-top pt-1'>\r\n <Tree<ClassificationTree>\r\n tree={classificationTree}\r\n getAppLink={\r\n (classification: ClassificationTree) => getClassificationAppLink(presentationId, classification)\r\n }\r\n selectedIds={[selectedClassificationId]}\r\n actions={getActions(presentationId)}\r\n />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navContainer\":\"cv--navContainer--11O8h\"};","export * from './ClassificationNavView';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Classification, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons, PopupButton } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\ninterface DeleteClassificationViewProps {\r\n classificationId: string;\r\n routeToOnDelete?: Core.AppLink;\r\n}\r\n\r\nexport function DeleteClassificationView(props: DeleteClassificationViewProps & PopupViewProps): React.ReactElement {\r\n const { classificationId, routeToOnDelete, closePopup } = props;\r\n\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n useFetch(SubjectDataServiceHelper.getClassificationFetchOptions(classificationId, setClassification), []);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const deleteClassification = (): void => {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n closePopup();\r\n\r\n if (routeToOnDelete)\r\n Core.AppLinkHelper.trigger(routeToOnDelete);\r\n };\r\n\r\n subjectDataService.deleteClassification(classificationId, onSuccess, closePopup);\r\n };\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteClassification,\r\n buttonText: 'Yes, delete this classification',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n return (\r\n <Popup title='Delete Classification' closePopup={closePopup} showLoadingSpinner={!classification}>\r\n {!!classification &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{classification.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteClassificationView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseObject, Classification, BasePaginatedCollection } from 'libs/shared/interfaces';\r\n\r\nimport { PropHelper } from 'shared/utils';\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { EditClassificationNav, ClassificationMemberList } from 'apps/subjects/components';\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType, OwnerType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { Presentation, UpdateClassificationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditClassificationMembersViewProps {\r\n presentationId: string;\r\n classificationId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\nexport function EditClassificationMembersView(props: EditClassificationMembersViewProps): React.ReactElement {\r\n const { presentationId, classificationId, memberType } = props;\r\n\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ members, setMembers ] = React.useState<BasePaginatedCollection<BaseObject>>();\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), []);\r\n\r\n useFetch(SubjectDataServiceHelper.getClassificationFetchOptions(\r\n classificationId, setClassification), [classificationId]);\r\n\r\n useFetch(SubjectDataServiceHelper.getClassificationMembersFetchOptions(\r\n classificationId, memberType, setMembers), [ classificationId, memberType ]);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const updatePinnedVideo = (id: string, callback: (data: Classification) => void): void => {\r\n const requestObject: UpdateClassificationRequest = {\r\n ...classification,\r\n pinnedVideoMasterId: id\r\n };\r\n subjectDataService.updateClassification(classificationId, requestObject, callback);\r\n };\r\n\r\n const classificationMemberListProps = {\r\n items: members && members.data,\r\n memberType,\r\n classification,\r\n updatePinnedVideo,\r\n getItemAppLink: (item: BaseObject) => SubjectMemberHelper.getMemberAppLink(memberType, item.id),\r\n getActions: (item: BaseObject) =>\r\n SubjectMemberHelper.getMemberActions(classificationId, OwnerType.Classification, memberType, item.id)\r\n };\r\n\r\n const headerProps = { presentation, classificationId };\r\n\r\n const dataLoaded = PropHelper.propsLoaded(classificationMemberListProps);\r\n\r\n return (\r\n <>\r\n <EditClassificationNav {...headerProps} memberType={memberType} />\r\n {dataLoaded &&\r\n <ClassificationMemberList {...classificationMemberListProps} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditClassificationMembersView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { Classification } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditClassificationDetails, EditClassificationNav } from 'apps/subjects/components';\r\nimport { Presentation, ClassificationTree, SubjectTree, UpdateClassificationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditClassificationViewProps {\r\n presentationId: string;\r\n classificationId: string;\r\n}\r\n\r\nexport function EditClassificationView(props: EditClassificationViewProps): React.ReactElement {\r\n const { presentationId, classificationId } = props;\r\n\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n const [ classificationTree, setClassificationTree ] = React.useState<ClassificationTree>();\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const classificationFetchOptions =\r\n SubjectDataServiceHelper.getClassificationFetchOptions(classificationId, setClassification);\r\n\r\n const presentationFetchOptions =\r\n SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation);\r\n\r\n const classificationTreeFetchOptions =\r\n SubjectDataServiceHelper.getClassificationTreeFetchOptions(presentationId, setClassificationTree);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n useFetch(classificationFetchOptions, [classificationId]);\r\n useBulkFetch([ presentationFetchOptions, classificationTreeFetchOptions ], [presentationId]);\r\n\r\n const saveClassification = (data: UpdateClassificationRequest, onDone: () => void): void =>\r\n subjectDataService.updateClassification(classificationId, data, onDone, onDone);\r\n\r\n return (\r\n <div>\r\n <EditClassificationNav presentation={presentation} classificationId={classificationId} />\r\n {!!classification && !!classificationTree && !!subjectTree &&\r\n <EditClassificationDetails\r\n classification={classification}\r\n presentationId={presentationId}\r\n subjectTree={subjectTree}\r\n classificationTree={classificationTree}\r\n saveClassification={saveClassification}\r\n />\r\n }\r\n </div>\r\n );\r\n}","export * from './EditClassificationView';","export * from './classification-nav';\r\nexport * from './delete-classification';\r\nexport * from './edit-classification';\r\nexport * from './edit-classification-members';\r\nexport * from './new-classification';\r\nexport * from './remove-classification-member';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Classification } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditClassificationDetails } from 'apps/subjects/components';\r\nimport { ClassificationTree, SubjectTree, CreateClassificationRequest } from 'apps/subjects/interfaces';\r\n\r\nconst onCreateSuccess = (presentationId: string, onDone: () => void) => (newClassification: Classification) => {\r\n onDone();\r\n\r\n if (!newClassification || !newClassification.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, newClassification.id ]\r\n });\r\n};\r\n\r\ninterface NewClassificationViewProps {\r\n presentationId: string;\r\n parentId?: string;\r\n}\r\n\r\nexport function NewClassificationView(props: NewClassificationViewProps): React.ReactElement {\r\n const { presentationId, parentId } = props;\r\n\r\n const [ classificationTree, setClassificationTree ] = React.useState<ClassificationTree>();\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const classificationTreeFetchOptions =\r\n SubjectDataServiceHelper.getClassificationTreeFetchOptions(presentationId, setClassificationTree);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n useFetch(classificationTreeFetchOptions, [presentationId]);\r\n\r\n const saveClassification = (data: CreateClassificationRequest, onDone: () => void): void =>\r\n subjectDataService.createClassification(\r\n { ...data, presentationId }, onCreateSuccess(presentationId, onDone), onDone\r\n );\r\n\r\n return (\r\n <div>\r\n <h4 className='py-2'>Create New Classification</h4>\r\n {!!subjectTree && !!classificationTree &&\r\n <EditClassificationDetails\r\n classification={(parentId ? { parentIds: [parentId]} : {}) as Classification}\r\n presentationId={presentationId}\r\n subjectTree={subjectTree}\r\n classificationTree={classificationTree}\r\n saveClassification={saveClassification}\r\n />\r\n }\r\n </div>\r\n );\r\n}","export * from './NewClassificationView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { Video, Series, Playlist, Classification, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\nfunction getMemberRequest(memberType: SubjectMemberType, memberId: string): Flight.Request {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistRequests.playlist(memberId);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesRequests.series(memberId);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoRequests.video(memberId);\r\n }\r\n}\r\n\r\ninterface RemoveClassificationMemberViewProps {\r\n classificationId: string;\r\n memberId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\ntype MemberType = Playlist | Series | Video;\r\n\r\ntype PropTypes = RemoveClassificationMemberViewProps & PopupViewProps;\r\n\r\nexport function RemoveClassificationMemberView(props: PropTypes): React.ReactElement {\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const member = Flight.useBasicFetch<MemberType>(getMemberRequest(props.memberType, props.memberId));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getClassificationFetchOptions(props.classificationId, setClassification),\r\n [props.classificationId]\r\n );\r\n\r\n const removeMember = () => {\r\n setShowButtonSpinner(true);\r\n\r\n subjectDataService.removeObjectsFromClassification(\r\n props.classificationId,\r\n [props.memberId],\r\n props.memberType,\r\n null,\r\n null,\r\n props.closePopup,\r\n props.closePopup\r\n );\r\n\r\n if (classification.pinnedVideoMasterId === props.memberId) {\r\n subjectDataService.updateClassification(props.classificationId, {\r\n ...classification,\r\n pinnedVideoMasterId: null\r\n });\r\n }\r\n };\r\n\r\n const dataLoaded = !!classification && !!member.data;\r\n\r\n const popupTitle = `Remove ${StringHelper.capitalizeFirstLetter(\r\n SubjectMemberHelper.singularizeMemberType(props.memberType))}`;\r\n\r\n return (\r\n <Popup title={popupTitle} closePopup={props.closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div>\r\n <p>\r\n Are you sure you want to remove <strong>\r\n {member.data.name}</strong> from <strong>{classification.name}</strong>?\r\n </p>\r\n <p>This will not remove it from the backbone subject.</p>\r\n </div>\r\n <PopupButtons\r\n buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeMember,\r\n buttonText: `Yes, remove this ${SubjectMemberHelper.singularizeMemberType(props.memberType)}`,\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }\r\n />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './RemoveClassificationMemberView';","export * from './audiences';\r\nexport * from './classifications';\r\nexport * from './levels';\r\nexport * from './presentations';\r\nexport * from './subjects';\r\nexport * from './top-nav';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditLevelNav, EditLevelDetails } from 'apps/subjects/components';\r\nimport { Level, CreateOrUpdateLevelRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditLevelViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditLevelView({ id }: EditLevelViewProps): React.ReactElement {\r\n const [ level, setLevel ] = React.useState<Level>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelFetchOptions(id, setLevel), [id]);\r\n\r\n const saveLevel = (data: CreateOrUpdateLevelRequest, onDone: () => void) =>\r\n subjectDataService.updateLevel(id, data, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <EditLevelNav levelId={id} activeAction={Actions.Subjects.EDIT_LEVEL} />\r\n <h4 className='py-2'>Edit Level</h4>\r\n {!!level && <EditLevelDetails level={level} saveLevel={saveLevel} />}\r\n </>\r\n );\r\n}","export * from './EditLevelView';","export * from './edit-level';\r\nexport * from './levels-redirect';\r\nexport * from './new-level';\r\nexport * from './level-nav/LevelNavView';\r\nexport * from './level-audiences/LevelAudiencesView';","import * as React from 'react';\r\n\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { Audience } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { EditLevelNav } from 'apps/subjects/components';\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { LevelAudiences } from 'apps/subjects/components/levels/level-audiences/LevelAudiences';\r\n\r\nfunction useFetchData(\r\n levelId: string,\r\n setState: React.Dispatch<React.SetStateAction<LevelAudiencesViewState>>\r\n): void {\r\n const getSetState = (key: keyof LevelAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getLevelAudiencesFetchOptions(levelId, getSetState('audiences')),\r\n [levelId]\r\n );\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')), []);\r\n}\r\n\r\ninterface LevelAudiencesViewState {\r\n audiences?: Audience[];\r\n presentations?: Presentation[];\r\n}\r\n\r\ninterface LevelAudiencesViewProps {\r\n levelId: string;\r\n}\r\n\r\nexport function LevelAudiencesView({ levelId }: LevelAudiencesViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<LevelAudiencesViewState>({});\r\n\r\n useFetchData(levelId, setState);\r\n\r\n return (\r\n <>\r\n <EditLevelNav levelId={levelId} activeAction={Actions.Subjects.LEVEL_AUDIENCES} />\r\n <LevelAudiences\r\n presentations={state.presentations}\r\n audienceDictionary={ArrayHelper.groupBy(state.audiences, 'presentationId')}\r\n />\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { Tree, TreeNodeAction } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { TreeNodeLink } from 'shared/components/tree/TreeNodeLink';\r\n\r\nimport styles from './level-nav.scss';\r\n\r\ninterface LevelNavViewProps {\r\n selectedLevelId?: string;\r\n}\r\n\r\nexport function LevelNavView({ selectedLevelId }: LevelNavViewProps): React.ReactElement {\r\n const [ levels, setLevels ] = React.useState<Level[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n\r\n const getAppLink = (level: Level) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [level.id]\r\n });\r\n\r\n const newLevelAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_LEVEL\r\n };\r\n\r\n const actions: Level[] = [];\r\n\r\n return (\r\n <div className={`${styles.navContainer} h-auto pr-2 border-right`}>\r\n <h5 className='border-bottom pb-2'>Levels</h5>\r\n <AppLink appLink={newLevelAppLink} className='d-inline-block pb-2'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Level</span>\r\n </AppLink>\r\n\r\n <div className='border-top pt-1'>\r\n <ul className='list-unstyled'>\r\n {levels && levels.map(level => (\r\n <li className='position-relative py-1'>\r\n <AppLink appLink={getAppLink(level)}>\r\n {level.name}\r\n </AppLink>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navContainer\":\"cv--navContainer--3by-P\"};","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Core } from 'libs/common/core';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nexport function LevelsRedirectView(): React.ReactElement {\r\n const [ levels, setLevels ] = React.useState<Level[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n\r\n React.useEffect(() => {\r\n if (!levels)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [ArrayHelper.first(levels).id]\r\n }, { replace: true });\r\n }, [levels]);\r\n\r\n return <></>;\r\n}","export * from './LevelsRedirectView';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { EditLevelDetails } from 'apps/subjects/components';\r\nimport { Level, CreateOrUpdateLevelRequest } from 'apps/subjects/interfaces';\r\n\r\nconst onCreateSuccess = (onDone: () => void) => (newLevel: Level) => {\r\n onDone();\r\n\r\n if (!newLevel || !newLevel.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [newLevel.id]\r\n });\r\n};\r\n\r\nexport function NewLevelView(): React.ReactElement {\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const saveLevel = (data: CreateOrUpdateLevelRequest, onDone: () => void): void =>\r\n subjectDataService.createLevel(data, onCreateSuccess(onDone), onDone);\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Create New Level</h4>\r\n <EditLevelDetails saveLevel={saveLevel} />\r\n </>\r\n );\r\n}","export * from './NewLevelView';","import * as React from 'react';\r\nimport { FormikHelpers } from 'formik';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { PropHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditPresentationDetails } from 'apps/subjects/components';\r\nimport { Presentation, CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPresentationViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditPresentationView({ id }: EditPresentationViewProps): React.ReactElement {\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(id, setPresentation), [id]);\r\n\r\n const savePresentation = (\r\n data: CreateOrUpdatePresentationRequest, { setSubmitting }: FormikHelpers<CreateOrUpdatePresentationRequest>\r\n ): void => subjectDataService.updatePresentation(id, data, () => setSubmitting(false), () => setSubmitting(false));\r\n\r\n const formProps = { presentation, savePresentation };\r\n\r\n const dataLoaded = PropHelper.propsLoaded(formProps);\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Edit Presentation</h4>\r\n {!!dataLoaded && <EditPresentationDetails {...formProps} />}\r\n </>\r\n );\r\n}","export * from './EditPresentationView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAppLink = (presentation: Presentation) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_PRESENTATION,\r\n args: [presentation.id]\r\n});\r\n\r\nconst newPresentationAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_PRESENTATION,\r\n};\r\n\r\nexport function EditPresentationsListView(): React.ReactElement {\r\n const [ presentations, setPresentations ] = React.useState<Presentation[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(setPresentations), []);\r\n\r\n return (\r\n <div>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select a presentation to edit:</h5>\r\n <AppLink appLink={newPresentationAppLink} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Presentation</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav objects={presentations} getAppLink={getAppLink} />\r\n </div>\r\n );\r\n}","export * from './EditPresentationsListView';","export * from './edit-presentation';\r\nexport * from './edit-presentations-list';\r\nexport * from './new-presentation';\r\nexport * from './select-presentation';","import * as React from 'react';\r\nimport { FormikHelpers } from 'formik';\r\nimport { Core } from 'libs/common/core';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { EditPresentationDetails } from 'apps/subjects/components';\r\nimport { Presentation, CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\n\r\nexport function NewPresentationView(): React.ReactElement {\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const onCreateSuccess = (newPresentation: Presentation, setSubmitting: (isSubmitting: boolean) => void) => {\r\n setSubmitting(false);\r\n\r\n if (!newPresentation || !newPresentation.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_PRESENTATION,\r\n args: [newPresentation.id]\r\n });\r\n };\r\n\r\n const savePresentation = (\r\n data: CreateOrUpdatePresentationRequest, { setSubmitting }: FormikHelpers<CreateOrUpdatePresentationRequest>\r\n ): void => {\r\n subjectDataService.createPresentation(\r\n data,\r\n (_data: Presentation) => onCreateSuccess(_data, setSubmitting),\r\n () => setSubmitting(false)\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Create New Presentation</h4>\r\n <EditPresentationDetails savePresentation={savePresentation} />\r\n </>\r\n );\r\n}","export * from './NewPresentationView';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst namespace = 'subjects.selectPresentation';\r\n\r\ninterface SelectPresentationViewProps {\r\n objectType: string;\r\n getAppLink: (presentation: Presentation) => Core.AppLink;\r\n}\r\n\r\nexport function SelectPresentationView({ objectType, getAppLink }: SelectPresentationViewProps): React.ReactElement {\r\n const [ presentations, setPresentations ] = React.useState<Presentation[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(setPresentations), []);\r\n\r\n return (\r\n <div>\r\n <h5><Text namespace={namespace} phrase='heading' options={{ objectType }} /></h5>\r\n <ObjectListNav objects={presentations} getAppLink={getAppLink} />\r\n </div>\r\n );\r\n}","export * from './SelectPresentationView';","import { Flight } from 'libs/common/flight';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\n\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nimport { AddSubjectMembersViewProps, AddSubjectMembersViewState } from './AddSubjectMembersView';\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<AddSubjectMembersViewState>>;\r\n\r\n// Wrapper function for typing StateHelper.getSetStateByKey<T>\r\nexport function getSetState(setState: SetState, key: keyof AddSubjectMembersViewState): (data: any) => void {\r\n return StateHelper.getSetStateByKey<AddSubjectMembersViewState>(setState, key);\r\n}\r\n\r\n// Hook to fetch all data required for AddSubjectMembersView\r\nexport function useFetchData(\r\n props: AddSubjectMembersViewProps,\r\n setState: SetState\r\n): void {\r\n const { memberType, objectIds } = props;\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(\r\n getSetState(setState, 'subjectTree')\r\n );\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n}\r\n\r\nexport function addToSubject(\r\n objects: BaseObject[],\r\n subjectDataService: SubjectDataService,\r\n props: AddSubjectMembersViewProps,\r\n state: AddSubjectMembersViewState,\r\n setState: SetState\r\n): void {\r\n const { selectedSubject } = state;\r\n\r\n const onDone = () => getSetState(setState, 'showConfirmationPopup')(false);\r\n\r\n const onSuccess = () => {\r\n onDone();\r\n Core.AppLinkHelper.trigger(getSubjectMemberAppLink(selectedSubject.id, props.memberType));\r\n };\r\n\r\n subjectDataService.addObjectsToSubject(\r\n selectedSubject.id, objects.map(o => o.id), props.memberType, state.addToClassifications, onSuccess, onDone\r\n );\r\n}\r\n\r\nexport function getObjectRequest(memberType: SubjectMemberType, ids: string[]): Flight.Request {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistRequests.playlistsById(ids);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesRequests.seriesById(ids);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoRequests.videosById(ids);\r\n }\r\n}\r\n\r\nexport function getConfirmationPopupTitle(\r\n memberType: SubjectMemberType, objects: BaseObject[], subject: SubjectTree\r\n): string {\r\n if (!objects || !subject)\r\n return;\r\n\r\n const memberText = objects.length === 1\r\n ? `this ${SubjectMemberHelper.singularizeMemberType(memberType)}`\r\n : `these ${memberType}`;\r\n\r\n return `Add ${memberText} to ${subject.name}`;\r\n}\r\n\r\nfunction getSubjectMemberAppLink(subjectId: string, memberType: SubjectMemberType): Core.AppLink {\r\n const baseAppLink = { application: AppChannels.SUBJECTS, args: [subjectId]};\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return { ...baseAppLink, action: Actions.Subjects.EDIT_SUBJECT_PLAYLISTS };\r\n\r\n case SubjectMemberType.Series:\r\n return { ...baseAppLink, action: Actions.Subjects.EDIT_SUBJECT_SERIES };\r\n\r\n case SubjectMemberType.Videos:\r\n return { ...baseAppLink, action: Actions.Subjects.EDIT_SUBJECT_VIDEOS };\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { StringHelper, TreeHelper } from 'shared/utils';\r\n\r\nimport { SubjectTree, ClassificationTree } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { AddSubjectMembers } from 'apps/subjects/components';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport {\r\n getObjectRequest,\r\n useFetchData,\r\n getConfirmationPopupTitle,\r\n getSetState,\r\n addToSubject\r\n} from './AddSubjectMembersUtils';\r\n\r\nfunction getMemberName(memberType: SubjectMemberType): string {\r\n return StringHelper.capitalizeFirstLetter(SubjectMemberHelper.singularizeMemberType(memberType));\r\n}\r\n\r\nfunction getOnClickAddToSubject(\r\n state: AddSubjectMembersViewState,\r\n setState: React.Dispatch<React.SetStateAction<AddSubjectMembersViewState>>\r\n): (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => void {\r\n return (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => {\r\n // Set submitting to false as we are showing a confirmation popup before making an api call.\r\n setSubmittingFalse();\r\n\r\n getSetState(setState, 'selectedSubject')(TreeHelper.find(state.subjectTree, ArrayHelper.first(subjectIds)));\r\n getSetState(setState, 'addToClassifications')(addToClassifications);\r\n getSetState(setState, 'showConfirmationPopup')(true);\r\n };\r\n}\r\n\r\nexport interface AddSubjectMembersViewState {\r\n // Api Data\r\n subjectTree?: SubjectTree;\r\n classificationTree?: ClassificationTree;\r\n\r\n // View State\r\n selectedSubject?: SubjectTree;\r\n addToClassifications?: boolean;\r\n showConfirmationPopup?: boolean;\r\n}\r\n\r\nexport interface AddSubjectMembersViewProps {\r\n memberType: SubjectMemberType;\r\n objectIds: string[];\r\n}\r\n\r\nexport function AddSubjectMembersView(props: AddSubjectMembersViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<AddSubjectMembersViewState>({});\r\n\r\n const objects = Flight.useBasicFetch<BaseObject[]>(getObjectRequest(props.memberType, props.objectIds));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props, setState);\r\n\r\n const setShowConfirmationPopup = (show: boolean) => getSetState(setState, 'showConfirmationPopup')(show);\r\n\r\n return (\r\n <>\r\n {!!objects.data && !!state.subjectTree &&\r\n <AddSubjectMembers\r\n memberType={props.memberType}\r\n objects={objects.data}\r\n subjectTree={state.subjectTree}\r\n onClickAddToSubject={getOnClickAddToSubject(state, setState)}\r\n />\r\n }\r\n {state.showConfirmationPopup &&\r\n <ConfirmationPopup\r\n title={getConfirmationPopupTitle(props.memberType, objects.data, state.selectedSubject)}\r\n onClickConfirm={() => addToSubject(objects.data, subjectDataService, props, state, setState)}\r\n closePopup={() => setShowConfirmationPopup(false)}\r\n >\r\n <p>\r\n {`The following ${props.memberType} will be added to `}\r\n <strong>{state.selectedSubject.name}</strong>\r\n {state.addToClassifications ? ` and its mapped classifications:` : ':'}\r\n </p>\r\n <ul>\r\n {objects.data.map(o =>\r\n <li key={o.id}>{o.name}</li>\r\n )}\r\n </ul>\r\n {!state.addToClassifications &&\r\n <p>{`${objects.data.length === 1 ? 'It' : 'They'} will not be added to its mapped classifications.`}</p>\r\n }\r\n <p>\r\n {`${getMemberName(props.memberType)} to classification mappings can be managed from the `}\r\n <strong>{`Edit Subject ${StringHelper.capitalizeFirstLetter(props.memberType)} `}</strong>\r\n page.\r\n </p>\r\n </ConfirmationPopup>\r\n }\r\n </>\r\n );\r\n}","export * from './AddSubjectMembersView';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Subject, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons, PopupButton } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\ninterface DeleteSubjectViewProps {\r\n subjectId: string;\r\n routeToOnDelete?: Core.AppLink;\r\n}\r\n\r\nexport function DeleteSubjectView(props: DeleteSubjectViewProps & PopupViewProps): React.ReactElement {\r\n const { subjectId, routeToOnDelete, closePopup } = props;\r\n\r\n const [ subject, setSubject ] = React.useState<Subject>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n useFetch(SubjectDataServiceHelper.getSubjectFetchOptions(subjectId, setSubject), []);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const deleteSubject = (): void => {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n closePopup();\r\n\r\n if (routeToOnDelete)\r\n Core.AppLinkHelper.trigger(routeToOnDelete);\r\n };\r\n\r\n subjectDataService.deleteSubject(subjectId, onSuccess, closePopup);\r\n };\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteSubject,\r\n buttonText: 'Yes, delete this subject',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n return (\r\n <Popup title='Delete Subject' closePopup={closePopup} showLoadingSpinner={!subject}>\r\n {!!subject &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{subject.name}</strong>?</p>\r\n <p>Subjects that have mapped classifications cannot be deleted.</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteSubjectView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { BaseObject, Classification } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberViewModel } from 'apps/subjects/components';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { PresentationContext } from 'apps/subjects/context';\r\n\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nimport { EditSubjectMembersState, EditSubjectMembersViewProps } from './EditSubjectMembersView';\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditSubjectMembersState>>;\r\n\r\n// Wrapper function for typing StateHelper.getSetStateByKey<T>\r\nexport function getSetState(setState: SetState, key: keyof EditSubjectMembersState): (data: any) => void {\r\n return StateHelper.getSetStateByKey<EditSubjectMembersState>(setState, key);\r\n}\r\n\r\n// Hook to fetch all data required for AddSubjectMembersView\r\nexport function useFetchData(\r\n props: EditSubjectMembersViewProps,\r\n state: EditSubjectMembersState,\r\n setState: SetState\r\n): void {\r\n const { subjectId, memberType } = props;\r\n\r\n const [presentation] = React.useContext(PresentationContext);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(\r\n getSetState(setState, 'presentations')),\r\n []\r\n );\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getSubjectMemberIdsFetchOptions(\r\n subjectId,\r\n memberType,\r\n getSetState(setState, 'memberIds')\r\n ),\r\n [ subjectId, memberType ]\r\n );\r\n\r\n useFetch(\r\n !!presentation &&\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n subjectId,\r\n getSetState(setState, 'classifications'),\r\n presentation.id,\r\n memberType\r\n ),\r\n [ subjectId, memberType, presentation ],\r\n !!presentation\r\n );\r\n}\r\n\r\n// Hook to map classifications to members\r\nexport function useMapData(\r\n members: BaseObject[],\r\n props: EditSubjectMembersViewProps,\r\n state: EditSubjectMembersState,\r\n setState: SetState\r\n): void {\r\n const { classifications } = state;\r\n\r\n // Map classifications\r\n React.useEffect(() => {\r\n const setMembersWithClassifications = getSetState(setState, 'membersWithClassifications');\r\n setMembersWithClassifications(mapClassificationsToMembers(props.memberType, members, classifications));\r\n }, [ members, classifications ]);\r\n}\r\n\r\nexport function getMembersRequest(memberType: SubjectMemberType, ids: string[]): Flight.Request {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistRequests.playlistsById(ids);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesRequests.seriesById(ids);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoRequests.videosById(ids);\r\n }\r\n}\r\n\r\nexport const getClassificationAppLink = (memberType: SubjectMemberType, presentationId: string) =>\r\n (classificationId: string): Core.AppLink => {\r\n const application = AppChannels.SUBJECTS;\r\n const args = [ presentationId, classificationId ];\r\n\r\n let action;\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n action = Actions.Subjects.EDIT_CLASSIFICATION_PLAYLISTS;\r\n break;\r\n\r\n case SubjectMemberType.Series:\r\n action = Actions.Subjects.EDIT_CLASSIFICATION_SERIES;\r\n break;\r\n\r\n case SubjectMemberType.Videos:\r\n action = Actions.Subjects.EDIT_CLASSIFICATION_VIDEOS;\r\n break;\r\n }\r\n\r\n return { application, action, args };\r\n };\r\n\r\n/**\r\n * For each member, list the classifications on the subject with a flag\r\n * to determine whether or not the member is associated with that classification.\r\n */\r\nfunction mapClassificationsToMembers(\r\n memberType: SubjectMemberType, members: BaseObject[], classifications: Classification[]\r\n): SubjectMemberViewModel[] {\r\n if (!members || !classifications)\r\n return;\r\n\r\n const isMemberInClassification = (member: BaseObject, classification: Classification) =>\r\n !!(classification as any)[memberType] &&\r\n !!(classification as any)[memberType].data.filter((m: BaseObject) => m.id === member.id).length;\r\n\r\n return members.map(m => ({\r\n id: m.id,\r\n name: m.name,\r\n classifications: classifications.map(c => ({ id: c.id, selected: isMemberInClassification(m, c) }))\r\n }));\r\n}\r\n\r\nexport function toggleObjectsInClassification(\r\n d: SubjectDataService,\r\n memberType: SubjectMemberType,\r\n memberIds: string[],\r\n subjectId: string,\r\n presentationId: string,\r\n classificationId: string,\r\n selected: boolean\r\n): void {\r\n const apiFn = selected\r\n ? d.addObjectsToClassification.bind(d)\r\n : d.removeObjectsFromClassification.bind(d);\r\n\r\n apiFn(classificationId, memberIds, memberType, subjectId, presentationId);\r\n}\r\n\r\nexport function getActiveAction(memberType: SubjectMemberType): string {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return Actions.Subjects.EDIT_SUBJECT_PLAYLISTS;\r\n\r\n case SubjectMemberType.Series:\r\n return Actions.Subjects.EDIT_SUBJECT_SERIES;\r\n\r\n case SubjectMemberType.Videos:\r\n return Actions.Subjects.EDIT_SUBJECT_VIDEOS;\r\n }\r\n}","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseObject, Classification } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { EditSubjectNav, SubjectMemberList, PresentationSelect, SubjectMemberViewModel } from 'apps/subjects/components';\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType, OwnerType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { PresentationContext } from 'apps/subjects/context';\r\n\r\nimport {\r\n getMembersRequest,\r\n useFetchData,\r\n useMapData,\r\n getClassificationAppLink,\r\n toggleObjectsInClassification,\r\n getActiveAction\r\n} from './EditSubjectMembersUtils';\r\n\r\nexport interface EditSubjectMembersState {\r\n // Data fetched from api.\r\n presentations?: Presentation[];\r\n classifications?: Classification[];\r\n memberIds?: string[];\r\n\r\n // View state.\r\n membersWithClassifications?: SubjectMemberViewModel[];\r\n}\r\n\r\nexport interface EditSubjectMembersViewProps {\r\n subjectId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\nexport function EditSubjectMembersView(props: EditSubjectMembersViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<EditSubjectMembersState>({});\r\n\r\n const { presentations, classifications, memberIds, membersWithClassifications } = state;\r\n\r\n const members = Flight.useBasicFetch<BaseObject[]>(Array.isArray(memberIds)\r\n && getMembersRequest(props.memberType, memberIds));\r\n\r\n const [ currentPresentation, setCurrentPresentation ] = React.useContext(PresentationContext);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props, state, setState);\r\n useMapData(members.data, props, state, setState);\r\n\r\n const subjectMemberDataLoaded = !!currentPresentation && !!classifications;\r\n\r\n return (\r\n <>\r\n <EditSubjectNav subjectId={props.subjectId} activeAction={getActiveAction(props.memberType)} />\r\n <Alert variant='info' className='m-0'>\r\n {\r\n `Select which ${props.memberType} are shown for each classification in this subject.`\r\n + ' Change the selected presentation to view different classifications.'\r\n }\r\n </Alert>\r\n <div className='w-50 py-2'>\r\n {!!presentations &&\r\n <PresentationSelect\r\n presentations={presentations}\r\n currentPresentation={currentPresentation}\r\n setCurrentPresentation={setCurrentPresentation}\r\n />\r\n }\r\n </div>\r\n {subjectMemberDataLoaded &&\r\n <SubjectMemberList\r\n members={membersWithClassifications || []}\r\n memberType={props.memberType}\r\n getMemberAppLink={(itemId: string) => SubjectMemberHelper.getMemberAppLink(props.memberType, itemId)}\r\n getActions={(itemId: string) =>\r\n SubjectMemberHelper.getMemberActions(props.subjectId, OwnerType.Subject, props.memberType, itemId)\r\n }\r\n classifications={classifications}\r\n getClassificationAppLink={currentPresentation &&\r\n getClassificationAppLink(props.memberType, currentPresentation.id)\r\n }\r\n onToggleClassification={(classificationId: string, selected: boolean, memberId?: string) =>\r\n toggleObjectsInClassification(\r\n subjectDataService,\r\n props.memberType,\r\n memberId ? [memberId] : memberIds,\r\n props.subjectId,\r\n currentPresentation && currentPresentation.id,\r\n classificationId,\r\n selected\r\n )\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSubjectMembersView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Subject } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditSubjectDetails, EditSubjectNav } from 'apps/subjects/components';\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditSubjectViewProps {\r\n subjectId: string;\r\n}\r\n\r\nexport function EditSubjectView({ subjectId }: EditSubjectViewProps): React.ReactElement {\r\n const [ subject, setSubject ] = React.useState<Subject>();\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const subjectFetchOptions =\r\n SubjectDataServiceHelper.getSubjectFetchOptions(subjectId, setSubject);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n useFetch(subjectFetchOptions, [subjectId]);\r\n\r\n const saveSubject = (data: CreateOrUpdateSubjectRequest, onDone: () => void): void =>\r\n subjectDataService.updateSubject(subjectId, data, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <EditSubjectNav subjectId={subjectId} activeAction={Actions.Subjects.EDIT_SUBJECT} />\r\n {!!subject && !!subjectTree &&\r\n <EditSubjectDetails subject={subject} subjectTree={subjectTree} saveSubject={saveSubject} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSubjectView';","export * from './add-subject-members';\r\nexport * from './delete-subject';\r\nexport * from './edit-subject';\r\nexport * from './edit-subject-members';\r\nexport * from './new-subject';\r\nexport * from './remove-subject-member';\r\nexport * from './subject-classifications';\r\nexport * from './subject-nav';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Subject } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditSubjectDetails } from 'apps/subjects/components';\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\n\r\nconst onCreateSuccess = (onDone: () => void) => (newSubject: Subject) => {\r\n onDone();\r\n\r\n if (!newSubject || !newSubject.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [newSubject.id]\r\n });\r\n};\r\n\r\ninterface NewSubjectViewProps {\r\n parentId?: string;\r\n}\r\n\r\nexport function NewSubjectView({ parentId } : NewSubjectViewProps): React.ReactElement {\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n\r\n const saveSubject = (data: CreateOrUpdateSubjectRequest, onDone: () => void): void =>\r\n subjectDataService.createSubject(data, onCreateSuccess(onDone), onDone);\r\n\r\n const presentationAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATIONS\r\n };\r\n\r\n return (\r\n <>\r\n <div className='pb-2 border-bottom'>\r\n <BackButton backToName='Presentations' appLink={presentationAppLink} />\r\n </div>\r\n <h4 className='py-2'>Create New Subject</h4>\r\n {!!subjectTree &&\r\n <EditSubjectDetails\r\n subject={{ parentId } as Subject}\r\n subjectTree={subjectTree}\r\n saveSubject={saveSubject}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './NewSubjectView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Subject, Playlist, Video, Series, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\nfunction getMemberRequest(memberType: SubjectMemberType, memberId: string): Flight.Request {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistRequests.playlist(memberId);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesRequests.series(memberId);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoRequests.video(memberId);\r\n }\r\n}\r\n\r\ninterface RemoveSubjectMemberViewProps {\r\n subjectId: string;\r\n memberId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\ntype MemberType = Playlist | Series | Video;\r\n\r\ntype PropTypes = RemoveSubjectMemberViewProps & PopupViewProps;\r\n\r\nexport function RemoveSubjectMemberView(props: PropTypes): React.ReactElement {\r\n const [ subject, setSubject ] = React.useState<Subject>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const member = Flight.useBasicFetch<MemberType>(getMemberRequest(props.memberType, props.memberId));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getSubjectFetchOptions(props.subjectId, setSubject),\r\n [props.subjectId]\r\n );\r\n\r\n const removeMember = () => {\r\n setShowButtonSpinner(true);\r\n\r\n subjectDataService.removeObjectsFromSubject(\r\n props.subjectId,\r\n [props.memberId],\r\n props.memberType,\r\n props.closePopup,\r\n props.closePopup\r\n );\r\n };\r\n\r\n const dataLoaded = !!subject && !!member.data;\r\n\r\n const popupTitle = `Remove ${StringHelper.capitalizeFirstLetter(\r\n SubjectMemberHelper.singularizeMemberType(props.memberType))}`;\r\n\r\n return (\r\n <Popup title={popupTitle} closePopup={props.closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div>\r\n <p>\r\n Are you sure you want to remove <strong>\r\n {member.data.name}</strong> from <strong>{subject.name}</strong>?\r\n </p>\r\n <p>Please ensure that it is not in any classifications before removing.</p>\r\n </div>\r\n <PopupButtons\r\n buttons={[\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeMember,\r\n buttonText: `Yes, remove this ${SubjectMemberHelper.singularizeMemberType(props.memberType)}`,\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]}\r\n />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './RemoveSubjectMemberView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { EditSubjectNav, SubjectClassifications } from 'apps/subjects/components';\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nfunction useFetchData(\r\n subjectId: string,\r\n setState: React.Dispatch<React.SetStateAction<SubjectClassificationsViewState>>\r\n): void {\r\n const getSetState = (key: keyof SubjectClassificationsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(subjectId, getSetState('classifications')),\r\n [subjectId]\r\n );\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')), []);\r\n}\r\n\r\ninterface SubjectClassificationsViewState {\r\n classifications?: Classification[];\r\n presentations?: Presentation[];\r\n}\r\n\r\ninterface SubjectClassificationsViewProps {\r\n subjectId: string;\r\n}\r\n\r\nexport function SubjectClassificationsView({ subjectId }: SubjectClassificationsViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<SubjectClassificationsViewState>({});\r\n\r\n useFetchData(subjectId, setState);\r\n\r\n return (\r\n <>\r\n <EditSubjectNav subjectId={subjectId} activeAction={Actions.Subjects.SUBJECT_CLASSIFICATIONS} />\r\n <SubjectClassifications\r\n presentations={state.presentations}\r\n classificationDictionary={ArrayHelper.groupBy(state.classifications, 'presentationId')}\r\n />\r\n </>\r\n );\r\n}","export * from './SubjectClassificationsView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { Tree, TreeNodeAction } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nimport styles from './subject-nav.scss';\r\n\r\ninterface SubjectNavViewProps {\r\n selectedSubjectId?: string;\r\n}\r\n\r\nexport function SubjectNavView({ selectedSubjectId }: SubjectNavViewProps): React.ReactElement {\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n useFetch(SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree), []);\r\n\r\n const getAppLink = React.useCallback((subject: SubjectTree) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [subject.id]\r\n }), []);\r\n\r\n const newSubjectAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_SUBJECT\r\n };\r\n\r\n const actions: TreeNodeAction<SubjectTree>[] = [\r\n {\r\n label: 'Add child',\r\n getAppLink: (s: SubjectTree) => ({\r\n ...newSubjectAppLink,\r\n params: { parentId: s.id }\r\n })\r\n },\r\n {\r\n label: 'Delete subject',\r\n getAppLink: (s: SubjectTree) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_SUBJECT,\r\n args: [s.id]\r\n }),\r\n className: 'text-danger'\r\n }\r\n ];\r\n\r\n return (\r\n <div className={`${styles.navContainer} h-auto pr-2 border-right`}>\r\n <h5 className='border-bottom pb-2'>Subjects</h5>\r\n <AppLink appLink={newSubjectAppLink} className='d-inline-block pb-2'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Subject</span>\r\n </AppLink>\r\n {!!subjectTree &&\r\n <div className='border-top pt-1'>\r\n <Tree<SubjectTree>\r\n tree={subjectTree}\r\n getAppLink={getAppLink}\r\n selectedIds={[selectedSubjectId]}\r\n actions={actions}\r\n />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}","export * from './SubjectNavView';","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navContainer\":\"cv--navContainer--3vLoN\"};","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { TopNav } from 'apps/subjects/components';\r\nimport { SubjectsNavHelper } from 'apps/subjects/utils';\r\n\r\ninterface TopNavViewProps {\r\n currentAppLink: Core.AppLink;\r\n}\r\n\r\nexport function TopNavView({ currentAppLink }: TopNavViewProps): React.ReactElement {\r\n return <TopNav navItems={SubjectsNavHelper.getTopNavItems()} currentAppLink={currentAppLink} />;\r\n}","export * from './TopNavView';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views/image-upload/ImageUploadView';\r\n\r\nimport { ThemesView } from 'apps/themes/views/themes';\r\nimport { NewThemeView } from 'apps/themes/views/new-theme';\r\nimport { EditThemeView } from 'apps/themes/views/edit-theme';\r\nimport { DeleteThemeView } from 'apps/themes/views/delete-theme';\r\nimport { ThemesAppContextProvider } from 'apps/themes/context/ThemesAppContext';\r\n\r\nclass ThemesAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.THEMES;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/themes(/)': 'themes',\r\n 'manage/themes/new(/)': 'newTheme',\r\n 'manage/themes/:id(/)': 'editTheme',\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deleteTheme',\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class ThemesApplication extends ReactApplication {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'Themes Application';\r\n }\r\n\r\n public static get router(): any {\r\n return ThemesAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.THEMES;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: ThemesAppContextProvider\r\n }\r\n };\r\n }\r\n\r\n public themes(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ThemesView />);\r\n }\r\n\r\n public newTheme(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewThemeView />);\r\n }\r\n\r\n public editTheme(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditThemeView id={id} />);\r\n }\r\n\r\n public deleteTheme(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeleteThemeView id={id} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <ImageUploadView imageType={imageType} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\r\nimport { Theme } from 'libs/shared/interfaces';\r\nimport { ThemeType } from 'libs/shared/enums/ThemeType';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\n\r\nimport { EditGlanceData } from './edit-data/EditGlanceData';\r\nimport { ThemeValidationSchema } from './ThemeValidation';\r\n\r\nfunction getEditDataComponent(type: ThemeType): () => JSX.Element {\r\n switch (type) {\r\n case ThemeType.Glance:\r\n return EditGlanceData;\r\n\r\n default:\r\n return;\r\n }\r\n}\r\n\r\ninterface ThemeFormProps {\r\n isNew: boolean;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nfunction ThemeForm(props: ThemeFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateThemeRequest>();\r\n\r\n const EditData = getEditDataComponent(formikProps.values.type);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateThemeRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this theme'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdateThemeRequest>\r\n as='select'\r\n label='Type'\r\n name='type'\r\n id='type'\r\n value={formikProps.values.type}\r\n >\r\n <option value={null}>Select a type...</option>\r\n {ObjectHelper.getEnumKeys(ThemeType).map((key: ThemeType) =>\r\n <option key={key} value={(ThemeType as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n {!!EditData && <EditData />}\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <FormButtons isNew={props.isNew} />\r\n {!!props.actions && <Actions actions={props.actions} />}\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface EditThemeProps {\r\n saveTheme: (data: CreateOrUpdateThemeRequest, onDone: () => void) => void;\r\n theme?: Theme;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function EditTheme(props: EditThemeProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdateThemeRequest, Theme>\r\n initialValues={props.theme}\r\n validationSchema={ThemeValidationSchema}\r\n onSubmit={props.saveTheme}\r\n >\r\n <ThemeForm isNew={!props.theme?.id} actions={props.actions} />\r\n </FormWrapper>\r\n );\r\n}","import * as Yup from 'yup';\r\n\r\nimport { ThemeData, HeroBanner } from 'libs/shared/interfaces';\r\nimport { ThemeType } from 'libs/shared/enums/ThemeType';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\n\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\n\r\n// TODO Swap out HeroBanner for correct ImageType\r\nconst ImageValidation = Yup.object()\r\n .shape<HeroBanner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown();\r\n\r\nexport const ThemeValidationSchema = Yup.object().shape<CreateOrUpdateThemeRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n type: Yup.mixed<ThemeType>()\r\n .required('Type is required'),\r\n\r\n data: Yup.mixed<ThemeData>()\r\n .when('type', {\r\n is: ThemeType.Glance,\r\n then: Yup.object().shape<ThemeData>({\r\n topLeft: ImageValidation,\r\n topRight: ImageValidation,\r\n bottomLeft: ImageValidation,\r\n bottomRight: ImageValidation\r\n })\r\n .noUnknown(),\r\n otherwise: Yup.mixed().strip(true)\r\n })\r\n .default({}),\r\n\r\n}).noUnknown();","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\nimport { ImageType, FileIdType } from 'libs/shared/enums/Images';\r\nimport { Image } from 'libs/shared/interfaces';\r\n\r\nimport { ImageSelect } from 'shared/components/forms/image-select/ImageSelect';\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\n\r\nconst attributes = [\r\n { key: 'topLeft', label: 'Top Left' },\r\n { key: 'topRight', label: 'Top Right' },\r\n { key: 'bottomLeft', label: 'Bottom Left' },\r\n { key: 'bottomRight', label: 'Bottom Right' }\r\n];\r\n\r\nexport function EditGlanceData(): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateThemeRequest>();\r\n\r\n return (\r\n <div className='form-group'>\r\n {attributes.map(attribute => {\r\n const fieldName = `data.${attribute.key}` as keyof CreateOrUpdateThemeRequest;\r\n\r\n return (\r\n <ImageSelect<CreateOrUpdateThemeRequest>\r\n label={attribute.label}\r\n imageType={ImageType.HeroBanners} // TODO Replace imageType\r\n fieldName={fieldName}\r\n application={AppChannels.THEMES}\r\n uploadAction={Actions.Videos.UPLOAD_IMAGE}\r\n setSelectedImage={(image: Image) => {\r\n /**\r\n * Overriding setSelectedImage in ImageSelect as normally when setting an\r\n * image assoc, we don't set the url, allowing Master to generate it when the\r\n * image object is requested. The data prop in Themes is not strongly typed\r\n * though so we have to set the url upon creation.\r\n */\r\n formikProps.setFieldValue(fieldName, {\r\n fileId: image.id,\r\n url: image.url,\r\n fileIdType: FileIdType.ImageAPIv2\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n );\r\n}","export * from './EditTheme';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider } from 'shared/context/ImageStorageContext';\r\nimport { UserContextProvider } from 'shared/context/UserContext';\r\n\r\nexport const ThemesAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <UserContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </UserContextProvider>\r\n);","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\n\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\n\r\nexport const ThemeRequests = {\r\n theme(id: string): Flight.Request {\r\n return {\r\n url: `/api/domain/v1/themes/${id}`,\r\n key: `themes:${id}`\r\n };\r\n },\r\n\r\n themes(type?: string): Flight.Request {\r\n let url = '/api/domain/v1/themes';\r\n let key = 'themes';\r\n\r\n if (type) {\r\n url += `?type=${type}`;\r\n key += `:type:${type}`;\r\n }\r\n\r\n return {\r\n url,\r\n key\r\n };\r\n },\r\n\r\n createTheme(\r\n data: CreateOrUpdateThemeRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: '/api/domain/v1/themes',\r\n key: 'theme',\r\n data,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: 'themes',\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n updateTheme(\r\n id: string,\r\n data: CreateOrUpdateThemeRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/domain/v1/themes/${id}`,\r\n key: `update:theme:${id}`,\r\n data,\r\n type: HttpVerbs.PUT,\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n deleteTheme(\r\n id: string,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/domain/v1/themes/${id}`,\r\n key: `delete:theme:${id}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: 'themes',\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Theme, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\n\r\ninterface DeleteThemeViewProps {\r\n id: string;\r\n}\r\n\r\nexport function DeleteThemeView(props: DeleteThemeViewProps & PopupViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const theme = Flight.useBasicFetch<Theme>(ThemeRequests.theme(props.id));\r\n\r\n function deleteTheme(): void {\r\n setShowButtonSpinner(true);\r\n\r\n const success = () => {\r\n alerts.success('Successfully deleted theme');\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.THEMES,\r\n action: Actions.Themes.THEMES\r\n });\r\n };\r\n\r\n const error = () => {\r\n alerts.error('Failed to delete theme');\r\n };\r\n\r\n Flight.fetch(dispatch, ThemeRequests.deleteTheme(props.id, success, error));\r\n }\r\n\r\n return (\r\n <Popup title='Delete Theme' closePopup={props.closePopup} showLoadingSpinner={!theme.data}>\r\n <>\r\n <p>Are you sure you want to delete <strong>{theme.data.name}</strong>?</p>\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteTheme,\r\n buttonText: 'Yes, delete this theme',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </>\r\n </Popup>\r\n );\r\n}","export * from './DeleteThemeView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { Theme } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\nimport { EditTheme } from 'apps/themes/components/edit-theme';\r\n\r\ninterface EditThemeViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditThemeView(props: EditThemeViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const theme = Flight.useBasicFetch<Theme>(ThemeRequests.theme(props.id));\r\n\r\n function saveTheme(data: CreateOrUpdateThemeRequest, onDone: () => void): void {\r\n const success = () => {\r\n alerts.success('Successfully updated theme');\r\n };\r\n\r\n const error = () => {\r\n alerts.error('Failed to update theme');\r\n };\r\n\r\n Flight.fetch(dispatch, ThemeRequests.updateTheme(props.id, data, success, error, onDone));\r\n }\r\n\r\n if (!theme.data)\r\n return <></>;\r\n\r\n return (\r\n <EditTheme\r\n theme={theme.data}\r\n saveTheme={saveTheme}\r\n actions={[{\r\n label: 'Delete theme',\r\n className: 'btn btn-danger',\r\n button: true,\r\n appLink: { application: AppChannels.THEMES, action: Actions.Themes.DELETE_THEME, args: [props.id]}\r\n }]}\r\n />\r\n );\r\n}","export * from './EditThemeView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { Theme } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\nimport { EditTheme } from 'apps/themes/components/edit-theme';\r\n\r\nexport function NewThemeView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createTheme = (data: CreateOrUpdateThemeRequest, onDone: () => void): void => {\r\n const onSuccess = (newTheme: Theme) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.THEMES,\r\n action: Actions.Themes.EDIT_THEME,\r\n args: [newTheme.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, ThemeRequests.createTheme(data, onSuccess, null, onDone));\r\n };\r\n\r\n return (\r\n <EditTheme saveTheme={createTheme} />\r\n );\r\n}","export * from './NewThemeView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Theme } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { ObjectList } from 'shared/components/object-list';\r\n\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\n\r\nconst getThemeAppLink = (theme: Theme) => ({\r\n application: AppChannels.THEMES,\r\n action: Actions.Themes.EDIT_THEME,\r\n args: [theme.id]\r\n});\r\n\r\nexport function ThemesView(): JSX.Element {\r\n const themes = Flight.useBasicFetch<Theme[]>(ThemeRequests.themes());\r\n\r\n if (!themes.data)\r\n return <></>;\r\n\r\n return (\r\n <ObjectList\r\n objects={themes.data}\r\n getObjectAppLink={getThemeAppLink}\r\n newObjectAppLink={{ application: AppChannels.THEMES, action: Actions.Themes.NEW_THEME }}\r\n objectName='Theme'\r\n />\r\n );\r\n}","export * from './ThemesView';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\n\r\nimport { AppChannels, Layouts, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutViewOptions, CuratorLayoutView } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views/image-upload/ImageUploadView';\r\n\r\nimport { VideosAppContextProvider } from 'apps/videos/context';\r\nimport { EditVideoView, EditVideoAudiencesView, EditVideoSubjectsView, EditVideoAliasesView } from 'apps/videos/views';\r\n\r\nclass VideosAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.VIDEOS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/videos/:id(/)': 'editVideo',\r\n 'manage/videos/:id/audiences(/)': 'editVideoAudiences',\r\n 'manage/videos/:id/subjects(/)': 'editVideoSubjects',\r\n 'manage/videos/:id/aliases(/)': 'editVideoAliases',\r\n\r\n 'tools/programlookup/:id': 'legacyEditVideo'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class VideosApplication extends ReactApplication {\r\n protected layout: CuratorLayoutView;\r\n\r\n public initialize(): void {\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Videos Application';\r\n }\r\n\r\n public static get router(): any {\r\n return VideosAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.VIDEOS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: VideosAppContextProvider,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public editVideo(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoView videoId={videoId} />);\r\n }\r\n\r\n public editVideoAudiences(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoAudiencesView videoId={videoId} />);\r\n }\r\n\r\n public editVideoSubjects(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoSubjectsView videoId={videoId} />);\r\n }\r\n\r\n public editVideoAliases(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoAliasesView videoId={videoId} />);\r\n }\r\n\r\n public legacyEditVideo(videoId: string): void {\r\n Core.LocationUtils.Redirect(`/tools/programlookup/${videoId}`);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <ImageUploadView imageType={imageType} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\nimport * as marked from 'marked';\r\n\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nimport { Theme } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { GlanceFormat } from 'libs/shared/enums/GlanceFormat';\r\n\r\nimport { UpdateVideoRequest } from 'apps/videos/interfaces';\r\n\r\ninterface EditGlanceProps {\r\n themes: Theme[];\r\n}\r\n\r\nexport function EditGlance(props: EditGlanceProps): JSX.Element {\r\n const formikProps = useFormikContext<UpdateVideoRequest>();\r\n\r\n return (\r\n <div className='form-group p-2 border'>\r\n <div className='border-bottom mb-2'>\r\n <label>Summary</label>\r\n </div>\r\n <FormField<UpdateVideoRequest>\r\n as='select'\r\n label='Theme'\r\n name='glance.theme'\r\n id='type'\r\n value={formikProps.values.glance?.theme}\r\n >\r\n <option value={null}>Select a theme...</option>\r\n {props.themes.map(theme =>\r\n <option key={theme.id} value={theme.name}>{theme.name}</option>\r\n )}\r\n </FormField>\r\n <FormField<UpdateVideoRequest>\r\n as='select'\r\n label='Format'\r\n name='glance.format'\r\n id='type'\r\n value={formikProps.values.glance?.format}\r\n >\r\n <option value={null}>Select a format...</option>\r\n {ObjectHelper.getEnumKeys(GlanceFormat).map((key: string) =>\r\n <option key={key} value={(GlanceFormat as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n <FormField<UpdateVideoRequest>\r\n label='Content'\r\n as='textarea'\r\n name='glance.content'\r\n id='content'\r\n value={formikProps.values.glance?.content}\r\n />\r\n {formikProps.values.glance?.format === GlanceFormat.Markdown &&\r\n <div className='form-group'>\r\n <label>Content Preview</label>\r\n <div\r\n className='border rounded py-2'\r\n dangerouslySetInnerHTML={{ __html: marked(formikProps.values.glance?.content) }}\r\n />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Video, Rating, Theme } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { UpdateVideoRequest, RightslineVideo } from 'apps/videos/interfaces';\r\nimport { VideoValidationSchema } from 'apps/videos/utils/VideoValidation';\r\n\r\nimport { VideoDetailsForm } from './VideoDetailsForm';\r\n\r\nfunction getVideoData(video: Video, rightslineVideo: RightslineVideo): Video {\r\n if (!video)\r\n return;\r\n\r\n if (!rightslineVideo)\r\n return video;\r\n\r\n return { ...video, ...rightslineVideo };\r\n}\r\n\r\ninterface EditVideoDetailsProps {\r\n video: Video;\r\n saveVideo: (data: UpdateVideoRequest, onDone: () => void) => void;\r\n ratings: Rating[];\r\n themes: Theme[];\r\n rightslineId?: string;\r\n rightslineVideo?: RightslineVideo;\r\n}\r\n\r\nexport function EditVideoDetails(props: EditVideoDetailsProps): JSX.Element {\r\n return (\r\n <FormWrapper<UpdateVideoRequest, Video>\r\n initialValues={getVideoData(props.video, props.rightslineVideo)}\r\n validationSchema={VideoValidationSchema}\r\n onSubmit={props.saveVideo}\r\n allowInitialSubmit={!!props.rightslineVideo} // data may have changed on sync from Rightsline\r\n >\r\n <VideoDetailsForm\r\n id={props.video && props.video.id}\r\n ratings={props.ratings}\r\n themes={props.themes}\r\n rightslineId={props.rightslineId}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { Rating, Theme } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\n\r\nimport { RatingSelect } from 'shared/components/rating-select';\r\nimport { CurationStatus } from 'shared/enums/CurationStatus';\r\nimport { ImageSelect } from 'shared/components/forms/image-select';\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { UpdateVideoRequest } from 'apps/videos/interfaces';\r\nimport { EditGlance } from './EditGlance';\r\n\r\nfunction getStatusBadgeClass(status: CurationStatus): string {\r\n switch (status) {\r\n case CurationStatus.Published:\r\n return 'badge-success';\r\n\r\n case CurationStatus.Archived:\r\n return 'badge-danger';\r\n\r\n case CurationStatus.Draft:\r\n return 'badge-warning';\r\n\r\n case CurationStatus.Pending:\r\n return 'badge-info';\r\n\r\n case CurationStatus.Rejected:\r\n return 'badge-dark';\r\n\r\n default:\r\n return 'badge-secondary';\r\n }\r\n}\r\n\r\ninterface VideoDetailsFormProps {\r\n id: string;\r\n ratings: Rating[];\r\n themes: Theme[];\r\n rightslineId?: string;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function VideoDetailsForm(props: VideoDetailsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<UpdateVideoRequest>();\r\n\r\n const isRightsline = !!props.rightslineId;\r\n\r\n return (\r\n <Form>\r\n {isRightsline &&\r\n <FormField\r\n label='Rightsline ID'\r\n name='rightslineId'\r\n id='rightslineId'\r\n value={props.rightslineId}\r\n disabled\r\n />\r\n }\r\n <FormField<UpdateVideoRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this video'\r\n disabled={isRightsline}\r\n autoFocus\r\n />\r\n <div className='form-group'>\r\n <label>Status</label>\r\n <div>\r\n <span className={`badge ${getStatusBadgeClass(formikProps.values.status)}`}>\r\n {CurationStatus[formikProps.values.status]}\r\n </span>\r\n </div>\r\n </div>\r\n <FormField<UpdateVideoRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n value={formikProps.values.description}\r\n placeholder='Describe this video here'\r\n disabled={isRightsline}\r\n showCharacterCounter\r\n />\r\n <FormField<UpdateVideoRequest>\r\n label='Production Year'\r\n type='number'\r\n name='productionYear'\r\n id='productionYear'\r\n value={formikProps.values.productionYear}\r\n disabled={isRightsline}\r\n />\r\n <RatingSelect<UpdateVideoRequest> ratings={props.ratings} disabled={isRightsline} />\r\n <ImageSelect<UpdateVideoRequest>\r\n imageType={ImageType.Thumbnails}\r\n fieldName='thumbnail'\r\n application={AppChannels.VIDEOS}\r\n uploadAction={Actions.Videos.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect<UpdateVideoRequest>\r\n imageType={ImageType.HeroBanners}\r\n fieldName='heroBanner'\r\n application={AppChannels.VIDEOS}\r\n uploadAction={Actions.Videos.UPLOAD_IMAGE}\r\n />\r\n <EditGlance themes={props.themes} />\r\n <FormButtons isNew={!props.id} />\r\n </Form>\r\n );\r\n}","export * from './EditVideoDetails';","import * as React from 'react';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { VideoNavHelper } from 'apps/videos/utils/VideoNavHelper';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditVideoNavProps {\r\n videoId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditVideoNav({ videoId, activeAction }: EditVideoNavProps): React.ReactElement {\r\n return (\r\n <div className='py-2'>\r\n <Tabs tabs={VideoNavHelper.getEditVideoTabs(videoId)} isItemActive={isItemActive(activeAction)} />\r\n </div>\r\n );\r\n}","export * from './EditVideoNav';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider, UserContextProvider } from 'shared/context';\r\n\r\nexport const VideosAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <UserContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </UserContextProvider>\r\n);","export * from './VideosAppContext';","import { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { UpdateVideoRequest } from 'apps/videos/interfaces';\r\n\r\nconst WithStatements = {\r\n VIDEO: 'rating,thumbnail,glance'\r\n};\r\n\r\nexport const VideoRequests = {\r\n video(id: string): Flight.Request {\r\n return {\r\n url: `/api/master/v2/objects/${id}?query=${WithStatements.VIDEO}`,\r\n key: `videos:${id}`\r\n };\r\n },\r\n\r\n videosById(ids: string[]): Flight.Request {\r\n const sortedIds = ids.slice().sort();\r\n\r\n return {\r\n key: `videos:${sortedIds.join(',')}`,\r\n url: `/api/master/v2/objects?${sortedIds.map(id => `id=${id}`).join('&')}`\r\n };\r\n },\r\n\r\n rightslineVideo(id: string): Flight.Request {\r\n return {\r\n url: `/ajax/hostedlibraries/rightsline/programs/${id}`,\r\n key: `rightsline:videos:${id}`,\r\n normalizeOptions: {\r\n namespace: 'rightsline'\r\n }\r\n };\r\n },\r\n\r\n updateVideo(\r\n id: string,\r\n data: UpdateVideoRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (Xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n key: `videos:${id}`,\r\n url: `/api/master/v2/objects/${id}`,\r\n data,\r\n type: HttpVerbs.PUT,\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nexport const VideoNavHelper = {\r\n getEditVideoTabs(videoId: string): NavItem[] {\r\n const application = AppChannels.VIDEOS;\r\n const actions = Actions.Videos;\r\n\r\n return [\r\n {\r\n label: 'Edit Video Details',\r\n appLink: { application, action: actions.EDIT_VIDEO, args: [videoId]}\r\n },\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.EDIT_VIDEO_SUBJECTS, args: [videoId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.EDIT_VIDEO_AUDIENCES, args: [videoId]}\r\n },\r\n {\r\n label: 'Aliases',\r\n appLink: { application, action: actions.EDIT_VIDEO_ALIASES, args: [videoId]}\r\n }\r\n ];\r\n }\r\n};","import * as Yup from 'yup';\r\n\r\nimport { Thumbnail, HeroBanner, Glance } from 'libs/shared/interfaces';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\nimport { GlanceFormat } from 'libs/shared/enums/GlanceFormat';\r\n\r\nimport { UpdateObjectRating } from 'shared/interfaces';\r\nimport { CurationStatus } from 'shared/enums/CurationStatus';\r\n\r\nimport { UpdateVideoRequest } from 'apps/videos/interfaces';\r\n\r\nexport const VideoValidationSchema = Yup.object().shape<UpdateVideoRequest>({\r\n\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n description: Yup.string()\r\n .trim()\r\n .default(''),\r\n\r\n status: Yup.mixed<CurationStatus>()\r\n .required('Status is required'),\r\n\r\n productionYear: Yup.number()\r\n .min(1900),\r\n\r\n rating: Yup.object()\r\n .shape<UpdateObjectRating>({\r\n id: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n thumbnail: Yup.object()\r\n .shape<Thumbnail>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n heroBanner: Yup.object()\r\n .shape<HeroBanner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n glance: Yup.object()\r\n .shape<Glance>({\r\n theme: Yup.string(),\r\n format: Yup.mixed<GlanceFormat>(),\r\n content: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { Actions } from 'shared/constants';\r\nimport { AliasCollection, CreateAliasRequest } from 'shared/interfaces';\r\n\r\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav';\r\nimport { Aliases } from 'shared/components/aliases';\r\nimport { AliasesRequests } from 'shared/flight-requests/AliasRequests';\r\n\r\ninterface EditVideoAliasesViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoAliasesView({ videoId }: EditVideoAliasesViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const aliases = Flight.useBasicFetch<AliasCollection>(AliasesRequests.getAliases(videoId));\r\n\r\n function createAlias(alias: CreateAliasRequest, success: () => void): void {\r\n Flight.fetch(dispatch, AliasesRequests.createAlias(videoId, alias, () => {\r\n alerts.success('Successfully created alias');\r\n success();\r\n }, () => {\r\n alerts.error('Something went wrong creating your alias');\r\n }));\r\n }\r\n\r\n function deleteAlias(id: string): void {\r\n Flight.fetch(dispatch, AliasesRequests.deleteAlias(videoId, id, () => {\r\n alerts.success('Successfully deleted alias');\r\n }, () => {\r\n alerts.error('Something went wrong deleting your alias');\r\n }));\r\n }\r\n\r\n if (!aliases.data)\r\n return <>Loading...</>;\r\n\r\n return (\r\n <>\r\n <EditVideoNav videoId={videoId} activeAction={Actions.Videos.EDIT_VIDEO_ALIASES} />\r\n <Aliases\r\n aliases={aliases.data.data}\r\n onSave={createAlias}\r\n onDelete={deleteAlias}\r\n />\r\n </>\r\n );\r\n}","export * from './EditVideoAliasesView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Video, PresentationAudience } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { Actions, DataServices } from 'shared/constants';\r\n\r\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectAudiences } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { Presentation, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditVideoAudiencesViewState {\r\n presentations?: Presentation[];\r\n levels?: Level[];\r\n\r\n videoLevels?: Level[];\r\n videoAudiences?: PresentationAudience[];\r\n\r\n currentPresentation?: Presentation;\r\n presentationAudiences?: PresentationAudience[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditVideoAudiencesViewState>>;\r\n\r\nfunction useFetchData(videoId: string, state: EditVideoAudiencesViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditVideoAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectLevelsFetchOptions(videoId, SubjectMemberType.Videos, getSetState('videoLevels')),\r\n [videoId]\r\n );\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectAudiencesFetchOptions(\r\n videoId, SubjectMemberType.Videos, getSetState('videoAudiences')),\r\n [ videoId, state.videoLevels ]\r\n );\r\n\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')),\r\n SubjectDataServiceHelper.getLevelsFetchOptions(getSetState('levels')),\r\n ], []);\r\n\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getAudiencesFetchOptions(\r\n state.currentPresentation.id, getSetState('presentationAudiences')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n}\r\n\r\ninterface EditVideoAudiencesViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoAudiencesView(props: EditVideoAudiencesViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<EditVideoAudiencesViewState>({});\r\n\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.videoId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.presentations && !!state.levels && !!state.presentationAudiences\r\n && !!state.videoLevels && !!state.videoAudiences;\r\n\r\n return (\r\n <>\r\n <EditVideoNav videoId={props.videoId} activeAction={Actions.Videos.EDIT_VIDEO_AUDIENCES} />\r\n <ObjectHeader object={video.data} />\r\n {!!dataLoaded &&\r\n <EditObjectAudiences\r\n objectLevels={state.videoLevels}\r\n objectAudiences={state.videoAudiences}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n levels={state.levels}\r\n presentationAudiences={state.presentationAudiences}\r\n memberType={SubjectMemberType.Videos}\r\n saveLevels={(levelIds: string[], addToAudiences: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectLevels(\r\n props.videoId, levelIds, SubjectMemberType.Videos, addToAudiences, onDone, onDone)\r\n }\r\n saveAudiences={(audienceIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectAudiences(\r\n props.videoId, state.currentPresentation.id, audienceIds, SubjectMemberType.Videos, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditVideoAudiencesView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Video, Subject, Classification } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectSubjects } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\ninterface EditVideoSubjectsViewState {\r\n videoSubjects?: Subject[];\r\n subjectTree?: SubjectTree;\r\n subjectClassifications?: Classification[];\r\n\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n\r\n classificationTree?: ClassificationTree;\r\n videoClassifications?: Classification[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditVideoSubjectsViewState>>;\r\n\r\nfunction useFetchData(videoId: string, state: EditVideoSubjectsViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditVideoSubjectsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getSubjectTreeFetchOptions(getSetState('subjectTree')),\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations'))\r\n ], []);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectSubjectsFetchOptions(videoId, SubjectMemberType.Videos, getSetState('videoSubjects')),\r\n [videoId]\r\n );\r\n\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getClassificationTreeFetchOptions(\r\n state.currentPresentation.id, getSetState('classificationTree')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n\r\n // Reset subjectClassifications whenever videoSubjects changes\r\n React.useEffect(() => getSetState('subjectClassifications')([]), [state.videoSubjects]);\r\n\r\n const setSubjectClassifications = (\r\n classifications: Classification[], currentState: EditVideoSubjectsViewState\r\n ) => ([ ...(currentState.subjectClassifications || []), ...classifications ]);\r\n\r\n // Fetch classifications for each subject\r\n const subjectClassificationsFetchOptions = state.videoSubjects && state.videoSubjects.map(s =>\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n s.id, StateHelper.getSetStateByKey(setState, 'subjectClassifications', setSubjectClassifications))\r\n );\r\n\r\n useBulkFetch(subjectClassificationsFetchOptions, [state.videoSubjects], !!subjectClassificationsFetchOptions);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectClassificationsFetchOptions(videoId, SubjectMemberType.Videos, getSetState('videoClassifications')),\r\n [ videoId, state.videoSubjects ]\r\n );\r\n}\r\n\r\ninterface EditVideoSubjectsViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoSubjectsView(props: EditVideoSubjectsViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<EditVideoSubjectsViewState>({});\r\n\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.videoId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.videoSubjects && !!state.subjectTree && !!state.presentations\r\n && !!state.classificationTree && !!state.videoClassifications && !!state.subjectClassifications;\r\n\r\n return (\r\n <>\r\n <EditVideoNav videoId={props.videoId} activeAction={Actions.Videos.EDIT_VIDEO_SUBJECTS} />\r\n <ObjectHeader object={video.data} />\r\n {dataLoaded &&\r\n <EditObjectSubjects\r\n objectSubjects={state.videoSubjects}\r\n subjectTree={state.subjectTree}\r\n memberType={SubjectMemberType.Videos}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n objectClassifications={state.videoClassifications}\r\n objectSubjectClassifications={state.subjectClassifications}\r\n classificationTree={state.classificationTree}\r\n saveSubjects={(subjectsId: string[], addToClassifications: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectSubjects(\r\n props.videoId, subjectsId, SubjectMemberType.Videos, addToClassifications, onDone, onDone)\r\n }\r\n saveClassifications={(classificationIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectClassifications(\r\n props.videoId, state.currentPresentation.id, classificationIds, SubjectMemberType.Videos, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}\r\n","export * from './EditVideoSubjectsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Video, Rating, Theme } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { ThemeType } from 'libs/shared/enums/ThemeType';\r\n\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\r\n\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav';\r\nimport { EditVideoDetails } from 'apps/videos/components/edit-video-details';\r\nimport { UpdateVideoRequest, RightslineVideo } from 'apps/videos/interfaces';\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\n\r\nfunction getLegacyVideoAppLink(videoId: string): Core.AppLink {\r\n return {\r\n application: AppChannels.VIDEOS,\r\n action: Actions.Videos.LEGACY_EDIT_VIDEO,\r\n args: [videoId]\r\n };\r\n}\r\n\r\ninterface EditVideoViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoView(props: EditVideoViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const [ useRightslineVideoData, setUseRightslineVideoData ] = React.useState(false);\r\n\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n const rightslineVideo = Flight.useBasicFetch<RightslineVideo>(VideoRequests.rightslineVideo(props.videoId));\r\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\r\n const themes = Flight.useBasicFetch<Theme[]>(ThemeRequests.themes(ThemeType.Glance));\r\n\r\n function fetchRightsline(): void {\r\n if (rightslineVideo.isFetching)\r\n return;\r\n\r\n setUseRightslineVideoData(true);\r\n\r\n // Re-fetch Rightsline data in case it has changed while this page is open.\r\n Flight.fetch(dispatch, VideoRequests.rightslineVideo(props.videoId));\r\n }\r\n\r\n function saveVideo(data: UpdateVideoRequest, onDone: () => void): void {\r\n Flight.fetch(dispatch, VideoRequests.updateVideo(props.videoId, data, null, null, onDone));\r\n }\r\n\r\n const dataLoaded = !!video.data && !!ratings.data && !!themes.data && rightslineVideo.isComplete;\r\n\r\n return (\r\n <>\r\n <EditVideoNav videoId={props.videoId} activeAction={Actions.Videos.EDIT_VIDEO} />\r\n {!!rightslineVideo.data &&\r\n <div className='pt-3 text-right'>\r\n <Button variant='outline-dark' size='sm' onClick={fetchRightsline}>Sync from Rightsline</Button>\r\n </div>\r\n }\r\n {dataLoaded &&\r\n <EditVideoDetails\r\n video={video.data}\r\n saveVideo={saveVideo}\r\n ratings={ratings.data}\r\n themes={themes.data}\r\n rightslineId={rightslineVideo.data?.rightslineId}\r\n rightslineVideo={useRightslineVideoData && rightslineVideo.data}\r\n />\r\n }\r\n <div className='py-3 text-right'>\r\n {'Can\\'t find what you\\'re looking for? Try the old edit video page '}\r\n <AppLink className='info-link' appLink={getLegacyVideoAppLink(props.videoId)}>here</AppLink>.\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditVideoView';","export * from './edit-video';\r\nexport * from './edit-video-audiences';\r\nexport * from './edit-video-subjects';\r\nexport * from './edit-video-aliases';","import './apps/subjects/views/presentations/select-presentation/select-presentation.lang.json';\r\nimport '../../../libs/shared/src/apps/notifications/components/notification-list/notification-list.lang.json'; import '../../../libs/shared/src/apps/notifications/services/services.lang.json'; import '../../../libs/shared/src/apps/notifications/utils/notifications-utils.lang.json'; import '../../../libs/shared/src/apps/notifications/views/notifications/notifications.lang.json'; import '../../../libs/shared/src/apps/notifications/views/popover/notifications-popover.lang.json'; import '../../../libs/shared/src/apps/playlists/components/empty-state/empty-state.lang.json'; import '../../../libs/shared/src/apps/playlists/components/playlist-list/playlist-item.lang.json'; import '../../../libs/shared/src/apps/playlists/hooks/playlists-hooks.lang.json'; import '../../../libs/shared/src/apps/playlists/validation/playlists-validation.lang.json'; import '../../../libs/shared/src/apps/search/components/search-tips/search-tips.lang.json'; import '../../../libs/shared/src/apps/search/services/search-services.lang.json'; import '../../../libs/shared/src/apps/search/views/search-bar/search-bar.lang.json'; import '../../../libs/shared/src/apps/subjects/components/coming-soon/coming-soon.lang.json'; import '../../../libs/shared/src/apps/subjects/components/hero-video/hero-video.lang.json'; import '../../../libs/shared/src/apps/upload/errors/file-type/file-type.lang.json'; import '../../../libs/shared/src/apps/upload/errors/internet-connectivity/internet-connectivity.lang.json'; import '../../../libs/shared/src/apps/upload/utils/upload-utils.lang.json'; import '../../../libs/shared/src/components/back-button/back-button.lang.json'; import '../../../libs/shared/src/components/edit-video-details/edit-video-details.lang.json'; import '../../../libs/shared/src/components/favourite-button/favourite-button.lang.json'; import '../../../libs/shared/src/components/forms/form-buttons/form-buttons.lang.json'; import '../../../libs/shared/src/components/pagination/pagination.lang.json'; import '../../../libs/shared/src/components/search-bar/search-bar.lang.json'; import '../../../libs/shared/src/components/video-list/components/video-item-description/video-item-description.lang.json'; import '../../../libs/shared/src/components/widgets/dynamic-widget/dynamic-widget.lang.json'; import '../../../libs/shared/src/components/widgets/fixed-widget/fixed-widget.lang.json'; import '../../../libs/shared/src/components/widgets/greeting-widget/greeting.lang.json'; import '../../../libs/shared/src/components/widgets/items/subject-widget-item/subject-widget-item.lang.json'; import '../../../libs/shared/src/legacy/components/pagination/pagination.lang.json'; import '../../../libs/shared/src/utils/shared-utils.lang.json'; import '../../../libs/shared/src/utils/video-actions/video-actions-helper.lang.json';\r\n\r\nexport * from './shared/constants';\r\nexport * from './shared/layouts';\r\nexport * from './shared/services';\r\n\r\nexport * from './apps/companies/CompaniesApplication';\r\n\r\nexport * from './apps/domain-options/DomainOptionsApplication';\r\n\r\nexport * from './apps/people/PeopleApplication';\r\n\r\nexport * from './apps/playlists/PlaylistsApplication';\r\n\r\nexport * from './apps/series/SeriesApplication';\r\n\r\nexport * from './apps/subjects/services';\r\nexport * from './apps/subjects/SubjectsApplication';\r\n\r\nexport * from './apps/themes/ThemesApplication';\r\n\r\nexport * from './apps/videos/VideosApplication';\r\n\r\nexport * from './apps/domain-options/DomainOptionsApplication';\r\n\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { FifoMemoryCache } from 'libs/common/backbone/services/caches/FifoMemoryCache';\r\nimport { AjaxDataProvider } from 'libs/common/backbone/services/data-providers/AjaxDataProvider';\r\nimport { AlertType, BaseAlertService } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\nimport { UserDataService } from 'libs/shared/services/UserDataService';\r\n\r\nexport {\r\n Core,\r\n InstanceManager,\r\n FifoMemoryCache,\r\n AjaxDataProvider,\r\n AlertType,\r\n BaseAlertService,\r\n LanguageService,\r\n Flight,\r\n CacheDurations,\r\n UserDataService\r\n};","import * as React from 'react';\r\n\r\nimport { string, object } from 'yup';\r\nimport { useFormikContext, Form } from 'formik';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { CreateAliasRequest, Alias } from 'shared/interfaces';\r\n\r\nconst AliasValidationSchema = object().shape<CreateAliasRequest>({\r\n name: string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n});\r\n\r\nfunction EditAliasForm(): React.ReactElement {\r\n const formikProps = useFormikContext<CreateAliasRequest>();\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateAliasRequest>\r\n label='Create an alias'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Add an alias'\r\n />\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Add\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface AddAliasProps {\r\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\r\n}\r\n\r\nexport function AddAlias(props : AddAliasProps) : JSX.Element {\r\n const { onSave } = props;\r\n\r\n const onSubmit = (data: CreateAliasRequest, onDone: () => void) : void => {\r\n onSave(data, onDone);\r\n };\r\n\r\n return (\r\n <FormWrapper<CreateAliasRequest, Alias>\r\n initialValues={{ name: '' }}\r\n validationSchema={AliasValidationSchema}\r\n onSubmit={onSubmit}\r\n resetOnSubmit\r\n >\r\n <EditAliasForm />\r\n </FormWrapper>\r\n );\r\n\r\n}","import * as React from 'react';\r\nimport { Alias } from 'shared/interfaces/models';\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\ninterface AliasProps{\r\n alias: Alias;\r\n onDelete: (id: string) => void;\r\n}\r\n\r\nfunction Alias(props: AliasProps) : JSX.Element {\r\n const { alias, onDelete } = props;\r\n\r\n return (\r\n <li className='list-group-item d-flex justify-content-between'>\r\n {alias.name}\r\n <SvgContainer svgName={cvSvgLibrary.Delete} onClick={() => onDelete(alias.id)} />\r\n </li>\r\n );\r\n}\r\n\r\ninterface AliasListProps {\r\n aliases: Alias[];\r\n onDelete: (id: string) => void;\r\n}\r\n\r\nexport function AliasList(props: AliasListProps) : JSX.Element {\r\n const { aliases, onDelete } = props;\r\n\r\n return (\r\n <ul className='list-group mb-3'>\r\n {\r\n aliases\r\n ? aliases.map(alias => <Alias key={alias.id} alias={alias} onDelete={onDelete} />)\r\n : <span>Currently there are no aliases for this object.</span>\r\n }\r\n </ul>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Alias, CreateAliasRequest } from 'shared/interfaces';\r\nimport { AliasList } from './AliasList';\r\nimport { AddAlias } from './AddAlias';\r\n\r\ninterface AliasesProps {\r\n aliases: Alias[];\r\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\r\n onDelete: (id: string) => void;\r\n}\r\n\r\nexport function Aliases(props: AliasesProps) : JSX.Element {\r\n\r\n const { onSave, aliases, onDelete } = props;\r\n\r\n return (\r\n <div className='w-50'>\r\n <h1>Aliases</h1>\r\n <AliasList aliases={aliases} onDelete={onDelete} />\r\n <AddAlias onSave={onSave} />\r\n </div>\r\n );\r\n}","export * from './Aliases';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\ninterface BackButtonProps {\r\n backToName: string;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nexport function BackButton({ backToName, appLink }: BackButtonProps): React.ReactElement {\r\n return (\r\n <AppLink appLink={appLink} className='d-inline-flex align-items-center'>\r\n <SvgContainer svgName={cvSvgLibrary.ArrowLeft} size={SvgContainerSize.Small} />\r\n <span className='ml-1'>{`Back to ${backToName}`}</span>\r\n </AppLink>\r\n );\r\n}","export * from './BackButton';","import * as React from 'react';\r\nimport { Form, FormCheckProps } from 'react-bootstrap';\r\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\r\n\r\ninterface CheckboxProps {\r\n selected: boolean;\r\n onToggle: (selected: boolean) => void;\r\n}\r\n\r\nexport function Checkbox(props : CheckboxProps & FormCheckProps): React.ReactElement {\r\n const { selected, onToggle, ...formCheckProps } = props;\r\n\r\n /**\r\n * We store the value of `selected` in state as `checked` so that if the value\r\n * of `selected` relies on an api call, the UI can be immediately updated.\r\n */\r\n const [ checked, setChecked ] = React.useState(selected);\r\n\r\n React.useEffect(() => setChecked(selected), [selected]);\r\n\r\n const onChangeHandler = () => {\r\n setChecked(!checked);\r\n onToggle(!checked);\r\n };\r\n\r\n return (\r\n <Form.Check\r\n type='checkbox'\r\n id={`checkbox-${RandomHelper.getRandomInt()}`}\r\n checked={checked}\r\n onChange={onChangeHandler}\r\n {...formCheckProps}\r\n />\r\n );\r\n}","export * from './Checkbox';","import * as React from 'react';\r\nimport { FieldAttributes, Field } from 'formik';\r\nimport { Form } from 'react-bootstrap';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nexport interface FileSelectProps {\r\n onFileSelect: (files: FileList) => void;\r\n acceptMultiple?: boolean;\r\n mimeType?: string;\r\n label?: string;\r\n error?: string | string[];\r\n touched?: boolean;\r\n}\r\n\r\nexport function FileSelect(props: FieldAttributes<FileSelectProps>): React.ReactElement {\r\n const { onFileSelect, acceptMultiple, mimeType, label, error, touched, ...fieldProps } = props;\r\n\r\n const showError = error && touched;\r\n\r\n let className = 'custom-file-input cursor-pointer';\r\n\r\n if (showError)\r\n className += ' is-invalid';\r\n\r\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = event.currentTarget.files;\r\n\r\n if (!files || !files.length || !FunctionHelper.isFunction(onFileSelect))\r\n return;\r\n\r\n onFileSelect(files);\r\n };\r\n\r\n const fileInputProps = {\r\n type: 'file',\r\n className,\r\n onChange,\r\n autoComplete: 'off',\r\n value: '',\r\n multiple: !!acceptMultiple,\r\n ...(mimeType ? { accept: mimeType } : {})\r\n };\r\n\r\n return (\r\n <div className='form-group'>\r\n <div className='custom-file'>\r\n <Field {...fileInputProps} {...fieldProps}>{props.children}</Field>\r\n <Form.Label className='custom-file-label' htmlFor={fieldProps.id}>{label}</Form.Label>\r\n </div>\r\n </div>\r\n );\r\n}","export * from './FileSelect';","import * as React from 'react';\r\nimport { useFormikContext, getIn } from 'formik';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { ImageType, FileIdType } from 'libs/shared/enums/Images';\r\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\r\nimport { Image } from 'libs/shared/interfaces';\r\n\r\nimport { FileSelect, FileSelectProps } from 'shared/components';\r\nimport { FileExtensions } from 'shared/constants';\r\nimport { ImageSelectHelper } from 'shared/utils';\r\nimport { ImageStorageContext } from 'shared/context';\r\n\r\nconst DEFAULT_LABEL = 'Image';\r\n\r\nconst Labels = {\r\n [ImageType.Thumbnails]: 'Thumbnail',\r\n [ImageType.Banners]: 'Banner',\r\n [ImageType.Avatars]: 'Avatar',\r\n [ImageType.Logos]: 'Logo',\r\n [ImageType.Covers]: 'Cover',\r\n [ImageType.Posters]: 'Poster',\r\n [ImageType.TallPosters]: 'Tall Poster',\r\n [ImageType.HeroBanners]: 'Hero Banner'\r\n};\r\n\r\ninterface ImageSelectProps<Values extends object> extends Omit<FileSelectProps, 'onFileSelect'> {\r\n imageType: ImageType;\r\n fieldName: keyof Values & string;\r\n application: string;\r\n uploadAction: string;\r\n label?: string;\r\n setSelectedImage?: (image: Image) => void; // formikProps.setFieldValue will be used be default.\r\n}\r\n\r\nexport function ImageSelect<Values extends object>(props: ImageSelectProps<Values>): React.ReactElement {\r\n const formikProps = useFormikContext<Values>();\r\n\r\n const currentImage = getIn(formikProps?.values, props.fieldName);\r\n\r\n const { setDataUrl, getImage, imageUploaded } = React.useContext(ImageStorageContext);\r\n\r\n const [ imageSelected, setImageSelected ] = React.useState(false);\r\n const [ image, setImage ] = React.useState<Image>(currentImage);\r\n const [ hideImage, setHideImage ] = React.useState(false);\r\n\r\n function onImageLoad(imageEl: HTMLImageElement): void {\r\n setImageSelected(true);\r\n setDataUrl(imageEl.src);\r\n\r\n // Trigger Upload Image appLink\r\n Core.AppLinkHelper.trigger({\r\n application: props.application,\r\n action: props.uploadAction,\r\n args: [props.imageType]\r\n });\r\n }\r\n\r\n function setSelectedImage(selectedImage: Image): void {\r\n if (FunctionHelper.isFunction(props.setSelectedImage)) {\r\n props.setSelectedImage(selectedImage);\r\n return;\r\n }\r\n\r\n if (!formikProps)\r\n return;\r\n\r\n formikProps.setFieldValue(props.fieldName, { fileId: selectedImage.id, fileIdType: FileIdType.ImageAPIv2 });\r\n }\r\n\r\n React.useEffect(() => {\r\n if (!imageSelected)\r\n return;\r\n\r\n const newImage = getImage();\r\n\r\n if (!newImage)\r\n return;\r\n\r\n // Prevent this effect from being re-run unless we select an new image in this component.\r\n setImageSelected(false);\r\n setImage(newImage); // Set in component state so image can be viewed.\r\n setSelectedImage(newImage); // Set on parent component.\r\n }, [imageUploaded]);\r\n\r\n const label = props.label || Labels[props.imageType] || DEFAULT_LABEL;\r\n\r\n return (\r\n <div className='form-group'>\r\n <div className='form-control h-auto py-2'>\r\n <label>{label}</label>\r\n <em className='ml-1 text-muted'>\r\n {\r\n `(Minimum dimensions are ${ImageMinDimensions[props.imageType].width}px`\r\n + ` x ${ImageMinDimensions[props.imageType].height}px)`\r\n }\r\n </em>\r\n <FileSelect\r\n label={`Choose a ${label.toLowerCase()}`}\r\n name='image'\r\n mimeType={FileExtensions.IMAGES}\r\n onFileSelect={(files: FileList) => ImageSelectHelper.onFileSelect(props.imageType, files, onImageLoad)}\r\n />\r\n {!!image && !!image.url &&\r\n <>\r\n {!hideImage &&\r\n <div className={`pb-2 ${props.imageType === ImageType.Banners ? 'w-100' : 'w-50'}`}>\r\n <img src={ImageHelper.createUrl(image.url)} className='img img-fluid' />\r\n </div>\r\n }\r\n <div className='d-flex justify-content-center'>\r\n <SvgContainer\r\n svgName={hideImage ? cvSvgLibrary.ChevronDown : cvSvgLibrary.ChevronUp}\r\n size={SvgContainerSize.Large}\r\n className='svg-container cursor-pointer'\r\n onClick={() => setHideImage(!hideImage)}\r\n title={hideImage ? 'Show image' : 'Hide image'}\r\n tooltipPlacement='top'\r\n />\r\n </div>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}","export * from './ImageSelect';","export * from './file-select';\r\nexport * from './image-select';","import * as React from 'react';\r\nimport Cropper from 'cropperjs';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\n\r\n/**\r\n * This enum maps to the viewMode option in the\r\n * Cropperjs documentation. \r\n * https://github.com/fengyuanchen/cropperjs\r\n */\r\nenum CropperViewMode {\r\n NoRestrictions = 0,\r\n RestrictToCanvas = 1\r\n}\r\n\r\nconst MIME_REGEX = /data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,.*/;\r\n\r\nconst getImageMimeType = (dataUrl: string) => {\r\n const mime = dataUrl.match(MIME_REGEX);\r\n\r\n if (!mime)\r\n return;\r\n\r\n return mime[1];\r\n};\r\n\r\ninterface ImageCropperProps {\r\n dataUrl: string;\r\n minHeight: number;\r\n minWidth: number;\r\n onCrop: (dataUrl: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport function ImageCropper(props: ImageCropperProps): React.ReactElement {\r\n const{ dataUrl, minHeight, minWidth, onCrop, onCancel } = props;\r\n\r\n const imageRef = React.useRef<HTMLImageElement>();\r\n const cropperRef = React.useRef<Cropper>();\r\n\r\n const [ imageLoaded, setImageLoaded ] = React.useState(false);\r\n const [ showSpinner, setShowSpinner ] = React.useState(false);\r\n\r\n const crop = () => {\r\n if (!imageLoaded)\r\n return;\r\n\r\n setShowSpinner(true);\r\n\r\n const croppedDataUrl = cropperRef.current.getCroppedCanvas().toDataURL(getImageMimeType(dataUrl));\r\n\r\n FunctionHelper.isFunction(onCrop) && onCrop(croppedDataUrl);\r\n };\r\n\r\n React.useEffect(() => {\r\n const image = new Image();\r\n image.src = dataUrl;\r\n\r\n const viewPortToImageRatio = imageRef.current.offsetWidth / image.width;\r\n\r\n cropperRef.current = new Cropper(imageRef.current, {\r\n viewMode: CropperViewMode.RestrictToCanvas,\r\n autoCropArea: 1, // Number between 0 and 1 that defines the initial cropper area as a percentage of the image.\r\n aspectRatio: minWidth / minHeight,\r\n minCropBoxWidth: minWidth * viewPortToImageRatio,\r\n minCropBoxHeight: minHeight * viewPortToImageRatio,\r\n ready: () => setImageLoaded(true)\r\n });\r\n\r\n return () => cropperRef.current.destroy();\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className='pb-3'>\r\n <img ref={imageRef} src={dataUrl} className='img img-fluid mw-100' />\r\n </div>\r\n <div className='d-flex justify-content-end border-top pt-3'>\r\n <Button variant='link' onClick={onCancel}>Cancel</Button>\r\n <SpinnerButton onClick={crop} disabled={!imageLoaded} showSpinner={showSpinner}>Crop</SpinnerButton>\r\n </div>\r\n </>\r\n );\r\n}","export * from './ImageCropper';","export * from './back-button';\r\nexport * from './checkbox';\r\nexport * from './forms';\r\nexport * from './image-cropper';\r\nexport * from './object-collection';\r\nexport * from './object-header';\r\nexport * from './object-list';\r\nexport * from './object-list-nav';\r\nexport * from './rating-select';\r\nexport * from './tabs';\r\nexport * from './tree';\r\nexport * from './tree-select';\r\nexport * from './video-list';\r\nexport * from './aliases';","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\r\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\r\n\r\nimport { ObjectList } from 'shared/components';\r\n\r\ninterface ObjectCollectionProps {\r\n collection: BasePaginatedCollection<BaseObject>;\r\n collectionAppLink: Core.AppLink;\r\n newObjectAppLink: Core.AppLink;\r\n getObjectAppLink: (obj: BaseObject) => Core.AppLink;\r\n objectName: string;\r\n}\r\n\r\nexport function ObjectCollection(props: ObjectCollectionProps): JSX.Element {\r\n if (!props.collection)\r\n return <></>;\r\n\r\n const { data, pagination } = props.collection;\r\n\r\n return (\r\n <>\r\n {!!data &&\r\n <ObjectList\r\n objects={data}\r\n getObjectAppLink={props.getObjectAppLink}\r\n newObjectAppLink={props.newObjectAppLink}\r\n objectName={props.objectName}\r\n />\r\n }\r\n {!!pagination && !!pagination.cursors &&\r\n <Pagination\r\n cursors={pagination.cursors}\r\n appLink={props.collectionAppLink}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './ObjectCollection';","import * as React from 'react';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\ninterface ObjectHeaderProps {\r\n object: BaseObject;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function ObjectHeader({ object, actions }: ObjectHeaderProps): JSX.Element {\r\n return (\r\n <div className='d-flex justify-content-between py-2'>\r\n {!!object && <h5>{object.name}</h5>}\r\n {!!actions && <span><Actions actions={actions} /></span>}\r\n </div>\r\n );\r\n}","export * from './ObjectHeader';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\ninterface ObjectListNavProps {\r\n objects: BaseObject[];\r\n getAppLink: (obj: BaseObject) => Core.AppLink;\r\n emptyMessage?: string;\r\n}\r\n\r\nObjectListNav.defaultProps = {\r\n emptyMessage: 'There is nothing here.'\r\n};\r\n\r\nexport function ObjectListNav({ objects, getAppLink, emptyMessage }: ObjectListNavProps): React.ReactElement {\r\n if (!objects)\r\n return <></>;\r\n\r\n if (!objects.length)\r\n return <div className='py-3'><p>{emptyMessage}</p></div>;\r\n\r\n return (\r\n <ul className='list-unstyled'>\r\n {objects.map((o, idx) =>\r\n <li key={idx} className='border rounded mb-3'>\r\n <AppLink appLink={getAppLink(o)} className='d-block p-3'>\r\n {o.name}\r\n </AppLink>\r\n </li>\r\n )}\r\n </ul>\r\n );\r\n}","export * from './ObjectListNav';","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\ninterface ObjectItemProps {\r\n object: BaseObject;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nfunction ObjectItem(props: ObjectItemProps): JSX.Element {\r\n return (\r\n <tr>\r\n <td>\r\n <AppLink appLink={props.appLink}>\r\n {props.object.name}\r\n </AppLink>\r\n </td>\r\n <td></td>\r\n </tr>\r\n );\r\n}\r\n\r\ninterface ObjectListProps {\r\n objects: BaseObject[];\r\n newObjectAppLink: Core.AppLink;\r\n getObjectAppLink: (obj: BaseObject) => Core.AppLink;\r\n objectName: string;\r\n}\r\n\r\nexport function ObjectList(props: ObjectListProps): JSX.Element {\r\n return (\r\n <Table responsive>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>\r\n <div className='d-flex justify-content-end'>\r\n <AppLink appLink={props.newObjectAppLink}>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>{`New ${props.objectName}`}</span>\r\n </AppLink>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {props.objects.map(o =>\r\n <ObjectItem key={o.id} object={o} appLink={props.getObjectAppLink(o)} />\r\n )}\r\n </tbody>\r\n </Table>\r\n );\r\n}","export * from './ObjectList';","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\nimport { Rating } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\n\r\nimport { UpdateObjectRating } from 'shared/interfaces';\r\n\r\nconst getRatingLabel = (rating: Rating) => `${rating.name}${rating.code ? ` (${rating.code})` : ''}`;\r\n\r\ntype ObjectWithRating<T extends object> = T & { rating: UpdateObjectRating };\r\n\r\ninterface RatingSelectProps {\r\n ratings: Rating[];\r\n disabled?: boolean;\r\n}\r\n\r\nexport function RatingSelect<T extends ObjectWithRating<{}>>(props: RatingSelectProps): JSX.Element {\r\n const formikProps = useFormikContext<T>();\r\n\r\n return (\r\n <FormField<T>\r\n as='select'\r\n label='Rating'\r\n name='rating'\r\n id='rating'\r\n value={formikProps.values.rating && formikProps.values.rating.id}\r\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) =>\r\n formikProps.setFieldValue('rating', e.target.value ? { id: e.target.value } : {})\r\n }\r\n disabled={props.disabled}\r\n >\r\n <>\r\n <option value={''}>Please select a rating</option>\r\n {props.ratings.map((rating, idx) =>\r\n <option key={idx} value={rating.id}>{getRatingLabel(rating)}</option>\r\n )}\r\n </>\r\n </FormField>\r\n );\r\n}","export * from './RatingSelect';","import * as React from 'react';\r\nimport { Nav } from 'react-bootstrap';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { NavHelper } from 'shared/utils';\r\n\r\nfunction getNavLinkClassName(isActive: boolean): string {\r\n const className = 'nav-link';\r\n\r\n if (!isActive)\r\n return className;\r\n\r\n return className + ' active';\r\n}\r\n\r\ninterface TabsProps {\r\n tabs: NavItem[];\r\n isItemActive?: (item: NavItem) => boolean;\r\n}\r\n\r\nTabs.defaultProps = {\r\n isItemActive: NavHelper.isItemActive\r\n};\r\n\r\nexport function Tabs({ tabs, isItemActive }: TabsProps): React.ReactElement {\r\n return (\r\n <Nav fill variant='tabs'>\r\n {tabs.map((tab, idx) =>\r\n <Nav.Item key={idx}>\r\n <AppLink appLink={tab.appLink} className={getNavLinkClassName(isItemActive(tab))}>\r\n {tab.label}\r\n </AppLink>\r\n </Nav.Item>\r\n )}\r\n </Nav>\r\n );\r\n}","export * from './Tabs';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { BaseTree } from 'shared/interfaces';\r\nimport { Tree, TreeProps } from 'shared/components';\r\n\r\nimport { TreeSelectHelper, SelectedItems } from './TreeSelectHelper';\r\n\r\ninterface TreeSelectProps<T extends BaseTree<BaseObject>> extends TreeProps<T> {\r\n label?: string;\r\n hideCollapseBtn?: boolean;\r\n collapse?: boolean;\r\n noSelectionMessage?: string;\r\n isNodeDisabled?: (node: T) => boolean;\r\n getSelectedItemAppLink?: (itemId: string) => Core.AppLink;\r\n}\r\n\r\nexport function TreeSelect<T extends BaseTree<BaseObject>>(props: TreeSelectProps<T>): React.ReactElement {\r\n const {\r\n onSelect,\r\n label,\r\n hideCollapseBtn,\r\n collapse,\r\n noSelectionMessage,\r\n isNodeDisabled,\r\n getSelectedItemAppLink,\r\n ...otherProps\r\n } = props;\r\n\r\n const { tree, selectedIds } = otherProps;\r\n\r\n const [ selectedItems, setSelectedItems ] =\r\n React.useState<SelectedItems>(TreeSelectHelper.getState<T>(selectedIds, tree));\r\n\r\n React.useEffect(() => setSelectedItems(TreeSelectHelper.getState<T>(selectedIds, tree)), [ selectedIds, tree ]);\r\n\r\n const [ isCollapsed, setIsCollapsed ] = React.useState(!!collapse);\r\n\r\n React.useEffect(() => setIsCollapsed(!!collapse), [collapse]);\r\n\r\n const onSelectHandler = (item: T) => FunctionHelper.isFunction(onSelect) && onSelect(item);\r\n\r\n const showHeader = !hideCollapseBtn || !!label;\r\n\r\n return (\r\n <>\r\n {showHeader &&\r\n <div className='pb-2'>\r\n {!!label && <label className='m-0'>{label}</label>}\r\n {!hideCollapseBtn &&\r\n <a className='float-right cursor-pointer' onClick={() => setIsCollapsed(!isCollapsed)}>\r\n {isCollapsed ? 'Expand' : 'Collapse'}\r\n </a>\r\n }\r\n </div>\r\n }\r\n {!isCollapsed &&\r\n <div className='py-2 border-top'>\r\n <Tree onSelect={onSelectHandler} isDisabled={isNodeDisabled} {...otherProps} />\r\n </div>\r\n }\r\n {(!ObjectHelper.isEmpty(selectedItems) || !!noSelectionMessage) &&\r\n <div className='py-2 border-top'>\r\n <label>Selected:</label>\r\n <ul className='m-0'>\r\n {!ObjectHelper.isEmpty(selectedItems)\r\n ? Object.keys(selectedItems).map((key, idx) =>\r\n <li key={idx}>\r\n {FunctionHelper.isFunction(getSelectedItemAppLink)\r\n ? <AppLink appLink={getSelectedItemAppLink(key)}>{selectedItems[key]}</AppLink>\r\n : selectedItems[key]\r\n }\r\n </li>\r\n )\r\n : <li>{noSelectionMessage}</li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n </>\r\n );\r\n}","import { BaseObject } from 'libs/shared/interfaces';\r\nimport { BaseTree } from 'shared/interfaces';\r\nimport { TreeHelper } from 'shared/utils';\r\n\r\ntype U = BaseTree<BaseObject>;\r\n\r\n/**\r\n * A map of selected items and the chord of their location.\r\n * e.g. {\r\n * 'xyx': 'Science -> Physics'\r\n * }\r\n */\r\nexport interface SelectedItems {\r\n [id: string]: string;\r\n}\r\n\r\nexport const TreeSelectHelper = {\r\n getChord<T extends U>(tree: T, item: T): string {\r\n return TreeHelper.getPath(tree, item).map(i => i.name).join(' -> ');\r\n },\r\n\r\n getState<T extends U>(selectedIds: string[], tree: T): SelectedItems {\r\n let selectedItems = {};\r\n\r\n Array.isArray(selectedIds) && selectedIds.forEach(id => {\r\n const item = TreeHelper.find(tree, id);\r\n\r\n if (item)\r\n selectedItems = { [id]: TreeSelectHelper.getChord(tree, item), ...selectedItems };\r\n });\r\n\r\n return selectedItems;\r\n }\r\n};","export * from './TreeSelect';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { BaseTree } from 'shared/interfaces';\r\n\r\nimport { TreeNode, TreeNodeAction } from './TreeNode';\r\nimport styles from './tree.scss';\r\n\r\nexport interface TreeProps<T extends BaseTree<BaseObject>> {\r\n tree: T;\r\n selectedIds?: string[];\r\n getAppLink?: (item: T) => Core.AppLink;\r\n onSelect?: (item: T) => void;\r\n isDisabled?: (item: T) => boolean;\r\n actions?: TreeNodeAction<T>[];\r\n}\r\n\r\nexport function Tree<T extends BaseTree<BaseObject>>(props: TreeProps<T>): React.ReactElement {\r\n const { tree, ...childProps } = props;\r\n\r\n if (!tree || !tree.children)\r\n return <></>;\r\n\r\n return (\r\n <ul className={`m-0 p-0 ${styles.tree}`}>\r\n {tree.children.map(child => <TreeNode key={child.id} tree={child} {...childProps} />)}\r\n </ul>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { StringHelper, TreeHelper } from 'shared/utils';\r\nimport { BaseTree } from 'shared/interfaces';\r\n\r\nimport { Tree } from './Tree';\r\nimport { TreeNodeLink } from './TreeNodeLink';\r\nimport styles from './tree.scss';\r\n\r\nexport interface TreeNodeAction<T extends BaseTree<BaseObject>> {\r\n label: string;\r\n getAppLink: (node: T) => Core.AppLink;\r\n className?: string;\r\n}\r\n\r\ninterface TreeNodeProps<T extends BaseTree<BaseObject>> {\r\n tree: T;\r\n selectedIds?: string[];\r\n getAppLink?: (item: T) => Core.AppLink;\r\n onSelect?: (item: T) => void;\r\n isDisabled?: (item: T) => boolean;\r\n actions?: TreeNodeAction<T>[];\r\n}\r\n\r\nexport function TreeNode<T extends BaseTree<BaseObject>>(props: TreeNodeProps<T>): React.ReactElement {\r\n const { tree, selectedIds, getAppLink, onSelect, isDisabled, actions } = props;\r\n\r\n const isSelected = Array.isArray(selectedIds) && selectedIds.some(id => StringHelper.isEqual(tree.id, id));\r\n\r\n const isParentOfSelected = React.useMemo(() =>\r\n Array.isArray(selectedIds) && selectedIds.some(id => TreeHelper.find(tree, id)), [ tree, selectedIds ]);\r\n\r\n const [ isExpanded, setIsExpanded ] = React.useState(isParentOfSelected);\r\n\r\n const hasChildren = !!tree.children && !!tree.children.length;\r\n\r\n const linkProps = {\r\n name: tree.name,\r\n appLink: FunctionHelper.isFunction(getAppLink) ? getAppLink(tree) : null,\r\n onSelect: FunctionHelper.isFunction(onSelect) ? (() => onSelect(tree)) : null,\r\n isDisabled: FunctionHelper.isFunction(isDisabled) ? isDisabled(tree) : false,\r\n className: isSelected && styles.selected || isParentOfSelected && styles.parentOfSelected,\r\n actions: !!actions && actions.map(a => ({ ...a, appLink: a.getAppLink(tree) }))\r\n };\r\n\r\n return (\r\n <li className={`position-relative${isExpanded ? '' : ` ${styles.collapsed}`}`}>\r\n <div className='position-relative'>\r\n <span className={styles.node}>\r\n {hasChildren &&\r\n <SvgContainer\r\n svgName={cvSvgLibrary.ChevronDown}\r\n size={SvgContainerSize.Small}\r\n className={`svg-container ${styles.chevron}`}\r\n onClick={() => setIsExpanded(!isExpanded)}\r\n />\r\n }\r\n <TreeNodeLink {...linkProps} />\r\n </span>\r\n {isExpanded && <Tree {...props} />}\r\n </div>\r\n </li>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport styles from './tree.scss';\r\n\r\ninterface TreeNodeLinkProps {\r\n name: string;\r\n appLink?: Core.AppLink;\r\n onSelect?: () => void;\r\n className?: string;\r\n isDisabled?: boolean;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function TreeNodeLink(props: TreeNodeLinkProps): React.ReactElement {\r\n const { name, appLink, onSelect, isDisabled, className, actions } = props;\r\n\r\n let textClassName = styles.text;\r\n\r\n if (className)\r\n textClassName += ` ${className}`;\r\n\r\n if (isDisabled)\r\n return <a className={`${textClassName} text-muted ${styles.disabled}`}>{name}</a>;\r\n\r\n return (\r\n <>\r\n {appLink\r\n ? <AppLink appLink={appLink} className={textClassName}>{name}</AppLink>\r\n : <a onClick={onSelect} className={textClassName}>{name}</a>\r\n }\r\n {!!actions && <Actions className={styles.actions} actions={actions} />}\r\n </>\r\n );\r\n}","export * from './Tree';\r\nexport * from './TreeNode';","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tree\":\"cv--tree--1abau\",\"text\":\"cv--text--f13wK\",\"chevron\":\"cv--chevron--25eVA\",\"disabled\":\"cv--disabled--1qyCo\",\"parentOfSelected\":\"cv--parentOfSelected--1fgN6\",\"selected\":\"cv--selected--cVZit\",\"actions\":\"cv--actions--2BGWp\",\"node\":\"cv--node--rJVbQ\",\"collapsed\":\"cv--collapsed--vc2by\"};","import * as React from 'react';\r\nimport { SortableContainer, SortStart, SortEnd } from 'react-sortable-hoc';\r\nimport { Table } from 'react-bootstrap';\r\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\r\n\r\nimport { VideoListItems, VideoListProps, VideoListHeader } from './VideoList';\r\n\r\nimport styles from './video-list.scss';\r\n\r\ntype ForwardRefProps = { forwardedRef: React.MutableRefObject<HTMLTableSectionElement> };\r\n\r\nconst SortableList = SortableContainer(({ forwardedRef, ...props }: VideoListProps & ForwardRefProps) =>\r\n <VideoListItems sortable ref={forwardedRef} {...props} />\r\n);\r\n\r\n/**\r\n * Remove the styles.sortingContainer class from the container\r\n * Set the width of the td elements in the cloned tr\r\n */\r\nconst handleSortStart = (ref: React.MutableRefObject<HTMLTableSectionElement>) => ({ node }: SortStart) => {\r\n const tbody = ref.current;\r\n\r\n if (!tbody)\r\n return;\r\n\r\n tbody.classList.add(styles.sortingContainer);\r\n\r\n const draggedEl = tbody.querySelector(`.${styles.draggedVideoItem}`);\r\n\r\n node.childNodes.forEach((td: HTMLTableCellElement, idx) =>\r\n (draggedEl.childNodes[idx] as HTMLTableCellElement ).style.width = `${td.offsetWidth}px`\r\n );\r\n};\r\n\r\n/**\r\n * Add the styles.sortingContainer class from the container\r\n * Call the onSortEnd prop\r\n */\r\nconst handleSortEnd = (\r\n ref: React.MutableRefObject<HTMLTableSectionElement>, onSortEnd: (oldIdx: number, newIdx: number) => void\r\n) => (sort: SortEnd) => {\r\n const containerEl = ref.current;\r\n\r\n if (containerEl)\r\n containerEl.classList.remove(styles.sortingContainer);\r\n\r\n onSortEnd(sort.oldIndex, sort.newIndex);\r\n};\r\n\r\ninterface SortableVideoListProps {\r\n onSortEnd: (oldIdx: number, newIdx: number) => void;\r\n}\r\n\r\nSortableVideoList.defaultProps = {\r\n emptyMessage: 'There are no videos in this list.'\r\n};\r\n\r\nexport function SortableVideoList(props: SortableVideoListProps & VideoListProps): React.ReactElement {\r\n const { onSortEnd, emptyMessage, ...videoListProps } = props;\r\n\r\n const ref = React.useRef<HTMLTableSectionElement>();\r\n\r\n if (CollectionHelper.isEmpty(props.videos))\r\n return <div>{emptyMessage}</div>;\r\n\r\n return (\r\n <Table responsive>\r\n <VideoListHeader sortable {...props} />\r\n <SortableList\r\n forwardedRef={ref}\r\n onSortStart={handleSortStart(ref)}\r\n onSortEnd={handleSortEnd(ref, onSortEnd)}\r\n lockAxis='y'\r\n lockToContainerEdges\r\n distance={1} // This allows mousedown/click events to be consumed before sorting is triggered.\r\n helperClass={styles.draggedVideoItem}\r\n helperContainer={() => ref.current} // this is the <tbody> in <VideoList />\r\n {...videoListProps}\r\n />\r\n </Table>\r\n );\r\n}","import * as React from 'react';\r\nimport { SortableElement } from 'react-sortable-hoc';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { Video } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { ActionGenerator, Actions } from 'libs/shared/components/actions/Actions';\r\n\r\nconst getClassName = (additionalClassName: string) => {\r\n let className = 'bg-white';\r\n\r\n if (additionalClassName)\r\n className += ` ${additionalClassName}`;\r\n\r\n return className;\r\n};\r\n\r\ninterface VideoItemProps {\r\n video: Video;\r\n getVideoAppLink?: (video: Video) => Core.AppLink;\r\n getVideoActions?: ActionGenerator;\r\n className?: string;\r\n sortable?: boolean;\r\n itemNumber?: number;\r\n}\r\n\r\nexport function VideoItem(props: VideoItemProps): React.ReactElement {\r\n const { video, getVideoAppLink, getVideoActions, className = '', itemNumber } = props;\r\n\r\n const appLink = FunctionHelper.isFunction(getVideoAppLink) && getVideoAppLink(video);\r\n\r\n return (\r\n <tr className={getClassName(className)}>\r\n {!!itemNumber &&\r\n <td>\r\n <span>{itemNumber}</span>\r\n </td>\r\n }\r\n <td>\r\n {appLink\r\n ? <AppLink appLink={appLink}>{video.name}</AppLink>\r\n : video.name\r\n }\r\n </td>\r\n {FunctionHelper.isFunction(getVideoActions) &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={getVideoActions(video)} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}\r\n\r\nexport const SortableVideoItem = SortableElement((props: VideoItemProps) => <VideoItem sortable {...props} />);","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core } from 'libs/common/core';\r\nimport { VideoCollection, Video } from 'libs/shared/interfaces';\r\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\r\nimport { ActionGenerator } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { SortableVideoItem, VideoItem } from './VideoItem';\r\nimport styles from './video-list.scss';\r\n\r\nexport interface VideoListProps {\r\n videos: VideoCollection;\r\n getVideoAppLink?: (video: Video) => Core.AppLink;\r\n getVideoActions?: ActionGenerator;\r\n sortable?: boolean;\r\n emptyMessage?: string;\r\n}\r\n\r\nexport const VideoListHeader = ({ sortable, getVideoActions }: VideoListProps) => (\r\n <thead>\r\n <tr>\r\n {!!sortable && <th>#</th>}\r\n <th>Name</th>\r\n {!!getVideoActions && <th></th>}\r\n </tr>\r\n </thead>\r\n);\r\n\r\nexport const VideoListItems = React.forwardRef(\r\n ({ videos, sortable, ...childProps }: VideoListProps, ref: React.MutableRefObject<HTMLTableSectionElement>) => (\r\n <tbody ref={ref}>\r\n {!CollectionHelper.isEmpty(videos) && videos.data.map((v, idx) =>\r\n sortable\r\n ? <SortableVideoItem\r\n key={v.id}\r\n index={idx}\r\n itemNumber={idx + 1}\r\n video={v}\r\n className={styles.draggableVideoItem}\r\n {...childProps}\r\n />\r\n : <VideoItem video={v} {...childProps} />\r\n )}\r\n </tbody>\r\n )\r\n);\r\n\r\nVideoList.defaultProps = {\r\n emptyMessage: 'There are no videos in this list.'\r\n};\r\n\r\nexport function VideoList({ emptyMessage, ...props }: VideoListProps): JSX.Element {\r\n return (\r\n !CollectionHelper.isEmpty(props.videos)\r\n ? <Table responsive>\r\n <VideoListHeader {...props} />\r\n <VideoListItems {...props} />\r\n </Table>\r\n : <div>{emptyMessage}</div>\r\n );\r\n}","export * from './SortableVideoList';\r\nexport { VideoList } from './VideoList';","// extracted by mini-css-extract-plugin\nmodule.exports = {\"draggableVideoItem\":\"cv--draggableVideoItem--1JMCe\",\"draggedVideoItem\":\"cv--draggedVideoItem--3jjle\"};","const SHARED_ACTIONS = {\r\n UPLOAD_IMAGE: 'upload:image'\r\n};\r\n\r\nexport const Actions = {\r\n Subjects: {\r\n SUBJECTS: 'subjects',\r\n NEW_SUBJECT: 'new:subject',\r\n EDIT_SUBJECT: 'edit:subject',\r\n EDIT_SUBJECT_PLAYLISTS: 'edit:subject:playlists',\r\n EDIT_SUBJECT_SERIES: 'edit:subject:series',\r\n EDIT_SUBJECT_VIDEOS: 'edit:subject:videos',\r\n SUBJECT_CLASSIFICATIONS: 'subject:classifications',\r\n DELETE_SUBJECT: 'delete:subject',\r\n ADD_SUBJECT_MEMBERS: 'add:subject:members',\r\n REMOVE_SUBJECT_MEMBER: 'remove:subject:member',\r\n\r\n CLASSIFICATIONS: 'classifications',\r\n PRESENTATION_CLASSIFICATIONS: 'presentation:classifications',\r\n NEW_CLASSIFICATION: 'new:classification',\r\n EDIT_CLASSIFICATION: 'edit:classification',\r\n EDIT_CLASSIFICATION_PLAYLISTS: 'edit:classification:playlists',\r\n EDIT_CLASSIFICATION_SERIES: 'edit:classification:series',\r\n EDIT_CLASSIFICATION_VIDEOS: 'edit:classification:videos',\r\n DELETE_CLASSIFICATION: 'delete:classification',\r\n REMOVE_CLASSIFICATION_MEMBER: 'remove:classification:member',\r\n\r\n LEVELS: 'levels',\r\n NEW_LEVEL: 'new:level',\r\n EDIT_LEVEL: 'edit:level',\r\n LEVEL_AUDIENCES: 'level:audiences',\r\n EDIT_LEVEL_PLAYLISTS: 'edit:level:playlists',\r\n EDIT_LEVEL_SERIES: 'edit:level:series',\r\n EDIT_LEVEL_VIDEOS: 'edit:level:videos',\r\n REMOVE_LEVEL_MEMBER: 'remove:level:member',\r\n\r\n AUDIENCES: 'audiences',\r\n PRESENTATION_AUDIENCES: 'presentation:audiences',\r\n NEW_AUDIENCE: 'new:audience',\r\n EDIT_AUDIENCE: 'edit:audience',\r\n EDIT_AUDIENCE_PLAYLISTS: 'edit:audience:playlists',\r\n EDIT_AUDIENCE_SERIES: 'edit:audience:series',\r\n EDIT_AUDIENCE_VIDEOS: 'edit:audience:videos',\r\n DELETE_AUDIENCE: 'delete:audience',\r\n REMOVE_AUDIENCE_MEMBER: 'remove:audience:member',\r\n\r\n PRESENTATIONS: 'presentations',\r\n NEW_PRESENTATION: 'new:presentation',\r\n EDIT_PRESENTATION: 'edit:presentation',\r\n\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n Playlists: {\r\n PLAYLISTS: 'index',\r\n SEARCH_PLAYLISTS: 'search:playlists',\r\n NEW_PLAYLIST: 'new:playlist',\r\n EDIT_PLAYLIST: 'edit:playlist',\r\n EDIT_PLAYLIST_VIDEOS: 'edit:playlist:videos',\r\n EDIT_PLAYLIST_SUBJECTS: 'edit:playlist:subjects',\r\n EDIT_PLAYLIST_AUDIENCES: 'edit:playlist:audiences',\r\n DELETE_PLAYLIST: 'delete:playlist',\r\n\r\n REMOVE_VIDEO: 'remove:video',\r\n\r\n REMOVE_FROM_SUBJECT: 'remove:from:subject',\r\n\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n Series: {\r\n EDIT_SERIES: 'edit:series',\r\n EDIT_SERIES_VIDEOS: 'edit:series:videos',\r\n EDIT_SERIES_SUBJECTS: 'edit:series:subjects',\r\n EDIT_SERIES_AUDIENCES: 'edit:series:audiences',\r\n\r\n LEGACY_EDIT_SERIES: 'legacy:edit:series',\r\n\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n Videos: {\r\n EDIT_VIDEO: 'edit:video',\r\n EDIT_VIDEO_AUDIENCES: 'edit:video:audiences',\r\n EDIT_VIDEO_SUBJECTS: 'edit:video:subjects',\r\n EDIT_VIDEO_ALIASES: 'edit:video:aliases',\r\n\r\n LEGACY_EDIT_VIDEO: 'legacy:edit:video',\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n DomainOptions: {\r\n DOMAIN_OPTIONS: 'domain:options',\r\n NEW_DOMAIN_OPTION: 'new:domain:option',\r\n EDIT_DOMAIN_OPTION: 'edit:domain:option',\r\n DELETE_DOMAIN_OPTION: 'delete:domain:option'\r\n },\r\n\r\n People: {\r\n PEOPLE: 'people',\r\n NEW_PERSON: 'new:person',\r\n EDIT_PERSON: 'edit:person'\r\n },\r\n\r\n Companies: {\r\n COMPANIES: 'companies',\r\n NEW_COMPANY: 'new:company',\r\n EDIT_COMPANY: 'edit:company'\r\n },\r\n\r\n Themes: {\r\n THEMES: 'themes',\r\n NEW_THEME: 'new:theme',\r\n EDIT_THEME: 'edit:theme',\r\n DELETE_THEME: 'delete:theme',\r\n\r\n ...SHARED_ACTIONS\r\n }\r\n};","export const DataPrefixes = {\r\n SUBJECT: 'subject',\r\n SUBJECTS: 'subjects',\r\n UPDATE_SUBJECT: 'update:subject',\r\n DELETE_SUBJECT: 'delete:subject',\r\n UPDATE_OBJECT_SUBJECTS: 'update:object:subjects',\r\n ADD_TO_SUBJECT: 'add:to:subject',\r\n REMOVE_FROM_SUBJECT: 'remove:from:subject',\r\n\r\n CLASSIFICATION: 'classification',\r\n CLASSIFICATIONS: 'classifications',\r\n UPDATE_CLASSIFICATION: 'update:classification',\r\n DELETE_CLASSIFICATION: 'delete:classification',\r\n UPDATE_OBJECT_CLASSIFICATIONS: 'update:object:classifications',\r\n ADD_TO_CLASSIFICATION: 'add:to:classification',\r\n REMOVE_FROM_CLASSIFICATION: 'remove:from:classification',\r\n\r\n PRESENTATION: 'presentation',\r\n PRESENTATIONS: 'presentations',\r\n UPDATE_PRESENTATION: 'update:presentation',\r\n\r\n LEVEL: 'level',\r\n LEVELS: 'levels',\r\n UPDATE_LEVEL: 'update:level',\r\n ADD_TO_LEVEL: 'add:to:level',\r\n REMOVE_FROM_LEVEL: 'remove:from:level',\r\n UPDATE_OBJECT_LEVELS: 'update:object:levels',\r\n\r\n AUDIENCE: 'audience',\r\n AUDIENCES: 'audiences',\r\n UPDATE_AUDIENCE: 'update:audience',\r\n DELETE_AUDIENCE: 'delete:audience',\r\n UPDATE_OBJECT_AUDIENCES: 'update:object:audiences',\r\n\r\n PLAYLIST: 'playlist',\r\n PLAYLISTS: 'playlists',\r\n UPDATE_PLAYLIST: 'update:playlist',\r\n DELETE_PLAYLIST: 'delete:playlist',\r\n PLAYLIST_VIDEOS: 'playlist:videos',\r\n REORDER_PLAYLIST_VIDEOS: 'reorder:playlist:videos',\r\n REMOVE_PLAYLIST_VIDEO: 'remove:playlist:video',\r\n\r\n VIDEO: 'video',\r\n\r\n SERIES: 'series',\r\n SERIES_BY_ID: 'series:by:id',\r\n UPDATE_SERIES: 'update:series',\r\n\r\n CURRENT_USER: 'current:user',\r\n\r\n UPLOAD_IMAGE: 'upload:image',\r\n\r\n LOCALE: 'locale',\r\n PHRASES: 'PHRASES'\r\n};","const imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\r\n\r\nexport const FileExtensions = {\r\n IMAGES: `.${imageExtensions.join(',.')}`\r\n};","export const Layouts = {\r\n CURATOR_LAYOUT: 'CuratorLayout'\r\n};","export const AppChannels = {\r\n COMPANIES: 'companies:application',\r\n DOMAIN_OPTIONS: 'domain:options:application',\r\n PEOPLE: 'people:application',\r\n PLAYLISTS: 'playlists:application',\r\n SERIES: 'series:application',\r\n SUBJECTS: 'subjects:application',\r\n THEMES: 'themes:application',\r\n VIDEOS: 'videos:application'\r\n};\r\n\r\nexport const DataChannels = {\r\n IMAGE_UPLOAD: 'image:upload:data:service',\r\n SUBJECT: 'subject:data:service',\r\n USER: 'user:data:service',\r\n LANGUAGE: 'language:data:service'\r\n};","export const DataServices = {\r\n IMAGE_UPLOAD: 'ImageUploadDataService',\r\n SUBJECT: 'SubjectDataService',\r\n USER: 'UserDataService',\r\n LANGUAGE: 'LanguageDataService'\r\n};","export * from './CuratorActions';\r\nexport * from './DataPrefixes';\r\nexport * from './FileExtensions';\r\nexport * from './Layouts';\r\nexport * from './RadioChannels';\r\nexport * from './Services';","import * as React from 'react';\r\n\r\nimport { Image } from 'libs/shared/interfaces';\r\n\r\n/**\r\n * This context is used for transferring image\r\n * data between different areas of the application.\r\n * \r\n * It stores base64 image files that have been read \r\n * in from ImageSelect component for the purpose of\r\n * being cropped and uploaded in ImageUploadView.\r\n * \r\n * Image objects uploaded in ImageUploadView can then be\r\n * stored in the context for use in the component\r\n * that initially requested the upload.\r\n */\r\ninterface IImageStorageContext {\r\n /**\r\n * Retrieve the stored base64 dataUrl. This will\r\n * reset the stored value after it is read.\r\n */\r\n getDataUrl: () => string;\r\n\r\n /**\r\n * Set the stored dataUrl.\r\n */\r\n setDataUrl: (dataUrl: string) => void;\r\n\r\n /**\r\n * Retrieve the stored image object. This will\r\n * reset the stored image object.\r\n */\r\n getImage: () => Image;\r\n\r\n /**\r\n * Store an image after it has been successfully\r\n * uploaded.\r\n */\r\n setImage: (image: Image) => void;\r\n\r\n /**\r\n * Flag to notify anything using this context\r\n * that an image has been uploaded.\r\n */\r\n imageUploaded: boolean;\r\n}\r\n\r\nexport const ImageStorageContext = React.createContext<IImageStorageContext>(undefined);\r\n\r\nexport const ImageStorageContextProvider = ({ children }: React.PropsWithChildren<{}>) => {\r\n const [ dataUrl, setDataUrl ] = React.useState<string>();\r\n const [ imageUploaded, setImageUploaded ] = React.useState(false);\r\n const [ image, setImage ] = React.useState<Image>();\r\n\r\n const getDataUrl = () => {\r\n const url = dataUrl;\r\n\r\n setDataUrl(null);\r\n\r\n return url;\r\n };\r\n\r\n const storeImage = (_image: Image) => {\r\n setImage(_image);\r\n setImageUploaded(true);\r\n };\r\n\r\n const getImage = () => {\r\n const _image = image;\r\n\r\n setImage(null);\r\n setImageUploaded(false);\r\n\r\n return _image;\r\n };\r\n\r\n const context = { getDataUrl, setDataUrl, imageUploaded, getImage, setImage: storeImage };\r\n\r\n return (\r\n <ImageStorageContext.Provider value={context}>\r\n {children}\r\n </ImageStorageContext.Provider>\r\n );\r\n};","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { UserDataServiceHelper } from 'libs/shared/services/UserDataService';\r\n\r\nimport { CuratorUser } from 'shared/interfaces';\r\n\r\nexport const UserContext = React.createContext<CuratorUser>(undefined);\r\n\r\nexport function UserContextProvider({ children }: React.PropsWithChildren<{}>): React.ReactElement {\r\n const [ user, setUser ] = React.useState<CuratorUser>();\r\n\r\n useFetch(UserDataServiceHelper.getCurrentUserFetchOptions<CuratorUser>(setUser), []);\r\n\r\n return (\r\n <UserContext.Provider value={user}>\r\n {children}\r\n </UserContext.Provider>\r\n );\r\n}","export * from './ImageStorageContext';\r\nexport * from './UserContext';","export enum CurationStatus {\r\n Draft = 0,\r\n Published = 1,\r\n Archived = 2,\r\n Pending = 3,\r\n Rejected = 4,\r\n Processing = 5,\r\n}","/**\r\n * The values in this enum directly\r\n * map to the group names in Master.\r\n */\r\nexport enum CuratorGroup {\r\n Developer = 'Curator Devs',\r\n Content = 'Content',\r\n Curator = 'Curators',\r\n Support = 'Support',\r\n SalesSupport = 'Sales Support'\r\n}","export * from './CuratorGroup';","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { CreateAliasRequest } from 'shared/interfaces';\r\n\r\nexport const AliasesRequests = {\r\n getAliases(id: string) : Flight.Request {\r\n return {\r\n key: `aliases:${id}`,\r\n url: `/api/master/v2/objects/${id}/aliases`\r\n };\r\n },\r\n createAlias(id: string, data: CreateAliasRequest, success: () => void, error: () => void) : Flight.Request {\r\n return {\r\n key: `create:alias`,\r\n url: `/api/master/v2/objects/${id}/aliases`,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: `aliases:${id}`,\r\n data,\r\n success,\r\n error\r\n };\r\n },\r\n deleteAlias(videoId: string, id: string, success: () => void, error: () => void): Flight.Request {\r\n return {\r\n key: `delete:alias`,\r\n url: `/api/domain/v2/objects/${videoId}/aliases/${id}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: `aliases:${videoId}`,\r\n success,\r\n error\r\n };\r\n }\r\n};","import { Flight } from 'libs/common/flight';\r\n\r\nconst endpoints = {\r\n ratings: () => `/api/domain/v2/me/ratings`\r\n};\r\n\r\nconst DataPrefixes = {\r\n RATINGS: 'ratings'\r\n};\r\n\r\nexport const RatingRequests = {\r\n ratings(): Flight.Request {\r\n return {\r\n url: endpoints.ratings(),\r\n key: DataPrefixes.RATINGS\r\n };\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 { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from 'libs/common/react/core/ReactLayoutView';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { LayoutComponent, LayoutComponentProps } from 'shared/layouts';\r\n\r\nimport CuratorLayoutTemplate from './CuratorLayout.hbs';\r\nimport styles from './curator-layout.scss';\r\n\r\nexport interface CuratorLayoutViewOptions extends ReactLayoutViewOptions {\r\n provider?: (props: React.PropsWithChildren<{}>) => React.ReactElement;\r\n getTopNavView?: (currentAppLink: Core.AppLink) => React.ReactElement;\r\n}\r\n\r\nexport abstract class CuratorLayoutView extends ReactLayoutView {\r\n protected options: CuratorLayoutViewOptions;\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n constructor(options?: CuratorLayoutViewOptions) {\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 'CuratorLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return CuratorLayoutTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return `container-fluid ${styles.curatorLayout}`;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n layout: '.layout-region'\r\n };\r\n }\r\n\r\n public static getCacheKey(options: CuratorLayoutViewOptions): string {\r\n let ck = `${this.name}`;\r\n\r\n const optionKeys: string[] = [];\r\n\r\n Object.keys(options).forEach((key: keyof CuratorLayoutViewOptions) => {\r\n optionKeys.push(`${key}:${options[key]}`);\r\n });\r\n\r\n if (optionKeys.length) {\r\n optionKeys.sort();\r\n ck += `:${optionKeys.join(':')}`;\r\n }\r\n\r\n return ck;\r\n }\r\n\r\n private getChildComponents(): LayoutComponentProps {\r\n return {\r\n topNav: {\r\n component: this.childComponents[LayoutRegions.TOP_NAV],\r\n className: styles.topNavRegion\r\n },\r\n leftNav: {\r\n component: this.childComponents[LayoutRegions.LEFT_NAV],\r\n className: `py-3 ${styles.leftNavRegion}`\r\n },\r\n content: {\r\n component: this.childComponents[LayoutRegions.CONTENT],\r\n className: 'position-relative container py-3'\r\n },\r\n popup: {\r\n component: this.childComponents[LayoutRegions.POPUP]\r\n },\r\n alert: {\r\n component: this.childComponents[LayoutRegions.ALERT]\r\n }\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 renderTopNav(): void {\r\n if (!FunctionHelper.isFunction(this.options.getTopNavView))\r\n return;\r\n\r\n this.childComponents[LayoutRegions.TOP_NAV] = this.options.getTopNavView(Core.AppLinkHelper.getCurrentAppLink());\r\n }\r\n\r\n public hideLeftNav(): void {\r\n this.unsetRegion(LayoutRegions.LEFT_NAV);\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.renderTopNav();\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n const props = { provider: this.options.provider, ...this.getChildComponents() };\r\n\r\n super.showChildView('layout', this.wrapWithStore(<LayoutComponent {...props} />));\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"curatorLayout\":\"cv--curatorLayout--XayF7\",\"topNavRegion\":\"cv--topNavRegion--3ewaZ\",\"leftNavRegion\":\"cv--leftNavRegion--2c2o6\"};","export * from './CuratorLayoutView';","export * from './curator-layout';\r\nexport * from './primitives';","import * as React from 'react';\r\n\r\ninterface LayoutRegionComponentProps {\r\n className?: string;\r\n}\r\n\r\nconst LayoutRegionComponent = (props: React.PropsWithChildren<LayoutRegionComponentProps>): React.ReactElement => {\r\n const { className, children } = props;\r\n\r\n return (\r\n <div className={className}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst getClassName = (baseClassName: string, additionalClassNames?: string) =>\r\n `${baseClassName}${additionalClassNames ? ` ${additionalClassNames}` : ''}`;\r\n\r\ninterface LayoutItem {\r\n component: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport interface LayoutComponentProps {\r\n topNav?: LayoutItem;\r\n leftNav?: LayoutItem;\r\n content?: LayoutItem;\r\n popup?: LayoutItem;\r\n alert?: LayoutItem;\r\n}\r\n\r\nconst LayoutComponent = (props: LayoutComponentProps): React.ReactElement => {\r\n const { topNav, leftNav, content, popup, alert } = props;\r\n\r\n return (\r\n <>\r\n <div className='position-relative'>\r\n {!!topNav.component &&\r\n <LayoutRegionComponent className={getClassName('top-nav-region', topNav.className)}>\r\n {topNav.component}\r\n </LayoutRegionComponent>\r\n }\r\n {!!leftNav.component &&\r\n <LayoutRegionComponent className={getClassName('left-nav-region', leftNav.className)}>\r\n {leftNav.component}\r\n </LayoutRegionComponent>\r\n }\r\n {!!content.component &&\r\n <div className='content-container'>\r\n <LayoutRegionComponent className={getClassName('content-region', content.className)}>\r\n {content.component}\r\n </LayoutRegionComponent>\r\n </div>\r\n }\r\n </div>\r\n {!!popup.component &&\r\n <LayoutRegionComponent className={getClassName('popup-region', popup.className)}>\r\n {popup.component}\r\n </LayoutRegionComponent>\r\n }\r\n {!!alert.component &&\r\n <LayoutRegionComponent className={getClassName('alert-region', alert.className)}>\r\n {alert.component}\r\n </LayoutRegionComponent>\r\n }\r\n </>\r\n );\r\n};\r\n\r\ninterface WithProviderProps extends LayoutComponentProps {\r\n provider?: (props: React.PropsWithChildren<{}>) => React.ReactElement;\r\n}\r\n\r\nconst LayoutComponentWithProvider = (props: WithProviderProps): React.ReactElement => {\r\n const { provider: Provider, ...layoutComponentProps } = props;\r\n\r\n if (!Provider)\r\n return <LayoutComponent {...layoutComponentProps} />;\r\n\r\n return (\r\n <Provider>\r\n <LayoutComponent {...layoutComponentProps} />\r\n </Provider>\r\n );\r\n};\r\n\r\nexport { LayoutComponentWithProvider as LayoutComponent };","export * from './LayoutComponent';","import { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\n// Mapping of AppChannels to nav item text.\r\ninterface NavItemMappings {\r\n [appChannel: string]: string;\r\n}\r\n\r\ninterface CuratorAppNavServiceOptions {\r\n navSelector: string;\r\n currentItemClassName: string;\r\n navItemMappings: NavItemMappings;\r\n}\r\n\r\nexport class CuratorAppNavService extends Core.Service {\r\n protected options: CuratorAppNavServiceOptions;\r\n private currentApplication: string;\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTING_END, this.updateNav);\r\n }\r\n\r\n public get name(): string {\r\n return 'CuratorAppNavService';\r\n }\r\n\r\n private updateNav(): void {\r\n const currentApp = Core.AppLinkHelper.getCurrentAppLink().application;\r\n\r\n if (currentApp === this.currentApplication)\r\n return;\r\n\r\n this.currentApplication = currentApp;\r\n\r\n const currentNavItemTitle = this.options.navItemMappings[currentApp];\r\n\r\n if (!currentNavItemTitle)\r\n return;\r\n\r\n const nav = document.querySelector(this.options.navSelector);\r\n\r\n if (!nav || !nav.children)\r\n return;\r\n\r\n /**\r\n * This assumes that nav will be a list of elements, each of which has a nested <a>.\r\n * e.g. ul > li > a\r\n */\r\n [...nav.children].forEach(el => {\r\n const a = el.querySelector('a');\r\n\r\n if (!a)\r\n return;\r\n\r\n a.classList.remove(this.options.currentItemClassName);\r\n\r\n if (a.text === currentNavItemTitle)\r\n a.classList.add(this.options.currentItemClassName);\r\n });\r\n }\r\n}","import { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { Image } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, DataPrefixes, DataChannels } from 'shared/constants';\r\n\r\nexport class ImageUploadDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.IMAGE_UPLOAD;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.IMAGE_UPLOAD;\r\n }\r\n\r\n public uploadBase64Image(\r\n dataUrl: string,\r\n type: ImageType,\r\n callback?: (data: Image) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create({\r\n resource: `/api/image/upload?type=${type}`,\r\n eventPrefix: DataPrefixes.UPLOAD_IMAGE,\r\n data: dataUrl,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { ConcurrencyHelper } from 'libs/common/backbone/utils/ConcurrencyHelper';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\ninterface LanguageConfig {\r\n locale: string;\r\n phrases: any;\r\n}\r\n\r\nexport class LanguageDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.LANGUAGE;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.LANGUAGE;\r\n }\r\n\r\n public getLanguageConfig(callback?: (languageConfig: LanguageConfig) => void): void {\r\n const languageConfig: LanguageConfig = { locale: 'en', phrases: {} };\r\n\r\n const asyncCounter = new ConcurrencyHelper(3);\r\n\r\n const dataServiceCallback = () => {\r\n asyncCounter.decrement();\r\n\r\n if (asyncCounter.getValue() > 0)\r\n return;\r\n\r\n callback(languageConfig);\r\n };\r\n\r\n this.get<string>({\r\n resource: '/api/locale',\r\n eventPrefix: DataPrefixes.LOCALE,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback: (locale: string) => {\r\n languageConfig.locale = locale;\r\n dataServiceCallback();\r\n }\r\n });\r\n\r\n this.get<ObjectHash>({\r\n resource: '/api/phrases/shared',\r\n eventPrefix: `${DataPrefixes.PHRASES}:shared`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback: (phrases: any) => {\r\n if (phrases.shared === null)\r\n phrases.shared = {};\r\n\r\n languageConfig.phrases = {\r\n ...languageConfig.phrases,\r\n ...phrases\r\n };\r\n dataServiceCallback();\r\n }\r\n });\r\n\r\n this.get<ObjectHash>({\r\n resource: '/api/phrases/subjects',\r\n eventPrefix: `${DataPrefixes.PHRASES}:subjects`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback: (phrases: any) => {\r\n if (phrases.subjects === null)\r\n phrases.subjects = {};\r\n\r\n languageConfig.phrases = {\r\n ...languageConfig.phrases,\r\n ...phrases\r\n };\r\n dataServiceCallback();\r\n }\r\n });\r\n }\r\n}","import { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces';\r\nimport { FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\nexport class UserDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.USER;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.USER;\r\n }\r\n\r\n public getCurrentUser<T>(callback?: (user: T) => void, errorCallback?: () => void): T {\r\n return this.get<T>({\r\n resource: '/api/currentuser',\r\n eventPrefix: DataPrefixes.CURRENT_USER,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: DataServices.USER,\r\n dataChannelName: DataChannels.USER\r\n};\r\n\r\nexport const UserDataServiceHelper = {\r\n getCurrentUserFetchOptions<T>(\r\n setData: (data: T) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions {\r\n return {\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.CURRENT_USER,\r\n fetchData: (d: UserDataService) => d.getCurrentUser<T>(),\r\n setData,\r\n onError\r\n };\r\n }\r\n};","export * from './CuratorAppNavService';\r\nexport * from './ImageUploadDataService';\r\nexport * from './UserDataService';\r\nexport * from './LanguageDataService';","import { LegacyPagination, Cursors } from 'libs/common/backbone/interfaces';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { TypeHelper } from 'libs/common/react/utils/TypeHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\r\n\r\ninterface LegacyPaginatedCollection {\r\n data: BaseObject[];\r\n pagination: LegacyPagination;\r\n}\r\n\r\nfunction convertLegacyPaginationToCursors(pagination: LegacyPagination): Cursors {\r\n const { page, totalPages } = pagination;\r\n\r\n const nextPage = TypeHelper.isNumber(page) && page > 0 && page < totalPages && page + 1;\r\n const prevPage = TypeHelper.isNumber(page) && page > 1 && page - 1;\r\n\r\n let cursors: HashObject = {};\r\n\r\n if (nextPage && nextPage <= totalPages)\r\n cursors.next = nextPage.toString();\r\n\r\n if (prevPage)\r\n cursors.previous = prevPage.toString();\r\n\r\n if (ObjectHelper.isEmpty(cursors))\r\n return;\r\n\r\n return cursors as Cursors;\r\n}\r\n\r\nexport const CollectionHelper = {\r\n convertLegacyPaginatedCollection(collection: LegacyPaginatedCollection): BasePaginatedCollection<BaseObject> {\r\n if (!collection)\r\n return;\r\n\r\n return {\r\n data: collection.data,\r\n pagination: {\r\n cursors: convertLegacyPaginationToCursors(collection.pagination),\r\n limit: collection.pagination.pageSize\r\n }\r\n };\r\n }\r\n};","import { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\r\n\r\nexport const ImageSelectHelper = {\r\n onFileSelect(imageType: ImageType, files: FileList, onImageLoad: (image: HTMLImageElement) => void): void {\r\n if (!files || !files.length)\r\n return;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.addEventListener('load', () => ImageSelectHelper.onReaderLoad(reader, imageType, onImageLoad));\r\n\r\n reader.readAsDataURL(files[0]);\r\n },\r\n\r\n onReaderLoad(reader: FileReader, imageType: ImageType, onImageLoad: (image: HTMLImageElement) => void): void {\r\n const image = new Image();\r\n image.src = reader.result as string;\r\n\r\n const minWidth = ImageMinDimensions[imageType].width;\r\n const minHeight = ImageMinDimensions[imageType].height;\r\n\r\n image.addEventListener('load', () => {\r\n if (ImageSelectHelper.isImageValid(imageType, image) && FunctionHelper.isFunction(onImageLoad)) {\r\n onImageLoad(image);\r\n } else {\r\n // TODO: Implement error\r\n alert(`Image too small: minimum dimensions are ${minWidth} x ${minHeight}`);\r\n }\r\n });\r\n },\r\n\r\n isImageValid(imageType: ImageType, image: HTMLImageElement): boolean {\r\n const minWidth = ImageMinDimensions[imageType].width;\r\n const minHeight = ImageMinDimensions[imageType].height;\r\n\r\n if (minWidth && image.width < minWidth)\r\n return false;\r\n\r\n if (minHeight && image.height < minHeight)\r\n return false;\r\n\r\n return true;\r\n }\r\n};","import { Core } from 'libs/common/core';\r\n\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nexport const NavHelper = {\r\n isItemActive(item: NavItem, currentAppLink?: Core.AppLink): boolean {\r\n if (!currentAppLink)\r\n currentAppLink = Core.AppLinkHelper.getCurrentAppLink();\r\n\r\n if (currentAppLink.application !== item.appLink.application)\r\n return false;\r\n\r\n // If navItem has a list of active actions, check to see if current action is one.\r\n if (Array.isArray(item.activeActions))\r\n return item.activeActions.includes(currentAppLink.action);\r\n\r\n // Otherwise, use navItem's appLink action.\r\n return currentAppLink.action === item.appLink.action;\r\n }\r\n};","import { CuratorUser, Permission } from 'shared/interfaces';\r\nimport { UserHelper } from 'shared/utils';\r\nimport { CuratorGroup } from 'shared/enums';\r\n\r\nexport const PermissionsHelper = {\r\n getProtectedReadPermission(): Permission[] {\r\n return [{\r\n value: 'protected',\r\n access: 'r'\r\n }];\r\n },\r\n\r\n hasSubjectsAccess(user: CuratorUser): boolean {\r\n const allowedGroups = [ CuratorGroup.Developer, CuratorGroup.Content ];\r\n\r\n return allowedGroups.some(group => UserHelper.getGroupNames(user).includes(group));\r\n }\r\n};","export const PropHelper = {\r\n propsLoaded(props: {}): boolean {\r\n return Object.values(props).every(p => !!p);\r\n }\r\n};","export const StringHelper = {\r\n isEqual(str1: string | number, str2: string | number): boolean {\r\n return !!str1 && !!str2 && str1.toString() === str2.toString();\r\n },\r\n\r\n capitalizeFirstLetter(str: string): string {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n};","import { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { BaseTree } from 'shared/interfaces';\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nexport const TreeHelper = {\r\n find<T extends BaseTree<BaseObject>>(tree: T, id: string | number): T | null {\r\n if (!tree || !tree.children || !tree.children.length)\r\n return;\r\n\r\n const find = (node: T): T | null => {\r\n if (StringHelper.isEqual(node.id, id))\r\n return node;\r\n\r\n const children = node.children;\r\n\r\n if (!children || !children.length)\r\n return;\r\n\r\n for (let i = 0; i < children.length; i++) {\r\n const child = find(children[i] as T);\r\n\r\n if (child)\r\n return child;\r\n }\r\n };\r\n\r\n for (let j = 0; j < tree.children.length; j++) {\r\n const child = find(tree.children[j] as T);\r\n\r\n if (child)\r\n return child;\r\n }\r\n },\r\n\r\n getPath<T extends BaseTree<BaseObject>>(tree: T, node: T): T[] {\r\n let path = [node];\r\n\r\n const getParentId = (_node: T) => {\r\n if (_node.hasOwnProperty('parentIds') && Array.isArray(_node.parentIds) && _node.parentIds.length)\r\n return _node.parentIds[0];\r\n\r\n if (_node.hasOwnProperty('parentId'))\r\n return _node.parentId;\r\n\r\n return null;\r\n };\r\n\r\n let parentId = getParentId(node);\r\n\r\n while (parentId) {\r\n const parent = TreeHelper.find(tree, parentId);\r\n\r\n if (parent)\r\n path = [ parent, ...path ];\r\n\r\n parentId = parent ? getParentId(parent) : null;\r\n }\r\n\r\n return path;\r\n }\r\n};","import { CuratorUser } from 'shared/interfaces';\r\n\r\nexport const UserHelper = {\r\n getGroupNames(user: CuratorUser): string[] {\r\n return (user && user.groups) ? user.groups.map(g => g.name) : [];\r\n }\r\n};","export * from './ImageSelectHelper';\r\nexport * from './NavHelper';\r\nexport * from './PermissionsHelper';\r\nexport * from './PropHelper';\r\nexport * from './StringHelper';\r\nexport * from './TreeHelper';\r\nexport * from './UserHelper';","import * as React from 'react';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Image, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { ImageStorageContext } from 'shared/context';\r\nimport { ImageCropper } from 'shared/components';\r\nimport { DataServices } from 'shared/constants';\r\nimport { ImageUploadDataService } from 'shared/services';\r\n\r\ninterface ImageUploadViewProps {\r\n imageType: ImageType;\r\n}\r\n\r\nexport function ImageUploadView({ imageType, closePopup }: ImageUploadViewProps & PopupViewProps): React.ReactElement {\r\n const { getDataUrl, setImage } = React.useContext(ImageStorageContext);\r\n\r\n const [dataUrl] = React.useState(getDataUrl());\r\n const [ showCropper, setShowCropper ] = React.useState(false);\r\n\r\n const imageUploadDataService = useService<ImageUploadDataService>(DataServices.IMAGE_UPLOAD);\r\n\r\n const onImageUploadSuccess = (image: Image) => {\r\n setImage(image);\r\n closePopup();\r\n };\r\n\r\n const onCrop = (croppedDataUrl: string) =>\r\n imageUploadDataService.uploadBase64Image(croppedDataUrl, imageType, onImageUploadSuccess, closePopup);\r\n\r\n const cropperProps = {\r\n dataUrl,\r\n imageType,\r\n minWidth: ImageMinDimensions[imageType].width,\r\n minHeight: ImageMinDimensions[imageType].height,\r\n onCrop,\r\n onCancel: closePopup\r\n };\r\n\r\n return (\r\n <Popup title='Crop Image' closePopup={closePopup} onEntered={() => setShowCropper(true)}>\r\n {showCropper && <ImageCropper {...cropperProps} />}\r\n </Popup>\r\n );\r\n}","export * from './ImageUploadView';","export * from './image-upload';","module.exports = __WEBPACK_EXTERNAL_MODULE__fortawesome_fontawesome__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone_marionette__;","module.exports = __WEBPACK_EXTERNAL_MODULE_cropperjs__;","module.exports = __WEBPACK_EXTERNAL_MODULE_dompurify__;","module.exports = __WEBPACK_EXTERNAL_MODULE_formik__;","module.exports = __WEBPACK_EXTERNAL_MODULE_handlebars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_node_polyglot__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_bootstrap__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dom__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_redux__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_sortable_hoc__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_transition_group__;","module.exports = __WEBPACK_EXTERNAL_MODULE_underscore__;","module.exports = __WEBPACK_EXTERNAL_MODULE_yup__;"],"sourceRoot":""}