@beinformed/ui 1.65.22 → 1.65.24

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 (107) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/esm/hooks/__tests__/useAuthentication.spec.js.flow +100 -132
  3. package/esm/hooks/useAuthentication.js +14 -8
  4. package/esm/hooks/useAuthentication.js.flow +23 -23
  5. package/esm/hooks/useAuthentication.js.map +1 -1
  6. package/esm/hooks/useModularUI.js +1 -1
  7. package/esm/hooks/useModularUI.js.flow +1 -1
  8. package/esm/hooks/useModularUI.js.map +1 -1
  9. package/esm/models/filters/RangeFilterModel.js +1 -1
  10. package/esm/models/filters/RangeFilterModel.js.flow +1 -1
  11. package/esm/models/filters/RangeFilterModel.js.map +1 -1
  12. package/esm/models/filters/__tests__/RangeFilterModel.spec.js.flow +5 -7
  13. package/esm/redux/_i18n/I18nActions.js.flow +1 -1
  14. package/esm/redux/_i18n/I18nActions.js.map +1 -1
  15. package/esm/redux/_modularui/ModularUIActions.js.flow +2 -2
  16. package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
  17. package/esm/redux/_modularui/ModularUIConnector.js +2 -2
  18. package/esm/redux/_modularui/ModularUIConnector.js.flow +2 -2
  19. package/esm/redux/_modularui/ModularUIConnector.js.map +1 -1
  20. package/esm/redux/_modularui/ModularUISelectors.js +12 -18
  21. package/esm/redux/_modularui/ModularUISelectors.js.flow +13 -14
  22. package/esm/redux/_modularui/ModularUISelectors.js.map +1 -1
  23. package/esm/redux/_modularui/withModularUI.js.flow +2 -2
  24. package/esm/redux/_modularui/withModularUI.js.map +1 -1
  25. package/esm/redux/actions/Application.js +32 -4
  26. package/esm/redux/actions/Application.js.flow +34 -5
  27. package/esm/redux/actions/Application.js.map +1 -1
  28. package/esm/redux/actions/Authorization.js +20 -25
  29. package/esm/redux/actions/Authorization.js.flow +28 -29
  30. package/esm/redux/actions/Authorization.js.map +1 -1
  31. package/esm/redux/actions/Error.js +2 -0
  32. package/esm/redux/actions/Error.js.flow +5 -4
  33. package/esm/redux/actions/Error.js.map +1 -1
  34. package/esm/redux/actions/Form.js.flow +1 -1
  35. package/esm/redux/actions/Form.js.map +1 -1
  36. package/esm/redux/actions/FormAttributeSet.js.flow +1 -1
  37. package/esm/redux/actions/FormAttributeSet.js.map +1 -1
  38. package/esm/redux/actions/FormAutosave.js.flow +1 -1
  39. package/esm/redux/actions/FormAutosave.js.map +1 -1
  40. package/esm/redux/actions/FormAutosubmit.js.flow +1 -1
  41. package/esm/redux/actions/FormAutosubmit.js.map +1 -1
  42. package/esm/redux/actions/FormAutoupdate.js.flow +1 -1
  43. package/esm/redux/actions/FormAutoupdate.js.map +1 -1
  44. package/esm/redux/actions/FormValidations.js.flow +1 -1
  45. package/esm/redux/actions/FormValidations.js.map +1 -1
  46. package/esm/redux/actions/Notification.js.flow +3 -3
  47. package/esm/redux/actions/Notification.js.map +1 -1
  48. package/esm/redux/actions/SignIn.js +2 -4
  49. package/esm/redux/actions/SignIn.js.flow +4 -7
  50. package/esm/redux/actions/SignIn.js.map +1 -1
  51. package/esm/redux/actions/SignOut.js.flow +1 -1
  52. package/esm/redux/actions/SignOut.js.map +1 -1
  53. package/esm/redux/actions/__tests__/Application.spec.js.flow +67 -29
  54. package/esm/redux/actions/__tests__/Authorization.spec.js.flow +77 -83
  55. package/esm/redux/connectors/Form.js.flow +2 -2
  56. package/esm/redux/connectors/Form.js.map +1 -1
  57. package/esm/redux/connectors/FormAttributeSet.js.flow +2 -5
  58. package/esm/redux/connectors/FormAttributeSet.js.map +1 -1
  59. package/esm/redux/connectors/Progress.js.flow +1 -1
  60. package/esm/redux/connectors/Progress.js.map +1 -1
  61. package/esm/redux/connectors/SignIn.js.flow +1 -1
  62. package/esm/redux/connectors/SignIn.js.map +1 -1
  63. package/esm/redux/connectors/SignOut.js.flow +1 -1
  64. package/esm/redux/connectors/SignOut.js.map +1 -1
  65. package/esm/redux/store/configureStore.js +5 -1
  66. package/esm/redux/store/configureStore.js.flow +10 -1
  67. package/esm/redux/store/configureStore.js.map +1 -1
  68. package/esm/redux/types.js.flow +24 -5
  69. package/esm/redux/types.js.map +1 -1
  70. package/lib/hooks/useAuthentication.js +14 -8
  71. package/lib/hooks/useAuthentication.js.map +1 -1
  72. package/lib/hooks/useModularUI.js +1 -1
  73. package/lib/hooks/useModularUI.js.map +1 -1
  74. package/lib/models/filters/RangeFilterModel.js +1 -1
  75. package/lib/models/filters/RangeFilterModel.js.map +1 -1
  76. package/lib/redux/_i18n/I18nActions.js.map +1 -1
  77. package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
  78. package/lib/redux/_modularui/ModularUIConnector.js +2 -2
  79. package/lib/redux/_modularui/ModularUIConnector.js.map +1 -1
  80. package/lib/redux/_modularui/ModularUISelectors.js +12 -18
  81. package/lib/redux/_modularui/ModularUISelectors.js.map +1 -1
  82. package/lib/redux/_modularui/withModularUI.js.map +1 -1
  83. package/lib/redux/actions/Application.js +33 -4
  84. package/lib/redux/actions/Application.js.map +1 -1
  85. package/lib/redux/actions/Authorization.js +20 -25
  86. package/lib/redux/actions/Authorization.js.map +1 -1
  87. package/lib/redux/actions/Error.js +2 -0
  88. package/lib/redux/actions/Error.js.map +1 -1
  89. package/lib/redux/actions/Form.js.map +1 -1
  90. package/lib/redux/actions/FormAttributeSet.js.map +1 -1
  91. package/lib/redux/actions/FormAutosave.js.map +1 -1
  92. package/lib/redux/actions/FormAutosubmit.js.map +1 -1
  93. package/lib/redux/actions/FormAutoupdate.js.map +1 -1
  94. package/lib/redux/actions/FormValidations.js.map +1 -1
  95. package/lib/redux/actions/Notification.js.map +1 -1
  96. package/lib/redux/actions/SignIn.js +2 -4
  97. package/lib/redux/actions/SignIn.js.map +1 -1
  98. package/lib/redux/actions/SignOut.js.map +1 -1
  99. package/lib/redux/connectors/Form.js.map +1 -1
  100. package/lib/redux/connectors/FormAttributeSet.js.map +1 -1
  101. package/lib/redux/connectors/Progress.js.map +1 -1
  102. package/lib/redux/connectors/SignIn.js.map +1 -1
  103. package/lib/redux/connectors/SignOut.js.map +1 -1
  104. package/lib/redux/store/configureStore.js +5 -1
  105. package/lib/redux/store/configureStore.js.map +1 -1
  106. package/lib/redux/types.js.map +1 -1
  107. package/package.json +11 -11
@@ -13,6 +13,7 @@ var _exceptions = require("../exceptions");
13
13
  var _modularui = require("../modularui");
14
14
  var _useModularUIModel = require("./useModularUIModel");
15
15
  /**
16
+ * Hook for handling login logic
16
17
  */
