studiokit-scaffolding-js 7.0.12-next.1.4 → 7.0.12-next.2.2

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 (258) hide show
  1. package/lib/components/ActionList.js +170 -34
  2. package/lib/components/AlertDialog.js +133 -9
  3. package/lib/components/AlertWithIcon.js +92 -25
  4. package/lib/components/ConnectedModal.js +43 -13
  5. package/lib/components/Dropdowns/GroupsDropdown.js +69 -44
  6. package/lib/components/Dropdowns/ManagedNavDropdown.js +100 -67
  7. package/lib/components/Dropdowns/UserDropdown.js +111 -21
  8. package/lib/components/Dropdowns/index.js +27 -9
  9. package/lib/components/EntityOwnerList.js +52 -18
  10. package/lib/components/Error.js +106 -11
  11. package/lib/components/ErrorBoundary.js +134 -35
  12. package/lib/components/ErrorMessage.js +44 -9
  13. package/lib/components/Forms/DateField.js +61 -42
  14. package/lib/components/Forms/TimeField.js +81 -42
  15. package/lib/components/Forms/index.js +27 -4
  16. package/lib/components/Groups/CreateEditCopySaveButtons.js +114 -11
  17. package/lib/components/Groups/ExternalGroups/Attach.js +212 -148
  18. package/lib/components/Groups/ExternalGroups/Table.js +181 -45
  19. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
  20. package/lib/components/Groups/RosterSyncInfo.js +147 -20
  21. package/lib/components/HOC/AccessibleAppComponent.js +98 -73
  22. package/lib/components/HOC/ActivityRequiredComponent.js +92 -49
  23. package/lib/components/HOC/AsyncComponent.js +54 -39
  24. package/lib/components/HOC/AuthenticatedComponent.js +58 -38
  25. package/lib/components/HOC/CollectionComponent.js +170 -110
  26. package/lib/components/HOC/CollectionFirstItemComponent.js +51 -38
  27. package/lib/components/HOC/CollectionItemComponent.js +168 -106
  28. package/lib/components/HOC/ConnectedModalComponent.js +109 -80
  29. package/lib/components/HOC/DataDependentComponent.js +29 -21
  30. package/lib/components/HOC/EntityComponent.js +71 -57
  31. package/lib/components/HOC/FullscreenModalComponent.js +163 -123
  32. package/lib/components/HOC/GroupActivityRequiredComponent.js +45 -31
  33. package/lib/components/HOC/GuidComponent.js +29 -22
  34. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +41 -31
  35. package/lib/components/HOC/ModelErrorRedirectComponent.js +51 -47
  36. package/lib/components/HOC/SearchPersistorComponent.js +240 -166
  37. package/lib/components/HOC/UnauthenticatedComponent.js +37 -25
  38. package/lib/components/HOC/UserComponent.js +12 -7
  39. package/lib/components/Icons/IconAlphaList.js +33 -5
  40. package/lib/components/Icons/IconExternalUser.js +33 -5
  41. package/lib/components/Icons/IconImpersonation.js +33 -5
  42. package/lib/components/Icons/IconStopImpersonating.js +33 -5
  43. package/lib/components/Icons/IconTable.js +35 -7
  44. package/lib/components/Icons/IconTableDeleteCol.js +33 -5
  45. package/lib/components/Icons/IconTableDeleteRow.js +33 -5
  46. package/lib/components/Icons/IconTableInsertCol.js +33 -5
  47. package/lib/components/Icons/IconTableInsertRow.js +33 -5
  48. package/lib/components/Impersonation/Button.js +77 -13
  49. package/lib/components/Impersonation/Link.js +77 -13
  50. package/lib/components/Impersonation/UserDetail.js +66 -9
  51. package/lib/components/Loading.js +26 -4
  52. package/lib/components/LockDownBrowser/Check.js +194 -49
  53. package/lib/components/LockDownBrowser/ExitButton.js +26 -9
  54. package/lib/components/LockDownBrowser/Launch.js +70 -62
  55. package/lib/components/Lti/Confirm.js +152 -11
  56. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -33
  57. package/lib/components/Lti/Launch.js +105 -24
  58. package/lib/components/Lti/LaunchGroup.js +85 -13
  59. package/lib/components/ManageTable.js +309 -87
  60. package/lib/components/ManageTableNoDataComponent.js +42 -4
  61. package/lib/components/NewVersionAlert.js +82 -46
  62. package/lib/components/NotFound.js +86 -10
  63. package/lib/components/Notifications.js +185 -126
  64. package/lib/components/PaginationNextButton.js +33 -6
  65. package/lib/components/PaginationPreviousButton.js +33 -6
  66. package/lib/components/Quill/CustomToolbar.js +432 -218
  67. package/lib/components/Quill/Formats/Image.js +73 -63
  68. package/lib/components/Quill/Formats/List.js +45 -45
  69. package/lib/components/Quill/Formats/Video.js +28 -24
  70. package/lib/components/Quill/ImageDropModule.js +147 -117
  71. package/lib/components/Quill/ImageWarning.js +47 -9
  72. package/lib/components/Quill/ImageWithAltTextModal.js +425 -86
  73. package/lib/components/Quill/Specs/CustomImageSpec.js +42 -34
  74. package/lib/components/Quill/Specs/CustomVideoSpec.js +34 -28
  75. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +98 -98
  76. package/lib/components/Quill/TableModule/Blots/TableBlot.js +52 -47
  77. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +53 -48
  78. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +224 -221
  79. package/lib/components/Quill/TableModule/Blots/TableContainer.js +80 -83
  80. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +75 -70
  81. package/lib/components/Quill/TableModule/constants.js +45 -41
  82. package/lib/components/Quill/TableModule/index.js +362 -301
  83. package/lib/components/Quill/TableModule/utils.js +42 -38
  84. package/lib/components/Quill/accessibilityFix.js +234 -232
  85. package/lib/components/Quill/index.js +34 -28
  86. package/lib/components/RefreshIndicator/Bordered.js +47 -6
  87. package/lib/components/RefreshIndicator/Inline.js +47 -8
  88. package/lib/components/RefreshIndicator/index.js +263 -59
  89. package/lib/components/SearchControls.js +216 -11
  90. package/lib/components/SentryRoute.js +11 -6
  91. package/lib/components/Tables/RoleFilter.js +69 -32
  92. package/lib/components/Tables/TextFilter.js +62 -13
  93. package/lib/components/UserRoles/Add.js +199 -96
  94. package/lib/components/UserRoles/Context.js +11 -7
  95. package/lib/components/UserRoles/RoleCell.js +181 -72
  96. package/lib/components/UserRoles/Select.js +157 -17
  97. package/lib/components/UserRoles/Table.js +221 -80
  98. package/lib/components/UserRoles/index.js +534 -384
  99. package/lib/config/eslint/index.js +32 -28
  100. package/lib/config/eslint/lib/order.js +26 -27
  101. package/lib/config/eslint/lib/prettier.js +20 -18
  102. package/lib/config/eslint/lib/typescript.js +93 -112
  103. package/lib/config/eslint/react.js +24 -14
  104. package/lib/constants/baseActivity.js +30 -26
  105. package/lib/constants/baseRole.js +14 -10
  106. package/lib/constants/configuration.js +33 -29
  107. package/lib/constants/externalProviderType.js +10 -6
  108. package/lib/constants/fetchErrorData.js +15 -11
  109. package/lib/constants/index.js +137 -14
  110. package/lib/constants/lockDownBrowser.js +28 -24
  111. package/lib/constants/mockData.js +382 -297
  112. package/lib/constants/modelStatus.js +15 -11
  113. package/lib/constants/notificationType.js +12 -8
  114. package/lib/constants/operatingSystem.js +12 -8
  115. package/lib/constants/shard.js +11 -7
  116. package/lib/constants/table.js +21 -21
  117. package/lib/constants/tier.js +12 -8
  118. package/lib/constants/userRole.js +15 -5
  119. package/lib/endpointMappings.js +197 -181
  120. package/lib/hooks/useCollection.js +82 -62
  121. package/lib/hooks/useCollectionConfiguration.js +228 -83
  122. package/lib/hooks/useCollectionItem.js +154 -54
  123. package/lib/hooks/useGuid.js +20 -8
  124. package/lib/hooks/usePrevious.js +19 -13
  125. package/lib/index.js +157 -25
  126. package/lib/redux/actionCreator.js +50 -28
  127. package/lib/redux/actions/AuthAction.js +44 -31
  128. package/lib/redux/actions/ModalAction.js +10 -6
  129. package/lib/redux/actions/ModelAction.js +77 -39
  130. package/lib/redux/actions/NotificationAction.js +10 -6
  131. package/lib/redux/actions/SearchAction.js +9 -5
  132. package/lib/redux/actions/index.js +60 -7
  133. package/lib/redux/configureReducers.js +60 -49
  134. package/lib/redux/configureStore.js +83 -87
  135. package/lib/redux/helpers.js +6 -2
  136. package/lib/redux/reducers/authReducer.js +50 -43
  137. package/lib/redux/reducers/index.js +41 -13
  138. package/lib/redux/reducers/modalsReducer.js +47 -29
  139. package/lib/redux/reducers/modelsReducer.js +178 -173
  140. package/lib/redux/reducers/notificationsReducer.js +24 -18
  141. package/lib/redux/reducers/searchReducer.js +25 -19
  142. package/lib/redux/sagas/appInsightsSaga.js +22 -18
  143. package/lib/redux/sagas/authSaga.js +253 -218
  144. package/lib/redux/sagas/caliperSaga.js +159 -143
  145. package/lib/redux/sagas/clockOffsetSaga.js +34 -31
  146. package/lib/redux/sagas/configurationSaga.js +11 -7
  147. package/lib/redux/sagas/downtimeApiErrorSaga.js +20 -17
  148. package/lib/redux/sagas/errorSaga.js +27 -21
  149. package/lib/redux/sagas/googleAnalyticsSaga.js +28 -24
  150. package/lib/redux/sagas/identityProviderSaga.js +22 -18
  151. package/lib/redux/sagas/initialDataLoadSaga.js +37 -28
  152. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +29 -20
  153. package/lib/redux/sagas/modelFetchSaga.js +355 -322
  154. package/lib/redux/sagas/noStoreSaga.js +61 -48
  155. package/lib/redux/sagas/postLoginDataSaga.js +45 -34
  156. package/lib/redux/sagas/postLoginRedirectSaga.js +27 -27
  157. package/lib/redux/sagas/rootSaga.js +82 -57
  158. package/lib/redux/sagas/sentrySaga.js +29 -25
  159. package/lib/redux/sagas/userIdSaga.js +16 -12
  160. package/lib/services/codeProviderService.js +25 -19
  161. package/lib/services/dateService.js +12 -7
  162. package/lib/services/documentService.js +17 -12
  163. package/lib/services/fetchService.js +129 -112
  164. package/lib/services/persistenceService.js +33 -29
  165. package/lib/services/ticketProviderService.js +29 -23
  166. package/lib/services/tokenPersistenceService.js +12 -8
  167. package/lib/services/windowService.js +18 -14
  168. package/lib/startup.js +132 -114
  169. package/lib/types/AppConfiguration.js +5 -1
  170. package/lib/types/Artifact.js +11 -7
  171. package/lib/types/BaseReduxState.js +5 -1
  172. package/lib/types/Client.js +5 -1
  173. package/lib/types/Collection.js +5 -1
  174. package/lib/types/Configuration.js +5 -1
  175. package/lib/types/DeepLinkingResponseRequest.js +5 -1
  176. package/lib/types/DeletableModel.js +5 -1
  177. package/lib/types/Event.js +5 -1
  178. package/lib/types/ExternalGroup.js +5 -1
  179. package/lib/types/ExternalProvider.js +5 -1
  180. package/lib/types/ExternalTerm.js +5 -1
  181. package/lib/types/Group.js +5 -1
  182. package/lib/types/IdentityProvider.js +5 -1
  183. package/lib/types/LtiLaunch.js +5 -1
  184. package/lib/types/NameOnlyEntity.js +5 -1
  185. package/lib/types/Notification.js +5 -1
  186. package/lib/types/OptionalRecord.js +5 -1
  187. package/lib/types/OwnerSchedule.js +5 -1
  188. package/lib/types/PropertyOfType.js +5 -1
  189. package/lib/types/Quill.js +5 -1
  190. package/lib/types/RoleDescription.js +5 -1
  191. package/lib/types/Search.js +5 -1
  192. package/lib/types/SimpleLocation.js +5 -1
  193. package/lib/types/UniTime.js +5 -1
  194. package/lib/types/User.js +5 -1
  195. package/lib/types/UserRole.js +5 -1
  196. package/lib/types/auth/AuthState.js +5 -1
  197. package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
  198. package/lib/types/auth/ClientCredentials.js +5 -1
  199. package/lib/types/auth/CodeProviderService.js +5 -1
  200. package/lib/types/auth/LocalLoginRequestBody.js +5 -1
  201. package/lib/types/auth/TicketProviderService.js +5 -1
  202. package/lib/types/auth/TokenPersistenceService.js +5 -1
  203. package/lib/types/auth/index.js +82 -9
  204. package/lib/types/externals.d.js +2 -0
  205. package/lib/types/index.js +313 -30
  206. package/lib/types/net/EndpointConfig.js +5 -1
  207. package/lib/types/net/EndpointMapping.js +5 -1
  208. package/lib/types/net/EndpointMappings.js +5 -1
  209. package/lib/types/net/ErrorHandler.js +5 -1
  210. package/lib/types/net/FetchConfig.js +5 -1
  211. package/lib/types/net/FetchErrorData.js +10 -6
  212. package/lib/types/net/FetchResult.js +5 -1
  213. package/lib/types/net/HTTPMethod.js +5 -1
  214. package/lib/types/net/HTTPStatusCode.js +16 -12
  215. package/lib/types/net/Metadata.js +5 -1
  216. package/lib/types/net/Model.js +5 -1
  217. package/lib/types/net/ModelCollection.js +5 -1
  218. package/lib/types/net/ModelsState.js +5 -1
  219. package/lib/types/net/OAuthToken.js +5 -1
  220. package/lib/types/net/OAuthTokenOrNull.js +5 -1
  221. package/lib/types/net/TokenAccessFunction.js +5 -1
  222. package/lib/types/net/index.js +181 -18
  223. package/lib/utils/baseActivity.js +133 -123
  224. package/lib/utils/baseRole.js +37 -33
  225. package/lib/utils/collection.js +425 -298
  226. package/lib/utils/cookies.js +22 -19
  227. package/lib/utils/date.js +303 -279
  228. package/lib/utils/dom.js +176 -165
  229. package/lib/utils/domainIdentifier.js +9 -5
  230. package/lib/utils/entityUserRole.js +6 -2
  231. package/lib/utils/error.js +17 -15
  232. package/lib/utils/events.js +40 -31
  233. package/lib/utils/externalGroup.js +22 -18
  234. package/lib/utils/externalProviders.js +8 -4
  235. package/lib/utils/externalTerms.js +10 -3
  236. package/lib/utils/fetch.js +179 -180
  237. package/lib/utils/group.js +18 -7
  238. package/lib/utils/groupDates.js +37 -33
  239. package/lib/utils/groupRoles.js +25 -21
  240. package/lib/utils/lockDownBrowser.js +15 -11
  241. package/lib/utils/logger.js +26 -22
  242. package/lib/utils/lti.js +9 -4
  243. package/lib/utils/model.js +36 -41
  244. package/lib/utils/number.js +21 -18
  245. package/lib/utils/promise.js +28 -21
  246. package/lib/utils/quill.js +65 -62
  247. package/lib/utils/route.js +58 -55
  248. package/lib/utils/search.js +76 -80
  249. package/lib/utils/shard.js +37 -37
  250. package/lib/utils/sort.js +50 -42
  251. package/lib/utils/string.js +13 -8
  252. package/lib/utils/table.js +38 -33
  253. package/lib/utils/timezone.js +10 -6
  254. package/lib/utils/url.js +142 -142
  255. package/lib/utils/user.js +58 -55
  256. package/lib/utils/userAgent.js +10 -10
  257. package/lib/utils/userRole.js +57 -49
  258. package/package.json +17 -3
