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,49 +1,50 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = authReducer;
4
- const AuthAction_1 = require("../actions/AuthAction");
1
+ import { AUTH_ACTION_TYPE, AUTH_TOKEN_ACTION_TYPE, AUTH_TOKEN_SUCCESS_ACTION_TYPE } from '../actions/AuthAction';
5
2
  const initialState = {
6
- isInitialized: false,
7
- isAuthenticating: false,
8
- isAuthenticated: false,
9
- didFail: false
3
+ isInitialized: false,
4
+ isAuthenticating: false,
5
+ isAuthenticated: false,
6
+ didFail: false
10
7
  };
8
+
11
9
  /**
12
10
  * Reducer for updating `auth` in redux.
13
11
  */
14
- function authReducer(state = initialState, action) {
15
- switch (action.type) {
16
- case AuthAction_1.AUTH_TOKEN_ACTION_TYPE.AUTH_INITIALIZED:
17
- return Object.assign({}, state, {
18
- isInitialized: true,
19
- isAuthenticated: !!action.oauthToken
20
- });
21
- case AuthAction_1.AUTH_TOKEN_SUCCESS_ACTION_TYPE.GET_TOKEN_SUCCEEDED:
22
- case AuthAction_1.AUTH_TOKEN_SUCCESS_ACTION_TYPE.TOKEN_REFRESH_SUCCEEDED:
23
- return Object.assign({}, state, {
24
- isAuthenticating: false,
25
- isAuthenticated: true,
26
- didFail: false
27
- });
28
- case AuthAction_1.AUTH_ACTION_TYPE.LOGIN_REQUESTED:
29
- return Object.assign({}, state, {
30
- isAuthenticating: true,
31
- isAuthenticated: false,
32
- didFail: false
33
- });
34
- case AuthAction_1.AUTH_ACTION_TYPE.LOG_OUT_REQUESTED:
35
- return Object.assign({}, state, {
36
- isAuthenticating: false,
37
- isAuthenticated: false,
38
- didFail: false
39
- });
40
- case AuthAction_1.AUTH_ACTION_TYPE.LOGIN_FAILED:
41
- return Object.assign({}, state, {
42
- isAuthenticating: false,
43
- isAuthenticated: false,
44
- didFail: true
45
- });
46
- default:
47
- return state;
48
- }
12
+ export default function authReducer() {
13
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
14
+ let action = arguments.length > 1 ? arguments[1] : undefined;
15
+ switch (action.type) {
16
+ case AUTH_TOKEN_ACTION_TYPE.AUTH_INITIALIZED:
17
+ return Object.assign({}, state, {
18
+ isInitialized: true,
19
+ isAuthenticated: !!action.oauthToken
20
+ });
21
+ case AUTH_TOKEN_SUCCESS_ACTION_TYPE.GET_TOKEN_SUCCEEDED:
22
+ case AUTH_TOKEN_SUCCESS_ACTION_TYPE.TOKEN_REFRESH_SUCCEEDED:
23
+ return Object.assign({}, state, {
24
+ isAuthenticating: false,
25
+ isAuthenticated: true,
26
+ didFail: false
27
+ });
28
+ case AUTH_ACTION_TYPE.LOGIN_REQUESTED:
29
+ return Object.assign({}, state, {
30
+ isAuthenticating: true,
31
+ isAuthenticated: false,
32
+ didFail: false
33
+ });
34
+ case AUTH_ACTION_TYPE.LOG_OUT_REQUESTED:
35
+ return Object.assign({}, state, {
36
+ isAuthenticating: false,
37
+ isAuthenticated: false,
38
+ didFail: false
39
+ });
40
+ case AUTH_ACTION_TYPE.LOGIN_FAILED:
41
+ return Object.assign({}, state, {
42
+ isAuthenticating: false,
43
+ isAuthenticated: false,
44
+ didFail: true
45
+ });
46
+ default:
47
+ return state;
48
+ }
49
49
  }
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBVVRIX0FDVElPTl9UWVBFIiwiQVVUSF9UT0tFTl9BQ1RJT05fVFlQRSIsIkFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRSIsImluaXRpYWxTdGF0ZSIsImlzSW5pdGlhbGl6ZWQiLCJpc0F1dGhlbnRpY2F0aW5nIiwiaXNBdXRoZW50aWNhdGVkIiwiZGlkRmFpbCIsImF1dGhSZWR1Y2VyIiwic3RhdGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJ0eXBlIiwiQVVUSF9JTklUSUFMSVpFRCIsIk9iamVjdCIsImFzc2lnbiIsIm9hdXRoVG9rZW4iLCJHRVRfVE9LRU5fU1VDQ0VFREVEIiwiVE9LRU5fUkVGUkVTSF9TVUNDRUVERUQiLCJMT0dJTl9SRVFVRVNURUQiLCJMT0dfT1VUX1JFUVVFU1RFRCIsIkxPR0lOX0ZBSUxFRCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWR1eC9yZWR1Y2Vycy9hdXRoUmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoU3RhdGUgfSBmcm9tICcuLi8uLi90eXBlcy9hdXRoL0F1dGhTdGF0ZSdcbmltcG9ydCB7XG5cdEFVVEhfQUNUSU9OX1RZUEUsXG5cdEFVVEhfVE9LRU5fQUNUSU9OX1RZUEUsXG5cdEFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRSxcblx0QXV0aEFjdGlvbixcblx0QXV0aFRva2VuQWN0aW9uLFxuXHRBdXRoVG9rZW5TdWNjZXNzQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMvQXV0aEFjdGlvbidcblxuY29uc3QgaW5pdGlhbFN0YXRlOiBBdXRoU3RhdGUgPSB7XG5cdGlzSW5pdGlhbGl6ZWQ6IGZhbHNlLFxuXHRpc0F1dGhlbnRpY2F0aW5nOiBmYWxzZSxcblx0aXNBdXRoZW50aWNhdGVkOiBmYWxzZSxcblx0ZGlkRmFpbDogZmFsc2Vcbn1cblxuLyoqXG4gKiBSZWR1Y2VyIGZvciB1cGRhdGluZyBgYXV0aGAgaW4gcmVkdXguXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGF1dGhSZWR1Y2VyKFxuXHRzdGF0ZTogQXV0aFN0YXRlID0gaW5pdGlhbFN0YXRlLFxuXHRhY3Rpb246IEF1dGhBY3Rpb24gfCBBdXRoVG9rZW5BY3Rpb24gfCBBdXRoVG9rZW5TdWNjZXNzQWN0aW9uXG4pIHtcblx0c3dpdGNoIChhY3Rpb24udHlwZSkge1xuXHRcdGNhc2UgQVVUSF9UT0tFTl9BQ1RJT05fVFlQRS5BVVRIX0lOSVRJQUxJWkVEOlxuXHRcdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7XG5cdFx0XHRcdGlzSW5pdGlhbGl6ZWQ6IHRydWUsXG5cdFx0XHRcdGlzQXV0aGVudGljYXRlZDogISFhY3Rpb24ub2F1dGhUb2tlblxuXHRcdFx0fSlcblxuXHRcdGNhc2UgQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLkdFVF9UT0tFTl9TVUNDRUVERUQ6XG5cdFx0Y2FzZSBBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUuVE9LRU5fUkVGUkVTSF9TVUNDRUVERUQ6XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcblx0XHRcdFx0aXNBdXRoZW50aWNhdGluZzogZmFsc2UsXG5cdFx0XHRcdGlzQXV0aGVudGljYXRlZDogdHJ1ZSxcblx0XHRcdFx0ZGlkRmFpbDogZmFsc2Vcblx0XHRcdH0pXG5cblx0XHRjYXNlIEFVVEhfQUNUSU9OX1RZUEUuTE9HSU5fUkVRVUVTVEVEOlxuXHRcdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7XG5cdFx0XHRcdGlzQXV0aGVudGljYXRpbmc6IHRydWUsXG5cdFx0XHRcdGlzQXV0aGVudGljYXRlZDogZmFsc2UsXG5cdFx0XHRcdGRpZEZhaWw6IGZhbHNlXG5cdFx0XHR9KVxuXG5cdFx0Y2FzZSBBVVRIX0FDVElPTl9UWVBFLkxPR19PVVRfUkVRVUVTVEVEOlxuXHRcdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7XG5cdFx0XHRcdGlzQXV0aGVudGljYXRpbmc6IGZhbHNlLFxuXHRcdFx0XHRpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxuXHRcdFx0XHRkaWRGYWlsOiBmYWxzZVxuXHRcdFx0fSlcblxuXHRcdGNhc2UgQVVUSF9BQ1RJT05fVFlQRS5MT0dJTl9GQUlMRUQ6XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcblx0XHRcdFx0aXNBdXRoZW50aWNhdGluZzogZmFsc2UsXG5cdFx0XHRcdGlzQXV0aGVudGljYXRlZDogZmFsc2UsXG5cdFx0XHRcdGRpZEZhaWw6IHRydWVcblx0XHRcdH0pXG5cblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIHN0YXRlXG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FDQ0EsZ0JBQWdCLEVBQ2hCQyxzQkFBc0IsRUFDdEJDLDhCQUE4QixRQUl4Qix1QkFBdUI7QUFFOUIsTUFBTUMsWUFBdUIsR0FBRztFQUMvQkMsYUFBYSxFQUFFLEtBQUs7RUFDcEJDLGdCQUFnQixFQUFFLEtBQUs7RUFDdkJDLGVBQWUsRUFBRSxLQUFLO0VBQ3RCQyxPQUFPLEVBQUU7QUFDVixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBU0MsV0FBV0EsQ0FBQSxFQUdqQztFQUFBLElBRkRDLEtBQWdCLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHUCxZQUFZO0VBQUEsSUFDL0JVLE1BQTZELEdBQUFILFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUFFLFNBQUE7RUFFN0QsUUFBUUMsTUFBTSxDQUFDQyxJQUFJO0lBQ2xCLEtBQUtiLHNCQUFzQixDQUFDYyxnQkFBZ0I7TUFDM0MsT0FBT0MsTUFBTSxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUVSLEtBQUssRUFBRTtRQUMvQkwsYUFBYSxFQUFFLElBQUk7UUFDbkJFLGVBQWUsRUFBRSxDQUFDLENBQUNPLE1BQU0sQ0FBQ0s7TUFDM0IsQ0FBQyxDQUFDO0lBRUgsS0FBS2hCLDhCQUE4QixDQUFDaUIsbUJBQW1CO0lBQ3ZELEtBQUtqQiw4QkFBOEIsQ0FBQ2tCLHVCQUF1QjtNQUMxRCxPQUFPSixNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRVIsS0FBSyxFQUFFO1FBQy9CSixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCQyxlQUFlLEVBQUUsSUFBSTtRQUNyQkMsT0FBTyxFQUFFO01BQ1YsQ0FBQyxDQUFDO0lBRUgsS0FBS1AsZ0JBQWdCLENBQUNxQixlQUFlO01BQ3BDLE9BQU9MLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFUixLQUFLLEVBQUU7UUFDL0JKLGdCQUFnQixFQUFFLElBQUk7UUFDdEJDLGVBQWUsRUFBRSxLQUFLO1FBQ3RCQyxPQUFPLEVBQUU7TUFDVixDQUFDLENBQUM7SUFFSCxLQUFLUCxnQkFBZ0IsQ0FBQ3NCLGlCQUFpQjtNQUN0QyxPQUFPTixNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRVIsS0FBSyxFQUFFO1FBQy9CSixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCQyxlQUFlLEVBQUUsS0FBSztRQUN0QkMsT0FBTyxFQUFFO01BQ1YsQ0FBQyxDQUFDO0lBRUgsS0FBS1AsZ0JBQWdCLENBQUN1QixZQUFZO01BQ2pDLE9BQU9QLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFUixLQUFLLEVBQUU7UUFDL0JKLGdCQUFnQixFQUFFLEtBQUs7UUFDdkJDLGVBQWUsRUFBRSxLQUFLO1FBQ3RCQyxPQUFPLEVBQUU7TUFDVixDQUFDLENBQUM7SUFFSDtNQUNDLE9BQU9FLEtBQUs7RUFDZDtBQUNEIiwiaWdub3JlTGlzdCI6W119
@@ -1,14 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.searchReducer = exports.notificationsReducer = exports.modalsReducer = exports.modelsReducer = exports.authReducer = void 0;
4
- const tslib_1 = require("tslib");
5
- const authReducer_1 = tslib_1.__importDefault(require("./authReducer"));
6
- exports.authReducer = authReducer_1.default;
7
- const modalsReducer_1 = tslib_1.__importDefault(require("./modalsReducer"));
8
- exports.modalsReducer = modalsReducer_1.default;
9
- const modelsReducer_1 = tslib_1.__importDefault(require("./modelsReducer"));
10
- exports.modelsReducer = modelsReducer_1.default;
11
- const notificationsReducer_1 = tslib_1.__importDefault(require("./notificationsReducer"));
12
- exports.notificationsReducer = notificationsReducer_1.default;
13
- const searchReducer_1 = tslib_1.__importDefault(require("./searchReducer"));
14
- exports.searchReducer = searchReducer_1.default;
1
+ import authReducer from './authReducer';
2
+ import modalsReducer from './modalsReducer';
3
+ import modelsReducer from './modelsReducer';
4
+ import notificationsReducer from './notificationsReducer';
5
+ import searchReducer from './searchReducer';
6
+ export { authReducer, modelsReducer, modalsReducer, notificationsReducer, searchReducer };
7
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhdXRoUmVkdWNlciIsIm1vZGFsc1JlZHVjZXIiLCJtb2RlbHNSZWR1Y2VyIiwibm90aWZpY2F0aW9uc1JlZHVjZXIiLCJzZWFyY2hSZWR1Y2VyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3JlZHVjZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhdXRoUmVkdWNlciBmcm9tICcuL2F1dGhSZWR1Y2VyJ1xuaW1wb3J0IG1vZGFsc1JlZHVjZXIgZnJvbSAnLi9tb2RhbHNSZWR1Y2VyJ1xuaW1wb3J0IG1vZGVsc1JlZHVjZXIgZnJvbSAnLi9tb2RlbHNSZWR1Y2VyJ1xuaW1wb3J0IG5vdGlmaWNhdGlvbnNSZWR1Y2VyIGZyb20gJy4vbm90aWZpY2F0aW9uc1JlZHVjZXInXG5pbXBvcnQgc2VhcmNoUmVkdWNlciBmcm9tICcuL3NlYXJjaFJlZHVjZXInXG5cbmV4cG9ydCB7IGF1dGhSZWR1Y2VyLCBtb2RlbHNSZWR1Y2VyLCBtb2RhbHNSZWR1Y2VyLCBub3RpZmljYXRpb25zUmVkdWNlciwgc2VhcmNoUmVkdWNlciB9XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFdBQVcsTUFBTSxlQUFlO0FBQ3ZDLE9BQU9DLGFBQWEsTUFBTSxpQkFBaUI7QUFDM0MsT0FBT0MsYUFBYSxNQUFNLGlCQUFpQjtBQUMzQyxPQUFPQyxvQkFBb0IsTUFBTSx3QkFBd0I7QUFDekQsT0FBT0MsYUFBYSxNQUFNLGlCQUFpQjtBQUUzQyxTQUFTSixXQUFXLEVBQUVFLGFBQWEsRUFBRUQsYUFBYSxFQUFFRSxvQkFBb0IsRUFBRUMsYUFBYSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,37 +1,49 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = modalsReducer;
4
- const tslib_1 = require("tslib");
5
- const ModalAction_1 = require("../actions/ModalAction");
1
+ import { MODAL_ACTION_TYPE } from '../actions/ModalAction';
6
2
  /// state is a dictionary where keys are modal guids, for easy lookup
7
3
  const initialState = {};
8
- function modalsReducer(state = initialState, action) {
9
- let guid;
10
- let index;
11
- let isFullscreen;
12
- switch (action.type) {
13
- case ModalAction_1.MODAL_ACTION_TYPE.MODAL_ENTERING: {
14
- guid = action.guid;
15
- index = action.index;
16
- isFullscreen = action.isFullscreen;
17
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
18
- if (state[guid]) {
19
- return state;
20
- }
21
- const newState = Object.assign(Object.assign({}, state), { [guid]: { index, isFullscreen } });
22
- return newState;
4
+ export default function modalsReducer() {
5
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
6
+ let action = arguments.length > 1 ? arguments[1] : undefined;
7
+ let guid;
8
+ let index;
9
+ let isFullscreen;
10
+ switch (action.type) {
11
+ case MODAL_ACTION_TYPE.MODAL_ENTERING:
12
+ {
13
+ guid = action.guid;
14
+ index = action.index;
15
+ isFullscreen = action.isFullscreen;
16
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
17
+ if (state[guid]) {
18
+ return state;
23
19
  }
24
- case ModalAction_1.MODAL_ACTION_TYPE.MODAL_EXITED: {
25
- guid = action.guid;
26
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
27
- if (!state[guid]) {
28
- return state;
20
+ const newState = {
21
+ ...state,
22
+ ...{
23
+ [guid]: {
24
+ index,
25
+ isFullscreen
29
26
  }
30
- // destructure `state`, separating the value of key `guid` to `removed`, and the rest of the keys to `stateCopy`
31
- const _a = state, _b = guid, removed = _a[_b], stateCopy = tslib_1.__rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
32
- return stateCopy;
27
+ }
28
+ };
29
+ return newState;
30
+ }
31
+ case MODAL_ACTION_TYPE.MODAL_EXITED:
32
+ {
33
+ guid = action.guid;
34
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
35
+ if (!state[guid]) {
36
+ return state;
33
37
  }
34
- default:
35
- return state;
36
- }
38
+ // destructure `state`, separating the value of key `guid` to `removed`, and the rest of the keys to `stateCopy`
39
+ const {
40
+ [guid]: removed,
41
+ ...stateCopy
42
+ } = state;
43
+ return stateCopy;
44
+ }
45
+ default:
46
+ return state;
47
+ }
37
48
  }
49
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNT0RBTF9BQ1RJT05fVFlQRSIsImluaXRpYWxTdGF0ZSIsIm1vZGFsc1JlZHVjZXIiLCJzdGF0ZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImFjdGlvbiIsImd1aWQiLCJpbmRleCIsImlzRnVsbHNjcmVlbiIsInR5cGUiLCJNT0RBTF9FTlRFUklORyIsIm5ld1N0YXRlIiwiTU9EQUxfRVhJVEVEIiwicmVtb3ZlZCIsInN0YXRlQ29weSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWR1eC9yZWR1Y2Vycy9tb2RhbHNSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBNT0RBTF9BQ1RJT05fVFlQRSwgTW9kYWxBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL01vZGFsQWN0aW9uJ1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsQWN0aW9uVmFsdWUge1xuXHRpbmRleDogbnVtYmVyXG5cdGlzRnVsbHNjcmVlbjogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsc1N0YXRlIGV4dGVuZHMgRGljdGlvbmFyeTxNb2RhbEFjdGlvblZhbHVlPiB7fVxuXG4vLy8gc3RhdGUgaXMgYSBkaWN0aW9uYXJ5IHdoZXJlIGtleXMgYXJlIG1vZGFsIGd1aWRzLCBmb3IgZWFzeSBsb29rdXBcbmNvbnN0IGluaXRpYWxTdGF0ZTogTW9kYWxzU3RhdGUgPSB7fVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2RhbHNSZWR1Y2VyKHN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb246IE1vZGFsQWN0aW9uKSB7XG5cdGxldCBndWlkOiBzdHJpbmdcblx0bGV0IGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcblx0bGV0IGlzRnVsbHNjcmVlbjogYm9vbGVhbiB8IHVuZGVmaW5lZFxuXHRzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG5cdFx0Y2FzZSBNT0RBTF9BQ1RJT05fVFlQRS5NT0RBTF9FTlRFUklORzoge1xuXHRcdFx0Z3VpZCA9IGFjdGlvbi5ndWlkXG5cdFx0XHRpbmRleCA9IGFjdGlvbi5pbmRleFxuXHRcdFx0aXNGdWxsc2NyZWVuID0gYWN0aW9uLmlzRnVsbHNjcmVlblxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cblx0XHRcdGlmIChzdGF0ZVtndWlkXSkge1xuXHRcdFx0XHRyZXR1cm4gc3RhdGVcblx0XHRcdH1cblx0XHRcdGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSwgLi4ueyBbZ3VpZF06IHsgaW5kZXgsIGlzRnVsbHNjcmVlbiB9IH0gfVxuXHRcdFx0cmV0dXJuIG5ld1N0YXRlXG5cdFx0fVxuXHRcdGNhc2UgTU9EQUxfQUNUSU9OX1RZUEUuTU9EQUxfRVhJVEVEOiB7XG5cdFx0XHRndWlkID0gYWN0aW9uLmd1aWRcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG5cdFx0XHRpZiAoIXN0YXRlW2d1aWRdKSB7XG5cdFx0XHRcdHJldHVybiBzdGF0ZVxuXHRcdFx0fVxuXHRcdFx0Ly8gZGVzdHJ1Y3R1cmUgYHN0YXRlYCwgc2VwYXJhdGluZyB0aGUgdmFsdWUgb2Yga2V5IGBndWlkYCB0byBgcmVtb3ZlZGAsIGFuZCB0aGUgcmVzdCBvZiB0aGUga2V5cyB0byBgc3RhdGVDb3B5YFxuXHRcdFx0Y29uc3QgeyBbZ3VpZF06IHJlbW92ZWQsIC4uLnN0YXRlQ29weSB9ID0gc3RhdGVcblx0XHRcdHJldHVybiBzdGF0ZUNvcHlcblx0XHR9XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBzdGF0ZVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLGlCQUFpQixRQUFxQix3QkFBd0I7QUFTdkU7QUFDQSxNQUFNQyxZQUF5QixHQUFHLENBQUMsQ0FBQztBQUVwQyxlQUFlLFNBQVNDLGFBQWFBLENBQUEsRUFBNEM7RUFBQSxJQUEzQ0MsS0FBSyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBR0gsWUFBWTtFQUFBLElBQUVNLE1BQW1CLEdBQUFILFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUFFLFNBQUE7RUFDOUUsSUFBSUUsSUFBWTtFQUNoQixJQUFJQyxLQUF5QjtFQUM3QixJQUFJQyxZQUFpQztFQUNyQyxRQUFRSCxNQUFNLENBQUNJLElBQUk7SUFDbEIsS0FBS1gsaUJBQWlCLENBQUNZLGNBQWM7TUFBRTtRQUN0Q0osSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7UUFDbEJDLEtBQUssR0FBR0YsTUFBTSxDQUFDRSxLQUFLO1FBQ3BCQyxZQUFZLEdBQUdILE1BQU0sQ0FBQ0csWUFBWTtRQUNsQztRQUNBLElBQUlQLEtBQUssQ0FBQ0ssSUFBSSxDQUFDLEVBQUU7VUFDaEIsT0FBT0wsS0FBSztRQUNiO1FBQ0EsTUFBTVUsUUFBUSxHQUFHO1VBQUUsR0FBR1YsS0FBSztVQUFFLEdBQUc7WUFBRSxDQUFDSyxJQUFJLEdBQUc7Y0FBRUMsS0FBSztjQUFFQztZQUFhO1VBQUU7UUFBRSxDQUFDO1FBQ3JFLE9BQU9HLFFBQVE7TUFDaEI7SUFDQSxLQUFLYixpQkFBaUIsQ0FBQ2MsWUFBWTtNQUFFO1FBQ3BDTixJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtRQUNsQjtRQUNBLElBQUksQ0FBQ0wsS0FBSyxDQUFDSyxJQUFJLENBQUMsRUFBRTtVQUNqQixPQUFPTCxLQUFLO1FBQ2I7UUFDQTtRQUNBLE1BQU07VUFBRSxDQUFDSyxJQUFJLEdBQUdPLE9BQU87VUFBRSxHQUFHQztRQUFVLENBQUMsR0FBR2IsS0FBSztRQUMvQyxPQUFPYSxTQUFTO01BQ2pCO0lBQ0E7TUFDQyxPQUFPYixLQUFLO0VBQ2Q7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,15 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMetadata = getMetadata;
4
- exports.isCollection = isCollection;
5
- exports.isNullResponse = isNullResponse;
6
- exports.merge = merge;
7
- exports.updateMetadataForChildCollections = updateMetadataForChildCollections;
8
- exports.default = modelsReducer;
9
- const tslib_1 = require("tslib");
10
- const lodash_1 = require("lodash");
11
- const fp_1 = tslib_1.__importDefault(require("lodash/fp"));
12
- const actions_1 = require("../actions");
1
+ import { get, isArray, isNil, isPlainObject, isUndefined, merge as lodashMerge } from 'lodash';
2
+ import _fp from 'lodash/fp';
3
+ import { MODEL_FETCH_ERROR_ACTION_TYPE, MODEL_FETCH_RESULT_ACTION_TYPE, MODEL_FETCH_START_ACTION_TYPE, MODEL_REMOVE_KEY_ACTION_TYPE } from '../actions';
4
+
13
5
  /**
14
6
  * Given the state and a path into that state object, return the prop that
15
7
  * is named "_metadata"
@@ -17,39 +9,34 @@ const actions_1 = require("../actions");
17
9
  * @param state The redux state object
18
10
  * @param path An array of keys that represent the path to the entity in question
19
11
  */
20
- function getMetadata(state, path) {
21
- return (0, lodash_1.merge)({}, (0, lodash_1.get)(state, path.concat('_metadata')));
12
+ export function getMetadata(state, path) {
13
+ return lodashMerge({}, get(state, path.concat('_metadata')));
22
14
  }
15
+
23
16
  /**
24
17
  * Get whether or not an object is a "collection" (id key-value dictionary).
25
18
  * @param obj
26
19
  * @returns A boolean
27
20
  */
28
- function isCollection(obj) {
29
- return (!(0, lodash_1.isArray)(obj) &&
30
- (0, lodash_1.isPlainObject)(obj) &&
31
- Object.keys(obj).length > 0 &&
32
- Object.keys(obj).every(key => {
33
- const child = obj[key];
34
- return ((0, lodash_1.isPlainObject)(child) &&
35
- (key === '_metadata' ||
36
- (Object.prototype.hasOwnProperty.call(child, 'id') &&
37
- (child.id === parseInt(key, 10) || child.id === key))));
38
- }));
21
+ export function isCollection(obj) {
22
+ return !isArray(obj) && isPlainObject(obj) && Object.keys(obj).length > 0 && Object.keys(obj).every(key => {
23
+ const child = obj[key];
24
+ return isPlainObject(child) && (key === '_metadata' || Object.prototype.hasOwnProperty.call(child, 'id') && (child.id === parseInt(key, 10) || child.id === key));
25
+ });
39
26
  }
27
+
40
28
  /**
41
29
  * Get whether or not an object is a "null response".
42
30
  * @param obj
43
31
  * @returns A boolean
44
32
  */
45
- function isNullResponse(obj) {
46
- return ((0, lodash_1.isPlainObject)(obj) &&
47
- Object.keys(obj).length > 0 &&
48
- Object.keys(obj).every(key => {
49
- const child = obj[key];
50
- return key === '_metadata' || (key === 'response' && child === null);
51
- }));
33
+ export function isNullResponse(obj) {
34
+ return isPlainObject(obj) && Object.keys(obj).length > 0 && Object.keys(obj).every(key => {
35
+ const child = obj[key];
36
+ return key === '_metadata' || key === 'response' && child === null;
37
+ });
52
38
  }
39
+
53
40
  /**
54
41
  * Merge the `current` and `incoming` objects recursively, returning a new combined object.
55
42
  *
@@ -64,59 +51,61 @@ function isNullResponse(obj) {
64
51
  * @param current
65
52
  * @param incoming
66
53
  */
67
- function merge(current, incoming) {
68
- // do not merge arrays
69
- if ((0, lodash_1.isArray)(current)) {
70
- return !(0, lodash_1.isUndefined)(incoming) ? incoming : current;
54
+ export function merge(current, incoming) {
55
+ // do not merge arrays
56
+ if (isArray(current)) {
57
+ return !isUndefined(incoming) ? incoming : current;
58
+ }
59
+ // if incoming is `null` or a null response (`{'response': null}`), do not merge, just use incoming
60
+ if (incoming === null || !isUndefined(incoming) && isNullResponse(incoming)) {
61
+ return incoming;
62
+ }
63
+ const result = Object.keys(current).reduce((out, k) => {
64
+ const c = current[k];
65
+ const i = incoming && incoming[k];
66
+ // non-relations
67
+ if (!isArray(c) && !isPlainObject(c)) {
68
+ // copy incoming value, if any, otherwise keep current
69
+ out[k] = !isUndefined(i) ? i : c;
70
+ return out;
71
71
  }
72
- // if incoming is `null` or a null response (`{'response': null}`), do not merge, just use incoming
73
- if (incoming === null || (!(0, lodash_1.isUndefined)(incoming) && isNullResponse(incoming))) {
74
- return incoming;
72
+ // remove "collection" item not included in incoming
73
+ if ((isCollection(current) || isCollection(incoming)) && !isUndefined(incoming) && isUndefined(i)) {
74
+ return out;
75
75
  }
76
- const result = Object.keys(current).reduce((out, k) => {
77
- const c = current[k];
78
- const i = incoming && incoming[k];
79
- // non-relations
80
- if (!(0, lodash_1.isArray)(c) && !(0, lodash_1.isPlainObject)(c)) {
81
- // copy incoming value, if any, otherwise keep current
82
- out[k] = !(0, lodash_1.isUndefined)(i) ? i : c;
83
- return out;
84
- }
85
- // remove "collection" item not included in incoming
86
- if ((isCollection(current) || isCollection(incoming)) && !(0, lodash_1.isUndefined)(incoming) && (0, lodash_1.isUndefined)(i)) {
87
- return out;
88
- }
89
- // merge relations
90
- out[k] = merge(c, i);
91
- return out;
92
- }, {});
93
- if (!(0, lodash_1.isNil)(incoming) && (0, lodash_1.isPlainObject)(incoming)) {
94
- // copy incoming properties that are not on current
95
- Object.keys(incoming).forEach(k => {
96
- const c = current[k];
97
- const i = incoming[k];
98
- if ((0, lodash_1.isUndefined)(c)) {
99
- result[k] = i;
100
- }
101
- });
102
- }
103
- return result;
76
+ // merge relations
77
+ out[k] = merge(c, i);
78
+ return out;
79
+ }, {});
80
+ if (!isNil(incoming) && isPlainObject(incoming)) {
81
+ // copy incoming properties that are not on current
82
+ Object.keys(incoming).forEach(k => {
83
+ const c = current[k];
84
+ const i = incoming[k];
85
+ if (isUndefined(c)) {
86
+ result[k] = i;
87
+ }
88
+ });
89
+ }
90
+ return result;
104
91
  }
92
+
105
93
  /**
106
94
  * Sets `_metadata` on any nested collections and collection items in the data
107
95
  * @param data
108
96
  * @param metadata
109
97
  */
110
- function updateMetadataForChildCollections(data, metadata) {
111
- const isDataCollection = isCollection(data);
112
- Object.keys(data).forEach(key => {
113
- const value = data[key];
114
- if ((isDataCollection && key !== '_metadata' && (0, lodash_1.isPlainObject)(value)) || isCollection(value)) {
115
- value._metadata = metadata;
116
- updateMetadataForChildCollections(value, metadata);
117
- }
118
- });
98
+ export function updateMetadataForChildCollections(data, metadata) {
99
+ const isDataCollection = isCollection(data);
100
+ Object.keys(data).forEach(key => {
101
+ const value = data[key];
102
+ if (isDataCollection && key !== '_metadata' && isPlainObject(value) || isCollection(value)) {
103
+ value._metadata = metadata;
104
+ updateMetadataForChildCollections(value, metadata);
105
+ }
106
+ });
119
107
  }
108
+
120
109
  /**
121
110
  * Reducer for fetching and updating `models` in redux.
122
111
  *
@@ -134,66 +123,71 @@ function updateMetadataForChildCollections(data, metadata) {
134
123
  * @param action The action upon which we dispatch
135
124
  * @returns The updated state
136
125
  */
137
- function modelsReducer(state = {}, action) {
138
- if (!action.modelPath) {
139
- return state;
140
- }
141
- const path = action.modelPath.split('.');
142
- // the object value at the specified path
143
- let valueAtPath = (0, lodash_1.merge)({}, (0, lodash_1.get)(state, path));
144
- const metadata = getMetadata(state, path);
145
- let metadataUpdate;
146
- switch (action.type) {
147
- case actions_1.MODEL_FETCH_START_ACTION_TYPE.FETCH_START:
148
- // Retain the entity data, update the metadata to reflect fetch in request state
149
- metadataUpdate = {
150
- isFetching: true,
151
- hasError: false,
152
- lastFetchErrorData: undefined
153
- };
154
- valueAtPath._metadata = (0, lodash_1.merge)(metadata, metadataUpdate);
155
- if (action.guid) {
156
- valueAtPath.guid = action.guid;
157
- }
158
- return fp_1.default.setWith(Object, path, valueAtPath, state);
159
- case actions_1.MODEL_FETCH_RESULT_ACTION_TYPE.FETCH_RESULT_RECEIVED: {
160
- // Update the metadata to reflect fetch is complete.
161
- metadataUpdate = {
162
- isFetching: false,
163
- hasError: false,
164
- lastFetchErrorData: undefined,
165
- fetchedAt: new Date()
166
- };
167
- const incoming = !(0, lodash_1.isPlainObject)(action.data) && !(0, lodash_1.isArray)(action.data) ? { response: action.data } : action.data;
168
- updateMetadataForChildCollections(incoming, metadataUpdate);
169
- // merging the incoming with existing
170
- // otherwise completely replace the existing value in redux
171
- if (!action.replaceValue) {
172
- valueAtPath = merge(valueAtPath, incoming);
173
- }
174
- else {
175
- valueAtPath = (0, lodash_1.merge)({}, incoming);
176
- }
177
- valueAtPath._metadata = (0, lodash_1.merge)({}, metadata, metadataUpdate);
178
- const result = fp_1.default.setWith(Object, path, valueAtPath, state);
179
- return result;
126
+ export default function modelsReducer() {
127
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
128
+ let action = arguments.length > 1 ? arguments[1] : undefined;
129
+ if (!action.modelPath) {
130
+ return state;
131
+ }
132
+ const path = action.modelPath.split('.');
133
+ // the object value at the specified path
134
+ let valueAtPath = lodashMerge({}, get(state, path));
135
+ const metadata = getMetadata(state, path);
136
+ let metadataUpdate;
137
+ switch (action.type) {
138
+ case MODEL_FETCH_START_ACTION_TYPE.FETCH_START:
139
+ // Retain the entity data, update the metadata to reflect fetch in request state
140
+ metadataUpdate = {
141
+ isFetching: true,
142
+ hasError: false,
143
+ lastFetchErrorData: undefined
144
+ };
145
+ valueAtPath._metadata = lodashMerge(metadata, metadataUpdate);
146
+ if (action.guid) {
147
+ valueAtPath.guid = action.guid;
148
+ }
149
+ return _fp.setWith(Object, path, valueAtPath, state);
150
+ case MODEL_FETCH_RESULT_ACTION_TYPE.FETCH_RESULT_RECEIVED:
151
+ {
152
+ // Update the metadata to reflect fetch is complete.
153
+ metadataUpdate = {
154
+ isFetching: false,
155
+ hasError: false,
156
+ lastFetchErrorData: undefined,
157
+ fetchedAt: new Date()
158
+ };
159
+ const incoming = !isPlainObject(action.data) && !isArray(action.data) ? {
160
+ response: action.data
161
+ } : action.data;
162
+ updateMetadataForChildCollections(incoming, metadataUpdate);
163
+ // merging the incoming with existing
164
+ // otherwise completely replace the existing value in redux
165
+ if (!action.replaceValue) {
166
+ valueAtPath = merge(valueAtPath, incoming);
167
+ } else {
168
+ valueAtPath = lodashMerge({}, incoming);
180
169
  }
181
- case actions_1.MODEL_FETCH_ERROR_ACTION_TYPE.FETCH_FAILED:
182
- // Retain the object, update the metadata to reflect the fact that the request failed
183
- metadataUpdate = {
184
- isFetching: false,
185
- hasError: true,
186
- lastFetchErrorData: action.errorData
187
- };
188
- valueAtPath._metadata = (0, lodash_1.merge)(metadata, metadataUpdate);
189
- if (action.guid) {
190
- valueAtPath.guid = action.guid;
191
- }
192
- return fp_1.default.setWith(Object, path, valueAtPath, state);
193
- case actions_1.MODEL_REMOVE_KEY_ACTION_TYPE:
194
- // Completely remove the object at the path from the state
195
- return fp_1.default.unset(path, state);
196
- default:
197
- return state;
198
- }
170
+ valueAtPath._metadata = lodashMerge({}, metadata, metadataUpdate);
171
+ const result = _fp.setWith(Object, path, valueAtPath, state);
172
+ return result;
173
+ }
174
+ case MODEL_FETCH_ERROR_ACTION_TYPE.FETCH_FAILED:
175
+ // Retain the object, update the metadata to reflect the fact that the request failed
176
+ metadataUpdate = {
177
+ isFetching: false,
178
+ hasError: true,
179
+ lastFetchErrorData: action.errorData
180
+ };
181
+ valueAtPath._metadata = lodashMerge(metadata, metadataUpdate);
182
+ if (action.guid) {
183
+ valueAtPath.guid = action.guid;
184
+ }
185
+ return _fp.setWith(Object, path, valueAtPath, state);
186
+ case MODEL_REMOVE_KEY_ACTION_TYPE:
187
+ // Completely remove the object at the path from the state
188
+ return _fp.unset(path, state);
189
+ default:
190
+ return state;
191
+ }
199
192
  }
193
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXQiLCJpc0FycmF5IiwiaXNOaWwiLCJpc1BsYWluT2JqZWN0IiwiaXNVbmRlZmluZWQiLCJtZXJnZSIsImxvZGFzaE1lcmdlIiwiX2ZwIiwiTU9ERUxfRkVUQ0hfRVJST1JfQUNUSU9OX1RZUEUiLCJNT0RFTF9GRVRDSF9SRVNVTFRfQUNUSU9OX1RZUEUiLCJNT0RFTF9GRVRDSF9TVEFSVF9BQ1RJT05fVFlQRSIsIk1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEUiLCJnZXRNZXRhZGF0YSIsInN0YXRlIiwicGF0aCIsImNvbmNhdCIsImlzQ29sbGVjdGlvbiIsIm9iaiIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJldmVyeSIsImtleSIsImNoaWxkIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaWQiLCJwYXJzZUludCIsImlzTnVsbFJlc3BvbnNlIiwiY3VycmVudCIsImluY29taW5nIiwicmVzdWx0IiwicmVkdWNlIiwib3V0IiwiayIsImMiLCJpIiwiZm9yRWFjaCIsInVwZGF0ZU1ldGFkYXRhRm9yQ2hpbGRDb2xsZWN0aW9ucyIsImRhdGEiLCJtZXRhZGF0YSIsImlzRGF0YUNvbGxlY3Rpb24iLCJ2YWx1ZSIsIl9tZXRhZGF0YSIsIm1vZGVsc1JlZHVjZXIiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJtb2RlbFBhdGgiLCJzcGxpdCIsInZhbHVlQXRQYXRoIiwibWV0YWRhdGFVcGRhdGUiLCJ0eXBlIiwiRkVUQ0hfU1RBUlQiLCJpc0ZldGNoaW5nIiwiaGFzRXJyb3IiLCJsYXN0RmV0Y2hFcnJvckRhdGEiLCJndWlkIiwic2V0V2l0aCIsIkZFVENIX1JFU1VMVF9SRUNFSVZFRCIsImZldGNoZWRBdCIsIkRhdGUiLCJyZXNwb25zZSIsInJlcGxhY2VWYWx1ZSIsIkZFVENIX0ZBSUxFRCIsImVycm9yRGF0YSIsInVuc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3JlZHVjZXJzL21vZGVsc1JlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSwgZ2V0LCBpc0FycmF5LCBpc05pbCwgaXNQbGFpbk9iamVjdCwgaXNVbmRlZmluZWQsIG1lcmdlIGFzIGxvZGFzaE1lcmdlIH0gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IF9mcCBmcm9tICdsb2Rhc2gvZnAnXG5pbXBvcnQgeyBNZXRhZGF0YSwgTW9kZWwgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7XG5cdE1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFLFxuXHRNT0RFTF9GRVRDSF9SRVNVTFRfQUNUSU9OX1RZUEUsXG5cdE1PREVMX0ZFVENIX1NUQVJUX0FDVElPTl9UWVBFLFxuXHRNT0RFTF9SRU1PVkVfS0VZX0FDVElPTl9UWVBFLFxuXHRNb2RlbFN0b3JlQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnXG5cbi8qKlxuICogR2l2ZW4gdGhlIHN0YXRlIGFuZCBhIHBhdGggaW50byB0aGF0IHN0YXRlIG9iamVjdCwgcmV0dXJuIHRoZSBwcm9wIHRoYXRcbiAqIGlzIG5hbWVkIFwiX21ldGFkYXRhXCJcbiAqXG4gKiBAcGFyYW0gc3RhdGUgVGhlIHJlZHV4IHN0YXRlIG9iamVjdFxuICogQHBhcmFtIHBhdGggQW4gYXJyYXkgb2Yga2V5cyB0aGF0IHJlcHJlc2VudCB0aGUgcGF0aCB0byB0aGUgZW50aXR5IGluIHF1ZXN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhZGF0YShzdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhdGg6IHN0cmluZ1tdKTogTWV0YWRhdGEge1xuXHRyZXR1cm4gbG9kYXNoTWVyZ2Uoe30sIGdldChzdGF0ZSwgcGF0aC5jb25jYXQoJ19tZXRhZGF0YScpKSlcbn1cblxuLyoqXG4gKiBHZXQgd2hldGhlciBvciBub3QgYW4gb2JqZWN0IGlzIGEgXCJjb2xsZWN0aW9uXCIgKGlkIGtleS12YWx1ZSBkaWN0aW9uYXJ5KS5cbiAqIEBwYXJhbSBvYmpcbiAqIEByZXR1cm5zIEEgYm9vbGVhblxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb2xsZWN0aW9uKG9iajogYW55KSB7XG5cdHJldHVybiAoXG5cdFx0IWlzQXJyYXkob2JqKSAmJlxuXHRcdGlzUGxhaW5PYmplY3Qob2JqKSAmJlxuXHRcdE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID4gMCAmJlxuXHRcdE9iamVjdC5rZXlzKG9iaikuZXZlcnkoa2V5ID0+IHtcblx0XHRcdGNvbnN0IGNoaWxkID0gb2JqW2tleV1cblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdGlzUGxhaW5PYmplY3QoY2hpbGQpICYmXG5cdFx0XHRcdChrZXkgPT09ICdfbWV0YWRhdGEnIHx8XG5cdFx0XHRcdFx0KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGlsZCwgJ2lkJykgJiZcblx0XHRcdFx0XHRcdChjaGlsZC5pZCA9PT0gcGFyc2VJbnQoa2V5LCAxMCkgfHwgY2hpbGQuaWQgPT09IGtleSkpKVxuXHRcdFx0KVxuXHRcdH0pXG5cdClcbn1cblxuLyoqXG4gKiBHZXQgd2hldGhlciBvciBub3QgYW4gb2JqZWN0IGlzIGEgXCJudWxsIHJlc3BvbnNlXCIuXG4gKiBAcGFyYW0gb2JqXG4gKiBAcmV0dXJucyBBIGJvb2xlYW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbFJlc3BvbnNlKG9iajogYW55KSB7XG5cdHJldHVybiAoXG5cdFx0aXNQbGFpbk9iamVjdChvYmopICYmXG5cdFx0T2JqZWN0LmtleXMob2JqKS5sZW5ndGggPiAwICYmXG5cdFx0T2JqZWN0LmtleXMob2JqKS5ldmVyeShrZXkgPT4ge1xuXHRcdFx0Y29uc3QgY2hpbGQgPSBvYmpba2V5XVxuXHRcdFx0cmV0dXJuIGtleSA9PT0gJ19tZXRhZGF0YScgfHwgKGtleSA9PT0gJ3Jlc3BvbnNlJyAmJiBjaGlsZCA9PT0gbnVsbClcblx0XHR9KVxuXHQpXG59XG5cbi8qKlxuICogTWVyZ2UgdGhlIGBjdXJyZW50YCBhbmQgYGluY29taW5nYCBvYmplY3RzIHJlY3Vyc2l2ZWx5LCByZXR1cm5pbmcgYSBuZXcgY29tYmluZWQgb2JqZWN0LlxuICpcbiAqIEZvciBlYWNoIGtleSBpbiBgY3VycmVudGA6XG4gKiAqIHJlbW92ZSBpZiBgY3VycmVudGAgaXMgYSBcImNvbGxlY3Rpb25cIiBhbmQgaXRlbSBrZXkgaXMgbm90IGluIGBpbmNvbWluZ2BcbiAqICogcmVjdXJzZSBpZiBgaW5jb21pbmdgIGlzIGFuIG9iamVjdCBvciBhcnJheSBhbmQgaGFzIGEgdmFsdWVcbiAqICogb3IgcHJlc2VydmUgZXhpc3RpbmcgdmFsdWVcbiAqXG4gKiBGb3IgZWFjaCBrZXkgaW4gYGluY29taW5nYCBub3QgaW4gYGN1cnJlbnRgOlxuICogKiBjb3B5IHZhbHVlIHRvIHJlc3VsdFxuICpcbiAqIEBwYXJhbSBjdXJyZW50XG4gKiBAcGFyYW0gaW5jb21pbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKGN1cnJlbnQ6IERpY3Rpb25hcnk8YW55PiwgaW5jb21pbmc/OiBEaWN0aW9uYXJ5PGFueT4gfCBudWxsKSB7XG5cdC8vIGRvIG5vdCBtZXJnZSBhcnJheXNcblx0aWYgKGlzQXJyYXkoY3VycmVudCkpIHtcblx0XHRyZXR1cm4gIWlzVW5kZWZpbmVkKGluY29taW5nKSA/IGluY29taW5nIDogY3VycmVudFxuXHR9XG5cdC8vIGlmIGluY29taW5nIGlzIGBudWxsYCBvciBhIG51bGwgcmVzcG9uc2UgKGB7J3Jlc3BvbnNlJzogbnVsbH1gKSwgZG8gbm90IG1lcmdlLCBqdXN0IHVzZSBpbmNvbWluZ1xuXHRpZiAoaW5jb21pbmcgPT09IG51bGwgfHwgKCFpc1VuZGVmaW5lZChpbmNvbWluZykgJiYgaXNOdWxsUmVzcG9uc2UoaW5jb21pbmcpKSkge1xuXHRcdHJldHVybiBpbmNvbWluZ1xuXHR9XG5cdGNvbnN0IHJlc3VsdDogRGljdGlvbmFyeTxhbnk+ID0gT2JqZWN0LmtleXMoY3VycmVudCkucmVkdWNlKChvdXQ6IERpY3Rpb25hcnk8YW55PiwgaykgPT4ge1xuXHRcdGNvbnN0IGMgPSBjdXJyZW50W2tdXG5cdFx0Y29uc3QgaSA9IGluY29taW5nICYmIGluY29taW5nW2tdXG5cdFx0Ly8gbm9uLXJlbGF0aW9uc1xuXHRcdGlmICghaXNBcnJheShjKSAmJiAhaXNQbGFpbk9iamVjdChjKSkge1xuXHRcdFx0Ly8gY29weSBpbmNvbWluZyB2YWx1ZSwgaWYgYW55LCBvdGhlcndpc2Uga2VlcCBjdXJyZW50XG5cdFx0XHRvdXRba10gPSAhaXNVbmRlZmluZWQoaSkgPyBpIDogY1xuXHRcdFx0cmV0dXJuIG91dFxuXHRcdH1cblx0XHQvLyByZW1vdmUgXCJjb2xsZWN0aW9uXCIgaXRlbSBub3QgaW5jbHVkZWQgaW4gaW5jb21pbmdcblx0XHRpZiAoKGlzQ29sbGVjdGlvbihjdXJyZW50KSB8fCBpc0NvbGxlY3Rpb24oaW5jb21pbmcpKSAmJiAhaXNVbmRlZmluZWQoaW5jb21pbmcpICYmIGlzVW5kZWZpbmVkKGkpKSB7XG5cdFx0XHRyZXR1cm4gb3V0XG5cdFx0fVxuXHRcdC8vIG1lcmdlIHJlbGF0aW9uc1xuXHRcdG91dFtrXSA9IG1lcmdlKGMsIGkpXG5cdFx0cmV0dXJuIG91dFxuXHR9LCB7fSlcblx0aWYgKCFpc05pbChpbmNvbWluZykgJiYgaXNQbGFpbk9iamVjdChpbmNvbWluZykpIHtcblx0XHQvLyBjb3B5IGluY29taW5nIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IG9uIGN1cnJlbnRcblx0XHRPYmplY3Qua2V5cyhpbmNvbWluZykuZm9yRWFjaChrID0+IHtcblx0XHRcdGNvbnN0IGMgPSBjdXJyZW50W2tdXG5cdFx0XHRjb25zdCBpID0gaW5jb21pbmdba11cblx0XHRcdGlmIChpc1VuZGVmaW5lZChjKSkge1xuXHRcdFx0XHRyZXN1bHRba10gPSBpXG5cdFx0XHR9XG5cdFx0fSlcblx0fVxuXHRyZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogU2V0cyBgX21ldGFkYXRhYCBvbiBhbnkgbmVzdGVkIGNvbGxlY3Rpb25zIGFuZCBjb2xsZWN0aW9uIGl0ZW1zIGluIHRoZSBkYXRhXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVNZXRhZGF0YUZvckNoaWxkQ29sbGVjdGlvbnMoZGF0YTogRGljdGlvbmFyeTxhbnk+LCBtZXRhZGF0YTogTWV0YWRhdGEpIHtcblx0Y29uc3QgaXNEYXRhQ29sbGVjdGlvbiA9IGlzQ29sbGVjdGlvbihkYXRhKVxuXHRPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0Y29uc3QgdmFsdWUgPSBkYXRhW2tleV1cblx0XHRpZiAoKGlzRGF0YUNvbGxlY3Rpb24gJiYga2V5ICE9PSAnX21ldGFkYXRhJyAmJiBpc1BsYWluT2JqZWN0KHZhbHVlKSkgfHwgaXNDb2xsZWN0aW9uKHZhbHVlKSkge1xuXHRcdFx0dmFsdWUuX21ldGFkYXRhID0gbWV0YWRhdGFcblx0XHRcdHVwZGF0ZU1ldGFkYXRhRm9yQ2hpbGRDb2xsZWN0aW9ucyh2YWx1ZSBhcyBvYmplY3QsIG1ldGFkYXRhKVxuXHRcdH1cblx0fSlcbn1cblxuLyoqXG4gKiBSZWR1Y2VyIGZvciBmZXRjaGluZyBhbmQgdXBkYXRpbmcgYG1vZGVsc2AgaW4gcmVkdXguXG4gKlxuICogRmV0Y2hpbmcgc3RhdGUgdXBkYXRlZCB3aXRoIGV2ZXJ5IGFjdGlvbi5cbiAqIERhdGEgdXBkYXRlZCBvbiByZXN1bHQgcmVjZWl2ZWQuXG4gKiBEYXRhIGFuZCBmZXRjaGVkRGF0ZSBOT1QgZGVsZXRlZCBvbiBmYWlsZWQgcmVxdWVzdC4gQWxsIGRhdGEgYXQga2V5IHJlbW92ZWQgb24gTU9ERUxfUkVNT1ZFX0tFWS5cbiAqXG4gKiBBbGwgYWN0aW9ucyByZXF1aXJlIGEgYG1vZGVsUGF0aGAga2V5IHRvIGZ1bmN0aW9uIHdpdGggdGhpcyByZWR1Y2VyLlxuICpcbiAqIEFycmF5cyBhcmUgY29udmVydGVkIHRvIG9iamVjdHMgdGhhdCByZXByZXNlbnQgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIG51bWVyaWMgaWQgb2YgdGhlIG9iamVjdCB1c2VkXG4gKiBhcyB0aGUga2V5IGFuZCB0aGUgZW50aXJlIG9iamVjdCB1c2VkIGFzIHRoZSB2YWx1ZVxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSBzdGF0ZSBUaGUgc3RhdGUgb2YgdGhlIG1vZGVscy4gSW5pdGlhbGx5IGVtcHR5XG4gKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdXBvbiB3aGljaCB3ZSBkaXNwYXRjaFxuICogQHJldHVybnMgVGhlIHVwZGF0ZWQgc3RhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9kZWxzUmVkdWNlcihzdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSwgYWN0aW9uOiBNb2RlbFN0b3JlQWN0aW9uKSB7XG5cdGlmICghYWN0aW9uLm1vZGVsUGF0aCkge1xuXHRcdHJldHVybiBzdGF0ZVxuXHR9XG5cdGNvbnN0IHBhdGg6IHN0cmluZ1tdID0gYWN0aW9uLm1vZGVsUGF0aC5zcGxpdCgnLicpXG5cdC8vIHRoZSBvYmplY3QgdmFsdWUgYXQgdGhlIHNwZWNpZmllZCBwYXRoXG5cdGxldCB2YWx1ZUF0UGF0aDogTW9kZWwgPSBsb2Rhc2hNZXJnZSh7fSwgZ2V0KHN0YXRlLCBwYXRoKSlcblx0Y29uc3QgbWV0YWRhdGEgPSBnZXRNZXRhZGF0YShzdGF0ZSwgcGF0aClcblx0bGV0IG1ldGFkYXRhVXBkYXRlOiBNZXRhZGF0YVxuXG5cdHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcblx0XHRjYXNlIE1PREVMX0ZFVENIX1NUQVJUX0FDVElPTl9UWVBFLkZFVENIX1NUQVJUOlxuXHRcdFx0Ly8gUmV0YWluIHRoZSBlbnRpdHkgZGF0YSwgdXBkYXRlIHRoZSBtZXRhZGF0YSB0byByZWZsZWN0IGZldGNoIGluIHJlcXVlc3Qgc3RhdGVcblx0XHRcdG1ldGFkYXRhVXBkYXRlID0ge1xuXHRcdFx0XHRpc0ZldGNoaW5nOiB0cnVlLFxuXHRcdFx0XHRoYXNFcnJvcjogZmFsc2UsXG5cdFx0XHRcdGxhc3RGZXRjaEVycm9yRGF0YTogdW5kZWZpbmVkXG5cdFx0XHR9XG5cdFx0XHR2YWx1ZUF0UGF0aC5fbWV0YWRhdGEgPSBsb2Rhc2hNZXJnZShtZXRhZGF0YSwgbWV0YWRhdGFVcGRhdGUpXG5cdFx0XHRpZiAoYWN0aW9uLmd1aWQpIHtcblx0XHRcdFx0dmFsdWVBdFBhdGguZ3VpZCA9IGFjdGlvbi5ndWlkXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gX2ZwLnNldFdpdGgoT2JqZWN0LCBwYXRoLCB2YWx1ZUF0UGF0aCwgc3RhdGUpXG5cblx0XHRjYXNlIE1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVNVTFRfUkVDRUlWRUQ6IHtcblx0XHRcdC8vIFVwZGF0ZSB0aGUgbWV0YWRhdGEgdG8gcmVmbGVjdCBmZXRjaCBpcyBjb21wbGV0ZS5cblx0XHRcdG1ldGFkYXRhVXBkYXRlID0ge1xuXHRcdFx0XHRpc0ZldGNoaW5nOiBmYWxzZSxcblx0XHRcdFx0aGFzRXJyb3I6IGZhbHNlLFxuXHRcdFx0XHRsYXN0RmV0Y2hFcnJvckRhdGE6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZmV0Y2hlZEF0OiBuZXcgRGF0ZSgpXG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbmNvbWluZzogb2JqZWN0ID1cblx0XHRcdFx0IWlzUGxhaW5PYmplY3QoYWN0aW9uLmRhdGEpICYmICFpc0FycmF5KGFjdGlvbi5kYXRhKSA/IHsgcmVzcG9uc2U6IGFjdGlvbi5kYXRhIH0gOiBhY3Rpb24uZGF0YVxuXHRcdFx0dXBkYXRlTWV0YWRhdGFGb3JDaGlsZENvbGxlY3Rpb25zKGluY29taW5nLCBtZXRhZGF0YVVwZGF0ZSlcblx0XHRcdC8vIG1lcmdpbmcgdGhlIGluY29taW5nIHdpdGggZXhpc3Rpbmdcblx0XHRcdC8vIG90aGVyd2lzZSBjb21wbGV0ZWx5IHJlcGxhY2UgdGhlIGV4aXN0aW5nIHZhbHVlIGluIHJlZHV4XG5cdFx0XHRpZiAoIWFjdGlvbi5yZXBsYWNlVmFsdWUpIHtcblx0XHRcdFx0dmFsdWVBdFBhdGggPSBtZXJnZSh2YWx1ZUF0UGF0aCwgaW5jb21pbmcpIGFzIE1vZGVsXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWx1ZUF0UGF0aCA9IGxvZGFzaE1lcmdlKHt9LCBpbmNvbWluZykgYXMgTW9kZWxcblx0XHRcdH1cblx0XHRcdHZhbHVlQXRQYXRoLl9tZXRhZGF0YSA9IGxvZGFzaE1lcmdlKHt9LCBtZXRhZGF0YSwgbWV0YWRhdGFVcGRhdGUpXG5cdFx0XHRjb25zdCByZXN1bHQgPSBfZnAuc2V0V2l0aChPYmplY3QsIHBhdGgsIHZhbHVlQXRQYXRoLCBzdGF0ZSlcblx0XHRcdHJldHVybiByZXN1bHRcblx0XHR9XG5cdFx0Y2FzZSBNT0RFTF9GRVRDSF9FUlJPUl9BQ1RJT05fVFlQRS5GRVRDSF9GQUlMRUQ6XG5cdFx0XHQvLyBSZXRhaW4gdGhlIG9iamVjdCwgdXBkYXRlIHRoZSBtZXRhZGF0YSB0byByZWZsZWN0IHRoZSBmYWN0IHRoYXQgdGhlIHJlcXVlc3QgZmFpbGVkXG5cdFx0XHRtZXRhZGF0YVVwZGF0ZSA9IHtcblx0XHRcdFx0aXNGZXRjaGluZzogZmFsc2UsXG5cdFx0XHRcdGhhc0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRsYXN0RmV0Y2hFcnJvckRhdGE6IGFjdGlvbi5lcnJvckRhdGFcblx0XHRcdH1cblx0XHRcdHZhbHVlQXRQYXRoLl9tZXRhZGF0YSA9IGxvZGFzaE1lcmdlKG1ldGFkYXRhLCBtZXRhZGF0YVVwZGF0ZSlcblx0XHRcdGlmIChhY3Rpb24uZ3VpZCkge1xuXHRcdFx0XHR2YWx1ZUF0UGF0aC5ndWlkID0gYWN0aW9uLmd1aWRcblx0XHRcdH1cblx0XHRcdHJldHVybiBfZnAuc2V0V2l0aChPYmplY3QsIHBhdGgsIHZhbHVlQXRQYXRoLCBzdGF0ZSlcblxuXHRcdGNhc2UgTU9ERUxfUkVNT1ZFX0tFWV9BQ1RJT05fVFlQRTpcblx0XHRcdC8vIENvbXBsZXRlbHkgcmVtb3ZlIHRoZSBvYmplY3QgYXQgdGhlIHBhdGggZnJvbSB0aGUgc3RhdGVcblx0XHRcdHJldHVybiBfZnAudW5zZXQocGF0aCwgc3RhdGUpXG5cblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIHN0YXRlXG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBcUJBLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxLQUFLLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxLQUFLLElBQUlDLFdBQVcsUUFBUSxRQUFRO0FBQzFHLE9BQU9DLEdBQUcsTUFBTSxXQUFXO0FBRTNCLFNBQ0NDLDZCQUE2QixFQUM3QkMsOEJBQThCLEVBQzlCQyw2QkFBNkIsRUFDN0JDLDRCQUE0QixRQUV0QixZQUFZOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsV0FBV0EsQ0FBQ0MsS0FBOEIsRUFBRUMsSUFBYyxFQUFZO0VBQ3JGLE9BQU9SLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRU4sR0FBRyxDQUFDYSxLQUFLLEVBQUVDLElBQUksQ0FBQ0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDN0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsWUFBWUEsQ0FBQ0MsR0FBUSxFQUFFO0VBQ3RDLE9BQ0MsQ0FBQ2hCLE9BQU8sQ0FBQ2dCLEdBQUcsQ0FBQyxJQUNiZCxhQUFhLENBQUNjLEdBQUcsQ0FBQyxJQUNsQkMsTUFBTSxDQUFDQyxJQUFJLENBQUNGLEdBQUcsQ0FBQyxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxJQUMzQkYsTUFBTSxDQUFDQyxJQUFJLENBQUNGLEdBQUcsQ0FBQyxDQUFDSSxLQUFLLENBQUNDLEdBQUcsSUFBSTtJQUM3QixNQUFNQyxLQUFLLEdBQUdOLEdBQUcsQ0FBQ0ssR0FBRyxDQUFDO0lBQ3RCLE9BQ0NuQixhQUFhLENBQUNvQixLQUFLLENBQUMsS0FDbkJELEdBQUcsS0FBSyxXQUFXLElBQ2xCSixNQUFNLENBQUNNLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNILEtBQUssRUFBRSxJQUFJLENBQUMs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
@@ -1,23 +1,23 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = notificationsReducer;
4
- const lodash_1 = require("lodash");
5
- const NotificationAction_1 = require("../actions/NotificationAction");
1
+ import { merge } from 'lodash';
2
+ import { NOTIFICATION_ACTION_TYPE } from '../actions/NotificationAction';
6
3
  const initialState = {
7
- queue: []
4
+ queue: []
8
5
  };
9
- function notificationsReducer(state = initialState, action) {
10
- let updatedState;
11
- switch (action.type) {
12
- case NotificationAction_1.NOTIFICATION_ACTION_TYPE.ADD_NOTIFICATION:
13
- updatedState = (0, lodash_1.merge)({}, state);
14
- updatedState.queue.push(action.notification);
15
- return updatedState;
16
- case NotificationAction_1.NOTIFICATION_ACTION_TYPE.REMOVE_NOTIFICATION:
17
- updatedState = (0, lodash_1.merge)({}, state);
18
- updatedState.queue = updatedState.queue.filter(n => n.id !== action.notification.id);
19
- return updatedState;
20
- default:
21
- return state;
22
- }
6
+ export default function notificationsReducer() {
7
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
8
+ let action = arguments.length > 1 ? arguments[1] : undefined;
9
+ let updatedState;
10
+ switch (action.type) {
11
+ case NOTIFICATION_ACTION_TYPE.ADD_NOTIFICATION:
12
+ updatedState = merge({}, state);
13
+ updatedState.queue.push(action.notification);
14
+ return updatedState;
15
+ case NOTIFICATION_ACTION_TYPE.REMOVE_NOTIFICATION:
16
+ updatedState = merge({}, state);
17
+ updatedState.queue = updatedState.queue.filter(n => n.id !== action.notification.id);
18
+ return updatedState;
19
+ default:
20
+ return state;
21
+ }
23
22
  }
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZXJnZSIsIk5PVElGSUNBVElPTl9BQ1RJT05fVFlQRSIsImluaXRpYWxTdGF0ZSIsInF1ZXVlIiwibm90aWZpY2F0aW9uc1JlZHVjZXIiLCJzdGF0ZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImFjdGlvbiIsInVwZGF0ZWRTdGF0ZSIsInR5cGUiLCJBRERfTk9USUZJQ0FUSU9OIiwicHVzaCIsIm5vdGlmaWNhdGlvbiIsIlJFTU9WRV9OT1RJRklDQVRJT04iLCJmaWx0ZXIiLCJuIiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkdXgvcmVkdWNlcnMvbm90aWZpY2F0aW9uc1JlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi90eXBlcy9Ob3RpZmljYXRpb24nXG5pbXBvcnQgeyBOT1RJRklDQVRJT05fQUNUSU9OX1RZUEUsIE5vdGlmaWNhdGlvbkFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvTm90aWZpY2F0aW9uQWN0aW9uJ1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvblN0YXRlIHtcblx0cXVldWU6IE5vdGlmaWNhdGlvbltdXG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZTogTm90aWZpY2F0aW9uU3RhdGUgPSB7XG5cdHF1ZXVlOiBbXVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBub3RpZmljYXRpb25zUmVkdWNlcihzdGF0ZSA9IGluaXRpYWxTdGF0ZSwgYWN0aW9uOiBOb3RpZmljYXRpb25BY3Rpb24pIHtcblx0bGV0IHVwZGF0ZWRTdGF0ZTogTm90aWZpY2F0aW9uU3RhdGVcblx0c3dpdGNoIChhY3Rpb24udHlwZSkge1xuXHRcdGNhc2UgTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFLkFERF9OT1RJRklDQVRJT046XG5cdFx0XHR1cGRhdGVkU3RhdGUgPSBtZXJnZSh7fSwgc3RhdGUpXG5cdFx0XHR1cGRhdGVkU3RhdGUucXVldWUucHVzaChhY3Rpb24ubm90aWZpY2F0aW9uKVxuXHRcdFx0cmV0dXJuIHVwZGF0ZWRTdGF0ZVxuXHRcdGNhc2UgTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFLlJFTU9WRV9OT1RJRklDQVRJT046XG5cdFx0XHR1cGRhdGVkU3RhdGUgPSBtZXJnZSh7fSwgc3RhdGUpXG5cdFx0XHR1cGRhdGVkU3RhdGUucXVldWUgPSB1cGRhdGVkU3RhdGUucXVldWUuZmlsdGVyKG4gPT4gbi5pZCAhPT0gYWN0aW9uLm5vdGlmaWNhdGlvbi5pZClcblx0XHRcdHJldHVybiB1cGRhdGVkU3RhdGVcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIHN0YXRlXG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsS0FBSyxRQUFRLFFBQVE7QUFFOUIsU0FBU0Msd0JBQXdCLFFBQTRCLCtCQUErQjtBQU01RixNQUFNQyxZQUErQixHQUFHO0VBQ3ZDQyxLQUFLLEVBQUU7QUFDUixDQUFDO0FBRUQsZUFBZSxTQUFTQyxvQkFBb0JBLENBQUEsRUFBbUQ7RUFBQSxJQUFsREMsS0FBSyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBR0osWUFBWTtFQUFBLElBQUVPLE1BQTBCLEdBQUFILFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUFFLFNBQUE7RUFDNUYsSUFBSUUsWUFBK0I7RUFDbkMsUUFBUUQsTUFBTSxDQUFDRSxJQUFJO0lBQ2xCLEtBQUtWLHdCQUF3QixDQUFDVyxnQkFBZ0I7TUFDN0NGLFlBQVksR0FBR1YsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFSyxLQUFLLENBQUM7TUFDL0JLLFlBQVksQ0FBQ1AsS0FBSyxDQUFDVSxJQUFJLENBQUNKLE1BQU0sQ0FBQ0ssWUFBWSxDQUFDO01BQzVDLE9BQU9KLFlBQVk7SUFDcEIsS0FBS1Qsd0JBQXdCLENBQUNjLG1CQUFtQjtNQUNoREwsWUFBWSxHQUFHVixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUVLLEtBQUssQ0FBQztNQUMvQkssWUFBWSxDQUFDUCxLQUFLLEdBQUdPLFlBQVksQ0FBQ1AsS0FBSyxDQUFDYSxNQUFNLENBQUNDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxFQUFFLEtBQUtULE1BQU0sQ0FBQ0ssWUFBWSxDQUFDSSxFQUFFLENBQUM7TUFDcEYsT0FBT1IsWUFBWTtJQUNwQjtNQUNDLE9BQU9MLEtBQUs7RUFDZDtBQUNEIiwiaWdub3JlTGlzdCI6W119