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
package/lib/utils/dom.js CHANGED
@@ -1,59 +1,64 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupMobileEventListeners = exports.isTextInput = exports.hasExternalKeyboard = exports.isMobileDevice = exports.getFirstParentElementWithClassName = exports.getVerticallyScrollableParent = void 0;
4
- var logger_1 = require("./logger");
5
- var KEYBOARD_ANIMATION_MS = 250;
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setupMobileEventListeners = exports.isTextInput = exports.isMobileDevice = exports.hasExternalKeyboard = exports.getVerticallyScrollableParent = exports.getFirstParentElementWithClassName = void 0;
7
+ var _logger = require("./logger");
8
+ const KEYBOARD_ANIMATION_MS = 250;
9
+
6
10
  /**
7
11
  * Get the nearest vertically scrollable parent of an element
8
12
  * @param { HTMLElement } element - The element to start with
9
13
  * @returns The nearest vertically scrollable parent element
10
14
  */
11
- var getVerticallyScrollableParent = function (element) {
12
- var style = getComputedStyle(element);
13
- var excludeStaticParent = style.position === 'absolute';
14
- var overflowRegex = /(auto|scroll|hidden)/;
15
- for (var parent_1 = element; (parent_1 = parent_1.parentElement);) {
16
- style = getComputedStyle(parent_1);
17
- if (excludeStaticParent && style.position === 'static')
18
- continue;
19
- if (overflowRegex.test(style.overflow + style.overflowY) && parent_1.scrollHeight > parent_1.clientHeight)
20
- return parent_1;
21
- }
22
- return document.scrollingElement;
15
+ const getVerticallyScrollableParent = element => {
16
+ let style = getComputedStyle(element);
17
+ const excludeStaticParent = style.position === 'absolute';
18
+ const overflowRegex = /(auto|scroll|hidden)/;
19
+ for (let parent = element; parent = parent.parentElement;) {
20
+ style = getComputedStyle(parent);
21
+ if (excludeStaticParent && style.position === 'static') continue;
22
+ if (overflowRegex.test(style.overflow + style.overflowY) && parent.scrollHeight > parent.clientHeight) return parent;
23
+ }
24
+ return document.scrollingElement;
23
25
  };
24
- exports.getVerticallyScrollableParent = getVerticallyScrollableParent;
26
+
25
27
  /**
26
28
  * Get the first parent that has the given className in its classList
27
29
  * @param element The target element
28
30
  * @param className The className to match
29
31
  */
30
- var getFirstParentElementWithClassName = function (element, className) {
31
- for (var parent_2 = element; (parent_2 = parent_2.parentElement);) {
32
- if (parent_2.classList.contains(className))
33
- return parent_2;
34
- }
35
- return undefined;
32
+ exports.getVerticallyScrollableParent = getVerticallyScrollableParent;
33
+ const getFirstParentElementWithClassName = (element, className) => {
34
+ for (let parent = element; parent = parent.parentElement;) {
35
+ if (parent.classList.contains(className)) return parent;
36
+ }
37
+ return undefined;
36
38
  };
37
- exports.getFirstParentElementWithClassName = getFirstParentElementWithClassName;
39
+
38
40
  /**
39
41
  * Return whether the device being used is one of several mainstream mobile devices
40
42
  */
41
- var isMobileDevice = function () {
42
- return (/android|ipad|ipod|iphone/i.test(navigator.userAgent) ||
43
- (/macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints));
43
+ exports.getFirstParentElementWithClassName = getFirstParentElementWithClassName;
44
+ const isMobileDevice = () => {
45
+ return /android|ipad|ipod|iphone/i.test(navigator.userAgent) || /macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints;
44
46
  };
45
- exports.isMobileDevice = isMobileDevice;
47
+
46
48
  /** Return whether the device is using an external keyboard vs. the native on-screen OS keyboard. */
47
- var hasExternalKeyboard = function () { return window.hasExternalKeyboard; };
48
- exports.hasExternalKeyboard = hasExternalKeyboard;
49
+ exports.isMobileDevice = isMobileDevice;
50
+ const hasExternalKeyboard = () => window.hasExternalKeyboard;
51
+
49
52
  /**
50
53
  * Sets `window.hasExternalKeyboard`, returned by `hasExternalKeyboard`.
51
54
  */
52
- var setHasExternalKeyboard = function (hasExternalKeyboard) {
53
- logger_1.getLogger().debug('hasExternalKeyboard', hasExternalKeyboard);
54
- var windowWithoutType = window;
55
- windowWithoutType.hasExternalKeyboard = hasExternalKeyboard;
55
+ exports.hasExternalKeyboard = hasExternalKeyboard;
56
+ const setHasExternalKeyboard = hasExternalKeyboard => {
57
+ (0, _logger.getLogger)().debug('hasExternalKeyboard', hasExternalKeyboard);
58
+ const windowWithoutType = window;
59
+ windowWithoutType.hasExternalKeyboard = hasExternalKeyboard;
56
60
  };
61
+
57
62
  /**
58
63
  * 100vh is kind of b⊘rked on mobile safari, we have to set it programmatically here
59
64
  * so we can calculate device-independent viewport heights
@@ -62,72 +67,75 @@ var setHasExternalKeyboard = function (hasExternalKeyboard) {
62
67
  * Sets the CSS variable `--visual-viewport-height` on the `documentElement`/<html>.
63
68
  *
64
69
  */
65
- var setVisualViewportHeightVar = function () {
66
- var height = visualViewport ? visualViewport.height : 0;
67
- document.documentElement.style.setProperty('--visual-viewport-height', height + "px");
70
+ const setVisualViewportHeightVar = () => {
71
+ const height = visualViewport ? visualViewport.height : 0;
72
+ document.documentElement.style.setProperty('--visual-viewport-height', `${height}px`);
68
73
  };
74
+
69
75
  /**
70
76
  * Is the given element capable of text input?
71
77
  *
72
78
  * @param el An HTML element
73
79
  */
74
- var isTextInput = function (el) {
75
- var tagName = el && el.tagName && el.tagName.toLowerCase();
76
- if (tagName === 'textarea')
77
- return true;
78
- if (tagName === 'input') {
79
- var inputEl = el;
80
- return inputEl.type !== 'button' && inputEl.type !== 'radio' && inputEl.type !== 'checkbox';
81
- }
82
- // Quill editor
83
- return tagName === 'div' && el.className.includes('ql-editor') && el.contentEditable === 'true';
80
+ const isTextInput = el => {
81
+ const tagName = el.tagName && el.tagName.toLowerCase();
82
+ if (tagName === 'textarea') return true;
83
+ if (tagName === 'input') {
84
+ const inputEl = el;
85
+ return inputEl.type !== 'button' && inputEl.type !== 'radio' && inputEl.type !== 'checkbox';
86
+ }
87
+ // Quill editor
88
+ return tagName === 'div' && el.className.includes('ql-editor') && el.contentEditable === 'true';
84
89
  };
85
90
  exports.isTextInput = isTextInput;
86
- var updateHasExternalKeyboardAfterFocusTimeout = undefined;
87
- var scrollToElementAfterFocusTimeout = undefined;
88
- var updateHasExternalKeyboardAfterFocus = function () {
89
- var closedVisualViewportHeight = visualViewport ? visualViewport.height : 0;
90
- // wait for the keyboard animation
91
- updateHasExternalKeyboardAfterFocusTimeout = window.setTimeout(function () {
92
- // find the keyboard height based on the difference in viewport height
93
- var keyboardHeight = closedVisualViewportHeight - (visualViewport ? visualViewport.height : 0);
94
- // on first-load the input focus can fail
95
- // when this happens the height is 0, and this ONLY happens when there is NOT an external keyboard
96
- if (keyboardHeight === 0 && exports.hasExternalKeyboard() === undefined) {
97
- setHasExternalKeyboard(false);
98
- }
99
- else {
100
- // if the keyboard height is greater than 100, that means the full onscreen keyboard displayed
101
- // otherwise, only the small context menu displayed, meaning there is an external keyboard
102
- setHasExternalKeyboard(keyboardHeight < 100);
103
- }
104
- updateHasExternalKeyboardAfterFocusTimeout = undefined;
105
- }, KEYBOARD_ANIMATION_MS);
91
+ let updateHasExternalKeyboardAfterFocusTimeout = undefined;
92
+ let scrollToElementAfterFocusTimeout = undefined;
93
+ const updateHasExternalKeyboardAfterFocus = () => {
94
+ const closedVisualViewportHeight = visualViewport ? visualViewport.height : 0;
95
+ // wait for the keyboard animation
96
+ updateHasExternalKeyboardAfterFocusTimeout = window.setTimeout(() => {
97
+ // find the keyboard height based on the difference in viewport height
98
+ const keyboardHeight = closedVisualViewportHeight - (visualViewport ? visualViewport.height : 0);
99
+ // on first-load the input focus can fail
100
+ // when this happens the height is 0, and this ONLY happens when there is NOT an external keyboard
101
+ if (keyboardHeight === 0 && hasExternalKeyboard() === undefined) {
102
+ setHasExternalKeyboard(false);
103
+ } else {
104
+ // if the keyboard height is greater than 100, that means the full onscreen keyboard displayed
105
+ // otherwise, only the small context menu displayed, meaning there is an external keyboard
106
+ setHasExternalKeyboard(keyboardHeight < 100);
107
+ }
108
+ updateHasExternalKeyboardAfterFocusTimeout = undefined;
109
+ }, KEYBOARD_ANIMATION_MS);
106
110
  };
107
- var scrollToElementAfterFocus = function (el) {
108
- // wait for the keyboard animation
109
- scrollToElementAfterFocusTimeout = window.setTimeout(function () {
110
- // after the keyboard is open, check for the el’s scrollable parent, as it could have just become scrollable
111
- var scrollParent = exports.getVerticallyScrollableParent(el);
112
- // if the el has a scrollable parent other than the document, scroll it back into view
113
- if (scrollParent && scrollParent !== document.documentElement) {
114
- var scrollRect = scrollParent.getBoundingClientRect();
115
- var rect = el.getBoundingClientRect();
116
- // only scroll into view if outside of the scroll parent bounds
117
- if (rect.bottom < scrollRect.top || rect.top > scrollRect.bottom) {
118
- var newScrollTop = scrollParent.scrollTop + rect.top - scrollRect.top - 10;
119
- logger_1.getLogger().debug('scrollToEl', newScrollTop);
120
- if (scrollParent.scrollTo) {
121
- scrollParent.scrollTo({ top: newScrollTop, behavior: 'smooth' });
122
- }
123
- else {
124
- scrollParent.scrollTop = newScrollTop;
125
- }
126
- }
111
+ const scrollToElementAfterFocus = el => {
112
+ // wait for the keyboard animation
113
+ scrollToElementAfterFocusTimeout = window.setTimeout(() => {
114
+ // after the keyboard is open, check for the el’s scrollable parent, as it could have just become scrollable
115
+ const scrollParent = getVerticallyScrollableParent(el);
116
+ // if the el has a scrollable parent other than the document, scroll it back into view
117
+ if (scrollParent && scrollParent !== document.documentElement) {
118
+ const scrollRect = scrollParent.getBoundingClientRect();
119
+ const rect = el.getBoundingClientRect();
120
+ // only scroll into view if outside of the scroll parent bounds
121
+ if (rect.bottom < scrollRect.top || rect.top > scrollRect.bottom) {
122
+ const newScrollTop = scrollParent.scrollTop + rect.top - scrollRect.top - 10;
123
+ (0, _logger.getLogger)().debug('scrollToEl', newScrollTop);
124
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
125
+ if (scrollParent.scrollTo) {
126
+ scrollParent.scrollTo({
127
+ top: newScrollTop,
128
+ behavior: 'smooth'
129
+ });
130
+ } else {
131
+ scrollParent.scrollTop = newScrollTop;
127
132
  }
128
- scrollToElementAfterFocusTimeout = undefined;
129
- }, KEYBOARD_ANIMATION_MS);
133
+ }
134
+ }
135
+ scrollToElementAfterFocusTimeout = undefined;
136
+ }, KEYBOARD_ANIMATION_MS);
130
137
  };
138
+
131
139
  /**
132
140
  * Event handler for "focusin" event.
133
141
  *
@@ -136,12 +144,12 @@ var scrollToElementAfterFocus = function (el) {
136
144
  * Checks for external keyboard and scrolls to the focused element after any animations, e.g. keyboard open.
137
145
  *
138
146
  */
139
- var onFocusIn = function (e) {
140
- if (!e.target || !exports.isTextInput(e.target))
141
- return;
142
- updateHasExternalKeyboardAfterFocus();
143
- scrollToElementAfterFocus(e.target);
147
+ const onFocusIn = e => {
148
+ if (!e.target || !isTextInput(e.target)) return;
149
+ updateHasExternalKeyboardAfterFocus();
150
+ scrollToElementAfterFocus(e.target);
144
151
  };
152
+
145
153
  /**
146
154
  * Event handler for "focusout" event.
147
155
  *
@@ -150,52 +158,56 @@ var onFocusIn = function (e) {
150
158
  * Clears any pending timeouts from "focusin" events.
151
159
  *
152
160
  */
153
- var onFocusOut = function (e) {
154
- if (!e.target || !exports.isTextInput(e.target))
155
- return;
156
- if (updateHasExternalKeyboardAfterFocusTimeout) {
157
- window.clearTimeout(updateHasExternalKeyboardAfterFocusTimeout);
158
- updateHasExternalKeyboardAfterFocusTimeout = undefined;
159
- }
160
- if (scrollToElementAfterFocusTimeout) {
161
- window.clearTimeout(scrollToElementAfterFocusTimeout);
162
- scrollToElementAfterFocusTimeout = undefined;
163
- }
161
+ const onFocusOut = e => {
162
+ if (!e.target || !isTextInput(e.target)) return;
163
+ if (updateHasExternalKeyboardAfterFocusTimeout) {
164
+ window.clearTimeout(updateHasExternalKeyboardAfterFocusTimeout);
165
+ updateHasExternalKeyboardAfterFocusTimeout = undefined;
166
+ }
167
+ if (scrollToElementAfterFocusTimeout) {
168
+ window.clearTimeout(scrollToElementAfterFocusTimeout);
169
+ scrollToElementAfterFocusTimeout = undefined;
170
+ }
164
171
  };
172
+
165
173
  /**
166
174
  * Check if the device is using an external keyboard by appending an `input` and focusing it.
167
175
  *
168
176
  * This will trigger the `onFocusIn` event handler, which updates the `hasExternalKeyboard` global.
169
177
  */
170
- var checkForExternalKeyboard = function () {
171
- var el = document.createElement('input');
172
- el.type = 'text';
173
- el.autofocus = true;
174
- el.addEventListener('focusin', function () {
175
- // remove the input after the keyboard has displayed, plus a small buffer
176
- window.setTimeout(function () {
177
- el.blur();
178
- el.remove();
179
- }, KEYBOARD_ANIMATION_MS + 100);
180
- });
181
- document.documentElement.append(el);
178
+ const checkForExternalKeyboard = () => {
179
+ const el = document.createElement('input');
180
+ el.type = 'text';
181
+ el.autofocus = true;
182
+ el.addEventListener('focusin', () => {
183
+ // remove the input after the keyboard has displayed, plus a small buffer
184
+ window.setTimeout(() => {
185
+ el.blur();
186
+ el.remove();
187
+ }, KEYBOARD_ANIMATION_MS + 100);
188
+ });
189
+ document.documentElement.append(el);
182
190
  };
183
- var setupMobileEventListeners = function () {
184
- if (!exports.isMobileDevice() || !visualViewport)
185
- return;
186
- // set viewport height var at setup
191
+ const setupMobileEventListeners = () => {
192
+ if (!isMobileDevice() || !visualViewport) return;
193
+
194
+ // set viewport height var at setup
195
+ setVisualViewportHeightVar();
196
+
197
+ // add event listeners
198
+ visualViewport.addEventListener('resize', () => {
187
199
  setVisualViewportHeightVar();
188
- // add event listeners
189
- visualViewport.addEventListener('resize', function () {
190
- setVisualViewportHeightVar();
191
- // keep the document element scrolled to the top if a ReactModal is open
192
- if (document.body.classList.contains('ReactModal__Body--open')) {
193
- document.documentElement.scrollTop = 0;
194
- }
195
- });
196
- window.addEventListener('focusin', onFocusIn);
197
- window.addEventListener('focusout', onFocusOut);
198
- // check for external keyboard at setup
199
- checkForExternalKeyboard();
200
+
201
+ // keep the document element scrolled to the top if a ReactModal is open
202
+ if (document.body.classList.contains('ReactModal__Body--open')) {
203
+ document.documentElement.scrollTop = 0;
204
+ }
205
+ });
206
+ window.addEventListener('focusin', onFocusIn);
207
+ window.addEventListener('focusout', onFocusOut);
208
+
209
+ // check for external keyboard at setup
210
+ checkForExternalKeyboard();
200
211
  };
201
212
  exports.setupMobileEventListeners = setupMobileEventListeners;
213
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwicmVxdWlyZSIsIktFWUJPQVJEX0FOSU1BVElPTl9NUyIsImdldFZlcnRpY2FsbHlTY3JvbGxhYmxlUGFyZW50IiwiZWxlbWVudCIsInN0eWxlIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImV4Y2x1ZGVTdGF0aWNQYXJlbnQiLCJwb3NpdGlvbiIsIm92ZXJmbG93UmVnZXgiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwidGVzdCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZG9jdW1lbnQiLCJzY3JvbGxpbmdFbGVtZW50IiwiZXhwb3J0cyIsImdldEZpcnN0UGFyZW50RWxlbWVudFdpdGhDbGFzc05hbWUiLCJjbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInVuZGVmaW5lZCIsImlzTW9iaWxlRGV2aWNlIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwibWF4VG91Y2hQb2ludHMiLCJoYXNFeHRlcm5hbEtleWJvYXJkIiwid2luZG93Iiwic2V0SGFzRXh0ZXJuYWxLZXlib2FyZCIsImdldExvZ2dlciIsImRlYnVnIiwid2luZG93V2l0aG91dFR5cGUiLCJzZXRWaXN1YWxWaWV3cG9ydEhlaWdodFZhciIsImhlaWdodCIsInZpc3VhbFZpZXdwb3J0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2V0UHJvcGVydHkiLCJpc1RleHRJbnB1dCIsImVsIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiaW5wdXRFbCIsInR5cGUiLCJpbmNsdWRlcyIsImNvbnRlbnRFZGl0YWJsZSIsInVwZGF0ZUhhc0V4dGVybmFsS2V5Ym9hcmRBZnRlckZvY3VzVGltZW91dCIsInNjcm9sbFRvRWxlbWVudEFmdGVyRm9jdXNUaW1lb3V0IiwidXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXMiLCJjbG9zZWRWaXN1YWxWaWV3cG9ydEhlaWdodCIsInNldFRpbWVvdXQiLCJrZXlib2FyZEhlaWdodCIsInNjcm9sbFRvRWxlbWVudEFmdGVyRm9jdXMiLCJzY3JvbGxQYXJlbnQiLCJzY3JvbGxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmVjdCIsImJvdHRvbSIsInRvcCIsIm5ld1Njcm9sbFRvcCIsInNjcm9sbFRvcCIsInNjcm9sbFRvIiwiYmVoYXZpb3IiLCJvbkZvY3VzSW4iLCJlIiwidGFyZ2V0Iiwib25Gb2N1c091dCIsImNsZWFyVGltZW91dCIsImNoZWNrRm9yRXh0ZXJuYWxLZXlib2FyZCIsImNyZWF0ZUVsZW1lbnQiLCJhdXRvZm9jdXMiLCJhZGRFdmVudExpc3RlbmVyIiwiYmx1ciIsInJlbW92ZSIsImFwcGVuZCIsInNldHVwTW9iaWxlRXZlbnRMaXN0ZW5lcnMiLCJib2R5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RvbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tICcuL2xvZ2dlcidcblxuY29uc3QgS0VZQk9BUkRfQU5JTUFUSU9OX01TID0gMjUwXG5cbi8qKlxuICogR2V0IHRoZSBuZWFyZXN0IHZlcnRpY2FsbHkgc2Nyb2xsYWJsZSBwYXJlbnQgb2YgYW4gZWxlbWVudFxuICogQHBhcmFtIHsgSFRNTEVsZW1lbnQgfSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gc3RhcnQgd2l0aFxuICogQHJldHVybnMgVGhlIG5lYXJlc3QgdmVydGljYWxseSBzY3JvbGxhYmxlIHBhcmVudCBlbGVtZW50XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWZXJ0aWNhbGx5U2Nyb2xsYWJsZVBhcmVudCA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuXHRsZXQgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpXG5cdGNvbnN0IGV4Y2x1ZGVTdGF0aWNQYXJlbnQgPSBzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJ1xuXHRjb25zdCBvdmVyZmxvd1JlZ2V4ID0gLyhhdXRvfHNjcm9sbHxoaWRkZW4pL1xuXG5cdGZvciAobGV0IHBhcmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDsgKHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50KTsgKSB7XG5cdFx0c3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBhcmVudClcblx0XHRpZiAoZXhjbHVkZVN0YXRpY1BhcmVudCAmJiBzdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIGNvbnRpbnVlXG5cdFx0aWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSkgJiYgcGFyZW50LnNjcm9sbEhlaWdodCA+IHBhcmVudC5jbGllbnRIZWlnaHQpXG5cdFx0XHRyZXR1cm4gcGFyZW50XG5cdH1cblx0cmV0dXJuIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnRcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZpcnN0IHBhcmVudCB0aGF0IGhhcyB0aGUgZ2l2ZW4gY2xhc3NOYW1lIGluIGl0cyBjbGFzc0xpc3RcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSB0YXJnZXQgZWxlbWVudFxuICogQHBhcmFtIGNsYXNzTmFtZSBUaGUgY2xhc3NOYW1lIHRvIG1hdGNoXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaXJzdFBhcmVudEVsZW1lbnRXaXRoQ2xhc3NOYW1lID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRmb3IgKGxldCBwYXJlbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGVsZW1lbnQ7IChwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudCk7ICkge1xuXHRcdGlmIChwYXJlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHJldHVybiBwYXJlbnRcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgdGhlIGRldmljZSBiZWluZyB1c2VkIGlzIG9uZSBvZiBzZXZlcmFsIG1haW5zdHJlYW0gbW9iaWxlIGRldmljZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTW9iaWxlRGV2aWNlID0gKCkgPT4ge1xuXHRyZXR1cm4gKFxuXHRcdC9hbmRyb2lkfGlwYWR8aXBvZHxpcGhvbmUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpIHx8XG5cdFx0KC9tYWNpbnRvc2gvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cylcblx0KVxufVxuXG4vKiogUmV0dXJuIHdoZXRoZXIgdGhlIGRldmljZSBpcyB1c2luZyBhbiBleHRlcm5hbCBrZXlib2FyZCB2cy4gdGhlIG5hdGl2ZSBvbi1zY3JlZW4gT1Mga2V5Ym9hcmQuICovXG5leHBvcnQgY29uc3QgaGFzRXh0ZXJuYWxLZXlib2FyZCA9ICgpOiBib29sZWFuIHwgdW5kZWZpbmVkID0+ICh3aW5kb3cgYXMgYW55KS5oYXNFeHRlcm5hbEtleWJvYXJkXG5cbi8qKlxuICogU2V0cyBgd2luZG93Lmhhc0V4dGVybmFsS2V5Ym9hcmRgLCByZXR1cm5lZCBieSBgaGFzRXh0ZXJuYWxLZXlib2FyZGAuXG4gKi9cbmNvbnN0IHNldEhhc0V4dGVybmFsS2V5Ym9hcmQgPSAoaGFzRXh0ZXJuYWxLZXlib2FyZDogYm9vbGVhbikgPT4ge1xuXHRnZXRMb2dnZXIoKS5kZWJ1ZygnaGFzRXh0ZXJuYWxLZXlib2FyZCcsIGhhc0V4dGVybmFsS2V5Ym9hcmQpXG5cdGNvbnN0IHdpbmRvd1dpdGhvdXRUeXBlID0gd2luZG93IGFzIGFueVxuXHR3aW5kb3dXaXRob3V0VHlwZS5oYXNFeHRlcm5hbEtleWJvYXJkID0gaGFzRXh0ZXJuYWxLZXlib2FyZFxufVxuXG4vKipcbiAqIDEwMHZoIGlzIGtpbmQgb2YgYuKKmHJrZWQgb24gbW9iaWxlIHNhZmFyaSwgd2UgaGF2ZSB0byBzZXQgaXQgcHJvZ3JhbW1hdGljYWxseSBoZXJlXG4gKiBzbyB3ZSBjYW4gY2FsY3VsYXRlIGRldmljZS1pbmRlcGVuZGVudCB2aWV3cG9ydCBoZWlnaHRzXG4gKiBodHRwczovL2FsbHRoaW5nc3NtaXR0eS5jb20vMjAyMC8wNS8xMS9jc3MtZml4LWZvci0xMDB2aC1pbi1tb2JpbGUtd2Via2l0L1xuICpcbiAqIFNldHMgdGhlIENTUyB2YXJpYWJsZSBgLS12aXN1YWwtdmlld3BvcnQtaGVpZ2h0YCBvbiB0aGUgYGRvY3VtZW50RWxlbWVudGAvPGh0bWw+LlxuICpcbiAqL1xuY29uc3Qgc2V0VmlzdWFsVmlld3BvcnRIZWlnaHRWYXIgPSAoKSA9PiB7XG5cdGNvbnN0IGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQuaGVpZ2h0IDogMFxuXHRkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdmlzdWFsLXZpZXdwb3J0LWhlaWdodCcsIGAke2hlaWdodH1weGApXG59XG5cbi8qKlxuICogSXMgdGhlIGdpdmVuIGVsZW1lbnQgY2FwYWJsZSBvZiB0ZXh0IGlucHV0P1xuICpcbiAqIEBwYXJhbSBlbCBBbiBIVE1MIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzVGV4dElucHV0ID0gKGVsOiBIVE1MRWxlbWVudCkgPT4ge1xuXHRjb25zdCB0YWdOYW1lID0gZWwudGFnTmFtZSAmJiBlbC50YWdOYW1lLnRvTG93ZXJDYXNlKClcblx0aWYgKHRhZ05hbWUgPT09ICd0ZXh0YXJlYScpIHJldHVybiB0cnVlXG5cdGlmICh0YWdOYW1lID09PSAnaW5wdXQnKSB7XG5cdFx0Y29uc3QgaW5wdXRFbCA9IGVsIGFzIEhUTUxJbnB1dEVsZW1lbnRcblx0XHRyZXR1cm4gaW5wdXRFbC50eXBlICE9PSAnYnV0dG9uJyAmJiBpbnB1dEVsLnR5cGUgIT09ICdyYWRpbycgJiYgaW5wdXRFbC50eXBlICE9PSAnY2hlY2tib3gnXG5cdH1cblx0Ly8gUXVpbGwgZWRpdG9yXG5cdHJldHVybiB0YWdOYW1lID09PSAnZGl2JyAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ3FsLWVkaXRvcicpICYmIGVsLmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnXG59XG5cbmxldCB1cGRhdGVIYXNFeHRlcm5hbEtleWJvYXJkQWZ0ZXJGb2N1c1RpbWVvdXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxubGV0IHNjcm9sbFRvRWxlbWVudEFmdGVyRm9jdXNUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcblxuY29uc3QgdXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXMgPSAoKSA9PiB7XG5cdGNvbnN0IGNsb3NlZFZpc3VhbFZpZXdwb3J0SGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAwXG5cdC8vIHdhaXQgZm9yIHRoZSBrZXlib2FyZCBhbmltYXRpb25cblx0dXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXNUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdC8vIGZpbmQgdGhlIGtleWJvYXJkIGhlaWdodCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBpbiB2aWV3cG9ydCBoZWlnaHRcblx0XHRjb25zdCBrZXlib2FyZEhlaWdodCA9IGNsb3NlZFZpc3VhbFZpZXdwb3J0SGVpZ2h0IC0gKHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQuaGVpZ2h0IDogMClcblx0XHQvLyBvbiBmaXJzdC1sb2FkIHRoZSBpbnB1dCBmb2N1cyBjYW4gZmFpbFxuXHRcdC8vIHdoZW4gdGhpcyBoYXBwZW5zIHRoZSBoZWlnaHQgaXMgMCwgYW5kIHRoaXMgT05MWSBoYXBwZW5zIHdoZW4gdGhlcmUgaXMgTk9UIGFuIGV4dGVybmFsIGtleWJvYXJkXG5cdFx0aWYgKGtleWJvYXJkSGVpZ2h0ID09PSAwICYmIGhhc0V4dGVybmFsS2V5Ym9hcmQoKSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRzZXRIYXNFeHRlcm5hbEtleWJvYXJkKGZhbHNlKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBpZiB0aGUga2V5Ym9hcmQgaGVpZ2h0IGlzIGdyZWF0ZXIgdGhhbiAxMDAsIHRoYXQgbWVhbnMgdGhlIGZ1bGwgb25zY3JlZW4ga2V5Ym9hcmQgZGlzcGxheWVkXG5cdFx0XHQvLyBvdGhlcndpc2UsIG9ubHkgdGhlIHNtYWxsIGNvbnRleHQgbWVudSBkaXNwbGF5ZWQsIG1lYW5pbmcgdGhlcmUgaXMgYW4gZXh0ZXJuYWwga2V5Ym9hcmRcblx0XHRcdHNldEhhc0V4dGVybmFsS2V5Ym9hcmQoa2V5Ym9hcmRIZWlnaHQgPCAxMDApXG5cdFx0fVxuXG5cdFx0dXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXNUaW1lb3V0ID0gdW5kZWZpbmVkXG5cdH0sIEtFWUJPQVJEX0FOSU1BVElPTl9NUylcbn1cblxuY29uc3Qgc2Nyb2xsVG9FbGVtZW50QWZ0ZXJGb2N1cyA9IChlbDogSFRNTEVsZW1lbnQpID0+IHtcblx0Ly8gd2FpdCBmb3IgdGhlIGtleWJvYXJkIGFuaW1hdGlvblxuXHRzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcblx0XHQvLyBhZnRlciB0aGUga2V5Ym9hcmQgaXMgb3BlbiwgY2hlY2sgZm9yIHRoZSBlbOKAmXMgc2Nyb2xsYWJsZSBwYXJlbnQsIGFzIGl0IGNvdWxkIGhhdmUganVzdCBiZWNvbWUgc2Nyb2xsYWJsZVxuXHRcdGNvbnN0IHNjcm9sbFBhcmVudCA9IGdldFZlcnRpY2FsbHlTY3JvbGxhYmxlUGFyZW50KGVsKVxuXHRcdC8vIGlmIHRoZSBlbCBoYXMgYSBzY3JvbGxhYmxlIHBhcmVudCBvdGhlciB0aGFuIHRoZSBkb2N1bWVudCwgc2Nyb2xsIGl0IGJhY2sgaW50byB2aWV3XG5cdFx0aWYgKHNjcm9sbFBhcmVudCAmJiBzY3JvbGxQYXJlbnQgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuXHRcdFx0Y29uc3Qgc2Nyb2xsUmVjdCA9IHNjcm9sbFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXHRcdFx0Y29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cdFx0XHQvLyBvbmx5IHNjcm9sbCBpbnRvIHZpZXcgaWYgb3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHBhcmVudCBib3VuZHNcblx0XHRcdGlmIChyZWN0LmJvdHRvbSA8IHNjcm9sbFJlY3QudG9wIHx8IHJlY3QudG9wID4gc2Nyb2xsUmVjdC5ib3R0b20pIHtcblx0XHRcdFx0Y29uc3QgbmV3U2Nyb2xsVG9wID0gc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCArIHJlY3QudG9wIC0gc2Nyb2xsUmVjdC50b3AgLSAxMFxuXHRcdFx0XHRnZXRMb2dnZXIoKS5kZWJ1Zygnc2Nyb2xsVG9FbCcsIG5ld1Njcm9sbFRvcClcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cblx0XHRcdFx0aWYgKHNjcm9sbFBhcmVudC5zY3JvbGxUbykge1xuXHRcdFx0XHRcdHNjcm9sbFBhcmVudC5zY3JvbGxUbyh7IHRvcDogbmV3U2Nyb2xsVG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzY3JvbGxQYXJlbnQuc2Nyb2xsVG9wID0gbmV3U2Nyb2xsVG9wXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzVGltZW91dCA9IHVuZGVmaW5lZFxuXHR9LCBLRVlCT0FSRF9BTklNQVRJT05fTVMpXG59XG5cbi8qKlxuICogRXZlbnQgaGFuZGxlciBmb3IgXCJmb2N1c2luXCIgZXZlbnQuXG4gKlxuICogXCJmb2N1c2luXCIgYnViYmxlcyB1cCBmcm9tIGFsbCBmb2N1cyBldmVudHMsIHNvIHVzZXMgYGlzVGV4dElucHV0YCB0byBvbmx5IHJlYWN0IHRvIFwia2V5Ym9hcmRcIiBmb2N1cyBldmVudHMuXG4gKlxuICogQ2hlY2tzIGZvciBleHRlcm5hbCBrZXlib2FyZCBhbmQgc2Nyb2xscyB0byB0aGUgZm9jdXNlZCBlbGVtZW50IGFmdGVyIGFueSBhbmltYXRpb25zLCBlLmcuIGtleWJvYXJkIG9wZW4uXG4gKlxuICovXG5jb25zdCBvbkZvY3VzSW4gPSAoZTogRXZlbnQpID0+IHtcblx0aWYgKCFlLnRhcmdldCB8fCAhaXNUZXh0SW5wdXQoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSByZXR1cm5cblx0dXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXMoKVxuXHRzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KVxufVxuXG4vKipcbiAqIEV2ZW50IGhhbmRsZXIgZm9yIFwiZm9jdXNvdXRcIiBldmVudC5cbiAqXG4gKiBcImZvY3Vzb3V0XCIgYnViYmxlcyB1cCBmcm9tIGFsbCBmb2N1cyBldmVudHMsIHNvIHVzZXMgYGlzVGV4dElucHV0YCB0byBvbmx5IHJlYWN0IHRvIFwia2V5Ym9hcmRcIiBmb2N1cyBldmVudHMuXG4gKlxuICogQ2xlYXJzIGFueSBwZW5kaW5nIHRpbWVvdXRzIGZyb20gXCJmb2N1c2luXCIgZXZlbnRzLlxuICpcbiAqL1xuY29uc3Qgb25Gb2N1c091dCA9IChlOiBFdmVudCkgPT4ge1xuXHRpZiAoIWUudGFyZ2V0IHx8ICFpc1RleHRJbnB1dChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHJldHVyblxuXHRpZiAodXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXNUaW1lb3V0KSB7XG5cdFx0d2luZG93LmNsZWFyVGltZW91dCh1cGRhdGVIYXNFeHRlcm5hbEtleWJvYXJkQWZ0ZXJGb2N1c1RpbWVvdXQpXG5cdFx0dXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXNUaW1lb3V0ID0gdW5kZWZpbmVkXG5cdH1cblx0aWYgKHNjcm9sbFRvRWxlbWVudEFmdGVyRm9jdXNUaW1lb3V0KSB7XG5cdFx0d2luZG93LmNsZWFyVGltZW91dChzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzVGltZW91dClcblx0XHRzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzVGltZW91dCA9IHVuZGVmaW5lZFxuXHR9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGRldmljZSBpcyB1c2luZyBhbiBleHRlcm5hbCBrZXlib2FyZCBieSBhcHBlbmRpbmcgYW4gYGlucHV0YCBhbmQgZm9jdXNpbmcgaXQuXG4gKlxuICogVGhpcyB3aWxsIHRyaWdnZXIgdGhlIGBvbkZvY3VzSW5gIGV2ZW50IGhhbmRsZXIsIHdoaWNoIHVwZGF0ZXMgdGhlIGBoYXNFeHRlcm5hbEtleWJvYXJkYCBnbG9iYWwuXG4gKi9cbmNvbnN0IGNoZWNrRm9yRXh0ZXJuYWxLZXlib2FyZCA9ICgpID0+IHtcblx0Y29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG5cdGVsLnR5cGUgPSAndGV4dCdcblx0ZWwuYXV0b2ZvY3VzID0gdHJ1ZVxuXHRlbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgKCkgPT4ge1xuXHRcdC8vIHJlbW92ZSB0aGUgaW5wdXQgYWZ0ZXIgdGhlIGtleWJvYXJkIGhhcyBkaXNwbGF5ZWQsIHBsdXMgYSBzbWFsbCBidWZmZXJcblx0XHR3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRlbC5ibHVyKClcblx0XHRcdGVsLnJlbW92ZSgpXG5cdFx0fSwgS0VZQk9BUkRfQU5JTUFUSU9OX01TICsgMTAwKVxuXHR9KVxuXHRkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kKGVsKVxufVxuXG5leHBvcnQgY29uc3Qgc2V0dXBNb2JpbGVFdmVudExpc3RlbmVycyA9ICgpID0+IHtcblx0aWYgKCFpc01vYmlsZURldmljZSgpIHx8ICF2aXN1YWxWaWV3cG9ydCkgcmV0dXJuXG5cblx0Ly8gc2V0IHZpZXdwb3J0IGhlaWdodCB2YXIgYXQgc2V0dXBcblx0c2V0VmlzdWFsVmlld3BvcnRIZWlnaHRWYXIoKVxuXG5cdC8vIGFkZCBldmVudCBsaXN0ZW5lcnNcblx0dmlzdWFsVmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xuXHRcdHNldFZpc3VhbFZpZXdwb3J0SGVpZ2h0VmFyKClcblxuXHRcdC8vIGtlZXAgdGhlIGRvY3VtZW50IGVsZW1lbnQgc2Nyb2xsZWQgdG8gdGhlIHRvcCBpZiBhIFJlYWN0TW9kYWwgaXMgb3BlblxuXHRcdGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnUmVhY3RNb2RhbF9fQm9keS0tb3BlbicpKSB7XG5cdFx0XHRkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wID0gMFxuXHRcdH1cblx0fSlcblx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBvbkZvY3VzSW4pXG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIG9uRm9jdXNPdXQpXG5cblx0Ly8gY2hlY2sgZm9yIGV4dGVybmFsIGtleWJvYXJkIGF0IHNldHVwXG5cdGNoZWNrRm9yRXh0ZXJuYWxLZXlib2FyZCgpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLHFCQUFxQixHQUFHLEdBQUc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQyw2QkFBNkIsR0FBSUMsT0FBb0IsSUFBSztFQUN0RSxJQUFJQyxLQUFLLEdBQUdDLGdCQUFnQixDQUFDRixPQUFPLENBQUM7RUFDckMsTUFBTUcsbUJBQW1CLEdBQUdGLEtBQUssQ0FBQ0csUUFBUSxLQUFLLFVBQVU7RUFDekQsTUFBTUMsYUFBYSxHQUFHLHNCQUFzQjtFQUU1QyxLQUFLLElBQUlDLE1BQTBCLEdBQUdOLE9BQU8sRUFBR00sTUFBTSxHQUFHQSxNQUFNLENBQUNDLGFBQWEsR0FBSztJQUNqRk4sS0FBSyxHQUFHQyxnQkFBZ0IsQ0FBQ0ksTUFBTSxDQUFDO0lBQ2hDLElBQUlILG1CQUFtQixJQUFJRixLQUFLLENBQUNHLFFBQVEsS0FBSyxRQUFRLEVBQUU7SUFDeEQsSUFBSUMsYUFBYSxD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U0FBUztFQUN2RDtFQUNBLElBQUl5QixnQ0FBZ0MsRUFBRTtJQUNyQ25CLE1BQU0sQ0FBQ3VDLFlBQVksQ0FBQ3BCLGdDQUFnQyxDQUFDO0lBQ3JEQSxnQ0FBZ0MsR0FBR3pCLFNBQVM7RUFDN0M7QUFDRCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOEMsd0JBQXdCLEdBQUdBLENBQUEsS0FBTTtFQUN0QyxNQUFNN0IsRUFBRSxHQUFHeEIsUUFBUSxDQUFDc0QsYUFBYSxDQUFDLE9BQU8sQ0FBQztFQUMxQzlCLEVBQUUsQ0FBQ0ksSUFBSSxHQUFHLE1BQU07RUFDaEJKLEVBQUUsQ0FBQytCLFNBQVMsR0FBRyxJQUFJO0VBQ25CL0IsRUFBRSxDQUFDZ0MsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE1BQU07SUFDcEM7SUFDQTNDLE1BQU0sQ0FBQ3NCLFVBQVUsQ0FBQyxNQUFNO01BQ3ZCWCxFQUFFLENBQUNpQyxJQUFJLENBQUMsQ0FBQztNQUNUakMsRUFBRSxDQUFDa0MsTUFBTSxDQUFDLENBQUM7SUFDWixDQUFDLEVBQUV6RSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7RUFDaEMsQ0FBQyxDQUFDO0VBQ0ZlLFFBQVEsQ0FBQ3FCLGVBQWUsQ0FBQ3NDLE1BQU0sQ0FBQ25DLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBRU0sTUFBTW9DLHlCQUF5QixHQUFHQSxDQUFBLEtBQU07RUFDOUMsSUFBSSxDQUFDcEQsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDWSxjQUFjLEVBQUU7O0VBRTFDO0VBQ0FGLDBCQUEwQixDQUFDLENBQUM7O0VBRTVCO0VBQ0FFLGNBQWMsQ0FBQ29DLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNO0lBQy9DdEMsMEJBQTBCLENBQUMsQ0FBQzs7SUFFNUI7SUFDQSxJQUFJbEIsUUFBUSxDQUFDNkQsSUFBSSxDQUFDeEQsU0FBUyxDQUFDQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsRUFBRTtNQUMvRE4sUUFBUSxDQUFDcUIsZUFBZSxDQUFDd0IsU0FBUyxHQUFHLENBQUM7SUFDdkM7RUFDRCxDQUFDLENBQUM7RUFDRmhDLE1BQU0sQ0FBQzJDLGdCQUFnQixDQUFDLFNBQVMsRUFBRVIsU0FBUyxDQUFDO0VBQzdDbkMsTUFBTSxDQUFDMkMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFTCxVQUFVLENBQUM7O0VBRS9DO0VBQ0FFLHdCQUF3QixDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUFBbkQsT0FBQSxDQUFBMEQseUJBQUEsR0FBQUEseUJBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDomainIdentifierTypePluralString = exports.getDomainIdentifierTypeString = void 0;
4
- var shard_1 = require("./shard");
5
- var getDomainIdentifierTypeString = function () {
6
- return shard_1.isPurdueShard() ? 'Purdue career account alias or PUID' : 'Email Address';
7
- };
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getDomainIdentifierTypeString = exports.getDomainIdentifierTypePluralString = void 0;
7
+ var _shard = require("./shard");
8
+ const getDomainIdentifierTypeString = () => (0, _shard.isPurdueShard)() ? 'Purdue career account alias or PUID' : 'Email Address';
8
9
  exports.getDomainIdentifierTypeString = getDomainIdentifierTypeString;
9
- var getDomainIdentifierTypePluralString = function () {
10
- return shard_1.isPurdueShard() ? 'Purdue career account aliases or PUIDs' : 'Email Addresses';
11
- };
10
+ const getDomainIdentifierTypePluralString = () => (0, _shard.isPurdueShard)() ? 'Purdue career account aliases or PUIDs' : 'Email Addresses';
12
11
  exports.getDomainIdentifierTypePluralString = getDomainIdentifierTypePluralString;
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2hhcmQiLCJyZXF1aXJlIiwiZ2V0RG9tYWluSWRlbnRpZmllclR5cGVTdHJpbmciLCJpc1B1cmR1ZVNoYXJkIiwiZXhwb3J0cyIsImdldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RvbWFpbklkZW50aWZpZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQdXJkdWVTaGFyZCB9IGZyb20gJy4vc2hhcmQnXG5cbmV4cG9ydCBjb25zdCBnZXREb21haW5JZGVudGlmaWVyVHlwZVN0cmluZyA9ICgpID0+XG5cdGlzUHVyZHVlU2hhcmQoKSA/ICdQdXJkdWUgY2FyZWVyIGFjY291bnQgYWxpYXMgb3IgUFVJRCcgOiAnRW1haWwgQWRkcmVzcydcblxuZXhwb3J0IGNvbnN0IGdldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nID0gKCkgPT5cblx0aXNQdXJkdWVTaGFyZCgpID8gJ1B1cmR1ZSBjYXJlZXIgYWNjb3VudCBhbGlhc2VzIG9yIFBVSURzJyA6ICdFbWFpbCBBZGRyZXNzZXMnXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVPLE1BQU1DLDZCQUE2QixHQUFHQSxDQUFBLEtBQzVDLElBQUFDLG9CQUFhLEVBQUMsQ0FBQyxHQUFHLHFDQUFxQyxHQUFHLGVBQWU7QUFBQUMsT0FBQSxDQUFBRiw2QkFBQSxHQUFBQSw2QkFBQTtBQUVuRSxNQUFNRyxtQ0FBbUMsR0FBR0EsQ0FBQSxLQUNsRCxJQUFBRixvQkFBYSxFQUFDLENBQUMsR0FBRyx3Q0FBd0MsR0FBRyxpQkFBaUI7QUFBQUMsT0FBQSxDQUFBQyxtQ0FBQSxHQUFBQSxtQ0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,5 +1,9 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.getRootModelName = void 0;
4
- var getRootModelName = function (props) { return props.modelName.split('.').slice(0, -1).join('.'); };
7
+ const getRootModelName = props => props.modelName.split('.').slice(0, -1).join('.');
5
8
  exports.getRootModelName = getRootModelName;
9
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRSb290TW9kZWxOYW1lIiwicHJvcHMiLCJtb2RlbE5hbWUiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZW50aXR5VXNlclJvbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGdldFJvb3RNb2RlbE5hbWUgPSAocHJvcHM6IHsgbW9kZWxOYW1lOiBzdHJpbmcgfSkgPT4gcHJvcHMubW9kZWxOYW1lLnNwbGl0KCcuJykuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxNQUFNQSxnQkFBZ0IsR0FBSUMsS0FBNEIsSUFBS0EsS0FBSyxDQUFDQyxTQUFTLENBQUNDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQUFDLE9BQUEsQ0FBQU4sZ0JBQUEsR0FBQUEsZ0JBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1 +1 @@
1
- export declare const constructErrorFromCaughtError: (caughtError: unknown, name: string, message?: string | undefined) => Error;
1
+ export declare const constructErrorFromCaughtError: (caughtError: unknown, name: string, message?: string) => Error;
@@ -1,20 +1,22 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.constructErrorFromCaughtError = void 0;
4
- var constructErrorFromCaughtError = function (caughtError, name, message) {
5
- var error = new Error(message);
6
- error.name = name;
7
- if (caughtError instanceof Error) {
8
- error.message += "" + (message ? '.\n' : '') + (caughtError.name !== 'Error' ? caughtError.name + ": " : '') + caughtError.message;
9
- error.stack = caughtError.stack;
10
- // TODO: use `new Error(message, { cause: caughtError })` once we upgrade TS to allow es2022
11
- }
12
- else if (typeof caughtError === 'string') {
13
- error.message += "" + (message ? '.\n' : '') + caughtError;
14
- }
15
- else if (caughtError && typeof caughtError === 'object') {
16
- error.message += "" + (message ? '.\n' : '') + JSON.stringify(caughtError);
17
- }
18
- return error;
7
+ const constructErrorFromCaughtError = (caughtError, name, message) => {
8
+ const error = new Error(message);
9
+ error.name = name;
10
+ if (caughtError instanceof Error) {
11
+ error.message += `${message ? '.\n' : ''}${caughtError.name !== 'Error' ? `${caughtError.name}: ` : ''}${caughtError.message}`;
12
+ error.stack = caughtError.stack;
13
+ // TODO: use `new Error(message, { cause: caughtError })` once we upgrade TS to allow es2022
14
+ } else if (typeof caughtError === 'string') {
15
+ error.message += `${message ? '.\n' : ''}${caughtError}`;
16
+ } else if (caughtError && typeof caughtError === 'object') {
17
+ error.message += `${message ? '.\n' : ''}${JSON.stringify(caughtError)}`;
18
+ }
19
+ return error;
19
20
  };
20
21
  exports.constructErrorFromCaughtError = constructErrorFromCaughtError;
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25zdHJ1Y3RFcnJvckZyb21DYXVnaHRFcnJvciIsImNhdWdodEVycm9yIiwibmFtZSIsIm1lc3NhZ2UiLCJlcnJvciIsIkVycm9yIiwic3RhY2siLCJKU09OIiwic3RyaW5naWZ5IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY29uc3RydWN0RXJyb3JGcm9tQ2F1Z2h0RXJyb3IgPSAoY2F1Z2h0RXJyb3I6IHVua25vd24sIG5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykgPT4ge1xuXHRjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKVxuXHRlcnJvci5uYW1lID0gbmFtZVxuXHRpZiAoY2F1Z2h0RXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdGVycm9yLm1lc3NhZ2UgKz0gYCR7bWVzc2FnZSA/ICcuXFxuJyA6ICcnfSR7Y2F1Z2h0RXJyb3IubmFtZSAhPT0gJ0Vycm9yJyA/IGAke2NhdWdodEVycm9yLm5hbWV9OiBgIDogJyd9JHtcblx0XHRcdGNhdWdodEVycm9yLm1lc3NhZ2Vcblx0XHR9YFxuXHRcdGVycm9yLnN0YWNrID0gY2F1Z2h0RXJyb3Iuc3RhY2tcblx0XHQvLyBUT0RPOiB1c2UgYG5ldyBFcnJvcihtZXNzYWdlLCB7IGNhdXNlOiBjYXVnaHRFcnJvciB9KWAgb25jZSB3ZSB1cGdyYWRlIFRTIHRvIGFsbG93IGVzMjAyMlxuXHR9IGVsc2UgaWYgKHR5cGVvZiBjYXVnaHRFcnJvciA9PT0gJ3N0cmluZycpIHtcblx0XHRlcnJvci5tZXNzYWdlICs9IGAke21lc3NhZ2UgPyAnLlxcbicgOiAnJ30ke2NhdWdodEVycm9yfWBcblx0fSBlbHNlIGlmIChjYXVnaHRFcnJvciAmJiB0eXBlb2YgY2F1Z2h0RXJyb3IgPT09ICdvYmplY3QnKSB7XG5cdFx0ZXJyb3IubWVzc2FnZSArPSBgJHttZXNzYWdlID8gJy5cXG4nIDogJyd9JHtKU09OLnN0cmluZ2lmeShjYXVnaHRFcnJvcil9YFxuXHR9XG5cdHJldHVybiBlcnJvclxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxNQUFNQSw2QkFBNkIsR0FBR0EsQ0FBQ0MsV0FBb0IsRUFBRUMsSUFBWSxFQUFFQyxPQUFnQixLQUFLO0VBQ3RHLE1BQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFLLENBQUNGLE9BQU8sQ0FBQztFQUNoQ0MsS0FBSyxDQUFDRixJQUFJLEdBQUdBLElBQUk7RUFDakIsSUFBSUQsV0FBVyxZQUFZSSxLQUFLLEVBQUU7SUFDakNELEtBQUssQ0FBQ0QsT0FBTyxJQUFJLEdBQUdBLE9BQU8sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHRixXQUFXLENBQUNDLElBQUksS0FBSyxPQUFPLEdBQUcsR0FBR0QsV0FBVyxDQUFDQyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQ3JHRCxXQUFXLENBQUNFLE9BQU8sRUFDbEI7SUFDRkMsS0FBSyxDQUFDRSxLQUFLLEdBQUdMLFdBQVcsQ0FBQ0ssS0FBSztJQUMvQjtFQUNELENBQUMsTUFBTSxJQUFJLE9BQU9MLFdBQVcsS0FBSyxRQUFRLEVBQUU7SUFDM0NHLEtBQUssQ0FBQ0QsT0FBTyxJQUFJLEdBQUdBLE9BQU8sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHRixXQUFXLEVBQUU7RUFDekQsQ0FBQyxNQUFNLElBQUlBLFdBQVcsSUFBSSxPQUFPQSxXQUFXLEtBQUssUUFBUSxFQUFFO0lBQzFERyxLQUFLLENBQUNELE9BQU8sSUFBSSxHQUFHQSxPQUFPLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBR0ksSUFBSSxDQUFDQyxTQUFTLENBQUNQLFdBQVcsQ0FBQyxFQUFFO0VBQ3pFO0VBQ0EsT0FBT0csS0FBSztBQUNiLENBQUM7QUFBQUssT0FBQSxDQUFBVCw2QkFBQSxHQUFBQSw2QkFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,38 +1,45 @@
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 });
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
6
7
  exports.trackCustomEvent = void 0;
7
- var react_ga4_1 = __importDefault(require("react-ga4"));
8
- var constants_1 = require("../constants");
8
+ var _reactGa = _interopRequireDefault(require("react-ga4"));
9
+ var _constants = require("../constants");
9
10
  /**
10
11
  * Send an event to Google Analytics and App Insights
11
12
  * @param event
12
13
  */
13
- var trackCustomEvent = function (event) {
14
- var eventName = event.eventName, category = event.category, action = event.action, label = event.label;
15
- var userId = constants_1.getUserId();
16
- var appConfig = constants_1.getAppConfig();
17
- if (appConfig.GOOGLE_ANALYTICS_TRACKING_ID) {
18
- react_ga4_1.default.event(eventName, {
19
- event_category: category,
20
- action: action,
21
- event_label: label,
22
- user_id: userId
23
- });
24
- }
25
- if (appConfig.APP_INSIGHTS_CONNECTION_STRING) {
26
- var appInsights = constants_1.getAppInsights();
27
- appInsights.trackEvent({
28
- name: eventName,
29
- properties: {
30
- category: category,
31
- action: action,
32
- label: label,
33
- userId: userId
34
- }
35
- });
36
- }
14
+ const trackCustomEvent = event => {
15
+ const {
16
+ eventName,
17
+ category,
18
+ action,
19
+ label
20
+ } = event;
21
+ const userId = (0, _constants.getUserId)();
22
+ const appConfig = (0, _constants.getAppConfig)();
23
+ if (appConfig.GOOGLE_ANALYTICS_TRACKING_ID) {
24
+ _reactGa.default.event(eventName, {
25
+ event_category: category,
26
+ action: action,
27
+ event_label: label,
28
+ user_id: userId
29
+ });
30
+ }
31
+ if (appConfig.APP_INSIGHTS_CONNECTION_STRING) {
32
+ const appInsights = (0, _constants.getAppInsights)();
33
+ appInsights.trackEvent({
34
+ name: eventName,
35
+ properties: {
36
+ category: category,
37
+ action: action,
38
+ label: label,
39
+ userId: userId
40
+ }
41
+ });
42
+ }
37
43
  };
38
44
  exports.trackCustomEvent = trackCustomEvent;
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3RHYSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbnN0YW50cyIsInRyYWNrQ3VzdG9tRXZlbnQiLCJldmVudCIsImV2ZW50TmFtZSIsImNhdGVnb3J5IiwiYWN0aW9uIiwibGFiZWwiLCJ1c2VySWQiLCJnZXRVc2VySWQiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJHT09HTEVfQU5BTFlUSUNTX1RSQUNLSU5HX0lEIiwiZ2EiLCJldmVudF9jYXRlZ29yeSIsImV2ZW50X2xhYmVsIiwidXNlcl9pZCIsIkFQUF9JTlNJR0hUU19DT05ORUNUSU9OX1NUUklORyIsImFwcEluc2lnaHRzIiwiZ2V0QXBwSW5zaWdodHMiLCJ0cmFja0V2ZW50IiwibmFtZSIsInByb3BlcnRpZXMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2V2ZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2EgZnJvbSAncmVhY3QtZ2E0J1xuaW1wb3J0IHsgZ2V0QXBwQ29uZmlnLCBnZXRBcHBJbnNpZ2h0cywgZ2V0VXNlcklkIH0gZnJvbSAnLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi90eXBlcy9FdmVudCdcblxuLyoqXG4gKiBTZW5kIGFuIGV2ZW50IHRvIEdvb2dsZSBBbmFseXRpY3MgYW5kIEFwcCBJbnNpZ2h0c1xuICogQHBhcmFtIGV2ZW50XG4gKi9cbmV4cG9ydCBjb25zdCB0cmFja0N1c3RvbUV2ZW50ID0gKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuXHRjb25zdCB7IGV2ZW50TmFtZSwgY2F0ZWdvcnksIGFjdGlvbiwgbGFiZWwgfSA9IGV2ZW50XG5cdGNvbnN0IHVzZXJJZCA9IGdldFVzZXJJZCgpXG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGlmIChhcHBDb25maWcuR09PR0xFX0FOQUxZVElDU19UUkFDS0lOR19JRCkge1xuXHRcdGdhLmV2ZW50KGV2ZW50TmFtZSwge1xuXHRcdFx0ZXZlbnRfY2F0ZWdvcnk6IGNhdGVnb3J5LFxuXHRcdFx0YWN0aW9uOiBhY3Rpb24sXG5cdFx0XHRldmVudF9sYWJlbDogbGFiZWwsXG5cdFx0XHR1c2VyX2lkOiB1c2VySWRcblx0XHR9KVxuXHR9XG5cdGlmIChhcHBDb25maWcuQVBQX0lOU0lHSFRTX0NPTk5FQ1RJT05fU1RSSU5HKSB7XG5cdFx0Y29uc3QgYXBwSW5zaWdodHMgPSBnZXRBcHBJbnNpZ2h0cygpXG5cdFx0YXBwSW5zaWdodHMudHJhY2tFdmVudCh7XG5cdFx0XHRuYW1lOiBldmVudE5hbWUsXG5cdFx0XHRwcm9wZXJ0aWVzOiB7XG5cdFx0XHRcdGNhdGVnb3J5OiBjYXRlZ29yeSxcblx0XHRcdFx0YWN0aW9uOiBhY3Rpb24sXG5cdFx0XHRcdGxhYmVsOiBsYWJlbCxcblx0XHRcdFx0dXNlcklkOiB1c2VySWRcblx0XHRcdH1cblx0XHR9KVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1FLGdCQUFnQixHQUFJQyxLQUFrQixJQUFLO0VBQ3ZELE1BQU07SUFBRUMsU0FBUztJQUFFQyxRQUFRO0lBQUVDLE1BQU07SUFBRUM7RUFBTSxDQUFDLEdBQUdKLEtBQUs7RUFDcEQsTUFBTUssTUFBTSxHQUFHLElBQUFDLG9CQUFTLEVBQUMsQ0FBQztFQUMxQixNQUFNQyxTQUFTLEdBQUcsSUFBQUMsdUJBQVksRUFBQyxDQUFDO0VBQ2hDLElBQUlELFNBQVMsQ0FBQ0UsNEJBQTRCLEVBQUU7SUFDM0NDLGdCQUFFLENBQUNWLEtBQUssQ0FBQ0MsU0FBUyxFQUFFO01BQ25CVSxjQUFjLEVBQUVULFFBQVE7TUFDeEJDLE1BQU0sRUFBRUEsTUFBTTtNQUNkUyxXQUFXLEVBQUVSLEtBQUs7TUFDbEJTLE9BQU8sRUFBRVI7SUFDVixDQUFDLENBQUM7RUFDSDtFQUNBLElBQUlFLFNBQVMsQ0FBQ08sOEJBQThCLEVBQUU7SUFDN0MsTUFBTUMsV0FBVyxHQUFHLElBQUFDLHlCQUFjLEVBQUMsQ0FBQztJQUNwQ0QsV0FBVyxDQUFDRSxVQUFVLENBQUM7TUFDdEJDLElBQUksRUFBRWpCLFNBQVM7TUFDZmtCLFVBQVUsRUFBRTtRQUNYakIsUUFBUSxFQUFFQSxRQUFRO1FBQ2xCQyxNQUFNLEVBQUVBLE1BQU07UUFDZEMsS0FBSyxFQUFFQSxLQUFLO1FBQ1pDLE1BQU0sRUFBRUE7TUFDVDtJQUNELENBQUMsQ0FBQztFQUNIO0FBQ0QsQ0FBQztBQUFBZSxPQUFBLENBQUFyQixnQkFBQSxHQUFBQSxnQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,28 +1,32 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasGradePushEnabled = exports.hasAnyLtiExternalGroup = exports.hasAnyUniTimeExternalGroup = void 0;
4
- var externalProviderType_1 = require("../constants/externalProviderType");
5
- var hasAnyUniTimeExternalGroup = function (externalGroups, externalProviders) {
6
- var uniTimeExternalProvider = externalProviders.find(function (ep) { return ep.typename === externalProviderType_1.EXTERNAL_PROVIDER_TYPE.UNITIME; });
7
- if (!uniTimeExternalProvider) {
8
- return false;
9
- }
10
- return externalGroups.some(function (eg) { return eg.externalProviderId === uniTimeExternalProvider.id; });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hasGradePushEnabled = exports.hasAnyUniTimeExternalGroup = exports.hasAnyLtiExternalGroup = void 0;
7
+ var _externalProviderType = require("../constants/externalProviderType");
8
+ const hasAnyUniTimeExternalGroup = (externalGroups, externalProviders) => {
9
+ const uniTimeExternalProvider = externalProviders.find(ep => ep.typename === _externalProviderType.EXTERNAL_PROVIDER_TYPE.UNITIME);
10
+ if (!uniTimeExternalProvider) {
11
+ return false;
12
+ }
13
+ return externalGroups.some(eg => eg.externalProviderId === uniTimeExternalProvider.id);
11
14
  };
12
15
  exports.hasAnyUniTimeExternalGroup = hasAnyUniTimeExternalGroup;
13
- var hasAnyLtiExternalGroup = function (externalGroups, externalProviders) {
14
- var ltiExternalProvider = externalProviders.find(function (ep) { return ep.typename === externalProviderType_1.EXTERNAL_PROVIDER_TYPE.LTI; });
15
- if (!ltiExternalProvider) {
16
- return false;
17
- }
18
- return externalGroups.some(function (eg) { return eg.externalProviderId === ltiExternalProvider.id; });
16
+ const hasAnyLtiExternalGroup = (externalGroups, externalProviders) => {
17
+ const ltiExternalProvider = externalProviders.find(ep => ep.typename === _externalProviderType.EXTERNAL_PROVIDER_TYPE.LTI);
18
+ if (!ltiExternalProvider) {
19
+ return false;
20
+ }
21
+ return externalGroups.some(eg => eg.externalProviderId === ltiExternalProvider.id);
19
22
  };
20
23
  exports.hasAnyLtiExternalGroup = hasAnyLtiExternalGroup;
21
- var hasGradePushEnabled = function (externalGroups, externalProviders) {
22
- var ltiExternalProvider = externalProviders.find(function (ep) { return ep.gradePushEnabled; });
23
- if (!ltiExternalProvider) {
24
- return false;
25
- }
26
- return externalGroups.some(function (eg) { return eg.externalProviderId === ltiExternalProvider.id && !!eg.gradesUrl; });
24
+ const hasGradePushEnabled = (externalGroups, externalProviders) => {
25
+ const ltiExternalProvider = externalProviders.find(ep => ep.gradePushEnabled);
26
+ if (!ltiExternalProvider) {
27
+ return false;
28
+ }
29
+ return externalGroups.some(eg => eg.externalProviderId === ltiExternalProvider.id && !!eg.gradesUrl);
27
30
  };
28
31
  exports.hasGradePushEnabled = hasGradePushEnabled;
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0ZXJuYWxQcm92aWRlclR5cGUiLCJyZXF1aXJlIiwiaGFzQW55VW5pVGltZUV4dGVybmFsR3JvdXAiLCJleHRlcm5hbEdyb3VwcyIsImV4dGVybmFsUHJvdmlkZXJzIiwidW5pVGltZUV4dGVybmFsUHJvdmlkZXIiLCJmaW5kIiwiZXAiLCJ0eXBlbmFtZSIsIkVYVEVSTkFMX1BST1ZJREVSX1RZUEUiLCJVTklUSU1FIiwic29tZSIsImVnIiwiZXh0ZXJuYWxQcm92aWRlcklkIiwiaWQiLCJleHBvcnRzIiwiaGFzQW55THRpRXh0ZXJuYWxHcm91cCIsImx0aUV4dGVybmFsUHJvdmlkZXIiLCJMVEkiLCJoYXNHcmFkZVB1c2hFbmFibGVkIiwiZ3JhZGVQdXNoRW5hYmxlZCIsImdyYWRlc1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leHRlcm5hbEdyb3VwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVYVEVSTkFMX1BST1ZJREVSX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMvZXh0ZXJuYWxQcm92aWRlclR5cGUnXG5pbXBvcnQgeyBFeHRlcm5hbEdyb3VwIH0gZnJvbSAnLi4vdHlwZXMvRXh0ZXJuYWxHcm91cCdcbmltcG9ydCB7IEV4dGVybmFsUHJvdmlkZXIgfSBmcm9tICcuLi90eXBlcy9FeHRlcm5hbFByb3ZpZGVyJ1xuXG5leHBvcnQgY29uc3QgaGFzQW55VW5pVGltZUV4dGVybmFsR3JvdXAgPSAoZXh0ZXJuYWxHcm91cHM6IEV4dGVybmFsR3JvdXBbXSwgZXh0ZXJuYWxQcm92aWRlcnM6IEV4dGVybmFsUHJvdmlkZXJbXSkgPT4ge1xuXHRjb25zdCB1bmlUaW1lRXh0ZXJuYWxQcm92aWRlciA9IGV4dGVybmFsUHJvdmlkZXJzLmZpbmQoZXAgPT4gZXAudHlwZW5hbWUgPT09IEVYVEVSTkFMX1BST1ZJREVSX1RZUEUuVU5JVElNRSlcblxuXHRpZiAoIXVuaVRpbWVFeHRlcm5hbFByb3ZpZGVyKSB7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cblxuXHRyZXR1cm4gZXh0ZXJuYWxHcm91cHMuc29tZShlZyA9PiBlZy5leHRlcm5hbFByb3ZpZGVySWQgPT09IHVuaVRpbWVFeHRlcm5hbFByb3ZpZGVyLmlkKVxufVxuXG5leHBvcnQgY29uc3QgaGFzQW55THRpRXh0ZXJuYWxHcm91cCA9IChleHRlcm5hbEdyb3VwczogRXh0ZXJuYWxHcm91cFtdLCBleHRlcm5hbFByb3ZpZGVyczogRXh0ZXJuYWxQcm92aWRlcltdKSA9PiB7XG5cdGNvbnN0IGx0aUV4dGVybmFsUHJvdmlkZXIgPSBleHRlcm5hbFByb3ZpZGVycy5maW5kKGVwID0+IGVwLnR5cGVuYW1lID09PSBFWFRFUk5BTF9QUk9WSURFUl9UWVBFLkxUSSlcblxuXHRpZiAoIWx0aUV4dGVybmFsUHJvdmlkZXIpIHtcblx0XHRyZXR1cm4gZmFsc2Vcblx0fVxuXG5cdHJldHVybiBleHRlcm5hbEdyb3Vwcy5zb21lKGVnID0+IGVnLmV4dGVybmFsUHJvdmlkZXJJZCA9PT0gbHRpRXh0ZXJuYWxQcm92aWRlci5pZClcbn1cblxuZXhwb3J0IGNvbnN0IGhhc0dyYWRlUHVzaEVuYWJsZWQgPSAoZXh0ZXJuYWxHcm91cHM6IEV4dGVybmFsR3JvdXBbXSwgZXh0ZXJuYWxQcm92aWRlcnM6IEV4dGVybmFsUHJvdmlkZXJbXSkgPT4ge1xuXHRjb25zdCBsdGlFeHRlcm5hbFByb3ZpZGVyID0gZXh0ZXJuYWxQcm92aWRlcnMuZmluZChlcCA9PiBlcC5ncmFkZVB1c2hFbmFibGVkKVxuXG5cdGlmICghbHRpRXh0ZXJuYWxQcm92aWRlcikge1xuXHRcdHJldHVybiBmYWxzZVxuXHR9XG5cblx0cmV0dXJuIGV4dGVybmFsR3JvdXBzLnNvbWUoZWcgPT4gZWcuZXh0ZXJuYWxQcm92aWRlcklkID09PSBsdGlFeHRlcm5hbFByb3ZpZGVyLmlkICYmICEhZWcuZ3JhZGVzVXJsKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxxQkFBQSxHQUFBQyxPQUFBO0FBSU8sTUFBTUMsMEJBQTBCLEdBQUdBLENBQUNDLGNBQStCLEVBQUVDLGlCQUFxQyxLQUFLO0VBQ3JILE1BQU1DLHVCQUF1QixHQUFHRCxpQkFBaUIsQ0FBQ0UsSUFBSSxDQUFDQyxFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsUUFBUSxLQUFLQyw0Q0FBc0IsQ0FBQ0MsT0FBTyxDQUFDO0VBRTVHLElBQUksQ0FBQ0wsdUJBQXVCLEVBQUU7SUFDN0IsT0FBTyxLQUFLO0VBQ2I7RUFFQSxPQUFPRixjQUFjLENBQUNRLElBQUksQ0FBQ0MsRUFBRSxJQUFJQSxFQUFFLENBQUNDLGtCQUFrQixLQUFLUix1QkFBdUIsQ0FBQ1MsRUFBRSxDQUFDO0FBQ3ZGLENBQUM7QUFBQUMsT0FBQSxDQUFBYiwwQkFBQSxHQUFBQSwwQkFBQTtBQUVNLE1BQU1jLHNCQUFzQixHQUFHQSxDQUFDYixjQUErQixFQUFFQyxpQkFBcUMsS0FBSztFQUNqSCxNQUFNYSxtQkFBbUIsR0FBR2IsaUJBQWlCLENBQUNFLElBQUksQ0FBQ0MsRUFBRSxJQUFJQSxFQUFFLENBQUNDLFFBQVEsS0FBS0MsNENBQXNCLENBQUNTLEdBQUcsQ0FBQztFQUVwRyxJQUFJLENBQUNELG1CQUFtQixFQUFFO0lBQ3pCLE9BQU8sS0FBSztFQUNiO0VBRUEsT0FBT2QsY0FBYyxDQUFDUSxJQUFJLENBQUNDLEVBQUUsSUFBSUEsRUFBRSxDQUFDQyxrQkFBa0IsS0FBS0ksbUJBQW1CLENBQUNILEVBQUUsQ0FBQztBQUNuRixDQUFDO0FBQUFDLE9BQUEsQ0FBQUMsc0JBQUEsR0FBQUEsc0JBQUE7QUFFTSxNQUFNRyxtQkFBbUIsR0FBR0EsQ0FBQ2hCLGNBQStCLEVBQUVDLGlCQUFxQyxLQUFLO0VBQzlHLE1BQU1hLG1CQUFtQixHQUFHYixpQkFBaUIsQ0FBQ0UsSUFBSSxDQUFDQyxFQUFFLElBQUlBLEVBQUUsQ0FBQ2EsZ0JBQWdCLENBQUM7RUFFN0UsSUFBSSxDQUFDSCxtQkFBbUIsRUFBRTtJQUN6QixPQUFPLEtBQUs7RUFDYjtFQUVBLE9BQU9kLGNBQWMsQ0FBQ1EsSUFBSSxDQUFDQyxFQUFFLElBQUlBLEVBQUUsQ0FBQ0Msa0JBQWtCLEtBQUtJLG1CQUFtQixDQUFDSCxFQUFFLElBQUksQ0FBQyxDQUFDRixFQUFFLENBQUNTLFNBQVMsQ0FBQztBQUNyRyxDQUFDO0FBQUFOLE9BQUEsQ0FBQUksbUJBQUEsR0FBQUEsbUJBQUEiLCJpZ25vcmVMaXN0IjpbXX0=