@clickview/lite 0.0.18-dev.2 → 0.0.18-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/dist/css/0.chunk.css.map +1 -0
  2. package/dist/css/1.chunk.css +144 -2
  3. package/dist/css/1.chunk.css.map +1 -0
  4. package/dist/css/10.chunk.css +10 -12
  5. package/dist/css/10.chunk.css.map +1 -0
  6. package/dist/css/11.chunk.css +5 -9
  7. package/dist/css/11.chunk.css.map +1 -0
  8. package/dist/css/12.chunk.css.map +1 -0
  9. package/dist/css/13.chunk.css.map +1 -0
  10. package/dist/css/14.chunk.css.map +1 -0
  11. package/dist/css/16.chunk.css.map +1 -0
  12. package/dist/css/18.chunk.css.map +1 -0
  13. package/dist/css/19.chunk.css +6 -2
  14. package/dist/css/19.chunk.css.map +1 -0
  15. package/dist/css/2.chunk.css +14 -0
  16. package/dist/css/20.chunk.css +2 -6
  17. package/dist/css/21.chunk.css +1 -3
  18. package/dist/css/21.chunk.css.map +1 -0
  19. package/dist/css/22.chunk.css +2 -2
  20. package/dist/css/22.chunk.css.map +1 -0
  21. package/dist/css/23.chunk.css +3 -1
  22. package/dist/css/23.chunk.css.map +1 -0
  23. package/dist/css/24.chunk.css +1 -3
  24. package/dist/css/24.chunk.css.map +1 -0
  25. package/dist/css/25.chunk.css +2 -2
  26. package/dist/css/25.chunk.css.map +1 -0
  27. package/dist/css/26.chunk.css +3 -1
  28. package/dist/css/26.chunk.css.map +1 -0
  29. package/dist/css/27.chunk.css +66 -2
  30. package/dist/css/27.chunk.css.map +1 -0
  31. package/dist/css/28.chunk.css +48 -2
  32. package/dist/css/28.chunk.css.map +1 -0
  33. package/dist/css/29.chunk.css +43 -4
  34. package/dist/css/29.chunk.css.map +1 -0
  35. package/dist/css/3.chunk.css +13 -7
  36. package/dist/css/3.chunk.css.map +1 -0
  37. package/dist/css/30.chunk.css +1 -3
  38. package/dist/css/30.chunk.css.map +1 -0
  39. package/dist/css/31.chunk.css +5 -2
  40. package/dist/css/31.chunk.css.map +1 -0
  41. package/dist/css/32.chunk.css +4 -1
  42. package/dist/css/32.chunk.css.map +1 -0
  43. package/dist/css/34.chunk.css +4 -2
  44. package/dist/css/34.chunk.css.map +1 -0
  45. package/dist/css/35.chunk.css +7 -0
  46. package/dist/css/35.chunk.css.map +1 -0
  47. package/dist/css/36.chunk.css +4 -0
  48. package/dist/css/36.chunk.css.map +1 -0
  49. package/dist/css/37.chunk.css +3 -1
  50. package/dist/css/37.chunk.css.map +1 -0
  51. package/dist/css/38.chunk.css +36 -2
  52. package/dist/css/38.chunk.css.map +1 -0
  53. package/dist/css/4.chunk.css +5 -13
  54. package/dist/css/4.chunk.css.map +1 -0
  55. package/dist/css/44.chunk.css +1 -1
  56. package/dist/css/45.chunk.css +9 -0
  57. package/dist/css/45.chunk.css.map +1 -0
  58. package/dist/css/5.chunk.css +2 -8
  59. package/dist/css/5.chunk.css.map +1 -0
  60. package/dist/css/9.chunk.css +15 -7
  61. package/dist/css/lite-app.css.map +1 -0
  62. package/dist/libs/analytics/src/AnalyticsService.d.ts +52 -0
  63. package/dist/libs/analytics/src/clients/BaseAnalyticsClient.d.ts +24 -0
  64. package/dist/libs/analytics/src/clients/CollectionApiClient.d.ts +48 -0
  65. package/dist/libs/analytics/src/clients/DebuggerClient.d.ts +7 -0
  66. package/dist/libs/analytics/src/constants/ApplicationOptionsKey.d.ts +1 -0
  67. package/dist/libs/analytics/src/constants/CountryRegionMapping.d.ts +7 -0
  68. package/dist/libs/analytics/src/constants/Regions.d.ts +6 -0
  69. package/dist/libs/analytics/src/enrichers/BaseAnalyticsEnricher.d.ts +19 -0
  70. package/dist/libs/analytics/src/enrichers/CoreContextEnricher.d.ts +22 -0
  71. package/dist/libs/analytics/src/enrichers/UserDataEnricher.d.ts +10 -0
  72. package/dist/libs/analytics/src/enums/CountryCode.d.ts +5 -0
  73. package/dist/libs/analytics/src/interfaces/AnalyticsTypes.d.ts +49 -5
  74. package/dist/libs/analytics/src/interfaces/VersionData.d.ts +4 -0
  75. package/dist/libs/analytics/src/models/CollectionEvent.d.ts +55 -0
  76. package/dist/libs/analytics/src/transport/EventTransport.d.ts +39 -0
  77. package/dist/libs/analytics/src/utils/CollectionApiClientHelper.d.ts +6 -0
  78. package/dist/libs/analytics/src/utils/DataFormatHelper.d.ts +14 -0
  79. package/dist/libs/analytics/src/utils/EventWhitelistHelper.d.ts +19 -0
  80. package/dist/libs/analytics/src/utils/TypeHelper.d.ts +4 -0
  81. package/dist/libs/analytics/src/utils/UploadDataFormatHelper.d.ts +10 -0
  82. package/dist/libs/analytics/src/utils/UserAgentHelper.d.ts +10 -0
  83. package/dist/libs/analytics/src/utils/VideoDataFormatHelper.d.ts +42 -0
  84. package/dist/libs/common/src/backbone/core/BaseAppRouter.d.ts +5 -1
  85. package/dist/libs/common/src/react/constants/ViewModelActions.d.ts +3 -0
  86. package/dist/libs/common/src/react/hooks/useViewModel.d.ts +4 -0
  87. package/dist/libs/common/src/react/interfaces/ApplicationState.d.ts +3 -1
  88. package/dist/libs/common/src/react/interfaces/ViewModelAction.d.ts +5 -0
  89. package/dist/libs/common/src/react/interfaces/ViewModelPayload.d.ts +5 -0
  90. package/dist/libs/common/src/react/reducers/ViewModelReducer.d.ts +3 -0
  91. package/dist/libs/common/src/react/utils/ArrayHelper.d.ts +1 -2
  92. package/dist/libs/shared/src/apps/content-updates/interfaces/VideoClassificationMapping.d.ts +2 -1
  93. package/dist/libs/shared/src/apps/upload/services/UploadService.d.ts +3 -2
  94. package/dist/libs/shared/src/components/lazy-image/LazyImage.d.ts +1 -1
  95. package/dist/libs/shared/src/components/search-bar/SearchBar.d.ts +5 -0
  96. package/dist/libs/shared/src/components/widgets/fixed-widget/FixedWidget.d.ts +4 -2
  97. package/dist/libs/shared/src/components/widgets/items/subject-widget-item/SubjectWidgetItem.d.ts +4 -3
  98. package/dist/libs/shared/src/constants/BootstrapKeys.d.ts +1 -0
  99. package/dist/libs/shared/src/constants/WithStatements.d.ts +1 -1
  100. package/dist/libs/shared/src/enums/CountryCode.d.ts +5 -0
  101. package/dist/libs/shared/src/enums/SubtitleExtractionOptions.d.ts +4 -0
  102. package/dist/libs/shared/src/enums/WidgetContents.d.ts +2 -1
  103. package/dist/libs/shared/src/flight-requests/FavouriteVideoRequests.d.ts +1 -1
  104. package/dist/libs/shared/src/flight-requests/PreferenceRequests.d.ts +4 -4
  105. package/dist/libs/shared/src/hooks/UseReorderedItems.d.ts +9 -0
  106. package/dist/libs/shared/src/interfaces/models/Config.d.ts +3 -1
  107. package/dist/libs/shared/src/interfaces/models/UserChannel.d.ts +7 -0
  108. package/dist/libs/shared/src/interfaces/models/index.d.ts +1 -0
  109. package/dist/libs/shared/src/services/ConfigDataService.d.ts +1 -0
  110. package/dist/libs/shared/src/utils/AudienceHelper.d.ts +5 -1
  111. package/dist/projects/lite/src/apps/classrooms/components/classroom-group-dropdown/ClassroomGroupDropdown.d.ts +3 -2
  112. package/dist/projects/lite/src/apps/classrooms/components/tile-actions/TileActions.d.ts +1 -0
  113. package/dist/projects/lite/src/apps/classrooms/flight-requests/ClassroomRequests.d.ts +1 -1
  114. package/dist/projects/lite/src/apps/classrooms/views/add-students-to-classroom/AddStudentsToClassroomView.d.ts +3 -3
  115. package/dist/projects/lite/src/apps/classrooms/views/create-classroom/CreateClassroomView.d.ts +3 -4
  116. package/dist/projects/lite/src/apps/classrooms/views/create-classroom-group/CreateClassroomGroupView.d.ts +3 -3
  117. package/dist/projects/lite/src/apps/classrooms/views/delete-classroom/DeleteClassroomView.d.ts +4 -4
  118. package/dist/projects/lite/src/apps/classrooms/views/delete-classroom-group/DeleteClassroomGroupView.d.ts +3 -3
  119. package/dist/projects/lite/src/apps/classrooms/views/edit-classroom/EditClassroomView.d.ts +3 -3
  120. package/dist/projects/lite/src/apps/classrooms/views/edit-classroom-group/EditClassroomGroupView.d.ts +3 -3
  121. package/dist/projects/lite/src/apps/classrooms/views/remove-students-from-classroom/RemoveStudentsFromClassroomView.d.ts +3 -3
  122. package/dist/projects/lite/src/apps/content-updates/LiteContentUpdatesApplication.d.ts +1 -1
  123. package/dist/projects/lite/src/apps/default/LiteDefaultApplication.d.ts +2 -2
  124. package/dist/projects/lite/src/apps/playlists/LitePlaylistsApplication.d.ts +2 -1
  125. package/dist/projects/lite/src/apps/playlists/views/delete-playlist/DeletePlaylistView.d.ts +2 -2
  126. package/dist/projects/lite/src/apps/playlists/views/edit-playlist/EditPlaylistView.d.ts +2 -2
  127. package/dist/projects/lite/src/apps/playlists/views/new-playlist/NewPlaylistView.d.ts +2 -2
  128. package/dist/projects/lite/src/apps/playlists/views/playlist/PlaylistViewUtils.d.ts +0 -8
  129. package/dist/projects/lite/src/apps/playlists/views/remove-video-from-playlist/RemoveVideoFromPlaylistView.d.ts +2 -2
  130. package/dist/projects/lite/src/apps/search/components/filter-actions/FilterActions.d.ts +3 -2
  131. package/dist/projects/lite/src/apps/search/components/filter-button/FilterButton.d.ts +3 -2
  132. package/dist/projects/lite/src/apps/search/components/filter-types/checkbox-filter/CheckboxFilter.d.ts +3 -2
  133. package/dist/projects/lite/src/apps/search/components/filter-types/dropdown-filter/DropdownFilter.d.ts +3 -2
  134. package/dist/projects/lite/src/apps/search/components/filter-types/radio-filter/RadioFilter.d.ts +3 -2
  135. package/dist/projects/lite/src/apps/search/components/filter-types/radio-filter/year-level/YearLevelRadioFilter.d.ts +3 -2
  136. package/dist/projects/lite/src/apps/search/components/reset-button/ResetButton.d.ts +3 -2
  137. package/dist/projects/lite/src/apps/search/components/search-filters/SearchFilters.d.ts +3 -2
  138. package/dist/projects/lite/src/apps/search/interfaces/FilterProps.d.ts +3 -2
  139. package/dist/projects/lite/src/apps/search/utils/FilterHelper.d.ts +4 -2
  140. package/dist/projects/lite/src/apps/subjects/LiteSubjectApplication.d.ts +2 -2
  141. package/dist/projects/lite/src/apps/upload/services/FlightVideoUploadDataService.d.ts +5 -0
  142. package/dist/projects/lite/src/apps/user-manager/components/delete-uploaded-student-popup/DeleteUploadedStudentPopup.d.ts +4 -4
  143. package/dist/projects/lite/src/apps/user-manager/components/delete-uploaded-teacher-popup/DeleteUploadedTeacherPopup.d.ts +4 -4
  144. package/dist/projects/lite/src/apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup.d.ts +4 -4
  145. package/dist/projects/lite/src/apps/user-manager/components/manage-users-list/ManageUsersList.d.ts +3 -2
  146. package/dist/projects/lite/src/apps/user-manager/flight-requests/SchoolUserRequests.d.ts +3 -3
  147. package/dist/projects/lite/src/apps/user-manager/views/create-student/CreateStudentView.d.ts +3 -4
  148. package/dist/projects/lite/src/apps/user-manager/views/create-teacher/CreateTeacherView.d.ts +3 -4
  149. package/dist/projects/lite/src/apps/user-manager/views/edit-student/EditStudentView.d.ts +4 -4
  150. package/dist/projects/lite/src/apps/user-manager/views/edit-teacher/EditTeacherView.d.ts +4 -4
  151. package/dist/projects/lite/src/apps/user-manager/views/remove-user/RemoveUserView.d.ts +4 -4
  152. package/dist/projects/lite/src/apps/user-manager/views/student-upload-review/StudentUploadReviewView.d.ts +4 -2
  153. package/dist/projects/lite/src/apps/user-manager/views/teacher-upload-review/TeacherUploadReviewView.d.ts +4 -2
  154. package/dist/projects/lite/src/shared/components/immersive-reader/ImmersiveReader.d.ts +7 -2
  155. package/dist/projects/lite/src/shared/components/share/copy-embed-html/CopyEmbedHtml.d.ts +4 -2
  156. package/dist/projects/lite/src/shared/constants/LiteViewModels.d.ts +6 -0
  157. package/dist/projects/lite/src/shared/{contexts/player/PlayerContext.d.ts → hooks/useInitPlayerContext.d.ts} +4 -10
  158. package/dist/projects/lite/src/shared/hooks/useNavLock.d.ts +1 -0
  159. package/dist/projects/lite/src/shared/views/share/main-view/MainShareView.d.ts +3 -3
  160. package/dist/projects/lite/src/shared/views/share/settings-view/ShareSettingsView.d.ts +4 -3
  161. package/dist/projects/lite/src/startup/RegisterAnalytics.d.ts +3 -0
  162. package/dist/projects/lite/src/startup/index.d.ts +1 -0
  163. package/dist/scripts/0-525bd75473.chunk.js +1 -0
  164. package/dist/scripts/0.chunk.js +478 -1
  165. package/dist/scripts/0.chunk.js.map +1 -0
  166. package/dist/scripts/1-f6fa17226d.chunk.js +17 -0
  167. package/dist/scripts/1.chunk.js +621 -17
  168. package/dist/scripts/1.chunk.js.map +1 -0
  169. package/dist/scripts/10-f3b34b2d35.chunk.js +1 -0
  170. package/dist/scripts/10.chunk.js +400 -7
  171. package/dist/scripts/10.chunk.js.map +1 -0
  172. package/dist/scripts/11-a698af3f1c.chunk.js +1 -0
  173. package/dist/scripts/11.chunk.js +1289 -7
  174. package/dist/scripts/11.chunk.js.map +1 -0
  175. package/dist/scripts/12-9ace90fcbc.chunk.js +1 -0
  176. package/dist/scripts/12.chunk.js +1059 -7
  177. package/dist/scripts/12.chunk.js.map +1 -0
  178. package/dist/scripts/13-3a4f103546.chunk.js +1 -0
  179. package/dist/scripts/13.chunk.js +751 -7
  180. package/dist/scripts/13.chunk.js.map +1 -0
  181. package/dist/scripts/14-11868e2868.chunk.js +1 -0
  182. package/dist/scripts/14.chunk.js +425 -7
  183. package/dist/scripts/14.chunk.js.map +1 -0
  184. package/dist/scripts/15-78ff5e8be2.chunk.js +1 -0
  185. package/dist/scripts/15.chunk.js +609 -7
  186. package/dist/scripts/15.chunk.js.map +1 -0
  187. package/dist/scripts/16-22f6224811.chunk.js +1 -0
  188. package/dist/scripts/16.chunk.js +648 -7
  189. package/dist/scripts/16.chunk.js.map +1 -0
  190. package/dist/scripts/17-afe6281dd5.chunk.js +1 -0
  191. package/dist/scripts/17.chunk.js +541 -7
  192. package/dist/scripts/17.chunk.js.map +1 -0
  193. package/dist/scripts/18-47be31c0b6.chunk.js +1 -0
  194. package/dist/scripts/18.chunk.js +766 -7
  195. package/dist/scripts/18.chunk.js.map +1 -0
  196. package/dist/scripts/19-89c0b2c20e.chunk.js +1 -0
  197. package/dist/scripts/19.chunk.js +647 -7
  198. package/dist/scripts/19.chunk.js.map +1 -0
  199. package/dist/scripts/2-3b37480a80.chunk.js +7 -0
  200. package/dist/scripts/2.chunk.js +8259 -1
  201. package/dist/scripts/2.chunk.js.map +1 -0
  202. package/dist/scripts/20-32ac3fe0b9.chunk.js +1 -0
  203. package/dist/scripts/20.chunk.js +122 -7
  204. package/dist/scripts/20.chunk.js.map +1 -0
  205. package/dist/scripts/21-891207049a.chunk.js +1 -0
  206. package/dist/scripts/21.chunk.js +1571 -1
  207. package/dist/scripts/21.chunk.js.map +1 -0
  208. package/dist/scripts/22-24236e6723.chunk.js +1 -0
  209. package/dist/scripts/22.chunk.js +1387 -1
  210. package/dist/scripts/22.chunk.js.map +1 -0
  211. package/dist/scripts/23-7b425169bc.chunk.js +1 -0
  212. package/dist/scripts/23.chunk.js +1121 -1
  213. package/dist/scripts/23.chunk.js.map +1 -0
  214. package/dist/scripts/24-40edd30087.chunk.js +1 -0
  215. package/dist/scripts/24.chunk.js +1348 -1
  216. package/dist/scripts/24.chunk.js.map +1 -0
  217. package/dist/scripts/25-887b9ef587.chunk.js +1 -0
  218. package/dist/scripts/25.chunk.js +1137 -1
  219. package/dist/scripts/25.chunk.js.map +1 -0
  220. package/dist/scripts/26-cbe0ff0f77.chunk.js +1 -0
  221. package/dist/scripts/26.chunk.js +906 -1
  222. package/dist/scripts/26.chunk.js.map +1 -0
  223. package/dist/scripts/27-f26afdae78.chunk.js +1 -0
  224. package/dist/scripts/27.chunk.js +1143 -1
  225. package/dist/scripts/27.chunk.js.map +1 -0
  226. package/dist/scripts/28-70414fd373.chunk.js +1 -0
  227. package/dist/scripts/28.chunk.js +656 -1
  228. package/dist/scripts/28.chunk.js.map +1 -0
  229. package/dist/scripts/29-944b5c01a7.chunk.js +1 -0
  230. package/dist/scripts/29.chunk.js +616 -1
  231. package/dist/scripts/29.chunk.js.map +1 -0
  232. package/dist/scripts/3-233f573a92.chunk.js +1 -0
  233. package/dist/scripts/3.chunk.js +585 -1
  234. package/dist/scripts/3.chunk.js.map +1 -0
  235. package/dist/scripts/30-3a229887e9.chunk.js +1 -0
  236. package/dist/scripts/30.chunk.js +557 -1
  237. package/dist/scripts/30.chunk.js.map +1 -0
  238. package/dist/scripts/31-ab038bfc0c.chunk.js +1 -0
  239. package/dist/scripts/31.chunk.js +731 -1
  240. package/dist/scripts/31.chunk.js.map +1 -0
  241. package/dist/scripts/32-8bd6703eef.chunk.js +1 -0
  242. package/dist/scripts/32.chunk.js +957 -1
  243. package/dist/scripts/32.chunk.js.map +1 -0
  244. package/dist/scripts/{35-8b4ce9fc27.chunk.js → 33-4579af9cf9.chunk.js} +1 -1
  245. package/dist/scripts/33.chunk.js +938 -1
  246. package/dist/scripts/33.chunk.js.map +1 -0
  247. package/dist/scripts/{36-cbd8837f89.chunk.js → 34-d8b96d9f9f.chunk.js} +1 -1
  248. package/dist/scripts/34.chunk.js +523 -1
  249. package/dist/scripts/34.chunk.js.map +1 -0
  250. package/dist/scripts/35-666d815525.chunk.js +1 -0
  251. package/dist/scripts/35.chunk.js +414 -1
  252. package/dist/scripts/35.chunk.js.map +1 -0
  253. package/dist/scripts/36-02ce5f3538.chunk.js +1 -0
  254. package/dist/scripts/36.chunk.js +404 -1
  255. package/dist/scripts/36.chunk.js.map +1 -0
  256. package/dist/scripts/37-afd3d321e3.chunk.js +1 -0
  257. package/dist/scripts/37.chunk.js +245 -1
  258. package/dist/scripts/37.chunk.js.map +1 -0
  259. package/dist/scripts/{39-e2aa1689e2.chunk.js → 38-6ad53aa15b.chunk.js} +1 -1
  260. package/dist/scripts/38.chunk.js +343 -1
  261. package/dist/scripts/38.chunk.js.map +1 -0
  262. package/dist/scripts/{40-53d132e3b4.chunk.js → 39-46c747b1d9.chunk.js} +1 -1
  263. package/dist/scripts/39.chunk.js +318 -1
  264. package/dist/scripts/39.chunk.js.map +1 -0
  265. package/dist/scripts/4-6942fee782.chunk.js +1 -0
  266. package/dist/scripts/4.chunk.js +1030 -1
  267. package/dist/scripts/4.chunk.js.map +1 -0
  268. package/dist/scripts/{41-023d613070.chunk.js → 40-c1b8806b1c.chunk.js} +1 -1
  269. package/dist/scripts/40.chunk.js +236 -1
  270. package/dist/scripts/40.chunk.js.map +1 -0
  271. package/dist/scripts/{42-ba3779218d.chunk.js → 41-f4c23477e3.chunk.js} +1 -1
  272. package/dist/scripts/41.chunk.js +231 -1
  273. package/dist/scripts/41.chunk.js.map +1 -0
  274. package/dist/scripts/42-7a5b92d70b.chunk.js +1 -0
  275. package/dist/scripts/42.chunk.js +350 -1
  276. package/dist/scripts/42.chunk.js.map +1 -0
  277. package/dist/scripts/43-97193a87df.chunk.js +1 -0
  278. package/dist/scripts/43.chunk.js +225 -1
  279. package/dist/scripts/43.chunk.js.map +1 -0
  280. package/dist/scripts/{46-6501968ace.chunk.js → 44-7f92272274.chunk.js} +1 -1
  281. package/dist/scripts/44.chunk.js +318 -1
  282. package/dist/scripts/44.chunk.js.map +1 -0
  283. package/dist/scripts/45-265f1a7a42.chunk.js +1 -0
  284. package/dist/scripts/45.chunk.js +64 -1
  285. package/dist/scripts/45.chunk.js.map +1 -0
  286. package/dist/scripts/46-a594ad7eba.chunk.js +1 -0
  287. package/dist/scripts/46.chunk.js +108 -1
  288. package/dist/scripts/46.chunk.js.map +1 -0
  289. package/dist/scripts/47-99777c20cf.chunk.js +1 -0
  290. package/dist/scripts/47.chunk.js +110 -1
  291. package/dist/scripts/47.chunk.js.map +1 -0
  292. package/dist/scripts/48-9880523c82.chunk.js +1 -0
  293. package/dist/scripts/48.chunk.js +148 -1
  294. package/dist/scripts/48.chunk.js.map +1 -0
  295. package/dist/scripts/{50-00ffd5d7c6.chunk.js → 49-5e718594e5.chunk.js} +1 -1
  296. package/dist/scripts/49.chunk.js +142 -1
  297. package/dist/scripts/49.chunk.js.map +1 -0
  298. package/dist/scripts/5-2f631dcd74.chunk.js +1 -0
  299. package/dist/scripts/5.chunk.js +3262 -1
  300. package/dist/scripts/5.chunk.js.map +1 -0
  301. package/dist/scripts/50-8cb0d9cd7d.chunk.js +1 -0
  302. package/dist/scripts/50.chunk.js +145 -1
  303. package/dist/scripts/50.chunk.js.map +1 -0
  304. package/dist/scripts/{52-e5dfa5a640.chunk.js → 51-211b643ca5.chunk.js} +1 -1
  305. package/dist/scripts/51.chunk.js +176 -1
  306. package/dist/scripts/51.chunk.js.map +1 -0
  307. package/dist/scripts/{53-79d5905fc6.chunk.js → 52-bfb2683b5d.chunk.js} +1 -1
  308. package/dist/scripts/52.chunk.js +160 -1
  309. package/dist/scripts/52.chunk.js.map +1 -0
  310. package/dist/scripts/{54-4950ec1d52.chunk.js → 53-3cf5cd5f69.chunk.js} +1 -1
  311. package/dist/scripts/53.chunk.js +98 -1
  312. package/dist/scripts/53.chunk.js.map +1 -0
  313. package/dist/scripts/{55-accb81090d.chunk.js → 54-26807e3e49.chunk.js} +1 -1
  314. package/dist/scripts/54.chunk.js +48 -1
  315. package/dist/scripts/54.chunk.js.map +1 -0
  316. package/dist/scripts/55-d38be4860b.chunk.js +1 -0
  317. package/dist/scripts/55.chunk.js +99 -1
  318. package/dist/scripts/55.chunk.js.map +1 -0
  319. package/dist/scripts/56-d4abc25ec3.chunk.js +1 -0
  320. package/dist/scripts/56.chunk.js +64 -1
  321. package/dist/scripts/56.chunk.js.map +1 -0
  322. package/dist/scripts/57.chunk.js +72 -0
  323. package/dist/scripts/57.chunk.js.map +1 -0
  324. package/dist/scripts/58.chunk.js +73 -0
  325. package/dist/scripts/58.chunk.js.map +1 -0
  326. package/dist/scripts/59.chunk.js +70 -0
  327. package/dist/scripts/59.chunk.js.map +1 -0
  328. package/dist/scripts/6-4d72a3c3fc.chunk.js +1 -0
  329. package/dist/scripts/6.chunk.js +24 -1
  330. package/dist/scripts/6.chunk.js.map +1 -0
  331. package/dist/scripts/60.chunk.js +32 -0
  332. package/dist/scripts/60.chunk.js.map +1 -0
  333. package/dist/scripts/61.chunk.js +29 -0
  334. package/dist/scripts/61.chunk.js.map +1 -0
  335. package/dist/scripts/62.chunk.js +27 -0
  336. package/dist/scripts/62.chunk.js.map +1 -0
  337. package/dist/scripts/63.chunk.js +67 -0
  338. package/dist/scripts/63.chunk.js.map +1 -0
  339. package/dist/scripts/64.chunk.js +80 -0
  340. package/dist/scripts/64.chunk.js.map +1 -0
  341. package/dist/scripts/65.chunk.js +65 -0
  342. package/dist/scripts/65.chunk.js.map +1 -0
  343. package/dist/scripts/66.chunk.js +67 -0
  344. package/dist/scripts/66.chunk.js.map +1 -0
  345. package/dist/scripts/67.chunk.js +104 -0
  346. package/dist/scripts/67.chunk.js.map +1 -0
  347. package/dist/scripts/68.chunk.js +69 -0
  348. package/dist/scripts/68.chunk.js.map +1 -0
  349. package/dist/scripts/69.chunk.js +89 -0
  350. package/dist/scripts/69.chunk.js.map +1 -0
  351. package/dist/scripts/7-90ad392b55.chunk.js +1 -0
  352. package/dist/scripts/7.chunk.js +327 -1
  353. package/dist/scripts/7.chunk.js.map +1 -0
  354. package/dist/scripts/70.chunk.js +36 -0
  355. package/dist/scripts/70.chunk.js.map +1 -0
  356. package/dist/scripts/8.chunk.js +470 -0
  357. package/dist/scripts/8.chunk.js.map +1 -0
  358. package/dist/scripts/9-52877087ef.chunk.js +1 -0
  359. package/dist/scripts/9.chunk.js +471 -7
  360. package/dist/scripts/9.chunk.js.map +1 -0
  361. package/dist/scripts/bundle-99976c17a2.min.js +1 -0
  362. package/dist/scripts/bundle.js +34769 -1
  363. package/dist/scripts/bundle.js.map +1 -0
  364. package/dist/scripts/bundles.json +1 -1
  365. package/package.json +50 -49
  366. package/typings/libs/Trackers.d.ts +10 -0
  367. package/dist/css/33.chunk.css +0 -4
  368. package/dist/css/41.chunk.css +0 -4
  369. package/dist/css/46.chunk.css +0 -2
  370. package/dist/libs/shared/src/context/SearchAppContext.d.ts +0 -9
  371. package/dist/scripts/0-7ab5925809.chunk.js +0 -1
  372. package/dist/scripts/1-08c7a79a47.chunk.js +0 -1
  373. package/dist/scripts/10-20d3430ce2.chunk.js +0 -1
  374. package/dist/scripts/11-7a25650335.chunk.js +0 -1
  375. package/dist/scripts/12-6609af3add.chunk.js +0 -1
  376. package/dist/scripts/13-5adebd80b3.chunk.js +0 -1
  377. package/dist/scripts/14-dbd27fa3a5.chunk.js +0 -1
  378. package/dist/scripts/15-5a0e1ed526.chunk.js +0 -1
  379. package/dist/scripts/16-3adc733311.chunk.js +0 -1
  380. package/dist/scripts/17-a942a8ff32.chunk.js +0 -1
  381. package/dist/scripts/18-ab78fe1ad4.chunk.js +0 -1
  382. package/dist/scripts/19-04ba4906ea.chunk.js +0 -1
  383. package/dist/scripts/2-41fe2d7e77.chunk.js +0 -1
  384. package/dist/scripts/20-f0dcfc47a9.chunk.js +0 -1
  385. package/dist/scripts/21-33e50c0d6b.chunk.js +0 -1
  386. package/dist/scripts/22-d85dfba692.chunk.js +0 -1
  387. package/dist/scripts/23-90201310df.chunk.js +0 -1
  388. package/dist/scripts/24-bc8f0f5709.chunk.js +0 -1
  389. package/dist/scripts/25-317106a5da.chunk.js +0 -1
  390. package/dist/scripts/26-4a3372406a.chunk.js +0 -1
  391. package/dist/scripts/27-074f7ed617.chunk.js +0 -1
  392. package/dist/scripts/28-3f552efb1d.chunk.js +0 -1
  393. package/dist/scripts/29-3b0fed6546.chunk.js +0 -1
  394. package/dist/scripts/3-4c7cdc97d7.chunk.js +0 -7
  395. package/dist/scripts/30-efc1720b45.chunk.js +0 -1
  396. package/dist/scripts/31-fd10b2d2e3.chunk.js +0 -1
  397. package/dist/scripts/32-77df1d4c39.chunk.js +0 -1
  398. package/dist/scripts/33-7c092bbe19.chunk.js +0 -1
  399. package/dist/scripts/34-3c94a6fffe.chunk.js +0 -1
  400. package/dist/scripts/37-ecd001861c.chunk.js +0 -1
  401. package/dist/scripts/38-a42dc5fd6c.chunk.js +0 -1
  402. package/dist/scripts/4-9b843edce7.chunk.js +0 -1
  403. package/dist/scripts/43-9b84379d80.chunk.js +0 -1
  404. package/dist/scripts/44-1bedb97d4b.chunk.js +0 -1
  405. package/dist/scripts/45-b004111b2b.chunk.js +0 -1
  406. package/dist/scripts/47-cece788594.chunk.js +0 -1
  407. package/dist/scripts/48-722f37b837.chunk.js +0 -1
  408. package/dist/scripts/49-cb04b28057.chunk.js +0 -1
  409. package/dist/scripts/5-841e3d083b.chunk.js +0 -1
  410. package/dist/scripts/51-ed260ddadd.chunk.js +0 -1
  411. package/dist/scripts/56-83e51af2a6.chunk.js +0 -1
  412. package/dist/scripts/6-c429467dba.chunk.js +0 -1
  413. package/dist/scripts/7-3c52b41cbf.chunk.js +0 -1
  414. package/dist/scripts/9-fef5ef0698.chunk.js +0 -1
  415. package/dist/scripts/bundle-7782a79aa5.min.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/projects/lite/webpack/universalModuleDefinition","file://C:/ClickView Projects/@clickview/packages/projects/lite/webpack/bootstrap","file://C:/ClickView Projects/@clickview/node_modules/dropzone/dist/dropzone.js","file://C:/ClickView Projects/@clickview/node_modules/jssha/dist/sha1.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify-string.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/parser.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/scanner.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/state.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/tokens/create-token-class.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/tokens/multi.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/core/tokens/text.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/utils/class.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/lib/linkify/utils/options.js","file://C:/ClickView Projects/@clickview/node_modules/linkifyjs/string.js","file://C:/ClickView Projects/@clickview/node_modules/regenerator-runtime/runtime.js","file://C:/ClickView Projects/@clickview/node_modules/reselect/es/index.js","file://C:/ClickView Projects/@clickview/node_modules/webpack/buildin/module.js","file://C:/ClickView Projects/@clickview/node_modules/whatwg-fetch/fetch.js","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/Analytics.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/AnalyticsHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/AnalyticsService.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/clients/BaseAnalyticsClient.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/clients/CollectionApiClient.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/clients/DebuggerClient.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/ApplicationOptionsKey.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/CountryRegionMapping.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/EventFirehose.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/GlobalChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/Regions.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/Services.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enrichers/BaseAnalyticsEnricher.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enrichers/CoreContextEnricher.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enrichers/UserDataEnricher.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enums/CountryCode.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/enums/RegionName.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/interfaces/AnalyticsTypes.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/models/AnalyticsEvent.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/services/ContextService.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/transport/EventTransport.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/CollectionApiClientHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/DataFormatHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/EventWhitelistHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/TypeHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/UploadDataFormatHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/UserAgentHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/utils/VideoDataFormatHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/BehaviorChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/Caches.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/CommonChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/CommonServices.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/DataProviders.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/AppLink.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseAppRouter.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseApplication.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseBehavior.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseCollection.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseCollectionView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseLayoutView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseModel.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseNestedModel.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/EventNames.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/LayoutService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/ListenToRadio.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/LocationUtils.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/Middleware.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/Shell.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/enums/DataServiceErrorType.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/enums/HttpStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/enums/HttpVerbs.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/errors/DevError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/errors/NotImplementedError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/interfaces/BaseCollectionIdentifier.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/interfaces/DataServiceError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/BaseAlertService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/BaseDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/EnvironmentVariables.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/InstanceManager.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/LanguageService.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/ViewModelService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/caches/FifoMemoryCache.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/data-providers/AjaxDataProvider.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/data-providers/SignalRDataProvider.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/ConcurrencyHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/DataServiceErrorHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/FunctionHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/LocalStorageHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/UrlHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/UserAgentHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/components/BackboneViewWrapper.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/constants/ViewModelActions.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/core/ReactApplication.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/core/ReactLayoutView.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightHelpers.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightMiddleware.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightReducer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightSimulator.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/constants/Actions.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/constants/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/data-layers/AjaxRequest.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/data-layers/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/enums/RequestStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/enums/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/normalizer/Denormalizer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/normalizer/Normalizer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/normalizer/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/utils/SimulatorHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/utils/StateHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseInstance.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseRenderBackboneView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/useViewModel.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/middleware/ApplicationMiddleware.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/reducers/ApplicationDataReducer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/reducers/ViewModelReducer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/ArrayHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/ObjectHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/RandomHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/TextHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/TimeHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/collections/NotificationCollection.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/notification-item/NotificationItem.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/notification-item/NotificationItemComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/notification-item/notification-item.scss?d156","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/partial-loading/NotificationsPartial.hbs","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-items/partial-loading/notification-partial.scss?ed71","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-list/NotificationList.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-list/NotificationListComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-status/NotificationStatus.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-status/NotificationStatusComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/components/notification-status/notification-status.scss?5641","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/AppLinkReferrer.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationActions.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationAlertType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationAppLinkModules.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationModules.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/enums/NotificationType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/models/Notification.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/services/NotificationDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/services/NotificationService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/services/NotificationSocketService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/services/data-providers/NotificationsSocketDataProvider.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/utils/NotificationAppLinkHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/utils/NotificationsHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/header/NotificationHeader.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/header/NotificationHeaderView.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/header/notification-header.scss?3cc9","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/popover/NotificationsPopover.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/notifications/views/popover/NotificationsPopoverView.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/enums/PlaylistSortType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/utils/PlaylistSortHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/confirm-selection/ConfirmSelection.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/confirm-selection/ConfirmSelectionComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/confirm-selection/confirm-selection.scss?1e4e","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/classification/ClassificationSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/classification/ClassificationSearchResultComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/classification/classification-search-result.scss?7f5f","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/recent-search/RecentSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/recent-search/RecentSearchResultComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/recent-search/recent-search.scss?0ca7","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/series/SeriesSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/series/SeriesSearchResultComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/tag/TagSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/tag/TagSearchResultComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/video-result/VideoSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/instant-search/video-result/VideoSearchResultComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-context/SearchContext.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-context/SearchContextComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-context/search-context.scss?4f93","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-tips/SearchTipItem.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-tips/SearchTips.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-tips/SearchTipsComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/components/search-tips/search-tips.scss?8be1","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/constants/TypeaheadConfiguration.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/enums/SearchQueryType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/enums/SearchTypes.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/models/Query.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/services/ContextualSearchService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/utils/InstantSearchHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/utils/RecentSearchHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/utils/SearchHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/utils/TypeaheadHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/SearchBar.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/SearchBarView.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/partial/SearchBarPartial.hbs","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/partial/search-bar-partial.scss?5769","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/search.scss?29a7","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/DirectSearchResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/FolderResult.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/Loading.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/NoLibraries.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/NotFound.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/RecentSearchHeader.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/ResultFooter.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/ResultHeader.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/search/views/search-bar/templates/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/subjects/enums/ClassificationMemberType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/collections/PendingItemsCollection.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/constants/UploadConstants.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/enums/FileLifestyle.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/enums/PendingItemStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/errors/file-type/FileTypeError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/errors/internet-connectivity/InternetConnectivityError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/services/BasePendingItemsService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/services/DropzoneWrapper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/services/UploadService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/upload/utils/PendingItemsHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/Alert.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/AlertContent.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/AlertList.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/alert.scss?d6f6","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/app-link/AppLink.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/icon-button/IconButton.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/icon-button/icon-button.scss?5d3a","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/popup/Popup.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/popup/PopupButtons.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/popup/PopupLoadingSpinner.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/series-link/SeriesLink.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/series-link/series-link.scss?011d","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/spinner-button/SpinnerButton.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/svg-container/SvgContainer.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/svg-container/SvgContainer2.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/text/Text.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/tooltip/Tooltip.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/AppVariables.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/BootstrapKeys.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/CacheDurations.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/DataPrefixes.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/LayoutRegions.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/RadioChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/SharedServices.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/WithStatements.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/context/VideoActionsContext.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/CountryCode.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/CurationStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/CustomerType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/Images.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/LibraryType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/MasterType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/MediaQueries.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/PartialLoading.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/PendingProcessOrigin.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/SubtitleExtractionOptions.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/UserRole.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/VideoOrigin.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/errors/primitives/AlertError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/errors/primitives/DialogError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/errors/primitives/ErrorPageError.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/ClassificationRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/ConfigRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/UserRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseMediaQuery.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/ImportedSvgs.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/add-to-playlist.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/close.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/delete.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/down.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/edit-clickview.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/edit.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/expand.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/minus.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/more.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/new-window.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/no-edit.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/plus.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/preview.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/right.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/search.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/share.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/up-down.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/upload.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/visible-off.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/visible-on.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/arrow-left.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/arrow-right.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/caret.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-down.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-left.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-right.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-up.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/enter.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/archive.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/bell.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/bookmark.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/broadcast.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/calendar.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/cog.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/compass.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-excel.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-img.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-pdf.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-ppt.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-word.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-zip.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/folder.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/handle.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/heart-outline.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/heart.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/history.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/interactive.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/link.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/playlist.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/publisher-archive.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/resources.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/series.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/star-o.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/star.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/subject.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/tag.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/time.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/video.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/white-wave.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/close-caption.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/contract.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/full-screen.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/mute.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/next.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/pause.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/play-circle.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/play.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/previous.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/quality-240.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/quality-480.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/quality-hd.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/volume.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/settings.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/check-circle-o.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/check-circle.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/check.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/close-caption-badge.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/info.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/lock.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/question.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/verified.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/visible-off.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/visible-on.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/warning-o.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/warning.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/app-variables/BaseNotificationsAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/app-variables/BaseSearchAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/app-variables/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/models/Widget.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/interfaces/models/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/behaviors/empty-state/EmptyStateBehavior.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/behaviors/popover/PopoverBehavior.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/behaviors/tooltip/TooltipBehavior.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/empty-state/EmptyState.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/empty-state/EmptyStateComponent.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/thumbnail/Thumbnail.hbs","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/thumbnail/ThumbnailComponent.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/components/thumbnail/thumbnail.scss?761d","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/constants/empty-state-components/EmptyStateComponents.ts","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/constants/empty-state-components/empty-state.scss?efb9","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/enums/EmptyState.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/enums/SortType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/interfaces/CollectionIdentifier.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/utils/EmptyStateHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/legacy/utils/LangHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/AppOptionsService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/ConfigDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/ContextService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/ImageUrlService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/LanguageDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/services/UserDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/DurationHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/ImageHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/LibraryDataServiceHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/MaskHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/NumberHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/SvgHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/video-actions/VideoActionsHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/app.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/classrooms/LiteClassroomsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/classrooms/flight-requests/ClassroomRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/content-updates/LiteContentUpdatesApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/content-updates/utils/LiteContentUpdateAppLinks.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/content-updates/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/dashboard/LiteDashboardApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/default/LiteDefaultApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/embed/LiteEmbedApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/notifications/LiteNotificationsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/notifications/constants/NotificationsAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/LitePlaylistsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/search/LiteSearchApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/search/constants/SearchAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/settings/LiteSettingsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/subjects/LiteSubjectApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/LiteUploadApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/components/upload-file-select/UploadFileSelect.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/services/CombineUploadsService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/services/FlightVideoUploadDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/services/VideoUploadService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/user-manager/LiteUserManagerApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/components/avatar/Avatar.tsx","webpack://@clickview/lite/./src/shared/components/avatar/avatar.scss?8d2f","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/components/floating-player/FloatingPlayer.tsx","webpack://@clickview/lite/./src/shared/components/floating-player/floating-player.scss?45d5","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/components/user-options/UserOptions.tsx","webpack://@clickview/lite/./src/shared/components/user-options/user-options.scss?42b3","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/components/web-player/WebPlayer.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/DefaultAlertHeading.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/ImageUrls.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteActions.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteLayoutRegions.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteLayouts.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteRadioChannels.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/LiteViewModels.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/Services.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/constants/WithStatements.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/errors/not-found/LiteNotFoundError.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/flight-requests/VideoRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/hooks/useInitPlayerContext.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/hooks/useNavLock.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/embed-layout/EmbedLayout.hbs","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/embed-layout/EmbedLayoutComponent.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/embed-layout/EmbedLayoutView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/teacher-layout/TeacherLayout.hbs","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/teacher-layout/TeacherLayoutComponent.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/teacher-layout/TeacherLayoutView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/layouts/teacher-layout/drag-mask/DragMask.tsx","webpack://@clickview/lite/./src/shared/layouts/teacher-layout/drag-mask/drag-mask.scss?5197","webpack://@clickview/lite/./src/shared/layouts/teacher-layout/teacher-layout.scss?a910","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/services/FlightLibraryDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/services/FlightSeriesDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/services/FlightVideoDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/utils/DialogHelper.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/header/HeaderView.tsx","webpack://@clickview/lite/./src/shared/views/header/header.scss?b5af","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/CollapsedLeftNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/ExpandedLeftNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/LeftNavItem.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/LeftNavView.tsx","webpack://@clickview/lite/./src/shared/views/left-nav/left-nav.scss?4792","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/left-nav/partial-loading/PartialLeftNavItem.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterAjaxMiddleware.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterAnalytics.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterAppOptions.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterApplicationVariables.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterApplications.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterCaches.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterDataProviders.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterDataServices.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterErrorHandlers.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterHandlebarsHelpers.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterLayouts.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterRuntimeEnvironment.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterServices.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterStore.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/RegisterViewDataExtensions.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/startup/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/styles/index.ts","webpack://@clickview/lite/./src/styles/theme-overrides.scss?012e","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"FontAwesome\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ImmersiveReader\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Backbone\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Marionette\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Bloodhound\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"DOMPurify\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Handlebars\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"marked\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"moment\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Polyglot\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"React\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Autosuggest\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactBootstrap\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactCustomScrollbars\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactDOM\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"reactDropzone\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactIntersectionObserver\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactRedux\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"SortableHOC\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"ReactTransitionGroup\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Redux\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"_\"","file://C:/ClickView Projects/@clickview/packages/projects/lite/external \"Yup\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;QACA;QACA;;;QAGA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;;;QAGA;QACA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;;;QAIA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;QACA,oBAAoB;QACpB;QACA;QACA;QACA;QACA;QACA;QACA,mBAAmB,6BAA6B;QAChD;QACA;QACA;QACA;QACA;QACA,mBAAmB,8BAA8B;QACjD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA,KAAK;QACL;QACA,KAAK;QACL;;QAEA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;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;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;;;;;;;;;;;;;ACnPA,8CAAa;;AAEb,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;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;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,0FAA0F,aAAa;AACvG;AACA;;AAEA,kIAAkI;AAClI;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C,EAAE;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;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;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,UAAU,SAAS,aAAa;AAC9C;AACA,4CAA4C,UAAU,sBAAsB,aAAa;;AAEzF;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,YAAY;AAC1B;AACA,oDAAoD,YAAY;;AAEhE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,iDAAiD;AAC7E;AACA;AACA;AACA;AACA,gCAAgC;;;AAGhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0KAA0K;AAC1K;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,2CAA2C;AAC3C;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,mCAAmC;;;AAGnC;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;;AAEvD;AACA,0LAA0L;AAC1L;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0LAA0L;AAC1L;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4GAA4G;AAC5G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA,4LAA4L;AAC5L;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,+LAA+L;AAC/L;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kMAAkM;AAClM;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT,kDAAkD;;;AAGlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4DAA4D;;;AAG5D;AACA;AACA;AACA;AACA;AACA,oMAAoM;AACpM;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,8DAA8D;;;AAG9D;AACA;AACA;AACA,sCAAsC;AACtC,sDAAsD;;;AAGtD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sDAAsD;;;AAGtD;AACA;AACA;AACA,SAAS;AACT,wDAAwD;;;AAGxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,wDAAwD;AACxD,wDAAwD;AACxD,sDAAsD;AACtD,kDAAkD;AAClD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA,+FAA+F,eAAe;AAC9G;AACA;;AAEA,qIAAqI;AACrI;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,sCAAsC,sEAAsE;;AAE5G;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kJAAkJ;AAClJ;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,gJAAgJ;AAChJ;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;;AAEA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4JAA4J;AAC5J;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,+IAA+I;AAC/I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAA0D;AAC1D;;AAEA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,iCAAiC;AACtD;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,kJAAkJ;AAClJ;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,2DAA2D,UAAU,0DAA0D,aAAa;AAC5I,OAAO;AACP;AACA,OAAO;AACP,0DAA0D,UAAU;AACpE;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,iDAAiD;AACjD,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,uJAAuJ;AACvJ;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,+BAA+B;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,mJAAmJ;AACnJ;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mJAAmJ;AACnJ;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8FAA8F,eAAe;AAC7G;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,iCAAiC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA,2BAA2B,iCAAiC;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA,GAAG;AACH;AACA;AACA,qBAAqB,iCAAiC;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,qBAAqB,kBAAkB;AACvC;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,uMAAuM;AACvM;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,wJAAwJ;AACxJ;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iCAAiC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8IAA8I;AAC9I;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;;AAEA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,2FAA2F,YAAY;AACvG;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA,0IAA0I;AAC1I;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,+IAA+I;AAC/I;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,iKAAiK;AACjK;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+DAA+D;;AAE/D;AACA;AACA;AACA,0DAA0D,2BAA2B;AACrF;AACA;;AAEA;AACA,yBAAyB,mBAAmB;AAC5C;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wIAAwI;AACxI;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,iKAAiK;AACjK;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,8IAA8I;AAC9I;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,IAAI,KAA6B;AACjC;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;;AAEzC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;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;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,iDAAiD;AACjD;AACA;AACA,2EAA2E;AAC3E;AACA;AACA,8BAA8B;AAC9B;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;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;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;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;;AAEA;AACA;A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BAA2B;AAC3B,mCAAmC;AACnC,yCAAyC;AACzC,2BAA2B;AAC3B,+BAA+B;AAC/B,kCAAkC;AAClC,8BAA8B;AAC9B,uCAAuC;AACvC,kCAAkC;AAClC,sCAAsC;AACtC,kCAAkC;AAClC,oCAAoC;AACpC,yCAAyC;AACzC,kCAAkC;AAClC,8CAA8C,qBAAqB;AACnE,gDAAgD;AAChD,qDAAqD;AACrD,8CAA8C;AAC9C,uCAAuC;AACvC,yCAAyC;AACzC,8CAA8C;AAC9C,uCAAuC;AACvC,iCAAiC;AACjC,qCAAqC;AACrC,sCAAsC;AACtC,gCAAgC;AAChC,2CAA2C;AAC3C,mDAAmD;AACnD,+CAA+C;AAC/C,8BAA8B;AAC9B,iCAAiC;AACjC,kCAAkC;AAClC,gCAAgC;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wB;;;;;;;;;;;;AC9Ra;;AAEb;AACA;;AAEA,aAAa,mBAAO,CAAC,0EAAS;;AAE9B,YAAY,mBAAO,CAAC,sFAAe;;AAEnC;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAE3Q,onUAAonU;;AAEpnU;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2EAA2E;;AAE3E,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;;AAEA;AACA,4QAA4Q,yJAAyJ,uMAAuM;;AAE5mB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,4CAA4C;;AAE5C;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yEAAyE;;AAEzE;;AAEA;AACA,gBAAgB,0BAA0B;AAC1C;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,OAAO;AAChB,UAAU,MAAM;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,qCAAqC;;AAErC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sB;;;;;;;;;;;;ACnLa;;AAEb;AACA;;AAEA,aAAa,mBAAO,CAAC,kFAAgB;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB,UAAU,UAAU;AACpB;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,MAAM;AACjB;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA,wBAAwB;AACxB,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,MAAM;AAChB,WAAW;AACX;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,cAAc;AACxB,WAAW;AACX;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA,UAAU,UAAU;AACpB,UAAU,MAAM;AAChB,WAAW;AACX;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,SAAS,OAAO;AAChB,SAAS,eAAe;AACxB,SAAS,MAAM;AACf;AACA,SAAS,MAAM;AACf;AACA,UAAU,MAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,4B;;;;;;;;;;;;AChPa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4C;;;;;;;;;;;;ACXa;;AAEb;AACA;;AAEA,wBAAwB,mBAAO,CAAC,2GAAsB;;AAEtD,aAAa,mBAAO,CAAC,qFAAmB;;AAExC,YAAY,mBAAO,CAAC,+EAAQ;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,wFAAwF,eAAe;;AAEvG;AACA;AACA;AACA;AACA;AACA,sFAAsF,aAAa;;AAEnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,mBAAmB;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kB;;;;;;;;;;;;AC3Ma;;AAEb;AACA;;AAEA,wBAAwB,mBAAO,CAAC,2GAAsB;;AAEtD,aAAa,mBAAO,CAAC,qFAAmB;;AAExC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,WAAW;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gCAAgC;AAChC;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;;AAEA;;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,8B;;;;;;;;;;;;AC3Ma;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACda;;AAEb;;AAEA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;AC9HA,iBAAiB,mBAAO,CAAC,mFAAsB;;;;;;;;;;;;ACA/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;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;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;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;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,SAAE;AAClD;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrtBA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEO;AACP,8FAA8F,aAAa;AAC3G;AACA;;AAEA;AACA,uEAAuE,eAAe;AACtF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,qBAAqB,YAAY;AACjC;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;;AAEA;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,wEAAwE,eAAe;AACvF;AACA;;AAEA;AACA;AACA;AACA,KAAK,IAAI;AACT,GAAG;AACH,C;;;;;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD,OAAO;AACP;AACA,OAAO;AACP,4EAA4E;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,qBAAqB;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AA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;;;;;;;;;;;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;AAC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","file":"scripts/bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"FontAwesome\"), require(\"Backbone\"), require(\"Marionette\"), require(\"DOMPurify\"), require(\"moment\"), require(\"Polyglot\"), require(\"React\"), require(\"ReactBootstrap\"), require(\"ReactTransitionGroup\"), require(\"Handlebars\"), require(\"Bloodhound\"), require(\"ReactDOM\"), require(\"reactDropzone\"), require(\"ReactRedux\"), require(\"_\"), require(\"ReactCustomScrollbars\"), require(\"ImmersiveReader\"), require(\"marked\"), require(\"Autosuggest\"), require(\"ReactIntersectionObserver\"), require(\"SortableHOC\"), require(\"Redux\"), require(\"Yup\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"FontAwesome\", \"Backbone\", \"Marionette\", \"DOMPurify\", \"moment\", \"Polyglot\", \"React\", \"ReactBootstrap\", \"ReactTransitionGroup\", \"Handlebars\", \"Bloodhound\", \"ReactDOM\", \"reactDropzone\", \"ReactRedux\", \"_\", \"ReactCustomScrollbars\", \"ImmersiveReader\", \"marked\", \"Autosuggest\", \"ReactIntersectionObserver\", \"SortableHOC\", \"Redux\", \"Yup\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@clickview/lite\"] = factory(require(\"FontAwesome\"), require(\"Backbone\"), require(\"Marionette\"), require(\"DOMPurify\"), require(\"moment\"), require(\"Polyglot\"), require(\"React\"), require(\"ReactBootstrap\"), require(\"ReactTransitionGroup\"), require(\"Handlebars\"), require(\"Bloodhound\"), require(\"ReactDOM\"), require(\"reactDropzone\"), require(\"ReactRedux\"), require(\"_\"), require(\"ReactCustomScrollbars\"), require(\"ImmersiveReader\"), require(\"marked\"), require(\"Autosuggest\"), require(\"ReactIntersectionObserver\"), require(\"SortableHOC\"), require(\"Redux\"), require(\"Yup\"));\n\telse\n\t\troot[\"@clickview/lite\"] = factory(root[\"FontAwesome\"], root[\"Backbone\"], root[\"Marionette\"], root[\"DOMPurify\"], root[\"moment\"], root[\"Polyglot\"], root[\"React\"], root[\"ReactBootstrap\"], root[\"ReactTransitionGroup\"], root[\"Handlebars\"], root[\"Bloodhound\"], root[\"ReactDOM\"], root[\"reactDropzone\"], root[\"ReactRedux\"], root[\"_\"], root[\"ReactCustomScrollbars\"], root[\"ImmersiveReader\"], root[\"marked\"], root[\"Autosuggest\"], root[\"ReactIntersectionObserver\"], root[\"SortableHOC\"], root[\"Redux\"], root[\"Yup\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__fortawesome_fontawesome__, __WEBPACK_EXTERNAL_MODULE_backbone__, __WEBPACK_EXTERNAL_MODULE_backbone_marionette__, __WEBPACK_EXTERNAL_MODULE_dompurify__, __WEBPACK_EXTERNAL_MODULE_moment__, __WEBPACK_EXTERNAL_MODULE_node_polyglot__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_bootstrap__, __WEBPACK_EXTERNAL_MODULE_react_transition_group__, __WEBPACK_EXTERNAL_MODULE_handlebars__, __WEBPACK_EXTERNAL_MODULE_bloodhound__, __WEBPACK_EXTERNAL_MODULE_react_dom__, __WEBPACK_EXTERNAL_MODULE_react_dropzone__, __WEBPACK_EXTERNAL_MODULE_react_redux__, __WEBPACK_EXTERNAL_MODULE_underscore__, __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__, __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__, __WEBPACK_EXTERNAL_MODULE_marked__, __WEBPACK_EXTERNAL_MODULE_react_autosuggest__, __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__, __WEBPACK_EXTERNAL_MODULE_react_sortable_hoc__, __WEBPACK_EXTERNAL_MODULE_redux__, __WEBPACK_EXTERNAL_MODULE_yup__) {\nreturn "," \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"main\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"main\": 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"scripts/\" + chunkId + \".chunk.js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"0\":1,\"1\":1,\"3\":1,\"4\":1,\"5\":1,\"10\":1,\"11\":1,\"12\":1,\"13\":1,\"14\":1,\"16\":1,\"18\":1,\"19\":1,\"21\":1,\"22\":1,\"23\":1,\"24\":1,\"25\":1,\"26\":1,\"27\":1,\"28\":1,\"29\":1,\"30\":1,\"31\":1,\"32\":1,\"34\":1,\"35\":1,\"36\":1,\"37\":1,\"38\":1,\"45\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + chunkId + \".chunk.css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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 \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp_clickview_lite\"] = window[\"webpackJsonp_clickview_lite\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/app.ts\");\n","\"use strict\";\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\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*\n *\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n *\n * Copyright (c) 2012, Matias Meno\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\n// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nvar Emitter = function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n }\n\n _createClass(Emitter, [{\n key: \"on\",\n\n // Add an event listener for given event\n value: function on(event, fn) {\n this._callbacks = this._callbacks || {};\n // Create namespace for this event\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n this._callbacks[event].push(fn);\n return this;\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n this._callbacks = this._callbacks || {};\n var callbacks = this._callbacks[event];\n\n if (callbacks) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n for (var _iterator = callbacks, _isArray = true, _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var callback = _ref;\n\n callback.apply(this, args);\n }\n }\n\n return this;\n }\n\n // Remove event listener for given event. If fn is not provided, all event\n // listeners for that event will be removed. If neither is provided, all\n // event listeners will be removed.\n\n }, {\n key: \"off\",\n value: function off(event, fn) {\n if (!this._callbacks || arguments.length === 0) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) {\n return this;\n }\n\n // remove all handlers\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n return this;\n }\n }]);\n\n return Emitter;\n}();\n\nvar Dropzone = function (_Emitter) {\n _inherits(Dropzone, _Emitter);\n\n _createClass(Dropzone, null, [{\n key: \"initClass\",\n value: function initClass() {\n\n // Exposing the emitter class, mainly for tests\n this.prototype.Emitter = Emitter;\n\n /*\n This is a list of all available events you can register on a dropzone object.\n You can register an event handler like this:\n dropzone.on(\"dragEnter\", function() { });\n */\n this.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n\n this.prototype.defaultOptions = {\n /**\n * Has to be specified on elements other than form (or when the form\n * doesn't have an `action` attribute). You can also\n * provide a function that will be called with `files` and\n * must return the url (since `v3.12.0`)\n */\n url: null,\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method (since `v3.12.0`).\n */\n method: \"post\",\n\n /**\n * Will be set on the XHRequest.\n */\n withCredentials: false,\n\n /**\n * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n */\n timeout: 30000,\n\n /**\n * How many file uploads to process in parallel (See the\n * Enqueuing file uploads* documentation section for more info)\n */\n parallelUploads: 2,\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `processingmultiple`). See the events\n * documentation section for more information.\n */\n uploadMultiple: false,\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n */\n chunking: false,\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n forceChunking: false,\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n chunkSize: 2000000,\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n parallelChunkUploads: false,\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n retryChunks: false,\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n retryChunksLimit: 3,\n\n /**\n * If not `null` defines how many files this Dropzone handles. If it exceeds,\n * the event `maxfilesexceeded` will be called. The dropzone element gets the\n * class `dz-max-files-reached` accordingly so you can provide visual feedback.\n */\n maxFilesize: 256,\n\n /**\n * The name of the file param that gets transferred.\n * **NOTE**: If you have the option `uploadMultiple` set to `true`, then\n * Dropzone will append `[]` to the name.\n */\n paramName: \"file\",\n\n /**\n * Whether thumbnails for images should be generated\n */\n createImageThumbnails: true,\n\n /**\n * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n */\n maxThumbnailFilesize: 10,\n\n /**\n * If `null`, the ratio of the image will be used to calculate it.\n */\n thumbnailWidth: 120,\n\n /**\n * The same as `thumbnailWidth`. If both are null, images will not be resized.\n */\n thumbnailHeight: 120,\n\n /**\n * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n thumbnailMethod: 'crop',\n\n /**\n * If set, images will be resized to these dimensions before being **uploaded**.\n * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n * ratio of the file will be preserved.\n *\n * The `options.transformFile` function uses these options, so if the `transformFile` function\n * is overridden, these options don't do anything.\n */\n resizeWidth: null,\n\n /**\n * See `resizeWidth`.\n */\n resizeHeight: null,\n\n /**\n * The mime type of the resized image (before it gets uploaded to the server).\n * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n * See `resizeWidth` for more information.\n */\n resizeMimeType: null,\n\n /**\n * The quality of the resized images. See `resizeWidth`.\n */\n resizeQuality: 0.8,\n\n /**\n * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n resizeMethod: 'contain',\n\n /**\n * The base that is used to calculate the filesize. You can change this to\n * 1024 if you would rather display kibibytes, mebibytes, etc...\n * 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` not `1 kilobyte`.\n * You can change this to `1024` if you don't care about validity.\n */\n filesizeBase: 1000,\n\n /**\n * Can be used to limit the maximum number of files that will be handled by this Dropzone\n */\n maxFiles: null,\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n */\n headers: null,\n\n /**\n * If `true`, the dropzone element itself will be clickable, if `false`\n * nothing will be clickable.\n *\n * You can also pass an HTML element, a CSS selector (for multiple elements)\n * or an array of those. In that case, all of those elements will trigger an\n * upload when clicked.\n */\n clickable: true,\n\n /**\n * Whether hidden files in directories should be ignored.\n */\n ignoreHiddenFiles: true,\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * If the Dropzone is `clickable` this option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n acceptedFiles: null,\n\n /**\n * **Deprecated!**\n * Use acceptedFiles instead.\n */\n acceptedMimeTypes: null,\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `myDropzone.processQueue()`.\n *\n * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n * section for more information.\n */\n autoProcessQueue: true,\n\n /**\n * If false, files added to the dropzone will not be queued by default.\n * You'll have to call `enqueueFile(file)` manually.\n */\n autoQueue: true,\n\n /**\n * If `true`, this will add a link to every file preview to remove or cancel (if\n * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n * and `dictRemoveFile` options are used for the wording.\n */\n addRemoveLinks: false,\n\n /**\n * Defines where to display the file previews – if `null` the\n * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n * selector. The element should have the `dropzone-previews` class so\n * the previews are displayed properly.\n */\n previewsContainer: null,\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly.\n */\n hiddenInputContainer: \"body\",\n\n /**\n * If null, no capture type will be specified\n * If camera, mobile devices will skip the file selection and choose camera\n * If microphone, mobile devices will skip the file selection and choose the microphone\n * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n * On apple devices multiple must be set to false. AcceptedFiles may need to\n * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n */\n capture: null,\n\n /**\n * **Deprecated**. Use `renameFile` instead.\n */\n renameFilename: null,\n\n /**\n * A function that is invoked before the file is uploaded to the server and renames the file.\n * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n * file that gets used during the upload can be accessed through `file.upload.filename`.\n */\n renameFile: null,\n\n /**\n * If `true` the fallback will be forced. This is very useful to test your server\n * implementations first and make sure that everything works as\n * expected without dropzone if you experience problems, and to test\n * how your fallbacks will look.\n */\n forceFallback: false,\n\n /**\n * The text used before any files are dropped.\n */\n dictDefaultMessage: \"Drop files here to upload\",\n\n /**\n * The text that replaces the default message text it the browser is not supported.\n */\n dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n /**\n * The text that will be added before the fallback form.\n * If you provide a fallback element yourself, or if this option is `null` this will\n * be ignored.\n */\n dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n /**\n * If the filesize is too big.\n * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n */\n dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n /**\n * If the file doesn't match the file type.\n */\n dictInvalidFileType: \"You can't upload files of this type.\",\n\n /**\n * If the server response was invalid.\n * `{{statusCode}}` will be replaced with the servers status code.\n */\n dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n */\n dictCancelUpload: \"Cancel upload\",\n\n /**\n * The text that is displayed if an upload was manually canceled\n */\n dictUploadCanceled: \"Upload canceled.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n */\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used to remove a file.\n */\n dictRemoveFile: \"Remove file\",\n\n /**\n * If this is not null, then the user will be prompted before removing a file.\n */\n dictRemoveFileConfirmation: null,\n\n /**\n * Displayed if `maxFiles` is st and exceeded.\n * The string `{{maxFiles}}` will be replaced by the configuration value.\n */\n dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n /**\n * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n * `b` for bytes.\n */\n dictFileSizeUnits: { tb: \"TB\", gb: \"GB\", mb: \"MB\", kb: \"KB\", b: \"b\" },\n /**\n * Called when dropzone initialized\n * You can add event listeners here\n */\n init: function init() {},\n\n\n /**\n * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n * of a function, this needs to return a map.\n *\n * The default implementation does nothing for normal uploads, but adds relevant information for\n * chunked uploads.\n *\n * This is the same as adding hidden input fields in the form element.\n */\n params: function params(files, xhr, chunk) {\n if (chunk) {\n return {\n dzuuid: chunk.file.upload.uuid,\n dzchunkindex: chunk.index,\n dztotalfilesize: chunk.file.size,\n dzchunksize: this.options.chunkSize,\n dztotalchunkcount: chunk.file.upload.totalChunkCount,\n dzchunkbyteoffset: chunk.index * this.options.chunkSize\n };\n }\n },\n\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n accept: function accept(file, done) {\n return done();\n },\n\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n chunksUploaded: function chunksUploaded(file, done) {\n done();\n },\n\n /**\n * Gets called when the browser is not supported.\n * The default implementation shows the fallback input field and adds\n * a text.\n */\n fallback: function fallback() {\n // This code should pass in IE7... :(\n var messageElement = void 0;\n this.element.className = this.element.className + \" dz-browser-not-supported\";\n\n for (var _iterator2 = this.element.getElementsByTagName(\"div\"), _isArray2 = true, _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var child = _ref2;\n\n if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\"; // Removes the 'dz-default' class\n break;\n }\n }\n if (!messageElement) {\n messageElement = Dropzone.createElement(\"<div class=\\\"dz-message\\\"><span></span></div>\");\n this.element.appendChild(messageElement);\n }\n\n var span = messageElement.getElementsByTagName(\"span\")[0];\n if (span) {\n if (span.textContent != null) {\n span.textContent = this.options.dictFallbackMessage;\n } else if (span.innerText != null) {\n span.innerText = this.options.dictFallbackMessage;\n }\n }\n\n return this.element.appendChild(this.getFallbackForm());\n },\n\n\n /**\n * Gets called to calculate the thumbnail dimensions.\n *\n * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n *\n * - `srcWidth` & `srcHeight` (required)\n * - `trgWidth` & `trgHeight` (required)\n * - `srcX` & `srcY` (optional, default `0`)\n * - `trgX` & `trgY` (optional, default `0`)\n *\n * Those values are going to be used by `ctx.drawImage()`.\n */\n resize: function resize(file, width, height, resizeMethod) {\n var info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height\n };\n\n var srcRatio = file.width / file.height;\n\n // Automatically calculate dimensions if not specified\n if (width == null && height == null) {\n width = info.srcWidth;\n height = info.srcHeight;\n } else if (width == null) {\n width = height * srcRatio;\n } else if (height == null) {\n height = width / srcRatio;\n }\n\n // Make sure images aren't upscaled\n width = Math.min(width, info.srcWidth);\n height = Math.min(height, info.srcHeight);\n\n var trgRatio = width / height;\n\n if (info.srcWidth > width || info.srcHeight > height) {\n // Image is bigger and needs rescaling\n if (resizeMethod === 'crop') {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n } else if (resizeMethod === 'contain') {\n // Method 'contain'\n if (srcRatio > trgRatio) {\n height = width / srcRatio;\n } else {\n width = height * srcRatio;\n }\n } else {\n throw new Error(\"Unknown resizeMethod '\" + resizeMethod + \"'\");\n }\n }\n\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n\n info.trgWidth = width;\n info.trgHeight = height;\n\n return info;\n },\n\n\n /**\n * Can be used to transform the file (for example, resize an image if necessary).\n *\n * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n * images according to those dimensions.\n *\n * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n * to be invoked with the file when the transformation is done.\n */\n transformFile: function transformFile(file, done) {\n if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\n return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n } else {\n return done(file);\n }\n },\n\n\n /**\n * A string that contains the template used for each dropped\n * file. Change it to fulfill your needs but make sure to properly\n * provide all elements.\n *\n * If you want to use an actual HTML element instead of providing a String\n * as a config option, you could create a div with the id `tpl`,\n * put the template inside it and provide the element like this:\n *\n * document\n * .querySelector('#tpl')\n * .innerHTML\n *\n */\n previewTemplate: \"<div class=\\\"dz-preview dz-file-preview\\\">\\n <div class=\\\"dz-image\\\"><img data-dz-thumbnail /></div>\\n <div class=\\\"dz-details\\\">\\n <div class=\\\"dz-size\\\"><span data-dz-size></span></div>\\n <div class=\\\"dz-filename\\\"><span data-dz-name></span></div>\\n </div>\\n <div class=\\\"dz-progress\\\"><span class=\\\"dz-upload\\\" data-dz-uploadprogress></span></div>\\n <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div>\\n <div class=\\\"dz-success-mark\\\">\\n <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n <title>Check</title>\\n <defs></defs>\\n <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n </g>\\n </svg>\\n </div>\\n <div class=\\\"dz-error-mark\\\">\\n <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n <title>Error</title>\\n <defs></defs>\\n <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n <g id=\\\"Check-+-Oval-2\\\" sketch:type=\\\"MSLayerGroup\\\" stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\">\\n <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n </g>\\n </g>\\n </svg>\\n </div>\\n</div>\",\n\n // END OPTIONS\n // (Required by the dropzone documentation parser)\n\n\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */\n\n // Those are self explanatory and simply concern the DragnDrop.\n drop: function drop(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart: function dragstart(e) {},\n dragend: function dragend(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter: function dragenter(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover: function dragover(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave: function dragleave(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n paste: function paste(e) {},\n\n\n // Called whenever there are no files left in the dropzone anymore, and the\n // dropzone should be displayed as if in the initial state.\n reset: function reset() {\n return this.element.classList.remove(\"dz-started\");\n },\n\n\n // Called when a file is added to the queue\n // Receives `file`\n addedfile: function addedfile(file) {\n var _this2 = this;\n\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n\n if (this.previewsContainer) {\n file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n file.previewTemplate = file.previewElement; // Backwards compatibility\n\n this.previewsContainer.appendChild(file.previewElement);\n for (var _iterator3 = file.previewElement.querySelectorAll(\"[data-dz-name]\"), _isArray3 = true, _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var node = _ref3;\n\n node.textContent = file.name;\n }\n for (var _iterator4 = file.previewElement.querySelectorAll(\"[data-dz-size]\"), _isArray4 = true, _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n node = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n node = _i4.value;\n }\n\n node.innerHTML = this.filesize(file.size);\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\" + this.options.dictRemoveFile + \"</a>\");\n file.previewElement.appendChild(file._removeLink);\n }\n\n var removeFileEvent = function removeFileEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n if (file.status === Dropzone.UPLOADING) {\n return Dropzone.confirm(_this2.options.dictCancelUploadConfirmation, function () {\n return _this2.removeFile(file);\n });\n } else {\n if (_this2.options.dictRemoveFileConfirmation) {\n return Dropzone.confirm(_this2.options.dictRemoveFileConfirmation, function () {\n return _this2.removeFile(file);\n });\n } else {\n return _this2.removeFile(file);\n }\n }\n };\n\n for (var _iterator5 = file.previewElement.querySelectorAll(\"[data-dz-remove]\"), _isArray5 = true, _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray5) {\n if (_i5 >= _iterator5.length) break;\n _ref4 = _iterator5[_i5++];\n } else {\n _i5 = _iterator5.next();\n if (_i5.done) break;\n _ref4 = _i5.value;\n }\n\n var removeLink = _ref4;\n\n removeLink.addEventListener(\"click\", removeFileEvent);\n }\n }\n },\n\n\n // Called whenever a file is removed.\n removedfile: function removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) {\n file.previewElement.parentNode.removeChild(file.previewElement);\n }\n return this._updateMaxFilesReachedClass();\n },\n\n\n // Called when a thumbnail has been generated\n // Receives `file` and `dataUrl`\n thumbnail: function thumbnail(file, dataUrl) {\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n for (var _iterator6 = file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\"), _isArray6 = true, _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray6) {\n if (_i6 >= _iterator6.length) break;\n _ref5 = _iterator6[_i6++];\n } else {\n _i6 = _iterator6.next();\n if (_i6.done) break;\n _ref5 = _i6.value;\n }\n\n var thumbnailElement = _ref5;\n\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n\n return setTimeout(function () {\n return file.previewElement.classList.add(\"dz-image-preview\");\n }, 1);\n }\n },\n\n\n // Called whenever an error occurs\n // Receives `file` and `message`\n error: function error(file, message) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n if (typeof message !== \"String\" && message.error) {\n message = message.error;\n }\n for (var _iterator7 = file.previewElement.querySelectorAll(\"[data-dz-errormessage]\"), _isArray7 = true, _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray7) {\n if (_i7 >= _iterator7.length) break;\n _ref6 = _iterator7[_i7++];\n } else {\n _i7 = _iterator7.next();\n if (_i7.done) break;\n _ref6 = _i7.value;\n }\n\n var node = _ref6;\n\n node.textContent = message;\n }\n }\n },\n errormultiple: function errormultiple() {},\n\n\n // Called when a file gets processed. Since there is a cue, not all added\n // files are processed immediately.\n // Receives `file`\n processing: function processing(file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n if (file._removeLink) {\n return file._removeLink.innerHTML = this.options.dictCancelUpload;\n }\n }\n },\n processingmultiple: function processingmultiple() {},\n\n\n // Called whenever the upload progress gets updated.\n // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n // To get the total number of bytes of the file, use `file.size`\n uploadprogress: function uploadprogress(file, progress, bytesSent) {\n if (file.previewElement) {\n for (var _iterator8 = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\"), _isArray8 = true, _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray8) {\n if (_i8 >= _iterator8.length) break;\n _ref7 = _iterator8[_i8++];\n } else {\n _i8 = _iterator8.next();\n if (_i8.done) break;\n _ref7 = _i8.value;\n }\n\n var node = _ref7;\n\n node.nodeName === 'PROGRESS' ? node.value = progress : node.style.width = progress + \"%\";\n }\n }\n },\n\n\n // Called whenever the total upload progress gets updated.\n // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n totaluploadprogress: function totaluploadprogress() {},\n\n\n // Called just before the file is sent. Gets the `xhr` object as second\n // parameter, so you can modify it (for example to add a CSRF token) and a\n // `formData` object to add additional information.\n sending: function sending() {},\n sendingmultiple: function sendingmultiple() {},\n\n\n // When the complete upload is finished and successful\n // Receives `file`\n success: function success(file) {\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-success\");\n }\n },\n successmultiple: function successmultiple() {},\n\n\n // When the upload is canceled.\n canceled: function canceled(file) {\n return this.emit(\"error\", file, this.options.dictUploadCanceled);\n },\n canceledmultiple: function canceledmultiple() {},\n\n\n // When the upload is finished, either with success or an error.\n // Receives `file`\n complete: function complete(file) {\n if (file._removeLink) {\n file._removeLink.innerHTML = this.options.dictRemoveFile;\n }\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n completemultiple: function completemultiple() {},\n maxfilesexceeded: function maxfilesexceeded() {},\n maxfilesreached: function maxfilesreached() {},\n queuecomplete: function queuecomplete() {},\n addedfiles: function addedfiles() {}\n };\n\n this.prototype._thumbnailQueue = [];\n this.prototype._processingThumbnail = false;\n }\n\n // global utility\n\n }, {\n key: \"extend\",\n value: function extend(target) {\n for (var _len2 = arguments.length, objects = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n objects[_key2 - 1] = arguments[_key2];\n }\n\n for (var _iterator9 = objects, _isArray9 = true, _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray9) {\n if (_i9 >= _iterator9.length) break;\n _ref8 = _iterator9[_i9++];\n } else {\n _i9 = _iterator9.next();\n if (_i9.done) break;\n _ref8 = _i9.value;\n }\n\n var object = _ref8;\n\n for (var key in object) {\n var val = object[key];\n target[key] = val;\n }\n }\n return target;\n }\n }]);\n\n function Dropzone(el, options) {\n _classCallCheck(this, Dropzone);\n\n var _this = _possibleConstructorReturn(this, (Dropzone.__proto__ || Object.getPrototypeOf(Dropzone)).call(this));\n\n var fallback = void 0,\n left = void 0;\n _this.element = el;\n // For backwards compatibility since the version was in the prototype previously\n _this.version = Dropzone.version;\n\n _this.defaultOptions.previewTemplate = _this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n\n _this.clickableElements = [];\n _this.listeners = [];\n _this.files = []; // All files\n\n if (typeof _this.element === \"string\") {\n _this.element = document.querySelector(_this.element);\n }\n\n // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n if (!_this.element || _this.element.nodeType == null) {\n throw new Error(\"Invalid dropzone element.\");\n }\n\n if (_this.element.dropzone) {\n throw new Error(\"Dropzone already attached.\");\n }\n\n // Now add this dropzone to the instances.\n Dropzone.instances.push(_this);\n\n // Put the dropzone inside the element itself.\n _this.element.dropzone = _this;\n\n var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {};\n\n _this.options = Dropzone.extend({}, _this.defaultOptions, elementOptions, options != null ? options : {});\n\n // If the browser failed, just call the fallback and leave\n if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n var _ret;\n\n return _ret = _this.options.fallback.call(_this), _possibleConstructorReturn(_this, _ret);\n }\n\n // @options.url = @element.getAttribute \"action\" unless @options.url?\n if (_this.options.url == null) {\n _this.options.url = _this.element.getAttribute(\"action\");\n }\n\n if (!_this.options.url) {\n throw new Error(\"No URL provided.\");\n }\n\n if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) {\n throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n }\n\n if (_this.options.uploadMultiple && _this.options.chunking) {\n throw new Error('You cannot set both: uploadMultiple and chunking.');\n }\n\n // Backwards compatibility\n if (_this.options.acceptedMimeTypes) {\n _this.options.acceptedFiles = _this.options.acceptedMimeTypes;\n delete _this.options.acceptedMimeTypes;\n }\n\n // Backwards compatibility\n if (_this.options.renameFilename != null) {\n _this.options.renameFile = function (file) {\n return _this.options.renameFilename.call(_this, file.name, file);\n };\n }\n\n _this.options.method = _this.options.method.toUpperCase();\n\n if ((fallback = _this.getExistingFallback()) && fallback.parentNode) {\n // Remove the fallback\n fallback.parentNode.removeChild(fallback);\n }\n\n // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n if (_this.options.previewsContainer !== false) {\n if (_this.options.previewsContainer) {\n _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, \"previewsContainer\");\n } else {\n _this.previewsContainer = _this.element;\n }\n }\n\n if (_this.options.clickable) {\n if (_this.options.clickable === true) {\n _this.clickableElements = [_this.element];\n } else {\n _this.clickableElements = Dropzone.getElements(_this.options.clickable, \"clickable\");\n }\n }\n\n _this.init();\n return _this;\n }\n\n // Returns all files that have been accepted\n\n\n _createClass(Dropzone, [{\n key: \"getAcceptedFiles\",\n value: function getAcceptedFiles() {\n return this.files.filter(function (file) {\n return file.accepted;\n }).map(function (file) {\n return file;\n });\n }\n\n // Returns all files that have been rejected\n // Not sure when that's going to be useful, but added for completeness.\n\n }, {\n key: \"getRejectedFiles\",\n value: function getRejectedFiles() {\n return this.files.filter(function (file) {\n return !file.accepted;\n }).map(function (file) {\n return file;\n });\n }\n }, {\n key: \"getFilesWithStatus\",\n value: function getFilesWithStatus(status) {\n return this.files.filter(function (file) {\n return file.status === status;\n }).map(function (file) {\n return file;\n });\n }\n\n // Returns all files that are in the queue\n\n }, {\n key: \"getQueuedFiles\",\n value: function getQueuedFiles() {\n return this.getFilesWithStatus(Dropzone.QUEUED);\n }\n }, {\n key: \"getUploadingFiles\",\n value: function getUploadingFiles() {\n return this.getFilesWithStatus(Dropzone.UPLOADING);\n }\n }, {\n key: \"getAddedFiles\",\n value: function getAddedFiles() {\n return this.getFilesWithStatus(Dropzone.ADDED);\n }\n\n // Files that are either queued or uploading\n\n }, {\n key: \"getActiveFiles\",\n value: function getActiveFiles() {\n return this.files.filter(function (file) {\n return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED;\n }).map(function (file) {\n return file;\n });\n }\n\n // The function that gets called when Dropzone is initialized. You\n // can (and should) setup event listeners inside this function.\n\n }, {\n key: \"init\",\n value: function init() {\n var _this3 = this;\n\n // In case it isn't set already\n if (this.element.tagName === \"form\") {\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n }\n\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><span>\" + this.options.dictDefaultMessage + \"</span></div>\"));\n }\n\n if (this.clickableElements.length) {\n var setupHiddenFileInput = function setupHiddenFileInput() {\n if (_this3.hiddenFileInput) {\n _this3.hiddenFileInput.parentNode.removeChild(_this3.hiddenFileInput);\n }\n _this3.hiddenFileInput = document.createElement(\"input\");\n _this3.hiddenFileInput.setAttribute(\"type\", \"file\");\n if (_this3.options.maxFiles === null || _this3.options.maxFiles > 1) {\n _this3.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n }\n _this3.hiddenFileInput.className = \"dz-hidden-input\";\n\n if (_this3.options.acceptedFiles !== null) {\n _this3.hiddenFileInput.setAttribute(\"accept\", _this3.options.acceptedFiles);\n }\n if (_this3.options.capture !== null) {\n _this3.hiddenFileInput.setAttribute(\"capture\", _this3.options.capture);\n }\n\n // Not setting `display=\"none\"` because some browsers don't accept clicks\n // on elements that aren't displayed.\n _this3.hiddenFileInput.style.visibility = \"hidden\";\n _this3.hiddenFileInput.style.position = \"absolute\";\n _this3.hiddenFileInput.style.top = \"0\";\n _this3.hiddenFileInput.style.left = \"0\";\n _this3.hiddenFileInput.style.height = \"0\";\n _this3.hiddenFileInput.style.width = \"0\";\n Dropzone.getElement(_this3.options.hiddenInputContainer, 'hiddenInputContainer').appendChild(_this3.hiddenFileInput);\n return _this3.hiddenFileInput.addEventListener(\"change\", function () {\n var files = _this3.hiddenFileInput.files;\n\n if (files.length) {\n for (var _iterator10 = files, _isArray10 = true, _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray10) {\n if (_i10 >= _iterator10.length) break;\n _ref9 = _iterator10[_i10++];\n } else {\n _i10 = _iterator10.next();\n if (_i10.done) break;\n _ref9 = _i10.value;\n }\n\n var file = _ref9;\n\n _this3.addFile(file);\n }\n }\n _this3.emit(\"addedfiles\", files);\n return setupHiddenFileInput();\n });\n };\n setupHiddenFileInput();\n }\n\n this.URL = window.URL !== null ? window.URL : window.webkitURL;\n\n // Setup all event listeners on the Dropzone object itself.\n // They're not in @setupEventListeners() because they shouldn't be removed\n // again when the dropzone gets disabled.\n for (var _iterator11 = this.events, _isArray11 = true, _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {\n var _ref10;\n\n if (_isArray11) {\n if (_i11 >= _iterator11.length) break;\n _ref10 = _iterator11[_i11++];\n } else {\n _i11 = _iterator11.next();\n if (_i11.done) break;\n _ref10 = _i11.value;\n }\n\n var eventName = _ref10;\n\n this.on(eventName, this.options[eventName]);\n }\n\n this.on(\"uploadprogress\", function () {\n return _this3.updateTotalUploadProgress();\n });\n\n this.on(\"removedfile\", function () {\n return _this3.updateTotalUploadProgress();\n });\n\n this.on(\"canceled\", function (file) {\n return _this3.emit(\"complete\", file);\n });\n\n // Emit a `queuecomplete` event if all files finished uploading.\n this.on(\"complete\", function (file) {\n if (_this3.getAddedFiles().length === 0 && _this3.getUploadingFiles().length === 0 && _this3.getQueuedFiles().length === 0) {\n // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n return setTimeout(function () {\n return _this3.emit(\"queuecomplete\");\n }, 0);\n }\n });\n\n var noPropagation = function noPropagation(e) {\n e.stopPropagation();\n if (e.preventDefault) {\n return e.preventDefault();\n } else {\n return e.returnValue = false;\n }\n };\n\n // Create the listeners\n this.listeners = [{\n element: this.element,\n events: {\n \"dragstart\": function dragstart(e) {\n return _this3.emit(\"dragstart\", e);\n },\n \"dragenter\": function dragenter(e) {\n noPropagation(e);\n return _this3.emit(\"dragenter\", e);\n },\n \"dragover\": function dragover(e) {\n // Makes it possible to drag files from chrome's download bar\n // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n var efct = void 0;\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (error) {}\n e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';\n\n noPropagation(e);\n return _this3.emit(\"dragover\", e);\n },\n \"dragleave\": function dragleave(e) {\n return _this3.emit(\"dragleave\", e);\n },\n \"drop\": function drop(e) {\n noPropagation(e);\n return _this3.drop(e);\n },\n \"dragend\": function dragend(e) {\n return _this3.emit(\"dragend\", e);\n }\n\n // This is disabled right now, because the browsers don't implement it properly.\n // \"paste\": (e) =>\n // noPropagation e\n // @paste e\n } }];\n\n this.clickableElements.forEach(function (clickableElement) {\n return _this3.listeners.push({\n element: clickableElement,\n events: {\n \"click\": function click(evt) {\n // Only the actual dropzone or the message element should trigger file selection\n if (clickableElement !== _this3.element || evt.target === _this3.element || Dropzone.elementInside(evt.target, _this3.element.querySelector(\".dz-message\"))) {\n _this3.hiddenFileInput.click(); // Forward the click\n }\n return true;\n }\n }\n });\n });\n\n this.enable();\n\n return this.options.init.call(this);\n }\n\n // Not fully tested yet\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.disable();\n this.removeAllFiles(true);\n if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n delete this.element.dropzone;\n return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n }\n }, {\n key: \"updateTotalUploadProgress\",\n value: function updateTotalUploadProgress() {\n var totalUploadProgress = void 0;\n var totalBytesSent = 0;\n var totalBytes = 0;\n\n var activeFiles = this.getActiveFiles();\n\n if (activeFiles.length) {\n for (var _iterator12 = this.getActiveFiles(), _isArray12 = true, _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {\n var _ref11;\n\n if (_isArray12) {\n if (_i12 >= _iterator12.length) break;\n _ref11 = _iterator12[_i12++];\n } else {\n _i12 = _iterator12.next();\n if (_i12.done) break;\n _ref11 = _i12.value;\n }\n\n var file = _ref11;\n\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n totalUploadProgress = 100 * totalBytesSent / totalBytes;\n } else {\n totalUploadProgress = 100;\n }\n\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n }\n\n // @options.paramName can be a function taking one parameter rather than a string.\n // A parameter name for a file is obtained simply by calling this with an index number.\n\n }, {\n key: \"_getParamName\",\n value: function _getParamName(n) {\n if (typeof this.options.paramName === \"function\") {\n return this.options.paramName(n);\n } else {\n return \"\" + this.options.paramName + (this.options.uploadMultiple ? \"[\" + n + \"]\" : \"\");\n }\n }\n\n // If @options.renameFile is a function,\n // the function will be used to rename the file.name before appending it to the formData\n\n }, {\n key: \"_renameFile\",\n value: function _renameFile(file) {\n if (typeof this.options.renameFile !== \"function\") {\n return file.name;\n }\n return this.options.renameFile(file);\n }\n\n // Returns a form that can be used as fallback if the browser does not support DragnDrop\n //\n // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getFallbackForm\",\n value: function getFallbackForm() {\n var existingFallback = void 0,\n form = void 0;\n if (existingFallback = this.getExistingFallback()) {\n return existingFallback;\n }\n\n var fieldsString = \"<div class=\\\"dz-fallback\\\">\";\n if (this.options.dictFallbackText) {\n fieldsString += \"<p>\" + this.options.dictFallbackText + \"</p>\";\n }\n fieldsString += \"<input type=\\\"file\\\" name=\\\"\" + this._getParamName(0) + \"\\\" \" + (this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined) + \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\";\n\n var fields = Dropzone.createElement(fieldsString);\n if (this.element.tagName !== \"FORM\") {\n form = Dropzone.createElement(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\" + this.options.method + \"\\\"></form>\");\n form.appendChild(fields);\n } else {\n // Make sure that the enctype and method attributes are set properly\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n return form != null ? form : fields;\n }\n\n // Returns the fallback elements if they exist already\n //\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getExistingFallback\",\n value: function getExistingFallback() {\n var getFallback = function getFallback(elements) {\n for (var _iterator13 = elements, _isArray13 = true, _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {\n var _ref12;\n\n if (_isArray13) {\n if (_i13 >= _iterator13.length) break;\n _ref12 = _iterator13[_i13++];\n } else {\n _i13 = _iterator13.next();\n if (_i13.done) break;\n _ref12 = _i13.value;\n }\n\n var el = _ref12;\n\n if (/(^| )fallback($| )/.test(el.className)) {\n return el;\n }\n }\n };\n\n var _arr = [\"div\", \"form\"];\n for (var _i14 = 0; _i14 < _arr.length; _i14++) {\n var tagName = _arr[_i14];\n var fallback;\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n return fallback;\n }\n }\n }\n\n // Activates all listeners stored in @listeners\n\n }, {\n key: \"setupEventListeners\",\n value: function setupEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.addEventListener(event, listener, false));\n }\n return result;\n }();\n });\n }\n\n // Deactivates all listeners stored in @listeners\n\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.removeEventListener(event, listener, false));\n }\n return result;\n }();\n });\n }\n\n // Removes all event listeners and cancels all files in the queue or being processed.\n\n }, {\n key: \"disable\",\n value: function disable() {\n var _this4 = this;\n\n this.clickableElements.forEach(function (element) {\n return element.classList.remove(\"dz-clickable\");\n });\n this.removeEventListeners();\n this.disabled = true;\n\n return this.files.map(function (file) {\n return _this4.cancelUpload(file);\n });\n }\n }, {\n key: \"enable\",\n value: function enable() {\n delete this.disabled;\n this.clickableElements.forEach(function (element) {\n return element.classList.add(\"dz-clickable\");\n });\n return this.setupEventListeners();\n }\n\n // Returns a nicely formatted filesize\n\n }, {\n key: \"filesize\",\n value: function filesize(size) {\n var selectedSize = 0;\n var selectedUnit = \"b\";\n\n if (size > 0) {\n var units = ['tb', 'gb', 'mb', 'kb', 'b'];\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n }\n\n return \"<strong>\" + selectedSize + \"</strong> \" + this.options.dictFileSizeUnits[selectedUnit];\n }\n\n // Adds or removes the `dz-max-files-reached` class from the form.\n\n }, {\n key: \"_updateMaxFilesReachedClass\",\n value: function _updateMaxFilesReachedClass() {\n if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) {\n this.emit('maxfilesreached', this.files);\n }\n return this.element.classList.add(\"dz-max-files-reached\");\n } else {\n return this.element.classList.remove(\"dz-max-files-reached\");\n }\n }\n }, {\n key: \"drop\",\n value: function drop(e) {\n if (!e.dataTransfer) {\n return;\n }\n this.emit(\"drop\", e);\n\n // Convert the FileList to an Array\n // This is necessary for IE11\n var files = [];\n for (var i = 0; i < e.dataTransfer.files.length; i++) {\n files[i] = e.dataTransfer.files[i];\n }\n\n this.emit(\"addedfiles\", files);\n\n // Even if it's a folder, files.length will contain the folders.\n if (files.length) {\n var items = e.dataTransfer.items;\n\n if (items && items.length && items[0].webkitGetAsEntry != null) {\n // The browser supports dropping of folders, so handle items instead of files\n this._addFilesFromItems(items);\n } else {\n this.handleFiles(files);\n }\n }\n }\n }, {\n key: \"paste\",\n value: function paste(e) {\n if (__guard__(e != null ? e.clipboardData : undefined, function (x) {\n return x.items;\n }) == null) {\n return;\n }\n\n this.emit(\"paste\", e);\n var items = e.clipboardData.items;\n\n\n if (items.length) {\n return this._addFilesFromItems(items);\n }\n }\n }, {\n key: \"handleFiles\",\n value: function handleFiles(files) {\n for (var _iterator14 = files, _isArray14 = true, _i15 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {\n var _ref13;\n\n if (_isArray14) {\n if (_i15 >= _iterator14.length) break;\n _ref13 = _iterator14[_i15++];\n } else {\n _i15 = _iterator14.next();\n if (_i15.done) break;\n _ref13 = _i15.value;\n }\n\n var file = _ref13;\n\n this.addFile(file);\n }\n }\n\n // When a folder is dropped (or files are pasted), items must be handled\n // instead of files.\n\n }, {\n key: \"_addFilesFromItems\",\n value: function _addFilesFromItems(items) {\n var _this5 = this;\n\n return function () {\n var result = [];\n for (var _iterator15 = items, _isArray15 = true, _i16 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {\n var _ref14;\n\n if (_isArray15) {\n if (_i16 >= _iterator15.length) break;\n _ref14 = _iterator15[_i16++];\n } else {\n _i16 = _iterator15.next();\n if (_i16.done) break;\n _ref14 = _i16.value;\n }\n\n var item = _ref14;\n\n var entry;\n if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {\n if (entry.isFile) {\n result.push(_this5.addFile(item.getAsFile()));\n } else if (entry.isDirectory) {\n // Append all files from that directory to files\n result.push(_this5._addFilesFromDirectory(entry, entry.name));\n } else {\n result.push(undefined);\n }\n } else if (item.getAsFile != null) {\n if (item.kind == null || item.kind === \"file\") {\n result.push(_this5.addFile(item.getAsFile()));\n } else {\n result.push(undefined);\n }\n } else {\n result.push(undefined);\n }\n }\n return result;\n }();\n }\n\n // Goes through the directory, and adds each file it finds recursively\n\n }, {\n key: \"_addFilesFromDirectory\",\n value: function _addFilesFromDirectory(directory, path) {\n var _this6 = this;\n\n var dirReader = directory.createReader();\n\n var errorHandler = function errorHandler(error) {\n return __guardMethod__(console, 'log', function (o) {\n return o.log(error);\n });\n };\n\n var readEntries = function readEntries() {\n return dirReader.readEntries(function (entries) {\n if (entries.length > 0) {\n for (var _iterator16 = entries, _isArray16 = true, _i17 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) {\n var _ref15;\n\n if (_isArray16) {\n if (_i17 >= _iterator16.length) break;\n _ref15 = _iterator16[_i17++];\n } else {\n _i17 = _iterator16.next();\n if (_i17.done) break;\n _ref15 = _i17.value;\n }\n\n var entry = _ref15;\n\n if (entry.isFile) {\n entry.file(function (file) {\n if (_this6.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {\n return;\n }\n file.fullPath = path + \"/\" + file.name;\n return _this6.addFile(file);\n });\n } else if (entry.isDirectory) {\n _this6._addFilesFromDirectory(entry, path + \"/\" + entry.name);\n }\n }\n\n // Recursively call readEntries() again, since browser only handle\n // the first 100 entries.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n readEntries();\n }\n return null;\n }, errorHandler);\n };\n\n return readEntries();\n }\n\n // If `done()` is called without argument the file is accepted\n // If you call it with an error message, the file is rejected\n // (This allows for asynchronous validation)\n //\n // This function checks the filesize, and if the file.type passes the\n // `acceptedFiles` check.\n\n }, {\n key: \"accept\",\n value: function accept(file, done) {\n if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) {\n return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n return done(this.options.dictInvalidFileType);\n } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n return this.emit(\"maxfilesexceeded\", file);\n } else {\n return this.options.accept.call(this, file, done);\n }\n }\n }, {\n key: \"addFile\",\n value: function addFile(file) {\n var _this7 = this;\n\n file.upload = {\n uuid: Dropzone.uuidv4(),\n progress: 0,\n // Setting the total upload size to file.size for the beginning\n // It's actual different than the size to be transmitted.\n total: file.size,\n bytesSent: 0,\n filename: this._renameFile(file),\n chunked: this.options.chunking && (this.options.forceChunking || file.size > this.options.chunkSize),\n totalChunkCount: Math.ceil(file.size / this.options.chunkSize)\n };\n this.files.push(file);\n\n file.status = Dropzone.ADDED;\n\n this.emit(\"addedfile\", file);\n\n this._enqueueThumbnail(file);\n\n return this.accept(file, function (error) {\n if (error) {\n file.accepted = false;\n _this7._errorProcessing([file], error); // Will set the file.status\n } else {\n file.accepted = true;\n if (_this7.options.autoQueue) {\n _this7.enqueueFile(file);\n } // Will set .accepted = true\n }\n return _this7._updateMaxFilesReachedClass();\n });\n }\n\n // Wrapper for enqueueFile\n\n }, {\n key: \"enqueueFiles\",\n value: function enqueueFiles(files) {\n for (var _iterator17 = files, _isArray17 = true, _i18 = 0, _iterator17 = _isArray17 ? _iterator17 : _iterator17[Symbol.iterator]();;) {\n var _ref16;\n\n if (_isArray17) {\n if (_i18 >= _iterator17.length) break;\n _ref16 = _iterator17[_i18++];\n } else {\n _i18 = _iterator17.next();\n if (_i18.done) break;\n _ref16 = _i18.value;\n }\n\n var file = _ref16;\n\n this.enqueueFile(file);\n }\n return null;\n }\n }, {\n key: \"enqueueFile\",\n value: function enqueueFile(file) {\n var _this8 = this;\n\n if (file.status === Dropzone.ADDED && file.accepted === true) {\n file.status = Dropzone.QUEUED;\n if (this.options.autoProcessQueue) {\n return setTimeout(function () {\n return _this8.processQueue();\n }, 0); // Deferring the call\n }\n } else {\n throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n }\n }\n }, {\n key: \"_enqueueThumbnail\",\n value: function _enqueueThumbnail(file) {\n var _this9 = this;\n\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n this._thumbnailQueue.push(file);\n return setTimeout(function () {\n return _this9._processThumbnailQueue();\n }, 0); // Deferring the call\n }\n }\n }, {\n key: \"_processThumbnailQueue\",\n value: function _processThumbnailQueue() {\n var _this10 = this;\n\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n return;\n }\n\n this._processingThumbnail = true;\n var file = this._thumbnailQueue.shift();\n return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {\n _this10.emit(\"thumbnail\", file, dataUrl);\n _this10._processingThumbnail = false;\n return _this10._processThumbnailQueue();\n });\n }\n\n // Can be called by the user to remove a file\n\n }, {\n key: \"removeFile\",\n value: function removeFile(file) {\n if (file.status === Dropzone.UPLOADING) {\n this.cancelUpload(file);\n }\n this.files = without(this.files, file);\n\n this.emit(\"removedfile\", file);\n if (this.files.length === 0) {\n return this.emit(\"reset\");\n }\n }\n\n // Removes all files that aren't currently processed from the list\n\n }, {\n key: \"removeAllFiles\",\n value: function removeAllFiles(cancelIfNecessary) {\n // Create a copy of files since removeFile() changes the @files array.\n if (cancelIfNecessary == null) {\n cancelIfNecessary = false;\n }\n for (var _iterator18 = this.files.slice(), _isArray18 = true, _i19 = 0, _iterator18 = _isArray18 ? _iterator18 : _iterator18[Symbol.iterator]();;) {\n var _ref17;\n\n if (_isArray18) {\n if (_i19 >= _iterator18.length) break;\n _ref17 = _iterator18[_i19++];\n } else {\n _i19 = _iterator18.next();\n if (_i19.done) break;\n _ref17 = _i19.value;\n }\n\n var file = _ref17;\n\n if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n this.removeFile(file);\n }\n }\n return null;\n }\n\n // Resizes an image before it gets sent to the server. This function is the default behavior of\n // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n // the resized blob.\n\n }, {\n key: \"resizeImage\",\n value: function resizeImage(file, width, height, resizeMethod, callback) {\n var _this11 = this;\n\n return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {\n if (canvas == null) {\n // The image has not been resized\n return callback(file);\n } else {\n var resizeMimeType = _this11.options.resizeMimeType;\n\n if (resizeMimeType == null) {\n resizeMimeType = file.type;\n }\n var resizedDataURL = canvas.toDataURL(resizeMimeType, _this11.options.resizeQuality);\n if (resizeMimeType === 'image/jpeg' || resizeMimeType === 'image/jpg') {\n // Now add the original EXIF information\n resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n }\n return callback(Dropzone.dataURItoBlob(resizedDataURL));\n }\n });\n }\n }, {\n key: \"createThumbnail\",\n value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n var _this12 = this;\n\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n\n file.dataURL = fileReader.result;\n\n // Don't bother creating a thumbnail for SVG images since they're vector\n if (file.type === \"image/svg+xml\") {\n if (callback != null) {\n callback(fileReader.result);\n }\n return;\n }\n\n return _this12.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n };\n\n return fileReader.readAsDataURL(file);\n }\n }, {\n key: \"createThumbnailFromUrl\",\n value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n var _this13 = this;\n\n // Not using `new Image` here because of a bug in latest Chrome versions.\n // See https://github.com/enyo/dropzone/pull/226\n var img = document.createElement(\"img\");\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n img.onload = function () {\n var loadExif = function loadExif(callback) {\n return callback(1);\n };\n if (typeof EXIF !== 'undefined' && EXIF !== null && fixOrientation) {\n loadExif = function loadExif(callback) {\n return EXIF.getData(img, function () {\n return callback(EXIF.getTag(this, 'Orientation'));\n });\n };\n }\n\n return loadExif(function (orientation) {\n file.width = img.width;\n file.height = img.height;\n\n var resizeInfo = _this13.options.resize.call(_this13, file, width, height, resizeMethod);\n\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n\n if (orientation > 4) {\n canvas.width = resizeInfo.trgHeight;\n canvas.height = resizeInfo.trgWidth;\n }\n\n switch (orientation) {\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n break;\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height);\n ctx.rotate(Math.PI);\n break;\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n break;\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -canvas.width);\n break;\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(canvas.height, -canvas.width);\n ctx.scale(-1, 1);\n break;\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-canvas.height, 0);\n break;\n }\n\n // This is a bugfix for iOS' scaling bug.\n drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n\n var thumbnail = canvas.toDataURL(\"image/png\");\n\n if (callback != null) {\n return callback(thumbnail, canvas);\n }\n });\n };\n\n if (callback != null) {\n img.onerror = callback;\n }\n\n return img.src = file.dataURL;\n }\n\n // Goes through the queue and processes files if there aren't too many already.\n\n }, {\n key: \"processQueue\",\n value: function processQueue() {\n var parallelUploads = this.options.parallelUploads;\n\n var processingLength = this.getUploadingFiles().length;\n var i = processingLength;\n\n // There are already at least as many files uploading than should be\n if (processingLength >= parallelUploads) {\n return;\n }\n\n var queuedFiles = this.getQueuedFiles();\n\n if (!(queuedFiles.length > 0)) {\n return;\n }\n\n if (this.options.uploadMultiple) {\n // The files should be uploaded in one request\n return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n } else {\n while (i < parallelUploads) {\n if (!queuedFiles.length) {\n return;\n } // Nothing left to process\n this.processFile(queuedFiles.shift());\n i++;\n }\n }\n }\n\n // Wrapper for `processFiles`\n\n }, {\n key: \"processFile\",\n value: function processFile(file) {\n return this.processFiles([file]);\n }\n\n // Loads the file, then calls finishedLoading()\n\n }, {\n key: \"processFiles\",\n value: function processFiles(files) {\n for (var _iterator19 = files, _isArray19 = true, _i20 = 0, _iterator19 = _isArray19 ? _iterator19 : _iterator19[Symbol.iterator]();;) {\n var _ref18;\n\n if (_isArray19) {\n if (_i20 >= _iterator19.length) break;\n _ref18 = _iterator19[_i20++];\n } else {\n _i20 = _iterator19.next();\n if (_i20.done) break;\n _ref18 = _i20.value;\n }\n\n var file = _ref18;\n\n file.processing = true; // Backwards compatibility\n file.status = Dropzone.UPLOADING;\n\n this.emit(\"processing\", file);\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"processingmultiple\", files);\n }\n\n return this.uploadFiles(files);\n }\n }, {\n key: \"_getFilesWithXhr\",\n value: function _getFilesWithXhr(xhr) {\n var files = void 0;\n return files = this.files.filter(function (file) {\n return file.xhr === xhr;\n }).map(function (file) {\n return file;\n });\n }\n\n // Cancels the file upload and sets the status to CANCELED\n // **if** the file is actually being uploaded.\n // If it's still in the queue, the file is being removed from it and the status\n // set to CANCELED.\n\n }, {\n key: \"cancelUpload\",\n value: function cancelUpload(file) {\n if (file.status === Dropzone.UPLOADING) {\n var groupedFiles = this._getFilesWithXhr(file.xhr);\n for (var _iterator20 = groupedFiles, _isArray20 = true, _i21 = 0, _iterator20 = _isArray20 ? _iterator20 : _iterator20[Symbol.iterator]();;) {\n var _ref19;\n\n if (_isArray20) {\n if (_i21 >= _iterator20.length) break;\n _ref19 = _iterator20[_i21++];\n } else {\n _i21 = _iterator20.next();\n if (_i21.done) break;\n _ref19 = _i21.value;\n }\n\n var groupedFile = _ref19;\n\n groupedFile.status = Dropzone.CANCELED;\n }\n if (typeof file.xhr !== 'undefined') {\n file.xhr.abort();\n }\n for (var _iterator21 = groupedFiles, _isArray21 = true, _i22 = 0, _iterator21 = _isArray21 ? _iterator21 : _iterator21[Symbol.iterator]();;) {\n var _ref20;\n\n if (_isArray21) {\n if (_i22 >= _iterator21.length) break;\n _ref20 = _iterator21[_i22++];\n } else {\n _i22 = _iterator21.next();\n if (_i22.done) break;\n _ref20 = _i22.value;\n }\n\n var _groupedFile = _ref20;\n\n this.emit(\"canceled\", _groupedFile);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", groupedFiles);\n }\n } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {\n file.status = Dropzone.CANCELED;\n this.emit(\"canceled\", file);\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", [file]);\n }\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }, {\n key: \"resolveOption\",\n value: function resolveOption(option) {\n if (typeof option === 'function') {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return option.apply(this, args);\n }\n return option;\n }\n }, {\n key: \"uploadFile\",\n value: function uploadFile(file) {\n return this.uploadFiles([file]);\n }\n }, {\n key: \"uploadFiles\",\n value: function uploadFiles(files) {\n var _this14 = this;\n\n this._transformFiles(files, function (transformedFiles) {\n if (files[0].upload.chunked) {\n // This file should be sent in chunks!\n\n // If the chunking option is set, we **know** that there can only be **one** file, since\n // uploadMultiple is not allowed with this option.\n var file = files[0];\n var transformedFile = transformedFiles[0];\n var startedChunkCount = 0;\n\n file.upload.chunks = [];\n\n var handleNextChunk = function handleNextChunk() {\n var chunkIndex = 0;\n\n // Find the next item in file.upload.chunks that is not defined yet.\n while (file.upload.chunks[chunkIndex] !== undefined) {\n chunkIndex++;\n }\n\n // This means, that all chunks have already been started.\n if (chunkIndex >= file.upload.totalChunkCount) return;\n\n startedChunkCount++;\n\n var start = chunkIndex * _this14.options.chunkSize;\n var end = Math.min(start + _this14.options.chunkSize, file.size);\n\n var dataBlock = {\n name: _this14._getParamName(0),\n data: transformedFile.webkitSlice ? transformedFile.webkitSlice(start, end) : transformedFile.slice(start, end),\n filename: file.upload.filename,\n chunkIndex: chunkIndex\n };\n\n file.upload.chunks[chunkIndex] = {\n file: file,\n index: chunkIndex,\n dataBlock: dataBlock, // In case we want to retry.\n status: Dropzone.UPLOADING,\n progress: 0,\n retries: 0 // The number of times this block has been retried.\n };\n\n _this14._uploadData(files, [dataBlock]);\n };\n\n file.upload.finishedChunkUpload = function (chunk) {\n var allFinished = true;\n chunk.status = Dropzone.SUCCESS;\n\n // Clear the data from the chunk\n chunk.dataBlock = null;\n // Leaving this reference to xhr intact here will cause memory leaks in some browsers\n chunk.xhr = null;\n\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] === undefined) {\n return handleNextChunk();\n }\n if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n allFinished = false;\n }\n }\n\n if (allFinished) {\n _this14.options.chunksUploaded(file, function () {\n _this14._finished(files, '', null);\n });\n }\n };\n\n if (_this14.options.parallelChunkUploads) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n handleNextChunk();\n }\n } else {\n handleNextChunk();\n }\n } else {\n var dataBlocks = [];\n for (var _i23 = 0; _i23 < files.length; _i23++) {\n dataBlocks[_i23] = {\n name: _this14._getParamName(_i23),\n data: transformedFiles[_i23],\n filename: files[_i23].upload.filename\n };\n }\n _this14._uploadData(files, dataBlocks);\n }\n });\n }\n\n /// Returns the right chunk for given file and xhr\n\n }, {\n key: \"_getChunk\",\n value: function _getChunk(file, xhr) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {\n return file.upload.chunks[i];\n }\n }\n }\n\n // This function actually uploads the file(s) to the server.\n // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed\n // files, or individual chunks for chunked upload).\n\n }, {\n key: \"_uploadData\",\n value: function _uploadData(files, dataBlocks) {\n var _this15 = this;\n\n var xhr = new XMLHttpRequest();\n\n // Put the xhr object in the file objects to be able to reference it later.\n for (var _iterator22 = files, _isArray22 = true, _i24 = 0, _iterator22 = _isArray22 ? _iterator22 : _iterator22[Symbol.iterator]();;) {\n var _ref21;\n\n if (_isArray22) {\n if (_i24 >= _iterator22.length) break;\n _ref21 = _iterator22[_i24++];\n } else {\n _i24 = _iterator22.next();\n if (_i24.done) break;\n _ref21 = _i24.value;\n }\n\n var file = _ref21;\n\n file.xhr = xhr;\n }\n if (files[0].upload.chunked) {\n // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk\n files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n }\n\n var method = this.resolveOption(this.options.method, files);\n var url = this.resolveOption(this.options.url, files);\n xhr.open(method, url, true);\n\n // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n xhr.timeout = this.resolveOption(this.options.timeout, files);\n\n // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n xhr.withCredentials = !!this.options.withCredentials;\n\n xhr.onload = function (e) {\n _this15._finishedUploading(files, xhr, e);\n };\n\n xhr.onerror = function () {\n _this15._handleUploadError(files, xhr);\n };\n\n // Some browsers do not have the .upload property\n var progressObj = xhr.upload != null ? xhr.upload : xhr;\n progressObj.onprogress = function (e) {\n return _this15._updateFilesUploadProgress(files, xhr, e);\n };\n\n var headers = {\n \"Accept\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n };\n\n if (this.options.headers) {\n Dropzone.extend(headers, this.options.headers);\n }\n\n for (var headerName in headers) {\n var headerValue = headers[headerName];\n if (headerValue) {\n xhr.setRequestHeader(headerName, headerValue);\n }\n }\n\n var formData = new FormData();\n\n // Adding all @options parameters\n if (this.options.params) {\n var additionalParams = this.options.params;\n if (typeof additionalParams === 'function') {\n additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n }\n\n for (var key in additionalParams) {\n var value = additionalParams[key];\n formData.append(key, value);\n }\n }\n\n // Let the user add additional data if necessary\n for (var _iterator23 = files, _isArray23 = true, _i25 = 0, _iterator23 = _isArray23 ? _iterator23 : _iterator23[Symbol.iterator]();;) {\n var _ref22;\n\n if (_isArray23) {\n if (_i25 >= _iterator23.length) break;\n _ref22 = _iterator23[_i25++];\n } else {\n _i25 = _iterator23.next();\n if (_i25.done) break;\n _ref22 = _i25.value;\n }\n\n var _file = _ref22;\n\n this.emit(\"sending\", _file, xhr, formData);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"sendingmultiple\", files, xhr, formData);\n }\n\n this._addFormElementData(formData);\n\n // Finally add the files\n // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n for (var i = 0; i < dataBlocks.length; i++) {\n var dataBlock = dataBlocks[i];\n formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n }\n\n this.submitRequest(xhr, formData, files);\n }\n\n // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n\n }, {\n key: \"_transformFiles\",\n value: function _transformFiles(files, done) {\n var _this16 = this;\n\n var transformedFiles = [];\n // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n var doneCounter = 0;\n\n var _loop = function _loop(i) {\n _this16.options.transformFile.call(_this16, files[i], function (transformedFile) {\n transformedFiles[i] = transformedFile;\n if (++doneCounter === files.length) {\n done(transformedFiles);\n }\n });\n };\n\n for (var i = 0; i < files.length; i++) {\n _loop(i);\n }\n }\n\n // Takes care of adding other input elements of the form to the AJAX request\n\n }, {\n key: \"_addFormElementData\",\n value: function _addFormElementData(formData) {\n // Take care of other input elements\n if (this.element.tagName === \"FORM\") {\n for (var _iterator24 = this.element.querySelectorAll(\"input, textarea, select, button\"), _isArray24 = true, _i26 = 0, _iterator24 = _isArray24 ? _iterator24 : _iterator24[Symbol.iterator]();;) {\n var _ref23;\n\n if (_isArray24) {\n if (_i26 >= _iterator24.length) break;\n _ref23 = _iterator24[_i26++];\n } else {\n _i26 = _iterator24.next();\n if (_i26.done) break;\n _ref23 = _i26.value;\n }\n\n var input = _ref23;\n\n var inputName = input.getAttribute(\"name\");\n var inputType = input.getAttribute(\"type\");\n if (inputType) inputType = inputType.toLowerCase();\n\n // If the input doesn't have a name, we can't use it.\n if (typeof inputName === 'undefined' || inputName === null) continue;\n\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n // Possibly multiple values\n for (var _iterator25 = input.options, _isArray25 = true, _i27 = 0, _iterator25 = _isArray25 ? _iterator25 : _iterator25[Symbol.iterator]();;) {\n var _ref24;\n\n if (_isArray25) {\n if (_i27 >= _iterator25.length) break;\n _ref24 = _iterator25[_i27++];\n } else {\n _i27 = _iterator25.next();\n if (_i27.done) break;\n _ref24 = _i27.value;\n }\n\n var option = _ref24;\n\n if (option.selected) {\n formData.append(inputName, option.value);\n }\n }\n } else if (!inputType || inputType !== \"checkbox\" && inputType !== \"radio\" || input.checked) {\n formData.append(inputName, input.value);\n }\n }\n }\n }\n\n // Invoked when there is new progress information about given files.\n // If e is not provided, it is assumed that the upload is finished.\n\n }, {\n key: \"_updateFilesUploadProgress\",\n value: function _updateFilesUploadProgress(files, xhr, e) {\n var progress = void 0;\n if (typeof e !== 'undefined') {\n progress = 100 * e.loaded / e.total;\n\n if (files[0].upload.chunked) {\n var file = files[0];\n // Since this is a chunked upload, we need to update the appropriate chunk progress.\n var chunk = this._getChunk(file, xhr);\n chunk.progress = progress;\n chunk.total = e.total;\n chunk.bytesSent = e.loaded;\n var fileProgress = 0,\n fileTotal = void 0,\n fileBytesSent = void 0;\n file.upload.progress = 0;\n file.upload.total = 0;\n file.upload.bytesSent = 0;\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].progress !== undefined) {\n file.upload.progress += file.upload.chunks[i].progress;\n file.upload.total += file.upload.chunks[i].total;\n file.upload.bytesSent += file.upload.chunks[i].bytesSent;\n }\n }\n file.upload.progress = file.upload.progress / file.upload.totalChunkCount;\n } else {\n for (var _iterator26 = files, _isArray26 = true, _i28 = 0, _iterator26 = _isArray26 ? _iterator26 : _iterator26[Symbol.iterator]();;) {\n var _ref25;\n\n if (_isArray26) {\n if (_i28 >= _iterator26.length) break;\n _ref25 = _iterator26[_i28++];\n } else {\n _i28 = _iterator26.next();\n if (_i28.done) break;\n _ref25 = _i28.value;\n }\n\n var _file2 = _ref25;\n\n _file2.upload.progress = progress;\n _file2.upload.total = e.total;\n _file2.upload.bytesSent = e.loaded;\n }\n }\n for (var _iterator27 = files, _isArray27 = true, _i29 = 0, _iterator27 = _isArray27 ? _iterator27 : _iterator27[Symbol.iterator]();;) {\n var _ref26;\n\n if (_isArray27) {\n if (_i29 >= _iterator27.length) break;\n _ref26 = _iterator27[_i29++];\n } else {\n _i29 = _iterator27.next();\n if (_i29.done) break;\n _ref26 = _i29.value;\n }\n\n var _file3 = _ref26;\n\n this.emit(\"uploadprogress\", _file3, _file3.upload.progress, _file3.upload.bytesSent);\n }\n } else {\n // Called when the file finished uploading\n\n var allFilesFinished = true;\n\n progress = 100;\n\n for (var _iterator28 = files, _isArray28 = true, _i30 = 0, _iterator28 = _isArray28 ? _iterator28 : _iterator28[Symbol.iterator]();;) {\n var _ref27;\n\n if (_isArray28) {\n if (_i30 >= _iterator28.length) break;\n _ref27 = _iterator28[_i30++];\n } else {\n _i30 = _iterator28.next();\n if (_i30.done) break;\n _ref27 = _i30.value;\n }\n\n var _file4 = _ref27;\n\n if (_file4.upload.progress !== 100 || _file4.upload.bytesSent !== _file4.upload.total) {\n allFilesFinished = false;\n }\n _file4.upload.progress = progress;\n _file4.upload.bytesSent = _file4.upload.total;\n }\n\n // Nothing to do, all files already at 100%\n if (allFilesFinished) {\n return;\n }\n\n for (var _iterator29 = files, _isArray29 = true, _i31 = 0, _iterator29 = _isArray29 ? _iterator29 : _iterator29[Symbol.iterator]();;) {\n var _ref28;\n\n if (_isArray29) {\n if (_i31 >= _iterator29.length) break;\n _ref28 = _iterator29[_i31++];\n } else {\n _i31 = _iterator29.next();\n if (_i31.done) break;\n _ref28 = _i31.value;\n }\n\n var _file5 = _ref28;\n\n this.emit(\"uploadprogress\", _file5, progress, _file5.upload.bytesSent);\n }\n }\n }\n }, {\n key: \"_finishedUploading\",\n value: function _finishedUploading(files, xhr, e) {\n var response = void 0;\n\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (xhr.responseType !== 'arraybuffer' && xhr.responseType !== 'blob') {\n response = xhr.responseText;\n\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n try {\n response = JSON.parse(response);\n } catch (error) {\n e = error;\n response = \"Invalid JSON response from server.\";\n }\n }\n }\n\n this._updateFilesUploadProgress(files);\n\n if (!(200 <= xhr.status && xhr.status < 300)) {\n this._handleUploadError(files, xhr, response);\n } else {\n if (files[0].upload.chunked) {\n files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr));\n } else {\n this._finished(files, response, e);\n }\n }\n }\n }, {\n key: \"_handleUploadError\",\n value: function _handleUploadError(files, xhr, response) {\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (files[0].upload.chunked && this.options.retryChunks) {\n var chunk = this._getChunk(files[0], xhr);\n if (chunk.retries++ < this.options.retryChunksLimit) {\n this._uploadData(files, [chunk.dataBlock]);\n return;\n } else {\n console.warn('Retried this chunk too often. Giving up.');\n }\n }\n\n for (var _iterator30 = files, _isArray30 = true, _i32 = 0, _iterator30 = _isArray30 ? _iterator30 : _iterator30[Symbol.iterator]();;) {\n var _ref29;\n\n if (_isArray30) {\n if (_i32 >= _iterator30.length) break;\n _ref29 = _iterator30[_i32++];\n } else {\n _i32 = _iterator30.next();\n if (_i32.done) break;\n _ref29 = _i32.value;\n }\n\n var file = _ref29;\n\n this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n }\n }\n }, {\n key: \"submitRequest\",\n value: function submitRequest(xhr, formData, files) {\n xhr.send(formData);\n }\n\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_finished\",\n value: function _finished(files, responseText, e) {\n for (var _iterator31 = files, _isArray31 = true, _i33 = 0, _iterator31 = _isArray31 ? _iterator31 : _iterator31[Symbol.iterator]();;) {\n var _ref30;\n\n if (_isArray31) {\n if (_i33 >= _iterator31.length) break;\n _ref30 = _iterator31[_i33++];\n } else {\n _i33 = _iterator31.next();\n if (_i33.done) break;\n _ref30 = _i33.value;\n }\n\n var file = _ref30;\n\n file.status = Dropzone.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_errorProcessing\",\n value: function _errorProcessing(files, message, xhr) {\n for (var _iterator32 = files, _isArray32 = true, _i34 = 0, _iterator32 = _isArray32 ? _iterator32 : _iterator32[Symbol.iterator]();;) {\n var _ref31;\n\n if (_isArray32) {\n if (_i34 >= _iterator32.length) break;\n _ref31 = _iterator32[_i34++];\n } else {\n _i34 = _iterator32.next();\n if (_i34.done) break;\n _ref31 = _i34.value;\n }\n\n var file = _ref31;\n\n file.status = Dropzone.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }], [{\n key: \"uuidv4\",\n value: function uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0,\n v = c === 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n }\n }]);\n\n return Dropzone;\n}(Emitter);\n\nDropzone.initClass();\n\nDropzone.version = \"5.5.1\";\n\n// This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// To disable autoDiscover for a specific element, you can set `false` as an option:\n//\n// Dropzone.options.myDisabledElementId = false;\n//\n// And in html:\n//\n// <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\nDropzone.options = {};\n\n// Returns the options for an element or undefined if none available.\nDropzone.optionsForElement = function (element) {\n // Get the `Dropzone.options.elementId` for this element if it exists\n if (element.getAttribute(\"id\")) {\n return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n } else {\n return undefined;\n }\n};\n\n// Holds a list of all dropzone instances\nDropzone.instances = [];\n\n// Returns the dropzone for given element if any\nDropzone.forElement = function (element) {\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n if ((element != null ? element.dropzone : undefined) == null) {\n throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n }\n return element.dropzone;\n};\n\n// Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.\nDropzone.autoDiscover = true;\n\n// Looks for all .dropzone elements and creates a dropzone for them\nDropzone.discover = function () {\n var dropzones = void 0;\n if (document.querySelectorAll) {\n dropzones = document.querySelectorAll(\".dropzone\");\n } else {\n dropzones = [];\n // IE :(\n var checkElements = function checkElements(elements) {\n return function () {\n var result = [];\n for (var _iterator33 = elements, _isArray33 = true, _i35 = 0, _iterator33 = _isArray33 ? _iterator33 : _iterator33[Symbol.iterator]();;) {\n var _ref32;\n\n if (_isArray33) {\n if (_i35 >= _iterator33.length) break;\n _ref32 = _iterator33[_i35++];\n } else {\n _i35 = _iterator33.next();\n if (_i35.done) break;\n _ref32 = _i35.value;\n }\n\n var el = _ref32;\n\n if (/(^| )dropzone($| )/.test(el.className)) {\n result.push(dropzones.push(el));\n } else {\n result.push(undefined);\n }\n }\n return result;\n }();\n };\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n\n return function () {\n var result = [];\n for (var _iterator34 = dropzones, _isArray34 = true, _i36 = 0, _iterator34 = _isArray34 ? _iterator34 : _iterator34[Symbol.iterator]();;) {\n var _ref33;\n\n if (_isArray34) {\n if (_i36 >= _iterator34.length) break;\n _ref33 = _iterator34[_i36++];\n } else {\n _i36 = _iterator34.next();\n if (_i36.done) break;\n _ref33 = _i36.value;\n }\n\n var dropzone = _ref33;\n\n // Create a dropzone unless auto discover has been disabled for specific element\n if (Dropzone.optionsForElement(dropzone) !== false) {\n result.push(new Dropzone(dropzone));\n } else {\n result.push(undefined);\n }\n }\n return result;\n }();\n};\n\n// Since the whole Drag'n'Drop API is pretty new, some browsers implement it,\n// but not correctly.\n// So I created a blacklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n//\nDropzone.blacklistedBrowsers = [\n// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n/opera.*(Macintosh|Windows Phone).*version\\/12/i];\n\n// Checks if the browser is supported\nDropzone.isBrowserSupported = function () {\n var capableBrowser = true;\n\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n if (!(\"classList\" in document.createElement(\"a\"))) {\n capableBrowser = false;\n } else {\n // The browser supports the API, but may be blacklisted.\n for (var _iterator35 = Dropzone.blacklistedBrowsers, _isArray35 = true, _i37 = 0, _iterator35 = _isArray35 ? _iterator35 : _iterator35[Symbol.iterator]();;) {\n var _ref34;\n\n if (_isArray35) {\n if (_i37 >= _iterator35.length) break;\n _ref34 = _iterator35[_i37++];\n } else {\n _i37 = _iterator35.next();\n if (_i37.done) break;\n _ref34 = _i37.value;\n }\n\n var regex = _ref34;\n\n if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n }\n } else {\n capableBrowser = false;\n }\n\n return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(',')[1]);\n\n // separate out the mime component\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to an ArrayBuffer\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n // write the ArrayBuffer to a blob\n return new Blob([ab], { type: mimeString });\n};\n\n// Returns an array without the rejected item\nvar without = function without(list, rejectedItem) {\n return list.filter(function (item) {\n return item !== rejectedItem;\n }).map(function (item) {\n return item;\n });\n};\n\n// abc-def_ghi -> abcDefGhi\nvar camelize = function camelize(str) {\n return str.replace(/[\\-_](\\w)/g, function (match) {\n return match.charAt(1).toUpperCase();\n });\n};\n\n// Creates an element from string\nDropzone.createElement = function (string) {\n var div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n};\n\n// Tests if given element is inside (or simply is) the container\nDropzone.elementInside = function (element, container) {\n if (element === container) {\n return true;\n } // Coffeescript doesn't support do/while loops\n while (element = element.parentNode) {\n if (element === container) {\n return true;\n }\n }\n return false;\n};\n\nDropzone.getElement = function (el, name) {\n var element = void 0;\n if (typeof el === \"string\") {\n element = document.querySelector(el);\n } else if (el.nodeType != null) {\n element = el;\n }\n if (element == null) {\n throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector or a plain HTML element.\");\n }\n return element;\n};\n\nDropzone.getElements = function (els, name) {\n var el = void 0,\n elements = void 0;\n if (els instanceof Array) {\n elements = [];\n try {\n for (var _iterator36 = els, _isArray36 = true, _i38 = 0, _iterator36 = _isArray36 ? _iterator36 : _iterator36[Symbol.iterator]();;) {\n if (_isArray36) {\n if (_i38 >= _iterator36.length) break;\n el = _iterator36[_i38++];\n } else {\n _i38 = _iterator36.next();\n if (_i38.done) break;\n el = _i38.value;\n }\n\n elements.push(this.getElement(el, name));\n }\n } catch (e) {\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n for (var _iterator37 = document.querySelectorAll(els), _isArray37 = true, _i39 = 0, _iterator37 = _isArray37 ? _iterator37 : _iterator37[Symbol.iterator]();;) {\n if (_isArray37) {\n if (_i39 >= _iterator37.length) break;\n el = _iterator37[_i39++];\n } else {\n _i39 = _iterator37.next();\n if (_i39.done) break;\n el = _i39.value;\n }\n\n elements.push(el);\n }\n } else if (els.nodeType != null) {\n elements = [els];\n }\n\n if (elements == null || !elements.length) {\n throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");\n }\n\n return elements;\n};\n\n// Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\nDropzone.confirm = function (question, accepted, rejected) {\n if (window.confirm(question)) {\n return accepted();\n } else if (rejected != null) {\n return rejected();\n }\n};\n\n// Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\nDropzone.isValidFile = function (file, acceptedFiles) {\n if (!acceptedFiles) {\n return true;\n } // If there are no accepted mime types, it's OK\n acceptedFiles = acceptedFiles.split(\",\");\n\n var mimeType = file.type;\n var baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n for (var _iterator38 = acceptedFiles, _isArray38 = true, _i40 = 0, _iterator38 = _isArray38 ? _iterator38 : _iterator38[Symbol.iterator]();;) {\n var _ref35;\n\n if (_isArray38) {\n if (_i40 >= _iterator38.length) break;\n _ref35 = _iterator38[_i40++];\n } else {\n _i40 = _iterator38.next();\n if (_i40.done) break;\n _ref35 = _i40.value;\n }\n\n var validType = _ref35;\n\n validType = validType.trim();\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n return true;\n }\n } else {\n if (mimeType === validType) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// Augment jQuery\nif (typeof jQuery !== 'undefined' && jQuery !== null) {\n jQuery.fn.dropzone = function (options) {\n return this.each(function () {\n return new Dropzone(this, options);\n });\n };\n}\n\nif (typeof module !== 'undefined' && module !== null) {\n module.exports = Dropzone;\n} else {\n window.Dropzone = Dropzone;\n}\n\n// Dropzone file status codes\nDropzone.ADDED = \"added\";\n\nDropzone.QUEUED = \"queued\";\n// For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\nDropzone.ACCEPTED = Dropzone.QUEUED;\n\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\nvar detectVerticalSquash = function detectVerticalSquash(img) {\n var iw = img.naturalWidth;\n var ih = img.naturalHeight;\n var canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n\n var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),\n data = _ctx$getImageData.data;\n\n // search image edge pixel position in case it is squashed vertically.\n\n\n var sy = 0;\n var ey = ih;\n var py = ih;\n while (py > sy) {\n var alpha = data[(py - 1) * 4 + 3];\n\n if (alpha === 0) {\n ey = py;\n } else {\n sy = py;\n }\n\n py = ey + sy >> 1;\n }\n var ratio = py / ih;\n\n if (ratio === 0) {\n return 1;\n } else {\n return ratio;\n }\n};\n\n// A replacement for context.drawImage\n// (args are for source and destination).\nvar drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n var vertSquashRatio = detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n};\n\n// Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\n\nvar ExifRestore = function () {\n function ExifRestore() {\n _classCallCheck(this, ExifRestore);\n }\n\n _createClass(ExifRestore, null, [{\n key: \"initClass\",\n value: function initClass() {\n this.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n }\n }, {\n key: \"encode64\",\n value: function encode64(input) {\n var output = '';\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = '';\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = '';\n var i = 0;\n while (true) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n chr1 = chr2 = chr3 = '';\n enc1 = enc2 = enc3 = enc4 = '';\n if (!(i < input.length)) {\n break;\n }\n }\n return output;\n }\n }, {\n key: \"restore\",\n value: function restore(origFileBase64, resizedFileBase64) {\n if (!origFileBase64.match('data:image/jpeg;base64,')) {\n return resizedFileBase64;\n }\n var rawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', ''));\n var segments = this.slice2Segments(rawImage);\n var image = this.exifManipulation(resizedFileBase64, segments);\n return \"data:image/jpeg;base64,\" + this.encode64(image);\n }\n }, {\n key: \"exifManipulation\",\n value: function exifManipulation(resizedFileBase64, segments) {\n var exifArray = this.getExifArray(segments);\n var newImageArray = this.insertExif(resizedFileBase64, exifArray);\n var aBuffer = new Uint8Array(newImageArray);\n return aBuffer;\n }\n }, {\n key: \"getExifArray\",\n value: function getExifArray(segments) {\n var seg = undefined;\n var x = 0;\n while (x < segments.length) {\n seg = segments[x];\n if (seg[0] === 255 & seg[1] === 225) {\n return seg;\n }\n x++;\n }\n return [];\n }\n }, {\n key: \"insertExif\",\n value: function insertExif(resizedFileBase64, exifArray) {\n var imageData = resizedFileBase64.replace('data:image/jpeg;base64,', '');\n var buf = this.decode64(imageData);\n var separatePoint = buf.indexOf(255, 3);\n var mae = buf.slice(0, separatePoint);\n var ato = buf.slice(separatePoint);\n var array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n }\n }, {\n key: \"slice2Segments\",\n value: function slice2Segments(rawImageArray) {\n var head = 0;\n var segments = [];\n while (true) {\n var length;\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {\n break;\n }\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {\n head += 2;\n } else {\n length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n var endPoint = head + length + 2;\n var seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n if (head > rawImageArray.length) {\n break;\n }\n }\n return segments;\n }\n }, {\n key: \"decode64\",\n value: function decode64(input) {\n var output = '';\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = '';\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = '';\n var i = 0;\n var buf = [];\n // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n if (base64test.exec(input)) {\n console.warn('There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, \\'+\\', \\'/\\',and \\'=\\'\\nExpect errors in decoding.');\n }\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n while (true) {\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n buf.push(chr1);\n if (enc3 !== 64) {\n buf.push(chr2);\n }\n if (enc4 !== 64) {\n buf.push(chr3);\n }\n chr1 = chr2 = chr3 = '';\n enc1 = enc2 = enc3 = enc4 = '';\n if (!(i < input.length)) {\n break;\n }\n }\n return buf;\n }\n }]);\n\n return ExifRestore;\n}();\n\nExifRestore.initClass();\n\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n\n// @win window reference\n// @fn function reference\nvar contentLoaded = function contentLoaded(win, fn) {\n var done = false;\n var top = true;\n var doc = win.document;\n var root = doc.documentElement;\n var add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n var rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n var pre = doc.addEventListener ? \"\" : \"on\";\n var init = function init(e) {\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n return;\n }\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n if (!done && (done = true)) {\n return fn.call(win, e.type || e);\n }\n };\n\n var poll = function poll() {\n try {\n root.doScroll(\"left\");\n } catch (e) {\n setTimeout(poll, 50);\n return;\n }\n return init(\"poll\");\n };\n\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (error) {}\n if (top) {\n poll();\n }\n }\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n};\n\n// As a single function to be able to write tests.\nDropzone._autoDiscoverFunction = function () {\n if (Dropzone.autoDiscover) {\n return Dropzone.discover();\n }\n};\ncontentLoaded(window, Dropzone._autoDiscoverFunction);\n\nfunction __guard__(value, transform) {\n return typeof value !== 'undefined' && value !== null ? transform(value) : undefined;\n}\nfunction __guardMethod__(obj, methodName, transform) {\n if (typeof obj !== 'undefined' && obj !== null && typeof obj[methodName] === 'function') {\n return transform(obj, methodName);\n } else {\n return undefined;\n }\n}\n","/**\n * A JavaScript implementation of the SHA family of hashes, as defined in FIPS PUB 180-4 and FIPS PUB 202, as\n * well as the corresponding HMAC implementation as defined in FIPS PUB 198a\n *\n * Copyright 2008-2020 Brian Turek, 1998-2009 Paul Johnston & Contributors\n * Distributed under the BSD License\n * See http://caligatio.github.com/jsSHA/ for more information\n *\n * Two ECMAScript polyfill functions carry the following license:\n *\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,\n * INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n * MERCHANTABLITY OR NON-INFRINGEMENT.\n *\n * See the Apache Version 2.0 License for specific language governing permissions and limitations under the License.\n */\n!function(t,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(t=t||self).jsSHA=r()}(this,(function(){\"use strict\";var t=function(r,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])})(r,n)};var r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";function n(t,r,n,i){var e,o,u,s=r||[0],f=(n=n||0)>>>3,h=-1===i?3:0;for(e=0;e<t.length;e+=1)o=(u=e+f)>>>2,s.length<=o&&s.push(0),s[o]|=t[e]<<8*(h+i*(u%4));return{value:s,binLen:8*t.length+n}}function i(t,i,e){switch(i){case\"UTF8\":case\"UTF16BE\":case\"UTF16LE\":break;default:throw new Error(\"encoding must be UTF8, UTF16BE, or UTF16LE\")}switch(t){case\"HEX\":return function(t,r,n){return function(t,r,n,i){var e,o,u,s;if(0!=t.length%2)throw new Error(\"String of HEX type must be in byte increments\");var f=r||[0],h=(n=n||0)>>>3,a=-1===i?3:0;for(e=0;e<t.length;e+=2){if(o=parseInt(t.substr(e,2),16),isNaN(o))throw new Error(\"String of HEX type contains invalid characters\");for(u=(s=(e>>>1)+h)>>>2;f.length<=u;)f.push(0);f[u]|=o<<8*(a+i*(s%4))}return{value:f,binLen:4*t.length+n}}(t,r,n,e)};case\"TEXT\":return function(t,r,n){return function(t,r,n,i,e){var o,u,s,f,h,a,c,w,E=0,v=n||[0],A=(i=i||0)>>>3;if(\"UTF8\"===r)for(c=-1===e?3:0,s=0;s<t.length;s+=1)for(u=[],128>(o=t.charCodeAt(s))?u.push(o):2048>o?(u.push(192|o>>>6),u.push(128|63&o)):55296>o||57344<=o?u.push(224|o>>>12,128|o>>>6&63,128|63&o):(s+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(s)),u.push(240|o>>>18,128|o>>>12&63,128|o>>>6&63,128|63&o)),f=0;f<u.length;f+=1){for(h=(a=E+A)>>>2;v.length<=h;)v.push(0);v[h]|=u[f]<<8*(c+e*(a%4)),E+=1}else for(c=-1===e?2:0,w=\"UTF16LE\"===r&&1!==e||\"UTF16LE\"!==r&&1===e,s=0;s<t.length;s+=1){for(o=t.charCodeAt(s),!0===w&&(o=(f=255&o)<<8|o>>>8),h=(a=E+A)>>>2;v.length<=h;)v.push(0);v[h]|=o<<8*(c+e*(a%4)),E+=2}return{value:v,binLen:8*E+i}}(t,i,r,n,e)};case\"B64\":return function(t,n,i){return function(t,n,i,e){var o,u,s,f,h,a,c=0,w=n||[0],E=(i=i||0)>>>3,v=-1===e?3:0,A=t.indexOf(\"=\");if(-1===t.search(/^[a-zA-Z0-9=+/]+$/))throw new Error(\"Invalid character in base-64 string\");if(t=t.replace(/=/g,\"\"),-1!==A&&A<t.length)throw new Error(\"Invalid '=' found in base-64 string\");for(o=0;o<t.length;o+=4){for(f=t.substr(o,4),s=0,u=0;u<f.length;u+=1)s|=r.indexOf(f.charAt(u))<<18-6*u;for(u=0;u<f.length-1;u+=1){for(h=(a=c+E)>>>2;w.length<=h;)w.push(0);w[h]|=(s>>>16-8*u&255)<<8*(v+e*(a%4)),c+=1}}return{value:w,binLen:8*c+i}}(t,n,i,e)};case\"BYTES\":return function(t,r,n){return function(t,r,n,i){var e,o,u,s,f=r||[0],h=(n=n||0)>>>3,a=-1===i?3:0;for(o=0;o<t.length;o+=1)e=t.charCodeAt(o),u=(s=o+h)>>>2,f.length<=u&&f.push(0),f[u]|=e<<8*(a+i*(s%4));return{value:f,binLen:8*t.length+n}}(t,r,n,e)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(\"ARRAYBUFFER not supported by this environment\")}return function(t,r,i){return function(t,r,i,e){return n(new Uint8Array(t),r,i,e)}(t,r,i,e)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(\"UINT8ARRAY not supported by this environment\")}return function(t,r,i){return n(t,r,i,e)};default:throw new Error(\"format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function e(t,n,i,e){switch(t){case\"HEX\":return function(t){return function(t,r,n,i){var e,o,u=\"\",s=r/8,f=-1===n?3:0;for(e=0;e<s;e+=1)o=t[e>>>2]>>>8*(f+n*(e%4)),u+=\"0123456789abcdef\".charAt(o>>>4&15)+\"0123456789abcdef\".charAt(15&o);return i.outputUpper?u.toUpperCase():u}(t,n,i,e)};case\"B64\":return function(t){return function(t,n,i,e){var o,u,s,f,h,a=\"\",c=n/8,w=-1===i?3:0;for(o=0;o<c;o+=3)for(f=o+1<c?t[o+1>>>2]:0,h=o+2<c?t[o+2>>>2]:0,s=(t[o>>>2]>>>8*(w+i*(o%4))&255)<<16|(f>>>8*(w+i*((o+1)%4))&255)<<8|h>>>8*(w+i*((o+2)%4))&255,u=0;u<4;u+=1)a+=8*o+6*u<=n?r.charAt(s>>>6*(3-u)&63):e.b64Pad;return a}(t,n,i,e)};case\"BYTES\":return function(t){return function(t,r,n){var i,e,o=\"\",u=r/8,s=-1===n?3:0;for(i=0;i<u;i+=1)e=t[i>>>2]>>>8*(s+n*(i%4))&255,o+=String.fromCharCode(e);return o}(t,n,i)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(\"ARRAYBUFFER not supported by this environment\")}return function(t){return function(t,r,n){var i,e=r/8,o=new ArrayBuffer(e),u=new Uint8Array(o),s=-1===n?3:0;for(i=0;i<e;i+=1)u[i]=t[i>>>2]>>>8*(s+n*(i%4))&255;return o}(t,n,i)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(\"UINT8ARRAY not supported by this environment\")}return function(t){return function(t,r,n){var i,e=r/8,o=-1===n?3:0,u=new Uint8Array(e);for(i=0;i<e;i+=1)u[i]=t[i>>>2]>>>8*(o+n*(i%4))&255;return u}(t,n,i)};default:throw new Error(\"format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function o(t){var r={outputUpper:!1,b64Pad:\"=\",outputLen:-1},n=t||{},i=\"Output length must be a multiple of 8\";if(r.outputUpper=n.outputUpper||!1,n.b64Pad&&(r.b64Pad=n.b64Pad),n.outputLen){if(n.outputLen%8!=0)throw new Error(i);r.outputLen=n.outputLen}else if(n.shakeLen){if(n.shakeLen%8!=0)throw new Error(i);r.outputLen=n.shakeLen}if(\"boolean\"!=typeof r.outputUpper)throw new Error(\"Invalid outputUpper formatting option\");if(\"string\"!=typeof r.b64Pad)throw new Error(\"Invalid b64Pad formatting option\");return r}function u(t,r){return t<<r|t>>>32-r}function s(t,r,n){return t^r^n}function f(t,r,n){return t&r^t&n^r&n}function h(t,r){var n=(65535&t)+(65535&r);return(65535&(t>>>16)+(r>>>16)+(n>>>16))<<16|65535&n}function a(t,r,n,i,e){var o=(65535&t)+(65535&r)+(65535&n)+(65535&i)+(65535&e);return(65535&(t>>>16)+(r>>>16)+(n>>>16)+(i>>>16)+(e>>>16)+(o>>>16))<<16|65535&o}function c(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function w(t,r){var n,i,e,o,c,w,E,v,A=[];for(n=r[0],i=r[1],e=r[2],o=r[3],c=r[4],E=0;E<80;E+=1)A[E]=E<16?t[E]:u(A[E-3]^A[E-8]^A[E-14]^A[E-16],1),w=E<20?a(u(n,5),(v=i)&e^~v&o,c,1518500249,A[E]):E<40?a(u(n,5),s(i,e,o),c,1859775393,A[E]):E<60?a(u(n,5),f(i,e,o),c,2400959708,A[E]):a(u(n,5),s(i,e,o),c,3395469782,A[E]),c=o,o=e,e=u(i,30),i=n,n=w;return r[0]=h(n,r[0]),r[1]=h(i,r[1]),r[2]=h(e,r[2]),r[3]=h(o,r[3]),r[4]=h(c,r[4]),r}function E(t,r,n,i){for(var e,o=15+(r+65>>>9<<4),u=r+n;t.length<=o;)t.push(0);for(t[r>>>5]|=128<<24-r%32,t[o]=4294967295&u,t[o-1]=u/4294967296|0,e=0;e<t.length;e+=16)i=w(t.slice(e,e+16),i);return i}return function(r){function n(t,n,e){var o=this;if(\"SHA-1\"!==t)throw new Error(\"Chosen SHA variant is not supported\");var u=e||{};return(o=r.call(this,t,n,e)||this).t=!0,o.i=o.o,o.u=-1,o.s=i(o.h,o.v,o.u),o.A=w,o.p=function(t){return t.slice()},o.l=c,o.R=E,o.U=[1732584193,4023233417,2562383102,271733878,3285377520],o.T=512,o.m=160,o.F=!1,u.hmacKey&&o.B(function(t,r,n,e){var o=t+\" must include a value and format\";if(!r){if(!e)throw new Error(o);return e}if(void 0===r.value||!r.format)throw new Error(o);return i(r.format,r.encoding||\"UTF8\",n)(r.value)}(\"hmacKey\",u.hmacKey,o.u)),o}return function(r,n){function i(){this.constructor=r}t(r,n),r.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}(n,r),n}(function(){function t(t,r,n){var i=n||{};if(this.h=r,this.v=i.encoding||\"UTF8\",this.numRounds=i.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw new Error(\"numRounds must a integer >= 1\");this.g=t,this.Y=[],this.I=0,this.C=!1,this.H=0,this.L=!1,this.N=[],this.S=[]}return t.prototype.update=function(t){var r,n=0,i=this.T>>>5,e=this.s(t,this.Y,this.I),o=e.binLen,u=e.value,s=o>>>5;for(r=0;r<s;r+=i)n+this.T<=o&&(this.U=this.A(u.slice(r,r+i),this.U),n+=this.T);this.H+=n,this.Y=u.slice(n>>>5),this.I=o%this.T,this.C=!0},t.prototype.getHash=function(t,r){var n,i,u=this.m,s=o(r);if(!0===this.F){if(-1===s.outputLen)throw new Error(\"Output length must be specified in options\");u=s.outputLen}var f=e(t,u,this.u,s);if(!0===this.L&&this.i)return f(this.i(s));for(i=this.R(this.Y.slice(),this.I,this.H,this.p(this.U),u),n=1;n<this.numRounds;n+=1)!0===this.F&&u%32!=0&&(i[i.length-1]&=16777215>>>24-u%32),i=this.R(i,u,0,this.l(this.g),u);return f(i)},t.prototype.setHMACKey=function(t,r,n){if(!0!==this.t)throw new Error(\"Variant does not support HMAC\");if(!0===this.C)throw new Error(\"Cannot set MAC key after calling update\");var e=i(r,(n||{}).encoding||\"UTF8\",this.u);this.B(e(t))},t.prototype.B=function(t){var r,n=this.T>>>3,i=n/4-1;if(1!==this.numRounds)throw new Error(\"Cannot set numRounds with MAC\");if(!0===this.L)throw new Error(\"MAC key already set\");for(n<t.binLen/8&&(t.value=this.R(t.value,t.binLen,0,this.l(this.g),this.m));t.value.length<=i;)t.value.push(0);for(r=0;r<=i;r+=1)this.N[r]=909522486^t.value[r],this.S[r]=1549556828^t.value[r];this.U=this.A(this.N,this.U),this.H=this.T,this.L=!0},t.prototype.getHMAC=function(t,r){var n=o(r);return e(t,this.m,this.u,n)(this.o())},t.prototype.o=function(){var t;if(!1===this.L)throw new Error(\"Cannot call getHMAC without first setting MAC key\");var r=this.R(this.Y.slice(),this.I,this.H,this.p(this.U),this.m);return t=this.A(this.S,this.l(this.g)),t=this.R(r,this.m,this.T,t,this.m)},t}())}));\n","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tConvert strings of text into linkable HTML text\n */\n\nvar Options = options.Options;\n\n\nfunction escapeText(text) {\n\treturn text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n\nfunction escapeAttr(href) {\n\treturn href.replace(/\"/g, '&quot;');\n}\n\nfunction attributesToString(attributes) {\n\tif (!attributes) {\n\t\treturn '';\n\t}\n\tvar result = [];\n\n\tfor (var attr in attributes) {\n\t\tvar val = attributes[attr] + '';\n\t\tresult.push(attr + '=\"' + escapeAttr(val) + '\"');\n\t}\n\treturn result.join(' ');\n}\n\nfunction linkifyStr(str) {\n\tvar opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\topts = new Options(opts);\n\n\tvar tokens = tokenize(str);\n\tvar result = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push('<br>\\n');\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(escapeText(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\tvar link = '<' + tagName + ' href=\"' + escapeAttr(formattedHref) + '\"';\n\n\t\tif (className) {\n\t\t\tlink += ' class=\"' + escapeAttr(className) + '\"';\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink += ' target=\"' + escapeAttr(target) + '\"';\n\t\t}\n\n\t\tif (attributes) {\n\t\t\tlink += ' ' + attributesToString(attributes);\n\t\t}\n\n\t\tlink += '>' + escapeText(formatted) + '</' + tagName + '>';\n\t\tresult.push(link);\n\t}\n\n\treturn result.join('');\n}\n\nif (!String.prototype.linkify) {\n\ttry {\n\t\tObject.defineProperty(String.prototype, 'linkify', {\n\t\t\tset: function set() {},\n\t\t\tget: function get() {\n\t\t\t\treturn function linkify(opts) {\n\t\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\t// IE 8 doesn't like Object.defineProperty on non-DOM objects\n\t\tif (!String.prototype.linkify) {\n\t\t\tString.prototype.linkify = function (opts) {\n\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t};\n\t\t}\n\t}\n}\n\nexports.default = linkifyStr;","'use strict';\n\nexports.__esModule = true;\nexports.tokenize = exports.test = exports.scanner = exports.parser = exports.options = exports.inherits = exports.find = undefined;\n\nvar _class = require('./linkify/utils/class');\n\nvar _options = require('./linkify/utils/options');\n\nvar options = _interopRequireWildcard(_options);\n\nvar _scanner = require('./linkify/core/scanner');\n\nvar scanner = _interopRequireWildcard(_scanner);\n\nvar _parser = require('./linkify/core/parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nif (!Array.isArray) {\n\tArray.isArray = function (arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n}\n\n/**\n\tConverts a string into tokens that represent linkable and non-linkable bits\n\t@method tokenize\n\t@param {String} str\n\t@return {Array} tokens\n*/\nvar tokenize = function tokenize(str) {\n\treturn parser.run(scanner.run(str));\n};\n\n/**\n\tReturns a list of linkable items in the given string.\n*/\nvar find = function find(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\tvar filtered = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\t\tif (token.isLink && (!type || token.type === type)) {\n\t\t\tfiltered.push(token.toObject());\n\t\t}\n\t}\n\n\treturn filtered;\n};\n\n/**\n\tIs the given string valid linkable text of some sort\n\tNote that this does not trim the text for you.\n\n\tOptionally pass in a second `type` param, which is the type of link to test\n\tfor.\n\n\tFor example,\n\n\t\ttest(str, 'email');\n\n\tWill return `true` if str is a valid email.\n*/\nvar test = function test(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\treturn tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\n\n// Scanner and parser provide states and tokens for the lexicographic stage\n// (will be used to add additional link types)\nexports.find = find;\nexports.inherits = _class.inherits;\nexports.options = options;\nexports.parser = parser;\nexports.scanner = scanner;\nexports.test = test;\nexports.tokenize = tokenize;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _multi = require('./tokens/multi');\n\nvar MULTI_TOKENS = _interopRequireWildcard(_multi);\n\nvar _text = require('./tokens/text');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/Email_address (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main parser\n*/\n\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.TokenState(tokenClass);\n};\n\n// The universal starting state.\nvar S_START = makeState();\n\n// Intermediate states for URLs. Note that domains that begin with a protocol\n// are treated slighly differently from those that don't.\nvar S_PROTOCOL = makeState(); // e.g., 'http:'\nvar S_MAILTO = makeState(); // 'mailto:'\nvar S_PROTOCOL_SLASH = makeState(); // e.g., '/', 'http:/''\nvar S_PROTOCOL_SLASH_SLASH = makeState(); // e.g., '//', 'http://'\nvar S_DOMAIN = makeState(); // parsed string ends with a potential domain name (A)\nvar S_DOMAIN_DOT = makeState(); // (A) domain followed by DOT\nvar S_TLD = makeState(_multi.URL); // (A) Simplest possible URL with no query string\nvar S_TLD_COLON = makeState(); // (A) URL followed by colon (potential port number here)\nvar S_TLD_PORT = makeState(_multi.URL); // TLD followed by a port number\nvar S_URL = makeState(_multi.URL); // Long URL with optional port and maybe query string\nvar S_URL_NON_ACCEPTING = makeState(); // URL followed by some symbols (will not be part of the final URL)\nvar S_URL_OPENBRACE = makeState(); // URL followed by {\nvar S_URL_OPENBRACKET = makeState(); // URL followed by [\nvar S_URL_OPENANGLEBRACKET = makeState(); // URL followed by <\nvar S_URL_OPENPAREN = makeState(); // URL followed by (\nvar S_URL_OPENBRACE_Q = makeState(_multi.URL); // URL followed by { and some symbols that the URL can end it\nvar S_URL_OPENBRACKET_Q = makeState(_multi.URL); // URL followed by [ and some symbols that the URL can end it\nvar S_URL_OPENANGLEBRACKET_Q = makeState(_multi.URL); // URL followed by < and some symbols that the URL can end it\nvar S_URL_OPENPAREN_Q = makeState(_multi.URL); // URL followed by ( and some symbols that the URL can end it\nvar S_URL_OPENBRACE_SYMS = makeState(); // S_URL_OPENBRACE_Q followed by some symbols it cannot end it\nvar S_URL_OPENBRACKET_SYMS = makeState(); // S_URL_OPENBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENANGLEBRACKET_SYMS = makeState(); // S_URL_OPENANGLEBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENPAREN_SYMS = makeState(); // S_URL_OPENPAREN_Q followed by some symbols it cannot end it\nvar S_EMAIL_DOMAIN = makeState(); // parsed string starts with local email info + @ with a potential domain name (C)\nvar S_EMAIL_DOMAIN_DOT = makeState(); // (C) domain followed by DOT\nvar S_EMAIL = makeState(_multi.EMAIL); // (C) Possible email address (could have more tlds)\nvar S_EMAIL_COLON = makeState(); // (C) URL followed by colon (potential port number here)\nvar S_EMAIL_PORT = makeState(_multi.EMAIL); // (C) Email address with a port\nvar S_MAILTO_EMAIL = makeState(_multi.MAILTOEMAIL); // Email that begins with the mailto prefix (D)\nvar S_MAILTO_EMAIL_NON_ACCEPTING = makeState(); // (D) Followed by some non-query string chars\nvar S_LOCALPART = makeState(); // Local part of the email address\nvar S_LOCALPART_AT = makeState(); // Local part of the email address plus @\nvar S_LOCALPART_DOT = makeState(); // Local part of the email address plus '.' (localpart cannot end in .)\nvar S_NL = makeState(_multi.NL); // single new line\n\n// Make path from start to protocol (with '//')\nS_START.on(_text.NL, S_NL).on(_text.PROTOCOL, S_PROTOCOL).on(_text.MAILTO, S_MAILTO).on(_text.SLASH, S_PROTOCOL_SLASH);\n\nS_PROTOCOL.on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL_SLASH.on(_text.SLASH, S_PROTOCOL_SLASH_SLASH);\n\n// The very first potential domain name\nS_START.on(_text.TLD, S_DOMAIN).on(_text.DOMAIN, S_DOMAIN).on(_text.LOCALHOST, S_TLD).on(_text.NUM, S_DOMAIN);\n\n// Force URL for protocol followed by anything sane\nS_PROTOCOL_SLASH_SLASH.on(_text.TLD, S_URL).on(_text.DOMAIN, S_URL).on(_text.NUM, S_URL).on(_text.LOCALHOST, S_URL);\n\n// Account for dots and hyphens\n// hyphens are usually parts of domain names\nS_DOMAIN.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL_DOMAIN.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Hyphen can jump back to a domain name\n\n// After the first domain and a dot, we can find either a URL or another domain\nS_DOMAIN_DOT.on(_text.TLD, S_TLD).on(_text.DOMAIN, S_DOMAIN).on(_text.NUM, S_DOMAIN).on(_text.LOCALHOST, S_DOMAIN);\n\nS_EMAIL_DOMAIN_DOT.on(_text.TLD, S_EMAIL).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.NUM, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL_DOMAIN);\n\n// S_TLD accepts! But the URL could be longer, try to find a match greedily\n// The `run` function should be able to \"rollback\" to the accepting state\nS_TLD.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Become real URLs after `SLASH` or `COLON NUM SLASH`\n// Here PSS and non-PSS converge\nS_TLD.on(_text.COLON, S_TLD_COLON).on(_text.SLASH, S_URL);\nS_TLD_COLON.on(_text.NUM, S_TLD_PORT);\nS_TLD_PORT.on(_text.SLASH, S_URL);\nS_EMAIL.on(_text.COLON, S_EMAIL_COLON);\nS_EMAIL_COLON.on(_text.NUM, S_EMAIL_PORT);\n\n// Types of characters the URL can definitely end in\nvar qsAccepting = [_text.DOMAIN, _text.AT, _text.LOCALHOST, _text.NUM, _text.PLUS, _text.POUND, _text.PROTOCOL, _text.SLASH, _text.TLD, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND];\n\n// Types of tokens that can follow a URL and be part of the query string\n// but cannot be the very last characters\n// Characters that cannot appear in the URL at all should be excluded\nvar qsNonAccepting = [_text.COLON, _text.DOT, _text.QUERY, _text.PUNCTUATION, _text.CLOSEBRACE, _text.CLOSEBRACKET, _text.CLOSEANGLEBRACKET, _text.CLOSEPAREN, _text.OPENBRACE, _text.OPENBRACKET, _text.OPENANGLEBRACKET, _text.OPENPAREN];\n\n// These states are responsible primarily for determining whether or not to\n// include the final round bracket.\n\n// URL, followed by an opening bracket\nS_URL.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// URL with extra symbols at the end, followed by an opening bracket\nS_URL_NON_ACCEPTING.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// Closing bracket component. This character WILL be included in the URL\nS_URL_OPENBRACE.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_Q.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_Q.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_Q.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_Q.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_SYMS.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_SYMS.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_SYMS.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_SYMS.on(_text.CLOSEPAREN, S_URL);\n\n// URL that beings with an opening bracket, followed by a symbols.\n// Note that the final state can still be `S_URL_OPENBRACE_Q` (if the URL only\n// has a single opening bracket for some reason).\nS_URL_OPENBRACE.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// URL that begins with an opening bracket, followed by some symbols\nS_URL_OPENBRACE_Q.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_Q.on(qsNonAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsNonAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsNonAccepting, S_URL_OPENPAREN_Q);\n\nS_URL_OPENBRACE_SYMS.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_SYMS.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_SYMS.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN_SYMS.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// Account for the query string\nS_URL.on(qsAccepting, S_URL);\nS_URL_NON_ACCEPTING.on(qsAccepting, S_URL);\n\nS_URL.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_URL_NON_ACCEPTING.on(qsNonAccepting, S_URL_NON_ACCEPTING);\n\n// Email address-specific state definitions\n// Note: We are not allowing '/' in email addresses since this would interfere\n// with real URLs\n\n// For addresses with the mailto prefix\n// 'mailto:' followed by anything sane is a valid email\nS_MAILTO.on(_text.TLD, S_MAILTO_EMAIL).on(_text.DOMAIN, S_MAILTO_EMAIL).on(_text.NUM, S_MAILTO_EMAIL).on(_text.LOCALHOST, S_MAILTO_EMAIL);\n\n// Greedily get more potential valid email values\nS_MAILTO_EMAIL.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nS_MAILTO_EMAIL_NON_ACCEPTING.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\n\n// For addresses without the mailto prefix\n// Tokens allowed in the localpart of the email\nvar localpartAccepting = [_text.DOMAIN, _text.NUM, _text.PLUS, _text.POUND, _text.QUERY, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND, _text.TLD];\n\n// Some of the tokens in `localpartAccepting` are already accounted for here and\n// will not be overwritten (don't worry)\nS_DOMAIN.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_TLD.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_DOMAIN_DOT.on(localpartAccepting, S_LOCALPART);\n\n// Okay we're on a localpart. Now what?\n// TODO: IP addresses and what if the email starts with numbers?\nS_LOCALPART.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT) // close to an email address now\n.on(_text.DOT, S_LOCALPART_DOT);\nS_LOCALPART_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART_AT.on(_text.TLD, S_EMAIL_DOMAIN).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL);\n// States following `@` defined above\n\nvar run = function run(tokens) {\n\tvar len = tokens.length;\n\tvar cursor = 0;\n\tvar multis = [];\n\tvar textTokens = [];\n\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar secondState = null;\n\t\tvar nextState = null;\n\t\tvar multiLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && !(secondState = state.next(tokens[cursor]))) {\n\t\t\t// Starting tokens with nowhere to jump to.\n\t\t\t// Consider these to be just plain text\n\t\t\ttextTokens.push(tokens[cursor++]);\n\t\t}\n\n\t\twhile (cursor < len && (nextState = secondState || state.next(tokens[cursor]))) {\n\n\t\t\t// Get the next state\n\t\t\tsecondState = null;\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\tcursor++;\n\t\t\tmultiLength++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\n\t\t\t// No accepting state was found, part of a regular text token\n\t\t\t// Add all the tokens we looked at to the text tokens array\n\t\t\tfor (var i = cursor - multiLength; i < cursor; i++) {\n\t\t\t\ttextTokens.push(tokens[i]);\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Accepting state!\n\n\t\t\t// First close off the textTokens (if available)\n\t\t\tif (textTokens.length > 0) {\n\t\t\t\tmultis.push(new _multi.TEXT(textTokens));\n\t\t\t\ttextTokens = [];\n\t\t\t}\n\n\t\t\t// Roll back to the latest accepting state\n\t\t\tcursor -= sinceAccepts;\n\t\t\tmultiLength -= sinceAccepts;\n\n\t\t\t// Create a new multitoken\n\t\t\tvar MULTI = latestAccepting.emit();\n\t\t\tmultis.push(new MULTI(tokens.slice(cursor - multiLength, cursor)));\n\t\t}\n\t}\n\n\t// Finally close off the textTokens (if available)\n\tif (textTokens.length > 0) {\n\t\tmultis.push(new _multi.TEXT(textTokens));\n\t}\n\n\treturn multis;\n};\n\nexports.State = _state.TokenState;\nexports.TOKENS = MULTI_TOKENS;\nexports.run = run;\nexports.start = S_START;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _text = require('./tokens/text');\n\nvar TOKENS = _interopRequireWildcard(_text);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tlds = 'aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw'.split('|'); // macro, see gulpfile.js\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n\n\t@module linkify\n\t@submodule scanner\n\t@main scanner\n*/\n\nvar NUMBERS = '0123456789'.split('');\nvar ALPHANUM = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nvar WHITESPACE = [' ', '\\f', '\\r', '\\t', '\\v', '\\xA0', '\\u1680', '\\u180E']; // excluding line breaks\n\nvar domainStates = []; // states that jump to DOMAIN on /[a-z0-9]/\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.CharacterState(tokenClass);\n};\n\n// Frequently used states\nvar S_START = makeState();\nvar S_NUM = makeState(_text.NUM);\nvar S_DOMAIN = makeState(_text.DOMAIN);\nvar S_DOMAIN_HYPHEN = makeState(); // domain followed by 1 or more hyphen characters\nvar S_WS = makeState(_text.WS);\n\n// States for special URL symbols\nS_START.on('@', makeState(_text.AT)).on('.', makeState(_text.DOT)).on('+', makeState(_text.PLUS)).on('#', makeState(_text.POUND)).on('?', makeState(_text.QUERY)).on('/', makeState(_text.SLASH)).on('_', makeState(_text.UNDERSCORE)).on(':', makeState(_text.COLON)).on('{', makeState(_text.OPENBRACE)).on('[', makeState(_text.OPENBRACKET)).on('<', makeState(_text.OPENANGLEBRACKET)).on('(', makeState(_text.OPENPAREN)).on('}', makeState(_text.CLOSEBRACE)).on(']', makeState(_text.CLOSEBRACKET)).on('>', makeState(_text.CLOSEANGLEBRACKET)).on(')', makeState(_text.CLOSEPAREN)).on('&', makeState(_text.AMPERSAND)).on([',', ';', '!', '\"', '\\''], makeState(_text.PUNCTUATION));\n\n// Whitespace jumps\n// Tokens of only non-newline whitespace are arbitrarily long\nS_START.on('\\n', makeState(_text.NL)).on(WHITESPACE, S_WS);\n\n// If any whitespace except newline, more whitespace!\nS_WS.on(WHITESPACE, S_WS);\n\n// Generates states for top-level domains\n// Note that this is most accurate when tlds are in alphabetical order\nfor (var i = 0; i < tlds.length; i++) {\n\tvar newStates = (0, _state.stateify)(tlds[i], S_START, _text.TLD, _text.DOMAIN);\n\tdomainStates.push.apply(domainStates, newStates);\n}\n\n// Collect the states generated by different protocls\nvar partialProtocolFileStates = (0, _state.stateify)('file', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolFtpStates = (0, _state.stateify)('ftp', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolHttpStates = (0, _state.stateify)('http', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolMailtoStates = (0, _state.stateify)('mailto', S_START, _text.DOMAIN, _text.DOMAIN);\n\n// Add the states to the array of DOMAINeric states\ndomainStates.push.apply(domainStates, partialProtocolFileStates);\ndomainStates.push.apply(domainStates, partialProtocolFtpStates);\ndomainStates.push.apply(domainStates, partialProtocolHttpStates);\ndomainStates.push.apply(domainStates, partialProtocolMailtoStates);\n\n// Protocol states\nvar S_PROTOCOL_FILE = partialProtocolFileStates.pop();\nvar S_PROTOCOL_FTP = partialProtocolFtpStates.pop();\nvar S_PROTOCOL_HTTP = partialProtocolHttpStates.pop();\nvar S_MAILTO = partialProtocolMailtoStates.pop();\nvar S_PROTOCOL_SECURE = makeState(_text.DOMAIN);\nvar S_FULL_PROTOCOL = makeState(_text.PROTOCOL); // Full protocol ends with COLON\nvar S_FULL_MAILTO = makeState(_text.MAILTO); // Mailto ends with COLON\n\n// Secure protocols (end with 's')\nS_PROTOCOL_FTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\nS_PROTOCOL_HTTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\ndomainStates.push(S_PROTOCOL_SECURE);\n\n// Become protocol tokens after a COLON\nS_PROTOCOL_FILE.on(':', S_FULL_PROTOCOL);\nS_PROTOCOL_SECURE.on(':', S_FULL_PROTOCOL);\nS_MAILTO.on(':', S_FULL_MAILTO);\n\n// Localhost\nvar partialLocalhostStates = (0, _state.stateify)('localhost', S_START, _text.LOCALHOST, _text.DOMAIN);\ndomainStates.push.apply(domainStates, partialLocalhostStates);\n\n// Everything else\n// DOMAINs make more DOMAINs\n// Number and character transitions\nS_START.on(NUMBERS, S_NUM);\nS_NUM.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_NUM).on(ALPHANUM, S_DOMAIN); // number becomes DOMAIN\n\nS_DOMAIN.on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n\n// All the generated states should have a jump to DOMAIN\nfor (var _i = 0; _i < domainStates.length; _i++) {\n\tdomainStates[_i].on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n}\n\nS_DOMAIN_HYPHEN.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_DOMAIN).on(ALPHANUM, S_DOMAIN);\n\n// Set default transition\nS_START.defaultTransition = makeState(_text.SYM);\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {String} str Input string to scan\n\t@return {Array} Array of TOKEN instances\n*/\nvar run = function run(str) {\n\n\t// The state machine only looks at lowercase strings.\n\t// This selective `toLowerCase` is used because lowercasing the entire\n\t// string causes the length and character position to vary in some in some\n\t// non-English strings. This happens only on V8-based runtimes.\n\tvar lowerStr = str.replace(/[A-Z]/g, function (c) {\n\t\treturn c.toLowerCase();\n\t});\n\tvar len = str.length;\n\tvar tokens = []; // return value\n\n\tvar cursor = 0;\n\n\t// Tokenize the string\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar nextState = null;\n\t\tvar tokenLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && (nextState = state.next(lowerStr[cursor]))) {\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\ttokenLength++;\n\t\t\tcursor++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\t\t\tcontinue;\n\t\t} // Should never happen\n\n\t\t// Roll back to the latest accepting state\n\t\tcursor -= sinceAccepts;\n\t\ttokenLength -= sinceAccepts;\n\n\t\t// Get the class for the new token\n\t\tvar TOKEN = latestAccepting.emit(); // Current token class\n\n\t\t// No more jumps, just make a new token\n\t\ttokens.push(new TOKEN(str.substr(cursor - tokenLength, tokenLength)));\n\t}\n\n\treturn tokens;\n};\n\nvar start = S_START;\nexports.State = _state.CharacterState;\nexports.TOKENS = TOKENS;\nexports.run = run;\nexports.start = start;","'use strict';\n\nexports.__esModule = true;\nexports.stateify = exports.TokenState = exports.CharacterState = undefined;\n\nvar _class = require('../utils/class');\n\nfunction createStateClass() {\n\treturn function (tClass) {\n\t\tthis.j = [];\n\t\tthis.T = tClass || null;\n\t};\n}\n\n/**\n\tA simple state machine that can emit token classes\n\n\tThe `j` property in this class refers to state jumps. It's a\n\tmultidimensional array where for each element:\n\n\t* index [0] is a symbol or class of symbols to transition to.\n\t* index [1] is a State instance which matches\n\n\tThe type of symbol will depend on the target implementation for this class.\n\tIn Linkify, we have a two-stage scanner. Each stage uses this state machine\n\tbut with a slighly different (polymorphic) implementation.\n\n\tThe `T` property refers to the token class.\n\n\tTODO: Can the `on` and `next` methods be combined?\n\n\t@class BaseState\n*/\nvar BaseState = createStateClass();\nBaseState.prototype = {\n\tdefaultTransition: false,\n\n\t/**\n \t@method constructor\n \t@param {Class} tClass Pass in the kind of token to emit if there are\n \t\tno jumps after this state and the state is accepting.\n */\n\n\t/**\n \tOn the given symbol(s), this machine should go to the given state\n \t\t@method on\n \t@param {Array|Mixed} symbol\n \t@param {BaseState} state Note that the type of this state should be the\n \t\tsame as the current instance (i.e., don't pass in a different\n \t\tsubclass)\n */\n\ton: function on(symbol, state) {\n\t\tif (symbol instanceof Array) {\n\t\t\tfor (var i = 0; i < symbol.length; i++) {\n\t\t\t\tthis.j.push([symbol[i], state]);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tthis.j.push([symbol, state]);\n\t\treturn this;\n\t},\n\n\n\t/**\n \tGiven the next item, returns next state for that item\n \t@method next\n \t@param {Mixed} item Should be an instance of the symbols handled by\n \t\tthis particular machine.\n \t@return {State} state Returns false if no jumps are available\n */\n\tnext: function next(item) {\n\t\tfor (var i = 0; i < this.j.length; i++) {\n\t\t\tvar jump = this.j[i];\n\t\t\tvar symbol = jump[0]; // Next item to check for\n\t\t\tvar state = jump[1]; // State to jump to if items match\n\n\t\t\t// compare item with symbol\n\t\t\tif (this.test(item, symbol)) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// Nowhere left to jump!\n\t\treturn this.defaultTransition;\n\t},\n\n\n\t/**\n \tDoes this state accept?\n \t`true` only of `this.T` exists\n \t\t@method accepts\n \t@return {Boolean}\n */\n\taccepts: function accepts() {\n\t\treturn !!this.T;\n\t},\n\n\n\t/**\n \tDetermine whether a given item \"symbolizes\" the symbol, where symbol is\n \ta class of items handled by this state machine.\n \t\tThis method should be overriden in extended classes.\n \t\t@method test\n \t@param {Mixed} item Does this item match the given symbol?\n \t@param {Mixed} symbol\n \t@return {Boolean}\n */\n\ttest: function test(item, symbol) {\n\t\treturn item === symbol;\n\t},\n\n\n\t/**\n \tEmit the token for this State (just return it in this case)\n \tIf this emits a token, this instance is an accepting state\n \t@method emit\n \t@return {Class} T\n */\n\temit: function emit() {\n\t\treturn this.T;\n\t}\n};\n\n/**\n\tState machine for string-based input\n\n\t@class CharacterState\n\t@extends BaseState\n*/\nvar CharacterState = (0, _class.inherits)(BaseState, createStateClass(), {\n\t/**\n \tDoes the given character match the given character or regular\n \texpression?\n \t\t@method test\n \t@param {String} char\n \t@param {String|RegExp} charOrRegExp\n \t@return {Boolean}\n */\n\ttest: function test(character, charOrRegExp) {\n\t\treturn character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n\t}\n});\n\n/**\n\tState machine for input in the form of TextTokens\n\n\t@class TokenState\n\t@extends BaseState\n*/\nvar TokenState = (0, _class.inherits)(BaseState, createStateClass(), {\n\n\t/**\n * Similar to `on`, but returns the state the results in the transition from\n * the given item\n * @method jump\n * @param {Mixed} item\n * @param {Token} [token]\n * @return state\n */\n\tjump: function jump(token) {\n\t\tvar tClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\tvar state = this.next(new token('')); // dummy temp token\n\t\tif (state === this.defaultTransition) {\n\t\t\t// Make a new state!\n\t\t\tstate = new this.constructor(tClass);\n\t\t\tthis.on(token, state);\n\t\t} else if (tClass) {\n\t\t\tstate.T = tClass;\n\t\t}\n\t\treturn state;\n\t},\n\n\n\t/**\n \tIs the given token an instance of the given token class?\n \t\t@method test\n \t@param {TextToken} token\n \t@param {Class} tokenClass\n \t@return {Boolean}\n */\n\ttest: function test(token, tokenClass) {\n\t\treturn token instanceof tokenClass;\n\t}\n});\n\n/**\n\tGiven a non-empty target string, generates states (if required) for each\n\tconsecutive substring of characters in str starting from the beginning of\n\tthe string. The final state will have a special value, as specified in\n\toptions. All other \"in between\" substrings will have a default end state.\n\n\tThis turns the state machine into a Trie-like data structure (rather than a\n\tintelligently-designed DFA).\n\n\tNote that I haven't really tried these with any strings other than\n\tDOMAIN.\n\n\t@param {String} str\n\t@param {CharacterState} start State to jump from the first character\n\t@param {Class} endToken Token class to emit when the given string has been\n\t\tmatched and no more jumps exist.\n\t@param {Class} defaultToken \"Filler token\", or which token type to emit when\n\t\twe don't have a full match\n\t@return {Array} list of newly-created states\n*/\nfunction stateify(str, start, endToken, defaultToken) {\n\tvar i = 0,\n\t len = str.length,\n\t state = start,\n\t newStates = [],\n\t nextState = void 0;\n\n\t// Find the next state without a jump to the next character\n\twhile (i < len && (nextState = state.next(str[i]))) {\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tif (i >= len) {\n\t\treturn [];\n\t} // no new tokens were added\n\n\twhile (i < len - 1) {\n\t\tnextState = new CharacterState(defaultToken);\n\t\tnewStates.push(nextState);\n\t\tstate.on(str[i], nextState);\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tnextState = new CharacterState(endToken);\n\tnewStates.push(nextState);\n\tstate.on(str[len - 1], nextState);\n\n\treturn newStates;\n}\n\nexports.CharacterState = CharacterState;\nexports.TokenState = TokenState;\nexports.stateify = stateify;","\"use strict\";\n\nexports.__esModule = true;\nfunction createTokenClass() {\n\treturn function (value) {\n\t\tif (value) {\n\t\t\tthis.v = value;\n\t\t}\n\t};\n}\n\nexports.createTokenClass = createTokenClass;","'use strict';\n\nexports.__esModule = true;\nexports.URL = exports.TEXT = exports.NL = exports.EMAIL = exports.MAILTOEMAIL = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\nvar _text = require('./text');\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n// Is the given token a valid domain token?\n// Should nums be included here?\nfunction isDomainToken(token) {\n\treturn token instanceof _text.DOMAIN || token instanceof _text.TLD;\n}\n\n/**\n\tAbstract class used for manufacturing tokens of text tokens. That is rather\n\tthan the value for a token being a small string of text, it's value an array\n\tof text tokens.\n\n\tUsed for grouping together URLs, emails, hashtags, and other potential\n\tcreations.\n\n\t@class MultiToken\n\t@abstract\n*/\nvar MultiToken = (0, _createTokenClass.createTokenClass)();\n\nMultiToken.prototype = {\n\t/**\n \tString representing the type for this token\n \t@property type\n \t@default 'TOKEN'\n */\n\ttype: 'token',\n\n\t/**\n \tIs this multitoken a link?\n \t@property isLink\n \t@default false\n */\n\tisLink: false,\n\n\t/**\n \tReturn the string this token represents.\n \t@method toString\n \t@return {String}\n */\n\ttoString: function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.v.length; i++) {\n\t\t\tresult.push(this.v[i].toString());\n\t\t}\n\t\treturn result.join('');\n\t},\n\n\n\t/**\n \tWhat should the value for this token be in the `href` HTML attribute?\n \tReturns the `.toString` value by default.\n \t\t@method toHref\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\treturn this.toString();\n\t},\n\n\n\t/**\n \tReturns a hash of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {String} [protocol] `'http'` by default\n \t@return {Object}\n */\n\ttoObject: function toObject() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue: this.toString(),\n\t\t\thref: this.toHref(protocol)\n\t\t};\n\t}\n};\n\n/**\n\tRepresents an arbitrarily mailto email address with the prefix included\n\t@class MAILTO\n\t@extends MultiToken\n*/\nvar MAILTOEMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true\n});\n\n/**\n\tRepresents a list of tokens making up a valid email address\n\t@class EMAIL\n\t@extends MultiToken\n*/\nvar EMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true,\n\ttoHref: function toHref() {\n\t\treturn 'mailto:' + this.toString();\n\t}\n});\n\n/**\n\tRepresents some plain text\n\t@class TEXT\n\t@extends MultiToken\n*/\nvar TEXT = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'text' });\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class NL\n\t@extends MultiToken\n*/\nvar NL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'nl' });\n\n/**\n\tRepresents a list of tokens making up a valid URL\n\t@class URL\n\t@extends MultiToken\n*/\nvar URL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'url',\n\tisLink: true,\n\n\t/**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@method href\n \t@param {String} protocol\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\tvar hasProtocol = false;\n\t\tvar hasSlashSlash = false;\n\t\tvar tokens = this.v;\n\t\tvar result = [];\n\t\tvar i = 0;\n\n\t\t// Make the first part of the domain lowercase\n\t\t// Lowercase protocol\n\t\twhile (tokens[i] instanceof _text.PROTOCOL) {\n\t\t\thasProtocol = true;\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Skip slash-slash\n\t\twhile (tokens[i] instanceof _text.SLASH) {\n\t\t\thasSlashSlash = true;\n\t\t\tresult.push(tokens[i].toString());\n\t\t\ti++;\n\t\t}\n\n\t\t// Lowercase all other characters in the domain\n\t\twhile (isDomainToken(tokens[i])) {\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Leave all other characters as they were written\n\t\tfor (; i < tokens.length; i++) {\n\t\t\tresult.push(tokens[i].toString());\n\t\t}\n\n\t\tresult = result.join('');\n\n\t\tif (!(hasProtocol || hasSlashSlash)) {\n\t\t\tresult = protocol + '://' + result;\n\t\t}\n\n\t\treturn result;\n\t},\n\thasProtocol: function hasProtocol() {\n\t\treturn this.v[0] instanceof _text.PROTOCOL;\n\t}\n});\n\nexports.Base = MultiToken;\nexports.MAILTOEMAIL = MAILTOEMAIL;\nexports.EMAIL = EMAIL;\nexports.NL = NL;\nexports.TEXT = TEXT;\nexports.URL = URL;","'use strict';\n\nexports.__esModule = true;\nexports.AMPERSAND = exports.CLOSEPAREN = exports.CLOSEANGLEBRACKET = exports.CLOSEBRACKET = exports.CLOSEBRACE = exports.OPENPAREN = exports.OPENANGLEBRACKET = exports.OPENBRACKET = exports.OPENBRACE = exports.WS = exports.TLD = exports.SYM = exports.UNDERSCORE = exports.SLASH = exports.MAILTO = exports.PROTOCOL = exports.QUERY = exports.POUND = exports.PLUS = exports.NUM = exports.NL = exports.LOCALHOST = exports.PUNCTUATION = exports.DOT = exports.COLON = exports.AT = exports.DOMAIN = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n\n/**\n\tAbstract class used for manufacturing text tokens.\n\tPass in the value this token represents\n\n\t@class TextToken\n\t@abstract\n*/\nvar TextToken = (0, _createTokenClass.createTokenClass)();\nTextToken.prototype = {\n\ttoString: function toString() {\n\t\treturn this.v + '';\n\t}\n};\n\nfunction inheritsToken(value) {\n\tvar props = value ? { v: value } : {};\n\treturn (0, _class.inherits)(TextToken, (0, _createTokenClass.createTokenClass)(), props);\n}\n\n/**\n\tA valid domain token\n\t@class DOMAIN\n\t@extends TextToken\n*/\nvar DOMAIN = inheritsToken();\n\n/**\n\t@class AT\n\t@extends TextToken\n*/\nvar AT = inheritsToken('@');\n\n/**\n\tRepresents a single colon `:` character\n\n\t@class COLON\n\t@extends TextToken\n*/\nvar COLON = inheritsToken(':');\n\n/**\n\t@class DOT\n\t@extends TextToken\n*/\nvar DOT = inheritsToken('.');\n\n/**\n\tA character class that can surround the URL, but which the URL cannot begin\n\tor end with. Does not include certain English punctuation like parentheses.\n\n\t@class PUNCTUATION\n\t@extends TextToken\n*/\nvar PUNCTUATION = inheritsToken();\n\n/**\n\tThe word localhost (by itself)\n\t@class LOCALHOST\n\t@extends TextToken\n*/\nvar LOCALHOST = inheritsToken();\n\n/**\n\tNewline token\n\t@class NL\n\t@extends TextToken\n*/\nvar NL = inheritsToken('\\n');\n\n/**\n\t@class NUM\n\t@extends TextToken\n*/\nvar NUM = inheritsToken();\n\n/**\n\t@class PLUS\n\t@extends TextToken\n*/\nvar PLUS = inheritsToken('+');\n\n/**\n\t@class POUND\n\t@extends TextToken\n*/\nvar POUND = inheritsToken('#');\n\n/**\n\tRepresents a web URL protocol. Supported types include\n\n\t* `http:`\n\t* `https:`\n\t* `ftp:`\n\t* `ftps:`\n\n\t@class PROTOCOL\n\t@extends TextToken\n*/\nvar PROTOCOL = inheritsToken();\n\n/**\n\tRepresents the start of the email URI protocol\n\n\t@class MAILTO\n\t@extends TextToken\n*/\nvar MAILTO = inheritsToken('mailto:');\n\n/**\n\t@class QUERY\n\t@extends TextToken\n*/\nvar QUERY = inheritsToken('?');\n\n/**\n\t@class SLASH\n\t@extends TextToken\n*/\nvar SLASH = inheritsToken('/');\n\n/**\n\t@class UNDERSCORE\n\t@extends TextToken\n*/\nvar UNDERSCORE = inheritsToken('_');\n\n/**\n\tOne ore more non-whitespace symbol.\n\t@class SYM\n\t@extends TextToken\n*/\nvar SYM = inheritsToken();\n\n/**\n\t@class TLD\n\t@extends TextToken\n*/\nvar TLD = inheritsToken();\n\n/**\n\tRepresents a string of consecutive whitespace characters\n\n\t@class WS\n\t@extends TextToken\n*/\nvar WS = inheritsToken();\n\n/**\n\tOpening/closing bracket classes\n*/\n\nvar OPENBRACE = inheritsToken('{');\nvar OPENBRACKET = inheritsToken('[');\nvar OPENANGLEBRACKET = inheritsToken('<');\nvar OPENPAREN = inheritsToken('(');\nvar CLOSEBRACE = inheritsToken('}');\nvar CLOSEBRACKET = inheritsToken(']');\nvar CLOSEANGLEBRACKET = inheritsToken('>');\nvar CLOSEPAREN = inheritsToken(')');\n\nvar AMPERSAND = inheritsToken('&');\n\nexports.Base = TextToken;\nexports.DOMAIN = DOMAIN;\nexports.AT = AT;\nexports.COLON = COLON;\nexports.DOT = DOT;\nexports.PUNCTUATION = PUNCTUATION;\nexports.LOCALHOST = LOCALHOST;\nexports.NL = NL;\nexports.NUM = NUM;\nexports.PLUS = PLUS;\nexports.POUND = POUND;\nexports.QUERY = QUERY;\nexports.PROTOCOL = PROTOCOL;\nexports.MAILTO = MAILTO;\nexports.SLASH = SLASH;\nexports.UNDERSCORE = UNDERSCORE;\nexports.SYM = SYM;\nexports.TLD = TLD;\nexports.WS = WS;\nexports.OPENBRACE = OPENBRACE;\nexports.OPENBRACKET = OPENBRACKET;\nexports.OPENANGLEBRACKET = OPENANGLEBRACKET;\nexports.OPENPAREN = OPENPAREN;\nexports.CLOSEBRACE = CLOSEBRACE;\nexports.CLOSEBRACKET = CLOSEBRACKET;\nexports.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\nexports.CLOSEPAREN = CLOSEPAREN;\nexports.AMPERSAND = AMPERSAND;","\"use strict\";\n\nexports.__esModule = true;\nexports.inherits = inherits;\nfunction inherits(parent, child) {\n\tvar props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\tvar extended = Object.create(parent.prototype);\n\tfor (var p in props) {\n\t\textended[p] = props[p];\n\t}\n\textended.constructor = child;\n\tchild.prototype = extended;\n\treturn child;\n}","'use strict';\n\nexports.__esModule = true;\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\nvar defaults = {\n\tdefaultProtocol: 'http',\n\tevents: null,\n\tformat: noop,\n\tformatHref: noop,\n\tnl2br: false,\n\ttagName: 'a',\n\ttarget: typeToTarget,\n\tvalidate: true,\n\tignoreTags: [],\n\tattributes: null,\n\tclassName: 'linkified' // Deprecated value - no default class will be provided in the future\n};\n\nexports.defaults = defaults;\nexports.Options = Options;\nexports.contains = contains;\n\n\nfunction Options(opts) {\n\topts = opts || {};\n\n\tthis.defaultProtocol = opts.hasOwnProperty('defaultProtocol') ? opts.defaultProtocol : defaults.defaultProtocol;\n\tthis.events = opts.hasOwnProperty('events') ? opts.events : defaults.events;\n\tthis.format = opts.hasOwnProperty('format') ? opts.format : defaults.format;\n\tthis.formatHref = opts.hasOwnProperty('formatHref') ? opts.formatHref : defaults.formatHref;\n\tthis.nl2br = opts.hasOwnProperty('nl2br') ? opts.nl2br : defaults.nl2br;\n\tthis.tagName = opts.hasOwnProperty('tagName') ? opts.tagName : defaults.tagName;\n\tthis.target = opts.hasOwnProperty('target') ? opts.target : defaults.target;\n\tthis.validate = opts.hasOwnProperty('validate') ? opts.validate : defaults.validate;\n\tthis.ignoreTags = [];\n\n\t// linkAttributes and linkClass is deprecated\n\tthis.attributes = opts.attributes || opts.linkAttributes || defaults.attributes;\n\tthis.className = opts.hasOwnProperty('className') ? opts.className : opts.linkClass || defaults.className;\n\n\t// Make all tags names upper case\n\tvar ignoredTags = opts.hasOwnProperty('ignoreTags') ? opts.ignoreTags : defaults.ignoreTags;\n\tfor (var i = 0; i < ignoredTags.length; i++) {\n\t\tthis.ignoreTags.push(ignoredTags[i].toUpperCase());\n\t}\n}\n\nOptions.prototype = {\n\t/**\n * Given the token, return all options for how it should be displayed\n */\n\tresolve: function resolve(token) {\n\t\tvar href = token.toHref(this.defaultProtocol);\n\t\treturn {\n\t\t\tformatted: this.get('format', token.toString(), token),\n\t\t\tformattedHref: this.get('formatHref', href, token),\n\t\t\ttagName: this.get('tagName', href, token),\n\t\t\tclassName: this.get('className', href, token),\n\t\t\ttarget: this.get('target', href, token),\n\t\t\tevents: this.getObject('events', href, token),\n\t\t\tattributes: this.getObject('attributes', href, token)\n\t\t};\n\t},\n\n\n\t/**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options. By default,\n */\n\tcheck: function check(token) {\n\t\treturn this.get('validate', token.toString(), token);\n\t},\n\n\n\t// Private methods\n\n\t/**\n * Resolve an option's value based on the value of the option and the given\n * params.\n * @param {String} key Name of option to use\n * @param operator will be passed to the target option if it's method\n * @param {MultiToken} token The token from linkify.tokenize\n */\n\tget: function get(key, operator, token) {\n\t\tvar optionValue = void 0,\n\t\t option = this[key];\n\t\tif (!option) {\n\t\t\treturn option;\n\t\t}\n\n\t\tswitch (typeof option === 'undefined' ? 'undefined' : _typeof(option)) {\n\t\t\tcase 'function':\n\t\t\t\treturn option(operator, token.type);\n\t\t\tcase 'object':\n\t\t\t\toptionValue = option.hasOwnProperty(token.type) ? option[token.type] : defaults[key];\n\t\t\t\treturn typeof optionValue === 'function' ? optionValue(operator, token.type) : optionValue;\n\t\t}\n\n\t\treturn option;\n\t},\n\tgetObject: function getObject(key, operator, token) {\n\t\tvar option = this[key];\n\t\treturn typeof option === 'function' ? option(operator, token.type) : option;\n\t}\n};\n\n/**\n * Quick indexOf replacement for checking the ignoreTags option\n */\nfunction contains(arr, value) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i] === value) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction noop(val) {\n\treturn val;\n}\n\nfunction typeToTarget(href, type) {\n\treturn type === 'url' ? '_blank' : null;\n}","module.exports = require('./lib/linkify-string').default;\n","/**\n * Copyright (c) 2014-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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\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}","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : ''\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && self.location.href ? self.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","import { Radio } from 'backbone';\r\nimport { EventFirehose } from 'libs/analytics/constants/EventFirehose';\r\nimport { GlobalChannels } from 'libs/analytics/constants/GlobalChannels';\r\nimport { AnalyticsEvent, AnalyticsDataPayload } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { AnalyticsEventType, ActionContext, EventVersion } from 'libs/analytics/interfaces';\r\n\r\nexport const Analytics = {\r\n\r\n /**\r\n * Push/emit all events along the analytics firehose\r\n * @param eventType\r\n * @param data Data to be passed to AnalyticsClient\r\n */\r\n log<TType extends AnalyticsEventType, TData extends AnalyticsDataPayload>\r\n (eventType: TType, data: TData, actionContext?: ActionContext, eventVersion?: EventVersion): void {\r\n const channel = Radio.channel(GlobalChannels.ANALYTICS);\r\n channel.trigger(EventFirehose.Inlet,\r\n new AnalyticsEvent<TType, TData>(eventType, data, actionContext, eventVersion));\r\n },\r\n};\r\n","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\n\r\nimport {\r\n LocationContext, EntityType, ActionContext, UserAction,\r\n AnalyticsOptions, ActionDescriptor, InteractionTypeDescriptor,\r\n SearchQueryType, InteractionType\r\n} from 'libs/analytics/interfaces';\r\nimport { ContextService } from 'libs/analytics/services/ContextService';\r\n\r\nimport { Analytics } from './Analytics';\r\n\r\nfunction getCurrentProductArea(): string {\r\n const { appLink } = ContextService.getCurrentContext();\r\n\r\n if (!_.isObject(appLink))\r\n Core.ErrorHelper.throw(new DevError('Applink does not exist. Check current context.'));\r\n\r\n return colonCaseToKebabCase(appLink.application);\r\n}\r\n\r\nfunction getActionContext(options: AnalyticsOptions = {}): ActionContext {\r\n const { location, entity, workflowPhase = null, descriptor = null } = options;\r\n\r\n if (!location)\r\n Core.ErrorHelper.throw(new DevError(`location must be set.`));\r\n\r\n if (!entity)\r\n Core.ErrorHelper.throw(new DevError(`entity must be set.`));\r\n\r\n return {\r\n productArea: getCurrentProductArea(),\r\n location,\r\n entity,\r\n descriptor,\r\n workflowPhase\r\n };\r\n}\r\n\r\nfunction isValidData(data: ObjectHash | ObjectHash[]): boolean {\r\n // When logging a collection, all child entities must be objects\r\n if (_.isArray(data) && _.every(data, (val: any) => _.isObject(val)))\r\n return true;\r\n\r\n if (_.isObject(data))\r\n return true;\r\n\r\n return false;\r\n}\r\n\r\nfunction getCurrentLocation(): string {\r\n return Core.LocationUtils.GetCurrentPath() + Core.LocationUtils.GetCurrentQueryString();\r\n}\r\n\r\n// For converting applink strings to kebab case e.g. \"content:updates\" -> \"content-updates\"\r\nfunction colonCaseToKebabCase(app: string): string {\r\n return app.replace(':', '-');\r\n}\r\n\r\nexport const AnalyticsHelper = {\r\n logUserAction(data: ObjectHash | ObjectHash[], analyticsOptions: AnalyticsOptions): void {\r\n if (!isValidData(data) || !_.isObject(analyticsOptions)) return;\r\n\r\n const { userAction, action, eventVersion } = AnalyticsHelper.buildUserActionEvent(analyticsOptions);\r\n\r\n Analytics.log(userAction, data, action, eventVersion);\r\n },\r\n\r\n logNavigate(appLink: Core.AppLink, options: ObjectHash): void {\r\n const data = {\r\n currentLocation: getCurrentLocation(),\r\n appLink,\r\n ...options\r\n };\r\n\r\n Analytics.log(UserAction.Navigate, data);\r\n },\r\n\r\n mergeOptions(baseOptions: AnalyticsOptions, newOptions: AnalyticsOptions): AnalyticsOptions {\r\n return _.extend({}, baseOptions, newOptions);\r\n },\r\n\r\n buildActionContext(options: AnalyticsOptions = {}): ActionContext {\r\n return getActionContext(options);\r\n },\r\n\r\n buildUserActionEvent(options: AnalyticsOptions = {}): ObjectHash {\r\n const { actionType, eventVersion } = options;\r\n\r\n const userAction: UserAction = actionType;\r\n const action: ActionContext = getActionContext(options);\r\n\r\n return { userAction, action, eventVersion };\r\n },\r\n\r\n buildCurrentLocation(): string {\r\n return getCurrentLocation();\r\n },\r\n\r\n /**\r\n * Search logging helpers\r\n */\r\n\r\n /**\r\n * Create a search event that is depenedent on whether we page loaded into search\r\n * or used the search bar directly.\r\n */\r\n buildSearchEvent(query: string, descriptor: ActionDescriptor): ObjectHash {\r\n return {\r\n data: { query },\r\n action: getActionContext({ entity: EntityType.Video, location: LocationContext.SearchBar, descriptor })\r\n };\r\n },\r\n\r\n buildInstantSearchEvent(query: string, suggestion: ObjectHash, source: string): ObjectHash {\r\n let entity;\r\n\r\n if (source === SearchQueryType.Series)\r\n entity = EntityType.Series;\r\n\r\n if (source === SearchQueryType.Folder)\r\n entity = EntityType.Folder;\r\n\r\n if (source === SearchQueryType.Tags)\r\n entity = EntityType.Tag;\r\n\r\n if (source === SearchQueryType.Video)\r\n entity = EntityType.Video;\r\n\r\n const data: ObjectHash = {\r\n instant: {},\r\n query\r\n };\r\n\r\n if (suggestion.id) data.instant.selectedId = suggestion.id;\r\n if (suggestion.name) data.instant.selectedName = suggestion.name;\r\n\r\n return {\r\n data,\r\n action: getActionContext({ entity, location: LocationContext.SearchBar })\r\n };\r\n },\r\n\r\n /**\r\n * Resources Helpers\r\n */\r\n\r\n /**\r\n * Map our general InteractionType to an appropriate anayltics descriptor type. \r\n * The reason we do this is to maintain a seperation between analytics metadata and\r\n * actual domain data.\r\n * @param type \r\n */\r\n mapInteractionType(type: InteractionType): InteractionTypeDescriptor {\r\n switch (type) {\r\n case InteractionType.DragDrop:\r\n return InteractionTypeDescriptor.DragDrop;\r\n\r\n case InteractionType.FileSelect:\r\n return InteractionTypeDescriptor.FileSelect;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { User, Config } from 'libs/analytics/interfaces';\r\nimport { EventFirehose } from 'libs/analytics/constants/EventFirehose';\r\nimport { GlobalChannels } from 'libs/analytics/constants/GlobalChannels';\r\nimport { Services } from 'libs/analytics/constants/Services';\r\nimport { BaseAnalyticsTransport } from 'libs/analytics/transport/EventTransport';\r\nimport { BaseAnalyticsClient } from 'libs/analytics/clients/BaseAnalyticsClient';\r\nimport { BaseAnalyticsEnricher } from 'libs/analytics/enrichers/BaseAnalyticsEnricher';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { ApplicationOptionsKey } from 'libs/analytics/constants/ApplicationOptionsKey';\r\n\r\nimport { CollectionApiClient } from 'libs/analytics/clients/CollectionApiClient';\r\n\r\nimport { AnalyticsHelper } from './AnalyticsHelper';\r\n\r\ninterface ApplicationOptions {\r\n user: User;\r\n config: Config;\r\n}\r\n\r\ntype AnalyticsClient = BaseAnalyticsClient | CollectionApiClient;\r\n\r\ninterface ClientConstructor<TClient extends AnalyticsClient> {\r\n new (options?: ObjectHash): TClient;\r\n}\r\n\r\ninterface EnricherConstructor<TEnricher extends BaseAnalyticsEnricher> {\r\n new (options?: ObjectHash): TEnricher;\r\n}\r\n\r\ninterface TransportContructor<TTransport extends BaseAnalyticsTransport> {\r\n new (options?: ObjectHash): TTransport;\r\n}\r\n\r\ntype AnalyticsCtorType<T> =\r\n T extends BaseAnalyticsEnricher ? EnricherConstructor<T> :\r\n T extends AnalyticsClient ? ClientConstructor<T>\r\n : null;\r\n\r\nexport class AnalyticsService extends Core.Service {\r\n private transport: BaseAnalyticsTransport;\r\n private clients: ObjectHash;\r\n private enrichers: ObjectHash;\r\n\r\n constructor(options: ApplicationOptions) {\r\n super();\r\n this.clients = {};\r\n this.enrichers = {};\r\n\r\n const viewModel = ViewModelService.get(ApplicationOptionsKey);\r\n viewModel.set(options);\r\n\r\n this.bindNavigationListener();\r\n }\r\n\r\n public get name(): string {\r\n return Services.Analytics;\r\n }\r\n\r\n public registerTransport<TTransport extends BaseAnalyticsTransport>\r\n (transportCtor: TransportContructor<TTransport>, transportOptions?: ObjectHash): this {\r\n this.transport = new transportCtor(transportOptions);\r\n this.bindTransportListeners();\r\n\r\n return this;\r\n }\r\n\r\n private bindTransportListeners(): void {\r\n this.listenTo(GlobalChannels.ANALYTICS, EventFirehose.Inlet, this.onEvent);\r\n }\r\n\r\n /**\r\n * Register analytics clients that will listen to events processed and\r\n * forwarded by the AnalyticsService.\r\n *\r\n * @param clients Single client or array of clients\r\n */\r\n public registerClient<TClient extends AnalyticsClient>\r\n (clientCtor: ClientConstructor<TClient>, clientOptions?: ObjectHash): this {\r\n this.validateConstructor<AnalyticsClient>(clientCtor as AnalyticsCtorType<AnalyticsClient>);\r\n\r\n this.clients[clientCtor.prototype.name] = clientCtor.prototype.name;\r\n this.transport.subscribe(new clientCtor(clientOptions));\r\n\r\n return this;\r\n }\r\n\r\n public registerEnricher<TEnricher extends BaseAnalyticsEnricher>\r\n (enricherCtor: EnricherConstructor<TEnricher>, enricherOptions?: ObjectHash): this {\r\n this.validateConstructor<BaseAnalyticsEnricher>(enricherCtor);\r\n\r\n const enricher = new enricherCtor(enricherOptions);\r\n this.enrichers[enricherCtor.name] = enricher;\r\n\r\n this.registerMiddleware(_.bind(enricher.enrich, enricher));\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Add any middleware/enrichers to be applied to ALL events here\r\n * before publishing to any analytics clients. enrichers may also\r\n * be used within each individual analyticsClient\r\n *\r\n * @param event AnalyticsEvent object\r\n */\r\n private onEvent(event: CoreAnalyticsType): void {\r\n this.executeMiddleware(event, (enrichedEvent: CoreAnalyticsType) => {\r\n this.transport.publish(enrichedEvent);\r\n });\r\n }\r\n\r\n private validateConstructor<TCtor extends BaseAnalyticsEnricher | AnalyticsClient>\r\n (ctor: AnalyticsCtorType<TCtor>): void {\r\n const name = ctor.prototype.name;\r\n\r\n if (!name)\r\n Core.ErrorHelper.throw(new DevError(`Classes registered with ${this.name} must have a unique name property.`));\r\n\r\n const isType = (type: string) => {\r\n return FunctionHelper.isFunction(ctor.prototype.isType) && ctor.prototype.isType(type);\r\n };\r\n\r\n if ((isType('BaseAnalyticsClient') || name === 'CollectionApiClient') && this.clients[name])\r\n Core.ErrorHelper.throw(\r\n new DevError(`A client class with the name: ${name} has already been registered with ${this.name}`)\r\n );\r\n\r\n if (isType('BaseAnalyticsEnricher') && this.enrichers[name])\r\n Core.ErrorHelper.throw(\r\n new DevError(`An enricher class named: ${name} has already been registered with ${this.name}`)\r\n );\r\n }\r\n\r\n // Based on node/express middleware: https://gist.github.com/darrenscerri/5c3b3dcbe4d370435cfa\r\n private registerMiddleware(fn: any): void {\r\n this.executeMiddleware = ((stack: any) => (ev: any, next: any) =>\r\n stack(ev, () => fn(ev, next)))(this.executeMiddleware);\r\n }\r\n\r\n private executeMiddleware(event: any, next: any): void {\r\n next(event);\r\n }\r\n\r\n private bindNavigationListener(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.URL_CHANGE, this.logNavigate);\r\n }\r\n\r\n private logNavigate(appLink: Core.AppLink, options: ObjectHash): void {\r\n AnalyticsHelper.logNavigate(appLink, options);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\n\r\nexport interface AnalyticsClientOptions extends Core.ServiceOptions {}\r\n\r\nexport class BaseAnalyticsClient extends Core.Service {\r\n public static readonly type: string = 'BaseAnalyticsClient';\r\n\r\n public constructor(options?: AnalyticsClientOptions) {\r\n super(options);\r\n }\r\n\r\n /**\r\n * Predicate to determine whether the event should be handled by the client.\r\n * \r\n * @param event\r\n */\r\n public shouldLog(event?: CoreAnalyticsType): boolean { return true; }\r\n\r\n /**\r\n * This function will be bound by the transport layer to the firehose outlet event\r\n * stream. All events that satify the shouldLog predicate will flow to this function.\r\n * Any client-specific data/manipulation can be added to the event object in \r\n * this function.\r\n * \r\n * @param event\r\n */\r\n public log(event: CoreAnalyticsType): void {}\r\n\r\n public isType(type: string): this is BaseAnalyticsClient {\r\n return type === BaseAnalyticsClient.type;\r\n }\r\n}","import 'whatwg-fetch';\r\nimport jsSHA from 'jssha/dist/sha1';\r\nimport { version as clientVersion } from '../../package.json';\r\n\r\nimport {\r\n IncomingEvent,\r\n CollectionEvent,\r\n PlatformData,\r\n CollectionEventUserData,\r\n CollectionEventMetadata,\r\n CollectionEventData\r\n} from 'libs/analytics/models/CollectionEvent';\r\n\r\nimport { UserAgentHelper } from 'libs/analytics/utils/UserAgentHelper';\r\nimport { TypeHelper } from 'libs/analytics/utils/TypeHelper';\r\n\r\nimport { HashObject } from 'libs/analytics/interfaces/HashObject';\r\nimport { RegionalUrl } from 'libs/analytics/interfaces/RegionalUrl';\r\nimport { Region } from 'libs/analytics/interfaces/Region';\r\nimport { User } from 'libs/analytics/interfaces/User';\r\n\r\nimport { CountryCode } from 'libs/analytics/enums/CountryCode';\r\nimport { RegionName } from 'libs/analytics/enums/RegionName';\r\n\r\nimport { Regions } from 'libs/analytics/constants/Regions';\r\nimport { CountryRegionMapping } from 'libs/analytics/constants/CountryRegionMapping';\r\n\r\nconst CLIENT_SECRET = 'zXJL9nOHxzDlMUDjiP41';\r\n\r\ninterface CollectionApiClientOptions {\r\n productName: string;\r\n productVersion: string;\r\n regionName: RegionName; // Region being logged from.\r\n collectionApiUrls: RegionalUrl;\r\n collectionApiClientId: string;\r\n getUser: () => Promise<User>;\r\n shouldLog?: (event: IncomingEvent) => boolean;\r\n formatData?: (event: IncomingEvent) => { [dataKey: string]: HashObject };\r\n}\r\n\r\n/**\r\n * A client for logging to CollectionApi.\r\n * It should have no library dependencies and anything that it references\r\n * should also have no library dependencies.\r\n */\r\nexport class CollectionApiClient {\r\n private options: CollectionApiClientOptions;\r\n\r\n public constructor(options: CollectionApiClientOptions) {\r\n this.options = options;\r\n this.initialize();\r\n }\r\n\r\n public initialize(): void {\r\n this.validateOptions();\r\n }\r\n\r\n public get name(): string {\r\n return 'CollectionApiClient';\r\n }\r\n\r\n public async log(event: IncomingEvent): Promise<void> {\r\n if (!this.shouldLog(event))\r\n return;\r\n\r\n this.validateEvent(event);\r\n\r\n await this.postData(await this.formatData(event));\r\n }\r\n\r\n private validateOptions(): void {\r\n if (!TypeHelper.isFunction(this.options.getUser))\r\n throw new Error('getUser option is required.');\r\n }\r\n\r\n private shouldLog(event: IncomingEvent): boolean {\r\n if (TypeHelper.isFunction(this.options.shouldLog))\r\n return this.options.shouldLog(event);\r\n\r\n return true;\r\n }\r\n\r\n private async postData(data: CollectionEvent): Promise<void> {\r\n const collectionApiUrl = await this.getRegionalUrl(this.options.collectionApiUrls);\r\n\r\n const body = JSON.stringify(data);\r\n\r\n const headers: HeadersInit = { 'Content-Type': 'application/json', ...this.getSignatureHeader(body) };\r\n\r\n // TODO Add error logging\r\n await fetch(`${collectionApiUrl}/v1/ingest`, {\r\n method: 'POST',\r\n mode: 'cors',\r\n headers,\r\n body\r\n });\r\n }\r\n\r\n private getSignatureHeader(body: string): any {\r\n const hash = new jsSHA('SHA-1', 'TEXT', { hmacKey: { value: CLIENT_SECRET, format: 'TEXT', encoding: 'UTF8' } });\r\n hash.update(body);\r\n\r\n return {\r\n 'cv-analytics-signature': `${this.options.collectionApiClientId}.${hash.getHash('B64')}`\r\n };\r\n }\r\n\r\n private async getRegionalUrl(urls: RegionalUrl): Promise<string> {\r\n const region = await this.getRegion();\r\n\r\n switch (region.systemName) {\r\n case RegionName.CvEuWest1:\r\n return urls.cvEuWest1;\r\n\r\n case RegionName.CvApSoutheast2:\r\n return urls.cvApSoutheast2;\r\n\r\n case RegionName.CvApSoutheast1:\r\n default:\r\n return urls.cvApSoutheast1;\r\n }\r\n }\r\n\r\n private validateEvent(event: IncomingEvent): void {\r\n if (typeof event.type !== 'string')\r\n throw new Error('Event type is required.');\r\n\r\n if (!TypeHelper.isObject(event.actionContext))\r\n throw new Error('Event actionContext is required.');\r\n\r\n if (!event.actionContext.entity)\r\n throw new Error('Event actionContext entity is required.');\r\n }\r\n\r\n private async formatData(event: IncomingEvent): Promise<CollectionEvent> {\r\n return {\r\n type: event.type,\r\n data: await this.getEventData(event),\r\n metadata: this.getEventMetadata(event)\r\n };\r\n }\r\n\r\n private async getEventData(event: IncomingEvent): Promise<CollectionEventData> {\r\n const action = event.actionContext;\r\n\r\n const user = await this.getUserData();\r\n\r\n const baseEventData = {\r\n user,\r\n action,\r\n platform: this.getPlatformMetadata(),\r\n product: { name: this.options.productName, version: this.options.productVersion }\r\n };\r\n\r\n const entityData = this.extractData(event);\r\n\r\n const reservedKeys = Object.keys(baseEventData).map(key => key.toLowerCase());\r\n const dataKeys = Object.keys(entityData).map(key => key.toLowerCase());\r\n\r\n reservedKeys.forEach(key => {\r\n if (dataKeys.includes(key))\r\n throw Error(`${key} is a reserved key.`);\r\n });\r\n\r\n return {\r\n ...baseEventData,\r\n ...entityData\r\n };\r\n }\r\n\r\n private extractData(event: IncomingEvent): { [dataKey: string]: HashObject | HashObject[] } {\r\n if (TypeHelper.isFunction(this.options.formatData))\r\n return this.options.formatData(event);\r\n\r\n return { [event.actionContext.entity]: event.data };\r\n }\r\n\r\n private async getUserData(): Promise<CollectionEventUserData> {\r\n const user = await this.options.getUser();\r\n\r\n if (!user?.id)\r\n return;\r\n\r\n return {\r\n id: user.id,\r\n role: user.role,\r\n customer: {\r\n id: user.customerId,\r\n country: user.countryCode as CountryCode,\r\n region: await this.getRegion()\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Until region is added to the user Auth claims, we use countryCode to obtain region.\r\n */\r\n private async getRegion(): Promise<Region> {\r\n const user = await this.options.getUser();\r\n\r\n const userCountryCode = user?.countryCode?.toLowerCase() as CountryCode;\r\n\r\n const regionName = userCountryCode\r\n ? CountryRegionMapping[userCountryCode]\r\n : this.options.regionName;\r\n\r\n return this.getRegionByName(regionName);\r\n }\r\n\r\n private getPlatformMetadata(): PlatformData {\r\n return {\r\n browser: UserAgentHelper.getBrowser(),\r\n os: UserAgentHelper.getOperatingSystem(),\r\n request: {\r\n url: window.location.href,\r\n referrer: document.referrer\r\n },\r\n screenResolution: `${window.screen.width}x${window.screen.height}`\r\n };\r\n }\r\n\r\n private getEventMetadata(event: IncomingEvent): CollectionEventMetadata {\r\n return {\r\n client: {\r\n name: `${this.name}.ts`,\r\n version: clientVersion,\r\n region: this.getRegionByName(this.options.regionName)\r\n },\r\n timestamp: (new Date()).toISOString(),\r\n eventVersion: event.eventVersion\r\n };\r\n }\r\n\r\n private getRegionByName(name: RegionName): Region {\r\n let region: Region;\r\n\r\n Object.values(Regions).forEach(r => {\r\n if (r.systemName === name)\r\n region = r;\r\n });\r\n\r\n return region;\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\n\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { BaseAnalyticsClient } from './BaseAnalyticsClient';\r\n\r\nexport class DebuggerClient extends BaseAnalyticsClient {\r\n\r\n public get name(): string {\r\n return 'DebuggerClient';\r\n }\r\n\r\n public shouldLog(): boolean {\r\n return EnvironmentVariables.isDevelopment;\r\n }\r\n\r\n public log(event: CoreAnalyticsType): void {\r\n const output: any = _.clone(event);\r\n\r\n for (let prop in event) {\r\n let value = output[prop];\r\n\r\n if (value instanceof Core.Model || value instanceof Core.Collection)\r\n output[prop] = value.toJSON();\r\n }\r\n\r\n console.log('Event Debugger: ', output);\r\n }\r\n}\r\n","export const ApplicationOptionsKey = 'application:options';","import { CountryCode } from 'libs/analytics/enums/CountryCode';\r\nimport { RegionName } from 'libs/analytics/enums/RegionName';\r\n\r\nexport const CountryRegionMapping = {\r\n [CountryCode.AU]: RegionName.CvApSoutheast1,\r\n [CountryCode.NZ]: RegionName.CvApSoutheast2,\r\n [CountryCode.UK]: RegionName.CvEuWest1\r\n};\r\n","export enum EventFirehose {\r\n Inlet = 'event:inlet',\r\n Outlet = 'event:outlet',\r\n}","export const GlobalChannels = {\r\n ANALYTICS: 'global:analytics'\r\n};","import { Region } from 'libs/analytics/interfaces/Region';\r\nimport { RegionName } from 'libs/analytics/enums/RegionName';\r\n\r\nconst CvApSoutheast1: Region = {\r\n displayName: 'ClickView Asia Pacific (AU)',\r\n systemName: RegionName.CvApSoutheast1\r\n};\r\n\r\nconst CvApSoutheast2: Region = {\r\n displayName: 'ClickView Asia Pacific (NZ)',\r\n systemName: RegionName.CvApSoutheast2\r\n};\r\n\r\nconst CvEuWest1: Region = {\r\n displayName: 'ClickView EU West (UK)',\r\n systemName: RegionName.CvEuWest1\r\n};\r\n\r\nexport const Regions = {\r\n CvApSoutheast1,\r\n CvApSoutheast2,\r\n CvEuWest1\r\n};\r\n","export enum Services {\r\n Analytics = 'AnalyticsService',\r\n Context = 'ContextService',\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\n\r\nexport interface AnalyticsEnricherOptions {}\r\n\r\nexport class BaseAnalyticsEnricher extends Core.Service {\r\n public static readonly type: string = 'BaseAnalyticsEnricher';\r\n\r\n /**\r\n * Enriches the current event with additional data.\r\n * All events that satify the shouldEnrich predicate will flow to this function.\r\n * \r\n * This function is registered as middleware within the AnalyticsService and pass\r\n * the event object being modifed on to subsequent middleware callbacks (other analytics);\r\n * \r\n * @param event \r\n * @param next \r\n */\r\n public enrich<TEvent extends CoreAnalyticsType>(event: TEvent, next: Function): void {}\r\n\r\n public isType(type: string): this is BaseAnalyticsEnricher {\r\n return type === BaseAnalyticsEnricher.type;\r\n }\r\n}","import { ObjectHash } from 'backbone';\r\nimport * as moment from 'moment';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\r\n\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { BaseAnalyticsEnricher, AnalyticsEnricherOptions } from './BaseAnalyticsEnricher';\r\n\r\nexport interface CoreContextEnricherOptions extends AnalyticsEnricherOptions {\r\n productName: string;\r\n productVersion: string;\r\n}\r\n\r\nexport class CoreContextEnricher extends BaseAnalyticsEnricher {\r\n private productName: string;\r\n private productVersion: string;\r\n\r\n constructor(options: CoreContextEnricherOptions) {\r\n super(options);\r\n this.productName = options.productName;\r\n this.productVersion = options.productVersion;\r\n }\r\n\r\n public get name(): string {\r\n return 'CoreContextEnricher';\r\n }\r\n\r\n private shouldEnrich(event: CoreAnalyticsType): boolean {\r\n return true;\r\n }\r\n\r\n public enrich(event: CoreAnalyticsType, next: any): void {\r\n if (!this.shouldEnrich(event))\r\n next(event);\r\n\r\n event.enrich('coreContext', this.getCoreContext());\r\n next(event);\r\n }\r\n\r\n private getCoreContext(): ObjectHash {\r\n return {\r\n timestamp: this.getTimestamp(),\r\n product: this.getProductInfo(),\r\n request: this.getRequestInfo(),\r\n client: this.getClientInfo()\r\n };\r\n }\r\n\r\n /**\r\n * Get current timestamp in UTC\r\n */\r\n private getTimestamp(): string {\r\n return moment.utc().toISOString();\r\n }\r\n\r\n private getProductInfo(): ObjectHash {\r\n return {\r\n name: this.productName,\r\n version: this.productVersion\r\n };\r\n }\r\n\r\n private getRequestInfo(): ObjectHash {\r\n return {\r\n referrer: Core.LocationUtils.GetCurrentReferrer(),\r\n requestUrl: Core.LocationUtils.GetCurrentUrl(),\r\n };\r\n }\r\n\r\n private getClientInfo(): ObjectHash {\r\n const osPlatform = UserAgentHelper.getOperatingSystem();\r\n const browserPlatform = UserAgentHelper.getBrowser();\r\n\r\n return {\r\n os: osPlatform.os,\r\n osVersion: osPlatform.version,\r\n browser: browserPlatform.browser,\r\n browserVersion: browserPlatform.version,\r\n screenResolution : `${window.screen.width}x${window.screen.height}`\r\n };\r\n }\r\n}\r\n\r\n","import { ObjectHash } from 'backbone';\r\n\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\n\r\nimport { User } from 'libs/analytics/interfaces';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { ApplicationOptionsKey } from 'libs/analytics/constants/ApplicationOptionsKey';\r\nimport { BaseAnalyticsEnricher } from './BaseAnalyticsEnricher';\r\n\r\nexport class UserDataEnricher extends BaseAnalyticsEnricher {\r\n private user: User;\r\n\r\n public get name(): string {\r\n return 'UserDataEnricher';\r\n }\r\n\r\n public initialize(): void {\r\n this.user = ViewModelService.get(ApplicationOptionsKey).get('user');\r\n }\r\n\r\n private shouldEnrich(event: CoreAnalyticsType): boolean {\r\n return true;\r\n }\r\n\r\n public enrich(event: CoreAnalyticsType, next: Function): void {\r\n if (!this.shouldEnrich(event))\r\n next(event);\r\n\r\n event.enrich('user', this.getUser(this.user));\r\n next(event);\r\n }\r\n\r\n private getUser(user: User): ObjectHash {\r\n return {\r\n country: user.countryCode,\r\n customerId: user.customerId,\r\n id: user.id,\r\n role: user.role\r\n };\r\n }\r\n}\r\n\r\n","export enum CountryCode {\r\n AU = 'au',\r\n NZ = 'nz',\r\n UK = 'uk'\r\n}","export enum RegionName {\r\n CvApSoutheast1 = 'cv-ap-southeast-1',\r\n CvApSoutheast2 = 'cv-ap-southeast-2',\r\n CvEuWest1 = 'cv-eu-west-1'\r\n}","export type AnalyticsEventType = UserAction;\r\n\r\nexport interface AnalyticsOptions {\r\n actionType?: UserAction;\r\n productArea?: string;\r\n entity?: EntityType;\r\n location?: LocationContext;\r\n descriptor?: ActionDescriptor;\r\n workflowPhase?: WorkflowPhase;\r\n eventVersion?: EventVersion;\r\n}\r\n\r\nexport interface ActionContext {\r\n productArea: string;\r\n entity: EntityType;\r\n location: LocationContext;\r\n descriptor: ActionDescriptor;\r\n workflowPhase: WorkflowPhase;\r\n}\r\n\r\n/**\r\n * All events recorded are captured within the following action names\r\n */\r\nexport enum UserAction {\r\n /**\r\n * The following events are listed in CollectionApi\r\n */\r\n Stream = 'cv_product_stream',\r\n WebPlayerStream = 'cv_product_webplayer_stream',\r\n Login = 'cv_product_login',\r\n LoginSsoRedirect = 'cv_product_login_sso_redirect',\r\n LoginFailed = 'cv_product_login_failed',\r\n Search = 'cv_product_search',\r\n InstantSearch = 'cv_product_search',\r\n SearchEmptyResult = 'cv_product_search_empty_result',\r\n Filter = 'cv_product_search_filter',\r\n SearchLanding = 'cv_product_search_landing',\r\n Share = 'cv_product_share',\r\n WorkspaceAdd = 'cv_product_tv_add',\r\n\r\n /**\r\n * The following events are unlisted in CollectionApi\r\n */\r\n Rename = 'cv_product_rename',\r\n Move = 'cv_product_move',\r\n Sort = 'cv_product_sort',\r\n Create = 'cv_product_create',\r\n Delete = 'cv_product_delete',\r\n Associate = 'cv_product_associate',\r\n Dissociate = 'cv_product_dissociate',\r\n Edit = 'cv_product_edit',\r\n Approve = 'cv_product_approve',\r\n Reject = 'cv_product_reject',\r\n Disable = 'cv_product_disable',\r\n Upload = 'cv_product_upload',\r\n Download = 'cv_product_download',\r\n Navigate = 'cv_product_navigate',\r\n Click = 'cv_product_click',\r\n Suggest = 'cv_product_suggest',\r\n EditAssoc = 'cv_product_edit_assoc',\r\n Play = 'cv_product_play',\r\n Favourite = 'cv_product_favourite',\r\n Follow = 'cv_product_follow',\r\n Prefer = 'cv_product_prefer',\r\n\r\n SetAccess = 'cv_product_set_access',\r\n AddToLocalCache = 'cv_product_add_to_lc',\r\n\r\n\r\n /**\r\n * Capture migration specific events in dedicated collection.\r\n * The assumption here is that at some point in the distant future\r\n * we will not longer care about these collections and it doesn't need to\r\n * be part of the more general collections set.\r\n */\r\n ResolveWarning = 'cv_product_resolve_warning',\r\n DismissWarning = 'cv_product_dismiss_warning'\r\n}\r\n\r\nexport enum EntityType {\r\n Folder = 'folder',\r\n Video = 'video',\r\n Rating = 'rating',\r\n Series = 'series',\r\n Library = 'library',\r\n Resource = 'resource',\r\n Tag = 'tag',\r\n Subtitle = 'subtitle',\r\n Chapter = 'chapter',\r\n Restriction = 'restriction',\r\n Interactive = 'interactive',\r\n PDF = 'pdf',\r\n CustomerSetting = 'customer_setting',\r\n StaffRequest = 'staff_request',\r\n Logo = 'logo',\r\n Pagination = 'pagination',\r\n Thumbnail = 'thumbnail',\r\n Banner = 'banner',\r\n Link = 'link', // Note: only use this for events on `Link` object types. Not just any anchor tag\r\n Playlist = 'playlist',\r\n Person = 'person',\r\n Company = 'company',\r\n Classroom = 'classroom',\r\n ClassroomGroup = 'classroom_group',\r\n Classification = 'classification',\r\n ShareLink = 'share_link',\r\n Upload = 'upload',\r\n SearchResults = 'search_results',\r\n Audience = 'audience',\r\n\r\n /**\r\n * `user` cannot be the value here because when we log these events to Snowflake, the event object\r\n * puts the current user's data under the `user` key. If we were to log events with `user` as the entity\r\n * name, this data would be overwritten and lost.\r\n */\r\n User = 'target_user',\r\n}\r\n\r\nexport enum LocationContext {\r\n TopNav = 'top_nav',\r\n LeftNav = 'left_nav',\r\n Popup = 'popup',\r\n Banner = 'banner',\r\n VideoList = 'video_list',\r\n VideoListItem = 'video_list_item',\r\n VideoListHeader = 'video_header',\r\n VideoThumbnail = 'video_thumbnail',\r\n VideoItemPreview = 'video_item_preview',\r\n VideoDetails = 'video_details',\r\n VideoDetailsHeader = 'video_details_header',\r\n EditVideoDetails = 'edit_video_details',\r\n EditVideoChapters = 'edit_video_chapters',\r\n EditVideoResources = 'edit_video_resources',\r\n VideoUpload = 'video_upload',\r\n VideoRequest = 'video_request',\r\n Pagination = 'pagination',\r\n SearchBar = 'search_bar',\r\n InstantSearch = 'instant_search',\r\n SearchFilters = 'search_filters',\r\n LibraryHeader = 'library_header',\r\n LibraryTiles = 'library_tiles',\r\n StaffRequestDetails = 'staff_request_details',\r\n SubFolderList = 'sub_folder_list',\r\n AwaitingReviewVideoListHeader = 'awaiting_review_video_list_header',\r\n AwaitingReviewVideoItem = 'awaiting_review_video_item',\r\n PastReleasesHeader = 'past_releases_header',\r\n MigrationWarnings = 'migration_warnings',\r\n PlaylistListHeader = 'playlist_list_header',\r\n PlaylistListItem = 'playlist_list_item',\r\n\r\n TeacherManager = 'teacher_manager',\r\n TeacherManagerListItem = 'teacher_manager_list_item',\r\n StudentManager = 'student_manager',\r\n StudentManagerListItem = 'student_manager_list_item',\r\n\r\n ClassroomsList = 'classrooms_list',\r\n ClassroomsListItem = 'classrooms_list_item',\r\n ClassroomOverview = 'classroom_overview',\r\n ClassroomOverviewStudentListItem = 'classroom_overview_student_list_item',\r\n ManageClassroomStudents = 'manage_classroom_students',\r\n ManageClassroomStudentListItem = 'manage_classroom_student_list_item',\r\n ManageClassroomGroups = 'manage_classroom_groups',\r\n ManageClassroomGroupListItem = 'manage_classroom_group_list_item',\r\n\r\n PlayPage = 'play_page',\r\n FloatingPlayer = 'floating_player',\r\n\r\n ContentUpdatesClassificationBanner = 'content_updates_classification_banner',\r\n PreferencesSettings = 'preferences_settings',\r\n\r\n MyUploads = 'my_uploads'\r\n}\r\n\r\nexport enum WorkflowPhase {\r\n Start = 'start',\r\n Complete = 'complete',\r\n Save = 'save',\r\n Discard = 'discard',\r\n}\r\n\r\n/**\r\n * Action descriptor sub-types\r\n */\r\nexport enum PageDescriptor {\r\n PageLoad = 'page_load'\r\n}\r\n\r\nexport enum OperationDescriptor {\r\n Single = 'single',\r\n Bulk = 'bulk',\r\n All = 'all'\r\n}\r\n\r\nexport enum SortDescriptor {\r\n ProductionYear = 'production_year',\r\n Alphabetical = 'alphabetical'\r\n}\r\n\r\nexport enum FilterDescriptor {\r\n Content = 'content',\r\n Quality = 'quality',\r\n Duration = 'duration',\r\n Reset = 'reset'\r\n}\r\n\r\nexport enum DirectSearchDescriptor {\r\n Submit = 'submit',\r\n ShowAll = 'show_all',\r\n Recent = 'recent',\r\n SearchIcon = 'search_icon',\r\n}\r\n\r\nexport enum PlaybackDescriptor {\r\n Start = 'start',\r\n Finish = 'finish',\r\n Terminate = 'terminate',\r\n Play = 'play',\r\n Pause = 'pause',\r\n Playback = 'playback',\r\n NextChapter = 'next_chapter',\r\n PreviousChapter = 'previous_chapter',\r\n FullScreenEnter = 'full_screen_enter',\r\n FullScreenExit = 'full_screen_exit',\r\n}\r\n\r\nexport enum ClickDescriptor {\r\n TogglePreview = 'toggle_preview',\r\n NavigateHome = 'navigate_home',\r\n OpenInStaffView = 'open_in_staff_view',\r\n Thumbnail = 'thumbnail',\r\n Title = 'title',\r\n ToggleHideValidListings = 'toggle_hide_valid_listings',\r\n LaunchImmersiveReader = 'launch_immersive_reader',\r\n CopyEmbedHtml = 'copy_embed_html',\r\n Close = 'close',\r\n Open = 'open'\r\n}\r\n\r\nexport enum CustomerSettingDescriptor {\r\n LibraryReview = 'library_review'\r\n}\r\n\r\nexport enum InteractionTypeDescriptor {\r\n FileSelect = 'file_select',\r\n DragDrop = 'drag_drop',\r\n}\r\n\r\nexport enum SuggestionDescriptor {\r\n Edit = 'edit'\r\n}\r\n\r\nexport enum AssocDescriptor {\r\n Image = 'image',\r\n User = 'user'\r\n}\r\n\r\nexport enum ToggleDescriptor {\r\n On = 'on',\r\n Off = 'off'\r\n}\r\n\r\n/**\r\n * Action descriptors give further context to UserActions\r\n */\r\nexport type ActionDescriptor = OperationDescriptor |\r\n SortDescriptor |\r\n FilterDescriptor |\r\n DirectSearchDescriptor |\r\n PageDescriptor |\r\n PlaybackDescriptor |\r\n CustomerSettingDescriptor |\r\n SuggestionDescriptor |\r\n InteractionTypeDescriptor |\r\n AssocDescriptor |\r\n ClickDescriptor |\r\n ToggleDescriptor;\r\n\r\n/**\r\n * Placeholder values to be used in circumstances where we need\r\n * to simply signify that a change has occurred. Particularly if it is\r\n * being collected as a set of other changes.\r\n */\r\nexport enum EventDefaultValue {\r\n EntityRemoved = 'cv_entity_removed',\r\n ValueUpdated = 'cv_value_updated'\r\n}\r\n\r\nexport enum InteractionType {\r\n FileSelect = 'file_select',\r\n DragDrop = 'drag_drop'\r\n}\r\n\r\nexport enum SearchQueryType {\r\n Video = 'videos',\r\n Folder = 'categories',\r\n Series = 'series',\r\n Tags = 'tags'\r\n}\r\n\r\nexport enum EventVersion {\r\n V1 = 1\r\n}","export * from './AnalyticsTypes';\r\nexport * from './User';\r\nexport * from './Config';\r\nexport * from './Owner';\r\nexport * from './Folder';\r\nexport * from './HashObject';\r\nexport * from './Playlist';\r\nexport * from './Resource';\r\nexport * from './Rating';\r\nexport * from './Region';\r\nexport * from './RegionalUrl';\r\nexport * from './Series';\r\nexport * from './Subtitle';\r\nexport * from './Video';\r\nexport * from './primitives/BaseObject';","import { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { ObjectHash } from 'backbone';\r\nimport { AnalyticsEventType, ActionContext } from 'libs/analytics/interfaces';\r\nimport { EventVersion } from 'libs/analytics/interfaces';\r\n\r\ninterface Enrichment {\r\n [prop: string]: string;\r\n}\r\n\r\nexport interface DataObjectPayload extends ObjectHash {}\r\nexport interface DataCollectionPayload extends Array<ObjectHash> {}\r\n\r\nexport type AnalyticsDataPayload = DataObjectPayload | DataCollectionPayload;\r\n\r\nconst DEFAULT_EVENT_VERSION = EventVersion.V1;\r\n\r\n/**\r\n * Base AnalyticsEvent Object. \r\n * Acts as a wrapper for our events, encapsulating the event type\r\n * and a data payload.\r\n */\r\nexport class AnalyticsEvent<TType extends AnalyticsEventType, TPayload extends AnalyticsDataPayload> {\r\n public type: TType;\r\n public data: TPayload;\r\n public actionContext: ActionContext;\r\n public eventVersion: EventVersion;\r\n\r\n public constructor(type: TType, data: TPayload, actionContext?: ActionContext, eventVersion?: EventVersion) {\r\n this.type = type;\r\n this.data = data;\r\n this.actionContext = actionContext;\r\n this.eventVersion = eventVersion || DEFAULT_EVENT_VERSION;\r\n }\r\n\r\n /**\r\n * Utility function that allows us to create type guards.\r\n * @param type EventType\r\n */\r\n public isType(type: TType): this is TType {\r\n return type === this.type;\r\n }\r\n\r\n /**\r\n * Mix different enrichments into the base AnalyticsEvent object \r\n * to keep it as flat as possible.\r\n * \r\n * @param key Top level enrichment name \r\n * @param value Either a string or set of KV Pairs\r\n */\r\n public enrich(key: string, value: string | Enrichment ): void {\r\n this.validateKey(key);\r\n\r\n (this as any)[key] = value;\r\n }\r\n\r\n public get(key: string): string | Enrichment {\r\n if (!key)\r\n return;\r\n\r\n if (!(this as any)[key])\r\n return;\r\n\r\n return (this as any)[key];\r\n }\r\n\r\n /**\r\n * Check that the incoming enrichment doesn't clash with\r\n * a pre-existing enrichement. \r\n * \r\n * @param key \r\n */\r\n private validateKey(key: string): void {\r\n if (key === 'type' || key === 'data')\r\n Core.ErrorHelper.throw(new DevError(`${key} is not a valid key`));\r\n\r\n if ((this as any)[key])\r\n Core.ErrorHelper.throw(new DevError(`Event already contains an enrichment named ${key}`));\r\n }\r\n}\r\n\r\n/**\r\n * Alias our analytics type to make our function signatures and typings a little cleaner\r\n */\r\nexport type CoreAnalyticsType = AnalyticsEvent<AnalyticsEventType, AnalyticsDataPayload>;","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nimport { Services } from 'libs/analytics/constants/Services';\r\n\r\ninterface ApplicationContext {\r\n pageLoad: boolean;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nexport interface AppContextServiceOptions {\r\n}\r\n\r\nconst NAV_HISTORY_LENGTH = 5;\r\n\r\nexport class StaticContextService extends Core.Service {\r\n private static instance: StaticContextService;\r\n\r\n private contextHistory: ApplicationContext[] = [];\r\n\r\n public get name(): string {\r\n return Services.Context;\r\n }\r\n\r\n public static get Instance(): StaticContextService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.setContext);\r\n }\r\n\r\n private setContext(appLink: Core.AppLink): void {\r\n if (this.contextHistory.length >= NAV_HISTORY_LENGTH)\r\n this.contextHistory.unshift();\r\n\r\n this.contextHistory.push({\r\n pageLoad: !this.contextHistory.length,\r\n appLink\r\n });\r\n }\r\n\r\n public getCurrentContext(): ApplicationContext {\r\n if (!this.contextHistory.length) return;\r\n return this.contextHistory[this.contextHistory.length - 1];\r\n }\r\n\r\n public fromPageLoad(): boolean {\r\n return this.contextHistory.length === 1;\r\n }\r\n}\r\n\r\nexport const ContextService: StaticContextService = new StaticContextService();","import * as _ from 'underscore';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { EventFirehose } from 'libs/analytics/constants/EventFirehose';\r\nimport { BaseAnalyticsClient } from 'libs/analytics/clients/BaseAnalyticsClient';\r\nimport { CollectionApiClient } from 'libs/analytics/clients/CollectionApiClient';\r\n\r\ntype AnalyticsClient = BaseAnalyticsClient | CollectionApiClient;\r\n\r\n/**\r\n * TransportLayer is responsible for communicating outgoing events from the\r\n * AnalyticsService to registered AnalyticsClients.\r\n */\r\ninterface TransportLayer {\r\n publish(event: CoreAnalyticsType): void;\r\n subscribe<TClient extends AnalyticsClient>(client: TClient): void;\r\n}\r\n\r\nexport abstract class BaseAnalyticsTransport extends Marionette.Object implements TransportLayer {\r\n public abstract publish(event: CoreAnalyticsType): void;\r\n public abstract subscribe(client: AnalyticsClient): void;\r\n}\r\n\r\n/**\r\n * EventTransport will utilise Backbone.Radio to emit events.\r\n */\r\nexport class EventTransport extends BaseAnalyticsTransport {\r\n\r\n public get name(): string {\r\n return 'EventTransport';\r\n }\r\n\r\n public get channelName(): string {\r\n return 'event:transport';\r\n }\r\n\r\n /**\r\n * Publish an event to all AnalyticsClients\r\n * \r\n * @param event Outgoing event object \r\n */\r\n public publish(event: CoreAnalyticsType): void {\r\n const channel = this.getChannel();\r\n channel.trigger(EventFirehose.Outlet, event);\r\n }\r\n\r\n /**\r\n * Subscribe the client to all outgoing events emitted from the AnalyticsService.\r\n * All events will be recieved via the client's exposed eventHandler. Any specific \r\n * event filtering or custom enrichment should occur within a client.\r\n * \r\n * @param client AnalyticsClient \r\n */\r\n public subscribe(client: AnalyticsClient): void {\r\n const baseAnalyticsClient = client as BaseAnalyticsClient;\r\n\r\n const logEvent = (event: any) => {\r\n if (FunctionHelper.isFunction(baseAnalyticsClient.shouldLog) && !baseAnalyticsClient.shouldLog(event))\r\n return;\r\n\r\n client.log(event);\r\n };\r\n\r\n if (_.isFunction(baseAnalyticsClient.listenTo))\r\n baseAnalyticsClient.listenTo(this.getChannel(), EventFirehose.Outlet, logEvent);\r\n else\r\n this.listenTo(this.getChannel(), EventFirehose.Outlet, logEvent);\r\n }\r\n}","import { IncomingEvent } from 'libs/analytics/models/CollectionEvent';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\n\r\nimport { HashObject, UserAction } from 'libs/analytics/interfaces';\r\n\r\nimport { EventWhitelistHelper, EventWhitelistHash } from 'libs/analytics/utils/EventWhitelistHelper';\r\nimport { DataFormatHelper, DataFormatterHash } from 'libs/analytics/utils/DataFormatHelper';\r\nimport { VideoDataFormatHelper } from 'libs/analytics/utils/VideoDataFormatHelper';\r\nimport { UploadDataFormatHelper } from 'libs/analytics/utils/UploadDataFormatHelper';\r\nimport { TypeHelper } from 'libs/analytics/utils/TypeHelper';\r\n\r\nconst eventWhitelist: EventWhitelistHash = {\r\n // Basic navigation\r\n [UserAction.Navigate]: EventWhitelistHelper.restrict,\r\n [UserAction.Click]: EventWhitelistHelper.allow,\r\n\r\n // Search\r\n [UserAction.Search]: EventWhitelistHelper.allow,\r\n [UserAction.InstantSearch]: EventWhitelistHelper.allow,\r\n\r\n // Watch/playback\r\n [UserAction.Play]: EventWhitelistHelper.allow,\r\n [UserAction.Stream]: EventWhitelistHelper.allow,\r\n\r\n // Complex actions\r\n [UserAction.Rename]: EventWhitelistHelper.allow,\r\n [UserAction.Move]: EventWhitelistHelper.allow,\r\n [UserAction.Create]: EventWhitelistHelper.allow,\r\n [UserAction.Delete]: EventWhitelistHelper.allow,\r\n [UserAction.Associate]: EventWhitelistHelper.allow,\r\n [UserAction.Dissociate]: EventWhitelistHelper.allow,\r\n\r\n [UserAction.Filter]: EventWhitelistHelper.allow,\r\n [UserAction.Sort]: EventWhitelistHelper.allow,\r\n\r\n [UserAction.Approve]: EventWhitelistHelper.allow,\r\n [UserAction.Reject]: EventWhitelistHelper.allow,\r\n [UserAction.Disable]: EventWhitelistHelper.allow,\r\n\r\n [UserAction.Upload]: EventWhitelistHelper.allow,\r\n [UserAction.Download]: EventWhitelistHelper.restrict,\r\n\r\n [UserAction.SetAccess]: EventWhitelistHelper.allow,\r\n [UserAction.AddToLocalCache]: EventWhitelistHelper.restrict,\r\n [UserAction.Share]: EventWhitelistHelper.allow,\r\n [UserAction.Edit]: EventWhitelistHelper.allow,\r\n [UserAction.Suggest]: EventWhitelistHelper.allow,\r\n\r\n // Migration events\r\n [UserAction.ResolveWarning]: EventWhitelistHelper.allow,\r\n [UserAction.DismissWarning]: EventWhitelistHelper.allow,\r\n\r\n [UserAction.EditAssoc]: EventWhitelistHelper.allow\r\n};\r\n\r\nconst dataFormatters: DataFormatterHash = {\r\n [UserAction.Search]: DataFormatHelper.passthrough,\r\n [UserAction.InstantSearch]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.Play]: DataFormatHelper.passthrough,\r\n [UserAction.Stream]: VideoDataFormatHelper.getLegacyVideoData,\r\n\r\n [UserAction.Click]: DataFormatHelper.passthrough,\r\n [UserAction.Filter]: DataFormatHelper.passthrough,\r\n [UserAction.Sort]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.SetAccess]: DataFormatHelper.passthrough,\r\n [UserAction.Approve]: DataFormatHelper.passthrough,\r\n [UserAction.Reject]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.Create]: DataFormatHelper.passthrough,\r\n [UserAction.Delete]: DataFormatHelper.passthrough,\r\n [UserAction.Rename]: DataFormatHelper.passthrough,\r\n [UserAction.Move]: DataFormatHelper.passthrough,\r\n [UserAction.Edit]: DataFormatHelper.passthrough,\r\n [UserAction.Share]: DataFormatHelper.passthrough,\r\n [UserAction.Disable]: DataFormatHelper.passthrough,\r\n [UserAction.Suggest]: DataFormatHelper.passthrough,\r\n\r\n [UserAction.Upload]: UploadDataFormatHelper.getUploadData,\r\n\r\n [UserAction.ResolveWarning]: DataFormatHelper.passthrough,\r\n [UserAction.DismissWarning]: DataFormatHelper.passthrough\r\n};\r\n\r\nconst dataKeyMappings: { [eventType: string]: string } = {\r\n [UserAction.Search]: 'search',\r\n [UserAction.InstantSearch]: 'search'\r\n};\r\n\r\nexport const CollectionApiClientHelper = {\r\n shouldLog(event: IncomingEvent): boolean {\r\n return !!eventWhitelist[event.type](event as CoreAnalyticsType);\r\n },\r\n\r\n formatData(event: IncomingEvent): HashObject {\r\n const formatter = dataFormatters[event.type];\r\n\r\n const data = TypeHelper.isFunction(formatter) ? formatter(event.data, event as CoreAnalyticsType) : event.data;\r\n\r\n let key: string = event.actionContext.entity;\r\n\r\n if (dataKeyMappings[event.type])\r\n key = dataKeyMappings[event.type];\r\n\r\n return { [key]: data };\r\n }\r\n};","import { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { HashObject, LocationContext, EntityType, EventDefaultValue } from 'libs/analytics/interfaces';\r\nimport { TypeHelper } from 'libs/analytics/utils/TypeHelper';\r\n\r\nfunction getEventMeta(event: CoreAnalyticsType): HashObject {\r\n if (!TypeHelper.isObject(event) || !TypeHelper.isObject(event.actionContext)) return {};\r\n\r\n const entity = event.actionContext.entity;\r\n const location = event.actionContext.location;\r\n const descriptor = event.actionContext.descriptor;\r\n\r\n return { entity, location, descriptor };\r\n}\r\n\r\nfunction getEditedVideoData(data: HashObject): HashObject {\r\n const mappedObject: HashObject = {};\r\n\r\n const getMappedValue = (value: any, key: string) => {\r\n switch (key) {\r\n\r\n // We don't need to capture the entire description, so use a default val instead.\r\n case 'description':\r\n return EventDefaultValue.ValueUpdated;\r\n\r\n // Return new assoc id\r\n case 'channel':\r\n case 'rating':\r\n case 'series':\r\n case 'distributor':\r\n case 'producer':\r\n return value && value.id || EventDefaultValue.EntityRemoved;\r\n\r\n default:\r\n return value;\r\n }\r\n };\r\n\r\n Object.keys(data).forEach((key: string) => {\r\n mappedObject[key] = getMappedValue(data[key], key);\r\n });\r\n\r\n return mappedObject;\r\n}\r\n\r\ntype DataFormatter = (data: HashObject, event: CoreAnalyticsType) => HashObject;\r\n\r\nexport interface DataFormatterHash {\r\n [eventType: string]: DataFormatter;\r\n}\r\n\r\nexport const DataFormatHelper = {\r\n /**\r\n * Object will be logged to sink as is\r\n */\r\n passthrough(data: HashObject): HashObject {\r\n return data;\r\n },\r\n\r\n getEditData(data: HashObject, event: CoreAnalyticsType): HashObject {\r\n const { entity, location, descriptor } = getEventMeta(event);\r\n\r\n // Extract changed values when a video is edited\r\n if (entity === EntityType.Video && location === LocationContext.EditVideoDetails)\r\n return getEditedVideoData(data);\r\n\r\n // Allow data to passthrough\r\n return data;\r\n }\r\n};\r\n","import { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\n\r\n/**\r\n * Manage which events we want to log\r\n * \r\n * @description\r\n * All events have a UserAction type, however, that same type can be used to represent\r\n * different types of actions. For example, `UserAction.Rename` is used for events involving\r\n * the renaming of folders, libraries and videos (from different parts of the product). \r\n * \r\n * So if a situation arises where we only want to collect events for a certain entity or from a \r\n * certain part of the product. We can add a custom callback below and filter based on the event's actionContext.\r\n */\r\nexport const EventWhitelistHelper = {\r\n // Allow logging for all events of a given type\r\n allow: () => true,\r\n\r\n // Disallow logging for all events of a given type\r\n restrict: () => false,\r\n};\r\n\r\nexport interface EventWhitelistHash {\r\n [eventType: string]: (event: CoreAnalyticsType) => boolean;\r\n}\r\n","export const TypeHelper = {\r\n isObject(obj: any): boolean {\r\n var type = typeof obj;\r\n return type === 'function' || type === 'object' && !!obj;\r\n },\r\n\r\n isFunction(fn: Function): fn is Function {\r\n return typeof fn === 'function';\r\n }\r\n};","import { HashObject, WorkflowPhase, EntityType, Subtitle, Resource } from 'libs/analytics/interfaces';\r\nimport { CoreAnalyticsType } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { TypeHelper } from 'libs/analytics/utils/TypeHelper';\r\n\r\nexport const UploadDataFormatHelper = {\r\n getUploadData(data: any, event: CoreAnalyticsType): HashObject {\r\n const { entity } = event.actionContext;\r\n\r\n if (entity === EntityType.Video)\r\n return UploadDataFormatHelper.formatVideoUpload(data, event);\r\n\r\n if (entity === EntityType.Resource || entity === EntityType.Subtitle)\r\n return UploadDataFormatHelper.formatResourceUpload(data);\r\n\r\n if (entity === EntityType.Banner || entity === EntityType.Thumbnail)\r\n return data;\r\n\r\n throw new Error('Upload data event not correctly formatted.');\r\n },\r\n\r\n formatVideoUpload(data: any, event: CoreAnalyticsType): HashObject[] {\r\n const { workflowPhase } = event.actionContext;\r\n\r\n if (workflowPhase === WorkflowPhase.Start)\r\n return UploadDataFormatHelper.getStartVideoUploadData(data);\r\n\r\n if (workflowPhase === WorkflowPhase.Discard)\r\n return UploadDataFormatHelper.getDiscardVideoUploadData(data);\r\n\r\n if (workflowPhase === WorkflowPhase.Complete)\r\n return UploadDataFormatHelper.getCompleteUploadData(data);\r\n },\r\n\r\n getStartVideoUploadData(files: File[] ): HashObject[] {\r\n if (!files || !files.length)\r\n return [];\r\n\r\n // Convert FileList to an array so that we can use Array.prototype.map\r\n if (files instanceof FileList)\r\n files = Array.from(files);\r\n\r\n return files.map(file => ({\r\n fileName: file.name,\r\n size: file.size,\r\n type: file.type,\r\n count: files.length\r\n }));\r\n },\r\n\r\n getDiscardVideoUploadData(uploads: HashObject | HashObject[]): HashObject[] {\r\n const formatUpload = (upload: HashObject) => {\r\n const { type, name, status, cvUpload } = upload.file;\r\n\r\n const baseData: HashObject = {\r\n fileName: name,\r\n count: Array.isArray(uploads) ? uploads.length : 1,\r\n type,\r\n status\r\n };\r\n\r\n if (upload.progress)\r\n baseData.progress = upload.progress.toFixed(2);\r\n\r\n if (cvUpload)\r\n baseData.uploadId = cvUpload.uploadId;\r\n\r\n return baseData;\r\n };\r\n\r\n if (Array.isArray(uploads))\r\n return uploads.map(upload => formatUpload(upload));\r\n\r\n return [formatUpload(uploads)];\r\n },\r\n\r\n getCompleteUploadData(videos: HashObject[]): HashObject[] {\r\n if (!videos || !videos.length)\r\n return [];\r\n\r\n return videos.map(video => {\r\n const { fileName, libraryId, folderId } = video;\r\n\r\n return {\r\n fileName,\r\n libraryId,\r\n folderId,\r\n count: videos.length\r\n };\r\n });\r\n },\r\n\r\n formatResourceUpload(item: Resource | Subtitle): HashObject {\r\n const { id, name } = item;\r\n\r\n const baseData: HashObject = { id, name };\r\n\r\n if (TypeHelper.isObject(item.metadata))\r\n baseData.type = item.metadata.type;\r\n\r\n return baseData;\r\n }\r\n};","import { VersionData } from 'libs/analytics/interfaces/VersionData';\r\n\r\nconst UARegex = {\r\n mobileDevice: /Mobi/i,\r\n\r\n // Mobile device regex\r\n iphone: /iphone/i,\r\n ipad: /ipad/i,\r\n android: /android/i,\r\n blackberry: /blackberry/i,\r\n windowsPhone: /windows phone/i,\r\n\r\n // Mobile versions\r\n iosVersion: /OS\\s+([\\d_.-:]+)\\s/i,\r\n androidVersion: /android\\s+([\\d_.-\\/]+)[\\s;:,\\)]/i,\r\n blackberryVersion: /(blackberry|version)\\s?\\d*\\/([\\d.]+)/i,\r\n windowsPhoneVersion: /windows\\sphone.*?([\\d_.-\\/]+)[\\s;:,\\)]/i,\r\n\r\n // OS regex\r\n mac: /Mac/i,\r\n unix: /X11/i,\r\n linux: /Linux/i,\r\n windows: /Win/i,\r\n\r\n // Win OS Version \r\n win2000: /nt 5.0/i,\r\n winXP: /nt 5.1/i,\r\n winVista: /nt 6.0/i,\r\n win7: /nt 6.1/i,\r\n win8: /nt 6.2/i,\r\n win81: /nt 5.0/i,\r\n win10: /nt 10.0/i,\r\n\r\n // OS X Version\r\n osxVersion: /OS\\sX\\s([\\d_.]+)/i,\r\n\r\n // Browsers\r\n chrome: /^(?!.*Edge).*Chrome/i,\r\n safari: /^(?!.*(?:Chrome|Edge)).*Safari/i,\r\n edge: /edge/i,\r\n ie: /(msie|trident)/i,\r\n opera: /(opr|opera)/i,\r\n firefox: /firefox/i,\r\n\r\n generalVersion: /(chrome|firefox|version)\\/(\\d+.*?)(\\s|$)/i,\r\n operaVersion: /(opr|opera)\\/(\\d+).*?(\\s|$)/i,\r\n ieVersion: /MSIE\\s+(\\d+).*?/i,\r\n edgeVersion: /(edge)\\/(\\d+).*?(\\s|$)/i,\r\n};\r\n\r\nconst UA_DEFAULT = 'Unknown';\r\n\r\nfunction getBrowserVersion(browserName: string, regex: RegExp, ua: string): VersionData {\r\n const result: string[] = regex.exec(ua) || [];\r\n\r\n let [ joined, name, version ] = result;\r\n\r\n if (!version) version = UA_DEFAULT;\r\n\r\n return { name: browserName, version: version };\r\n}\r\n\r\n/**\r\n * Attempt to extract the OS version from the UA string\r\n */\r\nfunction getOSVersion(osName: string, regex: RegExp, ua: string): VersionData {\r\n if (!regex)\r\n return { name: osName, version: UA_DEFAULT };\r\n\r\n const match = regex.exec(ua);\r\n const version = match && match.length ? match[0].trim() : UA_DEFAULT;\r\n\r\n return { name: osName, version: version };\r\n}\r\n\r\n/**\r\n * For windows machines, we'll attempt to extract the version\r\n * and map it against the corresponding Win cononical name for convenience.\r\n */\r\nfunction getWindowsVersion(osName: string, ua: string): VersionData {\r\n const os: VersionData = { name: osName, version: null };\r\n\r\n if (UARegex.win2000.test(ua)) os.version = '2000';\r\n if (UARegex.winXP.test(ua)) os.version = 'XP';\r\n if (UARegex.winVista.test(ua)) os.version = 'Vista';\r\n if (UARegex.win7.test(ua)) os.version = '7';\r\n if (UARegex.win8.test(ua)) os.version = '8';\r\n if (UARegex.win81.test(ua)) os.version = '8.1';\r\n if (UARegex.win10.test(ua)) os.version = '10';\r\n\r\n if (!os.version) os.version = UA_DEFAULT;\r\n\r\n return os;\r\n}\r\n\r\n/**\r\n * Test order is important for all UARegex tests. Reordering them will break functionality.\r\n */\r\nexport const UserAgentHelper = {\r\n getDeviceType(): string {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (!UARegex.mobileDevice.test(ua))\r\n return 'Desktop';\r\n\r\n if (UARegex.iphone.test(ua)) return 'iPhone';\r\n if (UARegex.ipad.test(ua)) return 'iPad';\r\n if (UARegex.android.test(ua)) return 'Android';\r\n if (UARegex.blackberry.test(ua)) return 'Blackberry';\r\n if (UARegex.windowsPhone.test(ua)) return 'Windows Phone';\r\n\r\n return UA_DEFAULT;\r\n },\r\n\r\n getOperatingSystem(): VersionData {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (UARegex.linux.test(ua))\r\n return getOSVersion('Linux', null, ua);\r\n\r\n if (UARegex.unix.test(ua))\r\n return getOSVersion('Unix', null, ua);\r\n\r\n if (UARegex.mac.test(ua))\r\n return getOSVersion('Macintosh', UARegex.osxVersion, ua);\r\n\r\n if (UARegex.windows.test(ua))\r\n return getWindowsVersion('Windows', ua);\r\n\r\n if (UARegex.iphone.test(ua) || UARegex.ipad.test(ua))\r\n return getOSVersion('iOS', UARegex.iosVersion, ua);\r\n\r\n if (UARegex.android.test(ua))\r\n return getOSVersion('Android', UARegex.androidVersion, ua);\r\n\r\n if (UARegex.blackberry.test(ua))\r\n return getOSVersion('Android', UARegex.blackberryVersion, ua);\r\n\r\n if (UARegex.windowsPhone.test(ua))\r\n return getOSVersion('Android', UARegex.windowsPhoneVersion, ua);\r\n\r\n return { name: UA_DEFAULT, version: UA_DEFAULT };\r\n },\r\n\r\n getBrowser(): VersionData {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (UARegex.chrome.test(ua))\r\n return getBrowserVersion('Chrome', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.firefox.test(ua))\r\n return getBrowserVersion('Firefox', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.safari.test(ua))\r\n return getBrowserVersion('Safari', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.ie.test(ua))\r\n return getBrowserVersion('Internet Explorer', UARegex.ieVersion, ua);\r\n\r\n if (UARegex.edge.test(ua))\r\n return getBrowserVersion('Edge', UARegex.edgeVersion, ua);\r\n\r\n if (UARegex.opera.test(ua))\r\n return getBrowserVersion('Opera', UARegex.operaVersion, ua);\r\n\r\n return { name: UA_DEFAULT, version: UA_DEFAULT };\r\n },\r\n\r\n isTouchScreen(): boolean {\r\n return !!('ontouchstart' in window || navigator.maxTouchPoints);\r\n }\r\n};\r\n","import { HashObject, Video, Series, Owner, Playlist, Rating, Folder } from 'libs/analytics/interfaces';\r\n\r\nexport interface VideoWatchAnalyticsEvent {\r\n model: Video;\r\n playbackStatus: PlaybackStatus;\r\n}\r\n\r\nexport interface PlaybackStatus {\r\n position: number;\r\n chapter: number;\r\n totalDuration: number;\r\n totalWatched: number;\r\n hasStarted?: boolean;\r\n}\r\n\r\ninterface BaseVideoData {\r\n id: string;\r\n title: string;\r\n trackingCode: string;\r\n duration: number;\r\n}\r\n\r\ninterface BaseAssocData {\r\n id: string;\r\n title?: string;\r\n}\r\n\r\nexport interface VideoAnalyticsPayload {\r\n video: BaseVideoData;\r\n rating?: string;\r\n series?: BaseAssocData;\r\n folder?: BaseAssocData;\r\n owner?: BaseAssocData;\r\n playlist?: BaseAssocData;\r\n playbackStatus?: PlaybackStatus;\r\n}\r\n\r\n/**\r\n * Only allow valid Video assocs to be captured\r\n */\r\ntype VideoAssocs = Series | Owner | Playlist;\r\n\r\nfunction getBasicVideoData(model: Video): BaseVideoData {\r\n if (!model || !model.id)\r\n throw new Error('Video model required. Checking logging.');\r\n\r\n return {\r\n id: model.id,\r\n title: model.name,\r\n trackingCode: model.trackingCode,\r\n duration: model.duration\r\n };\r\n}\r\n\r\nfunction getRatingData(model: Rating): string {\r\n if (!model || !model.code) return;\r\n return model.code;\r\n}\r\n\r\nfunction getAssocData(model: VideoAssocs, options: HashObject = {}): BaseAssocData {\r\n if (!model || !model.id) return;\r\n\r\n const data: BaseAssocData = {\r\n id: model.id\r\n };\r\n\r\n if (model.name && !options.ignoreTitle)\r\n data.title = model.name;\r\n\r\n return data;\r\n}\r\n\r\nfunction getFolderData(collection: Folder[]): BaseAssocData {\r\n if (!collection || !collection.length) return;\r\n\r\n const folder = collection[0];\r\n\r\n return {\r\n id: folder.id,\r\n title: folder.name\r\n };\r\n}\r\n\r\nexport const VideoDataFormatHelper = {\r\n getVideoData(options: VideoWatchAnalyticsEvent): VideoAnalyticsPayload {\r\n let { playbackStatus } = options;\r\n const model = options.model;\r\n\r\n const video = getBasicVideoData(model);\r\n\r\n // Extract assoc data\r\n const series = getAssocData(model.series);\r\n const folder = getFolderData(model.categories);\r\n const owner = getAssocData(model.owner, { ignoreTitle: true });\r\n const playlist = getAssocData(model.playlist);\r\n const rating = getRatingData(model.rating);\r\n\r\n const data: VideoAnalyticsPayload = { video };\r\n\r\n if (rating) data.rating = rating;\r\n if (series) data.series = series;\r\n if (folder) data.folder = folder;\r\n if (owner) data.owner = owner;\r\n if (playlist) data.playlist = playlist;\r\n if (playbackStatus) data.playbackStatus = playbackStatus;\r\n\r\n return data;\r\n },\r\n\r\n/**\r\n * Map to the same properties recorded in Online.\r\n * @see _toLogMasterVideo() in AnalyticsService in Online\r\n * \r\n * TODO: Video origin and user channel logging - both of these need to be re-worked properly.\r\n */\r\n getLegacyVideoData(options: VideoWatchAnalyticsEvent): HashObject {\r\n const model = options.model;\r\n\r\n const video: HashObject = {\r\n id: model.id,\r\n year: model.productionYear,\r\n title: model.name,\r\n trackingCode: model.trackingCode,\r\n };\r\n\r\n const rating = getRatingData(model.rating);\r\n const series = getAssocData(model.series);\r\n const folder = getFolderData(model.categories);\r\n const owner = getAssocData(model.owner, { ignoreTitle: true });\r\n const playlist = getAssocData(model.playlist);\r\n\r\n if (rating) video.rating = rating;\r\n if (owner) video.ownerId = owner.id;\r\n\r\n if (series) {\r\n video.seriesId = series.id;\r\n video.series = series.title;\r\n }\r\n\r\n if (folder) video.category = folder.title;\r\n if (playlist) video.playlist = playlist;\r\n\r\n return video;\r\n },\r\n};\r\n","export const BehaviorChannels = {\r\n LAZY_LOAD: 'lazy:load:behavior',\r\n POPUP: 'popup:behavior',\r\n IMAGE_SELECT: 'image:select:behavior'\r\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 protected externalRoutes?: Marionette.AppRoutes;\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.processInternalRoutes();\r\n this.processExternalRoutes();\r\n this.processAppLinks();\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 private addRouteLookup(eventName: string, route: string): void {\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 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 /**\r\n * Creates all the reverse route lookups\r\n * and binds all the appLinks to the radio channel\r\n */\r\n private processInternalRoutes(): void {\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 this.addRouteLookup(eventName, route);\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\r\n LocationUtils.UpdateUrl(route, appLink, options);\r\n });\r\n });\r\n });\r\n }\r\n\r\n private processExternalRoutes(): void {\r\n if (!this.externalRoutes)\r\n return;\r\n\r\n _.each(_.keys(this.externalRoutes), route => {\r\n const methodName = this.externalRoutes[route];\r\n const eventName = this.toEventName(methodName);\r\n\r\n this.addRouteLookup(eventName, route);\r\n\r\n /**\r\n * External routes are triggered exactly the same as other appLinks but take the user\r\n * to a different page on the same website using a PageLoad.\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 LocationUtils.PageLoad(AppLinkHelper.getHref(appLink));\r\n });\r\n });\r\n }\r\n\r\n private processAppLinks(): void {\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 { BaseError } from 'libs/common/backbone/core/BaseError';\r\n\r\nexport class NotImplementedError extends BaseError {\r\n constructor() {\r\n super('Not Implemented');\r\n }\r\n\r\n public get name(): string {\r\n return 'NotImplementedError';\r\n }\r\n}","import * as Core from './core';\r\n\r\nexport { Core };\r\n","import { ObjectHash } from 'backbone';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\n\r\nexport interface BaseCollectionIdentifierOptions<T> {\r\n collectionPrefix?: string;\r\n id?: string;\r\n sort?: T;\r\n cursor?: string;\r\n}\r\n\r\nexport class BaseCollectionIdentifier<T = {}> {\r\n public id: string;\r\n public sort: T;\r\n public cursor: string;\r\n public collectionPrefix: string;\r\n\r\n constructor(options: BaseCollectionIdentifierOptions<T>) {\r\n this.setData(options);\r\n }\r\n\r\n protected setData(options: BaseCollectionIdentifierOptions<T>): void {\r\n const { collectionPrefix, id, sort, cursor } = options;\r\n\r\n if (id)\r\n this.id = id;\r\n\r\n if (sort)\r\n this.sort = sort;\r\n\r\n if (cursor)\r\n this.cursor = cursor;\r\n\r\n if (collectionPrefix)\r\n this.collectionPrefix = collectionPrefix;\r\n }\r\n\r\n public toString(): string {\r\n const params = [\r\n this.collectionPrefix,\r\n this.id,\r\n this.sort,\r\n this.cursor\r\n ];\r\n\r\n return params.filter(Boolean).join(':');\r\n }\r\n\r\n public toParams(): ObjectHash {\r\n const params: ObjectHash = {};\r\n\r\n if (this.sort)\r\n params.sort = this.getSortTypeParam().toLowerCase();\r\n\r\n if (this.cursor)\r\n params.cursor = this.cursor;\r\n\r\n return params;\r\n }\r\n\r\n protected getSortTypeParam(): string {\r\n ErrorHelper.throw(new DevError('getSortTypeParam must be implemented when extending BaseCollectionIdentifier'));\r\n\r\n return '';\r\n }\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","export * from './BaseCollectionIdentifier';\r\nexport * from './ChainableDataService';\r\nexport * from './DataCache';\r\nexport * from './DataProvider';\r\nexport * from './DataServiceError';\r\nexport * from './DataServiceRequests';\r\nexport * from './Pagination';\r\nexport * from './StickitBinding';\r\nexport * from './Xhr';","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\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { StorageType, StorageHelper, LocalStorageHelper, SessionStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { BaseModel } from 'libs/common/backbone/core/BaseModel';\r\nimport { BaseNestedModel } from 'libs/common/backbone/core/BaseNestedModel';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\n\r\ninterface ViewModel extends BaseModel {}\r\ninterface ViewNestedModel extends BaseNestedModel {}\r\n\r\ntype ViewData = ViewModel | ViewNestedModel;\r\n\r\nexport type ViewModelData = ObjectHash | ObjectHash[];\r\n\r\ninterface ViewModelHash {\r\n [prop: string]: ViewData;\r\n}\r\n\r\nexport interface ViewModelStorage {\r\n /**\r\n * Auto-persist properties when a change event occurs\r\n */\r\n persistProps: string | string[];\r\n type: StorageType;\r\n}\r\n\r\nexport interface ViewModelOptions<TData> {\r\n update?: boolean;\r\n ctor?: { new(vals: ViewModelData, options?: ObjectHash): TData };\r\n storage?: ViewModelStorage;\r\n}\r\n\r\nclass StaticViewModelService extends BaseService {\r\n private static instance: StaticViewModelService;\r\n private viewObjects: ViewModelHash;\r\n\r\n private constructor() {\r\n super();\r\n this.viewObjects = {};\r\n }\r\n\r\n public static get Instance(): StaticViewModelService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public get name(): string {\r\n return 'ViewModelService';\r\n }\r\n\r\n /**\r\n * Update the view model attributes to include defaults, only where they haven't already\r\n * been set previously on the model.\r\n * \r\n * Note: Checking model instance type is deliberate for Model & NestedModel, otherwise the type system\r\n * doesn't know which set() is being invoked. ¯\\_(ツ)_/¯ \r\n */\r\n private updateViewModel<TData extends ViewData>(viewData: ViewData, defaultValues: ObjectHash): TData {\r\n const data = this.mergeData(defaultValues, viewData.toJSON());\r\n\r\n if (viewData instanceof BaseNestedModel) {\r\n viewData.set(data, { silent: true });\r\n }\r\n\r\n if (viewData instanceof BaseModel && !(viewData instanceof BaseNestedModel)) {\r\n viewData.set(data, { silent: true });\r\n }\r\n\r\n return viewData as TData;\r\n }\r\n\r\n public get<TData extends ViewData>(key: string, defaultValues: ViewModelData = {},\r\n options: ViewModelOptions<TData> = {}): TData {\r\n\r\n const { update = false } = options;\r\n\r\n // Get existing cached object\r\n const viewData = this.viewObjects[key] as TData;\r\n\r\n if (viewData && update)\r\n return this.updateViewModel(viewData, defaultValues);\r\n\r\n if (viewData)\r\n return viewData;\r\n\r\n // When there is no cached view model, check to see if we have any locally persisted data\r\n const savedData = this.getLocalData<TData>(key, options);\r\n\r\n // Create a new view model along with defaults and any locally saved data\r\n return this.set<TData>(key, defaultValues, savedData, options);\r\n }\r\n\r\n private set<TData extends ViewData>(key: string, defaultValues: ViewModelData = {},\r\n existingData?: any,\r\n options?: ViewModelOptions<TData>): TData {\r\n\r\n const { ctor, storage } = options;\r\n\r\n const data = this.mergeData(defaultValues, existingData);\r\n\r\n const viewModel = ctor ? new ctor(data) : new BaseModel(data);\r\n\r\n this.viewObjects[key] = viewModel;\r\n\r\n // Use local storage to store the initial values of the view model\r\n if (storage && !existingData) {\r\n this.setLocalData(key, viewModel, null, options);\r\n this.setupChangeListeners(key, viewModel, options);\r\n\r\n // If we have restored the view model using local storage, we do not need\r\n // to set it again (until a subsequent change occurs)\r\n } else if (storage && existingData) {\r\n this.setupChangeListeners(key, viewModel, options);\r\n }\r\n\r\n return viewModel as TData;\r\n }\r\n\r\n public clear(key: string): boolean {\r\n const viewModel = this.viewObjects[key];\r\n\r\n if (!viewModel)\r\n return false;\r\n\r\n this.stopListening(viewModel);\r\n viewModel.trigger('destroy');\r\n delete this.viewObjects[key];\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Retrieve any data we've previous stored within local storage\r\n */\r\n private getLocalData<TData extends ViewData>(key: string, options: ViewModelOptions<TData>): any {\r\n const { storage } = options;\r\n if (!storage) return;\r\n\r\n const storageHelper = this.getStorageHelper(storage.type);\r\n return storageHelper.get(key);\r\n }\r\n\r\n /**\r\n * Store changed properties in local storage\r\n * \r\n * It is not possible to blindly save entire models, instead, specific model properties must be passed\r\n * via the storage persistProps. These props will all be set together, even if only one has changed, this\r\n * saves us from unncessarily polluting local storage with single props. \r\n * \r\n * @param key \r\n * @param viewData \r\n * @param value \r\n * @param options \r\n */\r\n private setLocalData<TData extends ViewData>(key: string, viewData: ViewData,\r\n value: string, options: ViewModelOptions<TData>): any {\r\n\r\n const { storage } = options;\r\n if (!storage || (storage && !storage.persistProps)) return;\r\n\r\n if (typeof storage.persistProps === 'string')\r\n storage.persistProps = [storage.persistProps];\r\n\r\n let data;\r\n\r\n if (viewData instanceof BaseModel)\r\n data = viewData.pick(storage.persistProps);\r\n\r\n const storageHelper = this.getStorageHelper(storage.type);\r\n storageHelper.set(key, data);\r\n }\r\n\r\n /**\r\n * Setup model listeners to store changes to local storage automatically\r\n */\r\n private setupChangeListeners<TData extends ViewData>(key: string, viewData: ViewData,\r\n options: ViewModelOptions<TData>): any {\r\n\r\n const { storage } = options;\r\n if (!storage || (storage && !storage.persistProps)) return;\r\n\r\n if (typeof storage.persistProps === 'string')\r\n storage.persistProps = [storage.persistProps];\r\n\r\n _.each(storage.persistProps, (prop: string) => {\r\n this.listenTo(viewData, `change:${prop}`, _.partial(this.setLocalData, key, _, _, options));\r\n });\r\n }\r\n\r\n private mergeData(defaultValues: ViewModelData, existingData?: any): any {\r\n if (!existingData)\r\n return defaultValues;\r\n\r\n if (_.isObject(defaultValues) && _.isObject(existingData))\r\n return _.extend(defaultValues, existingData);\r\n\r\n ErrorHelper.throw(new DevError('defaultValues and existingData are not of the same datatype and cannot be merged'));\r\n }\r\n\r\n private getStorageHelper(type: StorageType): StorageHelper {\r\n switch (type) {\r\n case StorageType.LocalStorage:\r\n return LocalStorageHelper;\r\n\r\n case StorageType.SessionStorage:\r\n return SessionStorageHelper;\r\n }\r\n }\r\n}\r\n\r\nexport const ViewModelService = StaticViewModelService.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}","import * as Marionette from 'backbone.marionette';\r\nimport { ObjectHash } from 'backbone';\r\nimport { DataProvider, DataProviderResponseOptions } from 'libs/common/backbone/interfaces/DataProvider';\r\nimport { DataServiceError, DefaultDataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\n\r\nexport interface SignalRDataProviderOptions {\r\n hubName: string;\r\n endpoint: string;\r\n authEndpoint: string;\r\n subscribeEvent?: string;\r\n logging?: boolean;\r\n lazy?: boolean;\r\n reconnectTimeout?: number;\r\n reconnectAttempts?: number;\r\n}\r\n\r\nexport interface SocketToken {\r\n Token: string;\r\n}\r\n\r\nexport abstract class SignalRDataProvider extends Marionette.Object implements DataProvider {\r\n private connection: SignalR.Hub.Connection;\r\n private hub: SignalR.Hub.Proxy;\r\n private connectionState: SignalR.ConnectionState;\r\n private authEndpoint: string;\r\n\r\n private subscribeEvent: string = 'subscribe';\r\n private reconnectTimeout: number = 5000;\r\n private reconnectAttempts: number = 100;\r\n private reconnectTries: number = 0;\r\n\r\n public constructor(options: SignalRDataProviderOptions) {\r\n super();\r\n\r\n this.connection = $.hubConnection(options.endpoint);\r\n this.hub = this.connection.createHubProxy(options.hubName);\r\n this.authEndpoint = options.authEndpoint;\r\n\r\n this.setProviderOptions(options);\r\n this.attachSocketEvents();\r\n\r\n if (options.lazy === false)\r\n this.openConnection();\r\n }\r\n\r\n private setProviderOptions(options: SignalRDataProviderOptions): void {\r\n if (options.logging)\r\n this.connection.logging = true;\r\n\r\n if (options.subscribeEvent)\r\n this.subscribeEvent = options.subscribeEvent;\r\n\r\n if (options.reconnectTimeout)\r\n this.reconnectTimeout = options.reconnectTimeout;\r\n\r\n if (options.reconnectAttempts)\r\n this.reconnectAttempts = options.reconnectAttempts;\r\n }\r\n\r\n public openConnection(): JQueryPromise<any> {\r\n if (this.isConnectedOrConnecting())\r\n return;\r\n\r\n this.setConnectionState(SignalR.ConnectionState.Connecting);\r\n\r\n return this.connect();\r\n }\r\n\r\n public connect(): JQueryPromise<any> {\r\n /**\r\n * Fetch an auth token and open the WS concurrently\r\n */\r\n const connectionPromise = $.when(\r\n this.getConnectionToken(),\r\n this.connection.start()\r\n );\r\n\r\n /**\r\n * Deliberately using then() to ensure we correctly subscribe before\r\n * any data events are triggered.\r\n */\r\n return connectionPromise.then(\r\n (successResponse: any) => this.start.apply(this, successResponse),\r\n (failResponse: any) => this.onConnectionError.apply(this, failResponse)\r\n );\r\n }\r\n\r\n public start(data: any): JQueryPromise<any> {\r\n return this.hub.invoke(this.subscribeEvent, data.Token)\r\n .done(() => this.setConnectionState(SignalR.ConnectionState.Connected))\r\n .fail((err: any) => this.onConnectionError(err));\r\n }\r\n\r\n public stop(async?: boolean, notifyServer?: boolean): any {\r\n if (!this.isConnectedOrConnecting())\r\n return;\r\n\r\n this.connection.stop(async, notifyServer);\r\n }\r\n\r\n private attachSocketEvents(): void {\r\n this.connection.disconnected(() => this.onConnectionError);\r\n this.connection.reconnected(() => this.onReconnect);\r\n }\r\n\r\n private onReconnect(): void {\r\n this.reconnectTries = 0;\r\n }\r\n\r\n private onConnectionError(error?: any): any {\r\n if (error)\r\n console.log(`Connection Error. Reason: ${error}`);\r\n else if (this.connection.lastError)\r\n console.log(`Connection Error. Reason: ${this.connection.lastError}`);\r\n else\r\n console.log('Connection Error.');\r\n\r\n this.setConnectionState(SignalR.ConnectionState.Disconnected);\r\n\r\n if (!this.reconnectAttempts || this.reconnectTries >= this.reconnectAttempts)\r\n return;\r\n\r\n setTimeout(() => {\r\n this.reconnectTries++;\r\n return this.openConnection();\r\n }, this.reconnectTimeout || 5000);\r\n }\r\n\r\n private getConnectionToken(): JQueryXHR {\r\n const options: ObjectHash = {\r\n url: this.authEndpoint,\r\n method: 'POST',\r\n type: 'POST'\r\n };\r\n\r\n return $.ajax(options);\r\n }\r\n\r\n private setConnectionState(nextState: SignalR.ConnectionState): void {\r\n if (nextState === SignalR.ConnectionState.Connected)\r\n console.log('Connected!');\r\n\r\n if (nextState === SignalR.ConnectionState.Disconnected)\r\n console.log('Disconnected!');\r\n\r\n this.connectionState = nextState;\r\n }\r\n\r\n private isConnectedOrConnecting(): boolean {\r\n return this.connectionState === SignalR.ConnectionState.Connecting ||\r\n this.connectionState === SignalR.ConnectionState.Connected ||\r\n this.connectionState === SignalR.ConnectionState.Reconnecting;\r\n }\r\n\r\n public create<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n this.openConnection();\r\n this.rpc<T>(resource, obj, options);\r\n }\r\n\r\n public read<T>(resource: string, options: DataProviderResponseOptions): void {\r\n this.openConnection();\r\n this.subscribe<T>(resource, options);\r\n }\r\n\r\n public update<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n this.openConnection();\r\n this.rpc<T>(resource, obj, options);\r\n }\r\n\r\n public delete(resource: string, options: DataProviderResponseOptions): void {\r\n this.openConnection();\r\n this.rpc(resource, null, options);\r\n }\r\n\r\n public parseError(...args: any[]): DataServiceError {\r\n return DefaultDataServiceError;\r\n }\r\n\r\n private rpc<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.hub.invoke(resource, obj)\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\r\n private subscribe<T>(resource: string, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.hub.on(resource, (...args: any[]) => {\r\n channel.trigger(successEvent, ...args);\r\n });\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};","export enum StorageType {\r\n LocalStorage = 'localStorage',\r\n SessionStorage = 'sesstionStorage'\r\n}\r\n\r\nexport interface StorageHelper {\r\n get(key: string): any;\r\n set(key: string, data: any): boolean;\r\n remove(key: string): any;\r\n length(): number;\r\n clear(): any;\r\n\r\n cacheSet(key: string, data: any, expire?: number): any;\r\n cacheGet(key: string): any;\r\n cacheExists(key: string): boolean;\r\n cacheRemove(key: string): any;\r\n cacheFlush(): void;\r\n}\r\n\r\ninterface CacheItem {\r\n time: number;\r\n data: any;\r\n}\r\n\r\ninterface StaticBaseStorageHelperOptions {\r\n type: StorageType;\r\n}\r\n\r\nabstract class StaticBaseStorageHelper implements StorageHelper {\r\n private cachePrefix: string = '_cv:';\r\n private expireTime: number = 3600;\r\n\r\n private hasSupport: boolean;\r\n private storage: Storage;\r\n protected type: StorageType;\r\n\r\n protected constructor(options: StaticBaseStorageHelperOptions) {\r\n this.hasSupport = this.hasBrowserSupport();\r\n\r\n this.type = options.type;\r\n\r\n if (!this.hasSupport) return;\r\n this.storage = (window as any)[this.type];\r\n }\r\n\r\n public get(key: string): any {\r\n if (!this.hasSupport) return;\r\n\r\n const item = this.storage.getItem(key);\r\n\r\n // Try and deserialize, if it fails its probably a string\r\n try {\r\n return JSON.parse(item);\r\n } catch (e) {\r\n return item;\r\n }\r\n }\r\n\r\n public set(key: string, data: any): boolean {\r\n if (!this.hasSupport) return;\r\n\r\n try {\r\n this.storage.removeItem(key);\r\n\r\n // localstorage doesn't support objects yet\r\n if (typeof data !== 'string') {\r\n this.storage.setItem(key, JSON.stringify(data));\r\n return true;\r\n }\r\n\r\n this.storage.setItem(key, data);\r\n return true;\r\n } catch (e) {\r\n // setItem() may throw an exception if the storage is full\r\n // Safari sets quota to 0 bytes in private mode\r\n return false;\r\n }\r\n }\r\n\r\n public remove(key: string): void {\r\n if (!this.hasSupport) return;\r\n return this.storage.removeItem(key);\r\n }\r\n\r\n public length(): number {\r\n if (!this.hasSupport) return;\r\n return this.storage.length;\r\n }\r\n\r\n public clear(): void {\r\n if (!this.hasSupport) return;\r\n return this.storage.clear();\r\n }\r\n\r\n /**\r\n * Caching Ops\r\n */\r\n\r\n public cacheSet(key: string, data: any, expire: number = this.expireTime): boolean {\r\n this.cacheClean();\r\n\r\n const item: CacheItem = {\r\n time: this.getCurrentTime() + (expire * 1000),\r\n data: typeof data !== 'undefined' && data !== null && data\r\n };\r\n\r\n return this.set(`${this.cachePrefix}${key}` , item);\r\n }\r\n\r\n public cacheGet(key: string): any {\r\n const cacheKey = `${this.cachePrefix}${key}`;\r\n const item: CacheItem = this.get(cacheKey);\r\n\r\n if (!item) return null;\r\n\r\n if (this.isExpired(item)) {\r\n this.remove(cacheKey);\r\n return null;\r\n }\r\n\r\n return item.data;\r\n }\r\n\r\n public cacheExists(key: string): boolean {\r\n const cacheKey = `${this.cachePrefix}${key}`;\r\n const item: CacheItem = this.get(cacheKey);\r\n\r\n if (!item) return false;\r\n\r\n if (this.isExpired(item)) {\r\n this.remove(cacheKey);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public cacheRemove(key: string): void {\r\n return this.remove(`${this.cachePrefix}${key}`);\r\n }\r\n\r\n public cacheFlush(): void {\r\n this.cacheClean();\r\n }\r\n\r\n /**\r\n * Privates\r\n */\r\n\r\n private cacheClean(): void {\r\n if (!this.hasSupport) return;\r\n\r\n for (let i = 0; i < this.storage.length; i++) {\r\n const key = this.storage.key(i);\r\n\r\n if (key.indexOf(this.cachePrefix) === 0) {\r\n const data: CacheItem = this.get(key);\r\n\r\n if (data && data.time) {\r\n if (this.isExpired(data)) {\r\n this.remove(key);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private isExpired(d: CacheItem): boolean {\r\n return d.time < this.getCurrentTime();\r\n }\r\n\r\n private getCurrentTime(): number {\r\n return new Date().getTime();\r\n }\r\n\r\n private hasBrowserSupport(): boolean {\r\n try {\r\n return this.type in window && (window as any)[this.type] !== null;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nclass StaticLocalStorageHelper extends StaticBaseStorageHelper {\r\n protected static instance: StaticLocalStorageHelper;\r\n\r\n public static get Instance(): StaticLocalStorageHelper {\r\n return this.instance || (this.instance = new this({ type: StorageType.LocalStorage }));\r\n }\r\n}\r\n\r\nclass StaticSessionStorageHelper extends StaticBaseStorageHelper {\r\n protected static instance: StaticSessionStorageHelper;\r\n\r\n public static get Instance(): StaticSessionStorageHelper {\r\n return this.instance || (this.instance = new this({ type: StorageType.SessionStorage }));\r\n }\r\n}\r\n\r\nexport const LocalStorageHelper = StaticLocalStorageHelper.Instance;\r\nexport const SessionStorageHelper = StaticSessionStorageHelper.Instance;","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 { ObjectHash } from 'backbone';\r\n\r\nconst UARegex = {\r\n mobileDevice: /Mobi/i,\r\n\r\n // Mobile device regex\r\n iphone: /iphone/i,\r\n ipad: /ipad/i,\r\n android: /android/i,\r\n blackberry: /blackberry/i,\r\n windowsPhone: /windows phone/i,\r\n\r\n // Mobile versions\r\n iosVersion: /OS\\s+([\\d_.-:]+)\\s/i,\r\n androidVersion: /android\\s+([\\d_.-\\/]+)[\\s;:,\\)]/i,\r\n blackberryVersion: /(blackberry|version)\\s?\\d*\\/([\\d.]+)/i,\r\n windowsPhoneVersion: /windows\\sphone.*?([\\d_.-\\/]+)[\\s;:,\\)]/i,\r\n\r\n // OS regex\r\n mac: /Mac/i,\r\n unix: /X11/i,\r\n linux: /Linux/i,\r\n windows: /Win/i,\r\n\r\n // Win OS Version \r\n win2000: /nt 5.0/i,\r\n winXP: /nt 5.1/i,\r\n winVista: /nt 6.0/i,\r\n win7: /nt 6.1/i,\r\n win8: /nt 6.2/i,\r\n win81: /nt 5.0/i,\r\n win10: /nt 10.0/i,\r\n\r\n // OS X Version\r\n osxVersion: /OS\\sX\\s([\\d_.]+)/i,\r\n\r\n // Browsers\r\n chrome: /^(?!.*Edge).*Chrome/i,\r\n safari: /^(?!.*(?:Chrome|Edge)).*Safari/i,\r\n edge: /edge/i,\r\n ie: /(msie|trident)/i,\r\n opera: /(opr|opera)/i,\r\n firefox: /firefox/i,\r\n\r\n generalVersion: /(chrome|firefox|version)\\/(\\d+.*?)(\\s|$)/i,\r\n operaVersion: /(opr|opera)\\/(\\d+).*?(\\s|$)/i,\r\n ieVersion: /MSIE\\s+(\\d+).*?/i,\r\n edgeVersion: /(edge)\\/(\\d+).*?(\\s|$)/i,\r\n};\r\n\r\nconst UA_DEFAULT = 'Unknown';\r\n\r\nfunction getBrowserVersion(browserName: string, regex: RegExp, ua: string): ObjectHash {\r\n const result: string[] = regex.exec(ua) || [];\r\n\r\n let [ joined, name, version ] = result;\r\n\r\n if (!version) version = UA_DEFAULT;\r\n\r\n return { browser: browserName, version: version };\r\n}\r\n\r\n/**\r\n * Attempt to extract the OS version from the UA string\r\n */\r\nfunction getOSVersion(osName: string, regex: RegExp, ua: string): ObjectHash {\r\n if (!regex)\r\n return { os: osName, version: UA_DEFAULT };\r\n\r\n const match = regex.exec(ua);\r\n const version = match && match.length ? match[0].trim() : UA_DEFAULT;\r\n\r\n return { os: osName, version: version };\r\n}\r\n\r\n/**\r\n * For windows machines, we'll attempt to extract the version\r\n * and map it against the corresponding Win cononical name for convenience.\r\n */\r\nfunction getWindowsVersion(osName: string, ua: string): ObjectHash {\r\n const os: ObjectHash = { os: osName };\r\n\r\n if (UARegex.win2000.test(ua)) os.version = '2000';\r\n if (UARegex.winXP.test(ua)) os.version = 'XP';\r\n if (UARegex.winVista.test(ua)) os.version = 'Vista';\r\n if (UARegex.win7.test(ua)) os.version = '7';\r\n if (UARegex.win8.test(ua)) os.version = '8';\r\n if (UARegex.win81.test(ua)) os.version = '8.1';\r\n if (UARegex.win10.test(ua)) os.version = '10';\r\n\r\n if (!os.version) os.version = UA_DEFAULT;\r\n\r\n return os;\r\n}\r\n\r\n\r\nexport const UserAgentHelper = {\r\n getDeviceType(): string {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (!UARegex.mobileDevice.test(ua))\r\n return 'Desktop';\r\n\r\n if (UARegex.iphone.test(ua)) return 'iPhone';\r\n if (UARegex.ipad.test(ua)) return 'iPad';\r\n if (UARegex.android.test(ua)) return 'Android';\r\n if (UARegex.blackberry.test(ua)) return 'Blackberry';\r\n if (UARegex.windowsPhone.test(ua)) return 'Windows Phone';\r\n\r\n return UA_DEFAULT;\r\n },\r\n\r\n getOperatingSystem(): ObjectHash {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (UARegex.linux.test(ua))\r\n return getOSVersion('Linux', null, ua);\r\n\r\n if (UARegex.unix.test(ua))\r\n return getOSVersion('Unix', null, ua);\r\n\r\n if (UARegex.mac.test(ua))\r\n return getOSVersion('Macintosh', UARegex.osxVersion, ua);\r\n\r\n if (UARegex.windows.test(ua))\r\n return getWindowsVersion('Windows', ua);\r\n\r\n if (UARegex.iphone.test(ua) || UARegex.ipad.test(ua))\r\n return getOSVersion('iOS', UARegex.iosVersion, ua);\r\n\r\n if (UARegex.android.test(ua))\r\n return getOSVersion('Android', UARegex.androidVersion, ua);\r\n\r\n if (UARegex.blackberry.test(ua))\r\n return getOSVersion('Android', UARegex.blackberryVersion, ua);\r\n\r\n if (UARegex.windowsPhone.test(ua))\r\n return getOSVersion('Android', UARegex.windowsPhoneVersion, ua);\r\n\r\n return { os: UA_DEFAULT, version: UA_DEFAULT };\r\n },\r\n\r\n getBrowser(): ObjectHash {\r\n const ua = (window as any).navigator.userAgent;\r\n\r\n if (UARegex.chrome.test(ua))\r\n return getBrowserVersion('Chrome', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.firefox.test(ua))\r\n return getBrowserVersion('Firefox', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.safari.test(ua))\r\n return getBrowserVersion('Safari', UARegex.generalVersion, ua);\r\n\r\n if (UARegex.ie.test(ua))\r\n return getBrowserVersion('Internet Explorer', UARegex.ieVersion, ua);\r\n\r\n if (UARegex.edge.test(ua))\r\n return getBrowserVersion('Edge', UARegex.edgeVersion, ua);\r\n\r\n if (UARegex.opera.test(ua))\r\n return getBrowserVersion('Opera', UARegex.operaVersion, ua);\r\n\r\n return { browser: UA_DEFAULT, version: UA_DEFAULT };\r\n },\r\n\r\n isTouchScreen(): boolean {\r\n return !!('ontouchstart' in window || navigator.maxTouchPoints);\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { BaseView } from 'libs/common/backbone/core/BaseView';\r\nimport { useRenderBackboneView } from 'libs/common/react/hooks/UseRenderBackboneView';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\ninterface BackboneViewWrapperProps {\r\n view: new(options: HashObject) => BaseView;\r\n options?: HashObject;\r\n className?: string;\r\n}\r\n\r\nexport function BackboneViewWrapper({ view, options = {}, className = '' }: BackboneViewWrapperProps): JSX.Element {\r\n const viewInstance = React.useMemo(() => new view(options), [options]);\r\n\r\n const ref = useRenderBackboneView(viewInstance, [viewInstance]);\r\n\r\n if (!view)\r\n return <></>;\r\n\r\n return <div ref={ref} className={className} />;\r\n}\r\n","export const ViewModelActions = {\r\n UPDATE: 'UPDATE_VIEW_MODEL'\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\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 * as React from 'react';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\n/**\r\n * The ref returned from useRenderBackboneView must be\r\n * set on the element that the view is to be rendered\r\n * into, e.g. <div ref={ref} />.\r\n * The ref allows us to access to the DOM (https://reactjs.org/docs/refs-and-the-dom.html)\r\n * \r\n * @param view an instance of a Backbone view\r\n */\r\nexport function useRenderBackboneView(view: any, dependencies: any[] = []): React.MutableRefObject<any> {\r\n const ref = React.useRef<HTMLElement>(null);\r\n\r\n React.useEffect(() => {\r\n if (!view)\r\n return;\r\n\r\n const node = ref.current;\r\n\r\n view.render();\r\n\r\n /**\r\n * Where the DOM node already has a child, we'll replace it.\r\n * This should not be a common scenario though, as the return callback\r\n * should be cleaning up the view by calling close.\r\n */\r\n node.hasChildNodes()\r\n ? node.replaceChild(view.el, node.firstChild)\r\n : node.appendChild(view.el);\r\n\r\n view.trigger('rendered');\r\n\r\n /**\r\n * On unmounting, dispose of our view.\r\n */\r\n return () => {\r\n if (FunctionHelper.isFunction(view.close))\r\n view.close();\r\n else if (FunctionHelper.isFunction(view.destroy))\r\n view.destroy();\r\n };\r\n }, [...dependencies]);\r\n\r\n return ref;\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 { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { ViewModelActions } from 'libs/common/react/constants/ViewModelActions';\r\nimport { ApplicationState } from 'libs/common/react/interfaces';\r\n\r\ntype IUseViewModel<T> = [\r\n T, // State\r\n (dataOrKey: T | keyof T, keyData?: any) => void // Dispatch\r\n];\r\n\r\nexport const useViewModel = <T = any>(viewModelKey: string, initialState?: T): IUseViewModel<T> => {\r\n const dispatch = useDispatch();\r\n const currentState = useSelector((state: ApplicationState) => {\r\n return state.viewModelData[viewModelKey];\r\n });\r\n\r\n // If there is an initial state and there is no current state, set the initial state\r\n if (initialState !== undefined && currentState === undefined)\r\n setState(initialState);\r\n\r\n // Accepts either just a full state object, or a key + value if the data is an object.\r\n function setState(dataOrKey: T | keyof T, keyData?: any): void {\r\n dispatch({\r\n type: ViewModelActions.UPDATE,\r\n payload: {\r\n viewModelKey,\r\n dataOrKey,\r\n keyData\r\n }\r\n });\r\n }\r\n\r\n return [ currentState, setState ];\r\n};","import * as Flight from './flight';\r\n\r\nexport { Flight };","import { Dispatch, Middleware, MiddlewareAPI, AnyAction } from 'redux';\r\n\r\nimport { Actions, Action, ResponseAction } from '../flight';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { BaseError, ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\n\r\ntype ApplicationMiddlewareApi = MiddlewareAPI<Dispatch<AnyAction>, ApplicationState>;\r\n\r\ntype ApplicationMiddlewareResponse = (next: Dispatch<AnyAction>) => (action: Action) => void;\r\n\r\ninterface MiddlewareOptions {\r\n oldVersionError?: BaseError;\r\n authenticationError?: BaseError;\r\n}\r\n\r\nexport function createApplicationMiddleware(\r\n options: MiddlewareOptions\r\n): Middleware<{}, ApplicationState, Dispatch<AnyAction>> {\r\n const { oldVersionError, authenticationError } = options;\r\n\r\n return function ApplicationMiddleware(store: ApplicationMiddlewareApi): ApplicationMiddlewareResponse {\r\n return (next: Dispatch<AnyAction>) => (action: Action) => {\r\n /**\r\n * This middleware only applies to API_REPONSE actions\r\n */\r\n if (action.type !== Actions.API_REPONSE) {\r\n next(action);\r\n return;\r\n }\r\n\r\n const responseAction = (action as ResponseAction);\r\n\r\n const state = store.getState();\r\n\r\n const currentVersion = state.applicationData.version;\r\n const newVersion = responseAction?.xhr?.getResponseHeader('X-App-Version');\r\n\r\n if (oldVersionError && currentVersion && newVersion && newVersion !== currentVersion)\r\n ErrorHelper.throw(oldVersionError);\r\n\r\n if (authenticationError && responseAction?.xhr?.status === HttpStatus.Unauthorized)\r\n ErrorHelper.throw(authenticationError);\r\n\r\n next(action);\r\n };\r\n };\r\n}","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { ApplicationData } from 'libs/common/react/interfaces/ApplicationData';\r\n\r\nimport { ResponseAction, Action } from 'libs/common/react/flight/interfaces';\r\nimport { Actions } from 'libs/common/react/flight/constants/Actions';\r\n\r\nfunction ApiResponseReducer(state: ApplicationData, action: ResponseAction): ApplicationData {\r\n if (!ObjectHelper.isObject(action.xhr))\r\n return state;\r\n\r\n return {\r\n ...state,\r\n version: action.xhr.getResponseHeader('X-App-Version')\r\n };\r\n}\r\n\r\nconst defaultState: ApplicationData = {\r\n version: null\r\n};\r\n\r\nexport function ApplicationDataReducer(state: ApplicationData = defaultState, action: Action): ApplicationData {\r\n switch (action.type) {\r\n case Actions.API_REPONSE:\r\n return ApiResponseReducer(state, action as ResponseAction);\r\n }\r\n\r\n return state;\r\n}","import { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ViewModelActions } from 'libs/common/react/constants/ViewModelActions';\r\nimport { ViewModelAction } from 'libs/common/react/interfaces/ViewModelAction';\r\n\r\nfunction UpdateViewModel(state: HashObject, action: ViewModelAction): HashObject {\r\n // If setState has been called with key-value arguments\r\n if (typeof action.payload.dataOrKey === 'string' && action.payload.keyData !== undefined) {\r\n return {\r\n ...state,\r\n [action.payload.viewModelKey]: {\r\n ...state[action.payload.viewModelKey],\r\n [action.payload.dataOrKey]: action.payload.keyData\r\n }\r\n };\r\n }\r\n\r\n return {\r\n ...state,\r\n [action.payload.viewModelKey]: action.payload.dataOrKey\r\n };\r\n}\r\n\r\nexport function ViewModelReducer(state: HashObject = {}, action: ViewModelAction): HashObject {\r\n switch (action.type) {\r\n case ViewModelActions.UPDATE:\r\n return UpdateViewModel(state, action);\r\n }\r\n\r\n return state;\r\n}","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 * 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};","import * as _ from 'underscore';\r\nimport linkifyStr from 'linkifyjs/string';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nconst AMPERSAND_REGEX = /&/g;\r\nconst NON_ALPHANUMERIC_REGEX = /[\\W]+/g;\r\nconst WHITESPACE_REGEX = /\\s+/g;\r\n\r\nconst BaseLinkifyOptions = {\r\n className: 'info-link'\r\n};\r\n\r\nexport const TextHelper = {\r\n escapeExpression(text: string): string {\r\n return (window as any).Handlebars.escapeExpression(text);\r\n },\r\n\r\n escapeRegExp(str: string): string {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\r\n },\r\n\r\n slugify(str: string): string {\r\n if (!str) return;\r\n\r\n return str\r\n .toLowerCase()\r\n .replace(AMPERSAND_REGEX, 'and')\r\n .replace(NON_ALPHANUMERIC_REGEX, ' ')\r\n .trim()\r\n .replace(WHITESPACE_REGEX, '-')\r\n .substr(0, 80);\r\n },\r\n\r\n linkifyText(text: string, options?: ObjectHash): string {\r\n if (!text) return;\r\n const ops = options ? _.extend({}, BaseLinkifyOptions, options) : BaseLinkifyOptions;\r\n return linkifyStr(text, ops);\r\n }\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};","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Notification } from 'libs/shared/apps/notifications/models/Notification';\r\n\r\n/**\r\n * @Backbone\r\n */\r\nexport class NotificationCollection extends Core.Collection<Notification> {\r\n public get model(): Core.ModelCtor<Notification> {\r\n return Notification;\r\n }\r\n\r\n public parse(response: any): any {\r\n return response.data || response;\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \" <span class=\\\"text-right pl-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.actionText : stack1), depth0))\n + \"\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.actionText : stack1), depth0))\n + \"</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.icon : stack1), depth0))\n + \" \"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.iconClass : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.icon : stack1), depth0)) != null ? stack1 : \"\")\n + \"</div><div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.contentContainer : stack1), depth0))\n + \"\\\">\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.content : stack1), depth0))\n + \" pl-1\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.content : stack1), depth0))\n + \"</div>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.showActionText : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \" <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.notificationTime : stack1), depth0))\n + \" pl-1\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.notificationTime : stack1), depth0))\n + \"</div>\\r\\n</div>\";\n},\"useData\":true});","import { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport * as moment from 'moment';\r\n\r\nimport { SvgHelper } from 'libs/shared/utils/SvgHelper';\r\nimport { SharedAppChannels } from 'libs/shared/constants/RadioChannels';\r\n\r\nimport { NotificationsHelper } from 'libs/shared/apps/notifications/utils/NotificationsHelper';\r\nimport { NotificationStatus } from 'libs/shared/apps/notifications/enums/NotificationStatus';\r\nimport { NotificationActions } from 'libs/shared/apps/notifications/enums/NotificationActions';\r\nimport { NotificationAlertType } from 'libs/shared/apps/notifications/enums/NotificationAlertType';\r\nimport { NotificationAppLinkHelper } from 'libs/shared/apps/notifications/utils/NotificationAppLinkHelper';\r\n\r\nimport styles from './notification-item.scss';\r\nimport NotificationItemTemplate from './NotificationItem.hbs';\r\n\r\ninterface NotificationItemOptions extends Core.ComponentOptions {\r\n showActionText?: boolean;\r\n}\r\n\r\nexport class NotificationItemComponent extends Core.Component {\r\n public options: NotificationItemOptions;\r\n\r\n constructor(options: NotificationItemOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(this.model, 'change:notificationStatus', this.updateReadStatus);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationItemComponent';\r\n }\r\n\r\n public get template(): any {\r\n return NotificationItemTemplate;\r\n }\r\n\r\n public get tagName(): string {\r\n return 'a';\r\n }\r\n\r\n public get attributes(): any {\r\n if (this.getAppLink())\r\n return {};\r\n\r\n return {\r\n href: this.model.get('link'),\r\n target: '_blank'\r\n };\r\n }\r\n\r\n public get className(): string {\r\n return `notification ${styles.item} px-1 py-2 ${this.getReadStatus()}`;\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n click: 'onClick',\r\n };\r\n }\r\n\r\n private onClick(e: JQueryEventObject): boolean {\r\n /**\r\n * TODO: This shouldn't be using the notifications application channel\r\n */\r\n Radio.channel(SharedAppChannels.NOTIFICATIONS)\r\n .trigger(NotificationActions.Read, this.model.get('id'));\r\n\r\n this.model.set('notificationStatus', NotificationStatus.Read);\r\n\r\n return true;\r\n }\r\n\r\n public get appLinks(): Core.AppLinkHash {\r\n const appLink = this.getAppLink();\r\n\r\n if (!appLink)\r\n return {};\r\n\r\n return {\r\n '[this]': appLink\r\n };\r\n }\r\n\r\n private getAppLink(): Core.AppLink {\r\n const rawAppLink = this.model.get('appLink');\r\n\r\n if (!rawAppLink)\r\n return null;\r\n\r\n const type = this.model.get('notificationType');\r\n\r\n if (!NotificationAppLinkHelper.canBuildAppLink(type))\r\n return null;\r\n\r\n return NotificationAppLinkHelper.parseAppLink(rawAppLink, type);\r\n }\r\n\r\n private updateReadStatus(): void {\r\n this.$el.removeClass('unread read').addClass(this.getReadStatus());\r\n }\r\n\r\n private getReadStatus(): string {\r\n const status = this.model.get('notificationStatus');\r\n\r\n switch (status) {\r\n case NotificationStatus.Read:\r\n return 'read';\r\n default:\r\n case NotificationStatus.Received:\r\n return 'unread';\r\n }\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n const iconColorClass = NotificationsHelper.getIconColorByNotificationType(this.model.get('notificationType'))\r\n || NotificationsHelper.getIconColor(this.model.get('alertType'));\r\n\r\n const iconType = NotificationsHelper.getIconByNotificationType(this.model.get('notificationType'))\r\n || NotificationsHelper.getIcon(this.model.get('alertType'));\r\n\r\n return {\r\n content: this.model.get('body') || this.model.get('name'),\r\n notificationTime: moment(this.model.get('dateCreated')).fromNow(),\r\n icon: SvgHelper.getSvg(iconType),\r\n iconClass: `text-${iconColorClass}`,\r\n styles,\r\n showActionText: this.options.showActionText && this.model.get('alertType') !== NotificationAlertType.Warning,\r\n actionText: NotificationsHelper.getNotificationAction(this.model.get('notificationType')),\r\n };\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"item\":\"cv--item--3CmnQ\",\"icon\":\"cv--icon--YYvWW\",\"contentContainer\":\"cv--contentContainer--1w1Jg\",\"notificationTime\":\"cv--notificationTime--11n-Y\",\"content\":\"cv--content--3JkbY\",\"actionText\":\"cv--actionText--3D1fr\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.icon : stack1), depth0))\n + \" partial-loading-background\\\"></div><div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.contentContainer : stack1), depth0))\n + \"\\\">\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.content : stack1), depth0))\n + \" partial-loading-background ml-1 mt-1\\\"></div>\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.notificationTime : stack1), depth0))\n + \" partial-loading-background ml-1 mt-1\\\"></div>\\r\\n</div>\";\n},\"useData\":true});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"cv--icon--1FlbK\",\"contentContainer\":\"cv--contentContainer--1RJPc\",\"content\":\"cv--content--4fHKQ\",\"notificationTime\":\"cv--notificationTime--3hBwJ\"};","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=\\\"notifications-region\\\"></div>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { EmptyStateBehavior } from 'libs/shared/legacy/behaviors/empty-state/EmptyStateBehavior';\r\nimport { SharedEmptyState } from 'libs/shared/legacy/enums/EmptyState';\r\nimport { EmptyStateComponents } from 'libs/shared/legacy/constants/empty-state-components/EmptyStateComponents';\r\n\r\nimport { NotificationItemComponent } from 'libs/shared/apps/notifications/components/notification-items/notification-item/NotificationItemComponent';\r\n\r\nimport NotificationListTemplate from './NotificationList.hbs';\r\n\r\ntype NotificationComponentType = Core.ModelCtor<NotificationItemComponent>;\r\n\r\nexport enum NotificationChildType {\r\n Default = 0,\r\n Popover\r\n}\r\n\r\nexport interface NotificationComponentCollectionOptions extends Core.ComponentCollectionOptions {\r\n childType: NotificationChildType;\r\n isPopover?: boolean;\r\n}\r\n\r\nclass NotificationComponentCollection extends Core.ComponentCollection {\r\n protected options: NotificationComponentCollectionOptions;\r\n\r\n public constructor(options: NotificationComponentCollectionOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationComponentCollection';\r\n }\r\n\r\n public get className(): string {\r\n return this.options.isPopover && 'popover-list-body-sm';\r\n }\r\n\r\n public get childView(): NotificationComponentType {\r\n return NotificationItemComponent;\r\n }\r\n\r\n public get childViewOptions(): ObjectHash {\r\n return {\r\n showActionText: !this.options.isPopover\r\n };\r\n }\r\n}\r\n\r\ninterface NotificationListComponentOptions extends Core.ComponentOptions {\r\n childType: NotificationChildType;\r\n isPopover?: boolean;\r\n}\r\n\r\nexport class NotificationListComponent extends Core.Component {\r\n public options: NotificationListComponentOptions;\r\n\r\n public constructor(options: NotificationListComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationListComponent';\r\n }\r\n\r\n public get template(): string {\r\n return NotificationListTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'notifications.notificationList';\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n notifications: {\r\n el: '.notifications-region',\r\n replaceElement: true\r\n }\r\n };\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: EmptyStateBehavior,\r\n region: 'notifications',\r\n type: SharedEmptyState.Notifications,\r\n componentOptions: this.getEmptyStateComponentOptions(),\r\n emptyStateComponents: EmptyStateComponents\r\n }\r\n ];\r\n }\r\n\r\n private getEmptyStateComponentOptions(): ObjectHash {\r\n if (!this.options.isPopover) return {\r\n noNotificationsText: LanguageService.getPhrase(this.lang, 'noNotifications')\r\n };\r\n\r\n return {\r\n customClass: 'px-0 py-3',\r\n imageSize: 'sm',\r\n noNotificationsText: LanguageService.getPhrase(this.lang, 'noNotifications')\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.showChildView('notifications', new NotificationComponentCollection(this.options));\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<span class=\\\"badge badge-danger badge-pill \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.unreadCount : stack1), depth0))\n + \"\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.unreadCount : stack1), depth0))\n + \"</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return ((stack1 = container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.unreadCount : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport NotificationStatusTemplate from './NotificationStatus.hbs';\r\nimport styles from './notification-status.scss';\r\n\r\ninterface NotificationStatusComponentOptions extends Core.ComponentOptions {\r\n color: 'light' | 'dark';\r\n}\r\n\r\nexport class NotificationStatusComponent extends Core.Component {\r\n public options: NotificationStatusComponentOptions;\r\n\r\n public constructor(options: NotificationStatusComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationStatusComponent';\r\n }\r\n\r\n public get className(): string {\r\n return `notification-status mx-2 ${styles.notificationIcon} ${styles[this.options.color]}`;\r\n }\r\n\r\n public get template(): any {\r\n return NotificationStatusTemplate;\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(this.model, 'change:unreadCount', this.render);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n svg: SvgHelper.getSvg(cvSvgLibrary.Bell),\r\n unreadCount: this.model.get('unreadCount')\r\n };\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notificationIcon\":\"cv--notificationIcon--3SkbQ\",\"light\":\"cv--light--2TvQg\",\"dark\":\"cv--dark--3taGb\",\"unreadCount\":\"cv--unreadCount--1u6ig\"};","export enum AppLinkReferrer {\r\n Notification = 'notification'\r\n}","export enum NotificationActions {\r\n Read = 'notification:read'\r\n}","export enum NotificationAlertType {\r\n Other = 0,\r\n Alert = 1,\r\n Warning = 2,\r\n Info = 3,\r\n Success = 4\r\n}","export enum NotificationAppLinkModules {\r\n Video = 'video',\r\n Url = 'url',\r\n Module = 'module',\r\n App = 'app',\r\n StaffRequest = 'staff_request'\r\n}","export enum NotificationModules {\r\n LibraryReview = 'libraryreview',\r\n ContentUpdates = 'newcontent'\r\n}","export enum NotificationStatus {\r\n Received = 1,\r\n Seen = 2,\r\n Read = 3\r\n}","export enum NotificationType {\r\n ExchangeVideoAvailable = 'exchange-video-available',\r\n WorkspaceVideoAvailable = 'workspace-video-available',\r\n Marketing = 'marketing',\r\n EditedVideoAvailable = 'edited-video-available',\r\n VideoRequestAvailable = 'pay-tv-video-available',\r\n VideoRequestDenied = 'pay-tv-video-denied',\r\n VideoReviewReminder = 'term-update-review-reminder',\r\n VideoReviewAddedToLibrary = 'term-update-review-videos-added-to-library',\r\n CustomLibraryVideoAvailable = 'custom-library-video-available',\r\n VideoProcessingFailed = 'video-processing-failed',\r\n StaffRequest = 'new-staff-request',\r\n StaffRequestFulfilled = 'staff-request-fulfilment',\r\n ChapterMergeSuccess = 'media-concatenate-success',\r\n SuggestEdit = 'suggest-an-edit'\r\n}","import { Core } from 'libs/common/core';\r\n\r\n/**\r\n * @Backbone\r\n */\r\nexport class Notification extends Core.Model {}","import * as moment from 'moment';\r\n\r\nimport { Cursors } from 'libs/common/backbone/interfaces';\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\r\n\r\nimport { NotificationStatus } from 'libs/shared/apps/notifications/enums/NotificationStatus';\r\nimport { NotificationCollectionRequest } from 'libs/shared/apps/notifications/interfaces';\r\nimport { NotificationCollection } from 'libs/shared/apps/notifications/collections/NotificationCollection';\r\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nconst endpoints = {\r\n getNotifications: (userId: string, requestParams?: NotificationCollectionRequest) => {\r\n let url = `/api/domain/v2/objects/${userId}/notifications?query={orderbydesc:datecreated}`;\r\n\r\n if (!requestParams) return url;\r\n\r\n const { limit, cursor, before } = requestParams;\r\n\r\n const params: string[] = [];\r\n\r\n const filter = UrlHelper.buildFilter({ limit, before });\r\n\r\n if (filter) params.push(`filter=${filter}`);\r\n if (cursor) params.push(`cursor=${cursor}`);\r\n\r\n if (!params.length) return url;\r\n\r\n return `${url}&${params.join('&')}`;\r\n },\r\n markRead: (id: string) => `/api/notifications/v1/notifications/${id}`,\r\n markSeen: `/api/notifications/v1/notifications`,\r\n sendNotification: `/api/domain/v1/notifications`\r\n};\r\n\r\nexport class NotificationDataService extends BaseDataService {\r\n public get name(): string {\r\n return SharedDataServices.Notification;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.NOTIFICATIONS;\r\n }\r\n\r\n public get lang(): string {\r\n return 'notifications.services';\r\n }\r\n\r\n public getNotifications(userId: string, params: NotificationCollectionRequest,\r\n collectionIdentifier: string,\r\n callback?: (data?: any) => any): NotificationCollection {\r\n\r\n return this.get<NotificationCollection>({\r\n resource: endpoints.getNotifications(userId, params),\r\n expiryTime: CacheDurations.STANDARD,\r\n eventPrefix: collectionIdentifier,\r\n formatData: (data: any) => new NotificationCollection(data, { parse: true }),\r\n callback\r\n });\r\n }\r\n\r\n public markRead(id: string, callback?: (data?: any) => any): void {\r\n return this.update<Notification>({\r\n callback,\r\n data: { notificationStatus: NotificationStatus.Read },\r\n resource: endpoints.markRead(id),\r\n eventPrefix: `${SharedDataPrefixes.NOTIFICATIONS}:read`\r\n });\r\n }\r\n\r\n public markSeen(callback?: () => any): void {\r\n const lastSeen = moment().utc().toISOString();\r\n\r\n return this.update<Notification>({\r\n callback,\r\n data: { notificationStatus: NotificationStatus.Seen },\r\n resource: `${endpoints.markSeen}?to=${lastSeen}&notificationStatus=${NotificationStatus.Received}`,\r\n eventPrefix: `${SharedDataPrefixes.NOTIFICATIONS}:seen`\r\n });\r\n }\r\n\r\n public getNotificationsCursors(collectionIdentifier: string): Cursors {\r\n return this.getCursors(collectionIdentifier);\r\n }\r\n\r\n public suggestEdit(data: any, callback?: (data: any) => void): any {\r\n return this.create({\r\n resource: `${endpoints.sendNotification}`,\r\n eventPrefix: `${SharedDataPrefixes.SUGGEST_EDIT}`,\r\n callback,\r\n data,\r\n successHandler: this.alertService.success(LanguageService.getPhrase(this.lang, 'suggestEditSubmit')),\r\n errorHandler: this.alertService.error({ useXHR: true })\r\n });\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { Cursors } from 'libs/common/backbone/interfaces';\r\n\r\nimport { UserDataService } from 'libs/shared/services/UserDataService';\r\nimport { User } from 'libs/shared/interfaces';\r\nimport { SharedDataServices, SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataChannels, SharedAppChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { CollectionIdentifier } from 'libs/shared/legacy/interfaces';\r\n\r\nimport { NotificationCollectionRequest } from 'libs/shared/apps/notifications/interfaces';\r\nimport { NotificationCollection } from 'libs/shared/apps/notifications/collections/NotificationCollection';\r\nimport { Notification } from 'libs/shared/apps/notifications/models/Notification';\r\nimport { NotificationActions } from 'libs/shared/apps/notifications/enums/NotificationActions';\r\nimport { NotificationDataService } from 'libs/shared/apps/notifications/services/NotificationDataService';\r\nimport { NotificationSocketService } from 'libs/shared/apps/notifications/services/NotificationSocketService';\r\n\r\nexport class NotificationService extends Core.Service {\r\n private notificationDataService: NotificationDataService;\r\n private notificationSocketService: NotificationSocketService;\r\n private userDataService: UserDataService;\r\n\r\n public constructor() {\r\n super();\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.Notification;\r\n }\r\n\r\n private initDataServices(): void {\r\n this.notificationDataService = InstanceManager.getInstance(SharedDataServices.Notification, this);\r\n this.notificationSocketService = InstanceManager.getInstance(SharedDataServices.NotificationSocket, this);\r\n this.userDataService = InstanceManager.getInstance(SharedDataServices.User, this);\r\n\r\n this.bindSocketListeners();\r\n this.bindAppListeners();\r\n }\r\n\r\n private bindSocketListeners(): void {\r\n const prefix = SharedDataPrefixes.NOTIFICATIONS;\r\n\r\n this.listenTo(SharedDataChannels.NOTIFICATIONS_SOCKET, `${prefix}:new:sync`, this.addNewNotification);\r\n this.listenTo(SharedDataChannels.NOTIFICATIONS_SOCKET, `${prefix}:count:sync`, this.updateUnreadCount);\r\n\r\n this.listenTo(SharedDataChannels.NOTIFICATIONS, `${prefix}:seen`, this.updateUnreadCount);\r\n }\r\n\r\n private bindAppListeners(): void {\r\n /**\r\n * TODO: This shouldnt be using the Notification Application channel\r\n */\r\n this.listenTo(SharedAppChannels.NOTIFICATIONS, NotificationActions.Read, this.markNotificationRead);\r\n }\r\n\r\n private getDataServices(): boolean {\r\n if (this.dataServicesExist())\r\n return;\r\n\r\n this.initDataServices();\r\n }\r\n\r\n private dataServicesExist(): boolean {\r\n return !!this.notificationSocketService && !!this.notificationDataService;\r\n }\r\n\r\n /**\r\n * On receiving a new notification via signalr, add the model to the top of the\r\n * first page's collection.\r\n */\r\n private addNewNotification(newNotification: Notification): void {\r\n this.userDataService.getCurrentUser((user: Core.Model | User) => {\r\n\r\n /**\r\n * Deliberately passing null for params, to ensure that if we need to retrieve\r\n * the collection, it fetches the first page. The non-dynamic eventPrefix is\r\n * used to ensure that we can retrieve the collection from the cache if it already\r\n * exists (without any cursors). \r\n */\r\n this.notificationDataService.getNotifications(user.id, null, SharedDataPrefixes.NOTIFICATIONS,\r\n (collection: NotificationCollection) => {\r\n collection.add(newNotification, { at: 0 });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Triggered by signalr callback event when loading notifications in the top bar\r\n */\r\n private updateUnreadCount(unreadCount: number = 0): void {\r\n const model: Core.Model = ViewModelService.get(SharedDataPrefixes.NOTIFICATIONS);\r\n model.set('unreadCount', unreadCount);\r\n }\r\n\r\n public getNotifications(params: NotificationCollectionRequest,\r\n collectionIdentifier: CollectionIdentifier,\r\n callback?: (data?: any) => any): void {\r\n\r\n this.getDataServices();\r\n\r\n\r\n // Listen for new notifications\r\n this.notificationSocketService.receiveLatestNotifications();\r\n\r\n this.userDataService.getCurrentUser((user: Core.Model | User) => {\r\n this.notificationDataService.getNotifications(user.id, params, collectionIdentifier.toString(), callback);\r\n });\r\n }\r\n\r\n /**\r\n * Retrive current unread notification count\r\n */\r\n public getNotificationsMetadata(): Core.Model {\r\n this.getDataServices();\r\n\r\n this.notificationSocketService.receiveUnreadNotificationCount();\r\n return ViewModelService.get(SharedDataPrefixes.NOTIFICATIONS);\r\n }\r\n\r\n public markNotificationsSeen(): void {\r\n this.notificationDataService.markSeen();\r\n }\r\n\r\n public markNotificationRead(id: string): void {\r\n this.notificationDataService.markRead(id);\r\n }\r\n\r\n public getNotificationsCursors(collectionIdentifier: CollectionIdentifier): Cursors {\r\n return this.notificationDataService.getNotificationsCursors(collectionIdentifier.toString());\r\n }\r\n}","import { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\n\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { Notification } from 'libs/shared/apps/notifications/models/Notification';\r\n\r\nexport class NotificationSocketService extends BaseDataService {\r\n public get name(): string {\r\n return SharedDataServices.NotificationSocket;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.NOTIFICATIONS_SOCKET;\r\n }\r\n\r\n public receiveLatestNotifications(callback?: (notification: Notification) => any): Notification {\r\n return this.get<Notification>({\r\n callback,\r\n formatData: (data: any) => new Notification(data),\r\n resource: `notify`,\r\n eventPrefix: `${SharedDataPrefixes.NOTIFICATIONS}:new`\r\n });\r\n }\r\n\r\n public receiveUnreadNotificationCount(callback?: (unreadCount: number) => any): number {\r\n return this.get<number>({\r\n callback,\r\n resource: `notifyCount`,\r\n eventPrefix: `${SharedDataPrefixes.NOTIFICATIONS}:count`\r\n });\r\n }\r\n}","import { SignalRDataProvider } from 'libs/common/backbone/services/data-providers/SignalRDataProvider';\r\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\r\n\r\nexport class NotificationsSocketDataProvider extends SignalRDataProvider {\r\n public get name(): string {\r\n return DataProviders.Notifications;\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { BaseNotificationsAppVariables } from 'libs/shared/interfaces';\r\n\r\nimport { AppLinkReferrer } from 'libs/shared/apps/notifications/enums/AppLinkReferrer';\r\nimport { NotificationModules } from 'libs/shared/apps/notifications/enums/NotificationModules';\r\nimport { NotificationAppLinkModules } from 'libs/shared/apps/notifications/enums/NotificationAppLinkModules';\r\nimport { NotificationType } from 'libs/shared/apps/notifications/enums/NotificationType';\r\n\r\nfunction getAppVariables(): BaseNotificationsAppVariables {\r\n return InstanceManager.getInstance(AppVariables.NOTIFICATIONS, this);\r\n}\r\n\r\n/**\r\n * Move this logic back to library editor\r\n */\r\nfunction getModuleAppLink(moduleType: string, id: string): Core.AppLink {\r\n const appVariables = getAppVariables();\r\n\r\n if (id === NotificationModules.ContentUpdates)\r\n return appVariables.appLinks.pastReleases;\r\n\r\n if (id === NotificationModules.LibraryReview)\r\n return appVariables.appLinks.awaitingReview;\r\n}\r\n\r\nfunction getVideoAppLink(module: string, id: string, notificationType: string): Core.AppLink {\r\n return {\r\n ...getAppVariables().appLinks.videoDetails,\r\n args: [id]\r\n };\r\n}\r\n\r\nfunction getStaffRequestAppLink(module: string, id: string, notificationType: string): Core.AppLink {\r\n return {\r\n ...getAppVariables().appLinks.editStaffRequest,\r\n args: [id],\r\n params: { referrer: AppLinkReferrer.Notification }\r\n };\r\n}\r\n\r\nfunction mapModuleToAppLink(moduleType: string, id: string, notificationType: string): Core.AppLink {\r\n if (moduleType === NotificationAppLinkModules.Module)\r\n return getModuleAppLink(moduleType, id);\r\n\r\n if (moduleType === NotificationAppLinkModules.Video)\r\n return getVideoAppLink(moduleType, id, notificationType);\r\n\r\n if (moduleType === NotificationAppLinkModules.StaffRequest)\r\n return getStaffRequestAppLink(moduleType, id, notificationType);\r\n}\r\n\r\nexport const NotificationAppLinkHelper = {\r\n\r\n /**\r\n * Determine if the current notificationType is supported within the project so that\r\n * we can construct an AppLink. Where it is not supported, we will just use the link. \r\n */\r\n canBuildAppLink: (Notificationtype: NotificationType): boolean => {\r\n return _.contains(getAppVariables().notificationTypesWithAppLinks, Notificationtype);\r\n },\r\n\r\n parseAppLink: (appLink: string, type: string): Core.AppLink => {\r\n if (!appLink || !type) return;\r\n\r\n const [ rawModule, rawId ] = appLink.split(':');\r\n\r\n return mapModuleToAppLink(rawModule, rawId, type);\r\n }\r\n};\r\n","import * as _ from 'underscore';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { NotificationType } from 'libs/shared/apps/notifications/enums/NotificationType';\r\nimport { NotificationAlertType } from 'libs/shared/apps/notifications/enums/NotificationAlertType';\r\n\r\nconst lang = 'notifications.utils';\r\n\r\nconst MarketingNotification = /^marketing-/;\r\n\r\nexport const NotificationsHelper = {\r\n getIconColor: (type: NotificationAlertType) => {\r\n switch (type) {\r\n\r\n case NotificationAlertType.Success:\r\n return 'success';\r\n\r\n case NotificationAlertType.Alert:\r\n return 'danger';\r\n\r\n case NotificationAlertType.Warning:\r\n return 'warning';\r\n\r\n case NotificationAlertType.Info:\r\n case NotificationAlertType.Other:\r\n default:\r\n return 'dark';\r\n }\r\n },\r\n\r\n getIcon: (type: NotificationAlertType) => {\r\n switch (type) {\r\n\r\n case NotificationAlertType.Success:\r\n return cvSvgLibrary.CheckCircle;\r\n\r\n case NotificationAlertType.Alert:\r\n case NotificationAlertType.Warning:\r\n return cvSvgLibrary.Warning;\r\n\r\n case NotificationAlertType.Info:\r\n case NotificationAlertType.Other:\r\n default:\r\n return cvSvgLibrary.Info;\r\n }\r\n },\r\n\r\n /**\r\n * This is a manual override based on the notification type. This is only\r\n * temporary as some noitifications don't have the correct alert type.\r\n */\r\n getIconColorByNotificationType: (type: NotificationType) => {\r\n if (type === NotificationType.VideoProcessingFailed ||\r\n type === NotificationType.VideoRequestDenied)\r\n return 'danger';\r\n\r\n if (type.match(MarketingNotification))\r\n return 'warning';\r\n },\r\n\r\n /**\r\n * This is a manual override based on the notification type.\r\n * Using this to detect marketing notifications as they don't have a fixed\r\n * type atm.\r\n */\r\n getIconByNotificationType: (type: NotificationType) => {\r\n if (type.match(MarketingNotification))\r\n return cvSvgLibrary.Star;\r\n },\r\n\r\n getNotificationAction: (type: NotificationType): string => {\r\n switch (type) {\r\n case NotificationType.VideoReviewAddedToLibrary:\r\n case NotificationType.WorkspaceVideoAvailable:\r\n case NotificationType.ExchangeVideoAvailable:\r\n case NotificationType.EditedVideoAvailable:\r\n return LanguageService.getPhrase(lang, 'viewVideo');\r\n\r\n case NotificationType.VideoReviewReminder:\r\n return LanguageService.getPhrase(lang, 'reviewVideos');\r\n\r\n case NotificationType.VideoReviewAddedToLibrary:\r\n return LanguageService.getPhrase(lang, 'viewNewContent');\r\n\r\n case NotificationType.CustomLibraryVideoAvailable:\r\n return LanguageService.getPhrase(lang, 'viewVideoDetails');\r\n\r\n case NotificationType.StaffRequest:\r\n return LanguageService.getPhrase(lang, 'reviewVideo');\r\n\r\n default:\r\n return LanguageService.getPhrase(lang, 'seeNow');\r\n }\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 var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"notifications-status-region\\\" data-toggle=\\\"dropdown\\\"></div>\\r\\n<div class=\\\"notifications-region dropdown-menu dropdown-menu-right dropdown-arrow p-0 \"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.notificationsContainer : stack1), depth0))\n + \"\\\"></div>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { BaseNotificationsAppVariables } from 'libs/shared/interfaces';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nimport { NotificationStatusComponent } from 'libs/shared/apps/notifications/components/notification-status/NotificationStatusComponent';\r\nimport { NotificationChildType } from 'libs/shared/apps/notifications/components/notification-list/NotificationListComponent';\r\nimport { NotificationService } from 'libs/shared/apps/notifications/services/NotificationService';\r\nimport { NotificationsPopoverView } from 'libs/shared/apps/notifications/views/popover/NotificationsPopoverView';\r\n\r\nimport NotificationHeaderTemplate from './NotificationHeader.hbs';\r\nimport styles from './notification-header.scss';\r\n\r\nexport class NotificationHeaderView extends Core.View {\r\n private appVariables: BaseNotificationsAppVariables;\r\n\r\n public initialize(): void {\r\n this.appVariables = InstanceManager.getInstance(AppVariables.NOTIFICATIONS);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationHeaderView';\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get className(): string {\r\n return 'd-flex align-items-center position-relative';\r\n }\r\n\r\n public get template(): any {\r\n return NotificationHeaderTemplate;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n status: {\r\n el: '.notifications-status-region',\r\n replaceElement: false\r\n },\r\n notifications: {\r\n el: '.notifications-region',\r\n replaceElement: false\r\n }\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .notifications-status-region': 'renderNotificationList'\r\n };\r\n }\r\n\r\n private renderNotificationList(): void {\r\n const view = new NotificationsPopoverView({\r\n childType: NotificationChildType.Popover\r\n });\r\n\r\n this.showChildView('notifications', view);\r\n }\r\n\r\n private renderNotificationStatus(): void {\r\n const notificationService = InstanceManager.getInstance<NotificationService>(SharedServices.Notification);\r\n const view = new NotificationStatusComponent({\r\n model: notificationService.getNotificationsMetadata(),\r\n color: this.appVariables.bellIconColor\r\n });\r\n\r\n this.showChildView('status', view);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return styles;\r\n }\r\n\r\n public onRender(): void {\r\n this.renderNotificationStatus();\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notificationsContainer\":\"cv--notificationsContainer--3BMCf\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"py-2 border-top text-right px-2\\\">\\r\\n <a class=\\\"see-all\\\">\"\n + container.escapeExpression((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),\"seeAll\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</div>\\r\\n</div>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<h5 class=\\\"header p-2 m-0 border-bottom\\\">\"\n + container.escapeExpression((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(alias2,\"notifications\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</h5>\\r\\n<div class=\\\"list-region\\\"></div>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.hasNotifications : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { PartialLoadingComponentTypes } from 'libs/shared/enums/PartialLoading';\r\n\r\nimport { BaseNotificationsAppVariables } from 'libs/shared/interfaces';\r\nimport { CollectionIdentifier } from 'libs/shared/legacy/interfaces';\r\n\r\nimport { NotificationCollection } from 'libs/shared/apps/notifications/collections/NotificationCollection';\r\nimport { NotificationListComponent, NotificationChildType } from 'libs/shared/apps/notifications/components/notification-list/NotificationListComponent';\r\nimport { NotificationService } from 'libs/shared/apps/notifications/services/NotificationService';\r\n\r\nimport NotificationsPopoverTemplate from './NotificationsPopover.hbs';\r\n\r\nimport PartialLoadingTemplate from '../../components/notification-items/partial-loading/NotificationsPartial.hbs';\r\nimport PartialLoadingStyles from '../../components/notification-items/partial-loading/notification-partial.scss';\r\n\r\nexport interface NotificationsPopoverViewOptions extends Core.ViewOptions {\r\n childType: NotificationChildType;\r\n}\r\n\r\nexport class NotificationsPopoverView extends Core.View {\r\n public options: NotificationsPopoverViewOptions;\r\n public collection: NotificationCollection;\r\n private collectionIdentifier: CollectionIdentifier;\r\n private notificationService: NotificationService;\r\n private appVariables: BaseNotificationsAppVariables;\r\n\r\n public constructor(options: NotificationsPopoverViewOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'NotificationPopoverView';\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get lang(): string {\r\n return 'notifications.notificationsPopover';\r\n }\r\n\r\n public get className(): string {\r\n return 'notifications-container';\r\n }\r\n\r\n public get template(): any {\r\n return NotificationsPopoverTemplate;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n notifications: {\r\n replaceElement: true,\r\n el: '.list-region',\r\n partialLoading: {\r\n component: PartialLoadingComponentTypes.ComponentCollection,\r\n options: {\r\n collectionLength: 5,\r\n childOptions: {\r\n template: PartialLoadingTemplate,\r\n className: `px-1 py-2`,\r\n viewOptions: {\r\n styles: PartialLoadingStyles\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n anchor: '.see-all',\r\n };\r\n }\r\n\r\n public get appLinks(): Core.AppLinkHash {\r\n return {\r\n '@ui.anchor': this.appVariables.appLinks.notifications\r\n };\r\n }\r\n\r\n public initialize(): void {\r\n this.notificationService = InstanceManager.getInstance(SharedServices.Notification, this);\r\n this.appVariables = InstanceManager.getInstance(AppVariables.NOTIFICATIONS, this);\r\n }\r\n\r\n private onData(collection: NotificationCollection): void {\r\n this.collection = collection;\r\n this.render();\r\n }\r\n\r\n private getCollectionIdentifier(): CollectionIdentifier {\r\n if (this.collectionIdentifier)\r\n return this.collectionIdentifier;\r\n\r\n /**\r\n * Currently we only retrieve the first page\r\n */\r\n return this.collectionIdentifier = new CollectionIdentifier({\r\n collectionPrefix: SharedDataPrefixes.NOTIFICATIONS\r\n });\r\n }\r\n\r\n private renderNotificationList(): void {\r\n const view = new NotificationListComponent({\r\n collection: this.collection,\r\n childType: this.options.childType,\r\n isPopover: true\r\n });\r\n\r\n this.showChildView('notifications', view);\r\n }\r\n\r\n/**\r\n * Only trigger the notification seen event once the collection has been loaded.\r\n */\r\n private triggerSeen(): void {\r\n this.notificationService.markNotificationsSeen();\r\n }\r\n\r\n public onBeforeRender(): boolean {\r\n /**\r\n * Deliberately passing null to always fetch the first page for the popover.\r\n * In future, we may add infinite scroll, at which point this will need to change.\r\n */\r\n if (!this.collection) {\r\n this.notificationService.getNotifications(null,\r\n this.getCollectionIdentifier(),\r\n (collection: NotificationCollection) => this.onData(collection)\r\n );\r\n }\r\n\r\n return !!this.collection;\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n hasNotifications: this.collection && this.collection.length\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderNotificationList();\r\n this.triggerSeen();\r\n }\r\n}\r\n","export enum PlaylistSortType {\r\n Newest = 'newest',\r\n RecentlyUpdated = 'recentlyupdated',\r\n AtoZ = 'atoz'\r\n}","import { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\n\r\nexport const PlaylistSortHelper = {\r\n getFilterFromSort(sort: PlaylistSortType): string {\r\n switch (sort) {\r\n case PlaylistSortType.RecentlyUpdated:\r\n return 'orderbydesc:timestamp';\r\n case PlaylistSortType.AtoZ:\r\n return 'orderby:name';\r\n case PlaylistSortType.Newest:\r\n return 'orderbydesc:datecreated';\r\n default:\r\n return 'orderbydesc:datecreated';\r\n }\r\n },\r\n getSortTypeFromName(sortName: string): PlaylistSortType {\r\n switch (sortName) {\r\n case 'recentlyupdated':\r\n return PlaylistSortType.RecentlyUpdated;\r\n case 'atoz':\r\n return PlaylistSortType.AtoZ;\r\n case 'newest':\r\n return PlaylistSortType.Newest;\r\n default:\r\n return PlaylistSortType.Newest;\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 var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<span class=\\\"float-right\\\">\\r\\n \"\n + ((stack1 = container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.confirmSelectionText : stack1), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n</span> \";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport ConfirmSelectionTemplate from './ConfirmSelection.hbs';\r\nimport styles from './confirm-selection.scss';\r\n\r\nconst lang = 'shared.utils';\r\n\r\ninterface ConfirmSelectionComponentOptions extends Core.ComponentOptions {}\r\n\r\nexport class ConfirmSelectionComponent extends Core.Component {\r\n constructor(options: ConfirmSelectionComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'ConfirmSelectionComponent';\r\n }\r\n\r\n public get template(): string {\r\n return ConfirmSelectionTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return `suggestion-footer empty-suggestion px-2 ${styles.selectionContainer} clearfix`;\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n confirmSelectionText: LanguageService.getPhrase(lang, 'confirmSelection', {\r\n svg: `<kbd><span class=\"${styles.svgContainer}\">${SvgHelper.getSvg(cvSvgLibrary.Enter)}</span></kbd>`\r\n })\r\n };\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectionContainer\":\"cv--selectionContainer--3m62c\",\"svgContainer\":\"cv--svgContainer--1XxEl\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<a class=\\\"row\\\" href=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.url : stack1), depth0))\n + \"\\\">\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.coverContainer : stack1), depth0))\n + \" px-2\\\">\\r\\n <div class=\\\"cover-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.textContainer : stack1), depth0))\n + \" px-2\\\">\\r\\n <div class=\\\"result-title text-capitalize\\\">\"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n </div>\\r\\n</a>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseSearchAppVariables } from 'libs/shared/interfaces';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { ThumbnailComponent } from 'libs/shared/legacy/components/thumbnail/ThumbnailComponent';\r\n\r\nimport * as styles from './classification-search-result.scss';\r\nimport ClassificationSearchResultTemplate from './ClassificationSearchResult.hbs';\r\n\r\nexport class ClassificationSearchResultComponent extends Core.Component {\r\n public appVariables: BaseSearchAppVariables;\r\n\r\n public initialize(): void {\r\n this.appVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n }\r\n\r\n public get name(): string {\r\n return 'ClassificationSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return ClassificationSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'p-2 container-fluid';\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n cover: {\r\n replaceElement: true,\r\n el: '.cover-region'\r\n }\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click a' : 'onClick'\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n // Prevent the href navigation, but allow the event to bubble up \r\n e.preventDefault();\r\n return true;\r\n }\r\n\r\n private getUrl(): string {\r\n return Core.AppLinkHelper.getHref({\r\n ...this.appVariables.appLinks.classification,\r\n args: [this.model.get('id')]\r\n });\r\n }\r\n\r\n private renderThumbnail(): void {\r\n const component = new ThumbnailComponent({\r\n model: this.model,\r\n classNameOverride: `${styles.coverImage} responsive-img`\r\n });\r\n\r\n this.showChildView('cover', component);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n url: this.getUrl(),\r\n styles\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderThumbnail();\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"coverImage\":\"cv--coverImage--1_Tx-\",\"coverContainer\":\"cv--coverContainer--3Qf-6\",\"textContainer\":\"cv--textContainer--34VXV\"};","export * from './recent-search/RecentSearchResultComponent';\r\nexport * from './series/SeriesSearchResultComponent';\r\nexport * from './tag/TagSearchResultComponent';\r\nexport * from './video-result/VideoSearchResultComponent';\r\nexport * from './classification/ClassificationSearchResultComponent';","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.escapeExpression, alias3=container.lambda;\n\n return \"<div class=\\\"row\\\">\\r\\n <div class=\\\"recent-text col-11 recent\\\">\"\n + alias2(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n <div class=\\\"col-1 text-center\\\">\\r\\n <span aria-hidden=\\\"true\\\" class=\\\"remove-recent \"\n + alias2(alias3(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.removeRecent : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias3(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.closeSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n </div>\\r\\n</div>\";\n},\"useData\":true});","import { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport RecentSearchResultTemplate from './RecentSearchResult.hbs';\r\nimport styles from './recent-search.scss';\r\n\r\ninterface RecentSearchResultComponentOptions extends Core.ComponentOptions {\r\n channelName: string;\r\n}\r\n\r\nexport class RecentSearchResultComponent extends Core.Component {\r\n constructor(options: RecentSearchResultComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'RecentSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return RecentSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'text-capitalize p-2 container-fluid';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .remove-recent': 'onClick'\r\n };\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n closeSvg: SvgHelper.getSvg(cvSvgLibrary.Close)\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n e.stopPropagation();\r\n\r\n setTimeout(() => {\r\n const channel = Radio.channel(this.options.channelName);\r\n channel.trigger('remove:recent', this.model.get('name'));\r\n }, 0);\r\n\r\n this.destroy();\r\n return false;\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"removeRecent\":\"cv--removeRecent--d1QVW\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=\"function\", alias5=container.escapeExpression;\n\n return \"<a href=\\\"\"\n + alias5(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias5(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</a>\";\n},\"useData\":true});","import { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport SeriesSearchResultTemplate from './SeriesSearchResult.hbs';\r\n\r\nexport class SeriesSearchResultComponent extends Core.Component {\r\n public get name(): string {\r\n return 'SeriesSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return SeriesSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'text-capitalize p-2';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click a' : 'onClick'\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n // Prevent the href navigation, but allow the event to bubble up \r\n e.preventDefault();\r\n return true;\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 var helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=\"function\", alias5=container.escapeExpression;\n\n return \"<a href=\\\"\"\n + alias5(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\\r\\n <span class=\\\"text-capitalize badge-pill tag py-1 px-2 my-1 mr-1\\\">\"\n + alias5(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\r\\n</a>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport TagSearchResultTemplate from './TagSearchResult.hbs';\r\n\r\nexport class TagSearchResultComponent extends Core.Component {\r\n public get name(): string {\r\n return 'TagSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return TagSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'text-capitalize p-2';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click a' : 'onClick'\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n // Prevent the href navigation, but allow the event to bubble up \r\n e.preventDefault();\r\n return true;\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \"aligned\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \" <div class=\\\"result-title collection\\\"> \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.collection : stack1)) != null ? stack1.type : stack1), depth0))\n + \": \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.collection : stack1)) != null ? stack1.name : stack1), depth0))\n + \" </div>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<a class=\\\"row\\\" href=\\\"\"\n + alias2(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.url : stack1), depth0))\n + \"\\\">\\r\\n <div class=\\\"video-img col-2\\\">\\r\\n <div class=\\\"thumbnail-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"col-10\\\">\\r\\n <div class=\\\"result-title text-capitalize \"\n + ((stack1 = helpers.unless.call(alias3,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.collection : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\"\n + alias2(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias3,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias3,((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.collection : stack1)) != null ? stack1.name : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \" </div>\\r\\n</a>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { BaseSearchAppVariables } from 'libs/shared/interfaces';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { ThumbnailComponent } from 'libs/shared/legacy/components/thumbnail/ThumbnailComponent';\r\n\r\nimport VideoSearchResultTemplate from './VideoSearchResult.hbs';\r\n\r\nexport class VideoSearchResultComponent extends Core.Component<any> {\r\n public appVariables: BaseSearchAppVariables;\r\n\r\n public initialize(): void {\r\n this.appVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n }\r\n\r\n public get name(): string {\r\n return 'VideoSearchResultComponent';\r\n }\r\n\r\n public get template(): string {\r\n return VideoSearchResultTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return 'video-result p-2 container-fluid';\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n thumbnail: {\r\n replaceElement: true,\r\n el: '.thumbnail-region'\r\n }\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click a' : 'onClick'\r\n };\r\n }\r\n\r\n private onClick(e: JQuery.Event): boolean {\r\n // Prevent the href navigation, but allow the event to bubble up \r\n e.preventDefault();\r\n return true;\r\n }\r\n\r\n private getCollection(): ObjectHash {\r\n const { categories, series } = this.model;\r\n\r\n if (categories && categories.length) {\r\n const category = categories.first();\r\n return { name: category.get('name'), type: 'Folder' };\r\n }\r\n\r\n if (series && series.get('name'))\r\n return { name: series.get('name'), type: 'Series' };\r\n\r\n return;\r\n }\r\n\r\n private getUrl(): string {\r\n return Core.AppLinkHelper.getHref({\r\n ...this.appVariables.appLinks.videoDetails,\r\n args: [this.model.get('id')]\r\n });\r\n }\r\n\r\n private renderThumbnail(): void {\r\n const component = new ThumbnailComponent({\r\n model: this.model\r\n });\r\n\r\n this.showChildView('thumbnail', component);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n collection: this.getCollection(),\r\n url: this.getUrl()\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderThumbnail();\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 var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {}), alias5=container.hooks.helperMissing, alias6=\"function\";\n\n return \"<span class=\\\"d-inline-block tool-tip \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.searchContextTag : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias3(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"title\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\\r\\n <span>\"\n + alias3(((helper = (helper = helpers.searchTag || (depth0 != null ? depth0.searchTag : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"searchTag\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\r\\n <span class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.closeSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n</span>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { TooltipBehavior } from 'libs/shared/legacy/behaviors/tooltip/TooltipBehavior';\r\n\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport SearchContextTemplate from './SearchContext.hbs';\r\nimport styles from './search-context.scss';\r\n\r\nexport class SearchContextComponent extends Core.Component {\r\n public initialize(): void {\r\n this.listenTo(SharedServiceChannels.CONTEXTUAL_SEARCH, 'typeahead:toggle', this.toggleFocus);\r\n }\r\n\r\n public get name(): string {\r\n return 'SearchContextComponent';\r\n }\r\n\r\n public get template(): string {\r\n return SearchContextTemplate;\r\n }\r\n\r\n public get tagName(): string {\r\n return 'span';\r\n }\r\n\r\n public get className(): string {\r\n return styles.searchContextContainer;\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [{\r\n behaviorClass: TooltipBehavior,\r\n selector: '.tool-tip',\r\n placement: 'left'\r\n }];\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n contextTag: `.${styles.searchContextTag}`,\r\n clearSvg: `.${styles.svgContainer}`\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click @ui.clearSvg': this.onClick,\r\n 'mouseenter @ui.clearSvg': this.onMouseEnter,\r\n 'mouseleave @ui.clearSvg': this.onMouseLeave\r\n };\r\n }\r\n\r\n private onClick(): void {\r\n /**\r\n * The focus option is passed when we clear the search context,\r\n * and want to manually focus the searchbar afterwards. For example,\r\n * if the search bar isn't focused and we click to clear the context\r\n * it will become focused.\r\n */\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('reset:search:context', { focus: true });\r\n\r\n this.model.set('preventTypeaheadClose', false);\r\n }\r\n\r\n private onMouseEnter(): void {\r\n this.model.set('preventTypeaheadClose', true);\r\n }\r\n\r\n private onMouseLeave(): void {\r\n this.model.set('preventTypeaheadClose', false);\r\n }\r\n\r\n private toggleFocus(typeahead: ObjectHash): void {\r\n const contextTag = this.getUI('contextTag');\r\n\r\n /**\r\n * This checks if the contextTag is a JQuery element or not. Occasionally when this method is called, contextTag\r\n * is a pure JS object that has no JQuery methods on it, so the .addClass / .removeClass calls fail. Checking if\r\n * the object has a .get method solves this issue.\r\n */\r\n if (!contextTag || !contextTag.get)\r\n return;\r\n\r\n if (typeahead.open)\r\n contextTag.addClass(styles.tagFocus);\r\n else\r\n contextTag.removeClass(styles.tagFocus);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n closeSvg: SvgHelper.getSvg(cvSvgLibrary.Close)\r\n };\r\n }\r\n\r\n public onBeforeRender(): boolean {\r\n return !!this.model.get('searchTag');\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svgContainer\":\"cv--svgContainer--1ZcbC\",\"searchContextTag\":\"cv--searchContextTag--1RLqh\",\"tagFocus\":\"cv--tagFocus--179a5\",\"searchContextContainer\":\"cv--searchContextContainer--3nPVB\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \" <span class=\\\"border rounded align-middle \"\n + alias3(alias2(((stack1 = ((stack1 = (depths[1] != null ? depths[1].options : depths[1])) != null ? stack1.styles : stack1)) != null ? stack1.term : stack1), depth0))\n + \"\\\">\"\n + alias3(alias2(depth0, depth0))\n + \"</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<span class=\\\"d-inline-block \"\n + alias2(container.lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.termContainer : stack1), depth0))\n + \"\\\">\\r\\n\"\n + ((stack1 = helpers.each.call(alias3,(depth0 != null ? depth0.term : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"</span>\\r\\n<span>\"\n + alias2(((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias3,{\"name\":\"description\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\";\n},\"useData\":true,\"useDepths\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<div class=\\\"cursor-pointer svg-container \"\n + container.escapeExpression(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\" data-toggle=\\\"popover\\\">\\r\\n \"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.searchInfoSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n</div>\\r\\n<div class=\\\"popover-container\\\"></div>\";\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { PopoverBehavior } from 'libs/shared/legacy/behaviors/popover/PopoverBehavior';\r\n\r\nimport SearchTipsTemplate from './SearchTips.hbs';\r\nimport SearchTipItemTemplate from './SearchTipItem.hbs';\r\nimport styles from './search-tips.scss';\r\n\r\nclass SearchTipComponentItem extends Core.Component {\r\n public get name(): string {\r\n return 'SearchTipComponentItem';\r\n }\r\n\r\n public get template(): string {\r\n return SearchTipItemTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return `py-2 ${styles.tip}`;\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles\r\n };\r\n }\r\n}\r\n\r\nclass SearchTipComponentCollection extends Core.ComponentCollection {\r\n public get name(): string {\r\n return 'SearchTipComponentCollection';\r\n }\r\n\r\n public get childView(): typeof SearchTipComponentItem {\r\n return SearchTipComponentItem;\r\n }\r\n}\r\n\r\nexport class SearchTipsComponent extends Core.Component {\r\n public initialize(): void {\r\n this.collection = new Core.Collection([\r\n {\r\n term: [`${LanguageService.getPhrase(this.lang, 'firstTerm')}`],\r\n description: `${LanguageService.getPhrase(this.lang, 'firstDescription')}`\r\n },\r\n {\r\n term: [`${LanguageService.getPhrase(this.lang, 'secondTerm')}`],\r\n description: `${LanguageService.getPhrase(this.lang, 'secondDescription')}`\r\n },\r\n {\r\n term: [`${LanguageService.getPhrase(this.lang, 'thirdTerm')}`],\r\n description: `${LanguageService.getPhrase(this.lang, 'thirdDescription')}`\r\n },\r\n {\r\n term: [ `${LanguageService.getPhrase(this.lang, 'fourthTerm1')}`, `${LanguageService.getPhrase(this.lang, 'fourthTerm2')}` ],\r\n description: `${LanguageService.getPhrase(this.lang, 'fourthDescription')}`\r\n },\r\n {\r\n term: [`${LanguageService.getPhrase(this.lang, 'fifthTerm')}`],\r\n description: `${LanguageService.getPhrase(this.lang, 'fifthDescription')}`\r\n }\r\n ]);\r\n }\r\n\r\n public get name(): string {\r\n return 'SearchTipsComponent';\r\n }\r\n\r\n public get template(): string {\r\n return SearchTipsTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'search.searchTips';\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [{\r\n behaviorClass: PopoverBehavior,\r\n containerSelector: '.popover-container',\r\n title: LanguageService.getPhrase(this.lang, 'heading'),\r\n size: 'popover-lg',\r\n renderContent: (region: string) => this.renderTips(region),\r\n }];\r\n }\r\n\r\n private renderTips(region: string): void {\r\n this.showChildView(region, new SearchTipComponentCollection({\r\n collection: this.collection\r\n }));\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n searchInfoSvg: SvgHelper.getSvg(cvSvgLibrary.Info)\r\n };\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svgContainer\":\"cv--svgContainer--ecsrN\",\"tip\":\"cv--tip--IwYkF\",\"termContainer\":\"cv--termContainer--1BqAi\",\"term\":\"cv--term--1NEsr\"};","export const TypeaheadConfiguration = {\r\n /**\r\n * Request remote data after character input meets length\r\n */\r\n ActivationLength: 1,\r\n\r\n SuggestionLimit: {\r\n Min: 1,\r\n Default: 3,\r\n Folder: 3,\r\n Recent: 3\r\n }\r\n};","export enum SearchQueryType {\r\n Video = 'videos',\r\n Folder = 'categories',\r\n Series = 'series',\r\n Channel = 'channels',\r\n Distributors = 'companies',\r\n Producers = 'people',\r\n Tags = 'tags',\r\n Language = 'languages',\r\n TagsRaw = 'tag',\r\n ChannelRaw = 'channel',\r\n Recent = 'recent',\r\n Direct = 'direct',\r\n ProductionCompanies = 'companies',\r\n Directors = 'people',\r\n Season = 'season',\r\n Classification = 'subjects'\r\n}","export enum SearchTypes {\r\n Direct = 'direct-search',\r\n Recent = 'recent-searches'\r\n}\r\n\r\nexport enum BloodhoundType {\r\n Remote = 0,\r\n Local\r\n}","import { Core } from 'libs/common/core';\r\n\r\n/**\r\n * @Backbone\r\n */\r\nexport class Query extends Core.Model {}","import * as _ from 'underscore';\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\nimport { BaseLibraryDataService, BaseSeriesDataService, BaseSearchAppVariables } from 'libs/shared/interfaces';\r\nimport { SharedServices, SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nexport interface SearchContext {\r\n appLink: Core.AppLink; // Context\r\n\r\n searchTag: string; // Tag text to be displayed in the search bar.\r\n title?: string; // Tooltip (folder or series name).\r\n\r\n filterParam: string; // Filter parameter for search query\r\n filterValue?: string; // Filter value for search query\r\n\r\n setFilterValue: (context: SearchContext, self: any) => void; // Sets the filter value\r\n}\r\n\r\n// List of context's which can be sub-searched in.\r\nconst validSearchContexts: (lang: string, appLinks: HashObject) => SearchContext[] = (lang, appLinks) => {\r\n const contexts = [];\r\n if (appLinks.folder)\r\n contexts.push({\r\n appLink: appLinks.folder,\r\n searchTag: LanguageService.getPhrase(lang, 'folderTag'),\r\n filterParam: 'folder',\r\n setFilterValue: (context: SearchContext, self: any) => {\r\n const libraryDataService: BaseLibraryDataService =\r\n InstanceManager.getInstance(SharedDataServices.Library, self);\r\n\r\n libraryDataService.getFolder(_.first(context.appLink.args).toString(), (folder: HashObject) => {\r\n self.setFilterValue(folder.get('name'));\r\n InstanceManager.releaseInstance(SharedDataServices.Library);\r\n });\r\n }\r\n });\r\n\r\n if (appLinks.series)\r\n contexts.push({\r\n appLink: appLinks.series,\r\n searchTag: LanguageService.getPhrase(lang, 'seriesTag'),\r\n filterParam: 'series',\r\n setFilterValue: (context: SearchContext, self: any) => {\r\n const seriesDataService: BaseSeriesDataService = InstanceManager.getInstance(SharedDataServices.Series, self);\r\n seriesDataService.getSeries( _.first(context.appLink.args).toString(), (series: HashObject) => {\r\n self.setFilterValue(series.name);\r\n InstanceManager.releaseInstance(SharedDataServices.Series);\r\n });\r\n }\r\n });\r\n\r\n return contexts;\r\n};\r\n\r\nexport class ContextualSearchService extends Core.Service {\r\n private searchContext: Core.Model;\r\n private appVariables: BaseSearchAppVariables;\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.onRouteChange);\r\n this.listenTo(SharedServiceChannels.CONTEXTUAL_SEARCH, 'typeahead:toggle', this.onTypeaheadToggle);\r\n this.listenTo(SharedServiceChannels.CONTEXTUAL_SEARCH, 'reset:search:context', this.resetSearchContext);\r\n\r\n this.searchContext = new Core.Model();\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.ContextualSearch;\r\n }\r\n\r\n public get lang(): string {\r\n return 'search.services';\r\n }\r\n\r\n public getSearchContext(): Core.Model {\r\n return this.searchContext;\r\n }\r\n\r\n /**\r\n * Event listeners\r\n */\r\n private onRouteChange(nextRoute: Core.AppLink, options: Core.ExecuteRouteOptions): void {\r\n if (options.isAppRoute)\r\n this.setSearchContext(nextRoute);\r\n }\r\n\r\n private onTypeaheadToggle(options: ObjectHash): void {\r\n if (options.open || this.searchContext.get('filterValue'))\r\n return;\r\n\r\n // When the typeahead closes, the search context is re-initialized\r\n const currentContext: Core.AppLink = ContextService.getCurrentContext().appLink;\r\n this.setSearchContext(currentContext);\r\n }\r\n\r\n\r\n /**\r\n * Context mutation methods\r\n */\r\n private setSearchContext(context: Core.AppLink): void {\r\n const nextSearchContext = this.isValidSearchContext(context);\r\n\r\n // If valid route - update the current search context\r\n if (nextSearchContext) {\r\n this.updateSearchContext(nextSearchContext, context.args);\r\n return;\r\n }\r\n\r\n // If invalid route AND we are not in the SearchView route (/manage/search) - reset search context\r\n if (!this.inSearchView(context)) {\r\n const channel = Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH);\r\n channel.trigger('reset:search:context');\r\n }\r\n }\r\n\r\n // Updates the search context\r\n private updateSearchContext(nextContext: SearchContext, appLinkArgs: (string | number)[]): void {\r\n nextContext.appLink.args = appLinkArgs;\r\n this.searchContext.set(nextContext);\r\n nextContext.setFilterValue(nextContext, this);\r\n }\r\n\r\n // Callback for the setFilterValue method on each SearchContext object\r\n private setFilterValue(filterValue: string): void {\r\n const contextValues = {\r\n filterValue,\r\n title: filterValue\r\n };\r\n this.searchContext.set(contextValues);\r\n }\r\n\r\n private resetSearchContext(): void {\r\n this.searchContext.clear({ silent: true });\r\n }\r\n\r\n\r\n /**\r\n * Validation methods\r\n */\r\n // Checks if the current context appLink matches a valid SearchContext appLink.\r\n private isValidSearchContext(nextRoute: Core.AppLink): SearchContext {\r\n if (!this.appVariables)\r\n this.appVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n\r\n return _.find(validSearchContexts(this.lang, this.appVariables.appLinks), (context: SearchContext) =>\r\n nextRoute.application === context.appLink.application &&\r\n nextRoute.action === context.appLink.action\r\n );\r\n }\r\n\r\n // Checks if the user is currently at /manage/search\r\n private inSearchView(context: Core.AppLink): boolean {\r\n const searchResultsAppLink = this.appVariables.appLinks.searchResults;\r\n\r\n return context.application === searchResultsAppLink.application\r\n && context.action === searchResultsAppLink.action;\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { LibraryType } from 'libs/shared/enums/LibraryType';\r\nimport { BaseSearchAppVariables } from 'libs/shared/interfaces';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nimport { RemoteSearch } from 'libs/shared/apps/search/interfaces';\r\nimport { SearchQueryType } from 'libs/shared/apps/search/enums/SearchQueryType';\r\nimport { TypeaheadConfiguration } from 'libs/shared/apps/search/constants/TypeaheadConfiguration';\r\n\r\nconst SuggestionLimit = TypeaheadConfiguration.SuggestionLimit;\r\n\r\n/**\r\n * Specific logic for processing responses from domain v1/search/instant endpoint\r\n */\r\nexport const InstantSearchHelper = {\r\n prepareQuery: (query: string, settings: JQueryAjaxSettings, options: ObjectHash = {}) => {\r\n const { model, libraryIds, presentationId } = options;\r\n\r\n if (model && model.get('filterValue'))\r\n query += ` ${model.get('filterParam')}:\"${model.get('filterValue')}\"`;\r\n\r\n let url = `${settings.url}?q=${query}`;\r\n\r\n if (libraryIds)\r\n url += `&ids=${libraryIds}`;\r\n\r\n if (presentationId)\r\n url += `&presentationId=${presentationId}`;\r\n\r\n return url;\r\n },\r\n\r\n bloodhoundConfig(source: string, options: ObjectHash): RemoteSearch<any> {\r\n return {\r\n datumTokenizer: Bloodhound.tokenizers.obj.nonword('label'),\r\n queryTokenizer: Bloodhound.tokenizers.whitespace,\r\n remote: {\r\n url: '/api/domain/v1/search/instant',\r\n prepare: _.partial(InstantSearchHelper.prepareQuery, _, _, options),\r\n transform: _.partial(InstantSearchHelper.handleResult, _, source)\r\n }\r\n } as RemoteSearch<any>;\r\n },\r\n\r\n handleResult(data: ObjectHash = {}, item: any, options: ObjectHash = {}): any[] {\r\n if (item === SearchQueryType.Classification)\r\n return InstantSearchHelper.processSubjectResult(data[item], item, options);\r\n\r\n if (item === SearchQueryType.Video)\r\n return InstantSearchHelper.processVideoResult(data[item], item, options);\r\n\r\n if (options.showFolder && item === SearchQueryType.Folder)\r\n return InstantSearchHelper.processFolderResult(data[item], item, options);\r\n\r\n if (item === SearchQueryType.Series)\r\n return InstantSearchHelper.processSeriesResult(data[item], item, options);\r\n\r\n if (item === SearchQueryType.Tags)\r\n return InstantSearchHelper.processTagsResult(data[item], item, options);\r\n\r\n return [];\r\n },\r\n\r\n processSubjectResult(collection: any[], item: any, options: ObjectHash): any [] {\r\n if (!collection)\r\n return [];\r\n\r\n collection = InstantSearchHelper.processCollection(collection);\r\n\r\n return _.map(collection, model => {\r\n if (model.cached) return model;\r\n\r\n model.thumbnail = { url: model.coverUrl };\r\n model.cached = true;\r\n return model;\r\n });\r\n },\r\n\r\n processVideoResult(collection: any[], item: any, options: ObjectHash): any[] {\r\n if (!collection)\r\n return [];\r\n\r\n collection = InstantSearchHelper.processCollection(collection);\r\n\r\n /**\r\n * Mutate the video model to match it against our Master video model.\r\n * This gets called with each character change in the typeahead so \r\n * we're caching it for re-use.\r\n */\r\n return _.map(collection, model => {\r\n if (model.cached) return model;\r\n\r\n model.topics = _.map(model.topics, t => ({ name: t }));\r\n model.series = { id: model.seriesId, name: model.seriesName };\r\n model.thumbnail = { url: model.thumbnailUrl };\r\n\r\n model.cached = true;\r\n return model;\r\n });\r\n },\r\n\r\n processTagsResult(collection: any[], item: any, options: ObjectHash): any[] {\r\n if (!collection)\r\n return [];\r\n\r\n const appVariables: BaseSearchAppVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n\r\n collection = InstantSearchHelper.processCollection(collection);\r\n\r\n return _.map(collection, model => {\r\n if (model.cached) return model;\r\n\r\n model.url = Core.AppLinkHelper.getHref({\r\n ...appVariables.appLinks.searchResults,\r\n params: { tag: model.name }\r\n });\r\n\r\n model.cached = true;\r\n return model;\r\n });\r\n },\r\n\r\n processSeriesResult(collection: any[], item: any, options: ObjectHash): any[] {\r\n if (!collection)\r\n return [];\r\n\r\n collection = InstantSearchHelper.processCollection(collection);\r\n\r\n return _.map(collection, model => {\r\n let collectionName, collectionType;\r\n\r\n if (model.series) {\r\n collectionName = model.series;\r\n } else if (model.folder && model.folder.length) {\r\n collectionName = _.first(model.folder);\r\n }\r\n\r\n return _.extend({}, model, { collectionType, collection: collectionName });\r\n });\r\n },\r\n\r\n processFolderResult(collection: any[], item: any, options: ObjectHash = {}): any[] {\r\n if (!collection)\r\n return [];\r\n\r\n collection = InstantSearchHelper.processCollection(collection, { limit: SuggestionLimit.Folder });\r\n\r\n return _.map(collection, c => {\r\n const { library = {} } = c;\r\n\r\n if (library.type === LibraryType.Exchange)\r\n library.name = 'Exchange';\r\n\r\n // Flatten the structure to include the library data and generate the url\r\n return _.extend({}, c, {\r\n libraryId: library.id,\r\n libraryName: library.name,\r\n libraryType: library.type,\r\n });\r\n });\r\n },\r\n\r\n /**\r\n * Manipulate \r\n * @param collection \r\n * @param options \r\n */\r\n processCollection(collection: any[], options: ObjectHash = {}): any[] {\r\n const { limit = SuggestionLimit.Default } = options;\r\n return collection.slice(0, limit);\r\n }\r\n};\r\n","import * as _ from 'underscore';\r\nimport { StorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\n\r\nexport interface UpdateRecentSearchOptions<T> {\r\n query: T;\r\n add?: boolean;\r\n remove?: boolean;\r\n limit?: number;\r\n}\r\n\r\nexport const RecentSearchHelper = {\r\n getRecentSearches<T>(key: string, dataSource: StorageHelper): T[] {\r\n let recentSearches = dataSource.cacheGet(key);\r\n\r\n if (!_.isArray(recentSearches))\r\n recentSearches = [];\r\n\r\n return recentSearches;\r\n },\r\n\r\n setRecentSearches<T>(key: string, recentSearches: T[], dataSource: StorageHelper): void {\r\n if (!_.isArray(recentSearches))\r\n return;\r\n\r\n dataSource.cacheSet(key, recentSearches);\r\n },\r\n\r\n updateRecentSearches<T>(key: string, dataSource: StorageHelper, options: UpdateRecentSearchOptions<T>): T[] {\r\n let { add, remove, query, limit = 5 } = options;\r\n\r\n let recentSearches = RecentSearchHelper.getRecentSearches<T>(key, dataSource);\r\n\r\n const queryIndex = _.indexOf<T>(recentSearches, query);\r\n\r\n if (add && queryIndex === -1)\r\n recentSearches.unshift(query);\r\n\r\n if (remove && queryIndex > -1)\r\n recentSearches.splice(queryIndex, 1);\r\n\r\n if (recentSearches.length > limit)\r\n recentSearches = recentSearches.slice(0, limit);\r\n\r\n RecentSearchHelper.setRecentSearches<T>(key, recentSearches, dataSource);\r\n\r\n return recentSearches;\r\n }\r\n};\r\n\r\n","import { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nexport const SearchHelper = {\r\n getContextualSearchQueryParams(context: Core.Model): HashObject {\r\n if (!context || !context.get('filterParam'))\r\n return {};\r\n\r\n const param = context.get('filterParam');\r\n const value = context.get('filterValue');\r\n\r\n return {\r\n [param]: value\r\n };\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport * as Bloodhound from 'bloodhound';\r\n\r\nimport { BloodhoundType } from 'libs/shared/apps/search/enums/SearchTypes';\r\nimport { TypeaheadConfiguration } from 'libs/shared/apps/search/constants/TypeaheadConfiguration';\r\nimport { TypeaheadDataSource, LocalSearch, RemoteSearch, TypeaheadConfig, TypeaheadSourceItem } from 'libs/shared/apps/search/interfaces';\r\nimport { ConfirmSelectionComponent } from 'libs/shared/apps/search/components/confirm-selection/ConfirmSelectionComponent';\r\n\r\nexport const TypeaheadHelper = {\r\n\r\n /**\r\n * This function will only allow our typeahead to fetch results when we\r\n * have exceeded our min length. The reason for doing this is that we want to the typeahead\r\n * to load our recent searches immediately when we click the input, but before we perform any searches. - Mike\r\n */\r\n handleQuery<T>(dataSource?: TypeaheadDataSource<T>, options?: ObjectHash ): TypeaheadDataSource<T> {\r\n\r\n return (query: string, syncResults: any, asyncResults: any) => {\r\n options || (options = {});\r\n\r\n if (query && options.ignoreOnQuery)\r\n return syncResults([]);\r\n\r\n const shouldFetch = query && query.length >= TypeaheadConfiguration.ActivationLength;\r\n\r\n // It is assumed that recent searches will always utilise Bloodhound, if this changes in future\r\n // the following will no longer work. We are returning all of the indexed bloodhound results.\r\n if (options.fetchType === BloodhoundType.Local && !shouldFetch)\r\n return syncResults((dataSource as any).index.all());\r\n\r\n if (!shouldFetch)\r\n return;\r\n\r\n // Convert simple query strings to objects for use in our templates\r\n if (!(dataSource instanceof Bloodhound))\r\n return syncResults([{ query }]);\r\n\r\n // Handle our dynamic queries with both sync and async\r\n return dataSource.search.call(dataSource, query, syncResults, asyncResults);\r\n };\r\n },\r\n\r\n /**\r\n * This function complements HandleQuery allowing us to override when and how typeahead templates are \r\n * rendered. When the query doesn't meet our min length we will render a fallback template, which is \r\n * essentially just an empty div. This is necessary to ensure we can display recent searchs when the \r\n * typeahead is active (but less than the require length to trigger the search functionality). As we are\r\n * dynamically generating the results for videos, folders and series we are deliberately using a closure\r\n * to ensure we don't lose our template. \r\n * \r\n * It must also return <any> as the typeahead typings are shit.\r\n * - Mike\r\n */\r\n getTemplate(template: Function, options: ObjectHash = {}): any {\r\n const { fallbackTemplate, templateText } = options;\r\n\r\n return (data: ObjectHash) => {\r\n const { query } = data;\r\n\r\n if (!query)\r\n return fallbackTemplate(...arguments);\r\n\r\n if (query.length && query.length < TypeaheadConfiguration.ActivationLength)\r\n return fallbackTemplate(...arguments);\r\n\r\n const viewData = _.extend(data, { templateText });\r\n\r\n return template(viewData);\r\n };\r\n },\r\n\r\n /**\r\n * Provides mechanism to map a single search query against multiple bloodhound sources. \r\n * Sources may be remote endpoints or local in-memory collections.\r\n * @param sources\r\n * @param options \r\n */\r\n\r\n getSearchSources<T>(sources: TypeaheadSourceItem<T>[] ): TypeaheadConfig<T>[] {\r\n return _.map(sources, (source: TypeaheadSourceItem<T>, index: number ) => {\r\n const { typeaheadConfig, bloodhoundConfig, name, options } = source;\r\n\r\n let bloodhound;\r\n if (bloodhoundConfig)\r\n bloodhound = TypeaheadHelper.buildBloodhound<T>(bloodhoundConfig(name, options));\r\n\r\n return typeaheadConfig({ bloodhound, name }, index, options);\r\n });\r\n },\r\n\r\n /**\r\n * Bloodhound helper\r\n */\r\n buildBloodhound<T>(options: RemoteSearch<T> | LocalSearch<T>): Bloodhound<T> {\r\n return new Bloodhound<T>(options);\r\n },\r\n\r\n /**\r\n * This is attached as a callback to the typeahead's render event.\r\n * Where there is a real suggestion from the server, we will automatically\r\n * set the cursor to that item, to make it simply to add. This is to encourage the\r\n * re-use of existing entities.\r\n * \r\n * Note: With multiple suggestion sets, the render event will also be called multiple times\r\n * along with this callback.\r\n */\r\n selectFirstResult(e: JQueryEventObject, suggestions: any[], async: boolean, dataset: string): void {\r\n if (!async) return;\r\n\r\n // Where we already have a highlighted selection (potentially from a previous render), cancel this event.\r\n const existingCursor = this.$el.find('.tt-cursor');\r\n if (existingCursor.length)\r\n return;\r\n\r\n const suggestion = _.first(suggestions);\r\n\r\n // Prevent empty suggestions from being selectable\r\n if (!suggestion || _.isEmpty(suggestion)) {\r\n this.$el.find('.tt-not-found').removeClass('tt-selectable tt-suggestion');\r\n return;\r\n }\r\n\r\n const createEl = this.$el.find('.add-new');\r\n\r\n // Highlight the create option when there are no other suggestions\r\n if (createEl && !suggestion.id) {\r\n createEl.addClass('tt-cursor');\r\n return;\r\n }\r\n\r\n if (createEl && createEl.hasClass('tt-cursor'))\r\n createEl.removeClass('tt-cursor');\r\n\r\n this.$el.find('.result:first').addClass('tt-cursor');\r\n },\r\n\r\n /**\r\n * Callback is designed to be attached to the stickit bindings for the typeahead form\r\n * and emit events when a change is detected on the bound model. We do this to be\r\n * able to detect whether an input has cleared from a previous selection,\r\n * \r\n * @param channelName \r\n * @param event \r\n */\r\n emitEventOnInput(channelName: string, eventName: string, type: string, wrapperOptions?: ObjectHash): Function {\r\n if (!channelName) return;\r\n return (model: any, options: ObjectHash) => {\r\n const channel = Radio.channel(channelName);\r\n channel.trigger(eventName, model, type, _.extend({}, wrapperOptions, options));\r\n };\r\n },\r\n\r\n /**\r\n * I hate this.\r\n * \r\n * Basically what this function does is curry a callback with the original association's\r\n * data. Then, depending on the user's interaction with the typeahead input, it will restore that\r\n * data when a blur event is triggered.\r\n * \r\n * @param data raw clone of original assoc model\r\n * \r\n * Curried callback\r\n * @param channelName \r\n * @param propertyName \r\n */\r\n resetAssociationOnBlur(data: ObjectHash): Function {\r\n return function(channelName: string, propertyName: string): void {\r\n const propertyChanged = this.model.get(propertyName);\r\n const hasNewAssocId = _.isNumber(this.model.id);\r\n\r\n // An existing assoc doesn't exist, and the new assoc hasn't been created, so we'll discard changes\r\n if (!data[propertyName] && !hasNewAssocId) {\r\n this.model.clear();\r\n Radio.channel(channelName).trigger('typeahead:clear:input');\r\n return;\r\n }\r\n\r\n // Where the input has been cleared, let it go, we want to remove the assoc\r\n if (!(typeof propertyChanged === 'string') || !propertyChanged.length)\r\n return;\r\n\r\n // Where the property has changed but it don't have an id yet, let it go, we want to create an assoc\r\n if (!hasNewAssocId) {\r\n Radio.channel(channelName).trigger('typeahead:clear:input');\r\n this.model.set(data);\r\n return;\r\n }\r\n\r\n // Where there's a new assoc but it don't match the old one, let it go, we want to create an assoc\r\n if (data.id !== this.model.id)\r\n return;\r\n\r\n // Discard the changes, reverting back to the original assoc state\r\n this.model.set(data);\r\n\r\n // We need to re-instate the typeahead input to contain the original query to avoid subtle bugs\r\n // where clicking the input would display the wrong text. The caveat to this, is that re-setting the value\r\n // will trigger another call to the instant search endpoing.\r\n Radio.channel(channelName).trigger('typeahead:set:input', data[propertyName]);\r\n };\r\n },\r\n\r\n /**\r\n * Create and render ConfirmSelection component for use as a \r\n * @param options \r\n */\r\n getConfirmSelectionTemplate(options: ObjectHash = {}): Function {\r\n return () => new ConfirmSelectionComponent(options).render().el;\r\n },\r\n\r\n clearInputOnBlur(channelName: string): void {\r\n Radio.channel(channelName).trigger('typeahead:clear:input');\r\n }\r\n};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<div class=\\\"w-100 h-100 align-items-center search-bar-container\\\">\\r\\n <span class=\\\"search-context-region\\\"></span>\\r\\n <input name=\\\"search\\\" type=\\\"text\\\" class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.searchInput : stack1), depth0))\n + \"\\\" id=\\\"search\\\" autocomplete=\\\"off\\\" type=\\\"Search within your libraries...\\\" placeholder=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.libraryText : stack1), depth0))\n + \"\\\" aria-label=\\\"Search\\\">\\r\\n</div>\\r\\n<span class=\\\"\"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.searchSvgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n<button type=\\\"submit\\\" tabindex=\\\"-1\\\" style=\\\"display:none\\\"></button>\\r\\n<span class=\\\"search-tips-region \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.tipsContainer : stack1), depth0))\n + \"\\\"></span>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"search-partial-region\\\"></div>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.showPartial : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio, Validation } from 'backbone';\r\n\r\nimport { UserAction, DirectSearchDescriptor, ActionDescriptor } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { Analytics } from 'libs/analytics/Analytics';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { StorageHelper, LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { SharedDataChannels, SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { Series, Video, Folder, Tag, CurrentUser, BaseSearchAppVariables, Classification } from 'libs/shared/interfaces';\r\nimport { UserDataServiceHelper } from 'libs/shared/services/UserDataService';\r\nimport { PartialLoadingComponentTypes } from 'libs/shared/enums/PartialLoading';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { MaskHelper } from 'libs/shared/utils/MaskHelper';\r\nimport { SharedLibraryDataServiceHelper } from 'libs/shared/utils/LibraryDataServiceHelper';\r\n\r\nimport { SearchTypes, BloodhoundType } from 'libs/shared/apps/search/enums/SearchTypes';\r\nimport { SearchQueryType } from 'libs/shared/apps/search/enums/SearchQueryType';\r\nimport { SearchHelper } from 'libs/shared/apps/search/utils/SearchHelper';\r\nimport { InstantSearchHelper } from 'libs/shared/apps/search/utils/InstantSearchHelper';\r\nimport { RecentSearchHelper } from 'libs/shared/apps/search/utils/RecentSearchHelper';\r\nimport { TypeaheadHelper } from 'libs/shared/apps/search/utils/TypeaheadHelper';\r\nimport { ContextualSearchService } from 'libs/shared/apps/search/services/ContextualSearchService';\r\nimport { TypeaheadConfig, InstantSearchBloodhound, TypeaheadConfigHandler, BloodhoundConfigHandler } from 'libs/shared/apps/search/interfaces';\r\nimport { TypeaheadConfiguration } from 'libs/shared/apps/search/constants/TypeaheadConfiguration';\r\n\r\nimport { SearchTipsComponent } from 'libs/shared/apps/search/components/search-tips/SearchTipsComponent';\r\nimport { SearchContextComponent } from 'libs/shared/apps/search/components/search-context/SearchContextComponent';\r\nimport * as ViewTemplates from 'libs/shared/apps/search/components/instant-search';\r\nimport * as Templates from './templates';\r\n\r\nimport SearchBarTemplate from './SearchBar.hbs';\r\nimport styles from './search.scss';\r\n\r\nimport SearchBarPartialStyles from './partial/search-bar-partial.scss';\r\nimport SearchBarPartialTemplate from './partial/SearchBarPartial.hbs';\r\n\r\nconst { SuggestionLimit } = TypeaheadConfiguration;\r\n\r\nexport interface SearchBarViewOptions extends Core.ViewOptions {\r\n showRecentSearch?: boolean;\r\n disableMask?: boolean;\r\n presentationId?: string;\r\n}\r\n\r\nexport class SearchBarView extends Core.View {\r\n protected options: SearchBarViewOptions;\r\n\r\n private contextualSearchService: ContextualSearchService;\r\n private appVariables: BaseSearchAppVariables;\r\n\r\n private currentUser: CurrentUser;\r\n private libraryCollection: Core.Collection;\r\n\r\n private storageHelper: StorageHelper;\r\n private recentSearchEngine: Bloodhound<string>;\r\n\r\n private viewCache: ObjectHash = {};\r\n private searchInput: JQuery;\r\n\r\n private searchContext: Core.Model;\r\n private preventToggleEvent: boolean;\r\n\r\n public constructor(options: SearchBarViewOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.contextualSearchService = InstanceManager.getInstance(SharedServices.ContextualSearch, this);\r\n this.appVariables = InstanceManager.getInstance(AppVariables.SEARCH, this);\r\n\r\n this.storageHelper = LocalStorageHelper;\r\n this.searchContext = this.contextualSearchService.getSearchContext();\r\n this.bindListeners();\r\n }\r\n\r\n public get name(): string {\r\n return 'SearchBarView';\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get tagName(): string {\r\n return 'form';\r\n }\r\n\r\n public get template(): any {\r\n return SearchBarTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'search.searchBar';\r\n }\r\n\r\n public get channelName(): string {\r\n return `searchbar:${this.cid}`;\r\n }\r\n\r\n public get className(): string {\r\n return `search-query-container position-relative m-0 w-100 form-control p-0 ${styles.searchBar}`;\r\n }\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n showRecentSearch: true\r\n };\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n input: `#search`,\r\n searchBarContainer: '.search-bar-container'\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'submit': 'onSubmit',\r\n [`click .${styles.searchSvgContainer}`]: 'onClickSearch',\r\n 'click a': 'onTypeaheadSelect',\r\n 'keydown': 'onKeydown'\r\n };\r\n }\r\n\r\n public get bindings(): ObjectHash {\r\n return {\r\n '[name=search]': {\r\n observe: 'query',\r\n setOptions : { validate: true }\r\n }\r\n };\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n partial: {\r\n el: '.search-partial-region',\r\n replaceElement: false,\r\n partialLoading: {\r\n component: PartialLoadingComponentTypes.Component,\r\n options: {\r\n template: SearchBarPartialTemplate,\r\n className: 'w-100',\r\n viewOptions: {\r\n styles: SearchBarPartialStyles\r\n }\r\n }\r\n }\r\n },\r\n searchTips: {\r\n el: '.search-tips-region',\r\n replaceElement: false\r\n },\r\n searchContext: {\r\n el: '.search-context-region',\r\n replaceElement: true\r\n }\r\n };\r\n }\r\n\r\n private get recentSearchKey(): string {\r\n return `recent:search:${this.currentUser.id}`;\r\n }\r\n\r\n private bindListeners(): void {\r\n // All subsquent library changes will refresh the search bar\r\n this.listenTo(SharedDataChannels.LIBRARY, `library:created library:deleted`, this.render);\r\n\r\n if (!this.options.showRecentSearch)\r\n return;\r\n\r\n this.listenTo(this.channelName, 'remove:recent', this.onDeleteRecentSearch);\r\n\r\n this.listenTo(this.searchContext, 'change:filterValue', this.renderSearchContext);\r\n this.listenTo(SharedServiceChannels.CONTEXTUAL_SEARCH, 'reset:search:context', this.onResetSearchContext);\r\n }\r\n\r\n /**\r\n * View Cache management\r\n */\r\n private getOrCacheView(id: string, options: ObjectHash): Core.Component {\r\n const { ctor, viewOptions } = options;\r\n\r\n if (this.viewCache[id])\r\n return this.viewCache[id];\r\n\r\n return this.viewCache[id] = new ctor(viewOptions);\r\n }\r\n\r\n private clearViewCache(): void {\r\n _.each(this.viewCache, (view: Core.Component) => view.destroy());\r\n this.viewCache = {};\r\n }\r\n\r\n private getDynamicTemplate(sourceName: string): any {\r\n // Using a custom view for recent search results to properly handle remove events.\r\n if (sourceName === SearchTypes.Recent)\r\n return (recentSearch: string) => {\r\n\r\n const view = this.getOrCacheView(`recent:${recentSearch}`, {\r\n ctor: ViewTemplates.RecentSearchResultComponent,\r\n viewOptions: {\r\n model: new Core.Model({ name: recentSearch }),\r\n channelName: this.channelName\r\n }\r\n });\r\n return view.render().el;\r\n };\r\n\r\n if (sourceName === SearchQueryType.Classification)\r\n return (data: HashObject) => {\r\n const view = this.getOrCacheView(data.id, {\r\n ctor: ViewTemplates.ClassificationSearchResultComponent,\r\n viewOptions: { model: new Core.Model(data) }\r\n });\r\n return view.render().el;\r\n };\r\n\r\n // Using a custom view for video results to re-use existing components.\r\n if (sourceName === SearchQueryType.Video)\r\n return (data: HashObject) => {\r\n\r\n const view = this.getOrCacheView(data.id, {\r\n ctor: ViewTemplates.VideoSearchResultComponent,\r\n viewOptions: { model: new Core.Model(data) }\r\n });\r\n return view.render().el;\r\n };\r\n\r\n /**\r\n * TODO: When we evntually add folder search, it *must* follow the convention\r\n * of all other templates and use a view.\r\n *\r\n * \"But Why?\", you ask.\r\n *\r\n * Because the templates are created by typeahead on the fly, and it's super difficult to bind\r\n * an event handler to the anchor tag so that it can suppress the default\r\n * behaviour (which will mess with our applink and triggers a page load). So instead,\r\n * we create a view and allow it to mananage the click event for us.\r\n */\r\n if (sourceName === SearchQueryType.Folder)\r\n return Templates.FolderResult;\r\n\r\n // Using a custom view to ensure we correctly capture anchor events\r\n if (sourceName === SearchQueryType.Series)\r\n return (data: ObjectHash) => {\r\n\r\n const view = this.getOrCacheView(data.id, {\r\n ctor: ViewTemplates.SeriesSearchResultComponent,\r\n viewOptions: { model: new Core.Model(data) }\r\n });\r\n return view.render().el;\r\n };\r\n\r\n // Using a custom view to ensure we correctly capture anchor events\r\n if (sourceName === SearchQueryType.Tags)\r\n return (data: ObjectHash) => {\r\n const view = this.getOrCacheView(data.id, {\r\n ctor: ViewTemplates.TagSearchResultComponent,\r\n viewOptions: { model: new Core.Model(data) }\r\n });\r\n return view.render().el;\r\n };\r\n }\r\n\r\n private getLimits(sourceName: string): number {\r\n if (sourceName === SearchQueryType.Folder)\r\n return SuggestionLimit.Folder;\r\n\r\n return SuggestionLimit.Folder;\r\n }\r\n\r\n /**\r\n * Recent search logic\r\n */\r\n\r\n private updateSearchHistory(options: ObjectHash): string[] {\r\n let { add, remove, query } = options;\r\n\r\n // Clean up query for consistency\r\n query = query.trim();\r\n\r\n const recentSearches = RecentSearchHelper.updateRecentSearches(this.recentSearchKey, this.storageHelper, {\r\n add, remove, query, limit: SuggestionLimit.Recent\r\n });\r\n\r\n // Update the Bloodhound locals cache\r\n this.recentSearchEngine.clear();\r\n this.recentSearchEngine.add(recentSearches);\r\n\r\n return recentSearches;\r\n }\r\n\r\n private handleRecentSearch(options: ObjectHash = {}): void {\r\n if (!this.options.showRecentSearch)\r\n return;\r\n\r\n const query = this.getUI('input').typeahead('val');\r\n\r\n if (!query) {\r\n const recentSearches = RecentSearchHelper.getRecentSearches<string>(this.recentSearchKey, this.storageHelper);\r\n\r\n // With an empty query, only show recent searches if we have some previously saved.\r\n if (recentSearches.length)\r\n return;\r\n\r\n // Hide the typeahead menu, so we don't see the empty div at the bottom\r\n this.$el.find('.tt-menu').addClass('hide-results');\r\n return;\r\n }\r\n\r\n /**\r\n * Where there is a query, show all results.\r\n * Recent searches will not be returned from the bloodhound search handler,\r\n * so they won't be rendered.\r\n */\r\n this.$el.find('.tt-menu').removeClass('hide-results');\r\n }\r\n\r\n private onDeleteRecentSearch(recentSearch: string): boolean {\r\n const recentList = this.updateSearchHistory({ remove: true, query: recentSearch });\r\n\r\n // Remove then entire element once we have removed all recent items\r\n if (!recentList.length) {\r\n this.$el.find('.tt-dataset-recent-searches').empty();\r\n this.handleRecentSearch();\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private getInstantSearchAppLink(suggestion: ObjectHash, source: any): Core.AppLink {\r\n if (source === SearchQueryType.Series)\r\n return {\r\n ...this.appVariables.appLinks.series,\r\n args: [suggestion.id]\r\n };\r\n\r\n if (source === SearchQueryType.Video)\r\n return {\r\n ...this.appVariables.appLinks.videoDetails,\r\n args: [suggestion.id]\r\n };\r\n\r\n if (source === SearchQueryType.Tags)\r\n return {\r\n ...this.appVariables.appLinks.tagSearch,\r\n params: { tag: suggestion.name }\r\n };\r\n\r\n if (source === SearchQueryType.Classification)\r\n return {\r\n ...this.appVariables.appLinks.classification,\r\n args: [suggestion.id]\r\n };\r\n }\r\n\r\n /**\r\n * Typeahead event handlers\r\n */\r\n private onTypeaheadSelect(event: any, suggestion: string | ObjectHash, source: any): boolean {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n\r\n this.clearViewCache();\r\n\r\n // All instant search result models from elastic will have ids, so we know to trigger an applink.\r\n if (typeof suggestion === 'object' && suggestion.id) {\r\n const appLink = this.getInstantSearchAppLink(suggestion, source);\r\n\r\n if (!appLink) return false;\r\n\r\n const { data , action } = AnalyticsHelper.buildInstantSearchEvent(this.model.get('query'), suggestion, source);\r\n Analytics.log(UserAction.InstantSearch, data, action);\r\n\r\n this.model.clear();\r\n this.getUI(`input`).typeahead('close');\r\n\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('reset:search:context');\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n\r\n return false;\r\n }\r\n\r\n // Go to search page for direct and recent searches\r\n let query = (typeof suggestion === 'string') ? suggestion : suggestion.query;\r\n\r\n this.model.set({ query });\r\n\r\n const descriptor = source === SearchTypes.Recent ?\r\n DirectSearchDescriptor.Recent :\r\n DirectSearchDescriptor.ShowAll;\r\n\r\n this.submitQuery(descriptor);\r\n\r\n return false;\r\n }\r\n\r\n private onClickSearch(e: JQuery.Event): boolean {\r\n e.stopPropagation();\r\n\r\n this.submitQuery(DirectSearchDescriptor.SearchIcon);\r\n\r\n return false;\r\n }\r\n\r\n private onSubmit(e: JQuery.Event): boolean {\r\n e.preventDefault();\r\n\r\n this.submitQuery(DirectSearchDescriptor.Submit);\r\n\r\n return false;\r\n }\r\n\r\n private submitQuery(descriptor?: ActionDescriptor): void {\r\n /**\r\n * We update the initial query so that when the query is reset\r\n * onTypeahead close, the query won't change.\r\n */\r\n this.updateInitialQuery();\r\n\r\n const query = this.model.get('query');\r\n\r\n if (!query) return;\r\n\r\n this.logSearch(query, descriptor);\r\n\r\n this.updateSearchHistory({ add: true, query });\r\n\r\n this.preventToggleEvent = true;\r\n this.getUI(`input`).typeahead('close');\r\n\r\n const contextualSearchParams = SearchHelper.getContextualSearchQueryParams(this.searchContext);\r\n\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('reset:search:context');\r\n\r\n // Navigate to search results\r\n Core.AppLinkHelper.trigger({\r\n ...this.appVariables.appLinks.searchResults,\r\n params: {\r\n query,\r\n ...contextualSearchParams\r\n }\r\n });\r\n }\r\n\r\n private resetQuery(): void {\r\n this.model.set({ query: this.model.get('initialQuery') });\r\n }\r\n\r\n private updateInitialQuery(): void {\r\n this.model.set({ initialQuery: this.model.get('query') });\r\n }\r\n\r\n private logSearch(query: string, descriptor: ActionDescriptor): void {\r\n const { data, action } = AnalyticsHelper.buildSearchEvent(query, descriptor);\r\n Analytics.log(UserAction.Search, data, action);\r\n }\r\n\r\n /**\r\n * When the user clicks away from the typeahead, the close event will be fired, unbinding the delete\r\n * event for recent search. Re-selecting the typehead will open it BUT it won't re-fetch the results and\r\n * render event won't be fired. We need to manually re-bind the click handlers to ensure the delete\r\n * functionality is retained.\r\n */\r\n private onTypeaheadOpen(event: JQuery.Event): void {\r\n this.$('.twitter-typeahead').css({ position: 'static' });\r\n this.showMask();\r\n\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('typeahead:toggle', { open: true });\r\n /**\r\n * After page loading into the search app, the query will remain in the search bar.\r\n * We want to ensure that when the user opens the search bar again that it actually\r\n * fetches the instant results. This will only fire the first time, with typeahead caching\r\n * the result.\r\n */\r\n const query = this.model.get('query');\r\n if (query && query.length >= TypeaheadConfiguration.ActivationLength)\r\n this.getUI('input').typeahead('val', query);\r\n\r\n this.alignTypeahead();\r\n }\r\n\r\n private onBeforeTypeaheadClose(event: JQuery.Event): void {\r\n if (!this.searchContext.get('preventTypeaheadClose'))\r\n return;\r\n\r\n event.preventDefault();\r\n this.getUI('input').focus();\r\n }\r\n\r\n private onTypeaheadClose(): void {\r\n this.hideMask();\r\n this.handleRecentSearch();\r\n\r\n if (!this.preventToggleEvent) {\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('typeahead:toggle', { open: false });\r\n }\r\n }\r\n\r\n private showMask(): void {\r\n if (this.options.disableMask)\r\n return;\r\n\r\n this.$el.addClass('active');\r\n MaskHelper.showMask();\r\n }\r\n\r\n private hideMask(): void {\r\n if (this.options.disableMask)\r\n return;\r\n\r\n MaskHelper.hideMask();\r\n }\r\n\r\n private alignTypeahead(): void {\r\n const typeahead = $('.tt-menu');\r\n if (!this.searchContext.get('title')) {\r\n if (typeahead.hasClass('typeahead-shift')) {\r\n typeahead.removeClass('typeahead-shift');\r\n }\r\n\r\n return;\r\n }\r\n\r\n typeahead.addClass('typeahead-shift');\r\n }\r\n\r\n private onTypeaheadRender(event: string, suggestions: any, async: boolean, dataset: any): void {\r\n if (dataset !== SearchTypes.Recent)\r\n return;\r\n\r\n this.handleRecentSearch();\r\n }\r\n\r\n private initTypeaheadListeners(): void {\r\n const input = this.getUI('input');\r\n\r\n input.on('typeahead:select', _.bind(this.onTypeaheadSelect, this));\r\n input.on('typeahead:render', _.bind(this.onTypeaheadRender, this));\r\n input.on('typeahead:beforeclose', _.bind(this.onBeforeTypeaheadClose, this));\r\n input.on('typeahead:close', _.bind(this.onTypeaheadClose, this));\r\n input.on('typeahead:open', _.bind(this.onTypeaheadOpen, this));\r\n }\r\n\r\n private initNoLibrariesTypeaheadListeners(): void {\r\n const input = this.getUI('input');\r\n\r\n input.on('typeahead:open', _.bind(this.showMask, this));\r\n input.on('typeahead:close', _.bind(this.hideMask, this));\r\n\r\n // The only option is to add a new library, so trigger the applink to create a library\r\n input.on('typeahead:select', _.bind(() => {\r\n Core.AppLinkHelper.trigger(this.appVariables.appLinks.newLibrary);\r\n }, this));\r\n }\r\n\r\n private onKeydown(e: JQuery.Event): void {\r\n if (e.keyCode !== 8 || this.model.get('query'))\r\n return;\r\n\r\n Radio.channel(SharedServiceChannels.CONTEXTUAL_SEARCH)\r\n .trigger('reset:search:context');\r\n }\r\n\r\n private onResetSearchContext(options?: ObjectHash): void {\r\n if (options && options.focus)\r\n this.getUI('input').focus();\r\n\r\n $('.tt-menu').removeClass('typeahead-shift');\r\n\r\n this.renderSearchContext();\r\n }\r\n\r\n /**\r\n * Bloodhound & Typeadhead configs\r\n */\r\n\r\n private getRecentSearchBloodhound(): Bloodhound<string> {\r\n const recentSearches = RecentSearchHelper.getRecentSearches<string>(this.recentSearchKey, this.storageHelper);\r\n\r\n return new Bloodhound({\r\n datumTokenizer: Bloodhound.tokenizers.whitespace,\r\n queryTokenizer: Bloodhound.tokenizers.whitespace,\r\n local: recentSearches\r\n });\r\n }\r\n\r\n private getDynamicBloodhoundConfig(): BloodhoundConfigHandler<any> {\r\n return InstantSearchHelper.bloodhoundConfig;\r\n }\r\n\r\n private getDynamicTypeaheadConfig(): TypeaheadConfigHandler<any> {\r\n const headerPartial = TypeaheadHelper.getTemplate(Templates.ResultHeader, {\r\n fallbackTemplate: Templates.NotFound\r\n });\r\n\r\n\r\n const pendingPartial = TypeaheadHelper.getTemplate(Templates.Loading, {\r\n fallbackTemplate: Templates.NotFound,\r\n templateText: LanguageService.getPhrase(this.lang, 'findingResults')\r\n });\r\n\r\n return (source: InstantSearchBloodhound<any>, index: number) => ({\r\n name: this.getConfigName(source.name),\r\n source: TypeaheadHelper.handleQuery(source.bloodhound, { fetchType: BloodhoundType.Remote }),\r\n limit: this.getLimits(source.name),\r\n display: (d: ObjectHash) => d.name,\r\n async: true,\r\n templates: {\r\n header: headerPartial,\r\n pending: index === 0 ? pendingPartial : Templates.NotFound,\r\n notFound: Templates.NotFound,\r\n suggestion: this.getDynamicTemplate(source.name),\r\n footer: Templates.ResultFooter\r\n }\r\n });\r\n }\r\n\r\n private getConfigName(type: string): string {\r\n switch (type) {\r\n case SearchQueryType.Classification:\r\n return LanguageService.getPhrase(this.lang, 'classifications');\r\n case SearchQueryType.Video:\r\n return LanguageService.getPhrase(this.lang, 'videos');\r\n case SearchQueryType.Tags:\r\n return LanguageService.getPhrase(this.lang, 'tags');\r\n case SearchQueryType.Series:\r\n return LanguageService.getPhrase(this.lang, 'series');\r\n }\r\n\r\n return type;\r\n }\r\n\r\n private getDynamicOptions(): ObjectHash {\r\n return {\r\n libraryIds: this.getLibraryIds().join(','),\r\n model: this.searchContext,\r\n presentationId: this.options.presentationId\r\n };\r\n }\r\n\r\n /**\r\n * Typeahead sources\r\n */\r\n private getRecentSearchSources(): TypeaheadConfig<string>[] {\r\n this.recentSearchEngine = this.getRecentSearchBloodhound();\r\n return [{\r\n name: SearchTypes.Recent,\r\n source: TypeaheadHelper.handleQuery(this.recentSearchEngine, {\r\n fetchType: BloodhoundType.Local,\r\n ignoreOnQuery: true\r\n }),\r\n limit: SuggestionLimit.Default,\r\n templates: {\r\n header: () => Templates.RecentSearchHeader({ templateText: LanguageService.getPhrase(this.lang, 'recentSearches') }),\r\n suggestion: this.getDynamicTemplate(SearchTypes.Recent)\r\n }\r\n }];\r\n }\r\n\r\n private getDirectSearchSources(): TypeaheadConfig<string>[] {\r\n return [{\r\n name: SearchTypes.Direct,\r\n source: TypeaheadHelper.handleQuery(),\r\n display: (d: any) => d.query,\r\n templates: {\r\n suggestion: TypeaheadHelper.getTemplate(Templates.DirectSearchResult, {\r\n fallbackTemplate: Templates.NotFound,\r\n templateText: LanguageService.getPhrase(this.lang, 'allResults')\r\n }),\r\n footer: Templates.ResultFooter\r\n }\r\n }];\r\n }\r\n\r\n private getDynamicSearchSources(): TypeaheadConfig<Series | Video | Folder | Tag>[] {\r\n const bloodhoundConfig = this.getDynamicBloodhoundConfig();\r\n const typeaheadConfig = this.getDynamicTypeaheadConfig();\r\n const options = this.getDynamicOptions();\r\n\r\n return TypeaheadHelper.getSearchSources<Series | Video | Folder | Tag | Classification>([\r\n { name: SearchQueryType.Classification, bloodhoundConfig, typeaheadConfig, options },\r\n { name: SearchQueryType.Series, bloodhoundConfig, typeaheadConfig, options },\r\n { name: SearchQueryType.Folder, bloodhoundConfig, typeaheadConfig, options },\r\n { name: SearchQueryType.Video, bloodhoundConfig, typeaheadConfig, options },\r\n { name: SearchQueryType.Tags, bloodhoundConfig, typeaheadConfig, options }\r\n ]);\r\n }\r\n\r\n private getSources(): TypeaheadConfig<any>[] {\r\n const sources = [\r\n ...this.getDirectSearchSources(),\r\n ...this.getDynamicSearchSources(),\r\n ];\r\n\r\n if (this.options.showRecentSearch)\r\n sources.push(...this.getRecentSearchSources());\r\n\r\n return sources;\r\n }\r\n\r\n private getNoLibrariesSource(): TypeaheadConfig<any>[] {\r\n return [\r\n {\r\n name: 'NoLibrary',\r\n source: TypeaheadHelper.handleQuery(),\r\n display: (d: any) => d.query,\r\n templates: {\r\n suggestion: TypeaheadHelper.getTemplate(Templates.NoLibraries, {\r\n fallbackTemplate: Templates.NotFound,\r\n templateText: LanguageService.getPhrase(this.lang, 'noLibraries')\r\n }),\r\n }\r\n }\r\n ];\r\n }\r\n\r\n private initializeTypeahead(sources: any[]): void {\r\n // Destroy current searchInput if it already exists\r\n if (this.searchInput) {\r\n this.searchInput.typeahead('destroy');\r\n this.searchInput.unbind();\r\n this.searchInput = null;\r\n }\r\n\r\n this.searchInput = this.getUI(`input`).typeahead({\r\n minLength: 0,\r\n highlight: true,\r\n hint: false,\r\n classNames: {\r\n menu: 'tt-menu rounded border'\r\n }\r\n }, sources);\r\n }\r\n\r\n private hasLibraries(): boolean {\r\n return !!this.libraryCollection.length;\r\n }\r\n\r\n private getLibraryIds(): string[] {\r\n return this.libraryCollection.map(lib => lib.id);\r\n }\r\n\r\n /**\r\n * Render methods\r\n */\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n svg: SvgHelper.getSvg(cvSvgLibrary.Search),\r\n showPartial: !this.libraryCollection || !this.currentUser || !this.libraryCollection,\r\n libraryText: LanguageService.getPhrase(this.lang, 'placeholder', {\r\n smartCount: (this.libraryCollection && this.libraryCollection.length) || 1\r\n })\r\n };\r\n }\r\n\r\n public get requiredResources(): Core.RequiredResourceHash {\r\n return {\r\n currentUser: UserDataServiceHelper.currentUser,\r\n libraryCollection: SharedLibraryDataServiceHelper.libraries\r\n };\r\n }\r\n\r\n private renderSearchTips(): void {\r\n this.showChildView('searchTips', new SearchTipsComponent());\r\n }\r\n\r\n private renderSearch(): void {\r\n this.stickit();\r\n this.initializeTypeahead(this.getSources());\r\n this.initTypeaheadListeners();\r\n Validation.bind(this);\r\n }\r\n\r\n private renderPartialSearch(): void {\r\n this.initializeTypeahead(this.getNoLibrariesSource());\r\n this.initNoLibrariesTypeaheadListeners();\r\n }\r\n\r\n private renderSearchContext(): void {\r\n if (!this.isRendered())\r\n return;\r\n\r\n this.showChildView('searchContext', new SearchContextComponent({\r\n model: this.searchContext\r\n }));\r\n }\r\n\r\n public onRender(): void {\r\n if (!this.hasLibraries()) {\r\n this.renderPartialSearch();\r\n return;\r\n }\r\n\r\n this.renderSearchTips();\r\n this.renderSearch();\r\n this.renderSearchContext();\r\n }\r\n\r\n public onClose(): void {\r\n this.getUI('input').off();\r\n this.unstickit();\r\n Validation.unbind(this);\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 var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.searchBar : stack1), depth0))\n + \" partial-loading-background dark-partial\\\"></div>\";\n},\"useData\":true});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchBar\":\"cv--searchBar--2oChq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchSvgContainer\":\"cv--searchSvgContainer--1-crd\",\"tipsContainer\":\"cv--tipsContainer--15HAy\",\"searchInput\":\"cv--searchInput--1qca6\",\"searchBar\":\"cv--searchBar--3XQHi\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=\"function\", alias5=container.escapeExpression;\n\n return \"<div class=\\\"direct-search-suggestion p-2\\\"><span class=\\\"ignore-highlighting\\\">\"\n + alias5(((helper = (helper = helpers.templateText || (depth0 != null ? depth0.templateText : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"templateText\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\r\\n <span class=\\\"query-text\\\">\"\n + alias5(((helper = (helper = helpers.query || (depth0 != null ? depth0.query : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"query\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\r\\n</div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=\"function\", alias5=container.escapeExpression;\n\n return \"<div class=\\\"p-2\\\"><a href=\\\"\"\n + alias5(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias5(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \" - \"\n + alias5(((helper = (helper = helpers.libraryName || (depth0 != null ? depth0.libraryName : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"libraryName\",\"hash\":{},\"data\":data}) : helper)))\n + \"</a></div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"tt-pending p-2\\\">\\r\\n <div class=\\\"partial-text\\\">\"\n + container.escapeExpression(((helper = (helper = helpers.templateText || (depth0 != null ? depth0.templateText : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"templateText\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n</div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"no-libraries-suggestion p-2\\\">\\r\\n <div class=\\\"ignore-highlighting\\\">\"\n + container.escapeExpression(((helper = (helper = helpers.templateText || (depth0 != null ? depth0.templateText : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"templateText\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\r\\n</div>\";\n},\"useData\":true});","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=\\\"tt-not-found\\\"></div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"suggestion-header text-uppercase font-weight-bold p-2\\\">\"\n + container.escapeExpression(((helper = (helper = helpers.templateText || (depth0 != null ? depth0.templateText : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"templateText\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\";\n},\"useData\":true});","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=\\\"suggestion-seperator border-bottom\\\"></div>\\r\\n\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=container.propertyIsEnumerable;\n\n return \"<div class=\\\"suggestion-header text-uppercase font-weight-bold px-2 pt-2 pb-1\\\">\"\n + container.escapeExpression(((helper = (helper = helpers.dataset || (depth0 != null ? depth0.dataset : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"dataset\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\";\n},\"useData\":true});","import FolderResult from './FolderResult.hbs';\r\nimport DirectSearchResult from './DirectSearchResult.hbs';\r\nimport Loading from './Loading.hbs';\r\nimport NotFound from './NotFound.hbs';\r\nimport ResultFooter from './ResultFooter.hbs';\r\nimport ResultHeader from './ResultHeader.hbs';\r\nimport RecentSearchHeader from './RecentSearchHeader.hbs';\r\nimport NoLibraries from './NoLibraries.hbs';\r\n\r\nexport {\r\n FolderResult,\r\n DirectSearchResult,\r\n Loading,\r\n NotFound,\r\n ResultFooter,\r\n ResultHeader,\r\n RecentSearchHeader,\r\n NoLibraries\r\n};\r\n","export enum ClassificationMemberType {\r\n Playlists = 'playlists',\r\n Series = 'series',\r\n Videos = 'videos'\r\n}","import { Core } from 'libs/common/core';\r\n\r\nclass PendingItem extends Core.Model {\r\n public get idAttribute(): string {\r\n return 'masterVideoId';\r\n }\r\n}\r\n\r\nexport class PendingItemsCollection extends Core.Collection {\r\n public get model(): typeof PendingItem {\r\n return PendingItem;\r\n }\r\n}","export const UploadEventNames = {\r\n /**\r\n * This is fired when a file has finished uploading to file API. This event\r\n * has nothing to do with posting the uploaded resource to the respective repository.\r\n */\r\n UPLOAD_COMPLETE: 'upload:complete',\r\n\r\n /**\r\n * This is trigged when files are selected\r\n * from either the FileSelectBehavior or the FileDropBehavior\r\n */\r\n FILES_SELECTED: 'files:selected',\r\n\r\n /**\r\n * This triggered by the upload service when it received ingest urls for all\r\n * the files added via a call to UploadService.addFiles(files: File[])\r\n */\r\n FILES_ADDED: 'files:added',\r\n\r\n /**\r\n * This is fired when the user cancels their own upload\r\n */\r\n UPLOAD_CANCELLED: 'upload:cancelled',\r\n\r\n /**\r\n * Name is self explanitory. This is only used internally by children\r\n * of BasePendingItemsService at the moment\r\n */\r\n PENDING_ITEM_READY_TO_WATCH: 'pending:item:ready:to:watch',\r\n\r\n /**\r\n * Fired when we know that the pending items in args has changed status\r\n * or that it's foreground progress has been completed.\r\n */\r\n PENDING_ITEM_STATUS_CHANGE: 'pending:item:status:change',\r\n\r\n /**\r\n * This is fired when the user cancels processing a recently uploaded video\r\n */\r\n PROCESSING_CANCELLED: 'processing:cancelled',\r\n\r\n /**\r\n * Fired when all uploads are finished or when uploading is cancelled. Unlocks navigation\r\n */\r\n UNLOCK_NAV: 'upload:unlock:nav'\r\n};","export enum FileLifestyle {\r\n Permanent = 0,\r\n Temporary = 1\r\n}","export enum PendingItemStatus {\r\n Error = -1,\r\n Processing = 1,\r\n Completed = 2\r\n}","import { DialogError } from 'libs/shared/errors/primitives/DialogError';\r\nimport { DialogOptions } from 'libs/shared/interfaces';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\n/**\r\n * TODO: Create a more useful message here.\r\n * Perhaps using the mime types listen on MDN\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\r\n * or in the list of all the official mime types\r\n * https://www.iana.org/assignments/media-types/media-types.xhtml\r\n */\r\nexport class FileTypeError extends DialogError {\r\n constructor(message: string, files: File[], acceptedFiles: string) {\r\n super(message);\r\n }\r\n\r\n public get name(): string {\r\n return 'FileTypeError';\r\n }\r\n\r\n public get lang(): string {\r\n return 'upload.fileType';\r\n }\r\n\r\n public get dialogOptions(): DialogOptions {\r\n return {\r\n title: LanguageService.getPhrase(this.lang, 'heading'),\r\n text: LanguageService.getPhrase(this.lang, 'body'),\r\n buttons: [{\r\n text: LanguageService.getPhrase(this.lang, 'okay'),\r\n className: 'btn btn-primary',\r\n success: true\r\n }, {\r\n text: LanguageService.getPhrase(this.lang, 'close'),\r\n className: 'btn btn-link',\r\n close: true\r\n }]\r\n };\r\n }\r\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\r\nimport { DialogOptions } from 'libs/shared/interfaces';\r\n\r\nconst lang = 'upload.internetConnectivityError';\r\n\r\nexport class InternetConnectivityError extends DialogError {\r\n constructor() {\r\n super(LanguageService.getPhrase(lang, 'title'));\r\n }\r\n\r\n public get name(): string {\r\n return 'InternetConnectivityError';\r\n }\r\n\r\n public get dialogOptions(): DialogOptions {\r\n return {\r\n title: LanguageService.getPhrase(lang, 'heading'),\r\n text: LanguageService.getPhrase(lang, 'body'),\r\n buttons: [{\r\n text: LanguageService.getPhrase(lang, 'okay'),\r\n className: 'btn',\r\n success: true\r\n }]\r\n };\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { PendingItemsCollection } from 'libs/shared/apps/upload/collections/PendingItemsCollection';\r\nimport { PendingItemStatus } from 'libs/shared/apps/upload/enums/PendingItemStatus';\r\nimport { BaseVideoDataService, BaseVideoUploadDataService } from 'libs/shared/interfaces';\r\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\r\nimport { SharedServices, SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\n\r\ninterface FetchPendingItemsOptions {\r\n resetTimeout: boolean;\r\n callback?: () => void;\r\n}\r\n\r\nexport class BasePendingItemsService extends Core.Service {\r\n private pendingItems: Core.Collection;\r\n\r\n private videoDataService: BaseVideoDataService<Core.Collection>;\r\n private videoUploadDataService: BaseVideoUploadDataService;\r\n\r\n public get name(): string {\r\n return SharedServices.PendingItems;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedServiceChannels.PENDING_ITEMS;\r\n }\r\n\r\n public initialize(): void {\r\n this.videoDataService = InstanceManager.getInstance(SharedDataServices.Video, this);\r\n this.videoUploadDataService = InstanceManager.getInstance(SharedDataServices.VideoUpload, this);\r\n }\r\n\r\n public clearPendingItem(model: Core.Model, callback?: () => void): void {\r\n switch (model.get('pendingProcessStatus')){\r\n case PendingItemStatus.Completed:\r\n case PendingItemStatus.Error:\r\n this.videoUploadDataService.clearPendingItems([model.get('pendingProcessId')], () => {\r\n model.set('clearing', true);\r\n model.collection.remove(model);\r\n this.updateViewModel();\r\n this.videoDataService.clearVideoCache();\r\n if (_.isFunction(callback))\r\n callback();\r\n });\r\n break;\r\n case PendingItemStatus.Processing:\r\n this.videoUploadDataService.cancelPendingItems([model.get('pendingProcessId')], () => {\r\n model.set('clearing', true);\r\n model.collection.remove(model);\r\n this.videoDataService.clearVideoCache();\r\n this.updateViewModel();\r\n if (_.isFunction(callback))\r\n callback();\r\n });\r\n }\r\n }\r\n\r\n public forceFetchPendingItems(options?: FetchPendingItemsOptions): void {\r\n this.fetchPendingItems(options);\r\n }\r\n\r\n public retryPendingItem(model: Core.Model, callback?: () => void): void {\r\n this.videoUploadDataService.retryPendingItems([model.get('pendingProcessId')], () => {\r\n this.fetchPendingItems({ resetTimeout: false, callback });\r\n });\r\n }\r\n\r\n private itemStatusChanged(): void {\r\n /**\r\n * At this point in time, we know that the pending items in args has changed status\r\n * or that it's foreground progress has been completed.\r\n */\r\n const channel = Radio.channel(this.channelName);\r\n channel.trigger(UploadEventNames.PENDING_ITEM_STATUS_CHANGE);\r\n this.videoDataService.clearVideoCache();\r\n }\r\n\r\n public getPendingItems(): Core.Collection {\r\n if (this.pendingItems)\r\n return this.pendingItems;\r\n\r\n this.pendingItems = new PendingItemsCollection();\r\n\r\n this.listenTo(this.pendingItems, 'change:foregroundComplete', (model: Core.Model) => {\r\n if (!model.get('foregroundComplete'))\r\n return;\r\n\r\n this.itemStatusChanged();\r\n\r\n const video = model.get('video');\r\n\r\n if (!video)\r\n return;\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.PENDING_ITEM_READY_TO_WATCH, model);\r\n });\r\n\r\n this.listenTo(this.pendingItems, 'remove', (model: Core.Model) => {\r\n /**\r\n * Whenever we're manually removing a model from the pending items collection\r\n * we put the clearing attribute on the model, so that we don't clear the\r\n * video cache and refetch our videos.\r\n */\r\n if (model.get('clearing'))\r\n return;\r\n\r\n this.videoUploadDataService.getPendingItem(model.get('pendingProcessId'), (result: Core.Model) => {\r\n if (result.get('status') !== PendingItemStatus.Completed)\r\n return;\r\n\r\n this.itemStatusChanged();\r\n });\r\n });\r\n\r\n this.fetchPendingItems();\r\n\r\n return this.pendingItems;\r\n }\r\n\r\n private fetchPendingItems(options: FetchPendingItemsOptions = { resetTimeout: true }): void {\r\n /**\r\n * If this service has been destroyed, stop polling\r\n */\r\n if (this.isDestroyed())\r\n return;\r\n\r\n /**\r\n * Fetch pending items\r\n */\r\n this.videoUploadDataService.getPendingItems((pendingItems: any[]) => {\r\n\r\n /**\r\n * Pull out master video ids\r\n */\r\n const videoIds = _.map(pendingItems, p => p.masterVideoId.toString());\r\n\r\n const getVideosCallback = (videos: Core.Collection) => {\r\n\r\n /**\r\n * Map pending items to master videos\r\n */\r\n _.each(pendingItems, p => {\r\n const video = videos.get(p.masterVideoId);\r\n\r\n if (!video)\r\n return;\r\n\r\n p.video = video;\r\n\r\n if (p.foregroundProgress >= 100 && video.get('status') === CurationStatus.Processing)\r\n video.set('status', CurationStatus.Published);\r\n });\r\n\r\n this.pendingItems.set(pendingItems);\r\n this.updateViewModel();\r\n\r\n if (options.resetTimeout) {\r\n window.setTimeout(_.bind(this.fetchPendingItems, this), this.getTimeoutLength());\r\n }\r\n\r\n if (_.isFunction(options.callback)) {\r\n options.callback();\r\n }\r\n };\r\n\r\n /**\r\n * Don't pointlessly fetch with no videoids\r\n */\r\n if (!videoIds.length) {\r\n getVideosCallback(new Core.Collection());\r\n return;\r\n }\r\n\r\n this.videoDataService.getVideos(videoIds, getVideosCallback);\r\n });\r\n }\r\n\r\n private updateViewModel(): void {\r\n const model: Core.Model = ViewModelService.get('process:progress');\r\n\r\n if (!this.pendingItems || !this.pendingItems.length) {\r\n model.set({ progress: 0, items: 0 });\r\n return;\r\n }\r\n\r\n const notErrored = this.pendingItems.where((p: Core.Model) => p.get('pendingProcessStatus') >= 0);\r\n\r\n let progress = 0;\r\n\r\n _.each(notErrored, p => progress += p.get('foregroundProgress'));\r\n\r\n const totalProgress = notErrored.length * 100;\r\n\r\n model.set({\r\n progress: Math.round((progress / totalProgress) * 100),\r\n items: this.pendingItems.length,\r\n hasErrors: this.pendingItems.length !== notErrored.length\r\n });\r\n }\r\n\r\n /**\r\n * Fetch every 5 seconds if any items are processing,\r\n * otherwise fetch every 30 seconds.\r\n */\r\n private getTimeoutLength(): number {\r\n const processingItems = this.pendingItems.any(p => p.get('pendingProcessStatus') === PendingItemStatus.Processing);\r\n return processingItems ? 5000 : 30000;\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport * as Dropzone from 'dropzone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { InternetConnectivityError } from 'libs/shared/apps/upload/errors/internet-connectivity/InternetConnectivityError';\r\nimport { AlertError } from 'libs/shared/errors/primitives/AlertError';\r\n\r\nexport interface UploadApiWrapperOptions extends Core.ServiceOptions {\r\n maxFileSize: number;\r\n chunkSize: number;\r\n chunkingEnabled: boolean;\r\n loggingEnabled: boolean;\r\n acceptedFiles: string;\r\n channelName: string;\r\n}\r\n\r\nexport interface UploadApiWrapper {\r\n addFile(file: File): void;\r\n destroy(): void;\r\n start(): void;\r\n getId(file: File): string;\r\n removeFile(file: File): void;\r\n}\r\n\r\nconst dropzoneEvents: string[] = [\r\n // 'uploadprogress', 'totaluploadprogress',\r\n // 'addedfile', 'removedfile', 'thumbnail', 'error', 'processing',\r\n // 'sending', 'success', 'complete', 'addedfile',\r\n // 'maxfilesreached', 'maxfilesexceeded', 'processingmultiple',\r\n // 'sendingmultiple', 'completemultiple', 'canceledmultiple',\r\n // 'reset', 'queuecomplete'\r\n];\r\n\r\nexport class DropzoneWrapper extends Core.Service implements UploadApiWrapper {\r\n private dropzone: Dropzone;\r\n public options: UploadApiWrapperOptions;\r\n\r\n public get name(): string {\r\n return 'DropzoneWrapper';\r\n }\r\n\r\n constructor(options: UploadApiWrapperOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(options: UploadApiWrapperOptions): void {\r\n const { loggingEnabled } = this.options;\r\n\r\n const uploadChannel = Radio.channel(options.channelName);\r\n\r\n /**\r\n * Thought I wouldn't see this in any of our TS\r\n * Guess I was wrong - sha\r\n */\r\n const self = this;\r\n\r\n this.dropzone = new Dropzone(document.createElement('div'), {\r\n url: ((files: Dropzone.DropzoneFile[]) => {\r\n const file = files[0] as any;\r\n\r\n const { ingestUrl } = file.cvUpload;\r\n\r\n return ingestUrl;\r\n }) as any,\r\n\r\n chunking: this.options.chunkingEnabled,\r\n chunkSize: this.options.chunkSize,\r\n forceChunking: true,\r\n autoProcessQueue: true,\r\n maxFilesize: this.options.maxFileSize,\r\n acceptedFiles: this.options.acceptedFiles,\r\n paramName: 'content',\r\n\r\n init: function (): void {\r\n if (!loggingEnabled)\r\n return;\r\n\r\n _.each(dropzoneEvents, (eventName: string) => {\r\n this.on(eventName, (...args: any[]) => {\r\n const file = args[0] instanceof File ? args[0].name : args[0];\r\n console.info(eventName, file, args);\r\n });\r\n });\r\n\r\n this.on('uploadprogress', (file: File, percentage: number, totalBytes: number) => {\r\n const progress = totalBytes / file.size * 100;\r\n uploadChannel.trigger('progress', self.getId(file), progress, totalBytes);\r\n });\r\n\r\n this.on('success', (file: File) => {\r\n /**\r\n * This is sort of a hack. It assumes the last chunk will be the last chunk that is uploaded\r\n * which may not necessarily be the case\r\n */\r\n const chunks = (file as any).upload.chunks;\r\n\r\n const lastChunk = _.last(chunks) as any;\r\n\r\n let xhr = lastChunk.xhr;\r\n\r\n if (!xhr)\r\n xhr = lastChunk.file.xhr;\r\n\r\n const response = JSON.parse(xhr.response);\r\n\r\n (file as any).cvUpload.fileUrl = response.url;\r\n\r\n uploadChannel.trigger('upload:success', file, response);\r\n });\r\n\r\n this.on('error', (file: File, messageObj: ObjectHash, xhr: XMLHttpRequest) => {\r\n if (xhr && xhr.status === 0) {\r\n Core.ErrorHelper.throw(new InternetConnectivityError());\r\n return;\r\n }\r\n\r\n /**\r\n * Don't throw if the error was caused by canceling\r\n * the chunk upload. this will happen when the user cancels\r\n * an upload themselves.\r\n */\r\n if ((file as Dropzone.DropzoneFile).status !== 'canceled')\r\n Core.ErrorHelper.throw(\r\n new AlertError(LanguageService.getPhrase('upload.services', 'uploadError', {\r\n fileName: file.name,\r\n message: messageObj.message\r\n }))\r\n );\r\n });\r\n },\r\n\r\n params: (files: Dropzone.DropzoneFile[], xhr: XMLHttpRequest, chunk: any) => {\r\n if (!chunk)\r\n return;\r\n\r\n return {\r\n chunk_index: chunk.index,\r\n upload_length: chunk.file.size,\r\n };\r\n },\r\n\r\n /**\r\n * These methods are here to disable Dropzone's UI related features\r\n */\r\n addedfile: () => {},\r\n thumbnail: () => {},\r\n uploadprogress: () => {},\r\n });\r\n }\r\n\r\n public getId(file: File): string {\r\n return (file as any).upload.uuid;\r\n }\r\n\r\n public addFile(file: Dropzone.DropzoneFile): void {\r\n this.dropzone.addFile(file);\r\n }\r\n\r\n public removeFile(file: Dropzone.DropzoneFile): void {\r\n this.dropzone.removeFile(file);\r\n }\r\n\r\n public start(): void {\r\n this.dropzone.processQueue();\r\n }\r\n\r\n public destroy(): void {\r\n this.dropzone.destroy();\r\n }\r\n\r\n public static isValidFile(file: File, acceptedFiles: string): boolean {\r\n /**\r\n * For Whatever reason the typings for Dropzone don't have isValidFile\r\n * but it's definitely there: \r\n * https://github.com/enyo/dropzone/blob/v5.5.0/dist/dropzone.js#L3157\r\n */\r\n return (Dropzone as any).isValidFile(file, acceptedFiles);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\r\nimport { Caches } from 'libs/common/backbone/constants/Caches';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nimport { FileLifestyle } from 'libs/shared/apps/upload/enums/FileLifestyle';\r\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\nimport { FileTypeError } from 'libs/shared/apps/upload/errors/file-type/FileTypeError';\r\nimport { UploadApiWrapper, DropzoneWrapper } from './DropzoneWrapper';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { EntityType, UserAction, WorkflowPhase, OperationDescriptor, AnalyticsOptions, LocationContext } from 'libs/analytics/interfaces';\r\n\r\n/**\r\n * This data service is locally private and is only\r\n * used by the UploadService to request/cancel uploads from\r\n * FileApi\r\n */\r\nclass UploadDataService extends BaseDataService {\r\n constructor() {\r\n super({\r\n dataProvider: InstanceManager.getInstance(DataProviders.Ajax),\r\n cache: InstanceManager.getInstance(Caches.Fifo),\r\n alertService: InstanceManager.getInstance(CommonServices.ALERT)\r\n });\r\n }\r\n\r\n public get name(): string {\r\n /**\r\n * This string is not in DataServices because this data service is private.\r\n */\r\n return 'UploadDataService';\r\n }\r\n\r\n /**\r\n * This is not sitting in RadioChannels\r\n * because it is only used in this file\r\n */\r\n public get channelName(): string {\r\n return 'private:upload:data:service';\r\n }\r\n\r\n public requestUploads(\r\n files: File[],\r\n fileLifestyle: FileLifestyle,\r\n fileCallback: (file: File, response: any) => void,\r\n callback: () => void\r\n ): void {\r\n const chain = this.chain();\r\n\r\n _.each(files, file => {\r\n chain.create({\r\n resource: '/api/upload',\r\n eventPrefix: 'request:upload',\r\n data: this.getFileUploadRequest(file, fileLifestyle),\r\n callback: (response: any) => {\r\n fileCallback(file, response);\r\n }\r\n });\r\n });\r\n\r\n chain.func(() => {\r\n callback();\r\n })\r\n .run();\r\n }\r\n\r\n public cancelUpload(uploadId: string, ingestUrl: string, callback?: (response: any) => void): void {\r\n this.create({\r\n resource: '/api/upload/cancel',\r\n eventPrefix: 'cancel:upload',\r\n data: {\r\n uploadId, ingestUrl\r\n },\r\n callback\r\n });\r\n }\r\n\r\n private getFileUploadRequest(file: File, fileLifestyle: FileLifestyle): HashObject {\r\n const splitName = file.name.split('.');\r\n\r\n /**\r\n * TODO: We may need to set the file permanence in file api to\r\n * permanent for resources and subtitles\r\n * Check what Prad/Cam say in\r\n * https://app.asana.com/0/720933954350984/735809491718142\r\n */\r\n return {\r\n name: splitName.join('.'),\r\n extension: splitName.length > 1 ? splitName.pop() : '',\r\n fileSize: file.size,\r\n fileLifestyle\r\n };\r\n }\r\n\r\n public onDestroy(): void {\r\n InstanceManager\r\n .releaseInstance(DataProviders.Ajax)\r\n .releaseInstance(Caches.Fifo);\r\n }\r\n}\r\n\r\n\r\nexport interface UploadItem extends Core.Model {\r\n file: File;\r\n name: string;\r\n progress: number;\r\n}\r\n\r\nexport enum UploadType {\r\n Video,\r\n LearningResource,\r\n Subtitle\r\n}\r\n\r\nconst AcceptedFiles = {\r\n [UploadType.Video]: 'video/*',\r\n [UploadType.LearningResource]: FileExtensions.RESOURCES,\r\n [UploadType.Subtitle]: FileExtensions.SUBTITLES\r\n};\r\n\r\nconst ChannelNames = {\r\n [UploadType.Video]: SharedServiceChannels.VIDEO_UPLOAD,\r\n [UploadType.LearningResource]: SharedServiceChannels.RESOURCE_UPLOAD,\r\n [UploadType.Subtitle]: SharedServiceChannels.SUBTITLE_UPLOAD\r\n};\r\n\r\nconst CHUNK_SIZE = 1024 * 1024 * 4; // 4mb\r\nconst MAX_FILE_SIZE = 1024 * 1024 * 1024 * 50; // 50gb\r\n\r\nclass UploadService extends Core.Service {\r\n protected uploadType: UploadType;\r\n protected fileLifestyle: FileLifestyle;\r\n\r\n protected uploader: UploadApiWrapper;\r\n\r\n private progressViewModel: Core.Model;\r\n\r\n private uploadDataService: UploadDataService;\r\n\r\n private collection: Core.Collection<UploadItem>;\r\n\r\n public initialize(): void {\r\n this.uploadDataService = new UploadDataService();\r\n\r\n this.progressViewModel = ViewModelService.get(`upload:progress:${this.uploadType}`);\r\n\r\n this.bindListeners();\r\n }\r\n\r\n public get channelName(): string {\r\n return ChannelNames[this.uploadType];\r\n }\r\n\r\n public get lang(): string {\r\n return 'upload.services';\r\n }\r\n\r\n /**\r\n * Dropzone is initialized once after the first upload is requested and it's chunk size\r\n * is set for the rest of the uploads. If we happen to have multiple ingest\r\n * servers that have different chunk max / min sizes, this may voilate those\r\n * sizes.\r\n */\r\n private initUploader(minChunkSize: number, maxChunkSize: number): void {\r\n if (this.uploader)\r\n return;\r\n\r\n let chunkSize = CHUNK_SIZE;\r\n\r\n if (minChunkSize && chunkSize < minChunkSize)\r\n chunkSize = minChunkSize;\r\n\r\n if (maxChunkSize && chunkSize > maxChunkSize)\r\n chunkSize = maxChunkSize;\r\n\r\n this.uploader = new DropzoneWrapper({\r\n chunkingEnabled: true,\r\n loggingEnabled: true,\r\n chunkSize,\r\n maxFileSize: MAX_FILE_SIZE,\r\n acceptedFiles: this.getAcceptedFiles(),\r\n channelName: this.channelName\r\n });\r\n }\r\n\r\n private bindListeners(): void {\r\n this.listenTo(this.channelName, 'progress', this.onProgress);\r\n\r\n this.listenTo(this.channelName, 'upload:success', this.onSuccess);\r\n }\r\n\r\n private onProgress(id: string, percentage: number, totalUploaded: number): void {\r\n const model = this.collection.get(id);\r\n\r\n if (!model)\r\n return;\r\n\r\n model.set({\r\n progress: percentage > 100 ? 100 : percentage,\r\n totalUploaded\r\n });\r\n\r\n this.setOverallProgress();\r\n }\r\n\r\n public isUploading(): boolean {\r\n return !!this.getCollection().length;\r\n }\r\n\r\n public getCollection(): Core.Collection<UploadItem> {\r\n if (this.collection)\r\n return this.collection;\r\n\r\n this.collection = new Core.Collection<UploadItem>();\r\n return this.collection;\r\n }\r\n\r\n public setOverallProgress(): void {\r\n let totalUploaded = 0;\r\n let totalFileSize = 0;\r\n\r\n const collection = this.getCollection();\r\n\r\n if (!collection.length) {\r\n this.progressViewModel.set({ progress: 0 });\r\n return;\r\n }\r\n\r\n collection.each((model: Core.Model) => {\r\n totalUploaded += model.get('totalUploaded') || 0;\r\n totalFileSize += model.get('file').size || 0;\r\n });\r\n\r\n const percentage = totalUploaded / totalFileSize * 100;\r\n\r\n const done = percentage > 100;\r\n\r\n this.progressViewModel.set({\r\n progress: done ? 100 : percentage,\r\n done\r\n });\r\n }\r\n\r\n public isValidFile(file: File): boolean {\r\n return DropzoneWrapper.isValidFile(file, this.getAcceptedFiles());\r\n }\r\n\r\n /**\r\n * Request uploads from fileApi and starts uploading.\r\n * @param files Array of browser File objects\r\n * @returns Returns false if any of the files did not match the accepted file list.\r\n */\r\n public addFiles(files: File[], analyticsOptions?: AnalyticsOptions): void {\r\n if (_.any(files, file => !this.isValidFile(file))) {\r\n Core.ErrorHelper.throw(\r\n new FileTypeError(LanguageService.getPhrase(this.lang, 'invalidFileType'), files, this.getAcceptedFiles())\r\n );\r\n return;\r\n }\r\n\r\n this.requestUploads(files, analyticsOptions);\r\n }\r\n\r\n private requestUploads(files: File[], analyticsOptions?: AnalyticsOptions): void {\r\n const wasUploading = this.isUploading();\r\n\r\n const collection = this.getCollection();\r\n\r\n this.uploadDataService.requestUploads(files, this.fileLifestyle, (file: File, response: any) => {\r\n this.initUploader(response.minChunkSize * 1024, response.maxChunkSize * 1024);\r\n\r\n (file as any).cvUpload = {\r\n uploadId: response.uploadId,\r\n ingestUrl: response.ingestUrl\r\n };\r\n\r\n this.uploader.addFile(file);\r\n\r\n let fileName = file.name;\r\n\r\n // Remove file extension from filename if video\r\n if (this.uploadType === UploadType.Video)\r\n fileName = fileName.replace(/\\.[^/.]+$/, '');\r\n\r\n collection.add({\r\n id: this.uploader.getId(file),\r\n file,\r\n name: fileName\r\n }, { at: collection.length - 1 });\r\n }, () => {\r\n if (analyticsOptions) {\r\n AnalyticsHelper.logUserAction({\r\n uploadCount: files.length\r\n }, analyticsOptions);\r\n }\r\n\r\n const channel = Radio.channel(this.channelName);\r\n channel.trigger(UploadEventNames.FILES_ADDED, files, wasUploading);\r\n });\r\n }\r\n\r\n public addFile(file: File, analyticsOptions: AnalyticsOptions): void {\r\n this.addFiles([file], analyticsOptions);\r\n }\r\n\r\n public cancelUpload(id: string): void {\r\n const collection = this.getCollection();\r\n const model = collection.get(id);\r\n\r\n if (!model)\r\n return;\r\n\r\n const file = model.get('file') as any;\r\n\r\n this.uploader.removeFile(file);\r\n collection.remove(model);\r\n\r\n this.uploadDataService.cancelUpload(file.cvUpload.uploadId, file.cvUpload.ingestUrl, () => {\r\n AnalyticsHelper.logUserAction({\r\n id: file.cvUpload.uploadId\r\n }, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Upload,\r\n workflowPhase: WorkflowPhase.Discard,\r\n descriptor: OperationDescriptor.Single,\r\n location: LocationContext.MyUploads\r\n });\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.UPLOAD_CANCELLED);\r\n });\r\n\r\n this.setOverallProgress();\r\n }\r\n\r\n protected onSuccess(file: File, response: any): void {\r\n const fileId = this.uploader.getId(file);\r\n\r\n const upload = this.getCollection().get(fileId);\r\n\r\n upload.set('fileInfo', response);\r\n\r\n AnalyticsHelper.logUserAction({\r\n id: (file as any).cvUpload.uploadId\r\n }, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Upload,\r\n workflowPhase: WorkflowPhase.Complete,\r\n descriptor: OperationDescriptor.Single,\r\n location: LocationContext.VideoUpload\r\n });\r\n\r\n const channel = Radio.channel(this.channelName);\r\n channel.trigger(UploadEventNames.UPLOAD_COMPLETE, upload);\r\n }\r\n\r\n public cancelAllUploads(): void {\r\n /**\r\n * We're using model ids and _.each\r\n * instead of collection.each because this.cancelUpload\r\n * removes items from the collection which breaks collection.each\r\n */\r\n const models = this.getCollection().map(m => m.get('id'));\r\n _.each(models, m => this.cancelUpload(m));\r\n }\r\n\r\n protected getAcceptedFiles(): string {\r\n return AcceptedFiles[this.uploadType];\r\n }\r\n}\r\n\r\nexport class BaseVideoUploadService extends UploadService {\r\n protected get uploadType(): UploadType {\r\n return UploadType.Video;\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.VideoUpload;\r\n }\r\n\r\n public get fileLifestyle(): FileLifestyle {\r\n return FileLifestyle.Temporary;\r\n }\r\n}\r\n\r\nexport class SubtitleUploadService extends UploadService {\r\n protected get uploadType(): UploadType {\r\n return UploadType.Subtitle;\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.SubtitleUpload;\r\n }\r\n\r\n public get fileLifestyle(): FileLifestyle {\r\n return FileLifestyle.Permanent;\r\n }\r\n}\r\n\r\nexport class LearningResourceUploadService extends UploadService {\r\n protected get uploadType(): UploadType {\r\n return UploadType.LearningResource;\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.ResourceUpload;\r\n }\r\n\r\n public get fileLifestyle(): FileLifestyle {\r\n return FileLifestyle.Permanent;\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\n/**\r\n * This are kept as separate variables for when we eventually need a single group of them.\r\n * For example when we add image upload support.\r\n */\r\n\r\nconst pdfExtensions = ['pdf'];\r\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\r\nconst textExtensions = [ 'csv', 'txt' ];\r\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\r\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\r\nconst archiveExtensions = [ 'zip', 'rar' ];\r\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\r\n\r\nconst subtitleExtensions = ['srt'];\r\n\r\nconst FileExtensions = {\r\n IMAGES: `.${imageExtensions.join(',.')}`,\r\n RESOURCES: `.${[\r\n ...docExtensions,\r\n ...excelExtensions,\r\n ...powerPointExtensions,\r\n ...pdfExtensions,\r\n ...textExtensions,\r\n ...imageExtensions,\r\n ...archiveExtensions\r\n ].join(',.')}`,\r\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\r\n};\r\n\r\nconst FileExtensionHelper = {\r\n getResourceType(extension: string): string {\r\n const ext = extension.toLowerCase();\r\n\r\n if (_.contains(docExtensions, ext)) return 'document';\r\n if (_.contains(excelExtensions, ext)) return 'excel';\r\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\r\n if (_.contains(pdfExtensions, ext)) return 'pdf';\r\n\r\n if (_.contains(textExtensions, ext)) return 'text';\r\n if (_.contains(imageExtensions, ext)) return 'image';\r\n if (_.contains(archiveExtensions, ext)) return 'archive';\r\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\r\n\r\n return '';\r\n }\r\n};\r\n\r\nexport { FileExtensions, FileExtensionHelper };","import * as moment from 'moment';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { PendingItemStatus } from 'libs/shared/apps/upload/enums/PendingItemStatus';\r\n\r\nconst lang = 'upload.utils';\r\n\r\nconst PendingItemsHelper = {\r\n getStatus(model: Core.Model): string {\r\n /**\r\n * TODO: Get actual error messages from Prad\r\n */\r\n if (PendingItemsHelper.hasError(model))\r\n return LanguageService.getPhrase(lang, 'videoProcessingError');\r\n\r\n if (!model.get('foregroundComplete')) {\r\n const progress = PendingItemsHelper.getProgress(model);\r\n return progress === 0\r\n ? LanguageService.getPhrase(lang, 'waiting')\r\n : LanguageService.getPhrase(lang, 'processing', { progress });\r\n }\r\n\r\n if (PendingItemsHelper.isDone(model))\r\n return LanguageService.getPhrase(lang, 'complete');\r\n\r\n return LanguageService.getPhrase(lang, 'readyToWatch');\r\n },\r\n hasError(model: Core.Model): boolean {\r\n return model.get('pendingProcessStatus') === PendingItemStatus.Error;\r\n },\r\n isDone(model: Core.Model): boolean {\r\n return model.get('pendingProcessStatus') === 2;\r\n },\r\n getProgress(model: Core.Model): number {\r\n return model.get('foregroundProgress');\r\n },\r\n hasExpired(model: Core.Model, maxSessionLength: number): boolean {\r\n const uploadSessionCreationTime = model.get('timeInitialized');\r\n const currentTime = moment();\r\n\r\n // Returns true if the session is 7 days or older (expired).\r\n return currentTime.diff(uploadSessionCreationTime, 'days') >= maxSessionLength;\r\n }\r\n};\r\n\r\nexport { PendingItemsHelper };","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 { 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\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 { Core } from 'libs/common/core';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\n\r\nimport { Video } from 'libs/shared/interfaces';\r\nimport { NumberHelper } from 'libs/shared/utils/NumberHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport styles from './series-link.scss';\r\n\r\ninterface SeriesLinkProps {\r\n appLink: Core.AppLink;\r\n video: Video;\r\n className?: string;\r\n}\r\n\r\nfunction SeasonEpisode(props: SeriesLinkProps): JSX.Element {\r\n const { video } = props;\r\n const { season } = video;\r\n\r\n if (!video.episodeNumber || !season)\r\n return <></>;\r\n\r\n const seasonNumber = NumberHelper.padNumber(season.number, 2);\r\n const episodeNumber = NumberHelper.padNumber(video.episodeNumber, 2);\r\n\r\n /* \\u2022 is the unicode number for &bull; */\r\n return (\r\n <span className={`d-inline-block ${styles.seasonEpisodeContainer}`}>\r\n &nbsp;\r\n {!!seasonNumber && `S${seasonNumber} \\u2022 `}\r\n E{episodeNumber}\r\n </span>\r\n );\r\n}\r\n\r\nexport function SeriesLink(props: SeriesLinkProps): JSX.Element {\r\n const { appLink, video: { series }, className } = props;\r\n\r\n if (!series || !series.id)\r\n return <></>;\r\n\r\n const seriesAppLink: Core.AppLink = appLink && {\r\n ...appLink,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n };\r\n\r\n if (seriesAppLink) {\r\n return (\r\n <AppLink appLink={seriesAppLink} className={`text-uppercase ${styles.appLink} ${className}`}>\r\n {series.name}\r\n <SeasonEpisode {...props} />\r\n </AppLink>\r\n );\r\n }\r\n\r\n return (\r\n <span className={`text-uppercase ${styles.appLink} ${className}`}>\r\n {series.name}\r\n <SeasonEpisode {...props} />\r\n </span>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"appLink\":\"cv--appLink--1SFgo\",\"seasonEpisodeContainer\":\"cv--seasonEpisodeContainer--1YAi8\"};","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 { Placement } from 'react-bootstrap/Overlay';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\r\nimport { SvgContainerSize } from './SvgContainer'; // TODO: Move this enum in here\r\n\r\nconst DEFAULT_CLASS_NAME = 'd-inline-block svg-container';\r\nconst DEFAULT_TAG_NAME = 'span';\r\n\r\ninterface SvgContainerProps2 {\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\n/**\r\n * This will eventually become just `SvgContainer` when we get around to converting all of our SVGs\r\n * to React components and delete the old `SvgContainer` component\r\n */\r\nexport function SvgContainer2(props: React.PropsWithChildren<SvgContainerProps2>): React.ReactElement {\r\n const {\r\n children,\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 className: `${className} ${size}`,\r\n onClick: FunctionHelper.isFunction(onClick) ? onClick : null\r\n };\r\n\r\n if (!title)\r\n return <Container {...containerProps}>{children}</Container>;\r\n\r\n return (\r\n <Tooltip title={title} placement={tooltipPlacement}>\r\n <Container {...containerProps}>\r\n {children}\r\n </Container>\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 {/*\r\n For some reason the children here need to be wrapped in a span. Otherwise `<OverlayTrigger />` won't work\r\n when `children` is a react component.\r\n https://lifesaver.codes/answer/tooltip-doesn-t-show-when-overlaytrigger-child-is-a-custom-react-component\r\n */}\r\n <span>\r\n {children}\r\n </span>\r\n </OverlayTrigger>\r\n );\r\n}\r\n","export const AppVariables = {\r\n SEARCH: 'search:app:variables',\r\n NOTIFICATIONS: 'notifications:app:variables'\r\n};","const BootstrapKeys = {\r\n LOCALE: 'locale',\r\n PHRASES: 'phrases',\r\n VERSION: 'version'\r\n};\r\n\r\nexport { BootstrapKeys };","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};","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};","import { MasterType } from 'libs/shared/enums/MasterType';\r\n\r\nconst categories = `categories{libraries.typeid:${MasterType.CustomMediaObjectCollection}}`;\r\n\r\nexport const SharedWithStatements = {\r\n VIDEO_COLLECTION: `series,season,rating,thumbnail,${categories},libraries,tags,clips{limit:100},`\r\n + 'interactives{limit:1},subtitles{limit:1},resources{limit:1},links{limit:1}',\r\n SERIES: 'tallposter,rating',\r\n FOLDER: 'banner,thumbnail',\r\n CLASSIFICATION: 'banner,cover',\r\n\r\n PLAYLIST: 'cover,banner,owner,videos[thumbnail,count()]{orderby:orderindex,limit:1}',\r\n PLAYLIST_COLLECTION: 'videos[thumbnail,count()]{orderby:orderindex,limit:1},thumbnail,cover',\r\n};\r\n\r\nexport const WithStatementHelper = {\r\n SubjectPresentationActiveAudienceFilter(ids: string[]): string {\r\n return `subjectpresentationaudiences.id:[${ids.join(',')}]`;\r\n },\r\n SubjectPresentationAudienceFilter(id: string): string {\r\n return `subjectpresentationaudiences{presentationId:${id}}`;\r\n },\r\n ClassificationWithFollowersAndMemberCount(currentUserId: string): string {\r\n return SharedWithStatements.CLASSIFICATION\r\n + `,followers{id:${currentUserId}},videos[count()]{limit:0}`\r\n + ',playlists[count()]{limit:0},series[count()]{limit:0}';\r\n }\r\n};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { VideoAction } from 'libs/shared/utils/video-actions/VideoActionsHelper';\r\nimport { Video } from 'libs/shared/interfaces';\r\n\r\ninterface VideoActionsContextProps {\r\n // Allowed video actions\r\n videoActions?: VideoAction[];\r\n\r\n // Get appLink for action\r\n getActionAppLink?: (video: Video, action: VideoAction) => Core.AppLink;\r\n}\r\n\r\nexport const VideoActionsContext = React.createContext<VideoActionsContextProps>({});","export enum CountryCode {\r\n AU = 'au',\r\n NZ = 'nz',\r\n UK = 'uk'\r\n}","/**\r\n * This enum maps directly to the CurationStatus enum in the \r\n * NuGet package ClickView.Models from master.\r\n */\r\nexport enum CurationStatus {\r\n Draft = 0,\r\n Published = 1,\r\n Archive = 2,\r\n Pending = 3,\r\n Rejected = 4,\r\n Processing = 5\r\n}","export enum CustomerType {\r\n Unclassified = 0,\r\n Primary = 1,\r\n Secondary = 2,\r\n K12 = 3,\r\n Tertiary = 4,\r\n NonEducational = 5,\r\n Partners = 6,\r\n Internal = 7,\r\n Other = 8\r\n}\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 LibraryType {\r\n HostedLibrary,\r\n Exchange,\r\n MoviesAndTvLibrary\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 PartialLoadingComponentTypes {\r\n Component = 1,\r\n ComponentCollection = 2\r\n}","export enum PendingProcessOrigin {\r\n Upload = 1,\r\n Tv = 2\r\n}","export enum SubtitleExtractionOptions {\r\n ExternalOnly = 0,\r\n EmbeddedOnly = 1\r\n}","export enum OnlineUserRole {\r\n Unspecified = 0,\r\n Student = 1,\r\n Staff = 2,\r\n Admin = 3,\r\n CVAdmin = 4,\r\n FreeUser = 6,\r\n ReadOnly = 8\r\n}\r\n\r\nexport enum UserRole {\r\n Guest = 16,\r\n User = 32,\r\n Admin = 48,\r\n SuperAdmin = 64\r\n}\r\n","export enum VideoOrigin {\r\n IosApp = 1,\r\n AndroidApp = 2,\r\n WinApp = 3,\r\n LibraryPublisher = 4,\r\n ExchangeClient = 5,\r\n Online = 6,\r\n Tinder = 7,\r\n Cloud247 = 8,\r\n Livestream = 9,\r\n Curator = 10,\r\n LibraryEditor = 11,\r\n Lite = 12\r\n}","import { Core } from 'libs/common/core';\r\n\r\nexport class AlertError extends Core.SilentError {\r\n public get name(): string {\r\n return 'AlertError';\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { DialogOptions } from 'libs/shared/interfaces';\r\n\r\nexport abstract class DialogError extends Core.SilentError {\r\n public dialogOptions: DialogOptions;\r\n\r\n constructor(message: string) {\r\n super(message);\r\n\r\n if (!this.dialogOptions)\r\n Core.ErrorHelper.throw(new DevError('Please provide DialogOptions for your implementation of DialogError'));\r\n }\r\n\r\n public get name(): string {\r\n return 'DialogError';\r\n }\r\n\r\n public onDone(): void {}\r\n public onFail(): void {}\r\n}","import { Core } from 'libs/common/core';\r\n\r\nexport abstract class ErrorPageError extends Core.SilentError {\r\n public heading: string;\r\n public description: string;\r\n public appLink?: Core.AppLinkHash;\r\n\r\n public get name(): string {\r\n return 'ErrorPageError';\r\n }\r\n}","import { Flight } from 'libs/common/flight';\r\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\nimport { WithStatementHelper, SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\nimport { ClassificationMemberType } from 'libs/shared/apps/subjects/enums/ClassificationMemberType';\r\n\r\nconst endpoints = {\r\n classifications: () => `/api/domain/v1/subjects?query=${SharedWithStatements.CLASSIFICATION}`,\r\n\r\n classification: (id: string, userId: string) =>\r\n `/api/domain/v1/subjects/${id}?query=${WithStatementHelper.ClassificationWithFollowersAndMemberCount(userId)}`,\r\n\r\n path: (id: string) => `/api/domain/v1/subjects/${id}/path`,\r\n\r\n children: (id: string) => `/api/domain/v1/subjects/${id}/children?query=${SharedWithStatements.CLASSIFICATION}`,\r\n\r\n member: (id: string, memberType: ClassificationMemberType, query: string = '', cursor: string = '') => {\r\n let url = `/api/domain/v1/subjects/${id}/${memberType}`;\r\n\r\n const params = [];\r\n\r\n if (query)\r\n params.push(`query=${query}`);\r\n\r\n if (cursor)\r\n params.push(`cursor=${cursor}`);\r\n\r\n const queryParam = params.join('&');\r\n\r\n if (queryParam)\r\n url += `?${queryParam}`;\r\n\r\n return url;\r\n }\r\n};\r\n\r\nexport const ClassificationRequests = {\r\n presentation(): Flight.Request {\r\n return {\r\n url: '/api/domain/v1/subjects/presentation',\r\n key: 'presentation',\r\n bootstrapName: 'presentation'\r\n };\r\n },\r\n classifications(): Flight.Request {\r\n return {\r\n url: endpoints.classifications(),\r\n key: `classifications`\r\n };\r\n },\r\n\r\n classification(id: string, userId: string, error?: (xhr: Xhr) => void): Flight.Request {\r\n return {\r\n url: endpoints.classification(id, userId),\r\n key: `classification:${id}`,\r\n error\r\n };\r\n },\r\n\r\n path(id: string): Flight.Request {\r\n return {\r\n url: endpoints.path(id),\r\n key: `classification:${id}:path`\r\n };\r\n },\r\n\r\n children(id: string): Flight.Request {\r\n return {\r\n url: endpoints.children(id),\r\n key: `classification:${id}:children`\r\n };\r\n },\r\n\r\n videos(id: string, presentationId: string, activeAudiences: string[]): Flight.Request {\r\n if (!presentationId)\r\n return;\r\n\r\n let filter = 'limit:100';\r\n\r\n if (activeAudiences.length)\r\n filter += `,${WithStatementHelper.SubjectPresentationActiveAudienceFilter(activeAudiences)}`;\r\n\r\n let query = `{${filter}}${SharedWithStatements.VIDEO_COLLECTION}` +\r\n `,${WithStatementHelper.SubjectPresentationAudienceFilter(presentationId)}`;\r\n\r\n return {\r\n url: endpoints.member(id, ClassificationMemberType.Videos, query),\r\n key: `classification:${id}:${ClassificationMemberType.Videos}:${activeAudiences.join(':')}`\r\n };\r\n },\r\n\r\n playlists(id: string, presentationId: string, activeAudiences: string[]): Flight.Request {\r\n if (!presentationId)\r\n return;\r\n\r\n let filter = 'limit:100,orderby:name';\r\n\r\n if (activeAudiences.length)\r\n filter += `,${WithStatementHelper.SubjectPresentationActiveAudienceFilter(activeAudiences)}`;\r\n\r\n let query = `{${filter}}${SharedWithStatements.PLAYLIST_COLLECTION}` +\r\n `,${WithStatementHelper.SubjectPresentationAudienceFilter(presentationId)}`;\r\n\r\n return {\r\n url: endpoints.member(id, ClassificationMemberType.Playlists, query),\r\n key: `classification:${id}:${ClassificationMemberType.Playlists}:${activeAudiences.join(':')}`\r\n };\r\n },\r\n\r\n series(id: string, presentationId: string, activeAudiences: string[]): Flight.Request {\r\n if (!presentationId)\r\n return;\r\n\r\n let filter = 'limit:100';\r\n\r\n if (activeAudiences.length)\r\n filter += `,${WithStatementHelper.SubjectPresentationActiveAudienceFilter(activeAudiences)}`;\r\n\r\n let query = `{${filter}}${SharedWithStatements.SERIES}` +\r\n `,${WithStatementHelper.SubjectPresentationAudienceFilter(presentationId)}`;\r\n\r\n return {\r\n url: endpoints.member(id, ClassificationMemberType.Series, query),\r\n key: `classification:${id}:${ClassificationMemberType.Series}:${activeAudiences.join(':')}`\r\n };\r\n }\r\n};\r\n","import { Flight } from 'libs/common/flight';\r\n\r\nconst config: Flight.Request = {\r\n url: '/api/config',\r\n key: 'config'\r\n};\r\n\r\nexport const ConfigRequests = {\r\n config\r\n};","import { Flight } from 'libs/common/flight';\r\n\r\nconst currentUser: Flight.Request = {\r\n url: '/api/currentUser',\r\n key: 'currentuser'\r\n};\r\n\r\nconst workspace: Flight.Request = {\r\n url: 'api/domain/v2/me/workspace',\r\n key: 'workspace'\r\n};\r\n\r\nexport const UserRequests = {\r\n currentUser,\r\n workspace\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 * 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 { Core } from 'libs/common/core';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { NotificationType } from 'libs/shared/apps/notifications/enums/NotificationType';\r\n\r\nexport interface NotificationsAppLinks {\r\n notifications: Core.AppLink;\r\n videoDetails: Core.AppLink;\r\n\r\n // Move these back to Library Editor at some point\r\n pastReleases: Core.AppLink;\r\n awaitingReview: Core.AppLink;\r\n editStaffRequest: Core.AppLink;\r\n}\r\n\r\nexport abstract class BaseNotificationsAppVariables {\r\n public abstract get appLinks(): NotificationsAppLinks;\r\n public abstract get notificationTypesWithAppLinks(): Array<NotificationType>;\r\n\r\n public abstract get notificationsEmptyStateUrl(): string;\r\n public abstract get bellIconColor(): 'dark' | 'light';\r\n\r\n public get name(): string {\r\n return AppVariables.NOTIFICATIONS;\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\n\r\nexport interface SearchAppLinks {\r\n searchResults: Core.AppLink;\r\n videoDetails: Core.AppLink;\r\n series: Core.AppLink;\r\n tagSearch: Core.AppLink;\r\n\r\n folder?: Core.AppLink;\r\n newLibrary?: Core.AppLink;\r\n classification?: Core.AppLink;\r\n}\r\n\r\nexport abstract class BaseSearchAppVariables {\r\n public abstract get appLinks(): SearchAppLinks;\r\n\r\n public get name(): string {\r\n return AppVariables.SEARCH;\r\n }\r\n}","export * from './BaseSearchAppVariables';\r\nexport * from './BaseNotificationsAppVariables';","export * from './collections';\r\nexport * from './models';\r\nexport * from './props';\r\nexport * from './requests';\r\nexport * from './services';\r\nexport * from './app-variables';\r\nexport * from './ImageUrls';\r\nexport * from './QueryParams';\r\nexport * from './DialogOptions';\r\nexport * from './RegionalUrl';\r\nexport * from './AppLinkWithLabel';\r\nexport * from './WidgetContext';\r\nexport * from './RegionalUrl';","import { BaseObject } from 'libs/shared/interfaces';\r\n\r\n/**\r\n * This maps directly against the widget types from Domain.\r\n * Update is only required where the backend changes.\r\n */\r\nexport enum WidgetType {\r\n Row = 0, // At full-size, this will contain a row of 4 items\r\n LargeRow = 1, // At full-size, this will contain a row of 3 times\r\n Hero = 2\r\n}\r\n\r\nexport interface Widget extends BaseObject {\r\n collectionId: number;\r\n dashboardId: number;\r\n type: WidgetType;\r\n}","export * from './primitives';\r\n\r\nexport * from './Audience';\r\nexport * from './Banner';\r\nexport * from './Category';\r\nexport * from './Channel';\r\nexport * from './Config';\r\nexport * from './Cover';\r\nexport * from './HeroBanner';\r\nexport * from './Image';\r\nexport * from './Interactive';\r\nexport * from './Library';\r\nexport * from './Playlist';\r\nexport * from './Rating';\r\nexport * from './Season';\r\nexport * from './Series';\r\nexport * from './Season';\r\nexport * from './Subject';\r\nexport * from './Tag';\r\nexport * from './Theme';\r\nexport * from './Thumbnail';\r\nexport * from './User';\r\nexport * from './Video';\r\nexport * from './Widget';\r\nexport * from './Classification';\r\nexport * from './Presentation';\r\nexport * from './PresentationAudience';\r\nexport * from './Poster';\r\nexport * from './Resource';\r\nexport * from './Person';\r\nexport * from './Company';\r\nexport * from './LanguageConfig';\r\nexport * from './Clip';\r\nexport * from './Link';\r\nexport * from './Folder';\r\nexport * from './Glance';\r\nexport * from './Customer';\r\nexport * from './Organisation';\r\nexport * from './TallPoster';\r\nexport * from './Share';\r\nexport * from './Restriction';\r\nexport * from './VideoWithRestrictions';\r\nexport * from './Following';\r\nexport * from './UserChannel';","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { EmptyStateComponentOptions, EmptyStateComponent } from 'libs/shared/legacy/components/empty-state/EmptyStateComponent';\r\nimport { EmptyStateHelper } from 'libs/shared/legacy/utils/EmptyStateHelper';\r\n\r\ninterface EmptyStateBehaviorOptions {\r\n region: string;\r\n type: number;\r\n shouldRender: () => boolean;\r\n componentOptions?: EmptyStateComponentOptions;\r\n emptyStateComponents: { [type: number]: (self: any) => EmptyStateComponentOptions };\r\n}\r\n\r\nexport class EmptyStateBehavior extends Core.Behavior {\r\n public options: EmptyStateBehaviorOptions;\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n type: 0,\r\n shouldRender: EmptyStateHelper.isCollectionEmpty.bind(null, this.view)\r\n };\r\n }\r\n\r\n public set defaults(defaults: ObjectHash) {}\r\n\r\n private shouldRender(): boolean {\r\n if (_.isFunction(this.options.shouldRender))\r\n return this.options.shouldRender();\r\n\r\n return false;\r\n }\r\n\r\n public getComponent(): EmptyStateComponent {\r\n const options = this.options.emptyStateComponents[this.options.type](this);\r\n\r\n return new EmptyStateComponent(options);\r\n }\r\n\r\n public renderEmptyState(): void {\r\n\r\n if (!this.shouldRender()) return;\r\n\r\n const component = this.getComponent();\r\n\r\n this.view.showChildView(this.options.region, component);\r\n }\r\n\r\n public onRender(): void {\r\n this.renderEmptyState();\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Trigger } from 'bootstrap';\r\nimport { Core } from 'libs/common/core';\r\n\r\nexport enum PopoverPlacement {\r\n auto = 'auto',\r\n top = 'top',\r\n bottom = 'bottom',\r\n left = 'left',\r\n right = 'right'\r\n}\r\n\r\nexport type PopoverSize = 'popover-sm' | 'popover-md' | 'popover-lg';\r\n\r\nexport interface PopoverBehaviorOptions {\r\n toggleEventName?: string;\r\n renderContent: (region: string) => void;\r\n placement?: PopoverPlacement;\r\n title?: string;\r\n containerSelector?: string;\r\n size?: PopoverSize;\r\n boundary?: any;\r\n customClasses?: string;\r\n}\r\n\r\nexport class PopoverBehavior extends Core.Behavior {\r\n public options: PopoverBehaviorOptions;\r\n private popoverInitialized: boolean;\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n title: '',\r\n placement: PopoverPlacement.bottom,\r\n size: 'popover-md'\r\n };\r\n }\r\n\r\n public set defaults(defaults: ObjectHash) {}\r\n\r\n public get ui(): ObjectHash {\r\n return {\r\n popoverContainer: this.options.containerSelector\r\n };\r\n }\r\n\r\n public set ui(ui: ObjectHash) {\r\n let viewUi = {};\r\n if (this.view.ui)\r\n viewUi = _.result(this.view, 'ui');\r\n\r\n (this.view as any)._ui = _.extend({}, viewUi, ui);\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .popover': 'onClickPopover',\r\n 'inserted.bs.popover': 'onPopoverInserted',\r\n 'hidden.bs.popover': 'onPopoverHidden'\r\n };\r\n }\r\n\r\n private bindListeners(): void {\r\n if (!this.options.toggleEventName) return;\r\n\r\n this.listenTo((this.view as any).channelName, `${this.options.toggleEventName}`, this.toggle);\r\n }\r\n\r\n private bindBodyClickListener(): void {\r\n $('body').one(`click.popover${this.view.cid}`, this.onClickOutside.bind(this));\r\n }\r\n\r\n private bindDropdownListener(): void {\r\n $('body').one(`show.bs.dropdown.popover${this.view.cid}`, this.onClickOutside.bind(this));\r\n }\r\n\r\n private onPopoverInserted(): void {\r\n this.bindBodyClickListener();\r\n this.bindDropdownListener();\r\n\r\n this.view.addRegion('content', {\r\n el: '.popover-content',\r\n replaceElement: true\r\n });\r\n\r\n this.options.renderContent('content');\r\n }\r\n\r\n private onPopoverHidden(): void {\r\n $('body').off(`click.popover${this.view.cid}`);\r\n $('body').off(`show.bs.dropdown.popover${this.view.cid}`);\r\n }\r\n\r\n private toggle(): void {\r\n this.view.$el.popover('toggle');\r\n }\r\n\r\n private hide(): void {\r\n this.view.$el.popover('hide');\r\n }\r\n\r\n private onClickPopover(e: JQueryEventObject): void {\r\n // Stop event propagation so that popover doesn't close\r\n e.stopPropagation();\r\n }\r\n\r\n private onClickOutside(e: JQueryEventObject): void {\r\n this.hide();\r\n }\r\n\r\n private getTrigger(): Trigger {\r\n return this.options.toggleEventName ? 'manual' : 'click';\r\n }\r\n\r\n private onAttach(): void {\r\n if (this.popoverInitialized) return;\r\n\r\n this.bindListeners();\r\n\r\n this.view.$el.popover({\r\n title: this.options.title,\r\n content: '<div class=\"popover-content\"></div>',\r\n placement: this.options.placement,\r\n trigger: this.getTrigger(),\r\n html: true,\r\n container: this.view.getUI('popoverContainer') as any,\r\n boundary: this.options.boundary || 'scrollParent',\r\n delay: 1 // Required so popover can be rendered into on inserted.bs.popover\r\n });\r\n\r\n if (this.options.size)\r\n this.view.getUI('popoverContainer').addClass(this.options.size);\r\n\r\n if (this.options.customClasses)\r\n this.view.getUI('popoverContainer').addClass(this.options.customClasses);\r\n\r\n this.popoverInitialized = true;\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nexport type TooltipPlacement = 'auto' | 'top' | 'bottom' | 'left' | 'right';\r\n\r\n/**\r\n * If a selector is not passed in, the tooltip\r\n * will be added to the view's element.\r\n * \r\n * For multiple tooltips in a single component,\r\n * omit the title option and instead add the title\r\n * attribute to the elements in the template.\r\n */\r\nexport interface TooltipOptions {\r\n selector?: string;\r\n title?: string;\r\n placement?: TooltipPlacement;\r\n}\r\n\r\nexport class TooltipBehavior extends Core.Behavior {\r\n public get defaults(): ObjectHash {\r\n return {\r\n placement: 'top'\r\n };\r\n }\r\n\r\n public set defaults(defaults: ObjectHash) {}\r\n\r\n public get ui(): ObjectHash {\r\n if (!this.options.selector)\r\n return {};\r\n\r\n return {\r\n tooltip: this.options.selector\r\n };\r\n }\r\n\r\n public set ui(ui: ObjectHash) {\r\n let viewUi = {};\r\n if (this.view.ui)\r\n viewUi = _.result(this.view, 'ui');\r\n\r\n (this.view as any)._ui = _.extend({}, viewUi, ui);\r\n }\r\n\r\n private getElement(): JQuery<HTMLElement> {\r\n if (this.options.selector)\r\n return this.view.getUI('tooltip');\r\n\r\n return this.view.$el;\r\n }\r\n\r\n private getOptions(): ObjectHash {\r\n const options: ObjectHash = {\r\n placement: this.options.placement\r\n };\r\n\r\n if (this.options.title)\r\n options.title = this.options.title;\r\n\r\n return options;\r\n }\r\n\r\n public onRender(): void {\r\n const el = this.getElement();\r\n\r\n if (!el.length) return;\r\n\r\n el.tooltip(this.getOptions());\r\n }\r\n\r\n public onBeforeDetach(): void {\r\n const element = this.getElement();\r\n\r\n if (element instanceof jQuery)\r\n element.tooltip('dispose');\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<h4 class=\\\"mt-3 text-muted\\\">\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.heading : stack1), depth0))\n + \"</h4>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<p>\"\n + ((stack1 = container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.description : stack1), depth0)) != null ? stack1 : \"\")\n + \"</p>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<img src=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.imageUrl : stack1), depth0))\n + \"\\\" class=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.imageClass : stack1), depth0))\n + \"\\\"/>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.heading : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.description : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport EmptyStateTemplate from './EmptyState.hbs';\r\nimport { Core } from 'libs/common/core';\r\n\r\nexport type EmptyStateImageSize = 'sm' | 'lg';\r\n\r\nexport interface EmptyStateComponentOptions extends Core.ComponentOptions {\r\n imageUrl: string;\r\n heading?: string | (() => string);\r\n description?: string | (() => string);\r\n appLink?: Core.AppLinkHash;\r\n customClass?: string;\r\n customImageClass?: string;\r\n}\r\n\r\nexport class EmptyStateComponent extends Core.Component {\r\n protected options: EmptyStateComponentOptions;\r\n\r\n public constructor(options: EmptyStateComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'EmptyStateComponent';\r\n }\r\n\r\n public get className(): string {\r\n let className = 'd-flex flex-column justify-content-center align-items-center text-center h-100';\r\n\r\n if (this.options.customClass)\r\n className += ` ${this.options.customClass}`;\r\n\r\n return className;\r\n }\r\n\r\n public get template(): string {\r\n return EmptyStateTemplate;\r\n }\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n imageSize: 'lg',\r\n paddedContainer: true\r\n };\r\n }\r\n\r\n public get appLinks(): Core.AppLinkHash {\r\n return this.options.appLink || {};\r\n }\r\n\r\n private getImageClass(): string {\r\n return this.options.customImageClass;\r\n }\r\n\r\n private getHeading(): string {\r\n if (_.isFunction(this.options.heading))\r\n return this.options.heading();\r\n\r\n return this.options.heading;\r\n }\r\n private getDescription(): string {\r\n if (_.isFunction(this.options.description))\r\n return this.options.description();\r\n\r\n return this.options.description;\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n imageUrl: this.options.imageUrl,\r\n imageClass: this.getImageClass(),\r\n heading: this.getHeading(),\r\n description: this.getDescription()\r\n };\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.lambda, alias4=container.escapeExpression;\n\n return \"<img \"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.lazyload : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"src=\\\"\"\n + alias4(alias3(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.url : stack1), depth0))\n + \"\\\" class=\\\"img-fluid lazy-img w-100 \"\n + alias4(alias3(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.thumbnail : stack1), depth0))\n + \"\\\" />\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.playIcon : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n return \"data-\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<div class=\\\"\"\n + container.escapeExpression(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.playSvgContainer : stack1), depth0))\n + \"\\\" \"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.lazyload : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.playSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</div>\\r\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n return \"style=\\\"display: none;\\\"\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<span class=\\\"badge float-right \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.durationOverlay : stack1), depth0))\n + \"\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.duration : stack1), depth0))\n + \"</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.lambda;\n\n return ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.url : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"<div class=\\\"\"\n + container.escapeExpression(alias3(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias3(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.playSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</div>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.duration : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { BehaviorChannels } from 'libs/common/backbone/constants/BehaviorChannels';\r\n\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\r\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\r\n\r\nimport ThumbnailTemplate from './Thumbnail.hbs';\r\nimport styles from './thumbnail.scss';\r\n\r\nexport interface ThumbnailComponentOptions extends Core.ComponentOptions {\r\n model: Core.Model;\r\n onClickHandler?: Function;\r\n thumbnailOptions?: ImageOptions;\r\n playIcon?: boolean;\r\n lazyload?: boolean;\r\n appLink?: Core.AppLink;\r\n href?: string;\r\n channelName?: string;\r\n classNameOverride?: string;\r\n}\r\n\r\n/**\r\n * @Backbone\r\n */\r\nexport class ThumbnailComponent extends Core.Component {\r\n protected options: ThumbnailComponentOptions;\r\n\r\n constructor(options: ThumbnailComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n if (this.options.channelName) {\r\n this.listenTo(this.options.channelName, 'show:play:icon', this.showPlayIcon);\r\n }\r\n\r\n this.listenTo(this.model, 'change:thumbnail', this.render);\r\n }\r\n\r\n public get name(): string {\r\n return 'ThumbnailComponent';\r\n }\r\n\r\n public get template(): string {\r\n return ThumbnailTemplate;\r\n }\r\n\r\n public get tagName(): string {\r\n return 'a';\r\n }\r\n\r\n public get className(): string {\r\n if (this.options.classNameOverride)\r\n return this.options.classNameOverride;\r\n\r\n let className = `${styles.thumbnailContainer} responsive-img`;\r\n\r\n if (this.options.onClickHandler)\r\n className += ' cursor-pointer';\r\n\r\n return className;\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n [`.${styles.playSvgContainer}`]: 'showPlayIcon',\r\n img: 'img'\r\n };\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n click: 'onClick'\r\n };\r\n }\r\n\r\n public get appLinks(): Core.AppLinkHash {\r\n if (!this.options.appLink)\r\n return {};\r\n\r\n return {\r\n '[this]': this.options.appLink\r\n };\r\n }\r\n\r\n public get attributes(): ObjectHash {\r\n if (this.options.appLink || !this.options.href)\r\n return {};\r\n\r\n return {\r\n href: this.options.href,\r\n target: '_blank'\r\n };\r\n }\r\n\r\n private showPlayIcon(): void {\r\n this.$el.find(`.${styles.playSvgContainer}`).show();\r\n }\r\n\r\n private onClick(e: JQuery.Event): void {\r\n /**\r\n * Do nothing if an appLink was specified;\r\n */\r\n if (this.options.appLink)\r\n return;\r\n\r\n if (!_.isFunction(this.options.onClickHandler))\r\n return;\r\n\r\n return this.options.onClickHandler.apply(this, arguments);\r\n }\r\n\r\n private onImageLoad(): void {\r\n if (!this.options.channelName)\r\n return;\r\n\r\n Radio.channel(this.options.channelName)\r\n .trigger('thumbnail:load');\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n const duration = this.model.get('duration');\r\n return {\r\n styles,\r\n url: ImageHelper.legacyCreateThumbnailUrl(this.model.get('thumbnail'), this.options.thumbnailOptions),\r\n duration: duration && DurationHelper.ToDisplayDuration(duration),\r\n playSvg: SvgHelper.getSvg(cvSvgLibrary.Play),\r\n playIcon: this.options.playIcon,\r\n lazyload: this.options.lazyload\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n Radio.channel(BehaviorChannels.LAZY_LOAD).trigger('update:loader');\r\n\r\n if (!this.options.lazyload)\r\n return;\r\n /**\r\n * Need to bind this event listener this way because \r\n * img element events don't bubble so cannot be used as delegate events\r\n * in our backbone \"events\" property\r\n */\r\n if (this.options.channelName) {\r\n const $image = this.getUI('img');\r\n $image.length && ($image[0].onload = _.bind(this.onImageLoad, this));\r\n }\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"thumbnailContainer\":\"cv--thumbnailContainer--1u9bn\",\"thumbnail\":\"cv--thumbnail--1CQyt\",\"svgContainer\":\"cv--svgContainer--2L1Hd\",\"playSvgContainer\":\"cv--playSvgContainer--17LPb\",\"durationOverlay\":\"cv--durationOverlay--15X7K\"};","import { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { BaseNotificationsAppVariables } from 'libs/shared/interfaces';\r\nimport { AppVariables } from 'libs/shared/constants/AppVariables';\r\nimport { EmptyStateComponentOptions } from 'libs/shared/legacy/components/empty-state/EmptyStateComponent';\r\nimport { SharedEmptyState } from 'libs/shared/legacy/enums/EmptyState';\r\n\r\nimport styles from './empty-state.scss';\r\n\r\nexport interface EmptyStateOptions extends Pick<EmptyStateComponentOptions, Exclude<keyof EmptyStateComponentOptions, 'imageUrl'>> {}\r\n\r\nexport const EmptyStateComponents: { [type: number]: (self: any) => EmptyStateComponentOptions } = {\r\n [SharedEmptyState.Notifications]: (self: any): EmptyStateComponentOptions => {\r\n const appVariables: BaseNotificationsAppVariables = InstanceManager.getInstance(AppVariables.NOTIFICATIONS);\r\n\r\n const emptyStateObject = {\r\n imageUrl: appVariables.notificationsEmptyStateUrl,\r\n heading: self.options.componentOptions.noNotificationsText,\r\n customClass: `${styles.paddedContainer} ${self.options.componentOptions.customClass}`,\r\n customImageClass: self.options.componentOptions.imageSize === 'sm' ? styles.imageSmall : styles.imageLarge\r\n };\r\n\r\n InstanceManager.releaseInstance(AppVariables.NOTIFICATIONS);\r\n return emptyStateObject;\r\n }\r\n};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"paddedContainer\":\"cv--paddedContainer--1cCVc\",\"imageLarge\":\"cv--imageLarge--3Wy1u\",\"imageSmall\":\"cv--imageSmall--3t8Qq\"};","export enum SharedEmptyState {\r\n Notifications\r\n}","export enum SortType {\r\n MostRecent = 1,\r\n AtoZ = 2,\r\n ProductionYear = 3,\r\n Newest = 4,\r\n SeriesSort = 5\r\n}","import { BaseCollectionIdentifier, BaseCollectionIdentifierOptions } from 'libs/common/backbone/interfaces';\r\n\r\nimport { SortType } from 'libs/shared/legacy/enums/SortType';\r\n\r\nexport interface CollectionIdentifierOptions extends BaseCollectionIdentifierOptions<SortType> { }\r\n\r\nexport class CollectionIdentifier extends BaseCollectionIdentifier<SortType> {\r\n protected getSortTypeParam(): string {\r\n return SortType[this.sort];\r\n }\r\n}","export * from './CollectionIdentifier';","import { Core } from 'libs/common/core';\r\n\r\nexport const EmptyStateHelper = {\r\n isCollectionEmpty(view: Core.View, collectionName: string = 'collection'): boolean {\r\n return (view as any)[collectionName] && !(view as any)[collectionName].length;\r\n }\r\n};","import * as _ from 'underscore';\r\nimport * as Handlebars from 'handlebars';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nexport const LangHelper = {\r\n register(): void {\r\n Handlebars.registerHelper('lang', (phraseKey: string, templateOptions: Handlebars.HelperOptions) => {\r\n if (!this.isValid(phraseKey, templateOptions))\r\n return;\r\n\r\n /**\r\n * - `templateOptions.data.root` contains any properties available in the `.hbs` template that ran this helper.\r\n * - ALL template's that run this helper receive this `languageNamespace` property, so that we can access the \r\n * correct phrase. `languageNamespace` is added as a result of 3 things:\r\n * 1. The `public get lang()` property on your component which returns the namespace string that's received here\r\n * 2. `RegisterViewDataExtensions` reads the `lang` property from your component, and makes it available in\r\n * your template under `languageNamespace`.\r\n */\r\n const namespace = templateOptions.data.root.languageNamespace;\r\n\r\n return LanguageService.getPhrase(namespace, phraseKey, templateOptions.hash);\r\n });\r\n },\r\n\r\n isValid(key: string, options: Handlebars.HelperOptions): boolean {\r\n if (typeof key !== 'string') {\r\n Core.ErrorHelper.throw(new DevError('No language key provided.'));\r\n return false;\r\n }\r\n\r\n if (typeof options !== 'object') {\r\n Core.ErrorHelper.throw(new DevError('All options must be key-value pairs, e.g. `smartCount=options.videoCount`'));\r\n return false;\r\n }\r\n\r\n if (_.isUndefined(options.data.root.languageNamespace)) {\r\n Core.ErrorHelper.throw(new DevError('No `lang` property provided.'));\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n};","import { SharedServices } from 'libs/shared/constants/SharedServices';\r\nimport { CustomerType } from 'libs/shared/enums/CustomerType';\r\nimport { OnlineUserRole } from 'libs/shared/enums/UserRole';\r\n\r\nconst DEFAULT_ONLINE_MODULES: OnlineModules = {\r\n curriculum: false\r\n};\r\n\r\ninterface OnlineModules {\r\n curriculum: boolean;\r\n}\r\n\r\nexport interface AppOptions {\r\n onlineModules?: OnlineModules;\r\n customerType: CustomerType;\r\n onlineRole: OnlineUserRole;\r\n}\r\n\r\nexport class AppOptionsService {\r\n private options: AppOptions;\r\n\r\n constructor(options: AppOptions) {\r\n this.options = {\r\n onlineModules: DEFAULT_ONLINE_MODULES,\r\n ...options\r\n };\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.AppOptions;\r\n }\r\n\r\n public get hasCurriculum(): boolean {\r\n return this.options.onlineModules.curriculum;\r\n }\r\n\r\n public get isTeacher(): boolean {\r\n return this.options.onlineRole === OnlineUserRole.Staff;\r\n }\r\n\r\n public get onlineRole(): OnlineUserRole {\r\n return this.options.onlineRole;\r\n }\r\n\r\n public get onlineCustomerType(): CustomerType {\r\n return this.options.customerType;\r\n }\r\n}\r\n\r\n","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\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { BootstrapKeys } from 'libs/shared/constants/BootstrapKeys';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\nimport { Config } from 'libs/shared/interfaces';\r\n\r\nexport class ConfigDataService extends BaseDataService {\r\n public get name(): string {\r\n return SharedDataServices.Config;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.CONFIG;\r\n }\r\n\r\n public getConfig(callback?: (Config: Config) => void, errorCallback?: () => void): Config {\r\n return this.get<Config>({\r\n resource: '/api/config',\r\n eventPrefix: SharedDataPrefixes.CONFIG,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getVersion(callback?: (version: string) => void): string {\r\n return this.get<string>({\r\n resource: '/api/version',\r\n eventPrefix: 'version',\r\n bootstrapName: BootstrapKeys.VERSION,\r\n callback,\r\n expiryTime: CacheDurations.STANDARD,\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: SharedDataServices.Config,\r\n dataChannelName: SharedDataChannels.CONFIG\r\n};\r\n\r\nexport const ConfigDataServiceHelper = {\r\n getConfigFetchOptions(setData: (data: Config) => void, onError?: (error: DataServiceError) => void): FetchOptions {\r\n return {\r\n ...BaseFetchOptions,\r\n eventPrefix: SharedDataPrefixes.CONFIG,\r\n fetchData: (d: ConfigDataService) => d.getConfig(),\r\n setData,\r\n onError\r\n };\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\n\r\ninterface ApplicationContext {\r\n pageLoad: boolean;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nexport interface AppContextServiceOptions {\r\n}\r\n\r\nconst CONTEXT_HISTORY_LENGTH = 5;\r\nconst ROUTE_HISTORY_LENGTH = 3;\r\n\r\nexport class StaticContextService extends Core.Service {\r\n private static instance: StaticContextService;\r\n\r\n private routeHistory: ApplicationContext[] = [];\r\n private contextHistory: ApplicationContext[] = [];\r\n\r\n public get name(): string {\r\n return SharedServices.Context;\r\n }\r\n\r\n public static get Instance(): StaticContextService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.setContext);\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.updateRouteHistory);\r\n }\r\n\r\n /**\r\n * Context specific methods.\r\n * The Context History keeps track of ALL APPLINKS.\r\n */\r\n private setContext(appLink: Core.AppLink): void {\r\n if (this.contextHistory.length >= CONTEXT_HISTORY_LENGTH)\r\n this.contextHistory.unshift();\r\n\r\n this.contextHistory.push({\r\n pageLoad: !this.contextHistory.length,\r\n appLink\r\n });\r\n }\r\n\r\n public getCurrentContext(): ApplicationContext {\r\n if (!this.contextHistory.length) return;\r\n return this.contextHistory[this.contextHistory.length - 1];\r\n }\r\n\r\n public getPreviousContext(): ApplicationContext {\r\n if (!this.contextHistory.length || this.contextHistory.length - 2 < 0) return;\r\n return this.contextHistory[this.contextHistory.length - 2];\r\n }\r\n\r\n /**\r\n * Route specific methods.\r\n * The Route History works the same way as the Context History, except\r\n * it will ONLY take applinks that change the route. This is useful\r\n * for things like tracking state for in-application back buttons where we\r\n * would not be interested in applinks that do not map to routes.\r\n */\r\n private updateRouteHistory(appLink: Core.AppLink): void {\r\n if (!Core.AppLinkHelper.getHref(appLink) && Core.LocationUtils.GetCurrentPath() !== '/')\r\n return;\r\n\r\n if (this.routeHistory.length >= ROUTE_HISTORY_LENGTH)\r\n this.routeHistory.unshift();\r\n\r\n this.routeHistory.push({\r\n pageLoad: !this.routeHistory.length,\r\n appLink\r\n });\r\n }\r\n\r\n public getCurrentRoute(): ApplicationContext {\r\n if (!this.routeHistory.length) return;\r\n return this.routeHistory[this.routeHistory.length - 1];\r\n }\r\n\r\n public getPreviousRoute(): ApplicationContext {\r\n if (!this.routeHistory.length || this.routeHistory.length - 2 < 0) return;\r\n return this.routeHistory[this.routeHistory.length - 2];\r\n }\r\n\r\n /**\r\n * Other utilities\r\n */\r\n public fromPageLoad(): boolean {\r\n return this.contextHistory.length === 1;\r\n }\r\n}\r\n\r\nexport const ContextService: StaticContextService = new StaticContextService();","import { Core } from 'libs/common/core';\r\n\r\nimport { ImageUrls } from 'libs/shared/interfaces';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\n\r\ninterface ImageUrlServiceOptions extends Core.ServiceOptions {\r\n imageUrls: ImageUrls;\r\n}\r\n\r\nexport class ImageUrlService extends Core.Service {\r\n private imageUrls: ImageUrls;\r\n\r\n constructor(options: ImageUrlServiceOptions) {\r\n super(options);\r\n\r\n this.imageUrls = options.imageUrls;\r\n }\r\n\r\n public get name(): string {\r\n return SharedServices.ImageUrl;\r\n }\r\n\r\n public getImageUrls(): ImageUrls {\r\n return this.imageUrls;\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\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\nimport { SharedDataPrefixes } from 'libs/shared/constants/DataPrefixes';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { LanguageConfig } from 'libs/shared/interfaces';\r\nimport { BootstrapKeys } from 'libs/shared/constants/BootstrapKeys';\r\n\r\nexport class LanguageDataService extends BaseDataService {\r\n public get name(): string {\r\n return SharedDataServices.Language;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.LANGUAGE;\r\n }\r\n\r\n public getLanguageConfig(callback?: (languageConfig: LanguageConfig) => void): void {\r\n const languageConfig: LanguageConfig = { locale: '', phrases: null };\r\n\r\n this.get<string>({\r\n resource: '/api/locale',\r\n eventPrefix: SharedDataPrefixes.LOCALE,\r\n expiryTime: CacheDurations.STANDARD,\r\n bootstrapName: BootstrapKeys.LOCALE,\r\n callback: (locale: string) => {\r\n languageConfig.locale = locale;\r\n\r\n if (languageConfig.phrases && _.isFunction(callback))\r\n callback(languageConfig);\r\n }\r\n });\r\n\r\n this.get<ObjectHash>({\r\n resource: '/api/phrases',\r\n eventPrefix: SharedDataPrefixes.PHRASES,\r\n expiryTime: CacheDurations.STANDARD,\r\n bootstrapName: BootstrapKeys.PHRASES,\r\n callback: (phrases: any) => {\r\n languageConfig.phrases = phrases;\r\n\r\n if (languageConfig.locale && _.isFunction(callback))\r\n callback(languageConfig);\r\n }\r\n });\r\n }\r\n}","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 * as _ from 'underscore';\r\n\r\nconst padLeft = (value: string | number, totalLength: number, padChar: string) => {\r\n value = value.toString();\r\n\r\n var diff = totalLength - value.length;\r\n\r\n if (diff <= 0)\r\n return value;\r\n\r\n return new Array(diff + 1).join(padChar) + value;\r\n};\r\n\r\nconst DurationHelper = {\r\n /**\r\n * Copypasta from Online. Feel free to improve it if you see fit - Sha\r\n */\r\n ToDisplayDuration(milliseconds: number): string {\r\n if (!_.isNumber(milliseconds))\r\n return '';\r\n\r\n const time = new Date(milliseconds);\r\n\r\n const h = time.getUTCHours(),\r\n m = padLeft(time.getUTCMinutes(), 2, '0'),\r\n s = padLeft(time.getUTCSeconds(), 2, '0');\r\n\r\n if (h > 0) {\r\n return `${h}:${m}:${s}`;\r\n }\r\n\r\n return `${m}:${s}`;\r\n }\r\n};\r\n\r\nexport { DurationHelper };","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 { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { BaseLibraryDataService } from 'libs/shared/interfaces';\r\n\r\nexport const SharedLibraryDataServiceHelper = {\r\n libraries: {\r\n dataServiceName: SharedDataServices.Library,\r\n eventName: 'libraries:sync',\r\n getData: (instance: BaseLibraryDataService) => instance.getLibraries(),\r\n getInstance: (context: Backbone.Events) => InstanceManager.getInstance(SharedDataServices.Library, context),\r\n beforeOnBeforeRender: true\r\n }\r\n};","export interface MaskHelperOptions {\r\n targetSelector?: string;\r\n additionalClasses?: string;\r\n fade?: boolean;\r\n}\r\n\r\n/**\r\n * Mask class is tied to styling in _mask.scss\r\n */\r\nconst MASK_CLASS = 'mask';\r\nconst MASK_LOCK = 'mask-lock';\r\nconst DEFAULT_TARGET_SELECTOR = '#app';\r\n\r\nexport const MaskHelper = {\r\n\r\n showMask(options: MaskHelperOptions = {}): JQuery {\r\n const { targetSelector, additionalClasses, fade = true } = options;\r\n\r\n const $existingEl = $(`.${MASK_CLASS}`);\r\n\r\n if ($existingEl.length) return;\r\n\r\n var $mask = $('<div>', { class: `${MASK_CLASS} ${additionalClasses ? additionalClasses : ''}` });\r\n\r\n if (fade) $mask.addClass('fade show');\r\n\r\n $($mask).appendTo(MaskHelper.getTarget(targetSelector));\r\n $(MaskHelper.getTarget(targetSelector)).addClass(MASK_LOCK);\r\n\r\n return $mask;\r\n },\r\n\r\n hideMask(maskEl?: JQuery): void {\r\n const $maskEl = maskEl || $(`.${MASK_CLASS}`);\r\n\r\n if (!$maskEl.length) return;\r\n\r\n const $lockedEl = $(`.${MASK_LOCK}`);\r\n $lockedEl.removeClass(MASK_LOCK);\r\n\r\n $maskEl.remove();\r\n },\r\n\r\n getTarget(targetSelector?: string): JQuery {\r\n const target = targetSelector || DEFAULT_TARGET_SELECTOR;\r\n\r\n const $el = $(target);\r\n if (!$el.length) return;\r\n\r\n return $el;\r\n }\r\n};\r\n","export const NumberHelper = {\r\n padNumber(num: number, padLength: number): string {\r\n let numberString = num.toString();\r\n\r\n if (numberString.length >= padLength)\r\n return numberString;\r\n\r\n padLength = padLength - numberString.length;\r\n\r\n while (padLength > 0) {\r\n numberString = '0' + numberString;\r\n padLength--;\r\n }\r\n return numberString;\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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nconst namespace = 'shared.videoActionsHelper';\r\n\r\nexport enum VideoAction {\r\n AddToPlaylist,\r\n RemoveFromPlaylist,\r\n Share,\r\n Edit\r\n}\r\n\r\ninterface BaseVideoActionOptions {\r\n label: string;\r\n svgName: string;\r\n}\r\n\r\nexport const getVideoActionOptions = (): { [index: string]: BaseVideoActionOptions } => ({\r\n [VideoAction.AddToPlaylist]: {\r\n label: LanguageService.getPhrase(namespace, 'addToPlaylist'),\r\n svgName: cvSvgLibrary.AddToPlaylists\r\n },\r\n [VideoAction.RemoveFromPlaylist]: {\r\n label: LanguageService.getPhrase(namespace, 'removeFromPlaylist'),\r\n svgName: cvSvgLibrary.Delete\r\n },\r\n [VideoAction.Share]: {\r\n label: LanguageService.getPhrase(namespace, 'share'),\r\n svgName: cvSvgLibrary.Share\r\n },\r\n [VideoAction.Edit]: {\r\n label: LanguageService.getPhrase(namespace, 'edit'),\r\n svgName: cvSvgLibrary.Edit\r\n }\r\n});","import './apps/classrooms/components/classroom-activities-list/classroom-actitivies-list.lang.json'; import './apps/classrooms/components/classroom-details-form/classroom-details-form.lang.json'; import './apps/classrooms/components/classroom-group-details-form/classroom-group-details-form.lang.json'; import './apps/classrooms/components/classroom-group-dropdown/classroom-group-dropdown.lang.json'; import './apps/classrooms/components/classroom-item/classroom-item.lang.json'; import './apps/classrooms/components/classroom-students-list/classroom-students-list.lang.json'; import './apps/classrooms/components/manage-classroom-groups/manage-classroom-groups.lang.json'; import './apps/classrooms/components/manage-classroom-student-item/manage-classroom-student-item.lang.json'; import './apps/classrooms/components/manage-classroom-students/empty-state/manage-classroom-students-empty-state.lang.json'; import './apps/classrooms/components/manage-classroom-students/manage-classroom-students.lang.json'; import './apps/classrooms/validation/classrooms-validation.lang.json'; import './apps/classrooms/views/add-students-to-classroom/add-students-to-classroom.lang.json'; import './apps/classrooms/views/classroom/classroom.lang.json'; import './apps/classrooms/views/classrooms/classrooms.lang.json'; import './apps/classrooms/views/create-classroom-group/create-classroom-group.lang.json'; import './apps/classrooms/views/create-classroom/create-classroom.lang.json'; import './apps/classrooms/views/delete-classroom-group/delete-classroom-group.lang.json'; import './apps/classrooms/views/delete-classroom/delete-classroom.lang.json'; import './apps/classrooms/views/edit-classroom-group/edit-classroom-group.lang.json'; import './apps/classrooms/views/edit-classroom/edit-classroom.lang.json'; import './apps/classrooms/views/manage-classroom/manage-classroom.lang.json'; import './apps/classrooms/views/remove-students-from-classroom/remove-students-from-classroom.lang.json'; import './apps/content-updates/components/classification-banner/classification-banner.lang.json'; import './apps/content-updates/components/classification-update-breadcrumbs/classification-update-breadcrumbs.lang.json'; import './apps/content-updates/components/whats-new-breadcrumbs/whats-new-breadcrumbs.lang.json'; import './apps/content-updates/views/content-updates/content-updates.lang.json'; import './apps/playlists/components/playlist-details/playlist-details.lang.json'; import './apps/playlists/components/playlist-header/playlist-header.lang.json'; import './apps/playlists/components/playlist-list-header/playlists-list-header.lang.json'; import './apps/playlists/components/select-playlist/select-playlist.lang.json'; import './apps/playlists/components/sort-select/playlist-sort-select.lang.json'; import './apps/playlists/views/add-to-playlist/add-to-playlist.lang.json'; import './apps/playlists/views/delete-playlist/delete-playlist.lang.json'; import './apps/playlists/views/edit-playlist/edit-playlist.lang.json'; import './apps/playlists/views/new-playlist/new-playlist.lang.json'; import './apps/playlists/views/playlists/playlists.lang.json'; import './apps/playlists/views/remove-video-from-playlist/remove-video-from-playlists.lang.json'; import './apps/search/components/filter-actions/filter-actions.lang.json'; import './apps/search/components/reset-button/reset-button.lang.json'; import './apps/search/components/search-filters/search-filters.lang.json'; import './apps/search/utils/search-utils.lang.json'; import './apps/search/views/search-results/search-results.lang.json'; import './apps/settings/views/settings/settings.lang.json'; import './apps/subjects/views/classification-series-list-view/classification-series-list.lang.json'; import './apps/subjects/views/classification/classifications-view.lang.json'; import './apps/subjects/views/preferences/level-preferences/level-preferences.lang.json'; import './apps/subjects/views/preferences/subject-preferences/subject-preferences.lang.json'; import './apps/subjects/views/preferences/summary/preferences-summary.lang.json'; import './apps/upload/components/upload-file-select/upload-file-select.lang.json'; import './apps/upload/components/uploading-item/uploading-item.lang.json'; import './apps/upload/services/upload-services.lang.json'; import './apps/upload/views/cancel-upload/cancel-upload.lang.json'; import './apps/upload/views/edit-upload/edit-upload.lang.json'; import './apps/upload/views/my-uploads/my-uploads.lang.json'; import './apps/user-manager/components/bulk-upload-file-select/bulk-upload-file-select.lang.json'; import './apps/user-manager/components/delete-uploaded-student-popup/delete-uploaded-student-popup.lang.json'; import './apps/user-manager/components/delete-uploaded-teacher-popup/delete-uploaded-teacher-popup.lang.json'; import './apps/user-manager/components/edit-uploaded-user-popup/edit-uploaded-user-popup.lang.json'; import './apps/user-manager/components/manage-users-list/students/manage-students.lang.json'; import './apps/user-manager/components/manage-users-list/teachers/manage-teachers.lang.json'; import './apps/user-manager/components/student-review-table/student-review-table.lang.json'; import './apps/user-manager/components/teacher-review-table/teacher-review-table.lang.json'; import './apps/user-manager/components/user-details-form/student-details-form.lang.json'; import './apps/user-manager/components/user-details-form/teacher-details-form.lang.json'; import './apps/user-manager/components/user-details-form/user-details-form.lang.json'; import './apps/user-manager/validation/user-validation/user-validation.lang.json'; import './apps/user-manager/views/create-student/create-student.lang.json'; import './apps/user-manager/views/create-teacher/create-teacher.lang.json'; import './apps/user-manager/views/edit-student/edit-student.lang.json'; import './apps/user-manager/views/edit-teacher/edit-teacher.lang.json'; import './apps/user-manager/views/remove-user/remove-user.lang.json'; import './apps/user-manager/views/school-student-manager/empty-state/school-student-manager-empty-state.lang.json'; import './apps/user-manager/views/school-student-manager/school-student-manager.lang.json'; import './apps/user-manager/views/school-teacher-manager/empty-state/school-teacher-manager-empty-state.lang.json'; import './apps/user-manager/views/school-teacher-manager/school-teacher-manager.lang.json'; import './apps/user-manager/views/student-upload-review/student-upload-review.lang.json'; import './apps/user-manager/views/teacher-upload-review/teacher-upload-review.lang.json'; import './shared/components/clips/clips.lang.json'; import './shared/components/immersive-reader/immersive-reader.lang.json'; import './shared/components/interactives/interactives.lang.json'; import './shared/components/play-page/play-page.lang.json'; import './shared/components/share/copy-embed-html/copy-embed-html.lang.json'; import './shared/components/share/tokenized-typeahead/tokenized-typeahead.lang.json'; import './shared/components/synopsis/synopsis.lang.json'; import './shared/components/user-options/user-options.lang.json'; import './shared/components/video-details/video-details.lang.json'; import './shared/errors/not-found/not-found.lang.json'; import './shared/hooks/hooks.lang.json'; import './shared/layouts/teacher-layout/drag-mask/drag-mask.lang.json'; import './shared/utils/shared-utils.lang.json'; import './shared/views/favourite-videos/favourite-videos-view.lang.json'; import './shared/views/left-nav/left-nav-view.lang.json'; import './shared/views/series/series-view.lang.json'; import './shared/views/share/share.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\nimport 'regenerator-runtime/runtime';\r\n\r\nimport './styles';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport {\r\n RegisterLayouts,\r\n RegisterApplications,\r\n RegisterCaches,\r\n RegisterDataProviders,\r\n RegisterDataServices,\r\n RegisterServices,\r\n RegisterAjaxMiddleware,\r\n RegisterErrorHandlers,\r\n RegisterRuntimeEnvironment,\r\n RegisterStore,\r\n RegisterApplicationVariables,\r\n RegisterHandlebarsHelpers,\r\n RegisterViewDataExtensions,\r\n RegisterAppOptions,\r\n RegisterAnalytics\r\n} from './startup';\r\n\r\nconst shell = new Core.Shell({\r\n region: '#app',\r\n layoutService: new Core.LayoutService({})\r\n});\r\n\r\nshell\r\n .addInitializationStep(RegisterStore)\r\n .addInitializationStep(RegisterLayouts)\r\n .addInitializationStep(RegisterCaches)\r\n .addInitializationStep(RegisterApplicationVariables)\r\n .addInitializationStep(RegisterDataProviders)\r\n .addInitializationStep(RegisterStore)\r\n .addInitializationStep(RegisterDataServices)\r\n .addInitializationStep(RegisterServices)\r\n // .addInitializationStep(RegisterAnalytics)\r\n .addInitializationStep(RegisterApplications)\r\n .addInitializationStep(RegisterAjaxMiddleware)\r\n .addInitializationStep(RegisterViewDataExtensions)\r\n .addInitializationStep(RegisterHandlebarsHelpers)\r\n .addInitializationStep(RegisterErrorHandlers)\r\n .addInitializationStep(RegisterAppOptions);\r\n\r\nshell\r\n .addStartUpStep(RegisterRuntimeEnvironment);\r\n\r\nshell.start();","import React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\n\r\nimport { ClassroomManagerTabs } from 'apps/classrooms/views/manage-classroom/ManageClassroomView';\r\nimport { UserAction, EntityType, WorkflowPhase, LocationContext, OperationDescriptor, AssocDescriptor } from 'libs/analytics/interfaces';\r\n\r\nclass ClassroomsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.CLASSROOMS;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'classrooms(/)': 'index',\r\n 'classrooms/:id': 'classroom',\r\n 'classrooms/:id/manage': 'manageClassroom'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newClassroom',\r\n 'editClassroom',\r\n 'deleteClassroom',\r\n 'addStudents',\r\n 'removeStudents',\r\n 'newGroup',\r\n 'editGroup',\r\n 'deleteGroup'\r\n ];\r\n }\r\n}\r\n\r\nexport class ClassroomsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Classrooms Application';\r\n }\r\n\r\n public static get router(): any {\r\n return ClassroomsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.CLASSROOMS;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public index(): void {\r\n import('apps/classrooms/views/classrooms/ClassroomsView').then(({ ClassroomsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ClassroomsView />);\r\n });\r\n }\r\n\r\n public classroom(id: string): void {\r\n import('apps/classrooms/views/classroom/ClassroomView').then(({ ClassroomView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ClassroomView id={id} />);\r\n });\r\n }\r\n\r\n public manageClassroom(id: string, params: HashObject<ClassroomManagerTabs>): void {\r\n let tab: ClassroomManagerTabs = params.tab;\r\n\r\n if (![ 'students', 'groups' ].includes(tab))\r\n tab = 'students';\r\n\r\n import('apps/classrooms/views/manage-classroom/ManageClassroomView').then(({ ManageClassroomView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ManageClassroomView id={id} activeTab={tab} />);\r\n });\r\n }\r\n\r\n public newClassroom(): void {\r\n import('apps/classrooms/views/create-classroom/CreateClassroomView').then(({ CreateClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Create,\r\n entity: EntityType.Classroom,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CreateClassroomView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public editClassroom(id: string): void {\r\n import('apps/classrooms/views/edit-classroom/EditClassroomView').then(({ EditClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Edit,\r\n entity: EntityType.Classroom,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditClassroomView id={id} analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public deleteClassroom(id: string): void {\r\n import('apps/classrooms/views/delete-classroom/DeleteClassroomView').then(({ DeleteClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Delete,\r\n entity: EntityType.Classroom,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeleteClassroomView id={id} analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public addStudents(classroomId: string): void {\r\n import('apps/classrooms/views/add-students-to-classroom/AddStudentsToClassroomView')\r\n .then(({ AddStudentsToClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Associate,\r\n entity: EntityType.Classroom,\r\n location: LocationContext.Popup,\r\n descriptor: AssocDescriptor.User,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <AddStudentsToClassroomView\r\n classroomId={classroomId}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public removeStudents(classroomId: string, params: HashObject): void {\r\n const studentIds = params.studentIds;\r\n\r\n import('apps/classrooms/views/remove-students-from-classroom/RemoveStudentsFromClassroomView')\r\n .then(({ RemoveStudentsFromClassroomView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Dissociate,\r\n entity: EntityType.Classroom,\r\n location: LocationContext.Popup,\r\n descriptor: AssocDescriptor.User,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveStudentsFromClassroomView\r\n classroomId={classroomId}\r\n studentIds={studentIds}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public newGroup(classroomId: string, params: HashObject): void {\r\n const { addStudents = []} = params;\r\n\r\n import('apps/classrooms/views/create-classroom-group/CreateClassroomGroupView').then(({ CreateClassroomGroupView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.ClassroomGroup,\r\n location: LocationContext.Popup,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CreateClassroomGroupView\r\n classroomId={classroomId}\r\n studentIds={addStudents}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public editGroup(classroomId: string, groupId: string): void {\r\n import('apps/classrooms/views/edit-classroom-group/EditClassroomGroupView').then(({ EditClassroomGroupView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.ClassroomGroup,\r\n actionType: UserAction.Edit,\r\n location: LocationContext.Popup,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditClassroomGroupView\r\n classroomId={classroomId}\r\n groupId={groupId}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public deleteGroup(classroomId: string, groupId: string): void {\r\n import('apps/classrooms/views/delete-classroom-group/DeleteClassroomGroupView').then(({ DeleteClassroomGroupView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.ClassroomGroup,\r\n actionType: UserAction.Delete,\r\n location: LocationContext.Popup,\r\n workflowPhase: WorkflowPhase.Complete\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeleteClassroomGroupView\r\n classroomId={classroomId}\r\n groupId={groupId}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n}","import { Flight } from 'libs/common/flight';\r\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\n\r\nimport { EditClassroomRequest } from 'apps/classrooms/interfaces/EditClassroomRequest';\r\nimport { MockStudent, MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nexport const ClassroomRequests = {\r\n getAll(): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: 'classrooms',\r\n successResponse: () => {\r\n return Flight.Simulator.getAll('classrooms');\r\n },\r\n timeout: 1000\r\n };\r\n },\r\n\r\n getClassroom(id: string): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${id}`,\r\n key: `classroom:${id}`,\r\n invalidationKeys: ['classrooms'],\r\n successResponse: () => {\r\n return Flight.Simulator.get('classrooms', id);\r\n },\r\n timeout: 5000\r\n };\r\n },\r\n\r\n createClassroom(\r\n classroom: EditClassroomRequest, success?: (data: MockClassroom) => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: 'create:classroom',\r\n type: HttpVerbs.POST,\r\n invalidationKeys: ['classrooms'],\r\n successResponse: () => {\r\n return Flight.Simulator.create('classrooms', {\r\n ...classroom,\r\n students: [],\r\n groups: [],\r\n activities: [],\r\n isFavourited: false\r\n });\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n editClassroom(classroom: EditClassroomRequest, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: `update:classroom`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'classrooms', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n return Flight.Simulator.update('classrooms', classroom);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n deleteClassroom(id: string, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: `delete:classroom`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: ['classrooms'],\r\n successResponse: () => {\r\n Flight.Simulator.delete('classrooms', id);\r\n return {};\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * Student management requests\r\n */\r\n addStudents(\r\n students: MockStudent[], classroomId: string, success?: () => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${classroomId}/students`,\r\n key: `add:students:classroom`,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: [ `classroom:${classroomId}`, 'students', 'groups:with:all:students' ],\r\n successResponse: () => {\r\n return Flight.Simulator.assoc('classrooms', classroomId, 'students', 'school:students', students);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n removeStudents(\r\n studentIds: string[], classroomId: string, success?: () => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${classroomId}/students`,\r\n key: `remove:students:classroom`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ `classroom:${classroomId}`, ...studentIds.map(s => `students:${s}`), 'groups:with:all:students' ],\r\n successResponse: () => {\r\n return Flight.Simulator.dissoc('classrooms', classroomId, 'students', studentIds);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * Group management requests\r\n */\r\n addGroupToClassroom(\r\n group: MockClassroomGroup,\r\n classroomId: string,\r\n success: (group: MockClassroomGroup) => void,\r\n error: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${classroomId}/groups`,\r\n key: `add:classroom:group`,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: [`classroom:${classroomId}`],\r\n successResponse: () => {\r\n return Flight.Simulator.assoc('classrooms', classroomId, 'groups', 'groups', group);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n editGroup(\r\n group: MockClassroomGroup, classroom: MockClassroom, success: () => void, error: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/groups/${group.id}`,\r\n key: `group:${group.id}`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'groups', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n Flight.Simulator.update('classrooms', {\r\n ...classroom,\r\n groups: classroom.groups.map(_group => {\r\n if (_group.id !== group.id)\r\n return _group;\r\n\r\n return group;\r\n })\r\n });\r\n\r\n return Flight.Simulator.update('groups', group);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n deleteGroup(groupId: string, classroomId: string, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/groups/${groupId}`,\r\n key: `delete:group`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ 'groups', `classroom:${classroomId}` ],\r\n successResponse: () => {\r\n Flight.Simulator.dissoc('classrooms', classroomId, 'groups', groupId);\r\n Flight.Simulator.delete('groups', groupId);\r\n return {};\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n addStudentsToGroup(\r\n students: string[],\r\n groupId: string,\r\n success?: () => void,\r\n error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/groups/${groupId}/students`,\r\n key: `add:student:group`,\r\n data: students,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: [ `group:${groupId}`, ...students.map(s => `user:${s}:groups`), 'groups:with:all:students' ],\r\n successResponse: () => {\r\n students.forEach(student => {\r\n Flight.Simulator.assoc('groups', groupId, 'students', 'school:students', [student]);\r\n });\r\n return Flight.Simulator.get('groups', groupId);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n removeStudentsFromGroup(\r\n students: string[],\r\n groupId: string,\r\n success?: () => void,\r\n error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: UrlHelper.urlBuilder(`/api/domain/v1/groups/${groupId}/students`, { id: students }),\r\n key: `remove:student:group`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ `group:${groupId}`, 'groups:with:all:students', ...students.map(s => `user:${s}:groups`) ],\r\n successResponse: () => {\r\n students.forEach(student => {\r\n Flight.Simulator.dissoc('groups', groupId, 'students', student);\r\n });\r\n return Flight.Simulator.get('groups', groupId);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n getStarredClassrooms(): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/me/starred-classrooms`,\r\n key: 'starred:classrooms',\r\n successResponse: () => {\r\n return Flight.Simulator.getAll('classrooms').filter(c => c.isFavourited);\r\n }\r\n };\r\n },\r\n\r\n starClassroom(classroom: MockClassroom, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classroom/${classroom.id}/star`,\r\n key: `star:classroom:${classroom.id}`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'classrooms', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n return Flight.Simulator.update('classrooms', {\r\n ...classroom,\r\n isFavourited: true\r\n });\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n unstarClassroom(\r\n classroom: MockClassroom, success?: () => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classroom/${classroom.id}/unstar`,\r\n key: `unstar:classroom:${classroom.id}`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'classrooms', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n return Flight.Simulator.update('classrooms', {\r\n ...classroom,\r\n isFavourited: false\r\n });\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * I'm temporarily using this function to get all of a classrooms groups that every single\r\n * student within that classroom is in. E.g. if EVERY student in classroom 1-A is in the group\r\n * \"Splendid Strawberries\", then that group will be returned here. This is to be temporarily\r\n * used by the bulk group management dropdown above the classroom student manager.\r\n * \r\n * I'm aware that it is slow and ugly - I feel like we're better off waiting to see how backend can\r\n * help us out here before unnecessarily optimizing things on the frontend.\r\n */\r\n getGroupsWithAllStudents(students: MockStudent[]): Flight.SimulatedRequest {\r\n const studentIds = students.map(s => s.id);\r\n return {\r\n url: 'i highly doubt this will be a real request',\r\n key: 'groups:with:all:students',\r\n successResponse: () => {\r\n const groups = Flight.Simulator.getAll('groups');\r\n\r\n return groups.filter(group => {\r\n let allStudentsFound = true;\r\n let index = 0;\r\n\r\n do {\r\n const id = studentIds[index];\r\n if (!group.students.find((stu: MockStudent) => stu.id === id))\r\n allStudentsFound = false;\r\n\r\n index++;\r\n } while (index < studentIds.length);\r\n\r\n return allStudentsFound;\r\n });\r\n }\r\n };\r\n }\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\r\nimport { VideoAction } from 'libs/shared/utils/video-actions/VideoActionsHelper';\r\nimport { Video } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\n\r\nimport { LiteContentUpdateAppLinks } from 'apps/content-updates/utils';\r\n\r\nclass ContentUpdatesRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'content-updates': 'contentUpdates',\r\n 'content-updates/:id(/:slug)': 'classificationUpdate'\r\n };\r\n }\r\n}\r\n\r\nexport class ContentUpdatesApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Content Updates Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n public static get router(): typeof ContentUpdatesRouter {\r\n return ContentUpdatesRouter;\r\n }\r\n\r\n public contentUpdates(): void {\r\n const videoActions = [\r\n VideoAction.Share,\r\n VideoAction.AddToPlaylist\r\n ];\r\n\r\n const getActionAppLink = (video: Video, action: VideoAction) => {\r\n switch (action) {\r\n case VideoAction.AddToPlaylist:\r\n return LiteContentUpdateAppLinks.getAddToPlaylistAppLink(video);\r\n\r\n case VideoAction.Share:\r\n return LiteContentUpdateAppLinks.getShareAppLink(video);\r\n }\r\n };\r\n\r\n import('apps/content-updates/views/content-updates/ContentUpdatesView').then(({ ContentUpdatesView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, (\r\n <VideoActionsContext.Provider value={{ videoActions, getActionAppLink }}>\r\n <ContentUpdatesView appLinks={LiteContentUpdateAppLinks} />\r\n </VideoActionsContext.Provider>\r\n ));\r\n });\r\n }\r\n\r\n public classificationUpdate(classificationId: string, slug: string): void {\r\n import('apps/content-updates/views/classification-update/ClassificationUpdateView')\r\n .then(({ ClassificationUpdateView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, (\r\n <ClassificationUpdateView classificationId={classificationId} appLinks={LiteContentUpdateAppLinks} />\r\n ));\r\n });\r\n }\r\n}","import { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { Video, Series, Classification } from 'libs/shared/interfaces';\r\nimport { ContentUpdateAppLinks } from 'libs/shared/apps/content-updates/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nexport const LiteContentUpdateAppLinks: ContentUpdateAppLinks = {\r\n getVideoAppLink: (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.id, TextHelper.slugify(video.name) ]\r\n }),\r\n getSeriesAppLink: (series: Series) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n }),\r\n getClassificationUpdateAppLink: (classification: Classification) => ({\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\r\n args: [ classification.id, TextHelper.slugify(classification.name) ]\r\n }),\r\n getClassificationAppLink: (classification: Classification) => ({\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Subjects.CLASSIFICATION,\r\n args: [ classification.id, TextHelper.slugify(classification.name) ]\r\n }),\r\n getShareAppLink: (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SHARE,\r\n args: [video.id],\r\n params: { entityType: 'video' }\r\n }),\r\n getAddToPlaylistAppLink: (video: Video) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.ADD_TO_PLAYLIST,\r\n args: [video.id]\r\n }),\r\n dashboardAppLink: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n },\r\n contentUpdatesAppLink: {\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CONTENT_UPDATES\r\n }\r\n};","export * from './LiteContentUpdateAppLinks';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\n\r\nclass DashboardAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'dashboard/:id(/:name/)': 'dashboard',\r\n\r\n '(/)': 'index',\r\n };\r\n }\r\n}\r\n\r\nexport class DashboardApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Dashboard Application';\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n public static get router(): typeof DashboardAppRouter {\r\n return DashboardAppRouter;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public index(): void {\r\n import('apps/dashboard/views/dashboard/DashboardView').then(({ DashboardView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DashboardView />);\r\n });\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { NotFoundError } from 'shared/errors/not-found/LiteNotFoundError';\r\n\r\nclass DefaultAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n // These routes should be moved to their own applications eventually\r\n 'videos/:id(/:slug)': 'playVideo',\r\n 'my-uploads(/)': 'myUploads',\r\n 'series/:id(/:slug)': 'series',\r\n 'share/:shortCode(/)': 'playSharedVideo',\r\n 'favourited-videos(/)': 'favouriteVideos',\r\n '*path' : 'catchAllRoutes',\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [ 'devError', 'dialogError', 'error', 'notFound', 'editVideo', 'editUpload', 'share' ];\r\n }\r\n}\r\n\r\nexport class DefaultApplication extends ReactApplication {\r\n public layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Default Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n public static get router(): typeof DefaultAppRouter {\r\n return DefaultAppRouter;\r\n }\r\n\r\n public share(id: string, params: HashObject): void {\r\n import('shared/views/share/ShareView').then(({ ShareView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <ShareView\r\n entityId={id}\r\n entityType={params.entityType}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public playVideo(id: string, slug: string): void {\r\n import('shared/views/play/PlayView').then(({ PlayView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlayView id={id} />\r\n );\r\n });\r\n }\r\n\r\n public playSharedVideo(shortCode: string): void {\r\n import('shared/views/play-shared/PlaySharedView').then(({ PlaySharedView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaySharedView shortCode={shortCode} />\r\n );\r\n });\r\n }\r\n\r\n public myUploads(params: HashObject): void {\r\n import('apps/upload/views/my-uploads/MyUploadsView').then(({ MyUploadsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <MyUploadsView cursor={params.cursor} />\r\n );\r\n });\r\n }\r\n\r\n public editVideo(videoId: string): void {\r\n import('shared/views/edit-video/EditVideoView').then(({ EditVideoView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditVideoView id={videoId} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public editUpload(uploadId: string): void {\r\n import('apps/upload/views/edit-upload/EditUploadView').then(({ EditUploadView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditUploadView uploadId={uploadId} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public series(id: string, slug: string, params: HashObject): void {\r\n import('shared/views/series/SeriesView').then(({ SeriesView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <SeriesView id={id} cursor={params?.cursor} />\r\n );\r\n });\r\n }\r\n\r\n public favouriteVideos(params: HashObject): void {\r\n import('shared/views/favourite-videos/FavouriteVideosView').then(({ FavouriteVideosView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <FavouriteVideosView cursor={params.cursor} />\r\n );\r\n });\r\n }\r\n\r\n public catchAllRoutes(): void {\r\n Core.ErrorHelper.throw(new NotFoundError());\r\n }\r\n\r\n public notFound(): void {\r\n import('apps/default/views/not-found/LiteNotFoundView').then(({ NotFoundView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NotFoundView />);\r\n });\r\n }\r\n\r\n public error(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n import('apps/default/views/error/LiteErrorView').then(({ ErrorView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ErrorView error={error} />);\r\n });\r\n }\r\n\r\n public dialogError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n if (!error)\r\n return;\r\n\r\n const { dialogOptions } = error;\r\n\r\n import('libs/shared/views/dialog/DialogView').then(({ DialogView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DialogView\r\n title={dialogOptions.title}\r\n text={dialogOptions.text}\r\n buttons={dialogOptions.buttons}\r\n onDone={error.onDone}\r\n onFail={error.onFail}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public devError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n import('apps/default/views/dev-error/LiteDevErrorView').then(({ DevErrorView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DevErrorView error={error} />);\r\n });\r\n }\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { EmbedLayoutView } from 'shared/layouts/embed-layout/EmbedLayoutView';\r\n\r\nclass EmbedAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'share/embed/:shortCode': 'embedVideo'\r\n };\r\n }\r\n}\r\n\r\nexport class EmbedApplication extends ReactApplication {\r\n public layout: EmbedLayoutView;\r\n\r\n public get name(): string {\r\n return 'Embed Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<Core.LayoutViewOptions> {\r\n return {\r\n name: Layouts.EMBED_LAYOUT\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n public static get router(): typeof EmbedAppRouter {\r\n return EmbedAppRouter;\r\n }\r\n\r\n public embedVideo(shortCode: string, params: HashObject = {}): void {\r\n const { a = false } = params;\r\n\r\n import('apps/embed/views/embed/EmbedView').then(({ EmbedView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EmbedView id={shortCode} autoplay={a} />);\r\n });\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\n\r\nclass NotificationsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public get appRoutes(): HashObject {\r\n return {\r\n 'notifications(/)': 'index'\r\n };\r\n }\r\n}\r\n\r\nexport class NotificationsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Notifications Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public static get router(): any {\r\n return NotificationsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public index(params: HashObject): void {\r\n import('libs/shared/apps/notifications/views/notifications/NotificationsView')\r\n .then(({ NotificationsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <BackboneViewWrapper view={NotificationsView} options={{ params }} />\r\n );\r\n });\r\n }\r\n}","import { BaseNotificationsAppVariables, NotificationsAppLinks } from 'libs/shared/interfaces';\r\nimport { NotificationType } from 'libs/shared/apps/notifications/enums/NotificationType';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nexport class NotificationsAppVariables extends BaseNotificationsAppVariables {\r\n public get appLinks(): NotificationsAppLinks {\r\n return {\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO\r\n },\r\n\r\n notifications: {\r\n application: AppChannels.NOTIFICATIONS,\r\n action: Actions.Notifications.HOME\r\n },\r\n\r\n /**\r\n * Below this comment is unimplemented applinks\r\n */\r\n pastReleases: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n },\r\n\r\n awaitingReview: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n },\r\n\r\n editStaffRequest: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n }\r\n };\r\n }\r\n\r\n public get notificationTypesWithAppLinks(): Array<NotificationType> {\r\n return [\r\n NotificationType.VideoReviewReminder,\r\n NotificationType.VideoReviewAddedToLibrary,\r\n NotificationType.CustomLibraryVideoAvailable,\r\n NotificationType.WorkspaceVideoAvailable,\r\n NotificationType.ExchangeVideoAvailable\r\n // NotificationType.StaffRequest,\r\n // NotificationType.StaffRequestFulfilled,\r\n // NotificationType.ChapterMergeSuccess\r\n ];\r\n }\r\n\r\n // TODO\r\n public get notificationsEmptyStateUrl(): string {\r\n // return '/images/empty-states/illo-no-notifications@2x.png';\r\n return '';\r\n }\r\n\r\n public get bellIconColor(): 'dark' {\r\n return 'dark';\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { Video, Series, Playlist, PropsWithAnalyticsOptions, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PlaylistSortHelper } from 'libs/shared/apps/playlists/utils/PlaylistSortHelper';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { LocationContext } from 'libs/analytics/interfaces';\r\n\r\nclass PlaylistsAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'playlists(/)': 'index',\r\n 'playlists/:id(/:slug)': 'playlist'\r\n };\r\n }\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newPlaylist',\r\n 'editPlaylist',\r\n 'deletePlaylist',\r\n 'addToPlaylist',\r\n 'removeVideoFromPlaylist'\r\n ];\r\n }\r\n}\r\n\r\nexport class PlaylistsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Playlists Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n public static get router(): typeof PlaylistsAppRouter {\r\n return PlaylistsAppRouter;\r\n }\r\n\r\n private getPopupProps(): PropsWithAnalyticsOptions<PopupViewProps> {\r\n return {\r\n closePopup: () => this.layout.closePopup(),\r\n analyticsOptions: { location: LocationContext.Popup }\r\n };\r\n }\r\n\r\n public index(params: HashObject): void {\r\n const getPlaylistAppLink = (playlist: Playlist) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\r\n });\r\n\r\n const getSortAppLink = (sort: PlaylistSortType): Core.AppLink => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME,\r\n params: {\r\n sort: sort\r\n }\r\n });\r\n\r\n this.setDefaultQueryParams({ sort: params.sort || PlaylistSortType.Newest });\r\n\r\n import('apps/playlists/views/playlists/PlaylistsView').then(({ PlaylistsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistsView getPlaylistAppLink={getPlaylistAppLink}\r\n key={params.sort}\r\n getSortAppLink={getSortAppLink}\r\n sort={PlaylistSortHelper.getSortTypeFromName(params.sort)}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public playlist(id: string, slug?: string): void {\r\n // TODO Replace this\r\n const getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.id, TextHelper.slugify(video.name) ]\r\n });\r\n\r\n const getSeriesAppLink = (series: Series) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME\r\n });\r\n\r\n import('apps/playlists/views/playlist/PlaylistView').then(({ PlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistView\r\n key={id}\r\n playlistId={id}\r\n application={AppChannels.PLAYLISTS}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n allowEdit\r\n />\r\n );\r\n });\r\n }\r\n\r\n public newPlaylist(): void {\r\n import('apps/playlists/views/new-playlist/NewPlaylistView').then(({ NewPlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <NewPlaylistView application={AppChannels.PLAYLISTS} {...this.getPopupProps()} />\r\n );\r\n });\r\n }\r\n\r\n public editPlaylist(id: string): void {\r\n import('apps/playlists/views/edit-playlist/EditPlaylistView').then(({ EditPlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditPlaylistView key={id} playlistId={id} {...this.getPopupProps()} />\r\n );\r\n });\r\n }\r\n\r\n public deletePlaylist(id: string): void {\r\n import('apps/playlists/views/delete-playlist/DeletePlaylistView').then(({ DeletePlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeletePlaylistView\r\n key={id}\r\n playlistId={id}\r\n routeToOnDelete={{\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME\r\n }}\r\n {...this.getPopupProps()}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public addToPlaylist(videoId: string): void {\r\n import('apps/playlists/views/add-to-playlist/AddToPlaylistView').then(({ AddToPlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <AddToPlaylistView key={videoId} videoId={videoId} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public removeVideoFromPlaylist(videoId: string, playlistId: string): void {\r\n import('apps/playlists/views/remove-video-from-playlist/RemoveVideoFromPlaylistView')\r\n .then(({ RemoveVideoFromPlaylistView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveVideoFromPlaylistView\r\n key={`${videoId}:${playlistId}`}\r\n videoId={videoId}\r\n playlistId={playlistId}\r\n {...this.getPopupProps()}\r\n />\r\n );\r\n });\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\n\r\nclass SearchAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'search(/)': 'index'\r\n };\r\n }\r\n}\r\n\r\nexport class SearchApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Search Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n public static get router(): typeof SearchAppRouter {\r\n return SearchAppRouter;\r\n }\r\n\r\n public index(queryParams?: HashObject): void {\r\n import('apps/search/views/search-results/SearchResultsView').then(({ SearchResultsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SearchResultsView queryParams={queryParams} />);\r\n });\r\n }\r\n}","import { BaseSearchAppVariables, SearchAppLinks } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nexport class SearchAppVariables extends BaseSearchAppVariables {\r\n public get appLinks(): SearchAppLinks {\r\n /**\r\n * These will eventually be swapped out for their actual applinks\r\n */\r\n return {\r\n searchResults: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n series: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES\r\n },\r\n\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO\r\n },\r\n\r\n tagSearch: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n classification: {\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Subjects.CLASSIFICATION\r\n }\r\n };\r\n }\r\n}","import React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\n\r\nclass SettingsAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.SETTINGS;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'settings(/)': 'index'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [];\r\n }\r\n}\r\n\r\nexport class SettingsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Settings Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SETTINGS;\r\n }\r\n\r\n public static get router(): typeof SettingsAppRouter {\r\n return SettingsAppRouter;\r\n }\r\n\r\n public index(): void {\r\n import('apps/settings/views/settings/SettingsView').then(({ SettingsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SettingsView />);\r\n });\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\n\r\nclass SubjectAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'subjects/preferences?step=subjects': 'preferences',\r\n 'subjects/:id(/:slug)/series': 'classificationSeries',\r\n 'subjects/:id(/:slug)': 'classification',\r\n };\r\n }\r\n}\r\n\r\nexport class SubjectApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Subject Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SubjectAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public classification(classificationId: string, slug?: string): void {\r\n import('apps/subjects/views/classification/ClassificationView').then(({ ClassificationView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <ClassificationView\r\n key={classificationId}\r\n id={classificationId}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public classificationSeries(classificationId: string, slug?: string, queryParams?: HashObject<string>): void {\r\n import('apps/subjects/views/classification-series-list-view/ClassificationSeriesListView')\r\n .then(({ ClassificationSeriesListView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <ClassificationSeriesListView\r\n id={classificationId}\r\n queryParams={queryParams}\r\n />\r\n );\r\n });\r\n }\r\n\r\n public preferences({ step = 'subjects' }: HashObject): void {\r\n import('apps/subjects/views/preferences/PreferencesView').then(({ PreferencesView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PreferencesView\r\n application={AppChannels.SUBJECT}\r\n step={step}\r\n />\r\n );\r\n });\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {}\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\n\r\nclass UploadAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.UPLOAD;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'my-uploads(/)': 'myUploads',\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'editUpload',\r\n 'cancelUpload'\r\n ];\r\n }\r\n}\r\n\r\nexport class UploadApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Upload Application';\r\n }\r\n\r\n public static get router(): any {\r\n return UploadAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.UPLOAD;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public myUploads(params: HashObject): void {\r\n import('apps/upload/views/my-uploads/MyUploadsView').then(({ MyUploadsView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <MyUploadsView cursor={params.cursor} />);\r\n });\r\n }\r\n\r\n public editUpload(uploadId: string): void {\r\n import('apps/upload/views/edit-upload/EditUploadView').then(({ EditUploadView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditUploadView uploadId={uploadId} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public cancelUpload(id: string, params: HashObject): void {\r\n import('apps/upload/views/cancel-upload/CancelUploadView').then(({ CancelUploadView }) => {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CancelUploadView\r\n id={id}\r\n name={params.name}\r\n status={params.status}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n });\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { InteractionType, WorkflowPhase, UserAction, EntityType } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { Services } from 'shared/constants/Services';\r\n\r\nimport { VideoUploadService } from 'apps/upload/services/VideoUploadService';\r\n\r\nconst namespace = 'shared.uploadFileSelect';\r\n\r\ninterface UploadFileSelectProps {\r\n hideButtonText?: boolean;\r\n}\r\n\r\nexport const UploadFileSelect = React.memo(function(props: UploadFileSelectProps): JSX.Element {\r\n const { hideButtonText = false } = props;\r\n\r\n const videoUploadService = useService<VideoUploadService>(Services.VideoUpload);\r\n\r\n const ref = React.useRef(null);\r\n const useRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n ref.current = node;\r\n }, []);\r\n\r\n const onClick = (e: React.MouseEvent) => {\r\n ref.current.value = null;\r\n ref.current.click(null);\r\n };\r\n\r\n const onChange = (files: FileList) => videoUploadService.addFiles(files as any, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Upload,\r\n workflowPhase: WorkflowPhase.Start,\r\n descriptor: AnalyticsHelper.mapInteractionType(InteractionType.FileSelect)\r\n });\r\n\r\n return (\r\n <>\r\n <IconButton\r\n svgName={cvSvgLibrary.Upload}\r\n className='btn btn-secondary'\r\n onClick={onClick}\r\n >\r\n { !hideButtonText && <Text phrase='uploadVideo' namespace={namespace} /> }\r\n </IconButton>\r\n\r\n <input\r\n type='file'\r\n autoComplete='off'\r\n className='file-select d-none'\r\n multiple\r\n accept='video/*'\r\n ref={useRef}\r\n onChange={e => onChange(e.target.files)}\r\n />\r\n </>\r\n );\r\n});\r\n","import { Radio } from 'backbone';\r\nimport { BaseAlertService, AlertType, BaseAlert, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { PendingItemsHelper } from 'libs/shared/apps/upload/utils/PendingItemsHelper';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\nimport { BasePendingItemsService } from 'libs/shared/apps/upload/services/BasePendingItemsService';\r\nimport { BaseVideoUploadService } from 'libs/shared/apps/upload/services/UploadService';\r\n\r\nimport { Services } from 'shared/constants/Services';\r\nimport { AppChannels, ServiceChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('upload.services');\r\n\r\nclass CombinedCollection extends Core.Collection {\r\n public modelId(attrs: HashObject): string {\r\n return attrs.pendingProcessId || attrs.id;\r\n }\r\n\r\n public get comparator(): (item1: Core.Model, item2: Core.Model) => number {\r\n return (item1: Core.Model, item2: Core.Model) => {\r\n const item1Status = item1.get('status');\r\n const item2Status = item2.get('status');\r\n if (item1Status === CombinedUploadStatus.Errored)\r\n return 1;\r\n if (item2Status === CombinedUploadStatus.Errored)\r\n return -1;\r\n\r\n return 0;\r\n };\r\n }\r\n}\r\n\r\nexport enum CombinedUploadStatus {\r\n Uploading,\r\n Processing,\r\n Errored\r\n}\r\n\r\nexport interface CombinedUpload {\r\n id: string;\r\n name: string;\r\n status: CombinedUploadStatus;\r\n progress: number;\r\n pendingProcessId: number;\r\n videoId?: string;\r\n}\r\n\r\n/**\r\n * The sole purpose of this service is to combine the collections in the\r\n * VideoUploadService and the PendingItemsService in a way that's consumable\r\n * by the MyuploadsView\r\n */\r\nexport class CombineUploadsService extends Core.Service {\r\n private videoUploadService: BaseVideoUploadService;\r\n private pendingItemsService: BasePendingItemsService;\r\n private alertService: BaseAlertService;\r\n\r\n private uploads: Core.Collection;\r\n private pendingItems: Core.Collection;\r\n\r\n private combined: CombinedCollection;\r\n\r\n private erroredVideos: Core.Collection;\r\n\r\n public get name(): string {\r\n return Services.CombineUploads;\r\n }\r\n\r\n public get channelName(): string {\r\n return ServiceChannels.COMBINE_UPLOADS;\r\n }\r\n\r\n public initialize(): void {\r\n this.initializeServices();\r\n this.initializeCollections();\r\n this.bindListeners();\r\n }\r\n\r\n private initializeServices(): void {\r\n this.videoUploadService = InstanceManager.getInstance(Services.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n this.alertService = InstanceManager.getInstance(CommonServices.ALERT, this);\r\n }\r\n\r\n private initializeCollections(): void {\r\n this.uploads = this.videoUploadService.getCollection();\r\n this.pendingItems = this.pendingItemsService.getPendingItems();\r\n this.combined = new CombinedCollection();\r\n this.erroredVideos = new Core.Collection();\r\n\r\n this.uploads.each(this.addUpload, this);\r\n this.pendingItems.each(this.addPendingItem, this);\r\n }\r\n\r\n private bindListeners(): void {\r\n this.listenTo(this.uploads, 'add', this.addUpload);\r\n this.listenTo(this.pendingItems, 'add', this.addPendingItem);\r\n\r\n this.listenTo(this.uploads, 'remove', this.removeUpload);\r\n this.listenTo(this.pendingItems, 'remove', this.removePendingItem);\r\n\r\n this.listenTo(this.uploads, 'change', this.onChangeUpload);\r\n this.listenTo(this.pendingItems, 'change', this.onChangePendingItem);\r\n\r\n this.listenTo(\r\n SharedServiceChannels.PENDING_ITEMS,\r\n UploadEventNames.PENDING_ITEM_READY_TO_WATCH,\r\n this.onPendingItemReadyToWatch\r\n );\r\n }\r\n\r\n private getUploadAttrs(upload: Core.Model): CombinedUpload {\r\n return {\r\n id: upload.get('id'),\r\n name: upload.get('name'),\r\n progress: upload.get('progress'),\r\n status: CombinedUploadStatus.Uploading,\r\n pendingProcessId: upload.get('pendingProcessId')\r\n };\r\n }\r\n\r\n private getPendingItemAttrs(pendingItem: Core.Model): CombinedUpload {\r\n return {\r\n id: pendingItem.get('pendingProcessId'),\r\n name: pendingItem.get('video').get('name'),\r\n progress: pendingItem.get('foregroundProgress'),\r\n status: PendingItemsHelper.hasError(pendingItem) ? CombinedUploadStatus.Errored : CombinedUploadStatus.Processing,\r\n pendingProcessId: pendingItem.get('pendingProcessId'),\r\n videoId: pendingItem.get('video').get('id')\r\n };\r\n }\r\n\r\n private addUpload(upload: Core.Model): void {\r\n this.combined.add(this.getUploadAttrs(upload));\r\n }\r\n\r\n private addPendingItem(pendingItem: Core.Model): void {\r\n const existing = this.combined.findWhere({ pendingProcessId: pendingItem.get('pendingProcessId') });\r\n\r\n if (existing) {\r\n existing.set(this.getPendingItemAttrs(pendingItem));\r\n return;\r\n }\r\n\r\n this.combined.add(this.getPendingItemAttrs(pendingItem));\r\n }\r\n\r\n private removeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n this.combined.remove(item);\r\n this.erroredVideos.remove(item);\r\n }\r\n\r\n private removePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n this.combined.remove(item);\r\n this.erroredVideos.remove(item);\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.PROCESSING_CANCELLED);\r\n }\r\n\r\n private onChangeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n item.set(this.getUploadAttrs(upload));\r\n }\r\n\r\n private onChangePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n item.set(this.getPendingItemAttrs(pendingItem));\r\n\r\n if (PendingItemsHelper.hasError(pendingItem)) {\r\n this.onPendingItemError(item);\r\n }\r\n }\r\n\r\n private onPendingItemError(pendingItem: Core.Model): void {\r\n if (this.erroredVideos.findWhere({ id: pendingItem.get('id') }))\r\n return;\r\n\r\n this.erroredVideos.add(pendingItem);\r\n\r\n const alert: BaseAlert = {\r\n heading: DefaultAlertHeading.Fail,\r\n type: AlertType.Fail,\r\n message: getPhrase('errorAlertMessage', { videoName: pendingItem.get('name') })\r\n };\r\n\r\n const { appLink: currentAppLink } = ContextService.getCurrentContext();\r\n if (currentAppLink.application !== AppChannels.UPLOAD) {\r\n alert.appLinkText = getPhrase('errorAlertAppLinkText');\r\n alert.appLinkClassName = 'info-link';\r\n alert.appLink = {\r\n application: AppChannels.UPLOAD,\r\n action: Actions.Upload.MY_UPLOADS\r\n };\r\n }\r\n\r\n this.alertService.createAlert(alert);\r\n }\r\n\r\n private onPendingItemReadyToWatch(pendingItem: Core.Model): void {\r\n const video = pendingItem.get('video');\r\n\r\n const completeUploadAppLink = {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.get('id'), TextHelper.slugify(video.get('name')) ]\r\n };\r\n\r\n this.alertService.createAlert({\r\n type: AlertType.Success,\r\n heading: getPhrase('completeUploadAlertHeading', { videoName: video.get('name') }),\r\n message: getPhrase('completeUploadAlertMessage', { videoName: video.get('name') }),\r\n appLink: completeUploadAppLink,\r\n appLinkText: getPhrase('completeUploadAlertAppLinkText', { videoName: video.get('name') }),\r\n appLinkClassName: 'info-link'\r\n });\r\n }\r\n\r\n public cancelUpload(itemId: string): void {\r\n this.videoUploadService.cancelUpload(itemId);\r\n }\r\n\r\n public cancelProcessing(itemId: string): void {\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: itemId });\r\n this.pendingItemsService.clearPendingItem(pendingItem);\r\n }\r\n\r\n public retryItem(item: CombinedUpload): void {\r\n if (item.status === CombinedUploadStatus.Uploading)\r\n Core.ErrorHelper.throw(new DevError('Cannot retry uploading items.'));\r\n\r\n this.erroredVideos.remove(item);\r\n\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: item.id });\r\n\r\n this.pendingItemsService.retryPendingItem(pendingItem, () => {\r\n this.pendingItemsService.forceFetchPendingItems();\r\n });\r\n }\r\n\r\n public editUpload(item: CombinedUpload): void {\r\n if (item.status !== CombinedUploadStatus.Uploading)\r\n return;\r\n\r\n const upload = this.uploads.get(item.id);\r\n\r\n /**\r\n * If the upload has sending set to true the VideoUploadService is in the middle of \r\n * posting the video to v2/process so we can't let the user edit the video via the edit upload form.\r\n * \r\n * This will only happen if the user clicks edit exactly as the video is posted\r\n */\r\n if (upload.get('sending'))\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.UPLOAD,\r\n action: Actions.Upload.EDIT_UPLOAD,\r\n args: [item.id]\r\n });\r\n }\r\n\r\n public updateUploadMetadata(videoId: string, name: string): void {\r\n const item = this.combined.findWhere({ videoId });\r\n\r\n if (!item) return;\r\n\r\n item.set({ name });\r\n }\r\n\r\n public getCollection(): Core.Collection {\r\n return this.combined;\r\n }\r\n}\r\n","import { Store } from 'redux';\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { VideoOrigin } from 'libs/shared/enums/VideoOrigin';\r\nimport { SubtitleExtractionOptions } from 'libs/shared/enums/SubtitleExtractionOptions';\r\nimport { PendingProcessOrigin } from 'libs/shared/enums/PendingProcessOrigin';\r\nimport { BaseVideoUploadDataService } from 'libs/shared/interfaces';\r\nimport { DataServices } from 'shared/constants/Services';\r\n\r\nconst pendingItemRequests = {\r\n delete(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:clear:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n cancel(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/cancel?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:cancel:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n retry(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/retry?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:retry:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.POST\r\n };\r\n },\r\n\r\n get(id: string, success?: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/${id}`,\r\n key: `pending:item:${id}`,\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getAll(success: (items: HashObject[]) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process?destination=2&status=1&status=-1',\r\n key: 'pending',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n completeUpload(completeRequest: CompletePendingItemRequest, success: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process',\r\n key: `complete:upload:${completeRequest.id}`,\r\n type: HttpVerbs.POST,\r\n success,\r\n data: completeRequest\r\n };\r\n }\r\n};\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\ninterface CompletePendingItemVideo {\r\n name: string;\r\n description?: string;\r\n}\r\n\r\ninterface SubtitleOptions {\r\n SubtitleExtractOptions: SubtitleExtractionOptions;\r\n}\r\n\r\ninterface CompletePendingItemRequest {\r\n id: string;\r\n userId: string;\r\n customerId: string;\r\n libraryId: string;\r\n categoryId: string;\r\n fileUrl: string;\r\n pendingProcessOrigin: PendingProcessOrigin;\r\n origin: VideoOrigin;\r\n video: CompletePendingItemVideo;\r\n subtitleOptions: SubtitleOptions;\r\n}\r\n\r\nexport class FlightVideoUploadDataService implements BaseVideoUploadDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.VideoUpload;\r\n }\r\n\r\n public clearPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.delete(ids, callback));\r\n }\r\n public cancelPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.cancel(ids, callback));\r\n }\r\n public retryPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.retry(ids, callback));\r\n }\r\n public getPendingItem(id: string, callback: (item: Core.Model) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.get(id, (data: any) => {\r\n callback(new Core.Model(data));\r\n }));\r\n }\r\n public getPendingItems(callback: (items: HashObject[]) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.getAll(callback));\r\n }\r\n public completeVideoUpload(request: CompletePendingItemRequest, callback?: (item: HashObject) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.completeUpload(request, callback));\r\n }\r\n}\r\n","import { Radio } from 'backbone';\r\n\r\nimport { AlertType, BaseAlert, BaseAlertService } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nimport { UserDataService } from 'libs/shared/services/UserDataService';\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\nimport { PendingProcessOrigin } from 'libs/shared/enums/PendingProcessOrigin';\r\nimport { BasePendingItemsService } from 'libs/shared/apps/upload/services/BasePendingItemsService';\r\nimport { BaseVideoUploadService } from 'libs/shared/apps/upload/services/UploadService';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\nimport { VideoOrigin } from 'libs/shared/enums/VideoOrigin';\r\nimport { SubtitleExtractionOptions } from 'libs/shared/enums/SubtitleExtractionOptions';\r\n\r\nimport { Services, DataServices } from 'shared/constants/Services';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { FlightVideoUploadDataService } from './FlightVideoUploadDataService';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('upload.services');\r\n\r\nexport class VideoUploadService extends BaseVideoUploadService {\r\n private videoUploadDataService: FlightVideoUploadDataService;\r\n private pendingItemsService: BasePendingItemsService;\r\n private userDataService: UserDataService;\r\n private alertService: BaseAlertService;\r\n\r\n public initialize(): void {\r\n super.initialize();\r\n\r\n this.videoUploadDataService = InstanceManager.getInstance(DataServices.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n this.userDataService = InstanceManager.getInstance(DataServices.User, this);\r\n this.alertService = InstanceManager.getInstance(CommonServices.ALERT, this);\r\n\r\n this.listenTo(this.channelName, UploadEventNames.FILES_ADDED, this.onUploadStart);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_COMPLETE, this.unlockNav);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_CANCELLED, this.unlockNav);\r\n }\r\n\r\n private onUploadStart(files: FileList): void {\r\n const alert: BaseAlert = {\r\n type: AlertType.Success,\r\n heading: getPhrase('startUploadAlertHeading'),\r\n message: files.length === 1\r\n ? getPhrase('startUploadSingleAlertBody', { videoName: files[0].name })\r\n : getPhrase('startUploadMultipleAlertBody', { uploadCount: files.length })\r\n };\r\n\r\n const { appLink: currentAppLink } = ContextService.getCurrentContext();\r\n\r\n const inUploadApp = currentAppLink.application === AppChannels.UPLOAD;\r\n\r\n // If the user is not on the \"My Uploads\" page, add an applink to the alert\r\n if (!inUploadApp) {\r\n alert.appLinkText = getPhrase('startUploadAlertAppLinkText', { smartCount: files.length });\r\n alert.appLink = {\r\n application: AppChannels.UPLOAD,\r\n action: Actions.Upload.MY_UPLOADS\r\n };\r\n alert.appLinkClassName = 'info-link';\r\n }\r\n\r\n this.alertService.createAlert(alert);\r\n }\r\n\r\n private unlockNav(): void {\r\n const collection = this.getCollection();\r\n\r\n if (collection.some(upload => upload.get('progress') < 100))\r\n return;\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.UNLOCK_NAV);\r\n }\r\n\r\n private getUpload(file: File): Core.Model {\r\n const fileId = this.uploader.getId(file);\r\n\r\n return this.getCollection().get(fileId);\r\n }\r\n\r\n private completeUpload(upload: Core.Model, response: any): void {\r\n upload.set('sending', true);\r\n this.userDataService.getCurrentUser((user: HashObject) => {\r\n this.userDataService.getWorkspace((workspace: HashObject) => {\r\n this.videoUploadDataService.completeVideoUpload({\r\n id: upload.get('id'),\r\n userId: user.id,\r\n customerId: user.customerId,\r\n libraryId: workspace.id,\r\n categoryId: workspace.categoryTree.id,\r\n pendingProcessOrigin: PendingProcessOrigin.Upload,\r\n origin: VideoOrigin.Lite,\r\n fileUrl: response.url,\r\n subtitleOptions: {\r\n SubtitleExtractOptions: SubtitleExtractionOptions.EmbeddedOnly\r\n },\r\n video: { name: upload.get('name'), description: upload.get('description') }\r\n }, (item: any) => {\r\n upload.set('pendingProcessId', item.pendingProcessId);\r\n this.pendingItemsService.forceFetchPendingItems({\r\n resetTimeout: true,\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n protected onSuccess(file: File, response: any): void {\r\n super.onSuccess(file, response);\r\n\r\n const upload = this.getUpload(file);\r\n\r\n /**\r\n * editingMetadata is set by the EditUploadView.\r\n * If it's set, we wait till the user is done editing the metadata before\r\n * we post the data\r\n */\r\n if (upload.get('editingMetadata')) {\r\n this.listenToOnce(upload, 'change:editingMetadata', () => {\r\n this.completeUpload(upload, response);\r\n });\r\n } else {\r\n this.completeUpload(upload, response);\r\n }\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\nimport { UserAction, EntityType, WorkflowPhase, LocationContext, OperationDescriptor } from 'libs/analytics/interfaces';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\n\r\nclass UserManagerAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.USER_MANAGER;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'user-manager/students(/)': 'studentManager',\r\n 'user-manager/teachers(/)': 'teacherManager',\r\n 'user-manager/students/upload/review': 'studentUploadReview',\r\n 'user-manager/teachers/upload/review': 'teacherUploadReview'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newStudent',\r\n 'editStudent',\r\n 'newTeacher',\r\n 'editTeacher',\r\n 'removeUsers'\r\n ];\r\n }\r\n}\r\n\r\nexport class UserManagerApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'User Manager Application';\r\n }\r\n\r\n public static get router(): any {\r\n return UserManagerAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.USER_MANAGER;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public studentManager(queryParams?: HashObject): void {\r\n import('apps/user-manager/views/school-student-manager/SchoolStudentManagerView')\r\n .then(({ SchoolStudentManagerView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <SchoolStudentManagerView queryParams={queryParams} />\r\n );\r\n });\r\n }\r\n\r\n public teacherManager(queryParams?: HashObject): void {\r\n import('apps/user-manager/views/school-teacher-manager/SchoolTeacherManagerView')\r\n .then(({ SchoolTeacherManagerView }) => {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <SchoolTeacherManagerView queryParams={queryParams} />\r\n );\r\n });\r\n }\r\n\r\n public studentUploadReview(): void {\r\n import('apps/user-manager/views/student-upload-review/StudentUploadReviewView')\r\n .then(({ StudentUploadReviewView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.User,\r\n location: LocationContext.StudentManager,\r\n actionType: UserAction.Create\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <StudentUploadReviewView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public teacherUploadReview(): void {\r\n import('apps/user-manager/views/teacher-upload-review/TeacherUploadReviewView')\r\n .then(({ TeacherUploadReviewView }) => {\r\n const analyticsOptions = {\r\n entity: EntityType.User,\r\n location: LocationContext.TeacherManager,\r\n actionType: UserAction.Create\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <TeacherUploadReviewView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public newStudent(): void {\r\n import('apps/user-manager/views/create-student/CreateStudentView')\r\n .then(({ CreateStudentView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Create,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n descriptor: OperationDescriptor.Single,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CreateStudentView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public editStudent(id: string): void {\r\n import('apps/user-manager/views/edit-student/EditStudentView')\r\n .then(({ EditStudentView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Edit,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditStudentView id={id} analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public newTeacher(): void {\r\n import('apps/user-manager/views/create-teacher/CreateTeacherView')\r\n .then(({ CreateTeacherView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Create,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n descriptor: OperationDescriptor.Single,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CreateTeacherView analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public editTeacher(id: string): void {\r\n import('apps/user-manager/views/edit-teacher/EditTeacherView')\r\n .then(({ EditTeacherView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Edit,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditTeacherView id={id} analyticsOptions={analyticsOptions} closePopup={() => this.layout.closePopup()} />\r\n );\r\n });\r\n }\r\n\r\n public removeUsers(params: HashObject): void {\r\n const { userIds = [], userType } = params;\r\n\r\n import('apps/user-manager/views/remove-user/RemoveUserView')\r\n .then(({ RemoveUserView }) => {\r\n const analyticsOptions = {\r\n actionType: UserAction.Delete,\r\n entity: EntityType.User,\r\n workflowPhase: WorkflowPhase.Complete,\r\n descriptor: userIds.length === 1 ? OperationDescriptor.Single : OperationDescriptor.Bulk,\r\n location: LocationContext.Popup\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveUserView\r\n userIds={userIds}\r\n userType={userType}\r\n closePopup={() => this.layout.closePopup()}\r\n analyticsOptions={analyticsOptions}\r\n />\r\n );\r\n });\r\n }\r\n}","import React from 'react';\r\n\r\nimport styles from './avatar.scss';\r\n\r\ninterface AvatarProps {\r\n imageUrl: string;\r\n}\r\n\r\nexport function Avatar({ imageUrl }: AvatarProps): JSX.Element {\r\n return (\r\n <span className={styles.avatar} style={{ backgroundImage: `url('${imageUrl}')` }}>\r\n &nbsp;\r\n </span>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"cv--avatar--3RyZE\"};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { useViewModel } from 'libs/common/react/hooks/useViewModel';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { Video, Series } from 'libs/shared/interfaces';\r\nimport { SvgContainer } 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\nimport { SeriesLink } from 'libs/shared/components/series-link/SeriesLink';\r\n\r\nimport { WebPlayer } from 'shared/components/web-player/WebPlayer';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { useInitPlayerContext } from 'shared/hooks/useInitPlayerContext';\r\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\r\n\r\nimport styles from './floating-player.scss';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { LocationContext, EntityType, UserAction, WorkflowPhase, ClickDescriptor } from 'libs/analytics/interfaces';\r\n\r\nfunction getSeriesAppLink(series: Series): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n };\r\n}\r\n\r\nfunction getVideoAppLink(video: Video): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.id, TextHelper.slugify(video.name) ]\r\n };\r\n}\r\n\r\ninterface FloatingPlayerTitleProps {\r\n video: Video;\r\n}\r\n\r\nfunction FloatingPlayerTitle(props: FloatingPlayerTitleProps): JSX.Element {\r\n const { video } = props;\r\n\r\n return (\r\n <h2 className='mb-0 h6'>\r\n {!!video.series && <SeriesLink video={video} appLink={getSeriesAppLink(video.series)} />}\r\n <AppLink appLink={getVideoAppLink(video)}>\r\n {video.name}\r\n </AppLink>\r\n </h2>\r\n );\r\n}\r\n\r\nexport function FloatingPlayer(): React.ReactElement {\r\n useInitPlayerContext();\r\n\r\n const [ playerData, setPlayerData ] = useViewModel(ViewModelKeys.WEB_PLAYER_DATA);\r\n function onClickClose(): void {\r\n AnalyticsHelper.logUserAction({\r\n id: playerData.video.id\r\n }, {\r\n location: LocationContext.FloatingPlayer,\r\n entity: EntityType.Video,\r\n actionType: UserAction.Click,\r\n descriptor: ClickDescriptor.Close\r\n });\r\n\r\n setPlayerData('video', null);\r\n }\r\n\r\n function onClickOpenVideo(): void {\r\n AnalyticsHelper.logUserAction({\r\n id: playerData.video.id\r\n }, {\r\n location: LocationContext.FloatingPlayer,\r\n entity: EntityType.Video,\r\n actionType: UserAction.Click,\r\n descriptor: ClickDescriptor.Open\r\n });\r\n }\r\n\r\n if (!playerData?.video)\r\n return <></>;\r\n\r\n let style = {};\r\n let className = styles.fixed;\r\n\r\n if (playerData.viewportPosition) {\r\n className = styles.inline;\r\n style = playerData.viewportPosition;\r\n }\r\n\r\n /**\r\n * Add box shadow when player is floating\r\n */\r\n if (!playerData.viewportPosition)\r\n className += ' shadow';\r\n\r\n return (\r\n <div style={style} className={`${className}`}>\r\n <WebPlayer\r\n id={playerData.video.id}\r\n webPlayerHost={playerData.webPlayerUrl}\r\n className={'embed-responsive-16by9'}\r\n key={playerData.video.id}\r\n />\r\n\r\n {!playerData.viewportPosition &&\r\n <div className='p-2 bg-white d-flex justify-content-between align-items-center'>\r\n <FloatingPlayerTitle video={playerData.video} />\r\n <span className={`${styles.buttons} flex-shrink-1`}>\r\n <span className={`cursor-pointer ml-1 float-right`} role='button' tabIndex={0} onClick={onClickClose}>\r\n <SvgContainer svgName={cvSvgLibrary.Close} />\r\n </span>\r\n <AppLink onClick={onClickOpenVideo} appLink={getVideoAppLink(playerData.video)}>\r\n {!playerData.isOnPlayPage && <SvgContainer\r\n svgName={cvSvgLibrary.NewWindow}\r\n className={`${styles.flippedIcon} d-inline-block svg-container float-right`} />}\r\n </AppLink>\r\n </span>\r\n </div>}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fixed\":\"cv--fixed--3C4_W\",\"inline\":\"cv--inline--2voRI\",\"closeSvg\":\"cv--closeSvg--2RiDj\",\"buttons\":\"cv--buttons--ZbN3s\",\"flippedIcon\":\"cv--flippedIcon--3nkTw\"};","import * as React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nimport { CurrentUser } from 'libs/shared/interfaces';\r\nimport { Text, LanguageNamespaceContext } from 'libs/shared/components/text/Text';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { Avatar } from 'shared/components/avatar/Avatar';\r\n\r\nimport styles from './user-options.scss';\r\n\r\ninterface UserOptionsProps {\r\n user: CurrentUser;\r\n}\r\n\r\n/**\r\n * TODO: Implement user options properly;\r\n */\r\nexport const UserOptions = React.memo(function(props: UserOptionsProps): React.ReactElement {\r\n const { user } = props;\r\n\r\n if (!user)\r\n return <Button variant={'primary'} className='mx-2 px-2'>Log in</Button>;\r\n\r\n const { avatar, displayName, customerName } = user;\r\n\r\n /**\r\n * We're not using react-bootstrap dropdown here because we need a custom toggle\r\n * and it doesn't seem like it's worth the hassle https://react-bootstrap.github.io/components/dropdowns/\r\n */\r\n return (\r\n <LanguageNamespaceContext.Provider value='shared.userOptions'>\r\n <div className='cursor-pointer mx-2 px-2 position-relative' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\r\n <Avatar imageUrl={avatar} />\r\n <nav className={`dropdown-menu dropdown-arrow dropdown-menu-right ${styles.dropdownMenu}`}>\r\n <div className='dropdown-item'>\r\n <div className='m-0'><strong>{displayName}</strong></div>\r\n <div className='m-0 text-muted'>{customerName}</div>\r\n </div>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'myProfile'} />\r\n </AppLink>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'myPreferences'} />\r\n </AppLink>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'signOut'} />\r\n </AppLink>\r\n </nav>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}, (prevProps, nextProps): boolean => {\r\n return prevProps.user?.id === nextProps.user?.id\r\n && prevProps.user?.avatar === nextProps.user?.avatar\r\n && prevProps.user?.displayName === nextProps.user?.displayName\r\n && prevProps.user?.customerName === nextProps.user?.customerName;\r\n});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"iconPlaceholder\":\"cv--iconPlaceholder--2hr_4\"};","import * as React from 'react';\r\n\r\ninterface WebPlayerProps {\r\n className?: string;\r\n webPlayerHost: string;\r\n id: string;\r\n}\r\n\r\nexport function WebPlayer(props: WebPlayerProps): React.ReactElement {\r\n const url = `${props.webPlayerHost}home/ev?vid=${props.id}`;\r\n\r\n return (\r\n <div className={`embed-responsive ${props.className ? props.className : ''}`}>\r\n <iframe\r\n src={url}\r\n className='embed-responsive-item'\r\n allowFullScreen\r\n allow='autoplay; fullscreen'/>\r\n </div>\r\n );\r\n}","export const DefaultAlertHeading = {\r\n Success: 'Success! 🙌',\r\n Warning: 'Whoops...',\r\n Fail: 'Oops...',\r\n Info: 'FYI'\r\n};","export const ImageUrls = {\r\n EmptyStates: {\r\n VIDEOS: ''\r\n },\r\n\r\n ErrorViews: {\r\n DEFAULT: ''\r\n }\r\n};","export const Actions = {\r\n Default: {\r\n ERROR: 'error',\r\n NOT_FOUND: 'not:found',\r\n DEV_ERROR: 'dev:error',\r\n DIALOG_ERROR: 'dialog:error',\r\n\r\n SERIES: 'series',\r\n PLAY_VIDEO: 'play:video',\r\n FAVOURITE_VIDEOS: 'favourite:videos',\r\n EDIT_VIDEO: 'edit:video',\r\n EDIT_UPLOAD: 'edit:upload',\r\n SHARE: 'share',\r\n WATCH_HISTORY: 'watch:history'\r\n },\r\n\r\n Playlists: {\r\n HOME: 'index',\r\n PLAYLIST: 'playlist',\r\n NEW_PLAYLIST: 'new:playlist',\r\n EDIT_PLAYLIST: 'edit:playlist',\r\n DELETE_PLAYLIST: 'delete:playlist',\r\n ADD_TO_PLAYLIST: 'add:to:playlist',\r\n REMOVE_VIDEO_FROM_PLAYLIST: 'remove:video:from:playlist'\r\n },\r\n\r\n Dashboard: {\r\n HOME: 'index',\r\n DASHBOARD: 'dashboard'\r\n },\r\n\r\n Subjects: {\r\n CLASSIFICATION: 'classification',\r\n CLASSIFICATION_SERIES: 'classification:series',\r\n PREFERENCES: 'preferences'\r\n },\r\n\r\n Notifications: {\r\n HOME: 'index'\r\n },\r\n\r\n Search: {\r\n HOME: 'index'\r\n },\r\n\r\n ContentUpdates: {\r\n CONTENT_UPDATES: 'content:updates',\r\n CLASSIFICATION_UPDATE: 'classification:update'\r\n },\r\n\r\n UserManager: {\r\n STUDENTS: 'student:manager',\r\n TEACHERS: 'teacher:manager',\r\n REMOVE_USERS: 'remove:users',\r\n NEW_STUDENT: 'new:student',\r\n EDIT_STUDENT: 'edit:student',\r\n NEW_TEACHER: 'new:teacher',\r\n EDIT_TEACHER: 'edit:teacher',\r\n STUDENT_UPLOAD_REVIEW: 'student:upload:review',\r\n TEACHER_UPLOAD_REVIEW: 'teacher:upload:review'\r\n },\r\n\r\n Upload: {\r\n MY_UPLOADS: 'my:uploads',\r\n EDIT_UPLOAD: 'edit:upload',\r\n CANCEL_UPLOAD: 'cancel:upload'\r\n },\r\n\r\n Classrooms: {\r\n HOME: 'index',\r\n CLASSROOM: 'classroom',\r\n NEW_CLASSROOM: 'new:classroom',\r\n EDIT_CLASSROOM: 'edit:classroom',\r\n DELETE_CLASSROOM: 'delete:classroom',\r\n\r\n MANAGE_CLASSROOM: 'manage:classroom',\r\n ADD_STUDENTS: 'add:students',\r\n REMOVE_STUDENTS: 'remove:students',\r\n\r\n NEW_GROUP: 'new:group',\r\n EDIT_GROUP: 'edit:group',\r\n DELETE_GROUP: 'delete:group'\r\n },\r\n\r\n Settings: {\r\n HOME: 'index'\r\n }\r\n};","export const LayoutRegions = {\r\n CONTENT: 'content',\r\n POPUP: 'popup',\r\n ALERT: 'alert'\r\n};","export const Layouts = {\r\n TEACHER_LAYOUT: 'TeacherLayout',\r\n EMBED_LAYOUT: 'EmbedLayout'\r\n};","export const AppChannels = {\r\n DEFAULT: 'default:application',\r\n PLAYLISTS: 'playlists:application',\r\n DASHBOARD: 'dashboard:application',\r\n SUBJECT: 'subject:application',\r\n EMBED: 'embed:application',\r\n NOTIFICATIONS: 'notifications:application',\r\n SEARCH: 'search:application',\r\n CONTENT_UPDATES: 'content:updates:application',\r\n USER_MANAGER: 'user:manager:application',\r\n UPLOAD: 'upload:application',\r\n CLASSROOMS: 'classrooms:application',\r\n SETTINGS: 'settings:application'\r\n};\r\n\r\nexport const ServiceChannels = {\r\n COMBINE_UPLOADS: 'combine:uploads:service'\r\n};","export const ViewModelKeys = {\r\n SEARCH_BAR_LOCATION: 'search:bar:location',\r\n WEB_PLAYER_DATA: 'web:player:data',\r\n BULK_TEACHER_UPLOAD: 'bulk:teacher:upload',\r\n BULK_STUDENT_UPLOAD: 'bulk:student:upload'\r\n};","import { SharedDataServices, SharedServices } from 'libs/shared/constants/SharedServices';\r\n\r\nexport const Services = {\r\n ...SharedServices,\r\n CombineUploads: 'combine:uploads:service'\r\n};\r\n\r\nexport const DataServices = {\r\n ...SharedDataServices\r\n};","import { SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\n\r\nconst ObjectWithStatements = {\r\n VIDEO: 'series,season,rating,producers,glance,distributors,resources,tags,productionCompanies,directors,links,thumbnail,interactives[owner[customers[organisation]]],clips',\r\n PLAYLIST: 'cover,banner,owner,videos[thumbnail,count()]{orderby:orderindex,limit:1}'\r\n};\r\n\r\nconst CollectionWithStatements = {\r\n VIDEO_COLLECTION: `thumbnail,tags,rating,series,season`,\r\n PLAYLIST_COLLECTION: 'videos[thumbnail,count()]{orderby:orderindex,limit:1},thumbnail,cover,subjectpresentationaudiences'\r\n};\r\n\r\nexport const WithStatements = {\r\n ...ObjectWithStatements,\r\n ...CollectionWithStatements\r\n};\r\n\r\nexport const WithStatementHelper = {\r\n ClassificationWithFollowers(currentUserId: string): string {\r\n return `${SharedWithStatements.CLASSIFICATION},followers{id:${currentUserId}}`;\r\n }\r\n};","import { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nconst lang = 'shared.silentNotFound';\r\n\r\nexport class NotFoundError extends Core.SilentError {\r\n constructor() {\r\n /**\r\n * TODO: Set up language service properly\r\n */\r\n // super(LanguageService.getPhrase(lang, 'title'));\r\n super('Not Found');\r\n }\r\n\r\n public get name(): string {\r\n return 'NotFoundError';\r\n }\r\n}","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Video, UpdateVideoRequest } from 'libs/shared/interfaces';\r\nimport { MasterType } from 'libs/shared/enums/MasterType';\r\nimport { WithStatements } from 'shared/constants/WithStatements';\r\n\r\nconst endpoints = {\r\n video: (id: string) => `/api/domain/v2/objects/${id}?query=${WithStatements.VIDEO}`,\r\n\r\n // workspace: () => `api/domain/v2/me/workspace?query=${WithStatements.WORKSPACE_VIDEOS}${addCursor(cursor)}`,\r\n workspace: (id: string, cursor: string) => {\r\n const query = `{orderbydesc:datecreated}${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`;\r\n return `api/domain/v2/objects/${id}/videos?query=${query}`;\r\n },\r\n\r\n getVideosById: (ids: string[]) => {\r\n const params = ids.map(i => `id=${i}`);\r\n return `/api/domain/v2/objects?${params.join('&')}`;\r\n }\r\n};\r\n\r\nexport const VideoRequests = {\r\n video(id: string): Flight.Request {\r\n return {\r\n url: endpoints.video(id),\r\n key: `videos:${id}`\r\n };\r\n },\r\n\r\n workspace(id: string, cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.workspace(id, cursor),\r\n key: `workspace:${id}:${cursor}`\r\n };\r\n },\r\n\r\n videos(ids: string[], success?: (videos: Video[]) => void): Flight.Request {\r\n return {\r\n url: endpoints.getVideosById(ids),\r\n key: `videos:by:id:${ids.join(',')}`,\r\n success\r\n };\r\n },\r\n\r\n updateVideo(data: UpdateVideoRequest, success?: () => void): Flight.Request {\r\n return {\r\n key: `update:video:${data.id}`,\r\n url: `/api/domain/v2/objects/${data.id}`,\r\n type: HttpVerbs.PUT,\r\n data,\r\n success\r\n };\r\n },\r\n\r\n /**\r\n * This is simply an example to show the prototype for useVideoMixin\r\n * eventually there will be endpoints in domain that let us fetch members\r\n * without fetching the objects properties, so we can fetch stuff like\r\n * hasInteractives and isFavourited as subsequent calls\r\n */\r\n videoRatings(ids: string[]): Flight.Request {\r\n const params = ids.map(i => `id=${i}`);\r\n return {\r\n url: `/api/domain/v2/objects?query=rating&${params.join('&')}`,\r\n key: `video:ratings:by:id:${ids.join(',')}`\r\n };\r\n },\r\n\r\n getRestrictions(videoIds: string[]): Flight.Request {\r\n const sortedIds = videoIds.slice().sort();\r\n\r\n return {\r\n url: '/api/domain/v1/restrictedobjects'\r\n + `?objectTypeId=${MasterType.Video}${sortedIds.map(id => `&objectId=${id}`).join('')}`,\r\n key: `restrictions:${sortedIds.join(',')}`,\r\n normalizeOptions: {\r\n namespace: 'domain',\r\n idAttribute: 'objectId'\r\n }\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","import React from 'react';\r\n\r\nimport { useViewModel } from 'libs/common/react/hooks/useViewModel';\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\r\nimport { Config, Video } from 'libs/shared/interfaces';\r\n\r\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\r\n\r\nexport interface PlayerPosition {\r\n top: number;\r\n left: number;\r\n width: number;\r\n}\r\n\r\nexport interface PlayerContext {\r\n webPlayerUrl: string;\r\n\r\n /**\r\n * Video that the player is currently plaing\r\n */\r\n video: Video;\r\n\r\n /**\r\n * Position of the video player when we're on a play page\r\n * no position means we're floating on the bottom right of the screen\r\n */\r\n viewportPosition: PlayerPosition;\r\n\r\n /**\r\n * Tells the floating player to not render when it has\r\n * as video but no position. This prevents\r\n * a bug where the floating player flashes briefly when the\r\n * PlayView has set a video but not yet set a position\r\n */\r\n isOnPlayPage: boolean;\r\n}\r\n\r\nexport function useInitPlayerContext(): void {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n\r\n const [ , setPlayerData ] = useViewModel<PlayerContext>(ViewModelKeys.WEB_PLAYER_DATA, {\r\n webPlayerUrl: config.data?.webPlayerUrl || '',\r\n video: null,\r\n viewportPosition: null,\r\n isOnPlayPage: false\r\n });\r\n\r\n React.useEffect(() => {\r\n if (!config.data?.webPlayerUrl)\r\n return;\r\n\r\n setPlayerData('webPlayerUrl', config.data.webPlayerUrl);\r\n }, [config.data?.webPlayerUrl]);\r\n}","import React from 'react';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\n\r\nimport { DialogHelper, DialogButton } from 'shared/utils/DialogHelper';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('shared.hooks');\r\n\r\nexport interface NavLockOptions {\r\n id?: string;\r\n title?: string;\r\n text?: string;\r\n allowAppLinks?: boolean;\r\n onConfirmUnlock?: () => void;\r\n}\r\n\r\nexport const useNavLock = () => {\r\n const [ locks, setLocks ] = React.useState<NavLockOptions[]>([]);\r\n\r\n const shell = Radio.channel(CommonChannels.SHELL);\r\n\r\n React.useEffect(() => {\r\n if (locks.find(lockObj => !lockObj.allowAppLinks))\r\n shell.on(Core.EventNames.NAV_IS_LOCKED, onNavigate);\r\n\r\n if (locks.length)\r\n window.addEventListener('beforeunload', onBeforeUnload);\r\n\r\n return () => {\r\n shell.off(Core.EventNames.NAV_IS_LOCKED, onNavigate);\r\n window.removeEventListener('beforeunload', onBeforeUnload);\r\n };\r\n }, [locks]);\r\n\r\n // This hook is specific to setting up navlock listeners for our video upload backbone events.\r\n React.useEffect(() => {\r\n function setupVideoUploadNavLock(): void {\r\n lock({\r\n id: 'upload',\r\n title: getPhrase('uploadLockTitle'),\r\n text: getPhrase('uploadLockBody'),\r\n allowAppLinks: true\r\n });\r\n }\r\n\r\n const uploadChannel = Radio.channel(SharedServiceChannels.VIDEO_UPLOAD);\r\n uploadChannel.on(UploadEventNames.FILES_ADDED, setupVideoUploadNavLock);\r\n uploadChannel.on(UploadEventNames.UNLOCK_NAV, unlock);\r\n\r\n return () => {\r\n uploadChannel.off(UploadEventNames.FILES_ADDED, setupVideoUploadNavLock);\r\n uploadChannel.off(UploadEventNames.UNLOCK_NAV, unlock);\r\n };\r\n }, []);\r\n\r\n function lock(lockOptions: NavLockOptions = {}): void {\r\n if (locks.find(lockObj => lockObj.id === lockOptions.id))\r\n return;\r\n\r\n if (!lockOptions.allowAppLinks)\r\n shell.trigger(Core.EventNames.LOCK_NAV);\r\n\r\n setLocks([ ...locks, lockOptions ]);\r\n }\r\n\r\n function unlock(id: string): void {\r\n const newLocks = locks.filter(lockObj => lockObj.id !== id);\r\n\r\n if (newLocks.length === 0 || !newLocks.find(lockObj => !lockObj.allowAppLinks))\r\n shell.trigger(Core.EventNames.UNLOCK_NAV);\r\n\r\n setLocks(newLocks);\r\n }\r\n\r\n function onNavigate(appLink: Core.AppLink): void {\r\n if (!locks.length)\r\n return;\r\n\r\n const lockOptions = locks.find(lockObj => !lockObj.allowAppLinks);\r\n\r\n const buttons: DialogButton[] = [\r\n {\r\n buttonText: getPhrase('cancel'),\r\n className: 'btn btn-secondary'\r\n },\r\n {\r\n buttonText: getPhrase('discard'),\r\n className: 'btn btn-danger',\r\n onClick: lockOptions.onConfirmUnlock ? lockOptions.onConfirmUnlock : () => {},\r\n success: true\r\n }\r\n ];\r\n\r\n DialogHelper.render(<p>{lockOptions.text}</p>, {\r\n title: lockOptions.title,\r\n buttons,\r\n success: () => onClickDiscard(appLink)\r\n });\r\n }\r\n\r\n function onBeforeUnload(e: any): any {\r\n let lockOptions = locks.find(lockObj => lockObj.allowAppLinks);\r\n if (!lockOptions)\r\n lockOptions = ArrayHelper.first(locks);\r\n\r\n e.returnValue = lockOptions.text;\r\n return lockOptions.text;\r\n }\r\n\r\n function onClickDiscard(appLink: Core.AppLink): void {\r\n shell.trigger(Core.EventNames.NAV_UNLOCKED_BY_USER);\r\n\r\n locks.forEach(lockObj => {\r\n if (lockObj.allowAppLinks)\r\n return;\r\n\r\n unlock(lockObj.id);\r\n });\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n }\r\n\r\n return { lock, unlock };\r\n};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\n\r\nexport interface EmbedLayoutComponentProps {\r\n store: Store;\r\n contentChild?: React.ReactNode;\r\n}\r\n\r\nfunction EmbedLayoutComponent(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { contentChild } = props;\r\n\r\n return (\r\n <>\r\n {contentChild}\r\n </>\r\n );\r\n}\r\n\r\nfunction WrapLayoutWithProviders(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { store } = props;\r\n\r\n return (\r\n <Provider store={store}>\r\n <EmbedLayoutComponent {...props} />\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as EmbedLayoutComponent };","import * as React from 'react';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ReactLayoutView } from 'libs/common/react/core/ReactLayoutView';\r\n\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\n\r\nimport { EmbedLayoutComponent, EmbedLayoutComponentProps } from './EmbedLayoutComponent';\r\nimport EmbedLayoutTemplate from './EmbedLayout.hbs';\r\n\r\n\r\nexport class EmbedLayoutView extends ReactLayoutView {\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'EmbedLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return EmbedLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(): string {\r\n return Layouts.EMBED_LAYOUT;\r\n }\r\n\r\n public regions(): HashObject {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): EmbedLayoutComponentProps {\r\n return {\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n store: this.options.store\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <EmbedLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region position-relative\\\"></div>\\r\\n<div id=\\\"dialog-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\nimport { useDropzone } from 'react-dropzone';\r\n\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useViewModel } from 'libs/common/react/hooks/useViewModel';\r\n\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { InteractionType, EntityType, WorkflowPhase, UserAction, LocationContext } from 'libs/analytics/interfaces';\r\n\r\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\nimport { BaseVideoUploadService } from 'libs/shared/apps/upload/services/UploadService';\r\n\r\nimport { HeaderView } from 'shared/views/header/HeaderView';\r\nimport { LeftNavView, LeftNavState } from 'shared/views/left-nav/LeftNavView';\r\nimport { FloatingPlayer } from 'shared/components/floating-player/FloatingPlayer';\r\nimport { Services } from 'shared/constants/Services';\r\nimport { useNavLock } from 'shared/hooks/useNavLock';\r\nimport { PlayerContext } from 'shared/hooks/useInitPlayerContext';\r\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\r\n\r\nimport { DragMask } from './drag-mask/DragMask';\r\n\r\nimport styles from './teacher-layout.scss';\r\n\r\ninterface DerivedNavState {\r\n state: LeftNavState;\r\n showMask: boolean;\r\n contentClass: string;\r\n}\r\n\r\nfunction getDerivedNavState(\r\n collapse: boolean, isMobile: boolean, isIPad: boolean\r\n): DerivedNavState {\r\n if (isMobile) {\r\n return {\r\n state: collapse ? LeftNavState.Hidden : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.hiddenNavContent\r\n };\r\n }\r\n\r\n if (isIPad) {\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.collapsedNavContent\r\n };\r\n }\r\n\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: false,\r\n contentClass: collapse ? styles.collapsedNavContent : styles.openNavContent\r\n };\r\n}\r\n\r\nexport interface TeacherLayoutComponentProps {\r\n showNav: boolean;\r\n\r\n contentChild?: React.ReactNode;\r\n popupChild?: React.ReactNode;\r\n alertChild?: React.ReactNode;\r\n\r\n store: Store;\r\n}\r\n\r\nconst TeacherLayoutComponent = (props: TeacherLayoutComponentProps): React.ReactElement => {\r\n const { showNav, contentChild, popupChild, alertChild } = props;\r\n\r\n const [ collapse, setCollapse ] = React.useState(false);\r\n\r\n // This is executed at the beginning to set up the backbone radio event listeners\r\n useNavLock();\r\n\r\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\r\n const isIPad = useMediaQuery(MediaQueryStrings.SM);\r\n const isLargeDesktop = useMediaQuery(MediaQueryStrings.XXL);\r\n\r\n const [playerData] = useViewModel<PlayerContext>(ViewModelKeys.WEB_PLAYER_DATA);\r\n\r\n const toggleLeftNav = () => {\r\n setCollapse(!collapse);\r\n };\r\n\r\n React.useEffect(() => {\r\n setCollapse(!isLargeDesktop);\r\n }, [isLargeDesktop]);\r\n\r\n const navState = getDerivedNavState(collapse, isMobile, isIPad);\r\n\r\n const videoUploadService = useService<BaseVideoUploadService>(Services.VideoUpload);\r\n const onDrop = React.useCallback((acceptedFiles: File[]) => {\r\n videoUploadService.addFiles(acceptedFiles, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Upload,\r\n workflowPhase: WorkflowPhase.Start,\r\n descriptor: AnalyticsHelper.mapInteractionType(InteractionType.DragDrop),\r\n location: LocationContext.VideoUpload\r\n });\r\n }, []);\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n noClick: true,\r\n noKeyboard: true\r\n });\r\n\r\n // Right align content in the alert-player container.\r\n let alertPlayerContainerClassName = 'd-flex flex-column align-items-end';\r\n let alertContainerClassName = '';\r\n\r\n /**\r\n * If playerViewportPosition is truthy, the player isn't floating,\r\n * so we only apply the fixed position styling to the alert container.\r\n * \r\n * Else if playerViewportPosition is falsy, we fix the entire\r\n * alert-player container.\r\n */\r\n if (playerData?.viewportPosition)\r\n alertContainerClassName = styles.fixedBottomRightContainer;\r\n else\r\n alertPlayerContainerClassName += ` ${styles.fixedBottomRightContainer}`;\r\n\r\n return (\r\n <div {...getRootProps()}>\r\n <HeaderView toggleLeftNav={toggleLeftNav} showLeftNavToggle={showNav} />\r\n {showNav && <LeftNavView navState={navState.state}/>}\r\n <div className={`${styles.content} ${navState.contentClass}`}>\r\n <div className='container overflow-hidden-x'>\r\n {contentChild}\r\n </div>\r\n </div>\r\n {popupChild}\r\n {navState.showMask && <div className={`modal-backdrop show ${styles.mask}`}></div>}\r\n <div className={alertPlayerContainerClassName}>\r\n {!!alertChild && <div className={alertContainerClassName}>{alertChild}</div>}\r\n <FloatingPlayer />\r\n </div>\r\n {isDragActive && <DragMask />}\r\n <input {...getInputProps()} />\r\n </div>\r\n );\r\n};\r\n\r\nfunction WrapLayoutWithProviders(props: TeacherLayoutComponentProps): React.ReactElement {\r\n return (\r\n <Provider store={props.store}>\r\n <TeacherLayoutComponent {...props} />\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as TeacherLayoutComponent };","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from 'libs/common/react/core/ReactLayoutView';\r\n\r\nimport { LayoutRegions } from 'shared/constants/LiteLayoutRegions';\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\n\r\nimport { TeacherLayoutComponent, TeacherLayoutComponentProps } from './TeacherLayoutComponent';\r\nimport TeacherLayoutTemplate from './TeacherLayout.hbs';\r\n\r\nexport interface TeacherLayoutViewOptions extends ReactLayoutViewOptions {\r\n showNav: boolean;\r\n}\r\n\r\nexport class TeacherLayoutView extends ReactLayoutView {\r\n protected options: TeacherLayoutViewOptions;\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n constructor(options?: TeacherLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'TeacherLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return TeacherLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(options: TeacherLayoutViewOptions): string {\r\n return `${Layouts.TEACHER_LAYOUT}:${options.showNav}`;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): TeacherLayoutComponentProps {\r\n return {\r\n showNav: this.options.showNav,\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n popupChild: this.childComponents[LayoutRegions.POPUP],\r\n alertChild: this.childComponents[LayoutRegions.ALERT],\r\n store: this.options.store\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <TeacherLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nimport styles from './drag-mask.scss';\r\n\r\nexport function DragMask(): React.ReactElement {\r\n return (\r\n <>\r\n <div className={styles.dropMask}></div>\r\n <div className={styles.dropContent}>\r\n <div className={styles.border}>\r\n <h1><Text namespace={'shared.dragMask'} phrase={'message'} /></h1>\r\n </div>\r\n </div>\r\n <div className={styles.dropArea}></div>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropMask\":\"cv--dropMask--3bFev\",\"dropContent\":\"cv--dropContent--2_7SU\",\"dropArea\":\"cv--dropArea--3oOzB\",\"border\":\"cv--border--1IoKS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--1SX2l\",\"collapsedNavContent\":\"cv--collapsedNavContent--3LJFz\",\"openNavContent\":\"cv--openNavContent--34Pt4\",\"hiddenNavContent\":\"cv--hiddenNavContent--1gZ0J\",\"mask\":\"cv--mask--mE2Dq\",\"fixedBottomRightContainer\":\"cv--fixedBottomRightContainer--Sgmex\"};","import { Store } from 'redux';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseLibraryDataService, Folder, LibraryAPIResponse } from 'libs/shared/interfaces';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\n\r\nconst requests = {\r\n getLibraries: (success?: (data: LibraryAPIResponse[]) => void): Flight.Request => {\r\n return {\r\n url: '/api/domain/v2/me/libraries?type=customlibrary&type=unpublishedcustomlibrary',\r\n key: 'libraries',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getFolder: (id: string, success?: (data: Core.Model) => void): Flight.Request => {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.FOLDER}`,\r\n key: `folder:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightLibraryDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightLibraryDataService implements BaseLibraryDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightLibraryDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Library;\r\n }\r\n\r\n public get channelName(): string {\r\n return 'library:data:service';\r\n }\r\n\r\n public getLibraries(callback?: (data: Core.Collection) => void): Core.Collection {\r\n const request = requests.getLibraries((libraries: LibraryAPIResponse[]) => {\r\n Radio.channel(this.channelName).trigger('libraries:sync', libraries);\r\n\r\n callback && callback(new Core.Collection(libraries));\r\n });\r\n\r\n const flightResponse = Flight.getResponse<LibraryAPIResponse[]>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Collection(flightResponse.data.map(res => res.data));\r\n }\r\n\r\n public getFolder(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getFolder(id, (folder: Folder) => callback && callback(new Core.Model(folder)));\r\n const flightResponse = Flight.getResponse<Folder>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Store } from 'redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseSeriesDataService, Series } from 'libs/shared/interfaces';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { SharedDataChannels } from 'libs/shared/constants/RadioChannels';\r\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\n\r\nconst requests = {\r\n getOne(id: string, success?: (data: Series) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.SERIES}`,\r\n key: `series:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightSeriesDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightSeriesDataService implements BaseSeriesDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightSeriesDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Series;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.SERIES;\r\n }\r\n\r\n public getSeries(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getOne(id, (series: Series) => callback && callback(new Core.Model(series)));\r\n const flightResponse = Flight.getResponse<Series>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { BaseVideoDataService, Video } from 'libs/shared/interfaces';\r\nimport { Store } from 'redux';\r\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\r\nimport { DataServices } from 'shared/constants/Services';\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightVideoDataService implements BaseVideoDataService<Core.Collection> {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.Video;\r\n }\r\n\r\n public clearVideoCache(): void {\r\n this.store.dispatch<Flight.InvalidateAction>({\r\n type: Flight.Actions.INVALIDATE,\r\n keys: ['video'],\r\n request: null\r\n });\r\n }\r\n public getVideos(\r\n ids: string[],\r\n callback?: (videos: Core.Collection<Core.Model>) => void\r\n ): Core.Collection {\r\n const wrappedCallback = (videos: Video[]) => {\r\n if (!FunctionHelper.isFunction(callback))\r\n return;\r\n\r\n callback(new Core.Collection(videos));\r\n };\r\n const request = VideoRequests.videos(ids, wrappedCallback);\r\n const response = Flight.getResponse<Video[]>(this.store.getState(), request.key);\r\n\r\n if (response.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n else\r\n wrappedCallback(response.data);\r\n return new Core.Collection(response.data);\r\n }\r\n}","import React from 'react';\r\nimport { render, unmountComponentAtNode } from 'react-dom';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { PopupButton, PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nconst namespace = 'shared.utils';\r\n\r\nexport interface DialogButton extends Omit<PopupButton, 'onClick'> {\r\n onClick?: () => void;\r\n success?: boolean;\r\n}\r\n\r\nfunction getDefaultButtons(): DialogButton[] {\r\n return [ DialogHelper.getConfirmDefault(), DialogHelper.getCancelDefault() ];\r\n}\r\n\r\ninterface DialogOptions {\r\n title: string;\r\n buttons?: DialogButton[];\r\n success?: () => void;\r\n cancel?: () => void;\r\n}\r\n\r\nexport const DialogHelper = {\r\n render: (children: React.SFCElement<any> | React.SFCElement<any>[], options: DialogOptions) => {\r\n const dialogRegion = document.getElementById('dialog-region');\r\n\r\n function onConfirm(): void {\r\n FunctionHelper.isFunction(options.success) && options.success();\r\n unmountComponentAtNode(dialogRegion);\r\n }\r\n\r\n function onCancel(): void {\r\n FunctionHelper.isFunction(options.cancel) && options.cancel();\r\n unmountComponentAtNode(dialogRegion);\r\n }\r\n\r\n const buttons = options.buttons || getDefaultButtons();\r\n\r\n const popupButtons: PopupButton[] = buttons.map(button => {\r\n const isSuccessButton = button.success;\r\n\r\n function onClick(): void {\r\n if (isSuccessButton)\r\n onConfirm();\r\n\r\n onCancel();\r\n FunctionHelper.isFunction(button.onClick) && button.onClick();\r\n }\r\n\r\n delete button.success;\r\n\r\n return {\r\n ...button,\r\n onClick\r\n };\r\n });\r\n\r\n render((\r\n <Popup title={options.title} closePopup={onCancel}>\r\n {children}\r\n <PopupButtons buttons={popupButtons} />\r\n </Popup>\r\n ), dialogRegion);\r\n },\r\n\r\n getCancelDefault(): DialogButton {\r\n return {\r\n variant: 'light',\r\n buttonText: LanguageService.getPhrase(namespace, 'cancel')\r\n };\r\n },\r\n\r\n getConfirmDefault(): DialogButton {\r\n return {\r\n variant: 'dark',\r\n success: true,\r\n buttonText: LanguageService.getPhrase(namespace, 'confirm')\r\n };\r\n }\r\n};","import * as React from 'react';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\r\nimport { useViewModel } from 'libs/common/react/hooks/useViewModel';\r\n\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { NotificationHeaderView } from 'libs/shared/apps/notifications/views/header/NotificationHeaderView';\r\nimport { SearchBarView } from 'libs/shared/apps/search/views/search-bar/SearchBarView';\r\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\r\nimport { CurrentUser, Presentation } from 'libs/shared/interfaces';\r\nimport { Query } from 'libs/shared/apps/search/models/Query';\r\n\r\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\r\nimport { UserOptions } from 'shared/components/user-options/UserOptions';\r\nimport { UploadFileSelect } from 'apps/upload/components/upload-file-select/UploadFileSelect';\r\n\r\nimport styles from './header.scss';\r\n\r\nfunction ClickViewLogo(): React.ReactElement {\r\n return (\r\n <svg viewBox='0 0 434 71'>\r\n <g>\r\n <path fill='#000000' d='M114.44 56.57l3.5 3.5a32.87 32.87 0 0 1-25.16 11.26c-19.63 0-33.62-15.54-33.62-35.16C59.16 16.55 73.16 1 92.78 1a32.31 32.31 0 0 1 24.19 10.4l-3.6 3.3a27.32 27.32 0 0 0-20.59-8.74c-16.91 0-28.39 13.5-28.39 30.21s11.48 30.21 28.39 30.21a28.08 28.08 0 0 0 21.66-9.81zM126.64 1h4.55v70.22h-4.73L126.64 1zm17.3 10.6a3.7 3.7 0 1 1 0 7.4 3.7 3.7 0 0 1 0-7.4zm-2.41 15.07h4.81v44.56h-4.81V26.67zm48 33.15l3.33 3.15a21.8 21.8 0 0 1-17.31 8.61c-12.59 0-21.76-10-21.76-22.22 0-12.22 9.17-22.22 21.76-22.22a21.84 21.84 0 0 1 16.85 8l-3.43 3.06a17.15 17.15 0 0 0-13.42-6.3c-10.09 0-16.76 8.15-16.76 17.5s6.67 17.5 16.76 17.5a17.38 17.38 0 0 0 13.98-7.08zm14.99-9.33v20.74h-4.73V1.01h4.73v47.75l20.74-19.02h6.64l-21.56 19.84L234 71.23h-7.01l-22.47-20.74z'/>\r\n <path fill='#F8981D' d='M304.09 19.4a5.56 5.56 0 1 1 0-11.12 5.56 5.56 0 0 1 0 11.12zm-5.56 7.27h11.11v44.56h-11.11V26.67zm61.42 22.15c0 .81 0 2.42-.09 4h-31.75c.8 3.77 5.2 8.61 11.93 8.61a17.11 17.11 0 0 0 11.66-4.31l5.38 8.16a27.23 27.23 0 0 1-17 6.1c-12.92 0-22.88-9.87-22.88-22.34s9.06-22.33 21.35-22.33c11.62-.04 21.4 9.02 21.4 22.11zm-10.77-3.76c-.18-3.68-3.58-8.62-10.67-8.62-6.91 0-10.05 4.85-10.4 8.62h21.07zM385.92 71h-6.42l-19.64-44.37h13.97l9.16 23.98 9.72-23.98h8.31l9.63 23.98 9.16-23.98h13.97L414.24 71h-6.52l-10.85-23.7L385.92 71zm-120.22.35h-6L226.11 1.01h17.01l19.42 44.18 18.08-44.18h16.91L265.7 71.35zM0 1l41 35L0 71V1z'/>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n\r\ninterface HeaderViewProps {\r\n toggleLeftNav: () => void;\r\n showLeftNavToggle: boolean;\r\n}\r\n\r\nexport function HeaderView(props: HeaderViewProps): React.ReactElement {\r\n const userRequest = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser, { optimize: true });\r\n const user = userRequest.data;\r\n\r\n const presentation = Flight.useBasicFetch<Presentation>(ClassificationRequests.presentation());\r\n\r\n const [showSearch] = useViewModel<boolean>(ViewModelKeys.SEARCH_BAR_LOCATION, true);\r\n\r\n return (\r\n <nav className={`navbar navbar-expanded sticky-top ${styles.nav}`}>\r\n\r\n <div className='justify-content-start'>\r\n {props.showLeftNavToggle &&\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Handle}\r\n className={`${styles.hamburger} ml-2 mr-3`}\r\n onClick={props.toggleLeftNav}\r\n />}\r\n\r\n <a className={`navbar-brand text-hide align-top ${styles.logoContainer} d-inline-block'`} href='/'>\r\n <ClickViewLogo />\r\n </a>\r\n </div>\r\n\r\n {showSearch &&\r\n <div className='justify-content-center'>\r\n <BackboneViewWrapper\r\n className={`container ${styles.searchBarNavContainer}`}\r\n view={SearchBarView}\r\n options={{\r\n model: ViewModelService.get<Query>('search', { ctor: Query }),\r\n disableMask: true,\r\n presentationId: presentation.data?.id\r\n }}\r\n />\r\n </div>\r\n }\r\n\r\n <div className={`d-flex align-items-center justify-content-end pr-1 ${styles.actionButtons}`}>\r\n {\r\n !!user && <UploadFileSelect hideButtonText={showSearch}/>\r\n }\r\n <BackboneViewWrapper view={NotificationHeaderView} className='ml-2 pl-2' />\r\n\r\n <UserOptions user={user} />\r\n </div>\r\n </nav>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav\":\"cv--nav--3RLQ9\",\"logoContainer\":\"cv--logoContainer--UIlc9\",\"searchBar\":\"cv--searchBar--2E7RQ\",\"actionButtons\":\"cv--actionButtons--2HygL\",\"hamburger\":\"cv--hamburger--2BRko\",\"searchBarNavContainer\":\"cv--searchBarNavContainer--2bUnK\"};","import React from 'react';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nimport { LeftNavItem, isAppLinkActive } from './LeftNavItem';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\nconst namespace = 'shared.leftNav';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nconst appLinks: {[key: string]: Core.AppLink} = {\r\n discover: { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\r\n playlists: { application: AppChannels.PLAYLISTS, action: Actions.Playlists.HOME },\r\n myUploads: { application: AppChannels.DEFAULT, action: Actions.Upload.MY_UPLOADS },\r\n favouritedVideos: { application: AppChannels.DEFAULT, action: Actions.Default.FAVOURITE_VIDEOS },\r\n watchHistory: { application: AppChannels.DEFAULT, action: Actions.Default.WATCH_HISTORY }\r\n};\r\n\r\nexport function CollapsedLeftNavView(): JSX.Element {\r\n return (\r\n <nav className={`${styles.leftNav} ${styles.leftNavCollapsed}`}>\r\n <Scrollbars height='100%'>\r\n <LeftNavItem\r\n name={getPhrase('discover')}\r\n appLink={appLinks.discover}\r\n className={styles.discover}\r\n svgName={cvSvgLibrary.Compass}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n name={getPhrase('playlists')}\r\n appLink={appLinks.playlists}\r\n className={styles.playlists}\r\n svgName={cvSvgLibrary.Playlist}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n name={getPhrase('myUploads')}\r\n appLink={appLinks.myUploads}\r\n className={styles.myUploads}\r\n svgName={cvSvgLibrary.Upload}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n name={getPhrase('favouritedVideos')}\r\n appLink={appLinks.favouritedVideos}\r\n className={styles.favouritedVideos}\r\n svgName={isAppLinkActive(appLinks.favouritedVideos)\r\n ? cvSvgLibrary.Heart\r\n : cvSvgLibrary.HeartOutline\r\n }\r\n collapsed\r\n />\r\n <LeftNavItem\r\n name={getPhrase('watchHistory')}\r\n appLink={appLinks.watchHistory}\r\n className={styles.watchHistory}\r\n svgName={cvSvgLibrary.History}\r\n collapsed\r\n />\r\n </Scrollbars>\r\n </nav>\r\n );\r\n}","import React from 'react';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Core } from 'libs/common/core';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nimport { LeftNavItem } from './LeftNavItem';\r\nimport { PartialLeftNavItem } from './partial-loading/PartialLeftNavItem';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\nconst namespace = 'shared.leftNav';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nfunction ClassroomSvg(): JSX.Element {\r\n return (\r\n <svg viewBox='0 0 24 24'>\r\n <g fill='none' fillRule='evenodd'>\r\n <g transform='translate(0.000000, 2.000000)'>\r\n <text id='ABC' fontFamily='Rubik-Black, Rubik Black' fontSize='6.6' fontWeight='700' fill='#ffffff'>\r\n <tspan x='4.5' y='10.8'>ABC</tspan>\r\n </text>\r\n <rect id='Rectangle' stroke='#ffffff' strokeWidth='1.2' x='3' y='1.8' width='18' height='13.2' rx='1.2'></rect>\r\n <line x1='0.6' y1='15' x2='23.4' y2='15' id='Line-2' stroke='#ffffff' strokeWidth='1.2' strokeLinecap='round'></line>\r\n <circle id='Oval' stroke='#ffffff' strokeWidth='1.2' fill='#000000' cx='12' cy='1.2' r='1'></circle>\r\n <line x1='11.4' y1='15' x2='7.8' y2='18.6' id='Line-3' stroke='#ffffff' strokeWidth='1.2' strokeLinecap='round'></line>\r\n <line x1='16.2' y1='15' x2='12.6' y2='18.6' id='Line-3' stroke='#ffffff' strokeWidth='1.2' strokeLinecap='round' transform='translate(14.400000, 16.800000) scale(-1, 1) translate(-14.400000, -16.800000) '></line>\r\n </g>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n\r\nconst appLinks: {[key: string]: Core.AppLink} = {\r\n discover: { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\r\n playlists: { application: AppChannels.PLAYLISTS, action: Actions.Playlists.HOME },\r\n myUploads: { application: AppChannels.DEFAULT, action: Actions.Upload.MY_UPLOADS },\r\n favouritedVideos: { application: AppChannels.DEFAULT, action: Actions.Default.FAVOURITE_VIDEOS },\r\n classrooms: { application: AppChannels.CLASSROOMS, action: Actions.Classrooms.HOME },\r\n classroom: { application: AppChannels.CLASSROOMS, action: Actions.Classrooms.CLASSROOM },\r\n watchHistory: { application: AppChannels.DEFAULT, action: Actions.Default.WATCH_HISTORY },\r\n settings: { application: AppChannels.SETTINGS, action: Actions.Settings.HOME }\r\n};\r\n\r\nexport const ExpandedLeftNavView = React.memo(function(): JSX.Element {\r\n const starredClassrooms = Flight.useBasicFetch<MockClassroom[]>(ClassroomRequests.getStarredClassrooms());\r\n\r\n return (\r\n <nav className={`${styles.leftNav} ${styles.leftNavExpanded}`}>\r\n <Scrollbars height='100%'>\r\n <LeftNavItem\r\n name={getPhrase('discover')}\r\n appLink={appLinks.discover}\r\n className={styles.discover}\r\n svgName={cvSvgLibrary.Compass}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('playlists')}\r\n appLink={appLinks.playlists}\r\n className={styles.playlists}\r\n svgName={cvSvgLibrary.Playlist}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('myUploads')}\r\n appLink={appLinks.myUploads}\r\n className={styles.myUploads}\r\n svgName={cvSvgLibrary.Upload}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('favouritedVideos')}\r\n appLink={appLinks.favouritedVideos}\r\n className={styles.favouritedVideos}\r\n svgName={cvSvgLibrary.Heart}\r\n />\r\n\r\n <hr />\r\n\r\n <LeftNavItem\r\n name={getPhrase('classrooms')}\r\n appLink={appLinks.classrooms}\r\n className={styles.classrooms}\r\n icon={ClassroomSvg}\r\n />\r\n {starredClassrooms.data\r\n ? starredClassrooms.data.map(classroom => (\r\n <LeftNavItem\r\n key={classroom.id}\r\n name={classroom.name}\r\n appLink={{ ...appLinks.classroom, args: [classroom.id]}}\r\n className={styles.classroom}\r\n svgName={cvSvgLibrary.Star}\r\n />\r\n ))\r\n : <PartialLeftNavItem />\r\n }\r\n\r\n <div className={styles.leftNavBottom}>\r\n <LeftNavItem\r\n name={getPhrase('watchHistory')}\r\n appLink={appLinks.watchHistory}\r\n className={styles.watchHistory}\r\n svgName={cvSvgLibrary.History}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('settings')}\r\n appLink={appLinks.settings}\r\n className={styles.settings}\r\n svgName={cvSvgLibrary.Cog}\r\n />\r\n </div>\r\n </Scrollbars>\r\n </nav>\r\n );\r\n});","import React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { SvgContainerSize, SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\ninterface LeftNavItemProps {\r\n name: string;\r\n appLink: Core.AppLink;\r\n className: string;\r\n icon?: () => JSX.Element;\r\n svgName?: string;\r\n collapsed?: boolean;\r\n}\r\n\r\nexport function isAppLinkActive({ application, action }: Core.AppLink): boolean {\r\n let currentContext = ContextService.getCurrentRoute();\r\n if (!currentContext)\r\n currentContext = ContextService.getCurrentContext();\r\n\r\n return application === currentContext.appLink.application && action === currentContext.appLink.action;\r\n}\r\n\r\nexport function LeftNavItem(props: LeftNavItemProps): JSX.Element {\r\n const isActive = isAppLinkActive(props.appLink);\r\n\r\n const colorizeBg = !props.collapsed || isActive;\r\n const colorizeText = props.collapsed && isActive;\r\n\r\n const { icon: SvgIcon } = props;\r\n\r\n return (\r\n <AppLink\r\n className={`${styles.leftNavAnchor} ${props.className} ${colorizeBg ? styles.active : styles.iconGrey} mt-3`}\r\n appLink={props.appLink}\r\n >\r\n <span className={`${styles.leftNavIcon}`}>\r\n {props.icon\r\n ? <SvgContainer2 size={SvgContainerSize.Large}>\r\n <SvgIcon />\r\n </SvgContainer2>\r\n : <SvgContainer svgName={props.svgName} size={SvgContainerSize.Large} />\r\n }\r\n </span>\r\n <span className={`${styles.leftNavText} ${colorizeText ? styles.highlightText : ''}`}>{props.name}</span>\r\n </AppLink>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { ExpandedLeftNavView } from './ExpandedLeftNav';\r\nimport { CollapsedLeftNavView } from './CollapsedLeftNav';\r\n\r\nexport enum LeftNavState {\r\n Open,\r\n Collapsed,\r\n Hidden\r\n}\r\n\r\ninterface LeftNavViewProps {\r\n navState: LeftNavState;\r\n}\r\n\r\nexport function LeftNavView(props: LeftNavViewProps): JSX.Element {\r\n if (props.navState === LeftNavState.Hidden)\r\n return <></>;\r\n\r\n return props.navState === LeftNavState.Collapsed\r\n ? <CollapsedLeftNavView />\r\n : <ExpandedLeftNavView />;\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"leftNav\":\"cv--leftNav--3jVyN\",\"leftNavExpanded\":\"cv--leftNavExpanded--Q3CCb\",\"leftNavAnchor\":\"cv--leftNavAnchor--3A_-8\",\"leftNavCollapsed\":\"cv--leftNavCollapsed--2idO9\",\"leftNavText\":\"cv--leftNavText--3qbRh\",\"leftNavBottom\":\"cv--leftNavBottom--1OHHF\",\"partialLeftNavItem\":\"cv--partialLeftNavItem--131rM\",\"iconGrey\":\"cv--iconGrey--2C2dq\",\"leftNavIcon\":\"cv--leftNavIcon--13OIc\",\"discover\":\"cv--discover--2dE5b\",\"active\":\"cv--active--3209B\",\"playlists\":\"cv--playlists--2l2O2\",\"myUploads\":\"cv--myUploads--_qXck\",\"favouritedVideos\":\"cv--favouritedVideos--mqsI_\",\"classrooms\":\"cv--classrooms--Zgkg3\",\"classroom\":\"cv--classroom--2K3g7\",\"watchHistory\":\"cv--watchHistory--ZMi6H\",\"settings\":\"cv--settings--YTaso\",\"highlightText\":\"cv--highlightText--3uRuV\"};","import React from 'react';\r\n\r\nimport styles from '../left-nav.scss';\r\n\r\nexport function PartialLeftNavItem(): JSX.Element {\r\n return (\r\n <div className={`${styles.leftNavAnchor} mt-3`}>\r\n <span className={`${styles.iconGrey} partial-loading-background`}></span>\r\n <span\r\n className={`${styles.leftNavText} ${styles.partialLeftNavItem} mx-1 partial-loading-background`}\r\n />\r\n </div>\r\n );\r\n}","import { Core } from 'libs/common/core';\r\n\r\nexport function RegisterAjaxMiddleware(shell: Core.Shell, next: any): void {\r\n /**\r\n * TODO: Register middleware that words for both Flight and DataServices - Sha\r\n */\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { ConcurrencyHelper } from 'libs/common/backbone/utils/ConcurrencyHelper';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { AnalyticsService } from 'libs/analytics/AnalyticsService';\r\nimport { EventTransport } from 'libs/analytics/transport/EventTransport';\r\nimport { UserDataEnricher } from 'libs/analytics/enrichers/UserDataEnricher';\r\nimport { CoreContextEnricher } from 'libs/analytics/enrichers/CoreContextEnricher';\r\nimport { CollectionApiClient } from 'libs/analytics/clients/CollectionApiClient';\r\nimport { DebuggerClient } from 'libs/analytics/clients/DebuggerClient';\r\nimport { CollectionApiClientHelper } from 'libs/analytics/utils/CollectionApiClientHelper';\r\nimport { CountryRegionMapping } from 'libs/analytics/constants/CountryRegionMapping';\r\nimport { CountryCode as AnalyticsCountryCode } from 'libs/analytics/enums/CountryCode';\r\nimport { User } from 'libs/analytics/interfaces';\r\n\r\nimport { Config } from 'libs/shared/interfaces';\r\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\r\nimport { ConfigDataService } from 'libs/shared/services/ConfigDataService';\r\nimport { UserDataService } from 'libs/shared/services/UserDataService';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\n\r\nfunction RegisterAnalytics(shell: Core.Shell, next: Function): void {\r\n let config: Config;\r\n let user: User;\r\n let version: string;\r\n\r\n const configDataService: ConfigDataService = InstanceManager.getInstance(SharedDataServices.Config);\r\n const userDataService: UserDataService = InstanceManager.getInstance(SharedDataServices.User);\r\n\r\n function getUser(): Promise<User> {\r\n return new Promise((resolve, reject) => {\r\n const success = (currentUser: User) => {\r\n resolve(currentUser);\r\n };\r\n\r\n const error = () => {\r\n reject();\r\n };\r\n\r\n userDataService.getCurrentUser(success, error);\r\n });\r\n }\r\n\r\n /**\r\n * Number of concurrent async calls we're awaiting before we can continue execution\r\n * to the next startup step. If adding any more async calls, make sure to increment\r\n * this value.\r\n */\r\n const asyncCounter = new ConcurrencyHelper(3);\r\n\r\n // Callback to continue execution\r\n const executionCallback = () => {\r\n asyncCounter.decrement();\r\n\r\n // Continue execution only once the counter has been decremented to zero \r\n if (asyncCounter.getValue() > 0)\r\n return;\r\n\r\n /**\r\n * Register all of our analytics enrichers/clients once we have all the data\r\n */\r\n const analyticsService = new AnalyticsService({ user, config });\r\n InstanceManager.registerSingleton(analyticsService);\r\n\r\n analyticsService.registerTransport(EventTransport);\r\n\r\n analyticsService.registerClient(DebuggerClient);\r\n\r\n // const countryCode: CountryCode = config.countryCode.toLowerCase() as AnalyticsCountryCode;\r\n // TODO: Update to read from config with commented out line above\r\n const countryCode = CountryCode.AU;\r\n\r\n analyticsService.registerClient(CollectionApiClient, {\r\n productName: 'lite.web',\r\n productVersion: version,\r\n regionName: CountryRegionMapping[countryCode],\r\n collectionApiUrls: config.collectionApiUrls,\r\n collectionApiClientId: config.collectionApiClientId,\r\n getUser,\r\n shouldLog: CollectionApiClientHelper.shouldLog,\r\n formatData: CollectionApiClientHelper.formatData\r\n });\r\n\r\n analyticsService.registerEnricher(CoreContextEnricher, {\r\n productName: 'ClickView Primary',\r\n productVersion: version\r\n });\r\n\r\n analyticsService.registerEnricher(UserDataEnricher);\r\n\r\n InstanceManager.releaseInstance(SharedDataServices.Config);\r\n InstanceManager.releaseInstance(SharedDataServices.User);\r\n\r\n next(shell);\r\n };\r\n\r\n /**\r\n * Retrive version, config and user data to initialise our analytics\r\n */\r\n configDataService.getVersion((currentVersion: string) => {\r\n version = currentVersion;\r\n executionCallback();\r\n });\r\n\r\n configDataService.getConfig((appConfig: Config) => {\r\n config = appConfig;\r\n executionCallback();\r\n });\r\n\r\n userDataService.getCurrentUser((currentUser: User) => {\r\n user = currentUser;\r\n executionCallback();\r\n });\r\n}\r\n\r\nexport { RegisterAnalytics };","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { OnlineUserRole } from 'libs/shared/enums/UserRole';\r\nimport { CustomerType } from 'libs/shared/enums/CustomerType';\r\nimport { AppOptionsService } from 'libs/shared/services/AppOptionsService';\r\n\r\nexport function RegisterAppOptions(shell: Core.Shell, next: Function): void {\r\n InstanceManager.registerSingleton(new AppOptionsService({\r\n onlineRole: OnlineUserRole.Staff,\r\n customerType: CustomerType.Primary\r\n }));\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\nimport { SearchAppVariables } from 'apps/search/constants/SearchAppVariables';\r\nimport { NotificationsAppVariables } from 'apps/notifications/constants/NotificationsAppVariables';\r\n\r\nfunction RegisterApplicationVariables(shell: Core.Shell, next: Function): void {\r\n InstanceManager\r\n .registerInstance(SearchAppVariables)\r\n .registerInstance(NotificationsAppVariables);\r\n\r\n next(shell);\r\n}\r\n\r\nexport { RegisterApplicationVariables };","import { Core } from 'libs/common/core';\r\n\r\nimport { ClassroomsApplication } from 'apps/classrooms/LiteClassroomsApplication';\r\nimport { ContentUpdatesApplication } from 'apps/content-updates/LiteContentUpdatesApplication';\r\nimport { DashboardApplication } from 'apps/dashboard/LiteDashboardApplication';\r\nimport { DefaultApplication } from 'apps/default/LiteDefaultApplication';\r\nimport { EmbedApplication } from 'apps/embed/LiteEmbedApplication';\r\nimport { NotificationsApplication } from 'apps/notifications/LiteNotificationsApplication';\r\nimport { PlaylistsApplication } from 'apps/playlists/LitePlaylistsApplication';\r\nimport { SearchApplication } from 'apps/search/LiteSearchApplication';\r\nimport { SubjectApplication } from 'apps/subjects/LiteSubjectApplication';\r\nimport { UploadApplication } from 'apps/upload/LiteUploadApplication';\r\nimport { UserManagerApplication } from 'apps/user-manager/LiteUserManagerApplication';\r\nimport { SettingsApplication } from 'apps/settings/LiteSettingsApplication';\r\n\r\nexport function RegisterApplications(shell: Core.Shell, next: Function): void {\r\n shell\r\n .registerApplication(DefaultApplication)\r\n .registerApplication(PlaylistsApplication)\r\n .registerApplication(DashboardApplication)\r\n .registerApplication(SubjectApplication)\r\n .registerApplication(EmbedApplication)\r\n .registerApplication(NotificationsApplication)\r\n .registerApplication(SearchApplication)\r\n .registerApplication(ContentUpdatesApplication)\r\n .registerApplication(UserManagerApplication)\r\n .registerApplication(UploadApplication)\r\n .registerApplication(ClassroomsApplication)\r\n .registerApplication(SettingsApplication);\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { FifoMemoryCache } from 'libs/common/backbone/services/caches/FifoMemoryCache';\r\n\r\nexport function RegisterCaches(shell: Core.Shell, next: Function): void {\r\n InstanceManager.registerInstance(FifoMemoryCache, { size: 100 });\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { AjaxDataProvider } from 'libs/common/backbone/services/data-providers/AjaxDataProvider';\r\n\r\nexport function RegisterDataProviders(shell: Core.Shell, next: Function): void {\r\n /**\r\n * TODO: Register the error message mappings below - Sha\r\n */\r\n\r\n InstanceManager.registerInstance(AjaxDataProvider, {\r\n // dataServiceErrorMessageMappings: DataServiceErrorMessageMappings,\r\n // defaultErrorMessageKey: DefaultDataServiceErrorCode\r\n });\r\n\r\n next(shell);\r\n}\r\n","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { BaseAlertService, AlertType } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { Caches } from 'libs/common/backbone/constants/Caches';\r\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\r\n\r\nimport { ConfigDataService } from 'libs/shared/services/ConfigDataService';\r\nimport { UserDataService } from 'libs/shared/services/UserDataService';\r\nimport { LanguageDataService } from 'libs/shared/services/LanguageDataService';\r\nimport { NotificationSocketService } from 'libs/shared/apps/notifications/services/NotificationSocketService';\r\nimport { NotificationDataService } from 'libs/shared/apps/notifications/services/NotificationDataService';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { FlightLibraryDataService } from 'shared/services/FlightLibraryDataService';\r\nimport { FlightSeriesDataService } from 'shared/services/FlightSeriesDataService';\r\n\r\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\r\n\r\nexport function RegisterDataServices(shell: Core.Shell, next: Function): void {\r\n /**\r\n * TODO: Replace the below strings to use the language service and implement the alertViewCtor\r\n */\r\n const alertServiceConfig = {\r\n maxAlerts: 3,\r\n defaultSuccessAlert: { heading: DefaultAlertHeading.Success, type: AlertType.Success },\r\n defaultErrorAlert: { heading: DefaultAlertHeading.Fail, type: AlertType.Fail },\r\n alertViewCtor: AlertList\r\n };\r\n\r\n /**\r\n * TODO: Replace the below with something that extends\r\n */\r\n InstanceManager\r\n .registerSingleton(new BaseAlertService(alertServiceConfig));\r\n\r\n const alertService = InstanceManager.getInstance<BaseAlertService>(CommonServices.ALERT);\r\n\r\n const basicDataServiceConfig = {\r\n cache: Caches.Fifo,\r\n dataProvider: DataProviders.Ajax,\r\n bootstrapData: (window as any).bootstrapData,\r\n defaultErrorHandler: alertService.error({ useXHR: true }),\r\n alertService\r\n };\r\n\r\n InstanceManager\r\n .registerDataService(ConfigDataService, basicDataServiceConfig)\r\n .registerDataService(UserDataService, basicDataServiceConfig)\r\n .registerDataService(LanguageDataService, basicDataServiceConfig)\r\n .registerDataService(NotificationDataService, basicDataServiceConfig);\r\n\r\n const flightDataServiceConfig = {\r\n store: shell.store\r\n };\r\n\r\n InstanceManager\r\n .registerInstance(FlightLibraryDataService, flightDataServiceConfig)\r\n .registerInstance(FlightSeriesDataService, flightDataServiceConfig);\r\n\r\n const socketServiceConfig = {\r\n cache: Caches.Fifo,\r\n dataProvider: DataProviders.Notifications,\r\n alertService\r\n };\r\n\r\n InstanceManager.registerDataService(NotificationSocketService, socketServiceConfig);\r\n\r\n next(shell);\r\n\r\n /**\r\n * We delete bootstrapped data after next(shell)\r\n * just incase something else is using it\r\n */\r\n delete (window as any).bootstrapData;\r\n}","import { Radio } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { BaseAlertService, AlertType } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { NotImplementedError } from 'libs/common/backbone/errors/NotImplementedError';\r\n\r\nimport { AlertError } from 'libs/shared/errors/primitives/AlertError';\r\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\r\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { NotFoundError } from 'shared/errors/not-found/LiteNotFoundError';\r\n\r\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\r\n\r\nfunction alertErrorHandler(error: AlertError): void {\r\n const alertService = InstanceManager.getInstance<BaseAlertService>(CommonServices.ALERT);\r\n\r\n alertService.createAlert({ heading: DefaultAlertHeading.Fail, type: AlertType.Fail, message: error.message });\r\n}\r\n\r\nfunction devErrorHandler(error: DevError): void {\r\n const channel = Radio.channel('error:view');\r\n channel.replyOnce('current:error', () => error);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.DEV_ERROR\r\n });\r\n}\r\n\r\nfunction notFoundErrorHandler(error: NotFoundError): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.NOT_FOUND\r\n });\r\n}\r\n\r\nfunction handleErrorPageError(error: ErrorPageError): void {\r\n const channel = Radio.channel('error:view');\r\n channel.replyOnce('current:error', () => error);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.ERROR\r\n });\r\n}\r\n\r\nfunction handleDialogError(error: DialogError): void {\r\n const channel = Radio.channel('error:view');\r\n channel.replyOnce('current:error', () => error);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.DIALOG_ERROR\r\n });\r\n}\r\n\r\nexport function RegisterErrorHandlers(shell: Core.Shell, next: Function): void {\r\n shell\r\n .registerErrorHandler(ErrorPageError, handleErrorPageError)\r\n .registerErrorHandler(DialogError, handleDialogError)\r\n .registerErrorHandler(AlertError, alertErrorHandler)\r\n .registerErrorHandler(NotFoundError, notFoundErrorHandler);\r\n\r\n if (__ENVIRONMENT__ === 'development') {\r\n shell\r\n .registerErrorHandler(Core.Error, devErrorHandler)\r\n .registerErrorHandler(DevError, devErrorHandler)\r\n .registerErrorHandler(NotImplementedError, devErrorHandler);\r\n }\r\n\r\n next();\r\n}","import * as _ from 'underscore';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LangHelper } from 'libs/shared/legacy/utils/LangHelper';\r\n\r\nfunction RegisterHandlebarsHelpers(shell: Core.Shell, next: Function): void {\r\n LangHelper.register();\r\n\r\n next(shell);\r\n}\r\n\r\nexport { RegisterHandlebarsHelpers };","import { Core } from 'libs/common/core';\r\n\r\nimport { Layouts } from 'shared/constants/LiteLayouts';\r\nimport { TeacherLayoutView } from 'shared/layouts/teacher-layout/TeacherLayoutView';\r\nimport { EmbedLayoutView } from 'shared/layouts/embed-layout/EmbedLayoutView';\r\n\r\nexport function RegisterLayouts(shell: Core.Shell, next: Function): void {\r\n shell\r\n .registerLayout(Layouts.TEACHER_LAYOUT, TeacherLayoutView)\r\n .registerLayout(Layouts.EMBED_LAYOUT, EmbedLayoutView);\r\n\r\n next(shell);\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\n\r\nimport { ConfigDataService } from 'libs/shared/services/ConfigDataService';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { Config } from 'libs/shared/interfaces';\r\n\r\nexport function RegisterRuntimeEnvironment(shell: Core.Shell, options: any, next: any): void {\r\n const configDataService: ConfigDataService = InstanceManager.getInstance(SharedDataServices.Config);\r\n configDataService.getConfig((config: Config) => {\r\n EnvironmentVariables.setUpVariables({\r\n isDevelopment: __ENVIRONMENT__ === 'development'\r\n });\r\n\r\n next(shell, options);\r\n\r\n /**\r\n * This is released after next is called so that \r\n * the values are cached properly if anything else needs them\r\n */\r\n InstanceManager.releaseInstance(SharedDataServices.Config);\r\n });\r\n}","import { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ConcurrencyHelper } from 'libs/common/backbone/utils/ConcurrencyHelper';\r\n\r\nimport { BasePendingItemsService } from 'libs/shared/apps/upload/services/BasePendingItemsService';\r\nimport { LanguageDataService } from 'libs/shared/services/LanguageDataService';\r\nimport { ConfigDataService } from 'libs/shared/services/ConfigDataService';\r\nimport { NotificationService } from 'libs/shared/apps/notifications/services/NotificationService';\r\nimport { NotificationsSocketDataProvider } from 'libs/shared/apps/notifications/services/data-providers/NotificationsSocketDataProvider';\r\nimport { Config } from 'libs/shared/interfaces';\r\nimport { SharedDataServices } from 'libs/shared/constants/SharedServices';\r\nimport { ContextualSearchService } from 'libs/shared/apps/search/services/ContextualSearchService';\r\n\r\nimport { FlightVideoDataService } from 'shared/services/FlightVideoDataService';\r\nimport { FlightVideoUploadDataService } from 'apps/upload/services/FlightVideoUploadDataService';\r\nimport { CombineUploadsService } from 'apps/upload/services/CombineUploadsService';\r\nimport { VideoUploadService } from 'apps/upload/services/VideoUploadService';\r\nimport { ImageUrlService } from 'libs/shared/services/ImageUrlService';\r\nimport { ImageUrls } from 'shared/constants/ImageUrls';\r\n\r\nexport function RegisterServices(shell: Core.Shell, next: Function): void {\r\n const contextualSearchService = new ContextualSearchService();\r\n\r\n InstanceManager\r\n .registerInstance(ImageUrlService, { imageUrls: ImageUrls })\r\n .registerInstance(VideoUploadService)\r\n .registerInstance(FlightVideoDataService, { store: shell.store })\r\n .registerInstance(FlightVideoUploadDataService, { store: shell.store })\r\n .registerInstance(BasePendingItemsService)\r\n .registerInstance(CombineUploadsService)\r\n .registerInstance(NotificationService)\r\n .registerSingleton(contextualSearchService);\r\n\r\n const asyncCounter = new ConcurrencyHelper(2);\r\n const executionCallback = () => {\r\n asyncCounter.decrement();\r\n\r\n if (asyncCounter.getValue() > 0)\r\n return;\r\n\r\n InstanceManager.releaseInstance(SharedDataServices.Language);\r\n InstanceManager.releaseInstance(SharedDataServices.Config);\r\n\r\n next(shell);\r\n };\r\n\r\n const languageDataService = InstanceManager.getInstance<LanguageDataService>(SharedDataServices.Language);\r\n languageDataService.getLanguageConfig((config: any) => {\r\n LanguageService.setConfig(config);\r\n\r\n executionCallback();\r\n });\r\n\r\n const configDataService = InstanceManager.getInstance<ConfigDataService>(SharedDataServices.Config);\r\n configDataService.getConfig((config: Config) => {\r\n InstanceManager.registerInstance(NotificationsSocketDataProvider, {\r\n endpoint: config.notificationServiceUrl,\r\n authEndpoint: '/api/notifications/v1/tokens',\r\n hubName: 'notificationHub',\r\n logging: true\r\n });\r\n\r\n executionCallback();\r\n });\r\n}","import { combineReducers, createStore, applyMiddleware, Store } from 'redux';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { ApplicationDataReducer } from 'libs/common/react/reducers/ApplicationDataReducer';\r\nimport { ViewModelReducer } from 'libs/common/react/reducers/ViewModelReducer';\r\nimport { createApplicationMiddleware } from 'libs/common/react/middleware/ApplicationMiddleware';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nexport function RegisterStore(shell: Core.Shell, next: Function): void {\r\n const reducer = combineReducers<ApplicationState>({\r\n flightData: Flight.FlightReducer,\r\n applicationData: ApplicationDataReducer,\r\n viewModelData: ViewModelReducer\r\n });\r\n\r\n const flightMiddleware = Flight.createMiddleware({\r\n fetchData: Flight.ajaxRequest,\r\n bootstrappedData: (window as any).bootstrapData,\r\n defaultExpiryTime: CacheDurations.STANDARD\r\n });\r\n\r\n const applicationMiddleware = createApplicationMiddleware({\r\n oldVersionError: new DevError('A new version is available'), // TODO replace\r\n authenticationError: new DevError('Authentication Error') // TODO replace\r\n });\r\n\r\n function registerStore(store: Store): void {\r\n shell.registerStore(store);\r\n next();\r\n\r\n /**\r\n * We delete bootstrapped data after next(shell)\r\n * just incase something else is using it\r\n */\r\n delete (window as any).bootstrapData;\r\n }\r\n\r\n // In development, we want to add the redux devtools middleware so that we can use the browser extension for debugging\r\n if (__ENVIRONMENT__ === 'development') {\r\n import('redux-devtools-extension').then(({ composeWithDevTools }) => {\r\n const devStore = createStore(\r\n reducer,\r\n composeWithDevTools(\r\n applyMiddleware(flightMiddleware, applicationMiddleware)\r\n )\r\n );\r\n\r\n registerStore(devStore);\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Production only\r\n const prodStore = createStore(reducer, applyMiddleware(flightMiddleware, applicationMiddleware));\r\n registerStore(prodStore);\r\n}","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\n\r\n/**\r\n * A \"view data extension\", is a set of data that you want to make available in all handlebars templates.\r\n * By default, templates receive its component's model data, and anything passed to `viewOptions()`\r\n * (accessible as `{{options.example}}`).\r\n * \r\n * In this middleware, you can extend this view data with `common/CoreView`'s static `AddViewDataExtension()` method.\r\n * This takes an object of the data you'd like to be added, or a function which returns an object of data for\r\n * situations where a CoreView's `this` is needed. For example, `languageNamespaceExtension` adds a `languageNamespace`\r\n * property to all templates (accessible by `{{languageNamespace}}`).\r\n * \r\n * See `serializeData()` in `common/BaseView.ts` to see how these extension objects are processed.\r\n */\r\nfunction RegisterViewDataExtensions(shell: Core.Shell, next: Function): void {\r\n const languageNamespaceExtension = (coreView: any) => {\r\n return {\r\n languageNamespace: _.result(coreView, 'lang')\r\n };\r\n };\r\n\r\n Core.View.AddViewDataExtension(languageNamespaceExtension);\r\n\r\n next(shell);\r\n}\r\n\r\nexport { RegisterViewDataExtensions };","export * from './RegisterApplications';\r\nexport * from './RegisterAjaxMiddleware';\r\nexport * from './RegisterCaches';\r\nexport * from './RegisterDataProviders';\r\nexport * from './RegisterDataServices';\r\nexport * from './RegisterErrorHandlers';\r\nexport * from './RegisterLayouts';\r\nexport * from './RegisterRuntimeEnvironment';\r\nexport * from './RegisterServices';\r\nexport * from './RegisterStore';\r\nexport * from './RegisterApplicationVariables';\r\nexport * from './RegisterHandlebarsHelpers';\r\nexport * from './RegisterViewDataExtensions';\r\nexport * from './RegisterAppOptions';\r\nexport * from './RegisterAnalytics';","import './theme-overrides.scss';","// extracted by mini-css-extract-plugin","module.exports = __WEBPACK_EXTERNAL_MODULE__fortawesome_fontawesome__;","module.exports = __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone_marionette__;","module.exports = __WEBPACK_EXTERNAL_MODULE_bloodhound__;","module.exports = __WEBPACK_EXTERNAL_MODULE_dompurify__;","module.exports = __WEBPACK_EXTERNAL_MODULE_handlebars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_marked__;","module.exports = __WEBPACK_EXTERNAL_MODULE_moment__;","module.exports = __WEBPACK_EXTERNAL_MODULE_node_polyglot__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_autosuggest__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_bootstrap__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dom__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dropzone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__;","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_redux__;","module.exports = __WEBPACK_EXTERNAL_MODULE_underscore__;","module.exports = __WEBPACK_EXTERNAL_MODULE_yup__;"],"sourceRoot":""}