studiokit-scaffolding-js 7.0.14-alpha.1 → 7.1.1

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 (374) hide show
  1. package/lib/components/ActionList.d.ts +2 -2
  2. package/lib/components/ActionList.js +166 -87
  3. package/lib/components/AlertDialog.d.ts +3 -3
  4. package/lib/components/AlertDialog.js +133 -18
  5. package/lib/components/AlertWithIcon.js +93 -52
  6. package/lib/components/ConnectedModal.d.ts +1 -2
  7. package/lib/components/ConnectedModal.js +41 -35
  8. package/lib/components/Dropdowns/GroupsDropdown.d.ts +4 -4
  9. package/lib/components/Dropdowns/GroupsDropdown.js +69 -82
  10. package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +2 -2
  11. package/lib/components/Dropdowns/ManagedNavDropdown.js +96 -108
  12. package/lib/components/Dropdowns/UserDropdown.js +109 -70
  13. package/lib/components/Dropdowns/index.js +27 -11
  14. package/lib/components/EntityOwnerList.d.ts +3 -3
  15. package/lib/components/EntityOwnerList.js +52 -60
  16. package/lib/components/Error.js +107 -27
  17. package/lib/components/ErrorBoundary.js +133 -94
  18. package/lib/components/ErrorMessage.d.ts +2 -2
  19. package/lib/components/ErrorMessage.js +44 -14
  20. package/lib/components/Forms/DateField.d.ts +2 -2
  21. package/lib/components/Forms/DateField.js +63 -95
  22. package/lib/components/Forms/TimeField.d.ts +2 -2
  23. package/lib/components/Forms/TimeField.js +84 -108
  24. package/lib/components/Forms/index.js +27 -13
  25. package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +2 -2
  26. package/lib/components/Groups/CreateEditCopySaveButtons.js +102 -14
  27. package/lib/components/Groups/ExternalGroups/Attach.d.ts +6 -7
  28. package/lib/components/Groups/ExternalGroups/Attach.js +213 -188
  29. package/lib/components/Groups/ExternalGroups/Table.js +183 -76
  30. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
  31. package/lib/components/Groups/RosterSyncInfo.js +140 -49
  32. package/lib/components/HOC/AccessibleAppComponent.d.ts +2 -2
  33. package/lib/components/HOC/AccessibleAppComponent.js +96 -119
  34. package/lib/components/HOC/ActivityRequiredComponent.d.ts +14 -14
  35. package/lib/components/HOC/ActivityRequiredComponent.js +72 -86
  36. package/lib/components/HOC/AsyncComponent.d.ts +9 -9
  37. package/lib/components/HOC/AsyncComponent.js +53 -129
  38. package/lib/components/HOC/AuthenticatedComponent.d.ts +4 -4
  39. package/lib/components/HOC/AuthenticatedComponent.js +59 -96
  40. package/lib/components/HOC/CollectionComponent.d.ts +12 -12
  41. package/lib/components/HOC/CollectionComponent.js +161 -161
  42. package/lib/components/HOC/CollectionFirstItemComponent.d.ts +13 -13
  43. package/lib/components/HOC/CollectionFirstItemComponent.js +49 -91
  44. package/lib/components/HOC/CollectionItemComponent.d.ts +9 -9
  45. package/lib/components/HOC/CollectionItemComponent.js +159 -158
  46. package/lib/components/HOC/ConnectedModalComponent.d.ts +9 -9
  47. package/lib/components/HOC/ConnectedModalComponent.js +96 -126
  48. package/lib/components/HOC/DataDependentComponent.d.ts +3 -55
  49. package/lib/components/HOC/DataDependentComponent.js +30 -79
  50. package/lib/components/HOC/EntityComponent.d.ts +13 -13
  51. package/lib/components/HOC/EntityComponent.js +63 -101
  52. package/lib/components/HOC/FullscreenModalComponent.d.ts +9 -9
  53. package/lib/components/HOC/FullscreenModalComponent.js +145 -165
  54. package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +2 -2
  55. package/lib/components/HOC/GroupActivityRequiredComponent.js +32 -31
  56. package/lib/components/HOC/GuidComponent.d.ts +1 -1
  57. package/lib/components/HOC/GuidComponent.js +25 -64
  58. package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +28 -29
  59. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +36 -59
  60. package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +10 -10
  61. package/lib/components/HOC/ModelErrorRedirectComponent.js +40 -83
  62. package/lib/components/HOC/SearchPersistorComponent.d.ts +4 -4
  63. package/lib/components/HOC/SearchPersistorComponent.js +243 -216
  64. package/lib/components/HOC/UnauthenticatedComponent.d.ts +12 -12
  65. package/lib/components/HOC/UnauthenticatedComponent.js +37 -82
  66. package/lib/components/HOC/UserComponent.d.ts +1 -1
  67. package/lib/components/HOC/UserComponent.js +12 -11
  68. package/lib/components/Icons/IconAlphaList.js +34 -20
  69. package/lib/components/Icons/IconExternalUser.js +34 -20
  70. package/lib/components/Icons/IconImpersonation.js +34 -20
  71. package/lib/components/Icons/IconStopImpersonating.js +34 -20
  72. package/lib/components/Icons/IconTable.js +35 -21
  73. package/lib/components/Icons/IconTableDeleteCol.js +34 -20
  74. package/lib/components/Icons/IconTableDeleteRow.js +34 -20
  75. package/lib/components/Icons/IconTableInsertCol.js +34 -20
  76. package/lib/components/Icons/IconTableInsertRow.js +34 -20
  77. package/lib/components/Impersonation/Button.d.ts +2 -2
  78. package/lib/components/Impersonation/Button.js +76 -56
  79. package/lib/components/Impersonation/Link.d.ts +2 -2
  80. package/lib/components/Impersonation/Link.js +76 -53
  81. package/lib/components/Impersonation/UserDetail.d.ts +2 -2
  82. package/lib/components/Impersonation/UserDetail.js +64 -15
  83. package/lib/components/Loading.js +27 -21
  84. package/lib/components/LockDownBrowser/Check.js +194 -107
  85. package/lib/components/LockDownBrowser/ExitButton.js +27 -14
  86. package/lib/components/LockDownBrowser/Launch.js +70 -85
  87. package/lib/components/Lti/Confirm.js +152 -33
  88. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +4 -2
  89. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -78
  90. package/lib/components/Lti/Launch.js +105 -49
  91. package/lib/components/Lti/LaunchGroup.js +85 -39
  92. package/lib/components/ManageTable.d.ts +1 -2
  93. package/lib/components/ManageTable.js +309 -104
  94. package/lib/components/ManageTableNoDataComponent.js +42 -22
  95. package/lib/components/NewVersionAlert.d.ts +2 -2
  96. package/lib/components/NewVersionAlert.js +82 -91
  97. package/lib/components/NotFound.js +87 -28
  98. package/lib/components/Notifications.d.ts +4 -4
  99. package/lib/components/Notifications.js +187 -169
  100. package/lib/components/PaginationNextButton.js +33 -21
  101. package/lib/components/PaginationPreviousButton.js +33 -21
  102. package/lib/components/Quill/CustomToolbar.d.ts +2 -2
  103. package/lib/components/Quill/CustomToolbar.js +432 -257
  104. package/lib/components/Quill/Formats/Image.d.ts +10 -25
  105. package/lib/components/Quill/Formats/Image.js +76 -82
  106. package/lib/components/Quill/Formats/List.d.ts +6 -3
  107. package/lib/components/Quill/Formats/List.js +50 -72
  108. package/lib/components/Quill/Formats/Video.d.ts +2 -1
  109. package/lib/components/Quill/Formats/Video.js +29 -43
  110. package/lib/components/Quill/ImageDropModule.d.ts +1 -1
  111. package/lib/components/Quill/ImageDropModule.js +142 -115
  112. package/lib/components/Quill/ImageWarning.d.ts +2 -2
  113. package/lib/components/Quill/ImageWarning.js +45 -32
  114. package/lib/components/Quill/ImageWithAltTextModal.d.ts +0 -1
  115. package/lib/components/Quill/ImageWithAltTextModal.js +425 -141
  116. package/lib/components/Quill/Specs/CustomImageSpec.d.ts +1 -1
  117. package/lib/components/Quill/Specs/CustomImageSpec.js +37 -45
  118. package/lib/components/Quill/Specs/CustomVideoSpec.d.ts +1 -1
  119. package/lib/components/Quill/Specs/CustomVideoSpec.js +27 -36
  120. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.d.ts +2 -1
  121. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +100 -116
  122. package/lib/components/Quill/TableModule/Blots/TableBlot.js +53 -66
  123. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +54 -67
  124. package/lib/components/Quill/TableModule/Blots/TableCellBlot.d.ts +1 -1
  125. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +225 -241
  126. package/lib/components/Quill/TableModule/Blots/TableContainer.js +82 -99
  127. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +76 -87
  128. package/lib/components/Quill/TableModule/constants.js +45 -41
  129. package/lib/components/Quill/TableModule/index.css +25 -25
  130. package/lib/components/Quill/TableModule/index.d.ts +14 -5
  131. package/lib/components/Quill/TableModule/index.js +373 -313
  132. package/lib/components/Quill/TableModule/utils.js +45 -45
  133. package/lib/components/Quill/accessibilityFix.d.ts +0 -1
  134. package/lib/components/Quill/accessibilityFix.js +222 -238
  135. package/lib/components/Quill/index.js +36 -32
  136. package/lib/components/RefreshIndicator/Bordered.js +48 -32
  137. package/lib/components/RefreshIndicator/Inline.js +48 -33
  138. package/lib/components/RefreshIndicator/index.d.ts +2 -2
  139. package/lib/components/RefreshIndicator/index.js +263 -113
  140. package/lib/components/SearchControls.js +216 -31
  141. package/lib/components/SentryRoute.js +10 -23
  142. package/lib/components/Tables/RoleFilter.d.ts +3 -4
  143. package/lib/components/Tables/RoleFilter.js +71 -46
  144. package/lib/components/Tables/TextFilter.d.ts +2 -3
  145. package/lib/components/Tables/TextFilter.js +62 -20
  146. package/lib/components/UserRoles/Add.d.ts +3 -3
  147. package/lib/components/UserRoles/Add.js +199 -161
  148. package/lib/components/UserRoles/Context.js +8 -6
  149. package/lib/components/UserRoles/RoleCell.js +181 -100
  150. package/lib/components/UserRoles/Select.js +168 -54
  151. package/lib/components/UserRoles/Table.js +221 -102
  152. package/lib/components/UserRoles/index.d.ts +6 -6
  153. package/lib/components/UserRoles/index.js +535 -464
  154. package/lib/config/eslint/index.d.ts +2 -0
  155. package/lib/config/eslint/index.js +36 -0
  156. package/lib/config/eslint/lib/order.d.ts +3 -0
  157. package/lib/config/eslint/lib/order.js +30 -0
  158. package/lib/config/eslint/lib/prettier.d.ts +3 -0
  159. package/lib/config/eslint/lib/prettier.js +23 -0
  160. package/lib/config/eslint/lib/typescript.d.ts +2 -0
  161. package/lib/config/eslint/lib/typescript.js +98 -0
  162. package/lib/config/eslint/react.d.ts +2 -0
  163. package/lib/config/eslint/react.js +30 -0
  164. package/lib/constants/baseActivity.js +30 -26
  165. package/lib/constants/baseRole.js +14 -10
  166. package/lib/constants/configuration.d.ts +1 -1
  167. package/lib/constants/configuration.js +43 -39
  168. package/lib/constants/externalProviderType.js +10 -6
  169. package/lib/constants/fetchErrorData.js +15 -11
  170. package/lib/constants/index.js +137 -23
  171. package/lib/constants/lockDownBrowser.js +28 -24
  172. package/lib/constants/mockData.d.ts +4 -6
  173. package/lib/constants/mockData.js +383 -324
  174. package/lib/constants/modelStatus.js +15 -11
  175. package/lib/constants/notificationType.js +12 -8
  176. package/lib/constants/operatingSystem.js +12 -8
  177. package/lib/constants/shard.js +11 -7
  178. package/lib/constants/table.js +21 -21
  179. package/lib/constants/tier.js +12 -8
  180. package/lib/constants/userRole.d.ts +1 -2
  181. package/lib/constants/userRole.js +15 -17
  182. package/lib/css/components/_buttons.css +11 -3
  183. package/lib/css/components/_quill.css +3 -3
  184. package/lib/css/components/_tables.css +6 -5
  185. package/lib/css/utils/_display.css +12 -19
  186. package/lib/css/utils/_general.css +1 -1
  187. package/lib/css/utils/_text.css +2 -1
  188. package/lib/css/variables.css +0 -4
  189. package/lib/endpointMappings.js +197 -193
  190. package/lib/hooks/useCollection.js +83 -65
  191. package/lib/hooks/useCollectionConfiguration.d.ts +0 -1
  192. package/lib/hooks/useCollectionConfiguration.js +179 -82
  193. package/lib/hooks/useCollectionItem.js +155 -58
  194. package/lib/hooks/useEventCalback.d.ts +14 -0
  195. package/lib/hooks/useEventCalback.js +51 -0
  196. package/lib/hooks/useGuid.js +19 -8
  197. package/lib/hooks/usePrevious.d.ts +24 -1
  198. package/lib/hooks/usePrevious.js +82 -12
  199. package/lib/index.js +156 -36
  200. package/lib/redux/actionCreator.d.ts +6 -6
  201. package/lib/redux/actionCreator.js +51 -40
  202. package/lib/redux/actions/AuthAction.js +44 -31
  203. package/lib/redux/actions/ModalAction.d.ts +1 -1
  204. package/lib/redux/actions/ModalAction.js +10 -6
  205. package/lib/redux/actions/ModelAction.d.ts +1 -1
  206. package/lib/redux/actions/ModelAction.js +77 -49
  207. package/lib/redux/actions/NotificationAction.js +10 -6
  208. package/lib/redux/actions/SearchAction.js +9 -5
  209. package/lib/redux/actions/index.js +60 -16
  210. package/lib/redux/configureReducers.d.ts +2 -5
  211. package/lib/redux/configureReducers.js +61 -72
  212. package/lib/redux/configureStore.d.ts +2 -2
  213. package/lib/redux/configureStore.js +83 -115
  214. package/lib/redux/helpers.js +7 -2
  215. package/lib/redux/reducers/authReducer.js +50 -44
  216. package/lib/redux/reducers/index.js +41 -15
  217. package/lib/redux/reducers/modalsReducer.js +49 -52
  218. package/lib/redux/reducers/modelsReducer.d.ts +2 -2
  219. package/lib/redux/reducers/modelsReducer.js +136 -135
  220. package/lib/redux/reducers/notificationsReducer.js +26 -21
  221. package/lib/redux/reducers/searchReducer.js +18 -12
  222. package/lib/redux/sagas/appInsightsSaga.js +24 -62
  223. package/lib/redux/sagas/authSaga.js +287 -414
  224. package/lib/redux/sagas/caliperSaga.js +154 -248
  225. package/lib/redux/sagas/clockOffsetSaga.js +35 -76
  226. package/lib/redux/sagas/configurationSaga.js +13 -46
  227. package/lib/redux/sagas/downtimeApiErrorSaga.d.ts +0 -1
  228. package/lib/redux/sagas/downtimeApiErrorSaga.js +23 -64
  229. package/lib/redux/sagas/errorSaga.d.ts +0 -1
  230. package/lib/redux/sagas/errorSaga.js +29 -63
  231. package/lib/redux/sagas/googleAnalyticsSaga.js +29 -69
  232. package/lib/redux/sagas/identityProviderSaga.js +24 -69
  233. package/lib/redux/sagas/initialDataLoadSaga.js +38 -29
  234. package/lib/redux/sagas/lockDownBrowserErrorSaga.d.ts +0 -1
  235. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +32 -81
  236. package/lib/redux/sagas/modelFetchSaga.js +331 -411
  237. package/lib/redux/sagas/noStoreSaga.d.ts +1 -1
  238. package/lib/redux/sagas/noStoreSaga.js +68 -101
  239. package/lib/redux/sagas/postLoginDataSaga.js +42 -74
  240. package/lib/redux/sagas/postLoginRedirectSaga.js +27 -68
  241. package/lib/redux/sagas/rootSaga.js +85 -137
  242. package/lib/redux/sagas/sentrySaga.js +29 -85
  243. package/lib/redux/sagas/userIdSaga.js +18 -54
  244. package/lib/services/codeProviderService.js +25 -29
  245. package/lib/services/dateService.js +12 -10
  246. package/lib/services/documentService.js +15 -10
  247. package/lib/services/fetchService.js +110 -144
  248. package/lib/services/persistenceService.d.ts +4 -4
  249. package/lib/services/persistenceService.js +45 -43
  250. package/lib/services/ticketProviderService.js +29 -33
  251. package/lib/services/tokenPersistenceService.js +13 -9
  252. package/lib/services/windowService.js +21 -17
  253. package/lib/startup.d.ts +1 -1
  254. package/lib/startup.js +115 -118
  255. package/lib/types/AppConfiguration.js +5 -1
  256. package/lib/types/Artifact.js +11 -7
  257. package/lib/types/BaseReduxState.js +5 -1
  258. package/lib/types/Client.js +5 -1
  259. package/lib/types/Collection.d.ts +3 -3
  260. package/lib/types/Collection.js +5 -1
  261. package/lib/types/Configuration.js +5 -1
  262. package/lib/types/DeepLinkingResponseRequest.js +5 -1
  263. package/lib/types/DeletableModel.js +5 -1
  264. package/lib/types/Event.js +5 -1
  265. package/lib/types/ExternalGroup.js +5 -1
  266. package/lib/types/ExternalProvider.js +5 -1
  267. package/lib/types/ExternalTerm.js +5 -1
  268. package/lib/types/Group.js +5 -1
  269. package/lib/types/IdentityProvider.js +5 -1
  270. package/lib/types/LtiLaunch.js +5 -1
  271. package/lib/types/NameOnlyEntity.js +5 -1
  272. package/lib/types/Notification.d.ts +2 -2
  273. package/lib/types/Notification.js +5 -1
  274. package/lib/types/OptionalRecord.d.ts +1 -1
  275. package/lib/types/OptionalRecord.js +5 -1
  276. package/lib/types/OwnerSchedule.d.ts +3 -1
  277. package/lib/types/OwnerSchedule.js +5 -1
  278. package/lib/types/PropertyOfType.d.ts +3 -3
  279. package/lib/types/PropertyOfType.js +5 -1
  280. package/lib/types/Quill.js +5 -1
  281. package/lib/types/RoleDescription.d.ts +0 -1
  282. package/lib/types/RoleDescription.js +5 -1
  283. package/lib/types/Search.js +5 -1
  284. package/lib/types/SimpleLocation.js +5 -1
  285. package/lib/types/UniTime.js +5 -1
  286. package/lib/types/User.js +5 -1
  287. package/lib/types/UserRole.js +5 -1
  288. package/lib/types/auth/AuthState.js +5 -1
  289. package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
  290. package/lib/types/auth/ClientCredentials.js +5 -1
  291. package/lib/types/auth/CodeProviderService.js +5 -1
  292. package/lib/types/auth/LocalLoginRequestBody.js +5 -1
  293. package/lib/types/auth/TicketProviderService.js +5 -1
  294. package/lib/types/auth/TokenPersistenceService.js +5 -1
  295. package/lib/types/auth/index.js +82 -18
  296. package/lib/types/externals.d.js +2 -0
  297. package/lib/types/index.js +313 -39
  298. package/lib/types/net/EndpointConfig.js +5 -1
  299. package/lib/types/net/EndpointMapping.js +5 -1
  300. package/lib/types/net/EndpointMappings.js +5 -1
  301. package/lib/types/net/ErrorHandler.d.ts +1 -1
  302. package/lib/types/net/ErrorHandler.js +5 -1
  303. package/lib/types/net/FetchConfig.d.ts +1 -1
  304. package/lib/types/net/FetchConfig.js +5 -1
  305. package/lib/types/net/FetchErrorData.js +10 -6
  306. package/lib/types/net/FetchResult.d.ts +2 -2
  307. package/lib/types/net/FetchResult.js +5 -1
  308. package/lib/types/net/HTTPMethod.d.ts +1 -1
  309. package/lib/types/net/HTTPMethod.js +5 -1
  310. package/lib/types/net/HTTPStatusCode.js +16 -12
  311. package/lib/types/net/Metadata.js +5 -1
  312. package/lib/types/net/Model.js +5 -1
  313. package/lib/types/net/ModelCollection.js +5 -1
  314. package/lib/types/net/ModelsState.js +5 -1
  315. package/lib/types/net/OAuthToken.js +5 -1
  316. package/lib/types/net/OAuthTokenOrNull.d.ts +1 -1
  317. package/lib/types/net/OAuthTokenOrNull.js +5 -1
  318. package/lib/types/net/TokenAccessFunction.d.ts +1 -1
  319. package/lib/types/net/TokenAccessFunction.js +5 -1
  320. package/lib/types/net/index.js +181 -27
  321. package/lib/utils/baseActivity.d.ts +2 -2
  322. package/lib/utils/baseActivity.js +93 -91
  323. package/lib/utils/baseRole.js +37 -33
  324. package/lib/utils/collection.js +413 -291
  325. package/lib/utils/cookies.js +22 -37
  326. package/lib/utils/date.js +210 -210
  327. package/lib/utils/dom.js +145 -133
  328. package/lib/utils/domainIdentifier.js +9 -9
  329. package/lib/utils/entityUserRole.js +6 -2
  330. package/lib/utils/error.d.ts +1 -1
  331. package/lib/utils/error.js +18 -16
  332. package/lib/utils/events.js +37 -30
  333. package/lib/utils/externalGroup.js +25 -21
  334. package/lib/utils/externalProviders.js +8 -4
  335. package/lib/utils/externalTerms.js +9 -6
  336. package/lib/utils/fetch.d.ts +1 -1
  337. package/lib/utils/fetch.js +179 -176
  338. package/lib/utils/group.js +17 -9
  339. package/lib/utils/groupDates.d.ts +1 -1
  340. package/lib/utils/groupDates.js +43 -39
  341. package/lib/utils/groupRoles.js +28 -28
  342. package/lib/utils/lockDownBrowser.js +16 -12
  343. package/lib/utils/logger.js +30 -25
  344. package/lib/utils/lti.js +10 -5
  345. package/lib/utils/model.d.ts +2 -2
  346. package/lib/utils/model.js +35 -44
  347. package/lib/utils/number.js +13 -16
  348. package/lib/utils/promise.d.ts +6 -1
  349. package/lib/utils/promise.js +34 -15
  350. package/lib/utils/quill.js +60 -71
  351. package/lib/utils/route.d.ts +2 -2
  352. package/lib/utils/route.js +61 -60
  353. package/lib/utils/search.d.ts +1 -1
  354. package/lib/utils/search.js +78 -85
  355. package/lib/utils/shard.js +38 -41
  356. package/lib/utils/sort.d.ts +3 -3
  357. package/lib/utils/sort.js +62 -58
  358. package/lib/utils/string.js +14 -10
  359. package/lib/utils/table.d.ts +3 -3
  360. package/lib/utils/table.js +36 -33
  361. package/lib/utils/timezone.js +12 -26
  362. package/lib/utils/url.d.ts +2 -1
  363. package/lib/utils/url.js +139 -193
  364. package/lib/utils/user.js +59 -61
  365. package/lib/utils/userAgent.js +11 -11
  366. package/lib/utils/userRole.d.ts +3 -3
  367. package/lib/utils/userRole.js +46 -44
  368. package/package.json +90 -73
  369. package/lib/config/eslint/index.cjs +0 -21
  370. package/lib/config/eslint/lib/order.cjs +0 -22
  371. package/lib/config/eslint/lib/prettier.cjs +0 -18
  372. package/lib/config/eslint/lib/typescript.cjs +0 -86
  373. package/lib/config/eslint/react.cjs +0 -9
  374. package/lib/css/utils/_focus.css +0 -4
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyAccessibilityHacks = exports.applyAccessibilityToIcons = void 0;
4
- var lodash_1 = require("lodash");
5
- var constants_1 = require("./TableModule/constants");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.applyAccessibilityHacks = applyAccessibilityHacks;
7
+ exports.applyAccessibilityToIcons = applyAccessibilityToIcons;
8
+ var _lodash = require("lodash");
9
+ var _constants = require("./TableModule/constants");
6
10
  /**
7
11
  * Apply aria-labels to the icons from the quill text editor
8
12
  * Imports the icons from Quill, recursively go through each icon and get the <svg /> html.
@@ -12,31 +16,30 @@ var constants_1 = require("./TableModule/constants");
12
16
  * @param {*} icons The object that includes all the icons from Quill
13
17
  */