@@ -1,52 +1,88 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapStateToProps = exports.NewVersionAlert = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const core_1 = require("@material-ui/core");
7
- const Refresh_1 = tslib_1.__importDefault(require("@material-ui/icons/Refresh"));
8
- const Warning_1 = tslib_1.__importDefault(require("@material-ui/icons/Warning"));
9
- const compare_versions_1 = tslib_1.__importDefault(require("compare-versions"));
10
- const react_1 = require("react");
11
- const react_redux_1 = require("react-redux");
12
- const react_router_dom_1 = require("react-router-dom");
13
- const configuration_1 = require("../constants/configuration");
14
- class NewVersionAlert extends react_1.Component {
15
- constructor() {
16
- super(...arguments);
17
- this.hasVersionUpdate = () => {
18
- const { client } = this.props;
19
- const version = (0, configuration_1.getAppConfig)().VERSION;
20
- return (!!client && !!client.currentVersion && !!version && (0, compare_versions_1.default)(version, client.currentVersion) === -1);
21
- };
22
- this.refresh = () => {
23
- const { reload } = this.props;
24
- if (reload) {
25
- reload();
26
- }
27
- else {
28
- document.location.reload();
29
- }
30
- };
31
- }
32
- componentDidUpdate(prevProps) {
33
- if (this.props.location.pathname !== prevProps.location.pathname && this.hasVersionUpdate()) {
34
- this.refresh();
35
- }
36
- }
37
- render() {
38
- const appName = (0, configuration_1.getAppConfig)().APP_NAME;
39
- return ((0, jsx_runtime_1.jsx)(core_1.Snackbar, { id: "newVersionAlert", anchorOrigin: { vertical: 'top', horizontal: 'center' }, open: this.hasVersionUpdate(), children: (0, jsx_runtime_1.jsx)(core_1.SnackbarContent, { className: "bg-color-white color-dark-grey", "aria-describedby": "newVersionAlertMessage", message: (0, jsx_runtime_1.jsxs)("span", { id: "newVersionAlertMessage", children: [(0, jsx_runtime_1.jsxs)("h2", { children: [(0, jsx_runtime_1.jsx)(Warning_1.default, { className: "f3 fl mr2 v-mid fill-orange" }), " A new version of ", appName, " is available"] }), (0, jsx_runtime_1.jsx)("p", { className: "ma0", children: "Please click \"Refresh\" to get the new version. If you continue seeing this message, please clear your browser cache and try again." })] }), action: [
40
- (0, jsx_runtime_1.jsxs)(core_1.Button, { "aria-label": "Refresh", color: "primary", onClick: this.refresh, children: [(0, jsx_runtime_1.jsx)(Refresh_1.default, { className: "fill-black" }), " Refresh"] }, "refresh")
41
- ] }) }));
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.mapStateToProps = exports.default = exports.NewVersionAlert = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _core = require("@material-ui/core");
10
+ var _Refresh = _interopRequireDefault(require("@material-ui/icons/Refresh"));
11
+ var _Warning = _interopRequireDefault(require("@material-ui/icons/Warning"));
12
+ var _compareVersions = _interopRequireDefault(require("compare-versions"));
13
+ var _react = require("react");
14
+ var _reactRedux = require("react-redux");
15
+ var _reactRouterDom = require("react-router-dom");
16
+ var _configuration = require("../constants/configuration");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ class NewVersionAlert extends _react.Component {
19
+ constructor() {
20
+ super(...arguments);
21
+ (0, _defineProperty2.default)(this, "hasVersionUpdate", () => {
22
+ const {
23
+ client
24
+ } = this.props;
25
+ const version = (0, _configuration.getAppConfig)().VERSION;
26
+ return !!client && !!client.currentVersion && !!version && (0, _compareVersions.default)(version, client.currentVersion) === -1;
27
+ });
28
+ (0, _defineProperty2.default)(this, "refresh", () => {
29
+ const {
30
+ reload
31
+ } = this.props;
32
+ if (reload) {
33
+ reload();
34
+ } else {
35
+ document.location.reload();
36
+ }
37
+ });
38
+ }
39
+ componentDidUpdate(prevProps) {
40
+ if (this.props.location.pathname !== prevProps.location.pathname && this.hasVersionUpdate()) {
41
+ this.refresh();
42
42
  }
43
+ }
44
+ render() {
45
+ const appName = (0, _configuration.getAppConfig)().APP_NAME;
46
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_core.Snackbar, {
47
+ id: "newVersionAlert",
48
+ anchorOrigin: {
49
+ vertical: 'top',
50
+ horizontal: 'center'
51
+ },
52
+ open: this.hasVersionUpdate(),
53
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_core.SnackbarContent, {
54
+ className: "bg-color-white color-dark-grey",
55
+ "aria-describedby": "newVersionAlertMessage",
56
+ message: /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
57
+ id: "newVersionAlertMessage",
58
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("h2", {
59
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Warning.default, {
60
+ className: "f3 fl mr2 v-mid fill-orange"
61
+ }), " A new version of ", appName, " is available"]
62
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
63
+ className: "ma0",
64
+ children: "Please click \"Refresh\" to get the new version. If you continue seeing this message, please clear your browser cache and try again."
65
+ })]
66
+ }),
67
+ action: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_core.Button, {
68
+ "aria-label": "Refresh",
69
+ color: "primary",
70
+ onClick: this.refresh,
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Refresh.default, {
72
+ className: "fill-black"
73
+ }), " Refresh"]
74
+ }, "refresh")]
75
+ })
76
+ });
77
+ }
43
78
  }
