studiokit-scaffolding-js 7.0.12-next.1.3 → 7.0.12-next.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/lib/components/ActionList.js +164 -37
  2. package/lib/components/AlertDialog.js +128 -12
  3. package/lib/components/AlertWithIcon.js +88 -29
  4. package/lib/components/ConnectedModal.js +35 -12
  5. package/lib/components/Dropdowns/GroupsDropdown.js +63 -45
  6. package/lib/components/Dropdowns/ManagedNavDropdown.js +92 -67
  7. package/lib/components/Dropdowns/UserDropdown.js +105 -24
  8. package/lib/components/Dropdowns/index.js +4 -10
  9. package/lib/components/EntityOwnerList.js +47 -21
  10. package/lib/components/Error.js +101 -12
  11. package/lib/components/ErrorBoundary.js +127 -38
  12. package/lib/components/ErrorMessage.js +39 -12
  13. package/lib/components/Forms/DateField.js +56 -45
  14. package/lib/components/Forms/TimeField.js +76 -45
  15. package/lib/components/Forms/index.js +3 -5
  16. package/lib/components/Groups/CreateEditCopySaveButtons.js +109 -14
  17. package/lib/components/Groups/ExternalGroups/Attach.js +206 -151
  18. package/lib/components/Groups/ExternalGroups/Table.js +176 -48
  19. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +2 -2
  20. package/lib/components/Groups/RosterSyncInfo.js +142 -23
  21. package/lib/components/HOC/AccessibleAppComponent.js +88 -72
  22. package/lib/components/HOC/ActivityRequiredComponent.js +68 -33
  23. package/lib/components/HOC/AsyncComponent.js +49 -41
  24. package/lib/components/HOC/AuthenticatedComponent.js +55 -44
  25. package/lib/components/HOC/CollectionComponent.js +154 -104
  26. package/lib/components/HOC/CollectionFirstItemComponent.js +45 -40
  27. package/lib/components/HOC/CollectionItemComponent.js +152 -100
  28. package/lib/components/HOC/ConnectedModalComponent.js +87 -69
  29. package/lib/components/HOC/DataDependentComponent.js +26 -27
  30. package/lib/components/HOC/EntityComponent.js +57 -53
  31. package/lib/components/HOC/FullscreenModalComponent.js +139 -108
  32. package/lib/components/HOC/GroupActivityRequiredComponent.js +27 -20
  33. package/lib/components/HOC/GuidComponent.js +20 -20
  34. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +32 -29
  35. package/lib/components/HOC/ModelErrorRedirectComponent.js +37 -39
  36. package/lib/components/HOC/SearchPersistorComponent.js +237 -173
  37. package/lib/components/HOC/UnauthenticatedComponent.js +32 -30
  38. package/lib/components/HOC/UserComponent.js +6 -8
  39. package/lib/components/Icons/IconAlphaList.js +28 -8
  40. package/lib/components/Icons/IconExternalUser.js +28 -8
  41. package/lib/components/Icons/IconImpersonation.js +28 -8
  42. package/lib/components/Icons/IconStopImpersonating.js +28 -8
  43. package/lib/components/Icons/IconTable.js +29 -9
  44. package/lib/components/Icons/IconTableDeleteCol.js +28 -8
  45. package/lib/components/Icons/IconTableDeleteRow.js +28 -8
  46. package/lib/components/Icons/IconTableInsertCol.js +28 -8
  47. package/lib/components/Icons/IconTableInsertRow.js +28 -8
  48. package/lib/components/Impersonation/Button.js +71 -16
  49. package/lib/components/Impersonation/Link.js +72 -16
  50. package/lib/components/Impersonation/UserDetail.js +60 -11
  51. package/lib/components/Loading.js +23 -8
  52. package/lib/components/LockDownBrowser/Check.js +188 -51
  53. package/lib/components/LockDownBrowser/ExitButton.js +22 -13
  54. package/lib/components/LockDownBrowser/Launch.js +64 -64
  55. package/lib/components/Lti/Confirm.js +147 -14
  56. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +165 -36
  57. package/lib/components/Lti/Launch.js +99 -25
  58. package/lib/components/Lti/LaunchGroup.js +81 -16
  59. package/lib/components/ManageTable.js +304 -90
  60. package/lib/components/ManageTableNoDataComponent.js +38 -7
  61. package/lib/components/NewVersionAlert.js +76 -49
  62. package/lib/components/NotFound.js +81 -11
  63. package/lib/components/Notifications.js +179 -129
  64. package/lib/components/PaginationNextButton.js +28 -9
  65. package/lib/components/PaginationPreviousButton.js +28 -9
  66. package/lib/components/Quill/CustomToolbar.js +427 -222
  67. package/lib/components/Quill/Formats/Image.js +67 -67
  68. package/lib/components/Quill/Formats/List.js +38 -47
  69. package/lib/components/Quill/Formats/Video.js +23 -26
  70. package/lib/components/Quill/ImageDropModule.js +136 -114
  71. package/lib/components/Quill/ImageWarning.js +41 -12
  72. package/lib/components/Quill/ImageWithAltTextModal.js +420 -89
  73. package/lib/components/Quill/Specs/CustomImageSpec.js +32 -31
  74. package/lib/components/Quill/Specs/CustomVideoSpec.js +22 -23
  75. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +89 -97
  76. package/lib/components/Quill/TableModule/Blots/TableBlot.js +47 -50
  77. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +48 -51
  78. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +219 -224
  79. package/lib/components/Quill/TableModule/Blots/TableContainer.js +75 -86
  80. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +70 -73
  81. package/lib/components/Quill/TableModule/constants.js +40 -42
  82. package/lib/components/Quill/TableModule/index.js +357 -305
  83. package/lib/components/Quill/TableModule/utils.js +39 -48
  84. package/lib/components/Quill/accessibilityFix.js +219 -223
  85. package/lib/components/Quill/index.js +30 -33
  86. package/lib/components/RefreshIndicator/Bordered.js +44 -10
  87. package/lib/components/RefreshIndicator/Inline.js +43 -12
  88. package/lib/components/RefreshIndicator/index.js +257 -62
  89. package/lib/components/SearchControls.js +211 -14
  90. package/lib/components/SentryRoute.js +5 -7
  91. package/lib/components/Tables/RoleFilter.js +66 -38
  92. package/lib/components/Tables/TextFilter.js +58 -18
  93. package/lib/components/UserRoles/Add.js +193 -99
  94. package/lib/components/UserRoles/Context.js +3 -6
  95. package/lib/components/UserRoles/RoleCell.js +176 -75
  96. package/lib/components/UserRoles/Select.js +151 -20
  97. package/lib/components/UserRoles/Table.js +215 -82
  98. package/lib/components/UserRoles/index.js +526 -386
  99. package/lib/config/eslint/index.js +26 -29
  100. package/lib/config/eslint/lib/order.js +21 -28
  101. package/lib/config/eslint/lib/prettier.js +15 -19
  102. package/lib/config/eslint/lib/typescript.js +87 -113
  103. package/lib/config/eslint/react.js +18 -15
  104. package/lib/constants/baseActivity.js +26 -28
  105. package/lib/constants/baseRole.js +10 -12
  106. package/lib/constants/configuration.js +43 -55
  107. package/lib/constants/externalProviderType.js +6 -8
  108. package/lib/constants/fetchErrorData.js +10 -12
  109. package/lib/constants/index.js +13 -15
  110. package/lib/constants/lockDownBrowser.js +23 -25
  111. package/lib/constants/mockData.js +370 -300
  112. package/lib/constants/modelStatus.js +11 -13
  113. package/lib/constants/notificationType.js +8 -10
  114. package/lib/constants/operatingSystem.js +8 -10
  115. package/lib/constants/shard.js +7 -9
  116. package/lib/constants/table.js +18 -22
  117. package/lib/constants/tier.js +8 -10
  118. package/lib/constants/userRole.js +11 -8
  119. package/lib/endpointMappings.js +191 -182
  120. package/lib/hooks/useCollection.js +79 -65
  121. package/lib/hooks/useCollectionConfiguration.js +220 -80
  122. package/lib/hooks/useCollectionItem.js +151 -57
  123. package/lib/hooks/useGuid.js +16 -9
  124. package/lib/hooks/usePrevious.js +14 -13
  125. package/lib/index.js +11 -26
  126. package/lib/redux/actionCreator.js +44 -35
  127. package/lib/redux/actions/AuthAction.js +45 -32
  128. package/lib/redux/actions/ModalAction.js +6 -8
  129. package/lib/redux/actions/ModelAction.js +95 -43
  130. package/lib/redux/actions/NotificationAction.js +6 -8
  131. package/lib/redux/actions/SearchAction.js +5 -7
  132. package/lib/redux/actions/index.js +6 -8
  133. package/lib/redux/configureReducers.js +48 -46
  134. package/lib/redux/configureStore.js +77 -91
  135. package/lib/redux/helpers.js +2 -5
  136. package/lib/redux/reducers/authReducer.js +44 -43
  137. package/lib/redux/reducers/index.js +7 -14
  138. package/lib/redux/reducers/modalsReducer.js +43 -31
  139. package/lib/redux/reducers/modelsReducer.js +131 -137
  140. package/lib/redux/reducers/notificationsReducer.js +20 -20
  141. package/lib/redux/reducers/searchReducer.js +13 -13
  142. package/lib/redux/sagas/appInsightsSaga.js +19 -21
  143. package/lib/redux/sagas/authSaga.js +248 -234
  144. package/lib/redux/sagas/caliperSaga.js +142 -131
  145. package/lib/redux/sagas/clockOffsetSaga.js +29 -32
  146. package/lib/redux/sagas/configurationSaga.js +8 -10
  147. package/lib/redux/sagas/downtimeApiErrorSaga.js +16 -19
  148. package/lib/redux/sagas/errorSaga.js +23 -24
  149. package/lib/redux/sagas/googleAnalyticsSaga.js +24 -27
  150. package/lib/redux/sagas/identityProviderSaga.js +19 -21
  151. package/lib/redux/sagas/initialDataLoadSaga.js +34 -31
  152. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +25 -22
  153. package/lib/redux/sagas/modelFetchSaga.js +302 -286
  154. package/lib/redux/sagas/noStoreSaga.js +60 -61
  155. package/lib/redux/sagas/postLoginDataSaga.js +37 -32
  156. package/lib/redux/sagas/postLoginRedirectSaga.js +22 -27
  157. package/lib/redux/sagas/rootSaga.js +77 -60
  158. package/lib/redux/sagas/sentrySaga.js +25 -28
  159. package/lib/redux/sagas/userIdSaga.js +13 -15
  160. package/lib/services/codeProviderService.js +21 -21
  161. package/lib/services/dateService.js +6 -8
  162. package/lib/services/documentService.js +10 -11
  163. package/lib/services/fetchService.js +103 -95
  164. package/lib/services/persistenceService.js +27 -30
  165. package/lib/services/ticketProviderService.js +25 -25
  166. package/lib/services/tokenPersistenceService.js +8 -10
  167. package/lib/services/windowService.js +14 -16
  168. package/lib/startup.js +110 -101
  169. package/lib/types/AppConfiguration.js +2 -2
  170. package/lib/types/Artifact.js +7 -9
  171. package/lib/types/BaseReduxState.js +2 -2
  172. package/lib/types/Client.js +2 -2
  173. package/lib/types/Collection.js +2 -2
  174. package/lib/types/Configuration.js +2 -2
  175. package/lib/types/DeepLinkingResponseRequest.js +2 -2
  176. package/lib/types/DeletableModel.js +2 -2
  177. package/lib/types/Event.js +2 -2
  178. package/lib/types/ExternalGroup.js +2 -2
  179. package/lib/types/ExternalProvider.js +2 -2
  180. package/lib/types/ExternalTerm.js +2 -2
  181. package/lib/types/Group.js +2 -2
  182. package/lib/types/IdentityProvider.js +2 -2
  183. package/lib/types/LtiLaunch.js +2 -2
  184. package/lib/types/NameOnlyEntity.js +2 -2
  185. package/lib/types/Notification.js +2 -2
  186. package/lib/types/OptionalRecord.js +2 -2
  187. package/lib/types/OwnerSchedule.js +2 -2
  188. package/lib/types/PropertyOfType.js +2 -2
  189. package/lib/types/Quill.js +2 -2
  190. package/lib/types/RoleDescription.js +2 -2
  191. package/lib/types/Search.js +2 -2
  192. package/lib/types/SimpleLocation.js +2 -2
  193. package/lib/types/UniTime.js +2 -2
  194. package/lib/types/User.js +2 -2
  195. package/lib/types/UserRole.js +2 -2
  196. package/lib/types/auth/AuthState.js +2 -2
  197. package/lib/types/auth/CasV1LoginRequestBody.js +2 -2
  198. package/lib/types/auth/ClientCredentials.js +2 -2
  199. package/lib/types/auth/CodeProviderService.js +2 -2
  200. package/lib/types/auth/LocalLoginRequestBody.js +2 -2
  201. package/lib/types/auth/TicketProviderService.js +2 -2
  202. package/lib/types/auth/TokenPersistenceService.js +2 -2
  203. package/lib/types/auth/index.js +8 -10
  204. package/lib/types/externals.d.js +2 -0
  205. package/lib/types/index.js +29 -31
  206. package/lib/types/net/EndpointConfig.js +2 -2
  207. package/lib/types/net/EndpointMapping.js +2 -2
  208. package/lib/types/net/EndpointMappings.js +2 -2
  209. package/lib/types/net/ErrorHandler.js +2 -2
  210. package/lib/types/net/FetchConfig.js +2 -2
  211. package/lib/types/net/FetchErrorData.js +6 -8
  212. package/lib/types/net/FetchResult.js +2 -2
  213. package/lib/types/net/HTTPMethod.js +2 -2
  214. package/lib/types/net/HTTPStatusCode.js +12 -14
  215. package/lib/types/net/Metadata.js +2 -2
  216. package/lib/types/net/Model.js +2 -2
  217. package/lib/types/net/ModelCollection.js +2 -2
  218. package/lib/types/net/ModelsState.js +2 -2
  219. package/lib/types/net/OAuthToken.js +2 -2
  220. package/lib/types/net/OAuthTokenOrNull.js +2 -2
  221. package/lib/types/net/TokenAccessFunction.js +2 -2
  222. package/lib/types/net/index.js +17 -19
  223. package/lib/utils/baseActivity.js +83 -85
  224. package/lib/utils/baseRole.js +32 -36
  225. package/lib/utils/collection.js +403 -297
  226. package/lib/utils/cookies.js +19 -23
  227. package/lib/utils/date.js +188 -205
  228. package/lib/utils/dom.js +130 -131
  229. package/lib/utils/domainIdentifier.js +4 -8
  230. package/lib/utils/entityUserRole.js +2 -5
  231. package/lib/utils/error.js +14 -19
  232. package/lib/utils/events.js +32 -31
  233. package/lib/utils/externalGroup.js +20 -25
  234. package/lib/utils/externalProviders.js +4 -7
  235. package/lib/utils/externalTerms.js +6 -6
  236. package/lib/utils/fetch.js +168 -176
  237. package/lib/utils/group.js +14 -11
  238. package/lib/utils/groupDates.js +38 -46
  239. package/lib/utils/groupRoles.js +23 -32
  240. package/lib/utils/lockDownBrowser.js +12 -15
  241. package/lib/utils/logger.js +23 -28
  242. package/lib/utils/lti.js +4 -7
  243. package/lib/utils/model.js +28 -43
  244. package/lib/utils/number.js +9 -13
  245. package/lib/utils/promise.js +23 -26
  246. package/lib/utils/quill.js +55 -60
  247. package/lib/utils/route.js +52 -60
  248. package/lib/utils/search.js +72 -87
  249. package/lib/utils/shard.js +33 -42
  250. package/lib/utils/sort.js +47 -50
  251. package/lib/utils/string.js +10 -12
  252. package/lib/utils/table.js +29 -33
  253. package/lib/utils/timezone.js +7 -12
  254. package/lib/utils/url.js +130 -144
  255. package/lib/utils/user.js +54 -64
  256. package/lib/utils/userAgent.js +7 -14
  257. package/lib/utils/userRole.js +36 -39
  258. package/package.json +17 -3