14
18
  function applyAccessibilityToIcons(icons) {
15
- lodash_1.forEach(icons, function (value, key) {
16
- // if the value is an object, recursively call this function
17
- if (lodash_1.isPlainObject(value)) {
18
- applyAccessibilityToIcons(value);
19
- }
20
- // if the value is a string, i.e, "<svg></svg>", then it adds the label
21
- if (lodash_1.isString(value)) {
22
- var regex = /^(.*) <\/svg>/g;
23
- var match = regex.exec(value);
24
- if (!match) {
25
- return;
26
- }
27
- var iconName = void 0;
28
- if (key) {
29
- iconName = key;
30
- }
31
- else {
32
- iconName = 'left';
33
- }
34
- var label = "<label class=\"hidden\" aria-label=\"" + iconName + "\">" + iconName + "</label>";
35
- icons[key] = match[1] + label + '</svg>';
36
- }
37
- });
19
+ (0, _lodash.forEach)(icons, (value, key) => {
20
+ // if the value is an object, recursively call this function
21
+ if ((0, _lodash.isPlainObject)(value)) {
22
+ applyAccessibilityToIcons(value);
23
+ }
24
+ // if the value is a string, i.e, "<svg></svg>", then it adds the label
25
+ if ((0, _lodash.isString)(value)) {
26
+ const regex = /^(.*) <\/svg>/g;
27
+ const match = regex.exec(value);
28
+ if (!match) {
29
+ return;
30
+ }
31
+ let iconName;
32
+ if (key) {
33
+ iconName = key;
34
+ } else {
35
+ iconName = 'left';
36
+ }
37
+ const label = `<label class="hidden" aria-label="${iconName}">${iconName}</label>`;
38
+ icons[key] = match[1] + label + '</svg>';
39
+ }
40
+ });
38
41
  }