17
18
  const useLogin = () => {
18
19
  _Cache.default.setItem("isRedirectLogin", false);
@@ -20,17 +21,17 @@ const useLogin = () => {
20
21
  const application = (0, _useModularUIModel.useApplication)();
21
22
  const auth = (0, _reactRedux.useSelector)(state => state.auth);
22
23
  const isAuthenticated = application?.isLoggedIn ?? false;
23
- const primaryAuthenticationType = _Cache.default.getItem("primaryAuthenticationType");
24
+ const cachedType = _Cache.default.getItem("primaryAuthenticationType");
24
25
  return {
25
26
  isAuthenticated,
26
- primaryAuthenticationType: primaryAuthenticationType ?? application?.authenticationTypes[0],
27
+ // Safely fallback to the first available type if nothing is cached
28
+ primaryAuthenticationType: cachedType ?? application?.authenticationTypes?.[0],
27
29
  authenticationTypes: application?.authenticationTypes ?? [],
28
30
  errorMessage: auth.error,
29
31
  resetErrors: () => dispatch((0, _actions.resetAuthErrors)()),
30
32
  login: (username, password) => dispatch((0, _actions.login)(username, password)),
31
33
  redirectLogin: authenticationType => {
32
34
  if (_Cache.default.getItem("isRedirectLogin")) {
33
- // prevent endless loop in redirects when authentication type can't be redirected
34
35
  throw new _exceptions.IllegalStateException(`Could not redirect to '${authenticationType.authentication}' using url: '${authenticationType.redirectUri ?? ""}'`);
35
36
  }
36
37
  if (!isAuthenticated) {
@@ -42,6 +43,7 @@ const useLogin = () => {
42
43
  };
43
44
 
44
45
  /**
46
+ * Hook for handling logout logic
45
47
  */
46
48
  exports.useLogin = useLogin;
47
49
  const useLogout = () => {
@@ -49,24 +51,28 @@ const useLogout = () => {
49
51
  const application = (0, _useModularUIModel.useApplication)();
50
52
  const BASE_PATH = (0, _constants.getBasePath)();
51
53
  const authenticate = new _modularui.Authenticate();
52
- const primaryAuthenticationType = _Cache.default.getItem("primaryAuthenticationType");
53
54
  const isAuthenticated = application?.isLoggedIn ?? false;
55
+ const cachedType = _Cache.default.getItem("primaryAuthenticationType");
54
56
  return {
55
57
  isAuthenticated,
56
- primaryAuthenticationType: primaryAuthenticationType ?? application?.authenticationTypes[0],
58
+ primaryAuthenticationType: cachedType ?? application?.authenticationTypes?.[0],
57
59
  authenticationTypes: application?.authenticationTypes ?? [],
58
60
  logout: () => {
59
61
  const type = authenticate.authenticationType;
60
62
  if (type === _constants.INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT) {
61
63
  authenticate.redirectToLogout();
62
- } else if (_Cache.default.getItem("isRedirectLogin")) {
64
+ return; // Redirects stop execution
65
+ }
66
+ if (_Cache.default.getItem("isRedirectLogin")) {
63
67
  const origin = window.location.origin;
64
68
  const url = `${authenticate.getLogoutUrl()}?url=${origin}${BASE_PATH}`;
65
69
  _Cache.default.setItem("isRedirectLogin", false);
66
70
  window.location.assign(url);
67
- } else {
68
- return dispatch((0, _actions.logout)());
71
+ return;
69
72
  }
73
+
74
+ // Returns the Promise from the logout thunk
75
+ return dispatch((0, _actions.logout)());
70
76
  },
71
77
  logoutUrl: authenticate.getLogoutUrl()
72
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useAuthentication.js","names":["_reactRedux","require","_actions","_Cache","_interopRequireDefault","_constants","_exceptions","_modularui","_useModularUIModel","useLogin","Cache","setItem","dispatch","useDispatch","application","useApplication","auth","useSelector","state","isAuthenticated","isLoggedIn","primaryAuthenticationType","getItem","authenticationTypes","errorMessage","error","resetErrors","resetAuthErrors","login","username","password","redirectLogin","authenticationType","IllegalStateException","authentication","redirectUri","window","location","assign","getBasePathServer","exports","useLogout","BASE_PATH","getBasePath","authenticate","Authenticate","logout","type","INTERNAL_LOGIN_TYPE","PAC4J_INDIRECT","redirectToLogout","origin","url","getLogoutUrl","logoutUrl"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport {\n getBasePath,\n getBasePathServer,\n INTERNAL_LOGIN_TYPE,\n} from \"../constants\";\nimport { IllegalStateException } from \"../exceptions\";\nimport { Authenticate } from \"../modularui\";\nimport { useApplication } from \"./useModularUIModel\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\n\ntype LoginHook = {\n isAuthenticated: boolean,\n primaryAuthenticationType: AuthenticationType,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n primaryAuthenticationType: AuthenticationType,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n logoutUrl: string,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useApplication();\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n const primaryAuthenticationType = Cache.getItem(\"primaryAuthenticationType\");\n\n return {\n isAuthenticated,\n primaryAuthenticationType:\n primaryAuthenticationType ?? application?.authenticationTypes[0],\n authenticationTypes: application?.authenticationTypes ?? [],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${\n authenticationType.authentication\n }' using url: '${authenticationType.redirectUri ?? \"\"}'`,\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${getBasePathServer()}${authenticationType.redirectUri ?? \"\"}`,\n );\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n\n const application = useApplication();\n\n const BASE_PATH = getBasePath();\n\n const authenticate = new Authenticate();\n\n const primaryAuthenticationType = Cache.getItem(\"primaryAuthenticationType\");\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n primaryAuthenticationType:\n primaryAuthenticationType ?? application?.authenticationTypes[0],\n authenticationTypes: application?.authenticationTypes ?? [],\n logout: () => {\n const type = authenticate.authenticationType;\n if (type === INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT) {\n authenticate.redirectToLogout();\n } else if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${authenticate.getLogoutUrl()}?url=${origin}${BASE_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n logoutUrl: authenticate.getLogoutUrl(),\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useAuthentication.js","names":["_reactRedux","require","_actions","_Cache","_interopRequireDefault","_constants","_exceptions","_modularui","_useModularUIModel","useLogin","Cache","setItem","dispatch","useDispatch","application","useApplication","auth","useSelector","state","isAuthenticated","isLoggedIn","cachedType","getItem","primaryAuthenticationType","authenticationTypes","errorMessage","error","resetErrors","resetAuthErrors","login","username","password","redirectLogin","authenticationType","IllegalStateException","authentication","redirectUri","window","location","assign","getBasePathServer","exports","useLogout","BASE_PATH","getBasePath","authenticate","Authenticate","logout","type","INTERNAL_LOGIN_TYPE","PAC4J_INDIRECT","redirectToLogout","origin","url","getLogoutUrl","logoutUrl"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\nimport Cache from \"../utils/browser/Cache\";\nimport {\n getBasePath,\n getBasePathServer,\n INTERNAL_LOGIN_TYPE,\n} from \"../constants\";\nimport { IllegalStateException } from \"../exceptions\";\nimport { Authenticate } from \"../modularui\";\nimport { useApplication } from \"./useModularUIModel\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\n\ntype LoginHook = {\n isAuthenticated: boolean,\n primaryAuthenticationType: ?AuthenticationType,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => any, // Changed to any for Promise support\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\n\ntype LogoutHook = {\n isAuthenticated: boolean,\n primaryAuthenticationType: ?AuthenticationType,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => any, // Changed to any for Promise support\n logoutUrl: string,\n};\n\n/**\n * Hook for handling login logic\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n const application = useApplication();\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n const cachedType = Cache.getItem(\"primaryAuthenticationType\");\n\n return {\n isAuthenticated,\n // Safely fallback to the first available type if nothing is cached\n primaryAuthenticationType:\n cachedType ?? application?.authenticationTypes?.[0],\n authenticationTypes: application?.authenticationTypes ?? [],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n throw new IllegalStateException(\n `Could not redirect to '${authenticationType.authentication}' using url: '${authenticationType.redirectUri ?? \"\"}'`,\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${getBasePathServer()}${authenticationType.redirectUri ?? \"\"}`,\n );\n }\n },\n };\n};\n\n/**\n * Hook for handling logout logic\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useApplication();\n const BASE_PATH = getBasePath();\n const authenticate = new Authenticate();\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n const cachedType = Cache.getItem(\"primaryAuthenticationType\");\n\n return {\n isAuthenticated,\n primaryAuthenticationType:\n cachedType ?? application?.authenticationTypes?.[0],\n authenticationTypes: application?.authenticationTypes ?? [],\n logout: () => {\n const type = authenticate.authenticationType;\n\n if (type === INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT) {\n authenticate.redirectToLogout();\n return; // Redirects stop execution\n }\n\n if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${authenticate.getLogoutUrl()}?url=${origin}${BASE_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n return;\n }\n\n // Returns the Promise from the logout thunk\n return dispatch(logout());\n },\n logoutUrl: authenticate.getLogoutUrl(),\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -47,7 +47,7 @@ const useModularUI = (modelKey, url, options = {}) => {
47
47
  const requestOptions = (0, _react.useMemo)(() => {
48
48
  const merged = {
49
49
  method: _constants.HTTP_METHODS.GET,
50
- removeOnUnmount: true,
50
+ removeOnUnmount: false,
51
51
  ...options
52
52
  };
53
53
  if (url instanceof _Href.default) {
@@ -1 +1 @@
1
- {"version":3,"file":"useModularUI.js","names":["_react","require","_reactRedux","_reactRouter","_constants","_ModularUIActions","_useDeepCompareEffect","_interopRequireDefault","_useModularUIKey","_Href","useModularUI","modelKey","url","options","dispatch","useDispatch","hrefInstance","useMemo","Href","requestUrl","toString","currentQueryString","querystring","prevQueryRef","useRef","key","useModularUIKey","model","useSelector","state","modularui","requestOptions","merged","method","HTTP_METHODS","GET","removeOnUnmount","origin","contextPath","location","useLocation","redirectLocation","shouldLoad","status","MODULARUI_STATUS","ERROR","current","equals","isReload","useEffect","useDeepCompareEffect","loadModularUI","removeModelByKey","exports"],"sources":["../../src/hooks/useModularUI.js"],"sourcesContent":["// @flow\nimport { useEffect, useMemo, useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\n\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../constants\";\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../redux/_modularui/ModularUIActions\";\n\nimport useDeepCompareEffect from \"./useDeepCompareEffect\";\nimport { useModularUIKey } from \"./useModularUIKey\";\n\nimport Href from \"../models/href/Href\";\n\nimport type { RequestModularUIOptions } from \"../utils\";\nimport type { ModelEntry } from \"../redux\";\n\n/**\n * A custom hook to fetch and manage Be Informed modular UI resources.\n * It handles automatic data fetching based on URL/query changes, manages Redux state\n * synchronization, and provides cleanup logic when components unmount.\n *\n * @param {string} modelKey - A unique identifier for the type of model being fetched.\n * @param {string | Href} url - The endpoint URL or Href instance to fetch data from.\n * @param {RequestModularUIOptions} options - Configuration for the request (method, headers, etc.).\n * @returns {ModelEntry} The model data retrieved from the Redux store.\n */\nexport const useModularUI = (\n modelKey: string,\n url: string | Href,\n options: RequestModularUIOptions = (({}: any): RequestModularUIOptions),\n): any => {\n const dispatch = useDispatch();\n\n // Normalize the URL input into a Href instance to safely access query params and paths\n const hrefInstance = useMemo(() => new Href(url), [url]);\n const requestUrl = useMemo(() => hrefInstance.toString(), [hrefInstance]);\n const currentQueryString = hrefInstance.querystring;\n\n // Persistence ref to detect if query parameters have changed between renders\n const prevQueryRef = useRef(currentQueryString);\n\n // Generate a unique key for the Redux store based on the model type and the full URL\n const key = useModularUIKey(modelKey, requestUrl);\n\n // Select the specific piece of state corresponding to this modular UI component\n const model = useSelector((state) => state.modularui[key]);\n\n /**\n * Memoize request options to prevent unnecessary re-renders.\n * Merges default settings (GET method, auto-cleanup) with user-provided options.\n */\n const requestOptions = useMemo(() => {\n const merged = {\n method: HTTP_METHODS.GET,\n removeOnUnmount: true,\n ...options,\n };\n\n if (url instanceof Href) {\n merged.origin = merged.origin ?? url.origin;\n merged.contextPath = merged.contextPath ?? url.contextPath;\n }\n return merged;\n }, [options, url]);\n\n const location = useLocation();\n const redirectLocation = location.state?.redirectLocation;\n\n /**\n * Determines if a network request should be initiated.\n * Logic includes:\n * - Model doesn't exist yet (Initial load)\n * - Previous request resulted in an error (Retry)\n * - The query parameters changed (Filtering/Paging)\n * - A redirect was triggered specifically for this URL\n * - Manual 'isReload' flag is passed in options\n */\n const shouldLoad =\n model == null ||\n model.status === MODULARUI_STATUS.ERROR ||\n prevQueryRef.current !== currentQueryString ||\n (redirectLocation instanceof Href\n ? redirectLocation.equals(requestUrl)\n : false) ||\n requestOptions.isReload === true;\n\n // Synchronize the ref after the render cycle determines if we should load\n useEffect(() => {\n prevQueryRef.current = currentQueryString;\n }, [currentQueryString]);\n\n // Execute the load action. Deep compare is used on options to prevent\n // infinite loops caused by passing inline object literals.\n useDeepCompareEffect(() => {\n if (requestUrl !== \"\" && shouldLoad) {\n dispatch(loadModularUI(key, requestUrl, requestOptions));\n }\n }, [key, requestUrl, requestOptions, shouldLoad]);\n\n // Cleanup Effect:\n // If 'removeOnUnmount' is true, this removes the model data from the Redux store\n // when the component using this hook is destroyed.\n useEffect(() => {\n if (requestOptions.removeOnUnmount) {\n return () => {\n dispatch(removeModelByKey(key));\n };\n }\n }, [dispatch, key, requestOptions.removeOnUnmount]);\n\n return model;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useModularUI.js","names":["_react","require","_reactRedux","_reactRouter","_constants","_ModularUIActions","_useDeepCompareEffect","_interopRequireDefault","_useModularUIKey","_Href","useModularUI","modelKey","url","options","dispatch","useDispatch","hrefInstance","useMemo","Href","requestUrl","toString","currentQueryString","querystring","prevQueryRef","useRef","key","useModularUIKey","model","useSelector","state","modularui","requestOptions","merged","method","HTTP_METHODS","GET","removeOnUnmount","origin","contextPath","location","useLocation","redirectLocation","shouldLoad","status","MODULARUI_STATUS","ERROR","current","equals","isReload","useEffect","useDeepCompareEffect","loadModularUI","removeModelByKey","exports"],"sources":["../../src/hooks/useModularUI.js"],"sourcesContent":["// @flow\nimport { useEffect, useMemo, useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\n\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../constants\";\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../redux/_modularui/ModularUIActions\";\n\nimport useDeepCompareEffect from \"./useDeepCompareEffect\";\nimport { useModularUIKey } from \"./useModularUIKey\";\n\nimport Href from \"../models/href/Href\";\n\nimport type { RequestModularUIOptions } from \"../utils\";\nimport type { ModelEntry } from \"../redux\";\n\n/**\n * A custom hook to fetch and manage Be Informed modular UI resources.\n * It handles automatic data fetching based on URL/query changes, manages Redux state\n * synchronization, and provides cleanup logic when components unmount.\n *\n * @param {string} modelKey - A unique identifier for the type of model being fetched.\n * @param {string | Href} url - The endpoint URL or Href instance to fetch data from.\n * @param {RequestModularUIOptions} options - Configuration for the request (method, headers, etc.).\n * @returns {ModelEntry} The model data retrieved from the Redux store.\n */\nexport const useModularUI = (\n modelKey: string,\n url: string | Href,\n options: RequestModularUIOptions = (({}: any): RequestModularUIOptions),\n): any => {\n const dispatch = useDispatch();\n\n // Normalize the URL input into a Href instance to safely access query params and paths\n const hrefInstance = useMemo(() => new Href(url), [url]);\n const requestUrl = useMemo(() => hrefInstance.toString(), [hrefInstance]);\n const currentQueryString = hrefInstance.querystring;\n\n // Persistence ref to detect if query parameters have changed between renders\n const prevQueryRef = useRef(currentQueryString);\n\n // Generate a unique key for the Redux store based on the model type and the full URL\n const key = useModularUIKey(modelKey, requestUrl);\n\n // Select the specific piece of state corresponding to this modular UI component\n const model = useSelector((state) => state.modularui[key]);\n\n /**\n * Memoize request options to prevent unnecessary re-renders.\n * Merges default settings (GET method, auto-cleanup) with user-provided options.\n */\n const requestOptions = useMemo(() => {\n const merged = {\n method: HTTP_METHODS.GET,\n removeOnUnmount: false,\n ...options,\n };\n\n if (url instanceof Href) {\n merged.origin = merged.origin ?? url.origin;\n merged.contextPath = merged.contextPath ?? url.contextPath;\n }\n return merged;\n }, [options, url]);\n\n const location = useLocation();\n const redirectLocation = location.state?.redirectLocation;\n\n /**\n * Determines if a network request should be initiated.\n * Logic includes:\n * - Model doesn't exist yet (Initial load)\n * - Previous request resulted in an error (Retry)\n * - The query parameters changed (Filtering/Paging)\n * - A redirect was triggered specifically for this URL\n * - Manual 'isReload' flag is passed in options\n */\n const shouldLoad =\n model == null ||\n model.status === MODULARUI_STATUS.ERROR ||\n prevQueryRef.current !== currentQueryString ||\n (redirectLocation instanceof Href\n ? redirectLocation.equals(requestUrl)\n : false) ||\n requestOptions.isReload === true;\n\n // Synchronize the ref after the render cycle determines if we should load\n useEffect(() => {\n prevQueryRef.current = currentQueryString;\n }, [currentQueryString]);\n\n // Execute the load action. Deep compare is used on options to prevent\n // infinite loops caused by passing inline object literals.\n useDeepCompareEffect(() => {\n if (requestUrl !== \"\" && shouldLoad) {\n dispatch(loadModularUI(key, requestUrl, requestOptions));\n }\n }, [key, requestUrl, requestOptions, shouldLoad]);\n\n // Cleanup Effect:\n // If 'removeOnUnmount' is true, this removes the model data from the Redux store\n // when the component using this hook is destroyed.\n useEffect(() => {\n if (requestOptions.removeOnUnmount) {\n return () => {\n dispatch(removeModelByKey(key));\n };\n }\n }, [dispatch, key, requestOptions.removeOnUnmount]);\n\n return model;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -56,7 +56,7 @@ class RangeFilterModel extends _FilterModel.default {
56
56
  }
57
57
  if ((0, _keys.default)(formdata).length > 0) {
58
58
  return {
59
- [this.param]: formdata
59
+ ...formdata
60
60
  };
61
61
  }
62
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RangeFilterModel.js","names":["_FilterModel","_interopRequireDefault","require","_CompositeAttributeModel","RangeFilterModel","FilterModel","update","attribute","value","CompositeAttributeModel","params","_context","_map","default","children","call","child","param","data","name","formdata","all","_keys","length","exports"],"sources":["../../../src/models/filters/RangeFilterModel.js"],"sourcesContent":["// @flow\nimport FilterModel from \"../filters/FilterModel\";\n\nimport CompositeAttributeModel from \"../attributes/CompositeAttributeModel\";\nimport type { AttributeType, IFilter } from \"../types\";\n\n/**\n * Range filter, for instance a date range filter or a number range filter\n */\nexport default class RangeFilterModel extends FilterModel implements IFilter {\n /**\n */\n update(attribute: AttributeType, value: string) {\n if (this.attribute instanceof CompositeAttributeModel) {\n this.attribute.update(value, attribute);\n } else if (this.attribute != null) {\n this.attribute.update(value);\n }\n }\n\n /**\n */\n get params(): Array<{ name: string, value: ?string }> {\n if (this.attribute instanceof CompositeAttributeModel) {\n return this.attribute.children.map((child) => {\n const { param } = this.data[child.name];\n return {\n name: param,\n value: child.value,\n };\n });\n }\n\n return [];\n }\n\n /**\n */\n get formdata(): { [string]: any } | null {\n if (this.attribute instanceof CompositeAttributeModel) {\n const formdata = {};\n for (const child of this.attribute.children.all) {\n const { param } = this.data[child.name];\n if (child.value) {\n formdata[param] = child.value;\n }\n }\n if (Object.keys(formdata).length > 0) {\n return { [this.param]: formdata };\n }\n }\n return null;\n }\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,wBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA;AACA;AACA;AACe,MAAME,gBAAgB,SAASC,oBAAW,CAAoB;EAC3E;AACF;EACEC,MAAMA,CAACC,SAAwB,EAAEC,KAAa,EAAE;IAC9C,IAAI,IAAI,CAACD,SAAS,YAAYE,gCAAuB,EAAE;MACrD,IAAI,CAACF,SAAS,CAACD,MAAM,CAACE,KAAK,EAAED,SAAS,CAAC;IACzC,CAAC,MAAM,IAAI,IAAI,CAACA,SAAS,IAAI,IAAI,EAAE;MACjC,IAAI,CAACA,SAAS,CAACD,MAAM,CAACE,KAAK,CAAC;IAC9B;EACF;;EAEA;AACF;EACE,IAAIE,MAAMA,CAAA,EAA4C;IACpD,IAAI,IAAI,CAACH,SAAS,YAAYE,gCAAuB,EAAE;MAAA,IAAAE,QAAA;MACrD,OAAO,IAAAC,IAAA,CAAAC,OAAA,EAAAF,QAAA,OAAI,CAACJ,SAAS,CAACO,QAAQ,EAAAC,IAAA,CAAAJ,QAAA,EAAMK,KAAK,IAAK;QAC5C,MAAM;UAAEC;QAAM,CAAC,GAAG,IAAI,CAACC,IAAI,CAACF,KAAK,CAACG,IAAI,CAAC;QACvC,OAAO;UACLA,IAAI,EAAEF,KAAK;UACXT,KAAK,EAAEQ,KAAK,CAACR;QACf,CAAC;MACH,CAAC,CAAC;IACJ;IAEA,OAAO,EAAE;EACX;;EAEA;AACF;EACE,IAAIY,QAAQA,CAAA,EAA6B;IACvC,IAAI,IAAI,CAACb,SAAS,YAAYE,gCAAuB,EAAE;MACrD,MAAMW,QAAQ,GAAG,CAAC,CAAC;MACnB,KAAK,MAAMJ,KAAK,IAAI,IAAI,CAACT,SAAS,CAACO,QAAQ,CAACO,GAAG,EAAE;QAC/C,MAAM;UAAEJ;QAAM,CAAC,GAAG,IAAI,CAACC,IAAI,CAACF,KAAK,CAACG,IAAI,CAAC;QACvC,IAAIH,KAAK,CAACR,KAAK,EAAE;UACfY,QAAQ,CAACH,KAAK,CAAC,GAAGD,KAAK,CAACR,KAAK;QAC/B;MACF;MACA,IAAI,IAAAc,KAAA,CAAAT,OAAA,EAAYO,QAAQ,CAAC,CAACG,MAAM,GAAG,CAAC,EAAE;QACpC,OAAO;UAAE,CAAC,IAAI,CAACN,KAAK,GAAGG;QAAS,CAAC;MACnC;IACF;IACA,OAAO,IAAI;EACb;AACF;AAACI,OAAA,CAAAX,OAAA,GAAAT,gBAAA","ignoreList":[]}
1
+ {"version":3,"file":"RangeFilterModel.js","names":["_FilterModel","_interopRequireDefault","require","_CompositeAttributeModel","RangeFilterModel","FilterModel","update","attribute","value","CompositeAttributeModel","params","_context","_map","default","children","call","child","param","data","name","formdata","all","_keys","length","exports"],"sources":["../../../src/models/filters/RangeFilterModel.js"],"sourcesContent":["// @flow\nimport FilterModel from \"../filters/FilterModel\";\n\nimport CompositeAttributeModel from \"../attributes/CompositeAttributeModel\";\nimport type { AttributeType, IFilter } from \"../types\";\n\n/**\n * Range filter, for instance a date range filter or a number range filter\n */\nexport default class RangeFilterModel extends FilterModel implements IFilter {\n /**\n */\n update(attribute: AttributeType, value: string) {\n if (this.attribute instanceof CompositeAttributeModel) {\n this.attribute.update(value, attribute);\n } else if (this.attribute != null) {\n this.attribute.update(value);\n }\n }\n\n /**\n */\n get params(): Array<{ name: string, value: ?string }> {\n if (this.attribute instanceof CompositeAttributeModel) {\n return this.attribute.children.map((child) => {\n const { param } = this.data[child.name];\n return {\n name: param,\n value: child.value,\n };\n });\n }\n\n return [];\n }\n\n /**\n */\n get formdata(): { [string]: any } | null {\n if (this.attribute instanceof CompositeAttributeModel) {\n const formdata = {};\n for (const child of this.attribute.children.all) {\n const { param } = this.data[child.name];\n if (child.value) {\n formdata[param] = child.value;\n }\n }\n if (Object.keys(formdata).length > 0) {\n return { ...formdata };\n }\n }\n return null;\n }\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,wBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA;AACA;AACA;AACe,MAAME,gBAAgB,SAASC,oBAAW,CAAoB;EAC3E;AACF;EACEC,MAAMA,CAACC,SAAwB,EAAEC,KAAa,EAAE;IAC9C,IAAI,IAAI,CAACD,SAAS,YAAYE,gCAAuB,EAAE;MACrD,IAAI,CAACF,SAAS,CAACD,MAAM,CAACE,KAAK,EAAED,SAAS,CAAC;IACzC,CAAC,MAAM,IAAI,IAAI,CAACA,SAAS,IAAI,IAAI,EAAE;MACjC,IAAI,CAACA,SAAS,CAACD,MAAM,CAACE,KAAK,CAAC;IAC9B;EACF;;EAEA;AACF;EACE,IAAIE,MAAMA,CAAA,EAA4C;IACpD,IAAI,IAAI,CAACH,SAAS,YAAYE,gCAAuB,EAAE;MAAA,IAAAE,QAAA;MACrD,OAAO,IAAAC,IAAA,CAAAC,OAAA,EAAAF,QAAA,OAAI,CAACJ,SAAS,CAACO,QAAQ,EAAAC,IAAA,CAAAJ,QAAA,EAAMK,KAAK,IAAK;QAC5C,MAAM;UAAEC;QAAM,CAAC,GAAG,IAAI,CAACC,IAAI,CAACF,KAAK,CAACG,IAAI,CAAC;QACvC,OAAO;UACLA,IAAI,EAAEF,KAAK;UACXT,KAAK,EAAEQ,KAAK,CAACR;QACf,CAAC;MACH,CAAC,CAAC;IACJ;IAEA,OAAO,EAAE;EACX;;EAEA;AACF;EACE,IAAIY,QAAQA,CAAA,EAA6B;IACvC,IAAI,IAAI,CAACb,SAAS,YAAYE,gCAAuB,EAAE;MACrD,MAAMW,QAAQ,GAAG,CAAC,CAAC;MACnB,KAAK,MAAMJ,KAAK,IAAI,IAAI,CAACT,SAAS,CAACO,QAAQ,CAACO,GAAG,EAAE;QAC/C,MAAM;UAAEJ;QAAM,CAAC,GAAG,IAAI,CAACC,IAAI,CAACF,KAAK,CAACG,IAAI,CAAC;QACvC,IAAIH,KAAK,CAACR,KAAK,EAAE;UACfY,QAAQ,CAACH,KAAK,CAAC,GAAGD,KAAK,CAACR,KAAK;QAC/B;MACF;MACA,IAAI,IAAAc,KAAA,CAAAT,OAAA,EAAYO,QAAQ,CAAC,CAACG,MAAM,GAAG,CAAC,EAAE;QACpC,OAAO;UAAE,GAAGH;QAAS,CAAC;MACxB;IACF;IACA,OAAO,IAAI;EACb;AACF;AAACI,OAAA,CAAAX,OAAA,GAAAT,gBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"I18nActions.js","names":["_ProgressIndicator","require","receiveLocale","locale","type","payload","exports","updateLocale","dispatch","startProgress","finishProgress","setLocales","locales"],"sources":["../../../src/redux/_i18n/I18nActions.js"],"sourcesContent":["// @flow\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport type Locales from \"../../i18n/Locales\";\nimport type { SetLocalesAction, UpdateLocaleAction } from \"./types\";\nimport type { ThunkAction } from \"../types\";\n\n/**\n * Update current locale\n */\nexport const receiveLocale = (locale: string): UpdateLocaleAction => ({\n type: \"UPDATE_LOCALE\",\n payload: locale,\n});\n\n/**\n * Change locale of application and redirect\n */\nexport const updateLocale =\n (locale: string): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n dispatch(receiveLocale(locale));\n dispatch(finishProgress());\n };\n\n/**\n */\nexport const setLocales = (\n locales: Locales,\n locale: string,\n): SetLocalesAction => ({\n type: \"SET_LOCALES\",\n payload: {\n locales,\n locale,\n },\n});\n"],"mappings":";;;;;;AACA,IAAAA,kBAAA,GAAAC,OAAA;AAMA;AACA;AACA;AACO,MAAMC,aAAa,GAAIC,MAAc,KAA0B;EACpEC,IAAI,EAAE,eAAe;EACrBC,OAAO,EAAEF;AACX,CAAC,CAAC;;AAEF;AACA;AACA;AAFAG,OAAA,CAAAJ,aAAA,GAAAA,aAAA;AAGO,MAAMK,YAAY,GACtBJ,MAAc,IACdK,QAAQ,IAAK;EACZA,QAAQ,CAAC,IAAAC,gCAAa,EAAC,CAAC,CAAC;EACzBD,QAAQ,CAACN,aAAa,CAACC,MAAM,CAAC,CAAC;EAC/BK,QAAQ,CAAC,IAAAE,iCAAc,EAAC,CAAC,CAAC;AAC5B,CAAC;;AAEH;AACA;AADAJ,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAEO,MAAMI,UAAU,GAAGA,CACxBC,OAAgB,EAChBT,MAAc,MACQ;EACtBC,IAAI,EAAE,aAAa;EACnBC,OAAO,EAAE;IACPO,OAAO;IACPT;EACF;AACF,CAAC,CAAC;AAACG,OAAA,CAAAK,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"file":"I18nActions.js","names":["_ProgressIndicator","require","receiveLocale","locale","type","payload","exports","updateLocale","dispatch","startProgress","finishProgress","setLocales","locales"],"sources":["../../../src/redux/_i18n/I18nActions.js"],"sourcesContent":["// @flow\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport type Locales from \"../../i18n/Locales\";\nimport type { SetLocalesAction, UpdateLocaleAction } from \"./types\";\nimport type { ThunkAction } from \"../types\";\n\n/**\n * Update current locale\n */\nexport const receiveLocale = (locale: string): UpdateLocaleAction => ({\n type: \"UPDATE_LOCALE\",\n payload: locale,\n});\n\n/**\n * Change locale of application and redirect\n */\nexport const updateLocale =\n (locale: string): ThunkAction<> =>\n (dispatch) => {\n dispatch(startProgress());\n dispatch(receiveLocale(locale));\n dispatch(finishProgress());\n };\n\n/**\n */\nexport const setLocales = (\n locales: Locales,\n locale: string,\n): SetLocalesAction => ({\n type: \"SET_LOCALES\",\n payload: {\n locales,\n locale,\n },\n});\n"],"mappings":";;;;;;AACA,IAAAA,kBAAA,GAAAC,OAAA;AAMA;AACA;AACA;AACO,MAAMC,aAAa,GAAIC,MAAc,KAA0B;EACpEC,IAAI,EAAE,eAAe;EACrBC,OAAO,EAAEF;AACX,CAAC,CAAC;;AAEF;AACA;AACA;AAFAG,OAAA,CAAAJ,aAAA,GAAAA,aAAA;AAGO,MAAMK,YAAY,GACtBJ,MAAc,IACdK,QAAQ,IAAK;EACZA,QAAQ,CAAC,IAAAC,gCAAa,EAAC,CAAC,CAAC;EACzBD,QAAQ,CAACN,aAAa,CAACC,MAAM,CAAC,CAAC;EAC/BK,QAAQ,CAAC,IAAAE,iCAAc,EAAC,CAAC,CAAC;AAC5B,CAAC;;AAEH;AACA;AADAJ,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAEO,MAAMI,UAAU,GAAGA,CACxBC,OAAgB,EAChBT,MAAc,MACQ;EACtBC,IAAI,EAAE,aAAa;EACnBC,OAAO,EAAE;IACPO,OAAO;IACPT;EACF;AACF,CAAC,CAAC;AAACG,OAAA,CAAAK,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ModularUIActions.js","names":["_Constants","require","_Href","_interopRequireDefault","_ErrorResponse","_ProgressIndicator","_Error","setModel","key","model","connectKey","type","payload","exports","initModels","models","updateModel","updateForm","removeModelByKey","resetModularUI","updateStatus","status","requestOptions","loadModelSuccessAction","updateHandler","getRequestLocale","optionLocale","navigator","language","split","loadModel","href","options","origin","contextPath","Href","method","HTTP_METHODS","GET","params","data","timeout","headers","events","onProgress","locale","childmodels","targetModel","forceTargetModel","cache","isReload","withCredentials","successAction","errorAction","error","errorResponse","ErrorResponse","isChangePassword","isResourceNotFoundAfterReload","MODULARUI_STATUS","ERROR","loadModularUI","retryCount","retryDelay","dispatch","getState","modularuiStore","modularui","currentRequest","isLoading","LOADING","isDifferentRequest","toString","_promise","default","resolve","setTimeout","startProgress","loadModelPromise","then","finishProgress","catch","handleError","reloadModel","selfhref"],"sources":["../../../src/redux/_modularui/ModularUIActions.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\nimport { finishProgress, startProgress } from \"../actions/ProgressIndicator\";\nimport { handleError } from \"../actions/Error\";\n\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { Dispatch, ThunkAction } from \"../types\";\nimport type {\n ModularUIAction,\n SetModelAction,\n InitModelAction,\n UpdateModelAction,\n UpdateFormAction,\n RemoveModelByKeyAction,\n ResetModularUIAction,\n UpdateStatusAction,\n} from \"./types\";\nimport type {\n RequestModularUIOptions,\n UpdateHandler,\n} from \"../../utils/fetch/types\";\n\n/**\n */\nexport const setModel = (\n key: string,\n model: ModularUIModel,\n): SetModelAction => {\n // set key on model for later reference\n model.connectKey = key;\n return {\n type: \"MODULARUI/SET\",\n payload: {\n key,\n model,\n },\n };\n};\n\n/**\n */\nexport const initModels = (\n models: Array<{ key: string, model: ModularUIModel }>,\n): InitModelAction => ({\n type: \"MODULARUI/INIT\",\n payload: models,\n});\n\n/**\n */\nexport const updateModel = (model: ModularUIModel): UpdateModelAction => ({\n type: \"MODULARUI/UPDATE\",\n payload: model,\n});\n\n/**\n */\nexport const updateForm = (model: ModularUIModel): UpdateFormAction => ({\n type: \"MODULARUI/UPDATE_FORM\",\n payload: model,\n});\n\n/**\n */\nexport const removeModelByKey = (key: string): RemoveModelByKeyAction => ({\n type: \"MODULARUI/REMOVE_KEY\",\n payload: key,\n});\n\n/**\n * Removes all models except the application model from the modular ui reducer\n */\nexport const resetModularUI = (): ResetModularUIAction => ({\n type: \"MODULARUI/RESET\",\n});\n\n/**\n */\nexport const updateStatus = (\n key: string,\n status: $Keys<typeof MODULARUI_STATUS>,\n requestOptions: any,\n): UpdateStatusAction => ({\n type: \"MODULARUI/STATUS\",\n payload: { key, status, requestOptions },\n});\n\n/**\n */\nconst loadModelSuccessAction = (\n key: string,\n model: ModularUIModel,\n updateHandler: UpdateHandler | void,\n): UpdateModelAction | SetModelAction => {\n if (updateHandler) {\n return updateModel(updateHandler(model));\n }\n return setModel(key, model);\n};\n\n/**\n * Retrieve the preferred language for this request, falls back to the browser language or english\n */\nconst getRequestLocale = (optionLocale: ?string): string => {\n if (optionLocale) {\n return optionLocale;\n }\n\n if (typeof navigator !== \"undefined\" && navigator?.language) {\n return navigator.language.split(\"-\")[0] || \"en\";\n }\n\n return \"en\";\n};\n\n/**\n * This action is handled by the modularui middleware\n */\nexport const loadModel = (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n): ModularUIAction => ({\n type: \"MODULARUI/FETCH\",\n payload: {\n key,\n origin: options?.origin,\n contextPath: options?.contextPath,\n href:\n href instanceof Href\n ? href\n : new Href(href, \"\", {\n origin: options?.origin,\n contextPath: options?.contextPath,\n }),\n method: options?.method ?? HTTP_METHODS.GET,\n params: options?.params,\n data: options?.data,\n timeout: options?.timeout,\n headers: options?.headers,\n events: options?.events,\n onProgress: options?.onProgress,\n locale: getRequestLocale(options?.locale),\n childmodels: options?.childmodels,\n targetModel: options?.targetModel,\n forceTargetModel: options?.forceTargetModel,\n cache: options?.cache,\n isReload: options?.isReload,\n withCredentials: options?.withCredentials,\n /**\n */\n successAction: (model) =>\n loadModelSuccessAction(key, model, options?.updateHandler),\n /**\n */\n errorAction: (error) => {\n const errorResponse = new ErrorResponse(error, key, {\n origin: options?.origin,\n contextPath: options?.contextPath,\n });\n if (\n errorResponse.isChangePassword ||\n errorResponse.isResourceNotFoundAfterReload\n ) {\n return removeModelByKey(key);\n }\n return updateStatus(key, MODULARUI_STATUS.ERROR);\n },\n },\n});\n\n/**\n */\nexport const loadModularUI =\n (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n retryCount: number = 3,\n retryDelay: number = 200,\n ): ThunkAction =>\n (dispatch: Dispatch, getState) => {\n const modularuiStore = getState()?.modularui;\n const currentRequest = modularuiStore?.[key];\n\n const isLoading = currentRequest?.status === MODULARUI_STATUS.LOADING;\n\n if (isLoading) {\n const isDifferentRequest =\n currentRequest.requestOptions?.href?.toString() !== href.toString();\n if (isDifferentRequest && retryCount > 0) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(\n dispatch(\n loadModularUI(key, href, options, retryCount - 1, retryDelay),\n ),\n );\n }, retryDelay);\n });\n }\n\n // Same request is already loading — do nothing\n return Promise.resolve();\n }\n\n dispatch(startProgress());\n\n const loadModelPromise = dispatch(loadModel(key, href, options));\n\n return Promise.resolve(loadModelPromise)\n .then(() => dispatch(finishProgress()))\n .catch((error) => dispatch(handleError(error)));\n };\n\n/**\n */\nexport const reloadModel = (\n model: ModularUIModel,\n options?: RequestModularUIOptions,\n): ThunkAction =>\n loadModularUI(model.connectKey, model.selfhref, {\n ...options,\n isReload: true,\n });\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ModularUIActions.js","names":["_Constants","require","_Href","_interopRequireDefault","_ErrorResponse","_ProgressIndicator","_Error","setModel","key","model","connectKey","type","payload","exports","initModels","models","updateModel","updateForm","removeModelByKey","resetModularUI","updateStatus","status","requestOptions","loadModelSuccessAction","updateHandler","getRequestLocale","optionLocale","navigator","language","split","loadModel","href","options","origin","contextPath","Href","method","HTTP_METHODS","GET","params","data","timeout","headers","events","onProgress","locale","childmodels","targetModel","forceTargetModel","cache","isReload","withCredentials","successAction","errorAction","error","errorResponse","ErrorResponse","isChangePassword","isResourceNotFoundAfterReload","MODULARUI_STATUS","ERROR","loadModularUI","retryCount","retryDelay","dispatch","getState","modularuiStore","modularui","currentRequest","isLoading","LOADING","isDifferentRequest","toString","_promise","default","resolve","setTimeout","startProgress","loadModelPromise","then","finishProgress","catch","handleError","reloadModel","selfhref"],"sources":["../../../src/redux/_modularui/ModularUIActions.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\nimport { finishProgress, startProgress } from \"../actions/ProgressIndicator\";\nimport { handleError } from \"../actions/Error\";\n\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { Dispatch, ThunkAction } from \"../types\";\nimport type {\n ModularUIAction,\n SetModelAction,\n InitModelAction,\n UpdateModelAction,\n UpdateFormAction,\n RemoveModelByKeyAction,\n ResetModularUIAction,\n UpdateStatusAction,\n} from \"./types\";\nimport type {\n RequestModularUIOptions,\n UpdateHandler,\n} from \"../../utils/fetch/types\";\n\n/**\n */\nexport const setModel = (\n key: string,\n model: ModularUIModel,\n): SetModelAction => {\n // set key on model for later reference\n model.connectKey = key;\n return {\n type: \"MODULARUI/SET\",\n payload: {\n key,\n model,\n },\n };\n};\n\n/**\n */\nexport const initModels = (\n models: Array<{ key: string, model: ModularUIModel }>,\n): InitModelAction => ({\n type: \"MODULARUI/INIT\",\n payload: models,\n});\n\n/**\n */\nexport const updateModel = (model: ModularUIModel): UpdateModelAction => ({\n type: \"MODULARUI/UPDATE\",\n payload: model,\n});\n\n/**\n */\nexport const updateForm = (model: ModularUIModel): UpdateFormAction => ({\n type: \"MODULARUI/UPDATE_FORM\",\n payload: model,\n});\n\n/**\n */\nexport const removeModelByKey = (key: string): RemoveModelByKeyAction => ({\n type: \"MODULARUI/REMOVE_KEY\",\n payload: key,\n});\n\n/**\n * Removes all models except the application model from the modular ui reducer\n */\nexport const resetModularUI = (): ResetModularUIAction => ({\n type: \"MODULARUI/RESET\",\n});\n\n/**\n */\nexport const updateStatus = (\n key: string,\n status: $Keys<typeof MODULARUI_STATUS>,\n requestOptions: any,\n): UpdateStatusAction => ({\n type: \"MODULARUI/STATUS\",\n payload: { key, status, requestOptions },\n});\n\n/**\n */\nconst loadModelSuccessAction = (\n key: string,\n model: ModularUIModel,\n updateHandler: UpdateHandler | void,\n): UpdateModelAction | SetModelAction => {\n if (updateHandler) {\n return updateModel(updateHandler(model));\n }\n return setModel(key, model);\n};\n\n/**\n * Retrieve the preferred language for this request, falls back to the browser language or english\n */\nconst getRequestLocale = (optionLocale: ?string): string => {\n if (optionLocale) {\n return optionLocale;\n }\n\n if (typeof navigator !== \"undefined\" && navigator?.language) {\n return navigator.language.split(\"-\")[0] || \"en\";\n }\n\n return \"en\";\n};\n\n/**\n * This action is handled by the modularui middleware\n */\nexport const loadModel = (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n): ModularUIAction => ({\n type: \"MODULARUI/FETCH\",\n payload: {\n key,\n origin: options?.origin,\n contextPath: options?.contextPath,\n href:\n href instanceof Href\n ? href\n : new Href(href, \"\", {\n origin: options?.origin,\n contextPath: options?.contextPath,\n }),\n method: options?.method ?? HTTP_METHODS.GET,\n params: options?.params,\n data: options?.data,\n timeout: options?.timeout,\n headers: options?.headers,\n events: options?.events,\n onProgress: options?.onProgress,\n locale: getRequestLocale(options?.locale),\n childmodels: options?.childmodels,\n targetModel: options?.targetModel,\n forceTargetModel: options?.forceTargetModel,\n cache: options?.cache,\n isReload: options?.isReload,\n withCredentials: options?.withCredentials,\n /**\n */\n successAction: (model) =>\n loadModelSuccessAction(key, model, options?.updateHandler),\n /**\n */\n errorAction: (error) => {\n const errorResponse = new ErrorResponse(error, key, {\n origin: options?.origin,\n contextPath: options?.contextPath,\n });\n if (\n errorResponse.isChangePassword ||\n errorResponse.isResourceNotFoundAfterReload\n ) {\n return removeModelByKey(key);\n }\n return updateStatus(key, MODULARUI_STATUS.ERROR);\n },\n },\n});\n\n/**\n */\nexport const loadModularUI =\n (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n retryCount: number = 3,\n retryDelay: number = 200,\n ): ThunkAction<> =>\n (dispatch: Dispatch, getState) => {\n const modularuiStore = getState()?.modularui;\n const currentRequest = modularuiStore?.[key];\n\n const isLoading = currentRequest?.status === MODULARUI_STATUS.LOADING;\n\n if (isLoading) {\n const isDifferentRequest =\n currentRequest.requestOptions?.href?.toString() !== href.toString();\n if (isDifferentRequest && retryCount > 0) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(\n dispatch(\n loadModularUI(key, href, options, retryCount - 1, retryDelay),\n ),\n );\n }, retryDelay);\n });\n }\n\n // Same request is already loading — do nothing\n return Promise.resolve();\n }\n\n dispatch(startProgress());\n\n const loadModelPromise = dispatch(loadModel(key, href, options));\n\n return Promise.resolve(loadModelPromise)\n .then(() => dispatch(finishProgress()))\n .catch((error) => dispatch(handleError(error)));\n };\n\n/**\n */\nexport const reloadModel = (\n model: ModularUIModel,\n options?: RequestModularUIOptions,\n): ThunkAction<> =>\n loadModularUI(model.connectKey, model.selfhref, {\n ...options,\n isReload: true,\n });\n"],"mappings":"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","ignoreList":[]}
@@ -39,11 +39,11 @@ const patchUpdateModelOption = oldOptions => {
39
39
  */
40
40
  const modularUIConnector = (name, resource, options = {
41
41
  propName: "data",
42
- removeOnUnmount: true
42
+ removeOnUnmount: false
43
43
  }) => {
44
44
  const {
45
45
  propName = "data",
46
- removeOnUnmount = true,
46
+ removeOnUnmount = false,
47
47
  ...otherOptions
48
48
  } = options;
49
49
  return Component => {
@@ -1 +1 @@
1
- {"version":3,"file":"ModularUIConnector.js","names":["_reactRedux","require","_reactRouter","_ModularUIActions","_Href","_interopRequireDefault","_utils","_ModularUIUtils","_useModularUI","_useModularUIBasic","_useI18n","_FormModel","_jsxRuntime","patchUpdateModelOption","oldOptions","updateModel","FormModel","updateHandler","newModel","clonedModel","clone","update","modularUIConnector","name","resource","options","propName","removeOnUnmount","otherOptions","Component","WrappedComponent","props","finalRemoveOnUnmount","dispatch","useDispatch","location","useLocation","locale","useLocale","url","useUrl","model","useModularUIBasic","modelEntry","useModularUI","modelKey","connectKey","handleFetch","href","fetchOptions","loadModularUI","handleManualReload","m","o","reloadModel","newProps","status","lastModification","hasModel","Boolean","fetchModularUI","jsx","displayName","getDisplayName","_default","exports","default"],"sources":["../../../src/redux/_modularui/ModularUIConnector.js"],"sourcesContent":["// @flow\nimport { useDispatch } from \"react-redux\";\nimport { useLocation } from \"react-router\";\n\nimport { loadModularUI, reloadModel } from \"./ModularUIActions\";\n\nimport Href from \"../../models/href/Href\";\nimport { getDisplayName } from \"../../react/utils\";\n\nimport { useUrl } from \"./ModularUIUtils\";\nimport { useModularUI } from \"../../hooks/useModularUI\";\nimport { useModularUIBasic } from \"../../hooks/useModularUIBasic\";\n\nimport { useLocale } from \"../../hooks/useI18n\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { ComponentType, Node } from \"react\";\nimport type { Location } from \"react-router\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { ModularUIOptions } from \"./types\";\n\nexport type InjectedProps = {\n +modelKey: string,\n +location: Location,\n +status: string | null,\n +lastModification: number | null,\n +hasModel: boolean,\n +locale: string,\n +fetchModularUI: (href: string | Href, fetchOptions: Object) => void,\n +reloadModel: (model: ModularUIModel, options: Object) => void,\n +data?: ?ModularUIModel,\n};\n\nconst patchUpdateModelOption = (oldOptions: Object) => {\n if (\n \"updateModel\" in oldOptions &&\n oldOptions.updateModel instanceof FormModel\n ) {\n return {\n ...oldOptions,\n updateHandler: (newModel: ModularUIModel): ModularUIModel => {\n if (newModel instanceof FormModel) {\n // $FLowFixMe\n const clonedModel: FormModel = oldOptions.updateModel.clone();\n clonedModel.update(newModel);\n return clonedModel;\n }\n return newModel;\n },\n };\n }\n\n return oldOptions;\n};\n\n/**\n * @deprecated - will be removed in the future, use the equivalent hook 'useModularUI' or 'useModularUIBasic' instead\n */\nconst modularUIConnector = (\n name: string,\n resource: string | Function,\n options: ModularUIOptions = { propName: \"data\", removeOnUnmount: true },\n): ((Component: ComponentType<any>) => (props: any) => Node) => {\n const {\n propName = \"data\",\n removeOnUnmount = true,\n ...otherOptions\n } = options;\n\n return (Component: ComponentType<any>) => {\n const WrappedComponent = (props: any) => {\n const finalRemoveOnUnmount = props.removeOnUnmount ?? removeOnUnmount;\n\n const dispatch = useDispatch();\n const location = useLocation();\n const locale = useLocale();\n const url = useUrl(resource, { location, ...props });\n\n // $FlowFixMe\n const model = useModularUIBasic<ModularUIModel>(name, url, options);\n\n const modelEntry = useModularUI(name, url, {\n ...otherOptions,\n removeOnUnmount: finalRemoveOnUnmount,\n });\n const modelKey = model?.connectKey ?? name;\n\n const handleFetch = (href: string | Href, fetchOptions: Object) => {\n dispatch(\n loadModularUI(modelKey, href, patchUpdateModelOption(fetchOptions)),\n );\n };\n\n const handleManualReload = (m: ModularUIModel, o: Object) => {\n dispatch(reloadModel(m, o));\n };\n\n const newProps: InjectedProps = {\n modelKey,\n [propName ?? \"data\"]: model,\n location,\n status: modelEntry?.status ?? null,\n lastModification: modelEntry?.lastModification ?? null,\n hasModel: Boolean(model),\n locale,\n fetchModularUI: handleFetch,\n reloadModel: handleManualReload,\n };\n\n return <Component {...props} {...newProps} />;\n };\n\n WrappedComponent.displayName = `BI.modularui(${getDisplayName(Component, name)})`;\n return WrappedComponent;\n };\n};\n\nexport default modularUIConnector;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ModularUIConnector.js","names":["_reactRedux","require","_reactRouter","_ModularUIActions","_Href","_interopRequireDefault","_utils","_ModularUIUtils","_useModularUI","_useModularUIBasic","_useI18n","_FormModel","_jsxRuntime","patchUpdateModelOption","oldOptions","updateModel","FormModel","updateHandler","newModel","clonedModel","clone","update","modularUIConnector","name","resource","options","propName","removeOnUnmount","otherOptions","Component","WrappedComponent","props","finalRemoveOnUnmount","dispatch","useDispatch","location","useLocation","locale","useLocale","url","useUrl","model","useModularUIBasic","modelEntry","useModularUI","modelKey","connectKey","handleFetch","href","fetchOptions","loadModularUI","handleManualReload","m","o","reloadModel","newProps","status","lastModification","hasModel","Boolean","fetchModularUI","jsx","displayName","getDisplayName","_default","exports","default"],"sources":["../../../src/redux/_modularui/ModularUIConnector.js"],"sourcesContent":["// @flow\nimport { useDispatch } from \"react-redux\";\nimport { useLocation } from \"react-router\";\n\nimport { loadModularUI, reloadModel } from \"./ModularUIActions\";\n\nimport Href from \"../../models/href/Href\";\nimport { getDisplayName } from \"../../react/utils\";\n\nimport { useUrl } from \"./ModularUIUtils\";\nimport { useModularUI } from \"../../hooks/useModularUI\";\nimport { useModularUIBasic } from \"../../hooks/useModularUIBasic\";\n\nimport { useLocale } from \"../../hooks/useI18n\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { ComponentType, Node } from \"react\";\nimport type { Location } from \"react-router\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { ModularUIOptions } from \"./types\";\n\nexport type InjectedProps = {\n +modelKey: string,\n +location: Location,\n +status: string | null,\n +lastModification: number | null,\n +hasModel: boolean,\n +locale: string,\n +fetchModularUI: (href: string | Href, fetchOptions: Object) => void,\n +reloadModel: (model: ModularUIModel, options: Object) => void,\n +data?: ?ModularUIModel,\n};\n\nconst patchUpdateModelOption = (oldOptions: Object) => {\n if (\n \"updateModel\" in oldOptions &&\n oldOptions.updateModel instanceof FormModel\n ) {\n return {\n ...oldOptions,\n updateHandler: (newModel: ModularUIModel): ModularUIModel => {\n if (newModel instanceof FormModel) {\n // $FLowFixMe\n const clonedModel: FormModel = oldOptions.updateModel.clone();\n clonedModel.update(newModel);\n return clonedModel;\n }\n return newModel;\n },\n };\n }\n\n return oldOptions;\n};\n\n/**\n * @deprecated - will be removed in the future, use the equivalent hook 'useModularUI' or 'useModularUIBasic' instead\n */\nconst modularUIConnector = (\n name: string,\n resource: string | Function,\n options: ModularUIOptions = { propName: \"data\", removeOnUnmount: false },\n): ((Component: ComponentType<any>) => (props: any) => Node) => {\n const {\n propName = \"data\",\n removeOnUnmount = false,\n ...otherOptions\n } = options;\n\n return (Component: ComponentType<any>) => {\n const WrappedComponent = (props: any) => {\n const finalRemoveOnUnmount = props.removeOnUnmount ?? removeOnUnmount;\n\n const dispatch = useDispatch();\n const location = useLocation();\n const locale = useLocale();\n const url = useUrl(resource, { location, ...props });\n\n // $FlowFixMe\n const model = useModularUIBasic<ModularUIModel>(name, url, options);\n\n const modelEntry = useModularUI(name, url, {\n ...otherOptions,\n removeOnUnmount: finalRemoveOnUnmount,\n });\n const modelKey = model?.connectKey ?? name;\n\n const handleFetch = (href: string | Href, fetchOptions: Object) => {\n dispatch(\n loadModularUI(modelKey, href, patchUpdateModelOption(fetchOptions)),\n );\n };\n\n const handleManualReload = (m: ModularUIModel, o: Object) => {\n dispatch(reloadModel(m, o));\n };\n\n const newProps: InjectedProps = {\n modelKey,\n [propName ?? \"data\"]: model,\n location,\n status: modelEntry?.status ?? null,\n lastModification: modelEntry?.lastModification ?? null,\n hasModel: Boolean(model),\n locale,\n fetchModularUI: handleFetch,\n reloadModel: handleManualReload,\n };\n\n return <Component {...props} {...newProps} />;\n };\n\n WrappedComponent.displayName = `BI.modularui(${getDisplayName(Component, name)})`;\n return WrappedComponent;\n };\n};\n\nexport default modularUIConnector;\n"],"mappings":"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","ignoreList":[]}
@@ -42,26 +42,20 @@ const getAllModelsByInstance = (state, instance) => {
42
42
  */
43
43
  exports.getAllModelsByInstance = getAllModelsByInstance;
44
44
  const getFirstModelByInstance = (state, instance) => {
45
+ var _context3;
45
46
  const locale = state?.i18n?.locale || "en";
46
47
  const modularui = state?.modularui;
47
- if (modularui) {
48
- var _context3;
49
- const key = (0, _find.default)(_context3 = (0, _keys.default)(modularui)).call(_context3, key => {
50
- const {
51
- model
52
- } = modularui[key];
53
- return model instanceof instance && model.locale === locale;
54
- });
55
- if (key) {
56
- const {
57
- model
58
- } = modularui[key];
59
- if (model instanceof instance) {
60
- return model;
61
- }
62
- }
63
- }
64
- return null;
48
+ if (!modularui) return null;
49
+ const foundKey = (0, _find.default)(_context3 = (0, _keys.default)(modularui)).call(_context3, key => {
50
+ const entry = modularui[key];
51
+ if (!entry || !entry.model) return false;
52
+ const isInstance = entry.model instanceof instance;
53
+ const localeMatches = entry.model.locale === locale;
54
+ return isInstance && localeMatches;
55
+ });
56
+
57
+ // $FlowIssue
58
+ return foundKey ? modularui[foundKey].model : null;
65
59
  };
66
60
 
67
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ModularUISelectors.js","names":["_reselect","require","_objects","_Href","_interopRequireDefault","_ContentModel","_ContentTOCModel","_ApplicationModel","_TabModel","_CaseViewModel","_FormModel","_constants","getAllModelsByInstance","state","instance","locale","i18n","modularui","_context","_context2","_map","default","_filter","_keys","call","key","model","exports","getFirstModelByInstance","_context3","_find","getActiveModelByInstance","location","getLocation","_context4","_startsWith","selfhref","path","getApplication","ApplicationModel","getTab","TabModel","getCaseView","CaseViewModel","getForm","FormModel","modelByHref","href","_context5","findHref","Href","modelConfigKey","equals","keyByHref","_context6","allKeysByHref","_context7","router","pathname","getModels","models","forEach","modelKey","modelEntry","has","label","type","modelInfo","selfContentLink","ContentModel","ContentTOCModel","push","getActiveModels","createSelectorCreator","defaultMemoize","value","other","_stringify","contextModels","locationParts","split","reduce","accumulator","current","comparePath","decodeURIComponent","replace","foundEntry","encodedHref","toString","getPreference","preferenceName","preferences","getModelsByType","_context8","_context9","getAllFinishedModels","createSelector","_context0","_context1","status","MODULARUI_STATUS","FINISHED"],"sources":["../../../src/redux/_modularui/ModularUISelectors.js"],"sourcesContent":["// @flow\nimport {\n createSelector,\n createSelectorCreator,\n defaultMemoize,\n} from \"reselect\";\nimport { has } from \"../../utils/helpers/objects\";\n\nimport Href from \"../../models/href/Href\";\nimport ContentModel from \"../../models/content/ContentModel\";\nimport ContentTOCModel from \"../../models/content/ContentTOCModel\";\nimport ApplicationModel from \"../../models/application/ApplicationModel\";\nimport TabModel from \"../../models/tab/TabModel\";\nimport CaseViewModel from \"../../models/caseview/CaseViewModel\";\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { ReduxState, PreferenceValue } from \"../types\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport { MODULARUI_STATUS } from \"../../constants\";\n\n/**\n */\nexport const getAllModelsByInstance = <T>(\n state: ReduxState,\n instance: Class<T>,\n): Array<ModularUIModel> => {\n const locale = state?.i18n?.locale || \"en\";\n const modularui = state?.modularui;\n\n if (modularui) {\n return Object.keys(modularui)\n .filter((key) => {\n const { model } = modularui[key];\n return model instanceof instance && model.locale === locale;\n })\n .map((key) => modularui[key].model);\n }\n\n return [];\n};\n\n/**\n */\nexport const getFirstModelByInstance = <T>(\n state: ReduxState,\n instance: Class<T>,\n): T | null => {\n const locale = state?.i18n?.locale || \"en\";\n const modularui = state?.modularui;\n\n if (modularui) {\n const key = Object.keys(modularui).find((key) => {\n const { model } = modularui[key];\n return model instanceof instance && model.locale === locale;\n });\n\n if (key) {\n const { model } = modularui[key];\n if (model instanceof instance) {\n return model;\n }\n }\n }\n\n return null;\n};\n\n/**\n */\nexport const getActiveModelByInstance = <T>(\n state: ReduxState,\n instance: Class<T>,\n): T | null => {\n const location = getLocation(state);\n\n const locale = state?.i18n?.locale || \"en\";\n const modularui = state?.modularui;\n\n if (modularui) {\n const key = Object.keys(modularui).find((key) => {\n const { model } = modularui[key];\n return (\n model instanceof instance &&\n model.locale === locale &&\n location.startsWith(model.selfhref.path)\n );\n });\n\n if (key) {\n const { model } = modularui[key];\n if (model instanceof instance) {\n return model;\n }\n }\n }\n\n return null;\n};\n\n/**\n * Get the application model, which is the model with selfhref '/'\n */\nexport const getApplication = (state: ReduxState): null | ApplicationModel =>\n getFirstModelByInstance(state, ApplicationModel);\n\n/**\n */\nexport const getTab = (state: ReduxState): null | TabModel =>\n getFirstModelByInstance(state, TabModel);\n\n/**\n */\nexport const getCaseView = (state: ReduxState): null | CaseViewModel =>\n getFirstModelByInstance(state, CaseViewModel);\n\n/**\n */\nexport const getForm = (state: ReduxState): null | FormModel =>\n getFirstModelByInstance(state, FormModel);\n\n/**\n * Get the model by it's href\n */\nexport const modelByHref = (\n state: ReduxState,\n href: Href | string,\n): null | ModularUIModel => {\n if (state && state.modularui) {\n const findHref = href instanceof Href ? href : new Href(href);\n\n const modelConfigKey = Object.keys(state.modularui).find((key) => {\n const model = state.modularui[key];\n\n return (\n model.model &&\n model.model.selfhref &&\n model.model.selfhref.equals(findHref)\n );\n });\n\n if (modelConfigKey) {\n return state.modularui[modelConfigKey].model;\n }\n }\n\n return null;\n};\n\n/**\n * Return the key of a model by the selfhref the model is saved in the reducer\n */\nexport const keyByHref = (state: ReduxState, href: Href | string): ?string => {\n if (state && state.modularui) {\n const findHref = href instanceof Href ? href : new Href(href);\n\n return Object.keys(state.modularui).find((key) => {\n const { model } = state.modularui[key];\n return model && model.selfhref && model.selfhref.equals(findHref);\n });\n }\n\n return null;\n};\n\n/**\n * Returns all model keys found in the store, restrict on href\n */\nexport const allKeysByHref = (\n state: ReduxState,\n href: Href | string,\n): Array<string> => {\n if (state && state.modularui) {\n const findHref = href instanceof Href ? href : new Href(href);\n\n return Object.keys(state.modularui).filter((key) => {\n const { model } = state.modularui[key];\n return model && model.selfhref && model.selfhref.equals(findHref);\n });\n }\n\n return [];\n};\n\n/**\n */\nconst getLocation = (state: ReduxState): string =>\n state?.router?.location.pathname;\n\n/**\n */\nconst getModels = (state: ReduxState) => {\n const models = [];\n\n Object.keys(state.modularui).forEach((modelKey: string) => {\n const modelEntry = state.modularui[modelKey];\n\n if (has(modelEntry, \"model\")) {\n const { key, selfhref, label, type } = modelEntry.model;\n\n const modelInfo = {\n key,\n selfhref,\n label,\n type,\n selfContentLink: null,\n };\n\n if (\n modelEntry.model instanceof ContentModel ||\n modelEntry.model instanceof ContentTOCModel\n ) {\n models.push({\n ...modelInfo,\n selfContentLink: modelEntry.model.selfContentLink,\n });\n } else {\n models.push(modelInfo);\n }\n }\n });\n\n return models;\n};\n\nexport const getActiveModels: (state: ReduxState) => Array<{\n key: string,\n href: Href,\n label: string,\n type: string,\n}> = createSelectorCreator(\n defaultMemoize,\n (value, other) => JSON.stringify(value) === JSON.stringify(other),\n)([getLocation, getModels], (location, models) => {\n const contextModels = [];\n\n if (location) {\n const locationParts = location.split(\"/\");\n\n locationParts.reduce((accumulator, current) => {\n const path = `${accumulator}/${current}`;\n\n // Remove modelcatalog part to match breadcrumb parts\n const comparePath = decodeURIComponent(path).replace(\n \"/modelcatalog/\",\n \"/\",\n );\n\n const foundEntry = models.find(\n (model) => model.selfhref && model.selfhref.equals(comparePath),\n );\n\n if (foundEntry) {\n const { key, label, type, selfhref, selfContentLink } = foundEntry;\n\n const href =\n path.startsWith(\"/modelcatalog/\") && selfContentLink\n ? new Href(`/modelcatalog${selfContentLink.encodedHref.toString()}`)\n : selfhref;\n\n contextModels.push({ key, href, label, type });\n }\n\n return path;\n });\n }\n\n return contextModels;\n});\n\n/**\n */\nexport const getPreference = (\n state: ReduxState,\n preferenceName: string,\n): null | PreferenceValue => {\n if (state && state.preferences) {\n return state.preferences[preferenceName];\n }\n\n return null;\n};\n\n/**\n * @deprecated - Use getFirstModelByInstance or the appropriate getter for the model type: getApplication, getTab, etc\n */\nexport const getModelsByType = (\n state: ReduxState,\n type: string,\n): Array<ModularUIModel> => {\n if (state && state.modularui) {\n return Object.keys(state.modularui)\n .filter(\n (key) =>\n state.modularui[key] &&\n state.modularui[key].model &&\n state.modularui[key].model.type === type,\n )\n .map((key) => state.modularui[key].model);\n }\n\n return [];\n};\n\n/**\n */\nexport const getAllFinishedModels: (\n state: ReduxState,\n) => Array<ModularUIModel> = createSelector(\n (state: ReduxState) => state.modularui,\n (modularui): Array<ModularUIModel> => {\n if (modularui) {\n return Object.keys(modularui)\n .filter(\n (key) =>\n modularui[key] &&\n modularui[key].status === MODULARUI_STATUS.FINISHED,\n )\n .map((key) => modularui[key].model);\n }\n return [];\n },\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ModularUISelectors.js","names":["_reselect","require","_objects","_Href","_interopRequireDefault","_ContentModel","_ContentTOCModel","_ApplicationModel","_TabModel","_CaseViewModel","_FormModel","_constants","getAllModelsByInstance","state","instance","locale","i18n","modularui","_context","_context2","_map","default","_filter","_keys","call","key","model","exports","getFirstModelByInstance","_context3","foundKey","_find","entry","isInstance","localeMatches","getActiveModelByInstance","location","getLocation","_context4","_startsWith","selfhref","path","getApplication","ApplicationModel","getTab","TabModel","getCaseView","CaseViewModel","getForm","FormModel","modelByHref","href","_context5","findHref","Href","modelConfigKey","equals","keyByHref","_context6","allKeysByHref","_context7","router","pathname","getModels","models","forEach","modelKey","modelEntry","has","label","type","modelInfo","selfContentLink","ContentModel","ContentTOCModel","push","getActiveModels","createSelectorCreator","defaultMemoize","value","other","_stringify","contextModels","locationParts","split","reduce","accumulator","current","comparePath","decodeURIComponent","replace","foundEntry","encodedHref","toString","getPreference","preferenceName","preferences","getModelsByType","_context8","_context9","getAllFinishedModels","createSelector","_context0","_context1","status","MODULARUI_STATUS","FINISHED"],"sources":["../../../src/redux/_modularui/ModularUISelectors.js"],"sourcesContent":["// @flow\nimport {\n createSelector,\n createSelectorCreator,\n defaultMemoize,\n} from \"reselect\";\nimport { has } from \"../../utils/helpers/objects\";\n\nimport Href from \"../../models/href/Href\";\nimport ContentModel from \"../../models/content/ContentModel\";\nimport ContentTOCModel from \"../../models/content/ContentTOCModel\";\nimport ApplicationModel from \"../../models/application/ApplicationModel\";\nimport TabModel from \"../../models/tab/TabModel\";\nimport CaseViewModel from \"../../models/caseview/CaseViewModel\";\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { ReduxState, PreferenceValue } from \"../types\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport { MODULARUI_STATUS } from \"../../constants\";\n\n/**\n */\nexport const getAllModelsByInstance = <T>(\n state: ReduxState,\n instance: Class<T>,\n): Array<ModularUIModel> => {\n const locale = state?.i18n?.locale || \"en\";\n const modularui = state?.modularui;\n\n if (modularui) {\n return Object.keys(modularui)\n .filter((key) => {\n const { model } = modularui[key];\n return model instanceof instance && model.locale === locale;\n })\n .map((key) => modularui[key].model);\n }\n\n return [];\n};\n\n/**\n */\nexport const getFirstModelByInstance = <T = ModularUIModel>(\n state: ReduxState,\n instance: Class<T>,\n): T | null => {\n const locale = state?.i18n?.locale || \"en\";\n const modularui = state?.modularui;\n\n if (!modularui) return null;\n\n const foundKey = Object.keys(modularui).find((key) => {\n const entry = modularui[key];\n if (!entry || !entry.model) return false;\n\n const isInstance = entry.model instanceof instance;\n const localeMatches = entry.model.locale === locale;\n\n return isInstance && localeMatches;\n });\n\n // $FlowIssue\n return foundKey ? modularui[foundKey].model : null;\n};\n\n/**\n */\nexport const getActiveModelByInstance = <T>(\n state: ReduxState,\n instance: Class<T>,\n): T | null => {\n const location = getLocation(state);\n\n const locale = state?.i18n?.locale || \"en\";\n const modularui = state?.modularui;\n\n if (modularui) {\n const key = Object.keys(modularui).find((key) => {\n const { model } = modularui[key];\n return (\n model instanceof instance &&\n model.locale === locale &&\n location.startsWith(model.selfhref.path)\n );\n });\n\n if (key) {\n const { model } = modularui[key];\n if (model instanceof instance) {\n return model;\n }\n }\n }\n\n return null;\n};\n\n/**\n * Get the application model, which is the model with selfhref '/'\n */\nexport const getApplication = (state: ReduxState): null | ApplicationModel =>\n getFirstModelByInstance(state, ApplicationModel);\n\n/**\n */\nexport const getTab = (state: ReduxState): null | TabModel =>\n getFirstModelByInstance(state, TabModel);\n\n/**\n */\nexport const getCaseView = (state: ReduxState): null | CaseViewModel =>\n getFirstModelByInstance(state, CaseViewModel);\n\n/**\n */\nexport const getForm = (state: ReduxState): null | FormModel =>\n getFirstModelByInstance(state, FormModel);\n\n/**\n * Get the model by it's href\n */\nexport const modelByHref = (\n state: ReduxState,\n href: Href | string,\n): null | ModularUIModel => {\n if (state && state.modularui) {\n const findHref = href instanceof Href ? href : new Href(href);\n\n const modelConfigKey = Object.keys(state.modularui).find((key) => {\n const model = state.modularui[key];\n\n return (\n model.model &&\n model.model.selfhref &&\n model.model.selfhref.equals(findHref)\n );\n });\n\n if (modelConfigKey) {\n return state.modularui[modelConfigKey].model;\n }\n }\n\n return null;\n};\n\n/**\n * Return the key of a model by the selfhref the model is saved in the reducer\n */\nexport const keyByHref = (state: ReduxState, href: Href | string): ?string => {\n if (state && state.modularui) {\n const findHref = href instanceof Href ? href : new Href(href);\n\n return Object.keys(state.modularui).find((key) => {\n const { model } = state.modularui[key];\n return model && model.selfhref && model.selfhref.equals(findHref);\n });\n }\n\n return null;\n};\n\n/**\n * Returns all model keys found in the store, restrict on href\n */\nexport const allKeysByHref = (\n state: ReduxState,\n href: Href | string,\n): Array<string> => {\n if (state && state.modularui) {\n const findHref = href instanceof Href ? href : new Href(href);\n\n return Object.keys(state.modularui).filter((key) => {\n const { model } = state.modularui[key];\n return model && model.selfhref && model.selfhref.equals(findHref);\n });\n }\n\n return [];\n};\n\n/**\n */\nconst getLocation = (state: ReduxState): string =>\n state?.router?.location.pathname;\n\n/**\n */\nconst getModels = (state: ReduxState) => {\n const models = [];\n\n Object.keys(state.modularui).forEach((modelKey: string) => {\n const modelEntry = state.modularui[modelKey];\n\n if (has(modelEntry, \"model\")) {\n const { key, selfhref, label, type } = modelEntry.model;\n\n const modelInfo = {\n key,\n selfhref,\n label,\n type,\n selfContentLink: null,\n };\n\n if (\n modelEntry.model instanceof ContentModel ||\n modelEntry.model instanceof ContentTOCModel\n ) {\n models.push({\n ...modelInfo,\n selfContentLink: modelEntry.model.selfContentLink,\n });\n } else {\n models.push(modelInfo);\n }\n }\n });\n\n return models;\n};\n\nexport const getActiveModels: (state: ReduxState) => Array<{\n key: string,\n href: Href,\n label: string,\n type: string,\n}> = createSelectorCreator(\n defaultMemoize,\n (value, other) => JSON.stringify(value) === JSON.stringify(other),\n)([getLocation, getModels], (location, models) => {\n const contextModels = [];\n\n if (location) {\n const locationParts = location.split(\"/\");\n\n locationParts.reduce((accumulator, current) => {\n const path = `${accumulator}/${current}`;\n\n // Remove modelcatalog part to match breadcrumb parts\n const comparePath = decodeURIComponent(path).replace(\n \"/modelcatalog/\",\n \"/\",\n );\n\n const foundEntry = models.find(\n (model) => model.selfhref && model.selfhref.equals(comparePath),\n );\n\n if (foundEntry) {\n const { key, label, type, selfhref, selfContentLink } = foundEntry;\n\n const href =\n path.startsWith(\"/modelcatalog/\") && selfContentLink\n ? new Href(`/modelcatalog${selfContentLink.encodedHref.toString()}`)\n : selfhref;\n\n contextModels.push({ key, href, label, type });\n }\n\n return path;\n });\n }\n\n return contextModels;\n});\n\n/**\n */\nexport const getPreference = (\n state: ReduxState,\n preferenceName: string,\n): null | PreferenceValue => {\n if (state && state.preferences) {\n return state.preferences[preferenceName];\n }\n\n return null;\n};\n\n/**\n * @deprecated - Use getFirstModelByInstance or the appropriate getter for the model type: getApplication, getTab, etc\n */\nexport const getModelsByType = (\n state: ReduxState,\n type: string,\n): Array<ModularUIModel> => {\n if (state && state.modularui) {\n return Object.keys(state.modularui)\n .filter(\n (key) =>\n state.modularui[key] &&\n state.modularui[key].model &&\n state.modularui[key].model.type === type,\n )\n .map((key) => state.modularui[key].model);\n }\n\n return [];\n};\n\n/**\n */\nexport const getAllFinishedModels: (\n state: ReduxState,\n) => Array<ModularUIModel> = createSelector(\n (state: ReduxState) => state.modularui,\n (modularui): Array<ModularUIModel> => {\n if (modularui) {\n return Object.keys(modularui)\n .filter(\n (key) =>\n modularui[key] &&\n modularui[key].status === MODULARUI_STATUS.FINISHED,\n )\n .map((key) => modularui[key].model);\n }\n return [];\n },\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"withModularUI.js","names":["_reactRedux","require","_reselect","_ModularUIRequest","_interopRequireDefault","_ProgressIndicator","_Error","_i18n","_ModularUIActions","modularui","createSelector","getLocale","localeCode","href","options","modularuiRequest","ModularUIRequest","locale","mapStateToProps","state","i18n","mapDispatchToProps","startProgress","finishProgress","reloadModel","handleError","withModularui","connect","_default","exports","default"],"sources":["../../../src/redux/_modularui/withModularUI.js"],"sourcesContent":["// @flow\nimport { connect } from \"react-redux\";\n\nimport { createSelector } from \"reselect\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport { handleError } from \"../actions/Error\";\n\nimport { getLocale } from \"../selectors/i18n\";\n\nimport { reloadModel } from \"./ModularUIActions\";\n\nimport type {\n ReduxState,\n StartProgressAction,\n FinishProgressAction,\n ThunkAction,\n} from \"../types\";\nimport type Href from \"../../models/href/Href\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type FetchException from \"../../exceptions/FetchException\";\nimport type { ComponentType } from \"react\";\nimport type { RequestModularUIOptions } from \"../../utils/fetch/types\";\n\ntype StateProps = {\n modularui: (href: Href, options: any) => ModularUIRequest,\n locale: string,\n};\n\ntype DispatchProps = {\n startProgress: () => StartProgressAction,\n finishProgress: () => FinishProgressAction,\n reloadModel: (\n model: ModularUIModel,\n options?: RequestModularUIOptions,\n ) => ThunkAction,\n handleError: (error: Error | FetchException) => ThunkAction,\n};\n\ntype Props = {\n ...StateProps,\n ...DispatchProps,\n};\n\nconst modularui = createSelector(\n [getLocale],\n (localeCode) =>\n (href, options = {}) => {\n const modularuiRequest = new ModularUIRequest(href, options);\n modularuiRequest.locale = localeCode;\n return modularuiRequest;\n },\n);\n\n/**\n */\nconst mapStateToProps = (state: ReduxState): StateProps => ({\n modularui: modularui(state),\n locale: state.i18n.locale,\n});\n\nconst mapDispatchToProps: DispatchProps = {\n startProgress,\n finishProgress,\n reloadModel,\n handleError,\n};\n\n/**\n * Injects the modular ui service and the progress start and finish actions\n * This can be used to request modular ui services inside react view components\n */\nconst withModularui: ComponentType<any> = connect<\n Props,\n {},\n StateProps,\n _,\n _,\n _,\n>(mapStateToProps, mapDispatchToProps);\n\nexport default withModularui;\n"],"mappings":";;;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,kBAAA,GAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AAEA,IAAAM,KAAA,GAAAN,OAAA;AAEA,IAAAO,iBAAA,GAAAP,OAAA;AAkCA,MAAMQ,SAAS,GAAG,IAAAC,wBAAc,EAC9B,CAACC,eAAS,CAAC,EACVC,UAAU,IACT,CAACC,IAAI,EAAEC,OAAO,GAAG,CAAC,CAAC,KAAK;EACtB,MAAMC,gBAAgB,GAAG,IAAIC,yBAAgB,CAACH,IAAI,EAAEC,OAAO,CAAC;EAC5DC,gBAAgB,CAACE,MAAM,GAAGL,UAAU;EACpC,OAAOG,gBAAgB;AACzB,CACJ,CAAC;;AAED;AACA;AACA,MAAMG,eAAe,GAAIC,KAAiB,KAAkB;EAC1DV,SAAS,EAAEA,SAAS,CAACU,KAAK,CAAC;EAC3BF,MAAM,EAAEE,KAAK,CAACC,IAAI,CAACH;AACrB,CAAC,CAAC;AAEF,MAAMI,kBAAiC,GAAG;EACxCC,aAAa,EAAbA,gCAAa;EACbC,cAAc,EAAdA,iCAAc;EACdC,WAAW,EAAXA,6BAAW;EACXC,WAAW,EAAXA;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMC,aAAiC,GAAG,IAAAC,mBAAO,EAO/CT,eAAe,EAAEG,kBAAkB,CAAC;AAAC,IAAAO,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAExBJ,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"withModularUI.js","names":["_reactRedux","require","_reselect","_ModularUIRequest","_interopRequireDefault","_ProgressIndicator","_Error","_i18n","_ModularUIActions","modularui","createSelector","getLocale","localeCode","href","options","modularuiRequest","ModularUIRequest","locale","mapStateToProps","state","i18n","mapDispatchToProps","startProgress","finishProgress","reloadModel","handleError","withModularui","connect","_default","exports","default"],"sources":["../../../src/redux/_modularui/withModularUI.js"],"sourcesContent":["// @flow\nimport { connect } from \"react-redux\";\n\nimport { createSelector } from \"reselect\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport { handleError } from \"../actions/Error\";\n\nimport { getLocale } from \"../selectors/i18n\";\n\nimport { reloadModel } from \"./ModularUIActions\";\n\nimport type {\n ReduxState,\n StartProgressAction,\n FinishProgressAction,\n ThunkAction,\n} from \"../types\";\nimport type Href from \"../../models/href/Href\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type FetchException from \"../../exceptions/FetchException\";\nimport type { ComponentType } from \"react\";\nimport type { RequestModularUIOptions } from \"../../utils/fetch/types\";\n\ntype StateProps = {\n modularui: (href: Href, options: any) => ModularUIRequest,\n locale: string,\n};\n\ntype DispatchProps = {\n startProgress: () => StartProgressAction,\n finishProgress: () => FinishProgressAction,\n reloadModel: (\n model: ModularUIModel,\n options?: RequestModularUIOptions,\n ) => ThunkAction<>,\n handleError: (error: Error | FetchException) => ThunkAction<>,\n};\n\ntype Props = {\n ...StateProps,\n ...DispatchProps,\n};\n\nconst modularui = createSelector(\n [getLocale],\n (localeCode) =>\n (href, options = {}) => {\n const modularuiRequest = new ModularUIRequest(href, options);\n modularuiRequest.locale = localeCode;\n return modularuiRequest;\n },\n);\n\n/**\n */\nconst mapStateToProps = (state: ReduxState): StateProps => ({\n modularui: modularui(state),\n locale: state.i18n.locale,\n});\n\nconst mapDispatchToProps: DispatchProps = {\n startProgress,\n finishProgress,\n reloadModel,\n handleError,\n};\n\n/**\n * Injects the modular ui service and the progress start and finish actions\n * This can be used to request modular ui services inside react view components\n */\nconst withModularui: ComponentType<any> = connect<\n Props,\n {},\n StateProps,\n _,\n _,\n _,\n>(mapStateToProps, mapDispatchToProps);\n\nexport default withModularui;\n"],"mappings":";;;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,kBAAA,GAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AAEA,IAAAM,KAAA,GAAAN,OAAA;AAEA,IAAAO,iBAAA,GAAAP,OAAA;AAkCA,MAAMQ,SAAS,GAAG,IAAAC,wBAAc,EAC9B,CAACC,eAAS,CAAC,EACVC,UAAU,IACT,CAACC,IAAI,EAAEC,OAAO,GAAG,CAAC,CAAC,KAAK;EACtB,MAAMC,gBAAgB,GAAG,IAAIC,yBAAgB,CAACH,IAAI,EAAEC,OAAO,CAAC;EAC5DC,gBAAgB,CAACE,MAAM,GAAGL,UAAU;EACpC,OAAOG,gBAAgB;AACzB,CACJ,CAAC;;AAED;AACA;AACA,MAAMG,eAAe,GAAIC,KAAiB,KAAkB;EAC1DV,SAAS,EAAEA,SAAS,CAACU,KAAK,CAAC;EAC3BF,MAAM,EAAEE,KAAK,CAACC,IAAI,CAACH;AACrB,CAAC,CAAC;AAEF,MAAMI,kBAAiC,GAAG;EACxCC,aAAa,EAAbA,gCAAa;EACbC,cAAc,EAAdA,iCAAc;EACdC,WAAW,EAAXA,6BAAW;EACXC,WAAW,EAAXA;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMC,aAAiC,GAAG,IAAAC,mBAAO,EAO/CT,eAAe,EAAEG,kBAAkB,CAAC;AAAC,IAAAO,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAExBJ,aAAa","ignoreList":[]}
@@ -1,16 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.reloadApplication = exports.noAction = void 0;
8
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
7
9
  var _ModularUIActions = require("../_modularui/ModularUIActions");
8
10
  var _ModularUISelectors = require("../_modularui/ModularUISelectors");
9
11
  var _models = require("../../models");
10
12
  var _i18n = require("../selectors/i18n");
11
13
  /**
12
14
  */
13
- const reloadApplication = () => (dispatch, getState) => {
15
+ const reloadApplication = () => async (dispatch, getState, {
16
+ subscribe
17
+ }) => {
14
18
  const state = getState();
15
19
  let applicationHref = new _models.Href("/", "Application");
16
20
  const application = (0, _ModularUISelectors.getApplication)(state);
@@ -18,14 +22,39 @@ const reloadApplication = () => (dispatch, getState) => {
18
22
  applicationHref.contextPath = application.contextPath;
19
23
  applicationHref.origin = application.origin;
20
24
  }
25
+ const modelKey = `application(/)(${(0, _i18n.getLocale)(state)})`;
21
26
  const allKeys = (0, _ModularUISelectors.allKeysByHref)(state, applicationHref);
22
27
  for (const key of allKeys) {
23
- dispatch((0, _ModularUIActions.removeModelByKey)(key));
28
+ if (key !== modelKey) {
29
+ // only remove applications we're not reloading (e.g. different locale)
30
+ dispatch((0, _ModularUIActions.removeModelByKey)(key));
31
+ }
24
32
  }
25
- const modelKey = `application(/)(${(0, _i18n.getLocale)(state)})`;
26
- return dispatch((0, _ModularUIActions.loadModularUI)(modelKey, applicationHref, {
33
+ dispatch((0, _ModularUIActions.loadModularUI)(modelKey, applicationHref, {
27
34
  targetModel: _models.ApplicationModel
28
35
  }));
36
+ return new _promise.default((resolve, reject) => {
37
+ const unsubscribe = subscribe(() => {
38
+ const entry = getState().modularui?.[modelKey];
39
+ if (entry?.status === "FINISHED") {
40
+ unsubscribe();
41
+ if (entry.model instanceof _models.ApplicationModel) {
42
+ resolve(entry.model);
43
+ } else {
44
+ reject(new Error("Loaded model was not an ApplicationModel"));
45
+ }
46
+ } else if (entry?.status === "ERROR") {
47
+ unsubscribe();
48
+ reject(new Error("Application reload failed."));
49
+ }
50
+ });
51
+
52
+ // Safety timeout so the login screen doesn't hang forever if the API fails silently
53
+ setTimeout(() => {
54
+ unsubscribe();
55
+ reject(new Error("Timeout waiting for application reload."));
56
+ }, 15000);
57
+ });
29
58
  };
30
59
 
31
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Application.js","names":["_ModularUIActions","require","_ModularUISelectors","_models","_i18n","reloadApplication","dispatch","getState","state","applicationHref","Href","application","getApplication","contextPath","origin","allKeys","allKeysByHref","key","removeModelByKey","modelKey","getLocale","loadModularUI","targetModel","ApplicationModel","exports","noAction","type"],"sources":["../../../src/redux/actions/Application.js"],"sourcesContent":["// @flow\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../_modularui/ModularUIActions\";\nimport {\n allKeysByHref,\n getApplication,\n} from \"../_modularui/ModularUISelectors\";\nimport { ApplicationModel, Href } from \"../../models\";\nimport { getLocale } from \"../selectors/i18n\";\n\nimport type { Dispatch, GetState, ThunkAction, NoAction } from \"../types\";\n\n/**\n */\nexport const reloadApplication =\n (): ThunkAction => (dispatch: Dispatch, getState: GetState) => {\n const state = getState();\n\n let applicationHref = new Href(\"/\", \"Application\");\n const application = getApplication(state);\n if (application) {\n applicationHref.contextPath = application.contextPath;\n applicationHref.origin = application.origin;\n }\n\n const allKeys = allKeysByHref(state, applicationHref);\n for (const key of allKeys) {\n dispatch(removeModelByKey(key));\n }\n\n const modelKey = `application(/)(${getLocale(state)})`;\n return dispatch(\n loadModularUI(modelKey, applicationHref, {\n targetModel: ApplicationModel,\n }),\n );\n };\n\n/**\n */\nexport const noAction = (): NoAction => ({\n type: \"NO_ACTION\",\n});\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAIA,IAAAC,mBAAA,GAAAD,OAAA;AAIA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAIA;AACA;AACO,MAAMI,iBAAiB,GAC5BA,CAAA,KAAmB,CAACC,QAAkB,EAAEC,QAAkB,KAAK;EAC7D,MAAMC,KAAK,GAAGD,QAAQ,CAAC,CAAC;EAExB,IAAIE,eAAe,GAAG,IAAIC,YAAI,CAAC,GAAG,EAAE,aAAa,CAAC;EAClD,MAAMC,WAAW,GAAG,IAAAC,kCAAc,EAACJ,KAAK,CAAC;EACzC,IAAIG,WAAW,EAAE;IACfF,eAAe,CAACI,WAAW,GAAGF,WAAW,CAACE,WAAW;IACrDJ,eAAe,CAACK,MAAM,GAAGH,WAAW,CAACG,MAAM;EAC7C;EAEA,MAAMC,OAAO,GAAG,IAAAC,iCAAa,EAACR,KAAK,EAAEC,eAAe,CAAC;EACrD,KAAK,MAAMQ,GAAG,IAAIF,OAAO,EAAE;IACzBT,QAAQ,CAAC,IAAAY,kCAAgB,EAACD,GAAG,CAAC,CAAC;EACjC;EAEA,MAAME,QAAQ,GAAG,kBAAkB,IAAAC,eAAS,EAACZ,KAAK,CAAC,GAAG;EACtD,OAAOF,QAAQ,CACb,IAAAe,+BAAa,EAACF,QAAQ,EAAEV,eAAe,EAAE;IACvCa,WAAW,EAAEC;EACf,CAAC,CACH,CAAC;AACH,CAAC;;AAEH;AACA;AADAC,OAAA,CAAAnB,iBAAA,GAAAA,iBAAA;AAEO,MAAMoB,QAAQ,GAAGA,CAAA,MAAiB;EACvCC,IAAI,EAAE;AACR,CAAC,CAAC;AAACF,OAAA,CAAAC,QAAA,GAAAA,QAAA","ignoreList":[]}
1
+ {"version":3,"file":"Application.js","names":["_ModularUIActions","require","_ModularUISelectors","_models","_i18n","reloadApplication","dispatch","getState","subscribe","state","applicationHref","Href","application","getApplication","contextPath","origin","modelKey","getLocale","allKeys","allKeysByHref","key","removeModelByKey","loadModularUI","targetModel","ApplicationModel","_promise","default","resolve","reject","unsubscribe","entry","modularui","status","model","Error","setTimeout","exports","noAction","type"],"sources":["../../../src/redux/actions/Application.js"],"sourcesContent":["// @flow\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../_modularui/ModularUIActions\";\nimport {\n allKeysByHref,\n getApplication,\n} from \"../_modularui/ModularUISelectors\";\nimport { ApplicationModel, Href } from \"../../models\";\nimport { getLocale } from \"../selectors/i18n\";\n\nimport type { ThunkAction, NoAction } from \"../types\";\n\n/**\n */\nexport const reloadApplication =\n (): ThunkAction<Promise<ApplicationModel>> =>\n async (dispatch, getState, { subscribe }) => {\n const state = getState();\n\n let applicationHref = new Href(\"/\", \"Application\");\n const application = getApplication(state);\n if (application) {\n applicationHref.contextPath = application.contextPath;\n applicationHref.origin = application.origin;\n }\n\n const modelKey = `application(/)(${getLocale(state)})`;\n const allKeys = allKeysByHref(state, applicationHref);\n\n for (const key of allKeys) {\n if (key !== modelKey) {\n // only remove applications we're not reloading (e.g. different locale)\n dispatch(removeModelByKey(key));\n }\n }\n\n dispatch(\n loadModularUI(modelKey, applicationHref, {\n targetModel: ApplicationModel,\n }),\n );\n\n return new Promise((resolve, reject) => {\n const unsubscribe = subscribe(() => {\n const entry = getState().modularui?.[modelKey];\n\n if (entry?.status === \"FINISHED\") {\n unsubscribe();\n if (entry.model instanceof ApplicationModel) {\n resolve(entry.model);\n } else {\n reject(new Error(\"Loaded model was not an ApplicationModel\"));\n }\n } else if (entry?.status === \"ERROR\") {\n unsubscribe();\n reject(new Error(\"Application reload failed.\"));\n }\n });\n\n // Safety timeout so the login screen doesn't hang forever if the API fails silently\n setTimeout(() => {\n unsubscribe();\n reject(new Error(\"Timeout waiting for application reload.\"));\n }, 15000);\n });\n };\n\n/**\n */\nexport const noAction = (): NoAction => ({\n type: \"NO_ACTION\",\n});\n"],"mappings":";;;;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAIA,IAAAC,mBAAA,GAAAD,OAAA;AAIA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAIA;AACA;AACO,MAAMI,iBAAiB,GAC5BA,CAAA,KACA,OAAOC,QAAQ,EAAEC,QAAQ,EAAE;EAAEC;AAAU,CAAC,KAAK;EAC3C,MAAMC,KAAK,GAAGF,QAAQ,CAAC,CAAC;EAExB,IAAIG,eAAe,GAAG,IAAIC,YAAI,CAAC,GAAG,EAAE,aAAa,CAAC;EAClD,MAAMC,WAAW,GAAG,IAAAC,kCAAc,EAACJ,KAAK,CAAC;EACzC,IAAIG,WAAW,EAAE;IACfF,eAAe,CAACI,WAAW,GAAGF,WAAW,CAACE,WAAW;IACrDJ,eAAe,CAACK,MAAM,GAAGH,WAAW,CAACG,MAAM;EAC7C;EAEA,MAAMC,QAAQ,GAAG,kBAAkB,IAAAC,eAAS,EAACR,KAAK,CAAC,GAAG;EACtD,MAAMS,OAAO,GAAG,IAAAC,iCAAa,EAACV,KAAK,EAAEC,eAAe,CAAC;EAErD,KAAK,MAAMU,GAAG,IAAIF,OAAO,EAAE;IACzB,IAAIE,GAAG,KAAKJ,QAAQ,EAAE;MACpB;MACAV,QAAQ,CAAC,IAAAe,kCAAgB,EAACD,GAAG,CAAC,CAAC;IACjC;EACF;EAEAd,QAAQ,CACN,IAAAgB,+BAAa,EAACN,QAAQ,EAAEN,eAAe,EAAE;IACvCa,WAAW,EAAEC;EACf,CAAC,CACH,CAAC;EAED,OAAO,IAAAC,QAAA,CAAAC,OAAA,CAAY,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtC,MAAMC,WAAW,GAAGrB,SAAS,CAAC,MAAM;MAClC,MAAMsB,KAAK,GAAGvB,QAAQ,CAAC,CAAC,CAACwB,SAAS,GAAGf,QAAQ,CAAC;MAE9C,IAAIc,KAAK,EAAEE,MAAM,KAAK,UAAU,EAAE;QAChCH,WAAW,CAAC,CAAC;QACb,IAAIC,KAAK,CAACG,KAAK,YAAYT,wBAAgB,EAAE;UAC3CG,OAAO,CAACG,KAAK,CAACG,KAAK,CAAC;QACtB,CAAC,MAAM;UACLL,MAAM,CAAC,IAAIM,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC/D;MACF,CAAC,MAAM,IAAIJ,KAAK,EAAEE,MAAM,KAAK,OAAO,EAAE;QACpCH,WAAW,CAAC,CAAC;QACbD,MAAM,CAAC,IAAIM,KAAK,CAAC,4BAA4B,CAAC,CAAC;MACjD;IACF,CAAC,CAAC;;IAEF;IACAC,UAAU,CAAC,MAAM;MACfN,WAAW,CAAC,CAAC;MACbD,MAAM,CAAC,IAAIM,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC9D,CAAC,EAAE,KAAK,CAAC;EACX,CAAC,CAAC;AACJ,CAAC;;AAEH;AACA;AADAE,OAAA,CAAA/B,iBAAA,GAAAA,iBAAA;AAEO,MAAMgC,QAAQ,GAAGA,CAAA,MAAiB;EACvCC,IAAI,EAAE;AACR,CAAC,CAAC;AAACF,OAAA,CAAAC,QAAA,GAAAA,QAAA","ignoreList":[]}