44
79
  exports.NewVersionAlert = NewVersionAlert;
45
- const mapStateToProps = (state) => {
46
- return {
47
- client: state.models.client
48
- };
80
+ const mapStateToProps = state => {
81
+ return {
82
+ client: state.models.client
83
+ };
49
84
  };
50
85
  exports.mapStateToProps = mapStateToProps;
51
- const connectedNewVersionAlert = (0, react_router_dom_1.withRouter)((0, react_redux_1.connect)(exports.mapStateToProps)(NewVersionAlert));
52
- exports.default = connectedNewVersionAlert;
86
+ const connectedNewVersionAlert = (0, _reactRouterDom.withRouter)((0, _reactRedux.connect)(mapStateToProps)(NewVersionAlert));
87
+ var _default = exports.default = connectedNewVersionAlert;
88
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfUmVmcmVzaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfV2FybmluZyIsIl9jb21wYXJlVmVyc2lvbnMiLCJfcmVhY3QiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdFJvdXRlckRvbSIsIl9jb25maWd1cmF0aW9uIiwiX2pzeFJ1bnRpbWUiLCJOZXdWZXJzaW9uQWxlcnQiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwiY2xpZW50IiwicHJvcHMiLCJ2ZXJzaW9uIiwiZ2V0QXBwQ29uZmlnIiwiVkVSU0lPTiIsImN1cnJlbnRWZXJzaW9uIiwiY29tcGFyZVZlcnNpb25zIiwicmVsb2FkIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInBhdGhuYW1lIiwiaGFzVmVyc2lvblVwZGF0ZSIsInJlZnJlc2giLCJyZW5kZXIiLCJhcHBOYW1lIiwiQVBQX05BTUUiLCJqc3giLCJTbmFja2JhciIsImlkIiwiYW5jaG9yT3JpZ2luIiwidmVydGljYWwiLCJob3Jpem9udGFsIiwib3BlbiIsImNoaWxkcmVuIiwiU25hY2tiYXJDb250ZW50IiwiY2xhc3NOYW1lIiwibWVzc2FnZSIsImpzeHMiLCJhY3Rpb24iLCJCdXR0b24iLCJjb2xvciIsIm9uQ2xpY2siLCJleHBvcnRzIiwibWFwU3RhdGVUb1Byb3BzIiwic3RhdGUiLCJtb2RlbHMiLCJjb25uZWN0ZWROZXdWZXJzaW9uQWxlcnQiLCJ3aXRoUm91dGVyIiwiY29ubmVjdCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvTmV3VmVyc2lvbkFsZXJ0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdXR0b24sIFNuYWNrYmFyLCBTbmFja2JhckNvbnRlbnQgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZSdcclxuaW1wb3J0IFJlZnJlc2ggZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1JlZnJlc2gnXHJcbmltcG9ydCBXYXJuaW5nSWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvV2FybmluZydcclxuaW1wb3J0IGNvbXBhcmVWZXJzaW9ucyBmcm9tICdjb21wYXJlLXZlcnNpb25zJ1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudENsYXNzIH0gZnJvbSAncmVhY3QnXHJcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tICdyZWFjdC1yZWR1eCdcclxuaW1wb3J0IHsgUm91dGVDb21wb25lbnRQcm9wcywgd2l0aFJvdXRlciB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nXHJcbmltcG9ydCB7IGdldEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbnN0YW50cy9jb25maWd1cmF0aW9uJ1xyXG5pbXBvcnQgeyBCYXNlUmVkdXhTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJ1xyXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi90eXBlcy9DbGllbnQnXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5ld1ZlcnNpb25BbGVydFByb3BzIHtcclxuXHRjbGllbnQ/OiBDbGllbnRcclxuXHQvKiogQ3VzdG9tIHJlbG9hZCBmdW5jdGlvbiBmb3IgdGVzdGluZyAqL1xyXG5cdHJlbG9hZD86ICgpID0+IHZvaWRcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5ld1ZlcnNpb25BbGVydCBleHRlbmRzIENvbXBvbmVudDxOZXdWZXJzaW9uQWxlcnRQcm9wcyAmIFJvdXRlQ29tcG9uZW50UHJvcHM+IHtcclxuXHRjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBOZXdWZXJzaW9uQWxlcnRQcm9wcyAmIFJvdXRlQ29tcG9uZW50UHJvcHMpIHtcclxuXHRcdGlmICh0aGlzLnByb3BzLmxvY2F0aW9uLnBhdGhuYW1lICE9PSBwcmV2UHJvcHMubG9jYXRpb24ucGF0aG5hbWUgJiYgdGhpcy5oYXNWZXJzaW9uVXBkYXRlKCkpIHtcclxuXHRcdFx0dGhpcy5yZWZyZXNoKClcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGhhc1ZlcnNpb25VcGRhdGUgPSAoKSA9PiB7XHJcblx0XHRjb25zdCB7IGNsaWVudCB9ID0gdGhpcy5wcm9wc1xyXG5cdFx0Y29uc3QgdmVyc2lvbiA9IGdldEFwcENvbmZpZygpLlZFUlNJT05cclxuXHRcdHJldHVybiAoXHJcblx0XHRcdCEhY2xpZW50ICYmICEhY2xpZW50LmN1cnJlbnRWZXJzaW9uICYmICEhdmVyc2lvbiAmJiBjb21wYXJlVmVyc2lvbnModmVyc2lvbiwgY2xpZW50LmN1cnJlbnRWZXJzaW9uKSA9PT0gLTFcclxuXHRcdClcclxuXHR9XHJcblxyXG5cdHJlZnJlc2ggPSAoKSA9PiB7XHJcblx0XHRjb25zdCB7IHJlbG9hZCB9ID0gdGhpcy5wcm9wc1xyXG5cdFx0aWYgKHJlbG9hZCkge1xyXG5cdFx0XHRyZWxvYWQoKVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKClcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJlbmRlcigpIHtcclxuXHRcdGNvbnN0IGFwcE5hbWUgPSBnZXRBcHBDb25maWcoKS5BUFBfTkFNRVxyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0PFNuYWNrYmFyXHJcblx0XHRcdFx0aWQ9XCJuZXdWZXJzaW9uQWxlcnRcIlxyXG5cdFx0XHRcdGFuY2hvck9yaWdpbj17eyB2ZXJ0aWNhbDogJ3RvcCcsIGhvcml6b250YWw6ICdjZW50ZXInIH19XHJcblx0XHRcdFx0b3Blbj17dGhpcy5oYXNWZXJzaW9uVXBkYXRlKCl9PlxyXG5cdFx0XHRcdDxTbmFja2JhckNvbnRlbnRcclxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJnLWNvbG9yLXdoaXRlIGNvbG9yLWRhcmstZ3JleVwiXHJcblx0XHRcdFx0XHRhcmlhLWRlc2NyaWJlZGJ5PVwibmV3VmVyc2lvbkFsZXJ0TWVzc2FnZVwiXHJcblx0XHRcdFx0XHRtZXNzYWdlPXtcclxuXHRcdFx0XHRcdFx0PHNwYW4gaWQ9XCJuZXdWZXJzaW9uQWxlcnRNZXNzYWdlXCI+XHJcblx0XHRcdFx0XHRcdFx0PGgyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PFdhcm5pbmdJY29uIGNsYXNzTmFtZT1cImYzIGZsIG1yMiB2LW1pZCBmaWxsLW9yYW5nZVwiIC8+IEEgbmV3IHZlcnNpb24gb2Yge2FwcE5hbWV9IGlzXHJcblx0XHRcdFx0XHRcdFx0XHRhdmFpbGFibGVcclxuXHRcdFx0XHRcdFx0XHQ8L2gyPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzTmFtZT1cIm1hMFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0UGxlYXNlIGNsaWNrIFwiUmVmcmVzaFwiIHRvIGdldCB0aGUgbmV3IHZlcnNpb24uIElmIHlvdSBjb250aW51ZSBzZWVpbmcgdGhpcyBtZXNzYWdlLFxyXG5cdFx0XHRcdFx0XHRcdFx0cGxlYXNlIGNsZWFyIHlvdXIgYnJvd3NlciBjYWNoZSBhbmQgdHJ5IGFnYWluLlxyXG5cdFx0XHRcdFx0XHRcdDwvcD5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0YWN0aW9uPXtbXHJcblx0XHRcdFx0XHRcdDxCdXR0b24ga2V5PVwicmVmcmVzaFwiIGFyaWEtbGFiZWw9XCJSZWZyZXNoXCIgY29sb3I9XCJwcmltYXJ5XCIgb25DbGljaz17dGhpcy5yZWZyZXNofT5cclxuXHRcdFx0XHRcdFx0XHQ8UmVmcmVzaCBjbGFzc05hbWU9XCJmaWxsLWJsYWNrXCIgLz4gUmVmcmVzaFxyXG5cdFx0XHRcdFx0XHQ8L0J1dHRvbj5cclxuXHRcdFx0XHRcdF19XHJcblx0XHRcdFx0Lz5cclxuXHRcdFx0PC9TbmFja2Jhcj5cclxuXHRcdClcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoc3RhdGU6IEJhc2VSZWR1eFN0YXRlKTogTmV3VmVyc2lvbkFsZXJ0UHJvcHMgPT4ge1xyXG5cdHJldHVybiB7XHJcblx0XHRjbGllbnQ6IHN0YXRlLm1vZGVscy5jbGllbnRcclxuXHR9XHJcbn1cclxuXHJcbmNvbnN0IGNvbm5lY3RlZE5ld1ZlcnNpb25BbGVydDogQ29tcG9uZW50Q2xhc3MgPSB3aXRoUm91dGVyKGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzKShOZXdWZXJzaW9uQWxlcnQpKVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdGVkTmV3VmVyc2lvbkFsZXJ0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sZUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsY0FBQSxHQUFBUixPQUFBO0FBQXlELElBQUFTLFdBQUEsR0FBQVQsT0FBQTtBQVVsRCxNQUFNVSxlQUFlLFNBQVNDLGdCQUFTLENBQTZDO0VBQUFDLFlBQUE7SUFBQSxTQUFBQyxTQUFBO0lBQUEsSUFBQUMsZ0JBQUEsQ0FBQUMsT0FBQSw0QkFPdkUsTUFBTTtNQUN4QixNQUFNO1FBQUVDO01BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztNQUM3QixNQUFNQyxPQUFPLEdBQUcsSUFBQUMsMkJBQVksRUFBQyxDQUFDLENBQUNDLE9BQU87TUFDdEMsT0FDQyxDQUFDLENBQUNKLE1BQU0sSUFBSSxDQUFDLENBQUNBLE1BQU0sQ0FBQ0ssY0FBYyxJQUFJLENBQUMsQ0FBQ0gsT0FBTyxJQUFJLElBQUFJLHdCQUFlLEVBQUNKLE9BQU8sRUFBRUYsTUFBTSxDQUFDSyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFNUcsQ0FBQztJQUFBLElBQUFQLGdCQUFBLENBQUFDLE9BQUEsbUJBRVMsTUFBTTtNQUNmLE1BQU07UUFBRVE7TUFBTyxDQUFDLEdBQUcsSUFBSSxDQUFDTixLQUFLO01BQzdCLElBQUlNLE1BQU0sRUFBRTtRQUNYQSxNQUFNLENBQUMsQ0FBQztNQUNULENBQUMsTUFBTTtRQUNOQyxRQUFRLENBQUNDLFFBQVEsQ0FBQ0YsTUFBTSxDQUFDLENBQUM7TUFDM0I7SUFDRCxDQUFDO0VBQUE7RUFyQkRHLGtCQUFrQkEsQ0FBQ0MsU0FBcUQsRUFBRTtJQUN6RSxJQUFJLElBQUksQ0FBQ1YsS0FBSyxDQUFDUSxRQUFRLENBQUNHLFFBQVEsS0FBS0QsU0FBUyxDQUFDRixRQUFRLENBQUNHLFFBQVEsSUFBSSxJQUFJLENBQUNDLGdCQUFnQixDQUFDLENBQUMsRUFBRTtNQUM1RixJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDO0lBQ2Y7RUFDRDtFQW1CQUMsTUFBTUEsQ0FBQSxFQUFHO0lBQ1IsTUFBTUMsT0FBTyxHQUFHLElBQUFiLDJCQUFZLEVBQUMsQ0FBQyxDQUFDYyxRQUFRO0lBQ3ZDLG9CQUNDLElBQUF4QixXQUFBLENBQUF5QixHQUFBLEVBQUNuQyxLQUFBLENBQUFvQyxRQUFRO01BQ1JDLEVBQUUsRUFBQyxpQkFBaUI7TUFDcEJDLFlBQVksRUFBRTtRQUFFQyxRQUFRLEVBQUUsS0FBSztRQUFFQyxVQUFVLEVBQUU7TUFBUyxDQUFFO01BQ3hEQyxJQUFJLEVBQUUsSUFBSSxDQUFDWCxnQkFBZ0IsQ0FBQyxDQUFFO01BQUFZLFFBQUEsZUFDOUIsSUFBQWhDLFdBQUEsQ0FBQXlCLEdBQUEsRUFBQ25DLEtBQUEsQ0FBQTJDLGVBQWU7UUFDZkMsU0FBUyxFQUFDLGdDQUFnQztRQUMxQyxvQkFBaUIsd0JBQXdCO1FBQ3pDQyxPQUFPLGVBQ04sSUFBQW5DLFdBQUEsQ0FBQW9DLElBQUE7VUFBTVQsRUFBRSxFQUFDLHdCQUF3QjtVQUFBSyxRQUFBLGdCQUNoQyxJQUFBaEMsV0FBQSxDQUFBb0MsSUFBQTtZQUFBSixRQUFBLGdCQUNDLElBQUFoQyxXQUFBLENBQUF5QixHQUFBLEVBQUMvQixRQUFBLENBQUFZLE9BQVc7Y0FBQzRCLFNBQVMsRUFBQztZQUE2QixDQUFFLENBQUMsc0JBQWtCLEVBQUNYLE9BQU8sRUFBQyxlQUVuRjtVQUFBLENBQUksQ0FBQyxlQUNMLElBQUF2QixXQUFBLENBQUF5QixHQUFBO1lBQUdTLFNBQVMsRUFBQyxLQUFLO1lBQUFGLFFBQUEsRUFBQztVQUduQixDQUFHLENBQUM7UUFBQSxDQUNDLENBQ047UUFDREssTUFBTSxFQUFFLGNBQ1AsSUFBQXJDLFdBQUEsQ0FBQW9DLElBQUEsRUFBQzlDLEtBQUEsQ0FBQWdELE1BQU07VUFBZSxjQUFXLFNBQVM7VUFBQ0MsS0FBSyxFQUFDLFNBQVM7VUFBQ0MsT0FBTyxFQUFFLElBQUksQ0FBQ25CLE9BQVE7VUFBQVcsUUFBQSxnQkFDaEYsSUFBQWhDLFdBQUEsQ0FBQXlCLEdBQUEsRUFBQ2pDLFFBQUEsQ0FBQWMsT0FBTztZQUFDNEIsU0FBUyxFQUFDO1VBQVksQ0FBRSxDQUFDLFlBQ25DO1FBQUEsR0FGWSxTQUVKLENBQUM7TUFDUixDQUNGO0lBQUMsQ0FDTyxDQUFDO0VBRWI7QUFDRDtBQUFDTyxPQUFBLENBQUF4QyxlQUFBLEdBQUFBLGVBQUE7QUFFTSxNQUFNeUMsZUFBZSxHQUFJQyxLQUFxQixJQUEyQjtFQUMvRSxPQUFPO0lBQ05wQyxNQUFNLEVBQUVvQyxLQUFLLENBQUNDLE1BQU0sQ0FBQ3JDO0VBQ3RCLENBQUM7QUFDRixDQUFDO0FBQUFrQyxPQUFBLENBQUFDLGVBQUEsR0FBQUEsZUFBQTtBQUVELE1BQU1HLHdCQUF3QyxHQUFHLElBQUFDLDBCQUFVLEVBQUMsSUFBQUMsbUJBQU8sRUFBQ0wsZUFBZSxDQUFDLENBQUN6QyxlQUFlLENBQUMsQ0FBQztBQUFBLElBQUErQyxRQUFBLEdBQUFQLE9BQUEsQ0FBQW5DLE9BQUEsR0FFdkZ1Qyx3QkFBd0IiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,14 +1,90 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const query_string_1 = require("query-string");
5
- const react_bootstrap_1 = require("react-bootstrap");
6
- const react_helmet_1 = require("react-helmet");
7
- const react_router_1 = require("react-router");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactCompilerRuntime = require("react-compiler-runtime");
8
+ var _queryString = require("query-string");
9
+ var _reactBootstrap = require("react-bootstrap");
10
+ var _reactHelmet = require("react-helmet");
11
+ var _reactRouter = require("react-router");
12
+ var _jsxRuntime = require("react/jsx-runtime");
8
13
  const NotFound = () => {
9
- const { search } = (0, react_router_1.useLocation)();
10
- const parsedSearch = (0, query_string_1.parse)(search);
11
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_helmet_1.Helmet, { title: "Page Not Found" }), (0, jsx_runtime_1.jsx)(react_bootstrap_1.Container, { children: (0, jsx_runtime_1.jsx)(react_bootstrap_1.Row, { children: (0, jsx_runtime_1.jsxs)(react_bootstrap_1.Col, { md: 8, children: [(0, jsx_runtime_1.jsx)("h1", { children: "Not Found" }), (0, jsx_runtime_1.jsxs)("p", { children: ["We could not find the requested page", parsedSearch.pathname && ` at "${parsedSearch.pathname}"`, "."] }), (0, jsx_runtime_1.jsxs)("p", { children: ["If you have any questions or concerns, please contact us at", ' ', (0, jsx_runtime_1.jsx)("a", { href: "mailto:tlt@purdue.edu", children: "tlt@purdue.edu" }), "."] })] }) }) })] }));
14
+ const $ = (0, _reactCompilerRuntime.c)(9);
15
+ const {
16
+ search
17
+ } = (0, _reactRouter.useLocation)();
18
+ let t0;
19
+ if ($[0] !== search) {
20
+ t0 = (0, _queryString.parse)(search);
21
+ $[0] = search;
22
+ $[1] = t0;
23
+ } else {
24
+ t0 = $[1];
25
+ }
26
+ const parsedSearch = t0;
27
+ let t1;
28
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
29
+ t1 = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHelmet.Helmet, {
30
+ title: "Page Not Found"
31
+ });
32
+ $[2] = t1;
33
+ } else {
34
+ t1 = $[2];
35
+ }
36
+ let t2;
37
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
38
+ t2 = /*#__PURE__*/(0, _jsxRuntime.jsx)("h1", {
39
+ children: "Not Found"
40
+ });
41
+ $[3] = t2;
42
+ } else {
43
+ t2 = $[3];
44
+ }
45
+ const t3 = parsedSearch.pathname && ` at "${parsedSearch.pathname}"`;
46
+ let t4;
47
+ if ($[4] !== t3) {
48
+ t4 = /*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
49
+ children: ["We could not find the requested page", t3, "."]
50
+ });
51
+ $[4] = t3;
52
+ $[5] = t4;
53
+ } else {
54
+ t4 = $[5];
55
+ }
56
+ let t5;
57
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
58
+ t5 = /*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
59
+ children: ["If you have any questions or concerns, please contact us at", " ", /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
60
+ href: "mailto:tlt@purdue.edu",
61
+ children: "tlt@purdue.edu"
62
+ }), "."]
63
+ });
64
+ $[6] = t5;
65
+ } else {
66
+ t5 = $[6];
67
+ }
68
+ let t6;
69
+ if ($[7] !== t4) {
70
+ t6 = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
71
+ children: [t1, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Container, {
72
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Row, {
73
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Col, {
74
+ md: 8,
75
+ children: [t2, t4, t5]
76
+ })
77
+ })
78
+ })]
79
+ });
80
+ $[7] = t4;
81
+ $[8] = t6;
82
+ } else {
83
+ t6 = $[8];
84
+ }
85
+ return t6;
12
86
  };
87
+
13
88
  // required for use in Routes / AsyncComponent
14
- exports.default = NotFound;
89
+ var _default = exports.default = NotFound;
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcXVlcnlTdHJpbmciLCJyZXF1aXJlIiwiX3JlYWN0Qm9vdHN0cmFwIiwiX3JlYWN0SGVsbWV0IiwiX3JlYWN0Um91dGVyIiwiX2pzeFJ1bnRpbWUiLCJOb3RGb3VuZCIsIiQiLCJfcmVhY3RDb21waWxlclJ1bnRpbWUiLCJjIiwic2VhcmNoIiwidXNlTG9jYXRpb24iLCJ0MCIsInBhcnNlIiwicGFyc2VkU2VhcmNoIiwidDEiLCJTeW1ib2wiLCJmb3IiLCJqc3giLCJIZWxtZXQiLCJ0aXRsZSIsInQyIiwiY2hpbGRyZW4iLCJ0MyIsInBhdGhuYW1lIiwidDQiLCJqc3hzIiwidDUiLCJocmVmIiwidDYiLCJGcmFnbWVudCIsIkNvbnRhaW5lciIsIlJvdyIsIkNvbCIsIm1kIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL05vdEZvdW5kLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3F1ZXJ5LXN0cmluZydcclxuaW1wb3J0IHsgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCdcclxuaW1wb3J0IHsgQ29sLCBDb250YWluZXIsIFJvdyB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcCdcclxuaW1wb3J0IHsgSGVsbWV0IH0gZnJvbSAncmVhY3QtaGVsbWV0J1xyXG5pbXBvcnQgeyB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlcidcclxuXHJcbmNvbnN0IE5vdEZvdW5kOiBGdW5jdGlvbkNvbXBvbmVudCA9ICgpID0+IHtcclxuXHRjb25zdCB7IHNlYXJjaCB9ID0gdXNlTG9jYXRpb24oKVxyXG5cdGNvbnN0IHBhcnNlZFNlYXJjaCA9IHBhcnNlKHNlYXJjaClcclxuXHRyZXR1cm4gKFxyXG5cdFx0PD5cclxuXHRcdFx0PEhlbG1ldCB0aXRsZT1cIlBhZ2UgTm90IEZvdW5kXCIgLz5cclxuXHRcdFx0PENvbnRhaW5lcj5cclxuXHRcdFx0XHQ8Um93PlxyXG5cdFx0XHRcdFx0PENvbCBtZD17OH0+XHJcblx0XHRcdFx0XHRcdDxoMT5Ob3QgRm91bmQ8L2gxPlxyXG5cdFx0XHRcdFx0XHQ8cD5cclxuXHRcdFx0XHRcdFx0XHRXZSBjb3VsZCBub3QgZmluZCB0aGUgcmVxdWVzdGVkIHBhZ2VcclxuXHRcdFx0XHRcdFx0XHR7cGFyc2VkU2VhcmNoLnBhdGhuYW1lICYmIGAgYXQgXCIke3BhcnNlZFNlYXJjaC5wYXRobmFtZX1cImB9LlxyXG5cdFx0XHRcdFx0XHQ8L3A+XHJcblx0XHRcdFx0XHRcdDxwPlxyXG5cdFx0XHRcdFx0XHRcdElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgY29uY2VybnMsIHBsZWFzZSBjb250YWN0IHVzIGF0eycgJ31cclxuXHRcdFx0XHRcdFx0XHQ8YSBocmVmPVwibWFpbHRvOnRsdEBwdXJkdWUuZWR1XCI+dGx0QHB1cmR1ZS5lZHU8L2E+LlxyXG5cdFx0XHRcdFx0XHQ8L3A+XHJcblx0XHRcdFx0XHQ8L0NvbD5cclxuXHRcdFx0XHQ8L1Jvdz5cclxuXHRcdFx0PC9Db250YWluZXI+XHJcblx0XHQ8Lz5cclxuXHQpXHJcbn1cclxuXHJcbi8vIHJlcXVpcmVkIGZvciB1c2UgaW4gUm91dGVzIC8gQXN5bmNDb21wb25lbnRcclxuZXhwb3J0IGRlZmF1bHQgTm90Rm91bmRcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQTBDLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUUxQyxNQUFNSyxRQUEyQixHQUFHQSxDQUFBO0VBQUEsTUFBQUMsQ0FBQSxPQUFBQyxxQkFBQSxDQUFBQyxDQUFBO0VBQ25DO0lBQUFDO0VBQUEsSUFBbUIsSUFBQUMsd0JBQVcsRUFBQyxDQUFDO0VBQUEsSUFBQUMsRUFBQTtFQUFBLElBQUFMLENB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
@@ -1,135 +1,194 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapStateToProps = exports.Notifications = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const core_1 = require("@material-ui/core");
7
- const Close_1 = tslib_1.__importDefault(require("@material-ui/icons/Close"));
8
- const react_1 = require("react");
9
- const react_redux_1 = require("react-redux");
10
- const uuid_1 = require("uuid");
11
- const constants_1 = require("../constants");
12
- const actionCreator_1 = require("../redux/actionCreator");
13
- const actions_1 = require("../redux/actions");
14
- class Notifications extends react_1.Component {
15
- constructor(props) {
16
- super(props);
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.mapStateToProps = exports.default = exports.Notifications = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _core = require("@material-ui/core");
10
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
11
+ var _react = require("react");
12
+ var _reactRedux = require("react-redux");
13
+ var _uuid = require("uuid");
14
+ var _constants = require("../constants");
15
+ var _actionCreator = require("../redux/actionCreator");
16
+ var _actions = require("../redux/actions");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ class Notifications extends _react.Component {
19
+ constructor(props) {
20
+ super(props);
21
+ (0, _defineProperty2.default)(this, "afterCloseTimeout", undefined);
22
+ (0, _defineProperty2.default)(this, "clearAfterCloseTimeout", () => {
23
+ if (this.afterCloseTimeout) {
24
+ clearTimeout(this.afterCloseTimeout);
17
25
  this.afterCloseTimeout = undefined;
18
- this.clearAfterCloseTimeout = () => {
19
- if (this.afterCloseTimeout) {
20
- clearTimeout(this.afterCloseTimeout);
21
- this.afterCloseTimeout = undefined;
22
- }
23
- };
24
- this.updateNotification = () => {
25
- const { openModalIds, notifications } = this.props;
26
- const { isOpen, notification: currentNotification } = this.state;
27
- // find next notification, if any
28
- const notification = notifications.length > 0 ? notifications[0] : undefined;
29
- // react to the last notification being removed, and close the alert
30
- if (isOpen && !notification) {
31
- this.closeNotification();
32
- return;
33
- }
34
- // exit early if there is no notification
35
- if (!notification) {
36
- return;
37
- }
38
- const shouldShowNotification =
39
- // the notification is different from the current, if any
40
- notification.id !== (currentNotification === null || currentNotification === void 0 ? void 0 : currentNotification.id) &&
41
- // the alert is not open
42
- !isOpen &&
43
- // show immediately, ignoring modals
44
- (notification.modalId === null ||
45
- // show after all modals are closed
46
- (notification.modalId === undefined && openModalIds.length === 0) ||
47
- // show after a specific modal is closed
48
- (!!notification.modalId && !openModalIds.includes(notification.modalId)));
49
- if (shouldShowNotification) {
50
- this.setState({
51
- notification,
52
- className: this.classNameForType(notification.type),
53
- isOpen: true
54
- });
55
- }
56
- };
57
- this.closeNotification = () => {
58
- const { notifications } = this.props;
26
+ }
27
+ });
28
+ (0, _defineProperty2.default)(this, "updateNotification", () => {
29
+ const {
30
+ openModalIds,
31
+ notifications
32
+ } = this.props;
33
+ const {
34
+ isOpen,
35
+ notification: currentNotification
36
+ } = this.state;
37
+
38
+ // find next notification, if any
39
+ const notification = notifications.length > 0 ? notifications[0] : undefined;
40
+
41
+ // react to the last notification being removed, and close the alert
42
+ if (isOpen && !notification) {
43
+ this.closeNotification();
44
+ return;
45
+ }
46
+
47
+ // exit early if there is no notification
48
+ if (!notification) {
49
+ return;
50
+ }
51
+ const shouldShowNotification =
52
+ // the notification is different from the current, if any
53
+ notification.id !== currentNotification?.id &&
54
+ // the alert is not open
55
+ !isOpen && (
56
+ // show immediately, ignoring modals
57
+ notification.modalId === null ||
58
+ // show after all modals are closed
59
+ notification.modalId === undefined && openModalIds.length === 0 ||
60
+ // show after a specific modal is closed
61
+ !!notification.modalId && !openModalIds.includes(notification.modalId));
62
+ if (shouldShowNotification) {
63
+ this.setState({
64
+ notification,
65
+ className: this.classNameForType(notification.type),
66
+ isOpen: true
67
+ });
68
+ }
69
+ });
70
+ (0, _defineProperty2.default)(this, "closeNotification", () => {
71
+ const {
72
+ notifications
73
+ } = this.props;
74
+ this.setState({
75
+ isOpen: false
76
+ }, () => {
77
+ // wait until after Snackbar hide animation to clear the UI
78
+ this.afterCloseTimeout = setTimeout(() => {
79
+ this.removeNotification();
80
+ this.clearAfterCloseTimeout();
81
+ // removing the last notification, clear state
82
+ if (notifications.length <= 1) {
59
83
  this.setState({
60
- isOpen: false
61
- }, () => {
62
- // wait until after Snackbar hide animation to clear the UI
63
- this.afterCloseTimeout = setTimeout(() => {
64
- this.removeNotification();
65
- this.clearAfterCloseTimeout();
66
- // removing the last notification, clear state
67
- if (notifications.length <= 1) {
68
- this.setState({
69
- notification: undefined,
70
- className: ''
71
- });
72
- }
73
- }, 300);
84
+ notification: undefined,
85
+ className: ''
74
86
  });
75
- };
76
- this.removeNotification = () => {
77
- const { notification } = this.state;
78
- if (!notification) {
79
- return;
80
- }
81
- (0, actionCreator_1.dispatchAction)({
82
- type: actions_1.NOTIFICATION_ACTION_TYPE.REMOVE_NOTIFICATION,
83
- notification
84
- });
85
- };
86
- this.classNameForType = (type) => {
87
- switch (type) {
88
- case constants_1.NOTIFICATION_TYPE.INFO:
89
- return 'alert-info';
90
- case constants_1.NOTIFICATION_TYPE.SUCCESS:
91
- return 'alert-success';
92
- case constants_1.NOTIFICATION_TYPE.WARNING:
93
- return 'alert-warning';
94
- case constants_1.NOTIFICATION_TYPE.ERROR:
95
- return 'alert-danger';
96
- }
97
- };
98
- this.state = {
99
- guid: (0, uuid_1.v4)(),
100
- notification: undefined,
101
- className: '',
102
- isOpen: false // use to handle animation separate from existence of notification
103
- };
104
- }
105
- componentDidMount() {
106
- this.updateNotification();
107
- }
108
- componentDidUpdate() {
109
- this.updateNotification();
110
- }
111
- componentWillUnmount() {
112
- const { notifications } = this.props;
113
- const { isOpen } = this.state;
114
- if (isOpen && notifications.length > 0) {
115
- this.removeNotification();
116
- }
117
- this.clearAfterCloseTimeout();
118
- }
119
- render() {
120
- const { guid, notification, className, isOpen } = this.state;
121
- const id = `notifications-${guid}`;
122
- return ((0, jsx_runtime_1.jsx)("div", { id: id, "aria-live": "polite", children: (0, jsx_runtime_1.jsx)(core_1.Snackbar, { anchorOrigin: { vertical: 'bottom', horizontal: 'center' }, open: isOpen, autoHideDuration: 5000, onClose: this.closeNotification, className: "mh2 alert notification-alert", children: (0, jsx_runtime_1.jsx)(core_1.SnackbarContent, { className: className, "aria-describedby": `${id}-alert-message`, message: (0, jsx_runtime_1.jsx)("span", { id: `${id}-alert-message`, className: "notification-alert-message", children: (0, jsx_runtime_1.jsx)("h4", { className: "normal pt2", children: !!notification && notification.text }) }), action: [
123
- (0, jsx_runtime_1.jsxs)(core_1.Button, { className: "notification-close-button", "aria-label": "Close", color: "inherit", onClick: this.removeNotification, children: [(0, jsx_runtime_1.jsx)(Close_1.default, { className: "v-mid" }), "Close"] }, "close")
124
- ] }) }) }));
87
+ }
88
+ }, 300);
89
+ });
90
+ });
91
+ (0, _defineProperty2.default)(this, "removeNotification", () => {
92
+ const {
93
+ notification
94
+ } = this.state;
95
+ if (!notification) {
96
+ return;
97
+ }
98
+ (0, _actionCreator.dispatchAction)({
99
+ type: _actions.NOTIFICATION_ACTION_TYPE.REMOVE_NOTIFICATION,
100
+ notification
101
+ });
102
+ });
103
+ (0, _defineProperty2.default)(this, "classNameForType", type => {
104
+ switch (type) {
105
+ case _constants.NOTIFICATION_TYPE.INFO:
106
+ return 'alert-info';
107
+ case _constants.NOTIFICATION_TYPE.SUCCESS:
108
+ return 'alert-success';
109
+ case _constants.NOTIFICATION_TYPE.WARNING:
110
+ return 'alert-warning';
111
+ case _constants.NOTIFICATION_TYPE.ERROR:
112
+ return 'alert-danger';
113
+ }
114
+ });
115
+ this.state = {
116
+ guid: (0, _uuid.v4)(),
117
+ notification: undefined,
118
+ className: '',
119
+ isOpen: false // use to handle animation separate from existence of notification
120
+ };
121
+ }
122
+ componentDidMount() {
123
+ this.updateNotification();
124
+ }
125
+ componentDidUpdate() {
126
+ this.updateNotification();
127
+ }
128
+ componentWillUnmount() {
129
+ const {
130
+ notifications
131
+ } = this.props;
132
+ const {
133
+ isOpen
134
+ } = this.state;
135
+ if (isOpen && notifications.length > 0) {
136
+ this.removeNotification();
125
137
  }
138
+ this.clearAfterCloseTimeout();
139
+ }
140
+ render() {
141
+ const {
142
+ guid,
143
+ notification,
144
+ className,
145
+ isOpen
146
+ } = this.state;
147
+ const id = `notifications-${guid}`;
148
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
149
+ id: id,
150
+ "aria-live": "polite",
151
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_core.Snackbar, {
152
+ anchorOrigin: {
153
+ vertical: 'bottom',
154
+ horizontal: 'center'
155
+ },
156
+ open: isOpen,
157
+ autoHideDuration: 5000,
158
+ onClose: this.closeNotification,
159
+ className: "mh2 alert notification-alert",
160
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_core.SnackbarContent, {
161
+ className: className,
162
+ "aria-describedby": `${id}-alert-message`,
163
+ message: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
164
+ id: `${id}-alert-message`,
165
+ className: "notification-alert-message",
166
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("h4", {
167
+ className: "normal pt2",
168
+ children: !!notification && notification.text
169
+ })
170
+ }),
171
+ action: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_core.Button, {
172
+ className: "notification-close-button",
173
+ "aria-label": "Close",
174
+ color: "inherit",
175
+ onClick: this.removeNotification,
176
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Close.default, {
177
+ className: "v-mid"
178
+ }), "Close"]
179
+ }, "close")]
180
+ })
181
+ })
182
+ });
183
+ }
126
184
  }
127
185
  exports.Notifications = Notifications;
128
- const mapStateToProps = (state) => {
129
- return {
130
- notifications: state.notifications.queue,
131
- openModalIds: Object.keys(state.modals)
132
- };
186
+ const mapStateToProps = state => {
187
+ return {
188
+ notifications: state.notifications.queue,
189
+ openModalIds: Object.keys(state.modals)
190
+ };
133
191
  };
134
192
  exports.mapStateToProps = mapStateToProps;
135
- exports.default = (0, react_redux_1.connect)(exports.mapStateToProps)(Notifications);
193
+ var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps)(Notifications);
194
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfQ2xvc2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfdXVpZCIsIl9jb25zdGFudHMiLCJfYWN0aW9uQ3JlYXRvciIsIl9hY3Rpb25zIiwiX2pzeFJ1bnRpbWUiLCJOb3RpZmljYXRpb25zIiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwidW5kZWZpbmVkIiwiYWZ0ZXJDbG9zZVRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJvcGVuTW9kYWxJZHMiLCJub3RpZmljYXRpb25zIiwiaXNPcGVuIiwibm90aWZpY2F0aW9uIiwiY3VycmVudE5vdGlmaWNhdGlvbiIsInN0YXRlIiwibGVuZ3RoIiwiY2xvc2VOb3RpZmljYXRpb24iLCJzaG91bGRTaG93Tm90aWZpY2F0aW9uIiwiaWQiLCJtb2RhbElkIiwiaW5jbHVkZXMiLCJzZXRTdGF0ZSIsImNsYXNzTmFtZSIsImNsYXNzTmFtZUZvclR5cGUiLCJ0eXBlIiwic2V0VGltZW91dCIsInJlbW92ZU5vdGlmaWNhdGlvbiIsImNsZWFyQWZ0ZXJDbG9zZVRpbWVvdXQiLCJkaXNwYXRjaEFjdGlvbiIsIk5PVElGSUNBVElPTl9BQ1RJT05fVFlQRSIsIlJFTU9WRV9OT1RJRklDQVRJT04iLCJOT1RJRklDQVRJT05fVFlQRSIsIklORk8iLCJTVUNDRVNTIiwiV0FSTklORyIsIkVSUk9SIiwiZ3VpZCIsInV1aWR2NCIsImNvbXBvbmVudERpZE1vdW50IiwidXBkYXRlTm90aWZpY2F0aW9uIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW5kZXIiLCJqc3giLCJjaGlsZHJlbiIsIlNuYWNrYmFyIiwiYW5jaG9yT3JpZ2luIiwidmVydGljYWwiLCJob3Jpem9udGFsIiwib3BlbiIsImF1dG9IaWRlRHVyYXRpb24iLCJvbkNsb3NlIiwiU25hY2tiYXJDb250ZW50IiwibWVzc2FnZSIsInRleHQiLCJhY3Rpb24iLCJqc3hzIiwiQnV0dG9uIiwiY29sb3IiLCJvbkNsaWNrIiwiZXhwb3J0cyIsIm1hcFN0YXRlVG9Qcm9wcyIsInF1ZXVlIiwiT2JqZWN0Iiwia2V5cyIsIm1vZGFscyIsIl9kZWZhdWx0IiwiY29ubmVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL05vdGlmaWNhdGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbiwgU25hY2tiYXIsIFNuYWNrYmFyQ29udGVudCB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJ1xyXG5pbXBvcnQgSWNvbkNsb3NlIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9DbG9zZSdcclxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnXHJcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tICdyZWFjdC1yZWR1eCdcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcclxuaW1wb3J0IHsgTk9USUZJQ0FUSU9OX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMnXHJcbmltcG9ydCB7IGRpc3BhdGNoQWN0aW9uIH0gZnJvbSAnLi4vcmVkdXgvYWN0aW9uQ3JlYXRvcidcclxuaW1wb3J0IHsgTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFLCBOb3RpZmljYXRpb25BY3Rpb24gfSBmcm9tICcuLi9yZWR1eC9hY3Rpb25zJ1xyXG5pbXBvcnQgeyBNb2RhbHNTdGF0ZSB9IGZyb20gJy4uL3JlZHV4L3JlZHVjZXJzL21vZGFsc1JlZHVjZXInXHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblN0YXRlIH0gZnJvbSAnLi4vcmVkdXgvcmVkdWNlcnMvbm90aWZpY2F0aW9uc1JlZHVjZXInXHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uL3R5cGVzJ1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25zUHJvcHMge1xyXG5cdC8qKiBUaGUgcXVldWUgb2Ygbm90aWZpY2F0aW9ucywgRklGTyAqL1xyXG5cdG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbltdXHJcblx0LyoqIFRoZSBpZGVudGlmaWVycyBmb3IgYWxsIGN1cnJlbnRseSBvcGVuIG1vZGFscywgdXNlZCB0byBjb3JyZWxhdGUgd2l0aCBgbm90aWZpY2F0aW9uLm1vZGFsSWRgICovXHJcblx0b3Blbk1vZGFsSWRzOiBzdHJpbmdbXVxyXG59XHJcblxyXG5pbnRlcmZhY2UgTm90aWZpY2F0aW9uc1N0YXRlIHtcclxuXHRndWlkOiBzdHJpbmdcclxuXHRub3RpZmljYXRpb24/OiBOb3RpZmljYXRpb25cclxuXHRjbGFzc05hbWU6IHN0cmluZ1xyXG5cdGlzT3BlbjogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9ucyBleHRlbmRzIENvbXBvbmVudDxOb3RpZmljYXRpb25zUHJvcHMsIE5vdGlmaWNhdGlvbnNTdGF0ZT4ge1xyXG5cdGFmdGVyQ2xvc2VUaW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcm9wczogTm90aWZpY2F0aW9uc1Byb3BzKSB7XHJcblx0XHRzdXBlcihwcm9wcylcclxuXHRcdHRoaXMuc3RhdGUgPSB7XHJcblx0XHRcdGd1aWQ6IHV1aWR2NCgpLFxyXG5cdFx0XHRub3RpZmljYXRpb246IHVuZGVmaW5lZCxcclxuXHRcdFx0Y2xhc3NOYW1lOiAnJyxcclxuXHRcdFx0aXNPcGVuOiBmYWxzZSAvLyB1c2UgdG8gaGFuZGxlIGFuaW1hdGlvbiBzZXBhcmF0ZSBmcm9tIGV4aXN0ZW5jZSBvZiBub3RpZmljYXRpb25cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNvbXBvbmVudERpZE1vdW50KCkge1xyXG5cdFx0dGhpcy51cGRhdGVOb3RpZmljYXRpb24oKVxyXG5cdH1cclxuXHJcblx0Y29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG5cdFx0dGhpcy51cGRhdGVOb3RpZmljYXRpb24oKVxyXG5cdH1cclxuXHJcblx0Y29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcblx0XHRjb25zdCB7IG5vdGlmaWNhdGlvbnMgfSA9IHRoaXMucHJvcHNcclxuXHRcdGNvbnN0IHsgaXNPcGVuIH0gPSB0aGlzLnN0YXRlXHJcblx0XHRpZiAoaXNPcGVuICYmIG5vdGlmaWNhdGlvbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLnJlbW92ZU5vdGlmaWNhdGlvbigpXHJcblx0XHR9XHJcblx0XHR0aGlzLmNsZWFyQWZ0ZXJDbG9zZVRpbWVvdXQoKVxyXG5cdH1cclxuXHJcblx0Y2xlYXJBZnRlckNsb3NlVGltZW91dCA9ICgpID0+IHtcclxuXHRcdGlmICh0aGlzLmFmdGVyQ2xvc2VUaW1lb3V0KSB7XHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLmFmdGVyQ2xvc2VUaW1lb3V0KVxyXG5cdFx0XHR0aGlzLmFmdGVyQ2xvc2VUaW1lb3V0ID0gdW5kZWZpbmVkXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR1cGRhdGVOb3RpZmljYXRpb24gPSAoKSA9PiB7XHJcblx0XHRjb25zdCB7IG9wZW5Nb2RhbElkcywgbm90aWZpY2F0aW9ucyB9ID0gdGhpcy5wcm9wc1xyXG5cdFx0Y29uc3QgeyBpc09wZW4sIG5vdGlmaWNhdGlvbjogY3VycmVudE5vdGlmaWNhdGlvbiB9ID0gdGhpcy5zdGF0ZVxyXG5cclxuXHRcdC8vIGZpbmQgbmV4dCBub3RpZmljYXRpb24sIGlmIGFueVxyXG5cdFx0Y29uc3Qgbm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9ucy5sZW5ndGggPiAwID8gbm90aWZpY2F0aW9uc1swXSA6IHVuZGVmaW5lZFxyXG5cclxuXHRcdC8vIHJlYWN0IHRvIHRoZSBsYXN0IG5vdGlmaWNhdGlvbiBiZWluZyByZW1vdmVkLCBhbmQgY2xvc2UgdGhlIGFsZXJ0XHJcblx0XHRpZiAoaXNPcGVuICYmICFub3RpZmljYXRpb24pIHtcclxuXHRcdFx0dGhpcy5jbG9zZU5vdGlmaWNhdGlvbigpXHJcblx0XHRcdHJldHVyblxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIGV4aXQgZWFybHkgaWYgdGhlcmUgaXMgbm8gbm90aWZpY2F0aW9uXHJcblx0XHRpZiAoIW5vdGlmaWNhdGlvbikge1xyXG5cdFx0XHRyZXR1cm5cclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBzaG91bGRTaG93Tm90aWZpY2F0aW9uID1cclxuXHRcdFx0Ly8gdGhlIG5vdGlmaWNhdGlvbiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY3VycmVudCwgaWYgYW55XHJcblx0XHRcdG5vdGlmaWNhdGlvbi5pZCAhPT0gY3VycmVudE5vdGlmaWNhdGlvbj8uaWQgJiZcclxuXHRcdFx0Ly8gdGhlIGFsZXJ0IGlzIG5vdCBvcGVuXHJcblx0XHRcdCFpc09wZW4gJiZcclxuXHRcdFx0Ly8gc2hvdyBpbW1lZGlhdGVseSwgaWdub3JpbmcgbW9kYWxzXHJcblx0XHRcdChub3RpZmljYXRpb24ubW9kYWxJZCA9PT0gbnVsbCB8fFxyXG5cdFx0XHRcdC8vIHNob3cgYWZ0ZXIgYWxsIG1vZGFscyBhcmUgY2xvc2VkXHJcblx0XHRcdFx0KG5vdGlmaWNhdGlvbi5tb2RhbElkID09PSB1bmRlZmluZWQgJiYgb3Blbk1vZGFsSWRzLmxlbmd0aCA9PT0gMCkgfHxcclxuXHRcdFx0XHQvLyBzaG93IGFmdGVyIGEgc3BlY2lmaWMgbW9kYWwgaXMgY2xvc2VkXHJcblx0XHRcdFx0KCEhbm90aWZpY2F0aW9uLm1vZGFsSWQgJiYgIW9wZW5Nb2RhbElkcy5pbmNsdWRlcyhub3RpZmljYXRpb24ubW9kYWxJZCkpKVxyXG5cclxuXHRcdGlmIChzaG91bGRTaG93Tm90aWZpY2F0aW9uKSB7XHJcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xyXG5cdFx0XHRcdG5vdGlmaWNhdGlvbixcclxuXHRcdFx0XHRjbGFzc05hbWU6IHRoaXMuY2xhc3NOYW1lRm9yVHlwZShub3RpZmljYXRpb24udHlwZSksXHJcblx0XHRcdFx0aXNPcGVuOiB0cnVlXHJcblx0XHRcdH0pXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjbG9zZU5vdGlmaWNhdGlvbiA9ICgpID0+IHtcclxuXHRcdGNvbnN0IHsgbm90aWZpY2F0aW9ucyB9ID0gdGhpcy5wcm9wc1xyXG5cdFx0dGhpcy5zZXRTdGF0ZShcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGlzT3BlbjogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdC8vIHdhaXQgdW50aWwgYWZ0ZXIgU25hY2tiYXIgaGlkZSBhbmltYXRpb24gdG8gY2xlYXIgdGhlIFVJXHJcblx0XHRcdFx0dGhpcy5hZnRlckNsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5yZW1vdmVOb3RpZmljYXRpb24oKVxyXG5cdFx0XHRcdFx0dGhpcy5jbGVhckFmdGVyQ2xvc2VUaW1lb3V0KClcclxuXHRcdFx0XHRcdC8vIHJlbW92aW5nIHRoZSBsYXN0IG5vdGlmaWNhdGlvbiwgY2xlYXIgc3RhdGVcclxuXHRcdFx0XHRcdGlmIChub3RpZmljYXRpb25zLmxlbmd0aCA8PSAxKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xyXG5cdFx0XHRcdFx0XHRcdG5vdGlmaWNhdGlvbjogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzTmFtZTogJydcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9LCAzMDApXHJcblx0XHRcdH1cclxuXHRcdClcclxuXHR9XHJcblxyXG5cdHJlbW92ZU5vdGlmaWNhdGlvbiA9ICgpID0+IHtcclxuXHRcdGNvbnN0IHsgbm90aWZpY2F0aW9uIH0gPSB0aGlzLnN0YXRlXHJcblx0XHRpZiAoIW5vdGlmaWNhdGlvbikge1xyXG5cdFx0XHRyZXR1cm5cclxuXHRcdH1cclxuXHRcdGRpc3BhdGNoQWN0aW9uPE5vdGlmaWNhdGlvbkFjdGlvbj4oe1xyXG5cdFx0XHR0eXBlOiBOT1RJRklDQVRJT05fQUNUSU9OX1RZUEUuUkVNT1ZFX05PVElGSUNBVElPTixcclxuXHRcdFx0bm90aWZpY2F0aW9uXHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0Y2xhc3NOYW1lRm9yVHlwZSA9ICh0eXBlOiBOT1RJRklDQVRJT05fVFlQRSkgPT4ge1xyXG5cdFx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRcdGNhc2UgTk9USUZJQ0FUSU9OX1RZUEUuSU5GTzpcclxuXHRcdFx0XHRyZXR1cm4gJ2FsZXJ0LWluZm8nXHJcblx0XHRcdGNhc2UgTk9USUZJQ0FUSU9OX1RZUEUuU1VDQ0VTUzpcclxuXHRcdFx0XHRyZXR1cm4gJ2FsZXJ0LXN1Y2Nlc3MnXHJcblx0XHRcdGNhc2UgTk9USUZJQ0FUSU9OX1RZUEUuV0FSTklORzpcclxuXHRcdFx0XHRyZXR1cm4gJ2FsZXJ0LXdhcm5pbmcnXHJcblx0XHRcdGNhc2UgTk9USUZJQ0FUSU9OX1RZUEUuRVJST1I6XHJcblx0XHRcdFx0cmV0dXJuICdhbGVydC1kYW5nZXInXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZW5kZXIoKSB7XHJcblx0XHRjb25zdCB7IGd1aWQsIG5vdGlmaWNhdGlvbiwgY2xhc3NOYW1lLCBpc09wZW4gfSA9IHRoaXMuc3RhdGVcclxuXHRcdGNvbnN0IGlkID0gYG5vdGlmaWNhdGlvbnMtJHtndWlkfWBcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdDxkaXYgaWQ9e2lkfSBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cclxuXHRcdFx0XHQ8U25hY2tiYXJcclxuXHRcdFx0XHRcdGFuY2hvck9yaWdpbj17eyB2ZXJ0aWNhbDogJ2JvdHRvbScsIGhvcml6b250YWw6ICdjZW50ZXInIH19XHJcblx0XHRcdFx0XHRvcGVuPXtpc09wZW59XHJcblx0XHRcdFx0XHRhdXRvSGlkZUR1cmF0aW9uPXs1MDAwfVxyXG5cdFx0XHRcdFx0b25DbG9zZT17dGhpcy5jbG9zZU5vdGlmaWNhdGlvbn1cclxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cIm1oMiBhbGVydCBub3RpZmljYXRpb24tYWxlcnRcIj5cclxuXHRcdFx0XHRcdDxTbmFja2JhckNvbnRlbnRcclxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPXtjbGFzc05hbWV9XHJcblx0XHRcdFx0XHRcdGFyaWEtZGVzY3JpYmVkYnk9e2Ake2lkfS1hbGVydC1tZXNzYWdlYH1cclxuXHRcdFx0XHRcdFx0bWVzc2FnZT17XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gaWQ9e2Ake2lkfS1hbGVydC1tZXNzYWdlYH0gY2xhc3NOYW1lPVwibm90aWZpY2F0aW9uLWFsZXJ0LW1lc3NhZ2VcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxoNCBjbGFzc05hbWU9XCJub3JtYWwgcHQyXCI+eyEhbm90aWZpY2F0aW9uICYmIG5vdGlmaWNhdGlvbi50ZXh0fTwvaDQ+XHJcblx0XHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGFjdGlvbj17W1xyXG5cdFx0XHRcdFx0XHRcdDxCdXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cIm5vdGlmaWNhdGlvbi1jbG9zZS1idXR0b25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0YXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuXHRcdFx0XHRcdFx0XHRcdGNvbG9yPVwiaW5oZXJpdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRrZXk9XCJjbG9zZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrPXt0aGlzLnJlbW92ZU5vdGlmaWNhdGlvbn0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8SWNvbkNsb3NlIGNsYXNzTmFtZT1cInYtbWlkXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdENsb3NlXHJcblx0XHRcdFx0XHRcdFx0PC9CdXR0b24+XHJcblx0XHRcdFx0XHRcdF19XHJcblx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdDwvU25hY2tiYXI+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0KVxyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9IChzdGF0ZTogeyBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25TdGF0ZTsgbW9kYWxzOiBNb2RhbHNTdGF0ZSB9KSA9PiB7XHJcblx0cmV0dXJuIHtcclxuXHRcdG5vdGlmaWNhdGlvbnM6IHN0YXRlLm5vdGlmaWNhdGlvbnMucXVldWUsXHJcblx0XHRvcGVuTW9kYWxJZHM6IE9iamVjdC5rZXlzKHN0YXRlLm1vZGFscylcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzKShOb3RpZmljYXRpb25zKVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sY0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQStFLElBQUFTLFdBQUEsR0FBQVQsT0FBQTtBQW1CeEUsTUFBTVUsYUFBYSxTQUFTQyxnQkFBUyxDQUF5QztFQUdwRkMsV0FBV0EsQ0FBQ0MsS0FBeUIsRUFBRTtJQUN0QyxLQUFLLENBQUNBLEtBQUssQ0FBQztJQUFBLElBQUFDLGdCQUFBLENBQUFDLE9BQUEsNkJBSG1DQyxTQUFTO0lBQUEsSUFBQUYsZ0JBQUEsQ0FBQUMsT0FBQSxrQ0E2QmhDLE1BQU07TUFDOUIsSUFBSSxJQUFJLENBQUNFLGlCQUFpQixFQUFFO1FBQzNCQyxZQUFZLENBQUMsSUFBSSxDQUFDRCxpQkFBaUIsQ0FBQztRQUNwQyxJQUFJLENBQUNBLGlCQUFpQixHQUFHRCxTQUFTO01BQ25DO0lBQ0QsQ0FBQztJQUFBLElBQUFGLGdCQUFBLENBQUFDLE9BQUEsOEJBRW9CLE1BQU07TUFDMUIsTUFBTTtRQUFFSSxZQUFZO1FBQUVDO01BQWMs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Q2hDTSxTQUFTLEVBQUMsOEJBQThCO1FBQUFzQixRQUFBLGVBQ3hDLElBQUE3QyxXQUFBLENBQUE0QyxHQUFBLEVBQUN0RCxLQUFBLENBQUErRCxlQUFlO1VBQ2Y5QixTQUFTLEVBQUVBLFNBQVU7VUFDckIsb0JBQWtCLEdBQUdKLEVBQUUsZ0JBQWlCO1VBQ3hDbUMsT0FBTyxlQUNOLElBQUF0RCxXQUFBLENBQUE0QyxHQUFBO1lBQU16QixFQUFFLEVBQUUsR0FBR0EsRUFBRSxnQkFBaUI7WUFBQ0ksU0FBUyxFQUFDLDRCQUE0QjtZQUFBc0IsUUFBQSxlQUN0RSxJQUFBN0MsV0FBQSxDQUFBNEMsR0FBQTtjQUFJckIsU0FBUyxFQUFDLFlBQVk7Y0FBQXNCLFFBQUEsRUFBRSxDQUFDLENBQUNoQyxZQUFZLElBQUlBLFlBQVksQ0FBQzBDO1lBQUksQ0FBSztVQUFDLENBQ2hFLENBQ047VUFDREMsTUFBTSxFQUFFLGNBQ1AsSUFBQXhELFdBQUEsQ0FBQXlELElBQUEsRUFBQ25FLEtBQUEsQ0FBQW9FLE1BQU07WUFDTm5DLFNBQVMsRUFBQywyQkFBMkI7WUFDckMsY0FBVyxPQUFPO1lBQ2xCb0MsS0FBSyxFQUFDLFNBQVM7WUFFZkMsT0FBTyxFQUFFLElBQUksQ0FBQ2pDLGtCQUFtQjtZQUFBa0IsUUFBQSxnQkFDakMsSUFBQTdDLFdBQUEsQ0FBQTRDLEdBQUEsRUFBQ3BELE1BQUEsQ0FBQWMsT0FBUztjQUFDaUIsU0FBUyxFQUFDO1lBQU8sQ0FBRSxDQUFDLFNBRWhDO1VBQUEsR0FKSyxPQUlHLENBQUM7UUFDUixDQUNGO01BQUMsQ0FDTztJQUFDLENBQ1AsQ0FBQztFQUVSO0FBQ0Q7QUFBQ3NDLE9BQUEsQ0FBQTVELGFBQUEsR0FBQUEsYUFBQTtBQUVNLE1BQU02RCxlQUFlLEdBQUkvQyxLQUFnRSxJQUFLO0VBQ3BHLE9BQU87SUFDTkosYUFBYSxFQUFFSSxLQUFLLENBQUNKLGFBQWEsQ0FBQ29ELEtBQUs7SUFDeENyRCxZQUFZLEVBQUVzRCxNQUFNLENBQUNDLElBQUksQ0FBQ2xELEtBQUssQ0FBQ21ELE1BQU07RUFDdkMsQ0FBQztBQUNGLENBQUM7QUFBQUwsT0FBQSxDQUFBQyxlQUFBLEdBQUFBLGVBQUE7QUFBQSxJQUFBSyxRQUFBLEdBQUFOLE9BQUEsQ0FBQXZELE9BQUEsR0FFYyxJQUFBOEQsbUJBQU8sRUFBQ04sZUFBZSxDQUFDLENBQUM3RCxhQUFhLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=