@@ -1,31 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupModelContextDependencyVerifyComponent = setupModelContextDependencyVerifyComponent;
4
- exports.default = modelContextDependencyVerifyComponent;
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = require("react");
7
- const react_router_dom_1 = require("react-router-dom");
8
- function setupModelContextDependencyVerifyComponent(WrappedComponent, modelName, dependentModelName) {
9
- return class ModelContextVerifyComponent extends react_1.Component {
10
- render() {
11
- const { match: { params }, model } = this.props;
12
- const routeParams = params;
13
- const modelId = routeParams[`${modelName}Id`] ? parseInt(routeParams[`${modelName}Id`], 10) : undefined;
14
- const dependentModelId = routeParams[`${dependentModelName}Id`]
15
- ? parseInt(routeParams[`${dependentModelName}Id`], 10)
16
- : undefined;
17
- if (!!modelId &&
18
- !!dependentModelId &&
19
- model.id === modelId &&
20
- model[`${dependentModelName}Id`] === dependentModelId) {
21
- return (0, jsx_runtime_1.jsx)(WrappedComponent, Object.assign({}, this.props));
22
- }
23
- return ((0, jsx_runtime_1.jsx)(react_router_dom_1.Redirect, { to: {
24
- pathname: '/error'
25
- } }));
1
+ import { Component } from 'react';
2
+ import { Redirect, withRouter } from 'react-router-dom';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ export function setupModelContextDependencyVerifyComponent(WrappedComponent, modelName, dependentModelName) {
5
+ return class ModelContextVerifyComponent extends Component {
6
+ render() {
7
+ const {
8
+ match: {
9
+ params
10
+ },
11
+ model
12
+ } = this.props;
13
+ const routeParams = params;
14
+ const modelId = routeParams[`${modelName}Id`] ? parseInt(routeParams[`${modelName}Id`], 10) : undefined;
15
+ const dependentModelId = routeParams[`${dependentModelName}Id`] ? parseInt(routeParams[`${dependentModelName}Id`], 10) : undefined;
16
+ if (!!modelId && !!dependentModelId && model.id === modelId && model[`${dependentModelName}Id`] === dependentModelId) {
17
+ return /*#__PURE__*/_jsx(WrappedComponent, {
18
+ ...this.props
19
+ });
20
+ }
21
+ return /*#__PURE__*/_jsx(Redirect, {
22
+ to: {
23
+ pathname: '/error'
26
24
  }
27
- };
25
+ });
26
+ }
27
+ };
28
28
  }
29
+
29
30
  /**
30
31
  * HOC that checks if the depender component is related to the dependee component.
31
32
  *
@@ -33,7 +34,9 @@ function setupModelContextDependencyVerifyComponent(WrappedComponent, modelName,
33
34
  * @param {string} modelName The modelName of the dependent component itself.
34
35
  * @param {string} dependentModelName The modelName that the dependent component depends on.
35
36
  */
36
- function modelContextDependencyVerifyComponent(WrappedComponent, modelName, dependentModelName) {
37
- const component = setupModelContextDependencyVerifyComponent(WrappedComponent, modelName, dependentModelName);
38
- return (0, react_router_dom_1.withRouter)(component);
37
+
38
+ export default function modelContextDependencyVerifyComponent(WrappedComponent, modelName, dependentModelName) {
39
+ const component = setupModelContextDependencyVerifyComponent(WrappedComponent, modelName, dependentModelName);
40
+ return withRouter(component);
39
41
  }
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb21wb25lbnQiLCJSZWRpcmVjdCIsIndpdGhSb3V0ZXIiLCJqc3giLCJfanN4Iiwic2V0dXBNb2RlbENvbnRleHREZXBlbmRlbmN5VmVyaWZ5Q29tcG9uZW50IiwiV3JhcHBlZENvbXBvbmVudCIsIm1vZGVsTmFtZSIsImRlcGVuZGVudE1vZGVsTmFtZSIsIk1vZGVsQ29udGV4dFZlcmlmeUNvbXBvbmVudCIsInJlbmRlciIsIm1hdGNoIiwicGFyYW1zIiwibW9kZWwiLCJwcm9wcyIsInJvdXRlUGFyYW1zIiwibW9kZWxJZCIsInBhcnNlSW50IiwidW5kZWZpbmVkIiwiZGVwZW5kZW50TW9kZWxJZCIsImlkIiwidG8iLCJwYXRobmFtZSIsIm1vZGVsQ29udGV4dERlcGVuZGVuY3lWZXJpZnlDb21wb25lbnQiLCJjb21wb25lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9IT0MvTW9kZWxDb250ZXh0RGVwZW5kZW5jeVZlcmlmeUNvbXBvbmVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50VHlwZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUm91dGVDb21wb25lbnRQcm9wcyB9IGZyb20gJ3JlYWN0LXJvdXRlcidcbmltcG9ydCB7IFJlZGlyZWN0LCB3aXRoUm91dGVyIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxDb250ZXh0RGVwZW5kZW5jeVZlcmlmeUNvbXBvbmVudFByb3BzIHtcblx0bW9kZWw6IE1vZGVsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cE1vZGVsQ29udGV4dERlcGVuZGVuY3lWZXJpZnlDb21wb25lbnQ8XG5cdFRPd25Qcm9wcyBleHRlbmRzIE1vZGVsQ29udGV4dERlcGVuZGVuY3lWZXJpZnlDb21wb25lbnRQcm9wc1xuPihXcmFwcGVkQ29tcG9uZW50OiBDb21wb25lbnRUeXBlPFRPd25Qcm9wcz4sIG1vZGVsTmFtZTogc3RyaW5nLCBkZXBlbmRlbnRNb2RlbE5hbWU6IHN0cmluZykge1xuXHRyZXR1cm4gY2xhc3MgTW9kZWxDb250ZXh0VmVyaWZ5Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50PFRPd25Qcm9wcyAmIFJvdXRlQ29tcG9uZW50UHJvcHM+IHtcblx0XHRyZW5kZXIoKSB7XG5cdFx0XHRjb25zdCB7XG5cdFx0XHRcdG1hdGNoOiB7IHBhcmFtcyB9LFxuXHRcdFx0XHRtb2RlbFxuXHRcdFx0fSA9IHRoaXMucHJvcHNcblx0XHRcdGNvbnN0IHJvdXRlUGFyYW1zOiBEaWN0aW9uYXJ5PHN0cmluZz4gPSBwYXJhbXNcblxuXHRcdFx0Y29uc3QgbW9kZWxJZCA9IHJvdXRlUGFyYW1zW2Ake21vZGVsTmFtZX1JZGBdID8gcGFyc2VJbnQocm91dGVQYXJhbXNbYCR7bW9kZWxOYW1lfUlkYF0sIDEwKSA6IHVuZGVmaW5lZFxuXHRcdFx0Y29uc3QgZGVwZW5kZW50TW9kZWxJZCA9IHJvdXRlUGFyYW1zW2Ake2RlcGVuZGVudE1vZGVsTmFtZX1JZGBdXG5cdFx0XHRcdD8gcGFyc2VJbnQocm91dGVQYXJhbXNbYCR7ZGVwZW5kZW50TW9kZWxOYW1lfUlkYF0sIDEwKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZFxuXHRcdFx0aWYgKFxuXHRcdFx0XHQhIW1vZGVsSWQgJiZcblx0XHRcdFx0ISFkZXBlbmRlbnRNb2RlbElkICYmXG5cdFx0XHRcdG1vZGVsLmlkID09PSBtb2RlbElkICYmXG5cdFx0XHRcdChtb2RlbCBhcyBhbnkpW2Ake2RlcGVuZGVudE1vZGVsTmFtZX1JZGBdID09PSBkZXBlbmRlbnRNb2RlbElkXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIDxXcmFwcGVkQ29tcG9uZW50IHsuLi50aGlzLnByb3BzfSAvPlxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PFJlZGlyZWN0XG5cdFx0XHRcdFx0dG89e3tcblx0XHRcdFx0XHRcdHBhdGhuYW1lOiAnL2Vycm9yJ1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpXG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogSE9DIHRoYXQgY2hlY2tzIGlmIHRoZSBkZXBlbmRlciBjb21wb25lbnQgaXMgcmVsYXRlZCB0byB0aGUgZGVwZW5kZWUgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSB7Kn0gV3JhcHBlZENvbXBvbmVudCBUaGUgY29tcG9uZW50IHRvIHdyYXAuXG4gKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxOYW1lIFRoZSBtb2RlbE5hbWUgb2YgdGhlIGRlcGVuZGVudCBjb21wb25lbnQgaXRzZWxmLlxuICogQHBhcmFtIHtzdHJpbmd9IGRlcGVuZGVudE1vZGVsTmFtZSBUaGUgbW9kZWxOYW1lIHRoYXQgdGhlIGRlcGVuZGVudCBjb21wb25lbnQgZGVwZW5kcyBvbi5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2RlbENvbnRleHREZXBlbmRlbmN5VmVyaWZ5Q29tcG9uZW50PFxuXHRUT3duUHJvcHMgZXh0ZW5kcyBNb2RlbENvbnRleHREZXBlbmRlbmN5VmVyaWZ5Q29tcG9uZW50UHJvcHNcbj4oV3JhcHBlZENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUT3duUHJvcHM+LCBtb2RlbE5hbWU6IHN0cmluZywgZGVwZW5kZW50TW9kZWxOYW1lOiBzdHJpbmcpIHtcblx0Y29uc3QgY29tcG9uZW50ID0gc2V0dXBNb2RlbENvbnRleHREZXBlbmRlbmN5VmVyaWZ5Q29tcG9uZW50KFdyYXBwZWRDb21wb25lbnQsIG1vZGVsTmFtZSwgZGVwZW5kZW50TW9kZWxOYW1lKVxuXHRyZXR1cm4gd2l0aFJvdXRlcihjb21wb25lbnQpXG59XG4iXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLFNBQVMsUUFBdUIsT0FBTztBQUVoRCxTQUFTQyxRQUFRLEVBQUVDLFVBQVUsUUFBUSxrQkFBa0I7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFPdkQsT0FBTyxTQUFTQywwQ0FBMENBLENBRXhEQyxnQkFBMEMsRUFBRUMsU0FBaUIsRUFBRUMsa0JBQTBCLEVBQUU7RUFDNUYsT0FBTyxNQUFNQywyQkFBMkIsU0FBU1QsU0FBUyxDQUFrQztJQUMzRlUsTUFBTUEsQ0FBQSxFQUFHO01BQ1IsTUFBTTtRQUNMQyxLQUFLLEVBQUU7VUFBRUM7UUFBTyxDQUFDO1FBQ2pCQztNQUNELENBQUMsR0FBRyxJQUFJLENBQUNDLEtBQUs7TUFDZCxNQUFNQyxXQUErQixHQUFHSCxNQUFNO01BRTlDLE1BQU1JLE9BQU8sR0FBR0QsV0FBVyxDQUFDLEdBQUdSLFNBQVMsSUFBSSxDQUFDLEdBQUdVLFFBQVEsQ0FBQ0YsV0FBVyxDQUFDLEdBQUdSLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUdXLFNBQVM7TUFDdkcsTUFBTUMsZ0JBQWdCLEdBQUdKLFdBQVcsQ0FBQyxHQUFHUCxrQkFBa0IsSUFBSSxDQUFDLEdBQzVEUyxRQUFRLENBQUNGLFdBQVcsQ0FBQyxHQUFHUCxrQkFBa0IsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQ3BEVSxTQUFTO01BQ1osSUFDQyxDQUFDLENBQUNGLE9BQU8sSUFDVCxDQUFDLENBQUNHLGdCQUFnQixJQUNsQk4sS0FBSyxDQUFDTyxFQUFFLEtBQUtKLE9BQU8sSUFDbkJILEtBQUssQ0FBUyxHQUFHTCxrQkFBa0IsSUFBSSxDQUFDLEtBQUtXLGdCQUFnQixFQUM3RDtRQUNELG9CQUFPZixJQUFBLENBQUNFLGdCQUFnQjtVQUFBLEdBQUssSUFBSSxDQUFDUTtRQUFLLENBQUcsQ0FBQztNQUM1QztNQUNBLG9CQUNDVixJQUFBLENBQUNILFFBQVE7UUFDUm9CLEVBQUUsRUFBRTtVQUNIQyxRQUFRLEVBQUU7UUFDWDtNQUFFLENBQ0YsQ0FBQztJQUVKO0VBQ0QsQ0FBQztBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsU0FBU0MscUNBQXFDQSxDQUUzRGpCLGdCQUEwQyxFQUFFQyxTQUFpQixFQUFFQyxrQkFBMEIsRUFBRTtFQUM1RixNQUFNZ0IsU0FBUyxHQUFHbkIsMENBQTBDLENBQUNDLGdCQUFnQixFQUFFQyxTQUFTLEVBQUVDLGtCQUFrQixDQUFDO0VBQzdHLE9BQU9OLFVBQVUsQ0FBQ3NCLFNBQVMsQ0FBQztBQUM3QiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = modelErrorRedirectComponent;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const react_router_dom_1 = require("react-router-dom");
7
- const modelStatus_1 = require("../../constants/modelStatus");
8
- const types_1 = require("../../types");
1
+ import { Component } from 'react';
2
+ import { Redirect } from 'react-router-dom';
3
+ import { MODEL_STATUS } from '../../constants/modelStatus';
4
+ import { HTTP_STATUS_CODE } from '../../types';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
9
6
  /**
10
7
  * This component exists as a child to CollectionItemComponent to
11
8
  * redirect the user to a 404/500 page if errors occur while fetching data.
@@ -18,35 +15,36 @@ const types_1 = require("../../types");
18
15
  * @param WrappedComponent Wrapped component that depends on the model. (Usually AsyncComponent)
19
16
  * @returns A wrapped component or redirects
20
17
  */
21
- function modelErrorRedirectComponent(WrappedComponent) {
22
- return class ModelErrorRedirectComponent extends react_1.Component {
23
- render() {
24
- const { model, modelStatus, previousModelStatus } = this.props;
25
- const notFoundRoute = previousModelStatus === modelStatus_1.MODEL_STATUS.UNINITIALIZED &&
26
- modelStatus === modelStatus_1.MODEL_STATUS.ERROR &&
27
- model._metadata &&
28
- model._metadata.hasError &&
29
- model._metadata.lastFetchErrorData &&
30
- model._metadata.lastFetchErrorData.status === types_1.HTTP_STATUS_CODE.NOT_FOUND;
31
- const errorRoute = previousModelStatus === modelStatus_1.MODEL_STATUS.UNINITIALIZED &&
32
- modelStatus === modelStatus_1.MODEL_STATUS.ERROR &&
33
- model._metadata &&
34
- model._metadata.hasError &&
35
- model._metadata.lastFetchErrorData &&
36
- model._metadata.lastFetchErrorData.status === types_1.HTTP_STATUS_CODE.INTERNAL_SERVER_ERROR;
37
- if (notFoundRoute) {
38
- const pathname = window.location.pathname;
39
- return ((0, jsx_runtime_1.jsx)(react_router_dom_1.Redirect, { to: {
40
- pathname: '/not-found',
41
- search: `?pathname=${pathname}`
42
- } }));
43
- }
44
- if (errorRoute) {
45
- return ((0, jsx_runtime_1.jsx)(react_router_dom_1.Redirect, { to: {
46
- pathname: '/error'
47
- } }));
48
- }
49
- return (0, jsx_runtime_1.jsx)(WrappedComponent, Object.assign({}, this.props));
50
- }
51
- };
18
+ export default function modelErrorRedirectComponent(WrappedComponent) {
19
+ return class ModelErrorRedirectComponent extends Component {
20
+ render() {
21
+ const {
22
+ model,
23
+ modelStatus,
24
+ previousModelStatus
25
+ } = this.props;
26
+ const notFoundRoute = previousModelStatus === MODEL_STATUS.UNINITIALIZED && modelStatus === MODEL_STATUS.ERROR && model._metadata && model._metadata.hasError && model._metadata.lastFetchErrorData && model._metadata.lastFetchErrorData.status === HTTP_STATUS_CODE.NOT_FOUND;
27
+ const errorRoute = previousModelStatus === MODEL_STATUS.UNINITIALIZED && modelStatus === MODEL_STATUS.ERROR && model._metadata && model._metadata.hasError && model._metadata.lastFetchErrorData && model._metadata.lastFetchErrorData.status === HTTP_STATUS_CODE.INTERNAL_SERVER_ERROR;
28
+ if (notFoundRoute) {
29
+ const pathname = window.location.pathname;
30
+ return /*#__PURE__*/_jsx(Redirect, {
31
+ to: {
32
+ pathname: '/not-found',
33
+ search: `?pathname=${pathname}`
34
+ }
35
+ });
36
+ }
37
+ if (errorRoute) {
38
+ return /*#__PURE__*/_jsx(Redirect, {
39
+ to: {
40
+ pathname: '/error'
41
+ }
42
+ });
43
+ }
44
+ return /*#__PURE__*/_jsx(WrappedComponent, {
45
+ ...this.props
46
+ });
47
+ }
48
+ };
52
49
  }
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb21wb25lbnQiLCJSZWRpcmVjdCIsIk1PREVMX1NUQVRVUyIsIkhUVFBfU1RBVFVTX0NPREUiLCJqc3giLCJfanN4IiwibW9kZWxFcnJvclJlZGlyZWN0Q29tcG9uZW50IiwiV3JhcHBlZENvbXBvbmVudCIsIk1vZGVsRXJyb3JSZWRpcmVjdENvbXBvbmVudCIsInJlbmRlciIsIm1vZGVsIiwibW9kZWxTdGF0dXMiLCJwcmV2aW91c01vZGVsU3RhdHVzIiwicHJvcHMiLCJub3RGb3VuZFJvdXRlIiwiVU5JTklUSUFMSVpFRCIsIkVSUk9SIiwiX21ldGFkYXRhIiwiaGFzRXJyb3IiLCJsYXN0RmV0Y2hFcnJvckRhdGEiLCJzdGF0dXMiLCJOT1RfRk9VTkQiLCJlcnJvclJvdXRlIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwicGF0aG5hbWUiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInRvIiwic2VhcmNoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvSE9DL01vZGVsRXJyb3JSZWRpcmVjdENvbXBvbmVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRUeXBlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBSZWRpcmVjdCB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nXG5pbXBvcnQgeyBNT0RFTF9TVEFUVVMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbW9kZWxTdGF0dXMnXG5pbXBvcnQgeyBIVFRQX1NUQVRVU19DT0RFLCBNb2RlbCB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgQ29sbGVjdGlvbkNvbXBvbmVudFdyYXBwZWRQcm9wcyB9IGZyb20gJy4vQ29sbGVjdGlvbkNvbXBvbmVudCdcbmltcG9ydCB7IENvbGxlY3Rpb25JdGVtQ29tcG9uZW50V3JhcHBlZFByb3BzIH0gZnJvbSAnLi9Db2xsZWN0aW9uSXRlbUNvbXBvbmVudCdcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBleGlzdHMgYXMgYSBjaGlsZCB0byBDb2xsZWN0aW9uSXRlbUNvbXBvbmVudCB0b1xuICogcmVkaXJlY3QgdGhlIHVzZXIgdG8gYSA0MDQvNTAwIHBhZ2UgaWYgZXJyb3JzIG9jY3VyIHdoaWxlIGZldGNoaW5nIGRhdGEuXG4gKlxuICogTmVzdGVkIENvbGxlY3Rpb25JdGVtQ29tcG9uZW50IGluc3RhbmNlcyBzaG91bGQgbm90XG4gKiB1c2UgdGhpcyAtIHRoZXnigJlsbCB3YW50IHRvIGhhbmRsZSBlcnJvcnMgYWNjb3JkaW5nIHRvIHRoZSBuZWVkIGZvclxuICogYWxlcnRpbmcgdGhlIHVzZXIgaW4gdGhlIHBhcmVudC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0gV3JhcHBlZENvbXBvbmVudCBXcmFwcGVkIGNvbXBvbmVudCB0aGF0IGRlcGVuZHMgb24gdGhlIG1vZGVsLiAoVXN1YWxseSBBc3luY0NvbXBvbmVudClcbiAqIEByZXR1cm5zIEEgd3JhcHBlZCBjb21wb25lbnQgb3IgcmVkaXJlY3RzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1vZGVsRXJyb3JSZWRpcmVjdENvbXBvbmVudDxcblx0VE93blByb3BzIGV4dGVuZHMgQ29sbGVjdGlvbkl0ZW1Db21wb25lbnRXcmFwcGVkUHJvcHM8TW9kZWw+IHwgQ29sbGVjdGlvbkNvbXBvbmVudFdyYXBwZWRQcm9wczxNb2RlbD5cbj4oV3JhcHBlZENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUT3duUHJvcHM+KSB7XG5cdHJldHVybiBjbGFzcyBNb2RlbEVycm9yUmVkaXJlY3RDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQ8VE93blByb3BzPiB7XG5cdFx0cmVuZGVyKCkge1xuXHRcdFx0Y29uc3QgeyBtb2RlbCwgbW9kZWxTdGF0dXMsIHByZXZpb3VzTW9kZWxTdGF0dXMgfSA9IHRoaXMucHJvcHNcblxuXHRcdFx0Y29uc3Qgbm90Rm91bmRSb3V0ZSA9XG5cdFx0XHRcdHByZXZpb3VzTW9kZWxTdGF0dXMgPT09IE1PREVMX1NUQVRVUy5VTklOSVRJQUxJWkVEICYmXG5cdFx0XHRcdG1vZGVsU3RhdHVzID09PSBNT0RFTF9TVEFUVVMuRVJST1IgJiZcblx0XHRcdFx0bW9kZWwuX21ldGFkYXRhICYmXG5cdFx0XHRcdG1vZGVsLl9tZXRhZGF0YS5oYXNFcnJvciAmJlxuXHRcdFx0XHRtb2RlbC5fbWV0YWRhdGEubGFzdEZldGNoRXJyb3JEYXRhICYmXG5cdFx0XHRcdG1vZGVsLl9tZXRhZGF0YS5sYXN0RmV0Y2hFcnJvckRhdGEuc3RhdHVzID09PSBIVFRQX1NUQVRVU19DT0RFLk5PVF9GT1VORFxuXG5cdFx0XHRjb25zdCBlcnJvclJvdXRlID1cblx0XHRcdFx0cHJldmlvdXNNb2RlbFN0YXR1cyA9PT0gTU9ERUxfU1RBVFVTLlVOSU5JVElBTElaRUQgJiZcblx0XHRcdFx0bW9kZWxTdGF0dXMgPT09IE1PREVMX1NUQVRVUy5FUlJPUiAmJlxuXHRcdFx0XHRtb2RlbC5fbWV0YWRhdGEgJiZcblx0XHRcdFx0bW9kZWwuX21ldGFkYXRhLmhhc0Vycm9yICYmXG5cdFx0XHRcdG1vZGVsLl9tZXRhZGF0YS5sYXN0RmV0Y2hFcnJvckRhdGEgJiZcblx0XHRcdFx0bW9kZWwuX21ldGFkYXRhLmxhc3RGZXRjaEVycm9yRGF0YS5zdGF0dXMgPT09IEhUVFBfU1RBVFVTX0NPREUuSU5URVJOQUxfU0VSVkVSX0VSUk9SXG5cblx0XHRcdGlmIChub3RGb3VuZFJvdXRlKSB7XG5cdFx0XHRcdGNvbnN0IHBhdGhuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lXG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0PFJlZGlyZWN0XG5cdFx0XHRcdFx0XHR0bz17e1xuXHRcdFx0XHRcdFx0XHRwYXRobmFtZTogJy9ub3QtZm91bmQnLFxuXHRcdFx0XHRcdFx0XHRzZWFyY2g6IGA/cGF0aG5hbWU9JHtwYXRobmFtZX1gXG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdClcblx0XHRcdH1cblx0XHRcdGlmIChlcnJvclJvdXRlKSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0PFJlZGlyZWN0XG5cdFx0XHRcdFx0XHR0bz17e1xuXHRcdFx0XHRcdFx0XHRwYXRobmFtZTogJy9lcnJvcidcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0KVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIDxXcmFwcGVkQ29tcG9uZW50IHsuLi50aGlzLnByb3BzfSAvPlxuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFTLFFBQXVCLE9BQU87QUFDaEQsU0FBU0MsUUFBUSxRQUFRLGtCQUFrQjtBQUMzQyxTQUFTQyxZQUFZLFFBQVEsNkJBQTZCO0FBQzFELFNBQVNDLGdCQUFnQixRQUFlLGFBQWE7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFJckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTQywyQkFBMkJBLENBRWpEQyxnQkFBMEMsRUFBRTtFQUM3QyxPQUFPLE1BQU1DLDJCQUEyQixTQUFTUixTQUFTLENBQVk7SUFDckVTLE1BQU1BLENBQUEsRUFBRztNQUNSLE1BQU07UUFBRUMsS0FBSztRQUFFQyxXQUFXO1FBQUVDO01BQW9CLENBQUMsR0FBRyxJQUFJLENBQUNDLEtBQUs7TUFFOUQsTUFBTUMsYUFBYSxHQUNsQkYsbUJBQW1CLEtBQUtWLFlBQVksQ0FBQ2EsYUFBYSxJQUNsREosV0FBVyxLQUFLVCxZQUFZLENBQUNjLEtBQUssSUFDbENOLEtBQUssQ0FBQ08sU0FBUyxJQUNmUCxLQUFLLENBQUNPLFNBQVMsQ0FBQ0MsUUFBUSxJQUN4QlIsS0FBSyxDQUFDTyxTQUFTLENBQUNFLGtCQUFrQixJQUNsQ1QsS0FBSyxDQUFDTyxTQUFTLENBQUNFLGtCQUFrQixDQUFDQyxNQUFNLEtBQUtqQixnQkFBZ0IsQ0FBQ2tCLFNBQVM7TUFFekUsTUFBTUMsVUFBVSxHQUNmVixtQkFBbUIsS0FBS1YsWUFBWSxDQUFDYSxhQUFhLElBQ2xESixXQUFXLEtBQUtULFlBQVksQ0FBQ2MsS0FBSyxJQUNsQ04sS0FBSyxDQUFDTyxTQUFTLElBQ2ZQLEtBQUssQ0FBQ08sU0FBUyxDQUFDQyxRQUFRLElBQ3hCUixLQUFLLENBQUNPLFNBQVMsQ0FBQ0Usa0JBQWtCLElBQ2xDVCxLQUFLLENBQUNPLFNBQVMsQ0FBQ0Usa0JBQWtCLENBQUNDLE1BQU0sS0FBS2pCLGdCQUFnQixDQUFDb0IscUJBQXFCO01BRXJGLElBQUlULGFBQWEsRUFBRTtRQUNsQixNQUFNVSxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRixRQUFRO1FBQ3pDLG9CQUNDbkIsSUFBQSxDQUFDSixRQUFRO1VBQ1IwQixFQUFFLEVBQUU7WUFDSEgsUUFBUSxFQUFFLFlBQVk7WUFDdEJJLE1BQU0sRUFBRSxhQUFhSixRQUFRO1VBQzlCO1FBQUUsQ0FDRixDQUFDO01BRUo7TUFDQSxJQUFJRixVQUFVLEVBQUU7UUFDZixvQkFDQ2pCLElBQUEsQ0FBQ0osUUFBUTtVQUNSMEIsRUFBRSxFQUFFO1lBQ0hILFFBQVEsRUFBRTtVQUNYO1FBQUUsQ0FDRixDQUFDO01BRUo7TUFDQSxvQkFBT25CLElBQUEsQ0FBQ0UsZ0JBQWdCO1FBQUEsR0FBSyxJQUFJLENBQUNNO01BQUssQ0FBRyxDQUFDO0lBQzVDO0VBQ0QsQ0FBQztBQUNGIiwiaWdub3JlTGlzdCI6W119