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.
- package/lib/components/ActionList.js +170 -34
- package/lib/components/AlertDialog.js +133 -9
- package/lib/components/AlertWithIcon.js +92 -25
- package/lib/components/ConnectedModal.js +43 -13
- package/lib/components/Dropdowns/GroupsDropdown.js +69 -44
- package/lib/components/Dropdowns/ManagedNavDropdown.js +100 -67
- package/lib/components/Dropdowns/UserDropdown.js +111 -21
- package/lib/components/Dropdowns/index.js +27 -9
- package/lib/components/EntityOwnerList.js +52 -18
- package/lib/components/Error.js +106 -11
- package/lib/components/ErrorBoundary.js +134 -35
- package/lib/components/ErrorMessage.js +44 -9
- package/lib/components/Forms/DateField.js +61 -42
- package/lib/components/Forms/TimeField.js +81 -42
- package/lib/components/Forms/index.js +27 -4
- package/lib/components/Groups/CreateEditCopySaveButtons.js +114 -11
- package/lib/components/Groups/ExternalGroups/Attach.js +212 -148
- package/lib/components/Groups/ExternalGroups/Table.js +181 -45
- package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
- package/lib/components/Groups/RosterSyncInfo.js +147 -20
- package/lib/components/HOC/AccessibleAppComponent.js +98 -73
- package/lib/components/HOC/ActivityRequiredComponent.js +92 -49
- package/lib/components/HOC/AsyncComponent.js +54 -39
- package/lib/components/HOC/AuthenticatedComponent.js +58 -38
- package/lib/components/HOC/CollectionComponent.js +170 -110
- package/lib/components/HOC/CollectionFirstItemComponent.js +51 -38
- package/lib/components/HOC/CollectionItemComponent.js +168 -106
- package/lib/components/HOC/ConnectedModalComponent.js +109 -80
- package/lib/components/HOC/DataDependentComponent.js +29 -21
- package/lib/components/HOC/EntityComponent.js +71 -57
- package/lib/components/HOC/FullscreenModalComponent.js +163 -123
- package/lib/components/HOC/GroupActivityRequiredComponent.js +45 -31
- package/lib/components/HOC/GuidComponent.js +29 -22
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +41 -31
- package/lib/components/HOC/ModelErrorRedirectComponent.js +51 -47
- package/lib/components/HOC/SearchPersistorComponent.js +240 -166
- package/lib/components/HOC/UnauthenticatedComponent.js +37 -25
- package/lib/components/HOC/UserComponent.js +12 -7
- package/lib/components/Icons/IconAlphaList.js +33 -5
- package/lib/components/Icons/IconExternalUser.js +33 -5
- package/lib/components/Icons/IconImpersonation.js +33 -5
- package/lib/components/Icons/IconStopImpersonating.js +33 -5
- package/lib/components/Icons/IconTable.js +35 -7
- package/lib/components/Icons/IconTableDeleteCol.js +33 -5
- package/lib/components/Icons/IconTableDeleteRow.js +33 -5
- package/lib/components/Icons/IconTableInsertCol.js +33 -5
- package/lib/components/Icons/IconTableInsertRow.js +33 -5
- package/lib/components/Impersonation/Button.js +77 -13
- package/lib/components/Impersonation/Link.js +77 -13
- package/lib/components/Impersonation/UserDetail.js +66 -9
- package/lib/components/Loading.js +26 -4
- package/lib/components/LockDownBrowser/Check.js +194 -49
- package/lib/components/LockDownBrowser/ExitButton.js +26 -9
- package/lib/components/LockDownBrowser/Launch.js +70 -62
- package/lib/components/Lti/Confirm.js +152 -11
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -33
- package/lib/components/Lti/Launch.js +105 -24
- package/lib/components/Lti/LaunchGroup.js +85 -13
- package/lib/components/ManageTable.js +309 -87
- package/lib/components/ManageTableNoDataComponent.js +42 -4
- package/lib/components/NewVersionAlert.js +82 -46
- package/lib/components/NotFound.js +86 -10
- package/lib/components/Notifications.js +185 -126
- package/lib/components/PaginationNextButton.js +33 -6
- package/lib/components/PaginationPreviousButton.js +33 -6
- package/lib/components/Quill/CustomToolbar.js +432 -218
- package/lib/components/Quill/Formats/Image.js +73 -63
- package/lib/components/Quill/Formats/List.js +45 -45
- package/lib/components/Quill/Formats/Video.js +28 -24
- package/lib/components/Quill/ImageDropModule.js +147 -117
- package/lib/components/Quill/ImageWarning.js +47 -9
- package/lib/components/Quill/ImageWithAltTextModal.js +425 -86
- package/lib/components/Quill/Specs/CustomImageSpec.js +42 -34
- package/lib/components/Quill/Specs/CustomVideoSpec.js +34 -28
- package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +98 -98
- package/lib/components/Quill/TableModule/Blots/TableBlot.js +52 -47
- package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +53 -48
- package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +224 -221
- package/lib/components/Quill/TableModule/Blots/TableContainer.js +80 -83
- package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +75 -70
- package/lib/components/Quill/TableModule/constants.js +45 -41
- package/lib/components/Quill/TableModule/index.js +362 -301
- package/lib/components/Quill/TableModule/utils.js +42 -38
- package/lib/components/Quill/accessibilityFix.js +234 -232
- package/lib/components/Quill/index.js +34 -28
- package/lib/components/RefreshIndicator/Bordered.js +47 -6
- package/lib/components/RefreshIndicator/Inline.js +47 -8
- package/lib/components/RefreshIndicator/index.js +263 -59
- package/lib/components/SearchControls.js +216 -11
- package/lib/components/SentryRoute.js +11 -6
- package/lib/components/Tables/RoleFilter.js +69 -32
- package/lib/components/Tables/TextFilter.js +62 -13
- package/lib/components/UserRoles/Add.js +199 -96
- package/lib/components/UserRoles/Context.js +11 -7
- package/lib/components/UserRoles/RoleCell.js +181 -72
- package/lib/components/UserRoles/Select.js +157 -17
- package/lib/components/UserRoles/Table.js +221 -80
- package/lib/components/UserRoles/index.js +534 -384
- package/lib/config/eslint/index.js +32 -28
- package/lib/config/eslint/lib/order.js +26 -27
- package/lib/config/eslint/lib/prettier.js +20 -18
- package/lib/config/eslint/lib/typescript.js +93 -112
- package/lib/config/eslint/react.js +24 -14
- package/lib/constants/baseActivity.js +30 -26
- package/lib/constants/baseRole.js +14 -10
- package/lib/constants/configuration.js +33 -29
- package/lib/constants/externalProviderType.js +10 -6
- package/lib/constants/fetchErrorData.js +15 -11
- package/lib/constants/index.js +137 -14
- package/lib/constants/lockDownBrowser.js +28 -24
- package/lib/constants/mockData.js +382 -297
- package/lib/constants/modelStatus.js +15 -11
- package/lib/constants/notificationType.js +12 -8
- package/lib/constants/operatingSystem.js +12 -8
- package/lib/constants/shard.js +11 -7
- package/lib/constants/table.js +21 -21
- package/lib/constants/tier.js +12 -8
- package/lib/constants/userRole.js +15 -5
- package/lib/endpointMappings.js +197 -181
- package/lib/hooks/useCollection.js +82 -62
- package/lib/hooks/useCollectionConfiguration.js +228 -83
- package/lib/hooks/useCollectionItem.js +154 -54
- package/lib/hooks/useGuid.js +20 -8
- package/lib/hooks/usePrevious.js +19 -13
- package/lib/index.js +157 -25
- package/lib/redux/actionCreator.js +50 -28
- package/lib/redux/actions/AuthAction.js +44 -31
- package/lib/redux/actions/ModalAction.js +10 -6
- package/lib/redux/actions/ModelAction.js +77 -39
- package/lib/redux/actions/NotificationAction.js +10 -6
- package/lib/redux/actions/SearchAction.js +9 -5
- package/lib/redux/actions/index.js +60 -7
- package/lib/redux/configureReducers.js +60 -49
- package/lib/redux/configureStore.js +83 -87
- package/lib/redux/helpers.js +6 -2
- package/lib/redux/reducers/authReducer.js +50 -43
- package/lib/redux/reducers/index.js +41 -13
- package/lib/redux/reducers/modalsReducer.js +47 -29
- package/lib/redux/reducers/modelsReducer.js +178 -173
- package/lib/redux/reducers/notificationsReducer.js +24 -18
- package/lib/redux/reducers/searchReducer.js +25 -19
- package/lib/redux/sagas/appInsightsSaga.js +22 -18
- package/lib/redux/sagas/authSaga.js +253 -218
- package/lib/redux/sagas/caliperSaga.js +159 -143
- package/lib/redux/sagas/clockOffsetSaga.js +34 -31
- package/lib/redux/sagas/configurationSaga.js +11 -7
- package/lib/redux/sagas/downtimeApiErrorSaga.js +20 -17
- package/lib/redux/sagas/errorSaga.js +27 -21
- package/lib/redux/sagas/googleAnalyticsSaga.js +28 -24
- package/lib/redux/sagas/identityProviderSaga.js +22 -18
- package/lib/redux/sagas/initialDataLoadSaga.js +37 -28
- package/lib/redux/sagas/lockDownBrowserErrorSaga.js +29 -20
- package/lib/redux/sagas/modelFetchSaga.js +355 -322
- package/lib/redux/sagas/noStoreSaga.js +61 -48
- package/lib/redux/sagas/postLoginDataSaga.js +45 -34
- package/lib/redux/sagas/postLoginRedirectSaga.js +27 -27
- package/lib/redux/sagas/rootSaga.js +82 -57
- package/lib/redux/sagas/sentrySaga.js +29 -25
- package/lib/redux/sagas/userIdSaga.js +16 -12
- package/lib/services/codeProviderService.js +25 -19
- package/lib/services/dateService.js +12 -7
- package/lib/services/documentService.js +17 -12
- package/lib/services/fetchService.js +129 -112
- package/lib/services/persistenceService.js +33 -29
- package/lib/services/ticketProviderService.js +29 -23
- package/lib/services/tokenPersistenceService.js +12 -8
- package/lib/services/windowService.js +18 -14
- package/lib/startup.js +132 -114
- package/lib/types/AppConfiguration.js +5 -1
- package/lib/types/Artifact.js +11 -7
- package/lib/types/BaseReduxState.js +5 -1
- package/lib/types/Client.js +5 -1
- package/lib/types/Collection.js +5 -1
- package/lib/types/Configuration.js +5 -1
- package/lib/types/DeepLinkingResponseRequest.js +5 -1
- package/lib/types/DeletableModel.js +5 -1
- package/lib/types/Event.js +5 -1
- package/lib/types/ExternalGroup.js +5 -1
- package/lib/types/ExternalProvider.js +5 -1
- package/lib/types/ExternalTerm.js +5 -1
- package/lib/types/Group.js +5 -1
- package/lib/types/IdentityProvider.js +5 -1
- package/lib/types/LtiLaunch.js +5 -1
- package/lib/types/NameOnlyEntity.js +5 -1
- package/lib/types/Notification.js +5 -1
- package/lib/types/OptionalRecord.js +5 -1
- package/lib/types/OwnerSchedule.js +5 -1
- package/lib/types/PropertyOfType.js +5 -1
- package/lib/types/Quill.js +5 -1
- package/lib/types/RoleDescription.js +5 -1
- package/lib/types/Search.js +5 -1
- package/lib/types/SimpleLocation.js +5 -1
- package/lib/types/UniTime.js +5 -1
- package/lib/types/User.js +5 -1
- package/lib/types/UserRole.js +5 -1
- package/lib/types/auth/AuthState.js +5 -1
- package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
- package/lib/types/auth/ClientCredentials.js +5 -1
- package/lib/types/auth/CodeProviderService.js +5 -1
- package/lib/types/auth/LocalLoginRequestBody.js +5 -1
- package/lib/types/auth/TicketProviderService.js +5 -1
- package/lib/types/auth/TokenPersistenceService.js +5 -1
- package/lib/types/auth/index.js +82 -9
- package/lib/types/externals.d.js +2 -0
- package/lib/types/index.js +313 -30
- package/lib/types/net/EndpointConfig.js +5 -1
- package/lib/types/net/EndpointMapping.js +5 -1
- package/lib/types/net/EndpointMappings.js +5 -1
- package/lib/types/net/ErrorHandler.js +5 -1
- package/lib/types/net/FetchConfig.js +5 -1
- package/lib/types/net/FetchErrorData.js +10 -6
- package/lib/types/net/FetchResult.js +5 -1
- package/lib/types/net/HTTPMethod.js +5 -1
- package/lib/types/net/HTTPStatusCode.js +16 -12
- package/lib/types/net/Metadata.js +5 -1
- package/lib/types/net/Model.js +5 -1
- package/lib/types/net/ModelCollection.js +5 -1
- package/lib/types/net/ModelsState.js +5 -1
- package/lib/types/net/OAuthToken.js +5 -1
- package/lib/types/net/OAuthTokenOrNull.js +5 -1
- package/lib/types/net/TokenAccessFunction.js +5 -1
- package/lib/types/net/index.js +181 -18
- package/lib/utils/baseActivity.js +133 -123
- package/lib/utils/baseRole.js +37 -33
- package/lib/utils/collection.js +425 -298
- package/lib/utils/cookies.js +22 -19
- package/lib/utils/date.js +303 -279
- package/lib/utils/dom.js +176 -165
- package/lib/utils/domainIdentifier.js +9 -5
- package/lib/utils/entityUserRole.js +6 -2
- package/lib/utils/error.js +17 -15
- package/lib/utils/events.js +40 -31
- package/lib/utils/externalGroup.js +22 -18
- package/lib/utils/externalProviders.js +8 -4
- package/lib/utils/externalTerms.js +10 -3
- package/lib/utils/fetch.js +179 -180
- package/lib/utils/group.js +18 -7
- package/lib/utils/groupDates.js +37 -33
- package/lib/utils/groupRoles.js +25 -21
- package/lib/utils/lockDownBrowser.js +15 -11
- package/lib/utils/logger.js +26 -22
- package/lib/utils/lti.js +9 -4
- package/lib/utils/model.js +36 -41
- package/lib/utils/number.js +21 -18
- package/lib/utils/promise.js +28 -21
- package/lib/utils/quill.js +65 -62
- package/lib/utils/route.js +58 -55
- package/lib/utils/search.js +76 -80
- package/lib/utils/shard.js +37 -37
- package/lib/utils/sort.js +50 -42
- package/lib/utils/string.js +13 -8
- package/lib/utils/table.js +38 -33
- package/lib/utils/timezone.js +10 -6
- package/lib/utils/url.js +142 -142
- package/lib/utils/user.js +58 -55
- package/lib/utils/userAgent.js +10 -10
- package/lib/utils/userRole.js +57 -49
- package/package.json +17 -3
|
@@ -1,52 +1,88 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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 =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
80
|
+
const mapStateToProps = state => {
|
|
81
|
+
return {
|
|
82
|
+
client: state.models.client
|
|
83
|
+
};
|
|
49
84
|
};
|
|
50
85
|
exports.mapStateToProps = mapStateToProps;
|
|
51
|
-
const connectedNewVersionAlert = (0,
|
|
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+IEEgbmV3IHZlcnNpb24gb2Yge2FwcE5hbWV9IGlzXHJcblx0XHRcdFx0XHRcdFx0XHRhdmFpbGFibGVcclxuXHRcdFx0XHRcdFx0XHQ8L2gyPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzTmFtZT1cIm1hMFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0UGxlYXNlIGNsaWNrIFwiUmVmcmVzaFwiIHRvIGdldCB0aGUgbmV3IHZlcnNpb24uIElmIHlvdSBjb250aW51ZSBzZWVpbmcgdGhpcyBtZXNzYWdlLFxyXG5cdFx0XHRcdFx0XHRcdFx0cGxlYXNlIGNsZWFyIHlvdXIgYnJvd3NlciBjYWNoZSBhbmQgdHJ5IGFnYWluLlxyXG5cdFx0XHRcdFx0XHRcdDwvcD5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0YWN0aW9uPXtbXHJcblx0XHRcdFx0XHRcdDxCdXR0b24ga2V5PVwicmVmcmVzaFwiIGFyaWEtbGFiZWw9XCJSZWZyZXNoXCIgY29sb3I9XCJwcmltYXJ5XCIgb25DbGljaz17dGhpcy5yZWZyZXNofT5cclxuXHRcdFx0XHRcdFx0XHQ8UmVmcmVzaCBjbGFzc05hbWU9XCJmaWxsLWJsYWNrXCIgLz4gUmVmcmVzaFxyXG5cdFx0XHRcdFx0XHQ8L0J1dHRvbj5cclxuXHRcdFx0XHRcdF19XHJcblx0XHRcdFx0Lz5cclxuXHRcdFx0PC9TbmFja2Jhcj5cclxuXHRcdClcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoc3RhdGU6IEJhc2VSZWR1eFN0YXRlKTogTmV3VmVyc2lvbkFsZXJ0UHJvcHMgPT4ge1xyXG5cdHJldHVybiB7XHJcblx0XHRjbGllbnQ6IHN0YXRlLm1vZGVscy5jbGllbnRcclxuXHR9XHJcbn1cclxuXHJcbmNvbnN0IGNvbm5lY3RlZE5ld1ZlcnNpb25BbGVydDogQ29tcG9uZW50Q2xhc3MgPSB3aXRoUm91dGVyKGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzKShOZXdWZXJzaW9uQWxlcnQpKVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdGVkTmV3VmVyc2lvbkFsZXJ0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sZUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsY0FBQSxHQUFBUixPQUFBO0FBQXlELElBQUFTLFdBQUEsR0FBQVQsT0FBQTtBQVVsRCxNQUFNVSxlQUFlLFNBQVNDLGdCQUFTLENBQTZDO0VBQUFDLFlBQUE7SUFBQSxTQUFBQyxTQUFBO0lBQUEsSUFBQUMsZ0JBQUEsQ0FBQUMsT0FBQSw0QkFPdkUsTUFBTTtNQUN4QixNQUFNO1FBQUVDO01BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztNQUM3QixNQUFNQyxPQUFPLEdBQUcsSUFBQUMsMkJBQVksRUFBQyxDQUFDLENBQUNDLE9BQU87TUFDdEMsT0FDQyxDQUFDLENBQUNKLE1BQU0sSUFBSSxDQUFDLENBQUNBLE1BQU0sQ0FBQ0ssY0FBYyxJQUFJLENBQUMsQ0FBQ0gsT0FBTyxJQUFJLElBQUFJLHdCQUFlLEVBQUNKLE9BQU8sRUFBRUYsTUFBTSxDQUFDSyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFNUcsQ0FBQztJQUFBLElBQUFQLGdCQUFBLENBQUFDLE9BQUEsbUJBRVMsTUFBTTtNQUNm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
|
|
@@ -1,14 +1,90 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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 =
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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,
|
|
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=
|