39
- exports.applyAccessibilityToIcons = applyAccessibilityToIcons;
42
+
40
43
  /**
41
44
  * Grabs the DOM from the toolbar reference and loop through each button, picker, and dropdowns adding accessibility values
42
45
  * Help from: https://github.com/quilljs/quill/issues/1173
@@ -45,223 +48,204 @@ exports.applyAccessibilityToIcons = applyAccessibilityToIcons;
45
48
  * @param editor: reference to the Quill editor
46
49
  */
47
50
  function applyAccessibilityHacks(toolbarRef, editor) {
48
- // Get ref to the toolbar, its not available through the quill api ughh
49
- if (!toolbarRef.current) {
50
- return;
51
- }
52
- var toolbar = toolbarRef.current;
53
- // apply aria labels to base buttons
54
- var buttons = toolbar.getElementsByTagName('button');
55
- for (var _i = 0, _a = Array.from(buttons); _i < _a.length; _i++) {
56
- var button = _a[_i];
57
- var className = button.classList.value
58
- .split(' ')
59
- .filter(function (v) { return v.includes('ql-'); })
60
- .map(function (v) { return v.replace('ql-', ''); })[0];
61
- switch (className) {
62
- case 'bold':
63
- button.setAttribute('aria-label', 'Toggle bold text');
64
- break;
65
- case 'italic':
66
- button.setAttribute('aria-label', 'Toggle italic text');
67
- break;
68
- case 'underline':
69
- button.setAttribute('aria-label', 'Toggle underline text');
70
- break;
71
- case 'script':
72
- if (button.value === 'sub') {
73
- button.setAttribute('aria-label', 'Toggle subscript');
74
- }
75
- if (button.value === 'super') {
76
- button.setAttribute('aria-label', 'Toggle superscript');
77
- }
78
- break;
79
- case 'blockquote':
80
- button.setAttribute('aria-label', 'Toggle blockquote text');
81
- break;
82
- case 'list':
83
- if (button.value === 'ordered') {
84
- button.setAttribute('aria-label', 'Toggle ordered list');
85
- }
86
- if (button.value === 'bullet') {
87
- button.setAttribute('aria-label', 'Toggle bulleted list');
88
- }
89
- break;
90
- case 'header':
91
- if (button.value === '1') {
92
- button.setAttribute('aria-label', 'Toggle heading 1');
93
- }
94
- if (button.value === '2') {
95
- button.setAttribute('aria-label', 'Toggle heading 2');
96
- }
97
- break;
98
- case 'strike':
99
- button.setAttribute('aria-label', 'Toggle strike text');
100
- break;
101
- case 'code-block':
102
- button.setAttribute('aria-label', 'Toggle code block text');
103
- break;
104
- case 'indent':
105
- if (button.value === '-1') {
106
- button.setAttribute('aria-label', 'Indent left');
107
- }
108
- if (button.value === '+1') {
109
- button.setAttribute('aria-label', 'Indent right');
110
- }
111
- break;
112
- case 'link':
113
- button.setAttribute('aria-label', 'Insert link');
114
- break;
115
- case 'image':
116
- button.setAttribute('aria-label', 'Insert image');
117
- break;
118
- case 'video':
119
- button.setAttribute('aria-label', 'Insert video');
120
- break;
121
- case 'formula':
122
- button.setAttribute('aria-label', 'Insert formula');
123
- break;
124
- case 'clean':
125
- button.setAttribute('aria-label', 'Clear formatting');
126
- break;
127
- case 'table':
128
- switch (button.value) {
129
- case constants_1.TABLE_ACTION.INSERT_ROW:
130
- button.setAttribute('aria-label', 'Insert row');
131
- break;
132
- case constants_1.TABLE_ACTION.DELETE_ROW:
133
- button.setAttribute('aria-label', 'Delete row');
134
- break;
135
- case constants_1.TABLE_ACTION.INSERT_COL:
136
- button.setAttribute('aria-label', 'Insert column');
137
- break;
138
- case constants_1.TABLE_ACTION.DELETE_COL:
139
- button.setAttribute('aria-label', 'Delete column');
140
- break;
141
- }
142
- break;
143
- default:
144
- break;
51
+ // Get ref to the toolbar, its not available through the quill api ughh
52
+ if (!toolbarRef.current) {
53
+ return;
54
+ }
55
+ const toolbar = toolbarRef.current;
56
+ // apply aria labels to base buttons
57
+ const buttons = toolbar.getElementsByTagName('button');
58
+ for (const button of Array.from(buttons)) {
59
+ const className = button.classList.value.split(' ').filter(v => v.includes('ql-')).map(v => v.replace('ql-', ''))[0];
60
+ switch (className) {
61
+ case 'bold':
62
+ button.setAttribute('aria-label', 'Toggle bold text');
63
+ break;
64
+ case 'italic':
65
+ button.setAttribute('aria-label', 'Toggle italic text');
66
+ break;
67
+ case 'underline':
68
+ button.setAttribute('aria-label', 'Toggle underline text');
69
+ break;
70
+ case 'script':
71
+ if (button.value === 'sub') {
72
+ button.setAttribute('aria-label', 'Toggle subscript');
145
73
  }
146
- var ariaLabel = button.getAttribute('aria-label');
147
- if (ariaLabel) {
148
- button.setAttribute('title', ariaLabel);
74
+ if (button.value === 'super') {
75
+ button.setAttribute('aria-label', 'Toggle superscript');
149
76
  }
150
- // Put title tags to the dropdowns
151
- var dropdowns = toolbar.getElementsByTagName('select');
152
- for (var _b = 0, _c = Array.from(dropdowns); _b < _c.length; _b++) {
153
- var dropdown = _c[_b];
154
- var classNameAttribute = dropdown.getAttribute('class');
155
- if (classNameAttribute) {
156
- dropdown.setAttribute('title', classNameAttribute.toLowerCase());
157
- }
77
+ break;
78
+ case 'blockquote':
79
+ button.setAttribute('aria-label', 'Toggle blockquote text');
80
+ break;
81
+ case 'list':
82
+ if (button.value === 'ordered') {
83
+ button.setAttribute('aria-label', 'Toggle ordered list');
158
84
  }
159
- // Make pickers work with keyboard and apply aria labels
160
- var pickers = toolbar.getElementsByClassName('ql-picker');
161
- var _loop_1 = function (picker) {
162
- var label = picker.getElementsByClassName('ql-picker-label')[0];
163
- var optionsContainer = picker.getElementsByClassName('ql-picker-options')[0];
164
- var options = optionsContainer.getElementsByClassName('ql-picker-item');
165
- label.setAttribute('role', 'button');
166
- label.setAttribute('aria-haspopup', 'true');
167
- label.setAttribute('tabindex', '0');
168
- if (!!label.parentElement && label.parentElement.classList.contains('ql-font')) {
169
- label.setAttribute('title', 'Font face');
170
- }
171
- if (!!label.parentElement && label.parentElement.classList.contains('ql-size')) {
172
- label.setAttribute('title', 'Font size');
173
- }
174
- if (!!label.parentElement && label.parentElement.classList.contains('ql-align')) {
175
- label.setAttribute('title', 'Alignment');
176
- }
177
- if (!!label.parentElement && label.parentElement.classList.contains('ql-table')) {
178
- label.setAttribute('title', 'Insert table');
179
- }
180
- optionsContainer.setAttribute('aria-hidden', 'true');
181
- optionsContainer.setAttribute('aria-label', 'submenu');
182
- var _loop_3 = function (item) {
183
- item.setAttribute('tabindex', '0');
184
- item.setAttribute('role', 'button');
185
- if (!lodash_1.includes(picker.classList, 'ql-align')) {
186
- // Read the css 'content' values and generate aria labels for font face/size
187
- var content = window.getComputedStyle(item, ':before').content;
188
- if (content) {
189
- var contentLabels = content.split('"').join('');
190
- item.setAttribute('aria-label', contentLabels);
191
- }
192
- }
193
- else {
194
- // Add the title labels to the justification icons
195
- var iconLabels = item.getElementsByTagName('label');
196
- if (iconLabels.length === 1) {
197
- var iconLabel = iconLabels[0].getAttribute('aria-label');
198
- if (iconLabel) {
199
- var iconTitle = iconLabel.charAt(0).toUpperCase() + iconLabel.slice(1);
200
- item.setAttribute('title', iconTitle);
201
- item.setAttribute('aria-label', iconLabel);
202
- }
203
- }
204
- }
205
- item.addEventListener('keyup', function (e) {
206
- if (e.keyCode === 13) {
207
- ;
208
- item.click();
209
- optionsContainer.setAttribute('aria-hidden', 'true');
210
- picker.classList.remove('ql-expanded');
211
- editor.focus();
212
- }
213
- });
214
- };
215
- for (var _i = 0, _a = Array.from(options); _i < _a.length; _i++) {
216
- var item = _a[_i];
217
- _loop_3(item);
218
- }
219
- label.addEventListener('keyup', function (e) {
220
- if (e.keyCode === 13) {
221
- ;
222
- label.click();
223
- picker.classList.add('ql-expanded');
224
- optionsContainer.setAttribute('aria-hidden', 'false');
225
- }
226
- });
227
- };
228
- for (var _d = 0, _e = Array.from(pickers); _d < _e.length; _d++) {
229
- var picker = _e[_d];
230
- _loop_1(picker);
85
+ if (button.value === 'bullet') {
86
+ button.setAttribute('aria-label', 'Toggle bulleted list');
87
+ }
88
+ break;
89
+ case 'header':
90
+ if (button.value === '1') {
91
+ button.setAttribute('aria-label', 'Toggle heading 1');
92
+ }
93
+ if (button.value === '2') {
94
+ button.setAttribute('aria-label', 'Toggle heading 2');
95
+ }
96
+ break;
97
+ case 'strike':
98
+ button.setAttribute('aria-label', 'Toggle strike text');
99
+ break;
100
+ case 'code-block':
101
+ button.setAttribute('aria-label', 'Toggle code block text');
102
+ break;
103
+ case 'indent':
104
+ if (button.value === '-1') {
105
+ button.setAttribute('aria-label', 'Indent left');
106
+ }
107
+ if (button.value === '+1') {
108
+ button.setAttribute('aria-label', 'Indent right');
109
+ }
110
+ break;
111
+ case 'link':
112
+ button.setAttribute('aria-label', 'Insert link');
113
+ break;
114
+ case 'image':
115
+ button.setAttribute('aria-label', 'Insert image');
116
+ break;
117
+ case 'video':
118
+ button.setAttribute('aria-label', 'Insert video');
119
+ break;
120
+ case 'formula':
121
+ button.setAttribute('aria-label', 'Insert formula');
122
+ break;
123
+ case 'clean':
124
+ button.setAttribute('aria-label', 'Clear formatting');
125
+ break;
126
+ case 'table':
127
+ switch (button.value) {
128
+ case _constants.TABLE_ACTION.INSERT_ROW:
129
+ button.setAttribute('aria-label', 'Insert row');
130
+ break;
131
+ case _constants.TABLE_ACTION.DELETE_ROW:
132
+ button.setAttribute('aria-label', 'Delete row');
133
+ break;
134
+ case _constants.TABLE_ACTION.INSERT_COL:
135
+ button.setAttribute('aria-label', 'Insert column');
136
+ break;
137
+ case _constants.TABLE_ACTION.DELETE_COL:
138
+ button.setAttribute('aria-label', 'Delete column');
139
+ break;
231
140
  }
141
+ break;
142
+ default:
143
+ break;
232
144
  }
233
- var tooltips = editor.container.getElementsByClassName('ql-tooltip');
234
- for (var _f = 0, _g = Array.from(tooltips); _f < _g.length; _f++) {
235
- var tooltip = _g[_f];
236
- tooltip.setAttribute('tabindex', '-1');
237
- var embedUrls = tooltip.getElementsByTagName('input');
238
- for (var _h = 0, _j = Array.from(embedUrls); _h < _j.length; _h++) {
239
- var embedUrl = _j[_h];
240
- embedUrl.setAttribute('aria-label', 'Embed Url');
145
+ const ariaLabel = button.getAttribute('aria-label');
146
+ if (ariaLabel) {
147
+ button.setAttribute('title', ariaLabel);
148
+ }
149
+
150
+ // Put title tags to the dropdowns
151
+ const dropdowns = toolbar.getElementsByTagName('select');
152
+ for (const dropdown of Array.from(dropdowns)) {
153
+ const classNameAttribute = dropdown.getAttribute('class');
154
+ if (classNameAttribute) {
155
+ dropdown.setAttribute('title', classNameAttribute.toLowerCase());
156
+ }
157
+ }
158
+
159
+ // Make pickers work with keyboard and apply aria labels
160
+ const pickers = toolbar.getElementsByClassName('ql-picker');
161
+ for (const picker of Array.from(pickers)) {
162
+ const label = picker.getElementsByClassName('ql-picker-label')[0];
163
+ const optionsContainer = picker.getElementsByClassName('ql-picker-options')[0];
164
+ const options = optionsContainer.getElementsByClassName('ql-picker-item');
165
+ label.setAttribute('role', 'button');
166
+ label.setAttribute('aria-haspopup', 'true');
167
+ label.setAttribute('tabindex', '0');
168
+ if (!!label.parentElement && label.parentElement.classList.contains('ql-font')) {
169
+ label.setAttribute('title', 'Font face');
170
+ }
171
+ if (!!label.parentElement && label.parentElement.classList.contains('ql-size')) {
172
+ label.setAttribute('title', 'Font size');
173
+ }
174
+ if (!!label.parentElement && label.parentElement.classList.contains('ql-align')) {
175
+ label.setAttribute('title', 'Alignment');
176
+ }
177
+ if (!!label.parentElement && label.parentElement.classList.contains('ql-table')) {
178
+ label.setAttribute('title', 'Insert table');
179
+ }
180
+ optionsContainer.setAttribute('aria-hidden', 'true');
181
+ optionsContainer.setAttribute('aria-label', 'submenu');
182
+ for (const item of Array.from(options)) {
183
+ item.setAttribute('tabindex', '0');
184
+ item.setAttribute('role', 'button');
185
+ if (!(0, _lodash.includes)(picker.classList, 'ql-align')) {
186
+ // Read the css 'content' values and generate aria labels for font face/size
187
+ const content = window.getComputedStyle(item, ':before').content;
188
+ if (content) {
189
+ const contentLabels = content.split('"').join('');
190
+ item.setAttribute('aria-label', contentLabels);
191
+ }
192
+ } else {
193
+ // Add the title labels to the justification icons
194
+ const iconLabels = item.getElementsByTagName('label');
195
+ if (iconLabels.length === 1) {
196
+ const iconLabel = iconLabels[0].getAttribute('aria-label');
197
+ if (iconLabel) {
198
+ const iconTitle = iconLabel.charAt(0).toUpperCase() + iconLabel.slice(1);
199
+ item.setAttribute('title', iconTitle);
200
+ item.setAttribute('aria-label', iconLabel);
201
+ }
202
+ }
241
203
  }
242
- var previews = tooltip.getElementsByClassName('ql-preview');
243
- for (var _k = 0, _l = Array.from(previews); _k < _l.length; _k++) {
244
- var preview = _l[_k];
245
- preview.setAttribute('aria-label', 'Preview');
246
- preview.setAttribute('tabindex', '0');
204
+ item.addEventListener('keyup', e => {
205
+ if (e.keyCode === 13) {
206
+ ;
207
+ item.click();
208
+ optionsContainer.setAttribute('aria-hidden', 'true');
209
+ picker.classList.remove('ql-expanded');
210
+ editor.focus();
211
+ }
212
+ });
213
+ }
214
+ label.addEventListener('keyup', e => {
215
+ if (e.keyCode === 13) {
216
+ ;
217
+ label.click();
218
+ picker.classList.add('ql-expanded');
219
+ optionsContainer.setAttribute('aria-hidden', 'false');
247
220
  }
248
- var actions = tooltip.getElementsByClassName('ql-action');
249
- var remove = tooltip.getElementsByClassName('ql-remove');
250
- var allActions = Array.from(actions).concat(Array.from(remove));
251
- var _loop_2 = function (action) {
252
- action.setAttribute('tabindex', '0');
253
- action.setAttribute('role', 'button');
254
- action.addEventListener('keyup', function (e) {
255
- if (e.keyCode === 13) {
256
- ;
257
- action.click();
258
- }
259
- });
260
- };
261
- for (var _m = 0, allActions_1 = allActions; _m < allActions_1.length; _m++) {
262
- var action = allActions_1[_m];
263
- _loop_2(action);
221
+ });
222
+ }
223
+ }
224
+ const tooltips = editor.container.getElementsByClassName('ql-tooltip');
225
+ for (const tooltip of Array.from(tooltips)) {
226
+ tooltip.setAttribute('tabindex', '-1');
227
+ const embedUrls = tooltip.getElementsByTagName('input');
228
+ for (const embedUrl of Array.from(embedUrls)) {
229
+ embedUrl.setAttribute('aria-label', 'Embed Url');
230
+ }
231
+ const previews = tooltip.getElementsByClassName('ql-preview');
232
+ for (const preview of Array.from(previews)) {
233
+ preview.setAttribute('aria-label', 'Preview');
234
+ preview.setAttribute('tabindex', '0');
235
+ }
236
+ const actions = tooltip.getElementsByClassName('ql-action');
237
+ const remove = tooltip.getElementsByClassName('ql-remove');
238
+ const allActions = Array.from(actions).concat(Array.from(remove));
239
+ for (const action of allActions) {
240
+ action.setAttribute('tabindex', '0');
241
+ action.setAttribute('role', 'button');
242
+ action.addEventListener('keyup', e => {
243
+ if (e.keyCode === 13) {
244
+ ;
245
+ action.click();
264
246
  }
247
+ });
265
248
  }
249
+ }
266
250
  }
267
- exports.applyAccessibilityHacks = applyAccessibilityHacks;
251
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJhcHBseUFjY2Vzc2liaWxpdHlUb0ljb25zIiwiaWNvbnMiLCJmb3JFYWNoIiwidmFsdWUiLCJrZXkiLCJpc1BsYWluT2JqZWN0IiwiaXNTdHJpbmciLCJyZWdleCIsIm1hdGNoIiwiZXhlYyIsImljb25OYW1lIiwibGFiZWwiLCJhcHBseUFjY2Vzc2liaWxpdHlIYWNrcyIsInRvb2xiYXJSZWYiLCJlZGl0b3IiLCJjdXJyZW50IiwidG9vbGJhciIsImJ1dHRvbnMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImJ1dHRvbiIsIkFycmF5IiwiZnJvbSIsImNsYXNzTmFtZSIsImNsYXNzTGlzdCIsInNwbGl0IiwiZmlsdGVyIiwidiIsImluY2x1ZGVzIiwibWFwIiwicmVwbGFjZSIsInNldEF0dHJpYnV0ZSIsIlRBQkxFX0FDVElPTiIsIklOU0VSVF9ST1ciLCJERUxFVEVfUk9XIiwiSU5TRVJUX0NPTCIsIkRFTEVURV9DT0wiLCJhcmlhTGFiZWwiLCJnZXRBdHRyaWJ1dGUiLCJkcm9wZG93bnMiLCJkcm9wZG93biIsImNsYXNzTmFtZUF0dHJpYnV0ZSIsInRvTG93ZXJDYXNlIiwicGlja2VycyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJwaWNrZXIiLCJvcHRpb25zQ29udGFpbmVyIiwib3B0aW9ucyIsInBhcmVudEVsZW1lbnQiLCJjb250YWlucyIsIml0ZW0iLCJjb250ZW50Iiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImNvbnRlbnRMYWJlbHMiLCJqb2luIiwiaWNvbkxhYmVscyIsImxlbmd0aCIsImljb25MYWJlbCIsImljb25UaXRsZSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsImtleUNvZGUiLCJjbGljayIsInJlbW92ZSIsImZvY3VzIiwiYWRkIiwidG9vbHRpcHMiLCJjb250YWluZXIiLCJ0b29sdGlwIiwiZW1iZWRVcmxzIiwiZW1iZWRVcmwiLCJwcmV2aWV3cyIsInByZXZpZXciLCJhY3Rpb25zIiwiYWxsQWN0aW9ucyIsImNvbmNhdCIsImFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1F1aWxsL2FjY2Vzc2liaWxpdHlGaXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yRWFjaCwgaW5jbHVkZXMsIGlzUGxhaW5PYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgUXVpbGwgfSBmcm9tICdyZWFjdC1xdWlsbCdcbmltcG9ydCB7IFRBQkxFX0FDVElPTiB9IGZyb20gJy4vVGFibGVNb2R1bGUvY29uc3RhbnRzJ1xuXG4vKipcbiAqIEFwcGx5IGFyaWEtbGFiZWxzIHRvIHRoZSBpY29ucyBmcm9tIHRoZSBxdWlsbCB0ZXh0IGVkaXRvclxuICogSW1wb3J0cyB0aGUgaWNvbnMgZnJvbSBRdWlsbCwgcmVjdXJzaXZlbHkgZ28gdGhyb3VnaCBlYWNoIGljb24gYW5kIGdldCB0aGUgPHN2ZyAvPiBodG1sLlxuICogVGhlbiBpdCBzZXRzIGEgPGxhYmVsIC8+IGJldHdlZW4gdGhlIDxzdmcgLz5cbiAqIFVzaW5nIGNzcywgaXQgaGlkZXMgdGhlIGxhYmVsIGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIHsqfSBpY29ucyBUaGUgb2JqZWN0IHRoYXQgaW5jbHVkZXMgYWxsIHRoZSBpY29ucyBmcm9tIFF1aWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUFjY2Vzc2liaWxpdHlUb0ljb25zKGljb25zOiBhbnkpIHtcblx0Zm9yRWFjaChpY29ucywgKHZhbHVlLCBrZXkpID0+IHtcblx0XHQvLyBpZiB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0LCByZWN1cnNpdmVseSBjYWxsIHRoaXMgZnVuY3Rpb25cblx0XHRpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcblx0XHRcdGFwcGx5QWNjZXNzaWJpbGl0eVRvSWNvbnModmFsdWUpXG5cdFx0fVxuXHRcdC8vIGlmIHRoZSB2YWx1ZSBpcyBhIHN0cmluZywgaS5lLCBcIjxzdmc+PC9zdmc+XCIsIHRoZW4gaXQgYWRkcyB0aGUgbGFiZWxcblx0XHRpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG5cdFx0XHRjb25zdCByZWdleCA9IC9eKC4qKSA8XFwvc3ZnPi9nXG5cdFx0XHRjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWModmFsdWUpXG5cdFx0XHRpZiAoIW1hdGNoKSB7XG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXHRcdFx0bGV0IGljb25OYW1lXG5cdFx0XHRpZiAoa2V5KSB7XG5cdFx0XHRcdGljb25OYW1lID0ga2V5XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpY29uTmFtZSA9ICdsZWZ0J1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbGFiZWwgPSBgPGxhYmVsIGNsYXNzPVwiaGlkZGVuXCIgYXJpYS1sYWJlbD1cIiR7aWNvbk5hbWV9XCI+JHtpY29uTmFtZX08L2xhYmVsPmBcblx0XHRcdGljb25zW2tleV0gPSBtYXRjaFsxXSArIGxhYmVsICsgJzwvc3ZnPidcblx0XHR9XG5cdH0pXG59XG5cbi8qKlxuICogR3JhYnMgdGhlIERPTSBmcm9tIHRoZSB0b29sYmFyIHJlZmVyZW5jZSBhbmQgbG9vcCB0aHJvdWdoIGVhY2ggYnV0dG9uLCBwaWNrZXIsIGFuZCBkcm9wZG93bnMgYWRkaW5nIGFjY2Vzc2liaWxpdHkgdmFsdWVzXG4gKiBIZWxwIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9xdWlsbGpzL3F1aWxsL2lzc3Vlcy8xMTczXG4gKlxuICogQHBhcmFtIHRvb2xiYXJSZWY6IHJlZmVyZW5jZSB0byB0aGUgZGl2IGNvbnRhaW5pbmcgb3VyIGN1c3RvbSBRdWlsbCB0b29sYmFyXG4gKiBAcGFyYW0gZWRpdG9yOiByZWZlcmVuY2UgdG8gdGhlIFF1aWxsIGVkaXRvclxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlBY2Nlc3NpYmlsaXR5SGFja3ModG9vbGJhclJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PiwgZWRpdG9yOiBRdWlsbCkge1xuXHQvLyBHZXQgcmVmIHRvIHRoZSB0b29sYmFyLCBpdHMgbm90IGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBxdWlsbCBhcGkgdWdoaFxuXHRpZiAoIXRvb2xiYXJSZWYuY3VycmVudCkge1xuXHRcdHJldHVyblxuXHR9XG5cdGNvbnN0IHRvb2xiYXIgPSB0b29sYmFyUmVmLmN1cnJlbnRcblx0Ly8gYXBwbHkgYXJpYSBsYWJlbHMgdG8gYmFzZSBidXR0b25zXG5cdGNvbnN0IGJ1dHRvbnMgPSB0b29sYmFyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVxuXG5cdGZvciAoY29uc3QgYnV0dG9uIG9mIEFycmF5LmZyb20oYnV0dG9ucykpIHtcblx0XHRjb25zdCBjbGFzc05hbWUgPSBidXR0b24uY2xhc3NMaXN0LnZhbHVlXG5cdFx0XHQuc3BsaXQoJyAnKVxuXHRcdFx0LmZpbHRlcih2ID0+IHYuaW5jbHVkZXMoJ3FsLScpKVxuXHRcdFx0Lm1hcCh2ID0+IHYucmVwbGFjZSgncWwtJywgJycpKVswXVxuXHRcdHN3aXRjaCAoY2xhc3NOYW1lKSB7XG5cdFx0XHRjYXNlICdib2xkJzpcblx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdUb2dnbGUgYm9sZCB0ZXh0Jylcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgJ2l0YWxpYyc6XG5cdFx0XHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnVG9nZ2xlIGl0YWxpYyB0ZXh0Jylcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgJ3VuZGVybGluZSc6XG5cdFx0XHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnVG9nZ2xlIHVuZGVybGluZSB0ZXh0Jylcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgJ3NjcmlwdCc6XG5cdFx0XHRcdGlmIChidXR0b24udmFsdWUgPT09ICdzdWInKSB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdUb2dnbGUgc3Vic2NyaXB0Jylcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoYnV0dG9uLnZhbHVlID09PSAnc3VwZXInKSB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdUb2dnbGUgc3VwZXJzY3JpcHQnKVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRjYXNlICdibG9ja3F1b3RlJzpcblx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdUb2dnbGUgYmxvY2txdW90ZSB0ZXh0Jylcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgJ2xpc3QnOlxuXHRcdFx0XHRpZiAoYnV0dG9uLnZhbHVlID09PSAnb3JkZXJlZCcpIHtcblx0XHRcdFx0XHRidXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ1RvZ2dsZSBvcmRlcmVkIGxpc3QnKVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChidXR0b24udmFsdWUgPT09ICdidWxsZXQnKSB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdUb2dnbGUgYnVsbGV0ZWQgbGlzdCcpXG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgJ2hlYWRlcic6XG5cdFx0XHRcdGlmIChidXR0b24udmFsdWUgPT09ICcxJykge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnVG9nZ2xlIGhlYWRpbmcgMScpXG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGJ1dHRvbi52YWx1ZSA9PT0gJzInKSB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdUb2dnbGUgaGVhZGluZyAyJylcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAnc3RyaWtlJzpcblx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdUb2dnbGUgc3RyaWtlIHRleHQnKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAnY29kZS1ibG9jayc6XG5cdFx0XHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnVG9nZ2xlIGNvZGUgYmxvY2sgdGV4dCcpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRjYXNlICdpbmRlbnQnOlxuXHRcdFx0XHRpZiAoYnV0dG9uLnZhbHVlID09PSAnLTEnKSB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdJbmRlbnQgbGVmdCcpXG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGJ1dHRvbi52YWx1ZSA9PT0gJysxJykge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnSW5kZW50IHJpZ2h0Jylcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAnbGluayc6XG5cdFx0XHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnSW5zZXJ0IGxpbmsnKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAnaW1hZ2UnOlxuXHRcdFx0XHRidXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0luc2VydCBpbWFnZScpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRjYXNlICd2aWRlbyc6XG5cdFx0XHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnSW5zZXJ0IHZpZGVvJylcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgJ2Zvcm11bGEnOlxuXHRcdFx0XHRidXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0luc2VydCBmb3JtdWxhJylcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgJ2NsZWFuJzpcblx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdDbGVhciBmb3JtYXR0aW5nJylcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgJ3RhYmxlJzpcblx0XHRcdFx0c3dpdGNoIChidXR0b24udmFsdWUpIHtcblx0XHRcdFx0XHRjYXNlIFRBQkxFX0FDVElPTi5JTlNFUlRfUk9XOlxuXHRcdFx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdJbnNlcnQgcm93Jylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Y2FzZSBUQUJMRV9BQ1RJT04uREVMRVRFX1JPVzpcblx0XHRcdFx0XHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnRGVsZXRlIHJvdycpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGNhc2UgVEFCTEVfQUNUSU9OLklOU0VSVF9DT0w6XG5cdFx0XHRcdFx0XHRidXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0luc2VydCBjb2x1bW4nKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRjYXNlIFRBQkxFX0FDVElPTi5ERUxFVEVfQ09MOlxuXHRcdFx0XHRcdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdEZWxldGUgY29sdW1uJylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrXG5cdFx0fVxuXHRcdGNvbnN0IGFyaWFMYWJlbCA9IGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKVxuXHRcdGlmIChhcmlhTGFiZWwpIHtcblx0XHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgYXJpYUxhYmVsKVxuXHRcdH1cblxuXHRcdC8vIFB1dCB0aXRsZSB0YWdzIHRvIHRoZSBkcm9wZG93bnNcblx0XHRjb25zdCBkcm9wZG93bnMgPSB0b29sYmFyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKVxuXHRcdGZvciAoY29uc3QgZHJvcGRvd24gb2YgQXJyYXkuZnJvbShkcm9wZG93bnMpKSB7XG5cdFx0XHRjb25zdCBjbGFzc05hbWVBdHRyaWJ1dGUgPSBkcm9wZG93bi5nZXRBdHRyaWJ1dGUoJ2NsYXNzJylcblx0XHRcdGlmIChjbGFzc05hbWVBdHRyaWJ1dGUpIHtcblx0XHRcdFx0ZHJvcGRvd24uc2V0QXR0cmlidXRlKCd0aXRsZScsIGNsYXNzTmFtZUF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE1ha2UgcGlja2VycyB3b3JrIHdpdGgga2V5Ym9hcmQgYW5kIGFwcGx5IGFyaWEgbGFiZWxzXG5cdFx0Y29uc3QgcGlja2VycyA9IHRvb2xiYXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncWwtcGlja2VyJylcblx0XHRmb3IgKGNvbnN0IHBpY2tlciBvZiBBcnJheS5mcm9tKHBpY2tlcnMpKSB7XG5cdFx0XHRjb25zdCBsYWJlbCA9IHBpY2tlci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1waWNrZXItbGFiZWwnKVswXVxuXHRcdFx0Y29uc3Qgb3B0aW9uc0NvbnRhaW5lciA9IHBpY2tlci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1waWNrZXItb3B0aW9ucycpWzBdXG5cdFx0XHRjb25zdCBvcHRpb25zID0gb3B0aW9uc0NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1waWNrZXItaXRlbScpXG5cdFx0XHRsYWJlbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnYnV0dG9uJylcblx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcsICd0cnVlJylcblx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpXG5cdFx0XHRpZiAoISFsYWJlbC5wYXJlbnRFbGVtZW50ICYmIGxhYmVsLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdxbC1mb250JykpIHtcblx0XHRcdFx0bGFiZWwuc2V0QXR0cmlidXRlKCd0aXRsZScsICdGb250IGZhY2UnKVxuXHRcdFx0fVxuXHRcdFx0aWYgKCEhbGFiZWwucGFyZW50RWxlbWVudCAmJiBsYWJlbC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygncWwtc2l6ZScpKSB7XG5cdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgndGl0bGUnLCAnRm9udCBzaXplJylcblx0XHRcdH1cblx0XHRcdGlmICghIWxhYmVsLnBhcmVudEVsZW1lbnQgJiYgbGFiZWwucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3FsLWFsaWduJykpIHtcblx0XHRcdFx0bGFiZWwuc2V0QXR0cmlidXRlKCd0aXRsZScsICdBbGlnbm1lbnQnKVxuXHRcdFx0fVxuXHRcdFx0aWYgKCEhbGFiZWwucGFyZW50RWxlbWVudCAmJiBsYWJlbC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygncWwtdGFibGUnKSkge1xuXHRcdFx0XHRsYWJlbC5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgJ0luc2VydCB0YWJsZScpXG5cdFx0XHR9XG5cdFx0XHRvcHRpb25zQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpXG5cdFx0XHRvcHRpb25zQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdzdWJtZW51JylcblxuXHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIEFycmF5LmZyb20ob3B0aW9ucykpIHtcblx0XHRcdFx0aXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKVxuXHRcdFx0XHRpdGVtLnNldEF0dHJpYnV0ZSgncm9sZScsICdidXR0b24nKVxuXG5cdFx0XHRcdGlmICghaW5jbHVkZXMocGlja2VyLmNsYXNzTGlzdCwgJ3FsLWFsaWduJykpIHtcblx0XHRcdFx0XHQvLyBSZWFkIHRoZSBjc3MgJ2NvbnRlbnQnIHZhbHVlcyBhbmQgZ2VuZXJhdGUgYXJpYSBsYWJlbHMgZm9yIGZvbnQgZmFjZS9zaXplXG5cdFx0XHRcdFx0Y29uc3QgY29udGVudCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGl0ZW0sICc6YmVmb3JlJykuY29udGVudFxuXHRcdFx0XHRcdGlmIChjb250ZW50KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb250ZW50TGFiZWxzID0gY29udGVudC5zcGxpdCgnXCInKS5qb2luKCcnKVxuXHRcdFx0XHRcdFx0aXRlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBjb250ZW50TGFiZWxzKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBBZGQgdGhlIHRpdGxlIGxhYmVscyB0byB0aGUganVzdGlmaWNhdGlvbiBpY29uc1xuXHRcdFx0XHRcdGNvbnN0IGljb25MYWJlbHMgPSBpdGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsYWJlbCcpXG5cdFx0XHRcdFx0aWYgKGljb25MYWJlbHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBpY29uTGFiZWwgPSBpY29uTGFiZWxzWzBdLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpXG5cdFx0XHRcdFx0XHRpZiAoaWNvbkxhYmVsKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGljb25UaXRsZSA9IGljb25MYWJlbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGljb25MYWJlbC5zbGljZSgxKVxuXHRcdFx0XHRcdFx0XHRpdGVtLnNldEF0dHJpYnV0ZSgndGl0bGUnLCBpY29uVGl0bGUpXG5cdFx0XHRcdFx0XHRcdGl0ZW0uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgaWNvbkxhYmVsKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0aWYgKGUua2V5Q29kZSA9PT0gMTMpIHtcblx0XHRcdFx0XHRcdDsoaXRlbSBhcyBIVE1MRWxlbWVudCkuY2xpY2soKVxuXHRcdFx0XHRcdFx0b3B0aW9uc0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKVxuXHRcdFx0XHRcdFx0cGlja2VyLmNsYXNzTGlzdC5yZW1vdmUoJ3FsLWV4cGFuZGVkJylcblx0XHRcdFx0XHRcdGVkaXRvci5mb2N1cygpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXG5cdFx0XHRsYWJlbC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIChlOiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKGUua2V5Q29kZSA9PT0gMTMpIHtcblx0XHRcdFx0XHQ7KGxhYmVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpXG5cdFx0XHRcdFx0cGlja2VyLmNsYXNzTGlzdC5hZGQoJ3FsLWV4cGFuZGVkJylcblx0XHRcdFx0XHRvcHRpb25zQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAnZmFsc2UnKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IHRvb2x0aXBzOiBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+ID0gKGVkaXRvciBhcyBhbnkpLmNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC10b29sdGlwJylcblx0Zm9yIChjb25zdCB0b29sdGlwIG9mIEFycmF5LmZyb20odG9vbHRpcHMpKSB7XG5cdFx0dG9vbHRpcC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJylcblx0XHRjb25zdCBlbWJlZFVybHMgPSB0b29sdGlwLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpXG5cdFx0Zm9yIChjb25zdCBlbWJlZFVybCBvZiBBcnJheS5mcm9tKGVtYmVkVXJscykpIHtcblx0XHRcdGVtYmVkVXJsLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdFbWJlZCBVcmwnKVxuXHRcdH1cblx0XHRjb25zdCBwcmV2aWV3cyA9IHRvb2x0aXAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncWwtcHJldmlldycpXG5cdFx0Zm9yIChjb25zdCBwcmV2aWV3IG9mIEFycmF5LmZyb20ocHJldmlld3MpKSB7XG5cdFx0XHRwcmV2aWV3LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdQcmV2aWV3Jylcblx0XHRcdHByZXZpZXcuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJylcblx0XHR9XG5cdFx0Y29uc3QgYWN0aW9ucyA9IHRvb2x0aXAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncWwtYWN0aW9uJylcblx0XHRjb25zdCByZW1vdmUgPSB0b29sdGlwLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLXJlbW92ZScpXG5cdFx0Y29uc3QgYWxsQWN0aW9ucyA9IEFycmF5LmZyb20oYWN0aW9ucykuY29uY2F0KEFycmF5LmZyb20ocmVtb3ZlKSlcblx0XHRmb3IgKGNvbnN0IGFjdGlvbiBvZiBhbGxBY3Rpb25zKSB7XG5cdFx0XHRhY3Rpb24uc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJylcblx0XHRcdGFjdGlvbi5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnYnV0dG9uJylcblx0XHRcdGFjdGlvbi5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIChlOiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKGUua2V5Q29kZSA9PT0gMTMpIHtcblx0XHRcdFx0XHQ7KGFjdGlvbiBhcyBIVE1MRWxlbWVudCkuY2xpY2soKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLHlCQUF5QkEsQ0FBQ0MsS0FBVSxFQUFFO0VBQ3JELElBQUFDLGVBQU8sRUFBQ0QsS0FBSyxFQUFFLENBQUNFLEtBQUssRUFBRUMsR0FBRyxLQUFLO0lBQzlCO0lBQ0EsSUFBSSxJQUFBQyxxQkFBYSxFQUFDRixLQUFLLENBQUMsRUFBRTtNQUN6QkgseUJBQXlCLENBQUNHLEtBQUssQ0FBQztJQUNqQztJQUNBO0lBQ0Es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
@@ -1,38 +1,42 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.buildFileSelector = exports.supportedFileExtensions = exports.registerQuill = void 0;
7
- var quill_blot_formatter_1 = __importDefault(require("quill-blot-formatter"));
8
- var react_quill_1 = require("react-quill");
9
- var accessibilityFix_1 = require("./accessibilityFix");
10
- var Image_1 = require("./Formats/Image");
11
- var List_1 = require("./Formats/List");
12
- var Video_1 = require("./Formats/Video");
13
- var ImageDropModule_1 = require("./ImageDropModule");
14
- var TableModule_1 = require("./TableModule");
15
- var registerQuill = function () {
16
- react_quill_1.Quill.register('modules/blotFormatter', quill_blot_formatter_1.default);
17
- // replace image format
18
- react_quill_1.Quill.register('formats/image', Image_1.Image, true);
19
- // replace list format with new extended version
20
- react_quill_1.Quill.register('formats/list/item', List_1.ListItem, true);
21
- react_quill_1.Quill.register('formats/list', List_1.List, true);
22
- // replace image format
23
- react_quill_1.Quill.register('formats/video', Video_1.Video, true);
24
- react_quill_1.Quill.register('modules/table', TableModule_1.TableModule);
25
- react_quill_1.Quill.register('modules/imageDrop', ImageDropModule_1.ImageDropModule);
26
- // apply the accessibility label issues to each icons
27
- accessibilityFix_1.applyAccessibilityToIcons(react_quill_1.Quill.import('ui/icons'));
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.supportedFileExtensions = exports.registerQuill = exports.buildFileSelector = void 0;
8
+ var _quillBlotFormatter = _interopRequireDefault(require("quill-blot-formatter"));
9
+ var _reactQuill = require("react-quill");
10
+ var _accessibilityFix = require("./accessibilityFix");
11
+ var _Image = require("./Formats/Image");
12
+ var _List = require("./Formats/List");
13
+ var _Video = require("./Formats/Video");
14
+ var _ImageDropModule = require("./ImageDropModule");
15
+ var _TableModule = require("./TableModule");
16
+ const registerQuill = () => {
17
+ _reactQuill.Quill.register('modules/blotFormatter', _quillBlotFormatter.default);
18
+ // replace image format
19
+ _reactQuill.Quill.register('formats/image', _Image.Image, true);
20
+ // replace list format with new extended version
21
+ _reactQuill.Quill.register('formats/list/item', _List.ListItem, true);
22
+ _reactQuill.Quill.register('formats/list', _List.List, true);
23
+ // replace image format
24
+ _reactQuill.Quill.register('formats/video', _Video.Video, true);
25
+ _reactQuill.Quill.register('modules/table', _TableModule.TableModule);
26
+ _reactQuill.Quill.register('modules/imageDrop', _ImageDropModule.ImageDropModule);
27
+
28
+ // apply the accessibility label issues to each icons
29
+ (0, _accessibilityFix.applyAccessibilityToIcons)(_reactQuill.Quill.import('ui/icons'));
28
30
  };
29
31
  exports.registerQuill = registerQuill;
30
- exports.supportedFileExtensions = ['.png', '.jpeg', '.jpg', '.gif', '.bmp'];
32
+ const supportedFileExtensions = exports.supportedFileExtensions = ['.png', '.jpeg', '.jpg', '.gif', '.bmp'];
33
+
31
34
  // Get the file dialog upload programmatically
32
- var buildFileSelector = function () {
33
- var fileSelector = document.createElement('input');
34
- fileSelector.setAttribute('type', 'file');
35
- fileSelector.setAttribute('accept', exports.supportedFileExtensions.join(', '));
36
- return fileSelector;
35
+ const buildFileSelector = () => {
36
+ const fileSelector = document.createElement('input');
37
+ fileSelector.setAttribute('type', 'file');
38
+ fileSelector.setAttribute('accept', supportedFileExtensions.join(', '));
39
+ return fileSelector;
37
40
  };
38
41
  exports.buildFileSelector = buildFileSelector;
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcXVpbGxCbG90Rm9ybWF0dGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3RRdWlsbCIsIl9hY2Nlc3NpYmlsaXR5Rml4IiwiX0ltYWdlIiwiX0xpc3QiLCJfVmlkZW8iLCJfSW1hZ2VEcm9wTW9kdWxlIiwiX1RhYmxlTW9kdWxlIiwicmVnaXN0ZXJRdWlsbCIsIlF1aWxsIiwicmVnaXN0ZXIiLCJCbG90Rm9ybWF0dGVyIiwiSW1hZ2UiLCJMaXN0SXRlbSIsIkxpc3QiLCJWaWRlbyIsIlRhYmxlTW9kdWxlIiwiSW1hZ2VEcm9wTW9kdWxlIiwiYXBwbHlBY2Nlc3NpYmlsaXR5VG9JY29ucyIsImltcG9ydCIsImV4cG9ydHMiLCJzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucyIsImJ1aWxkRmlsZVNlbGVjdG9yIiwiZmlsZVNlbGVjdG9yIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiam9pbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1F1aWxsL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCbG90Rm9ybWF0dGVyIGZyb20gJ3F1aWxsLWJsb3QtZm9ybWF0dGVyJ1xuaW1wb3J0IHsgUXVpbGwgfSBmcm9tICdyZWFjdC1xdWlsbCdcbmltcG9ydCB7IGFwcGx5QWNjZXNzaWJpbGl0eVRvSWNvbnMgfSBmcm9tICcuL2FjY2Vzc2liaWxpdHlGaXgnXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gJy4vRm9ybWF0cy9JbWFnZSdcbmltcG9ydCB7IExpc3QsIExpc3RJdGVtIH0gZnJvbSAnLi9Gb3JtYXRzL0xpc3QnXG5pbXBvcnQgeyBWaWRlbyB9IGZyb20gJy4vRm9ybWF0cy9WaWRlbydcbmltcG9ydCB7IEltYWdlRHJvcE1vZHVsZSB9IGZyb20gJy4vSW1hZ2VEcm9wTW9kdWxlJ1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICcuL1RhYmxlTW9kdWxlJ1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJRdWlsbCA9ICgpID0+IHtcblx0UXVpbGwucmVnaXN0ZXIoJ21vZHVsZXMvYmxvdEZvcm1hdHRlcicsIEJsb3RGb3JtYXR0ZXIpXG5cdC8vIHJlcGxhY2UgaW1hZ2UgZm9ybWF0XG5cdFF1aWxsLnJlZ2lzdGVyKCdmb3JtYXRzL2ltYWdlJywgSW1hZ2UsIHRydWUpXG5cdC8vIHJlcGxhY2UgbGlzdCBmb3JtYXQgd2l0aCBuZXcgZXh0ZW5kZWQgdmVyc2lvblxuXHRRdWlsbC5yZWdpc3RlcignZm9ybWF0cy9saXN0L2l0ZW0nLCBMaXN0SXRlbSwgdHJ1ZSlcblx0UXVpbGwucmVnaXN0ZXIoJ2Zvcm1hdHMvbGlzdCcsIExpc3QsIHRydWUpXG5cdC8vIHJlcGxhY2UgaW1hZ2UgZm9ybWF0XG5cdFF1aWxsLnJlZ2lzdGVyKCdmb3JtYXRzL3ZpZGVvJywgVmlkZW8sIHRydWUpXG5cdFF1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL3RhYmxlJywgVGFibGVNb2R1bGUpXG5cdFF1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL2ltYWdlRHJvcCcsIEltYWdlRHJvcE1vZHVsZSlcblxuXHQvLyBhcHBseSB0aGUgYWNjZXNzaWJpbGl0eSBsYWJlbCBpc3N1ZXMgdG8gZWFjaCBpY29uc1xuXHRhcHBseUFjY2Vzc2liaWxpdHlUb0ljb25zKFF1aWxsLmltcG9ydCgndWkvaWNvbnMnKSlcbn1cblxuZXhwb3J0IGNvbnN0IHN1cHBvcnRlZEZpbGVFeHRlbnNpb25zID0gWycucG5nJywgJy5qcGVnJywgJy5qcGcnLCAnLmdpZicsICcuYm1wJ11cblxuLy8gR2V0IHRoZSBmaWxlIGRpYWxvZyB1cGxvYWQgcHJvZ3JhbW1hdGljYWxseVxuZXhwb3J0IGNvbnN0IGJ1aWxkRmlsZVNlbGVjdG9yID0gKCkgPT4ge1xuXHRjb25zdCBmaWxlU2VsZWN0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG5cdGZpbGVTZWxlY3Rvci5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnZmlsZScpXG5cdGZpbGVTZWxlY3Rvci5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsIHN1cHBvcnRlZEZpbGVFeHRlbnNpb25zLmpvaW4oJywgJykpXG5cdHJldHVybiBmaWxlU2VsZWN0b3Jcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLG1CQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxpQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZ0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFlBQUEsR0FBQVAsT0FBQTtBQUVPLE1BQU1RLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0VBQ2xDQyxpQkFBSyxDQUFDQyxRQUFRLENBQUMsdUJBQXVCLEVBQUVDLDJCQUFhLENBQUM7RUFDdEQ7RUFDQUYsaUJBQUssQ0FBQ0MsUUFBUSxDQUFDLGVBQWUsRUFBRUUsWUFBSyxFQUFFLElBQUksQ0FBQztFQUM1QztFQUNBSCxpQkFBSyxDQUFDQyxRQUFRLENBQUMsbUJBQW1CLEVBQUVHLGNBQVEsRUFBRSxJQUFJLENBQUM7RUFDbkRKLGlCQUFLLENBQUNDLFFBQVEsQ0FBQyxjQUFjLEVBQUVJLFVBQUksRUFBRSxJQUFJLENBQUM7RUFDMUM7RUFDQUwsaUJBQUssQ0FBQ0MsUUFBUSxDQUFDLGVBQWUsRUFBRUssWUFBSyxFQUFFLElBQUksQ0FBQztFQUM1Q04saUJBQUssQ0FBQ0MsUUFBUSxDQUFDLGVBQWUsRUFBRU0sd0JBQVcsQ0FBQztFQUM1Q1AsaUJBQUssQ0FBQ0MsUUFBUSxDQUFDLG1CQUFtQixFQUFFTyxnQ0FBZSxDQUFDOztFQUVwRDtFQUNBLElBQUFDLDJDQUF5QixFQUFDVCxpQkFBSyxDQUFDVSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUFBQyxPQUFBLENBQUFaLGFBQUEsR0FBQUEsYUFBQTtBQUVNLE1BQU1hLHVCQUF1QixHQUFBRCxPQUFBLENBQUFDLHVCQUFBLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDOztBQUVoRjtBQUNPLE1BQU1DLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07RUFDdEMsTUFBTUMsWUFBWSxHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxPQUFPLENBQUM7RUFDcERGLFlBQVksQ0FBQ0csWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7RUFDekNILFlBQVksQ0FBQ0csWUFBWSxDQUFDLFFBQVEsRUFBRUwsdUJBQXVCLENBQUNNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUN2RSxPQUFPSixZQUFZO0FBQ3BCLENBQUM7QUFBQUgsT0FBQSxDQUFBRSxpQkFBQSxHQUFBQSxpQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==