@beinformed/ui 1.18.3 → 1.18.6

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 (236) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/esm/constants/Constants.js +1 -0
  3. package/esm/constants/Constants.js.map +1 -1
  4. package/esm/constants/Settings.js +10 -3
  5. package/esm/constants/Settings.js.map +1 -1
  6. package/esm/hooks/useAuthentication.js +7 -50
  7. package/esm/hooks/useAuthentication.js.map +1 -1
  8. package/esm/i18n/Locales.js.map +1 -1
  9. package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
  10. package/esm/models/form/FormModel.js +3 -1
  11. package/esm/models/form/FormModel.js.map +1 -1
  12. package/esm/models/layouthint/LayoutHintCollection.js.map +1 -1
  13. package/esm/models/tab/TabModel.js.map +1 -1
  14. package/esm/modularui/Authenticate.js +100 -21
  15. package/esm/modularui/Authenticate.js.map +1 -1
  16. package/esm/redux/actions/Preferences.js +2 -2
  17. package/esm/redux/actions/Preferences.js.map +1 -1
  18. package/esm/redux/actions/SignOut.js +6 -2
  19. package/esm/redux/actions/SignOut.js.map +1 -1
  20. package/esm/redux/connectors/SignIn.js +3 -2
  21. package/esm/redux/connectors/SignIn.js.map +1 -1
  22. package/esm/redux/connectors/SignOut.js +4 -1
  23. package/esm/redux/connectors/SignOut.js.map +1 -1
  24. package/esm/redux/reducers/AuthReducer.js +0 -10
  25. package/esm/redux/reducers/AuthReducer.js.map +1 -1
  26. package/esm/redux/types.js.map +1 -1
  27. package/esm/utils/helpers/checkResource.js +2 -0
  28. package/esm/utils/helpers/checkResource.js.map +1 -1
  29. package/lib/constants/Constants.js +3 -1
  30. package/lib/constants/Constants.js.flow +1 -0
  31. package/lib/constants/Constants.js.map +1 -1
  32. package/lib/constants/LayoutHints.js.map +1 -1
  33. package/lib/constants/Settings.js +13 -3
  34. package/lib/constants/Settings.js.flow +8 -3
  35. package/lib/constants/Settings.js.map +1 -1
  36. package/lib/exceptions/FetchException.js.map +1 -1
  37. package/lib/hooks/__tests__/useAuthentication.spec.js.flow +15 -1
  38. package/lib/hooks/useAllFormsOnModel.js.map +1 -1
  39. package/lib/hooks/useAuthentication.js +7 -55
  40. package/lib/hooks/useAuthentication.js.flow +4 -37
  41. package/lib/hooks/useAuthentication.js.map +1 -1
  42. package/lib/hooks/useContent.js.map +1 -1
  43. package/lib/hooks/useDeepCompareEffect.js.map +1 -1
  44. package/lib/hooks/useForm.js.map +1 -1
  45. package/lib/hooks/useI18n.js.map +1 -1
  46. package/lib/hooks/useModal.js.map +1 -1
  47. package/lib/hooks/useModelCatalog.js.map +1 -1
  48. package/lib/hooks/useModels.js.map +1 -1
  49. package/lib/hooks/useModularUI.js.map +1 -1
  50. package/lib/hooks/useModularUIBasic.js.map +1 -1
  51. package/lib/hooks/useModularUIModel.js.map +1 -1
  52. package/lib/hooks/useModularUIRequest.js.map +1 -1
  53. package/lib/hooks/useNotification.js.map +1 -1
  54. package/lib/hooks/usePreference.js.map +1 -1
  55. package/lib/hooks/useProgressIndicator.js.map +1 -1
  56. package/lib/hooks/useRouter.js.map +1 -1
  57. package/lib/i18n/Locale.js.map +1 -1
  58. package/lib/i18n/Locales.js.map +1 -1
  59. package/lib/i18n/Message.js.map +1 -1
  60. package/lib/i18n/withMessage.js.map +1 -1
  61. package/lib/models/actions/ActionModel.js.map +1 -1
  62. package/lib/models/application/ApplicationModel.js.map +1 -1
  63. package/lib/models/attributes/AttributeCollection.js.map +1 -1
  64. package/lib/models/attributes/AttributeContent.js.map +1 -1
  65. package/lib/models/attributes/AttributeDataHelper.js.map +1 -1
  66. package/lib/models/attributes/AttributeModel.js.map +1 -1
  67. package/lib/models/attributes/AttributeSetModel.js.map +1 -1
  68. package/lib/models/attributes/BooleanAttributeModel.js.map +1 -1
  69. package/lib/models/attributes/ChoiceAttributeModel.js.map +1 -1
  70. package/lib/models/attributes/ChoiceAttributeOptionCollection.js.map +1 -1
  71. package/lib/models/attributes/ChoiceAttributeOptionModel.js.map +1 -1
  72. package/lib/models/attributes/CompositeAttributeChildCollection.js.map +1 -1
  73. package/lib/models/attributes/CompositeAttributeModel.js.map +1 -1
  74. package/lib/models/attributes/DatetimeAttributeModel.js.map +1 -1
  75. package/lib/models/attributes/HelptextAttributeModel.js.map +1 -1
  76. package/lib/models/attributes/MemoAttributeModel.js.map +1 -1
  77. package/lib/models/attributes/MoneyAttributeModel.js.map +1 -1
  78. package/lib/models/attributes/NumberAttributeModel.js.map +1 -1
  79. package/lib/models/attributes/StringAttributeModel.js.map +1 -1
  80. package/lib/models/attributes/XMLAttributeModel.js.map +1 -1
  81. package/lib/models/attributes/_createAttribute.js.map +1 -1
  82. package/lib/models/attributes/input-constraints/ConstraintCollection.js.map +1 -1
  83. package/lib/models/attributes/input-constraints/ConstraintModel.js.map +1 -1
  84. package/lib/models/attributes/input-constraints/DateTimeDateFormatConstraint.js.map +1 -1
  85. package/lib/models/attributes/input-constraints/DateTimeTimeFormatConstraint.js.map +1 -1
  86. package/lib/models/attributes/input-constraints/FileSizeConstraint.js.map +1 -1
  87. package/lib/models/attributes/input-constraints/IBANConstraint.js.map +1 -1
  88. package/lib/models/attributes/input-constraints/NumberBoundaryConstraint.js.map +1 -1
  89. package/lib/models/attributes/input-constraints/NumberFormatConstraint.js.map +1 -1
  90. package/lib/models/base/BaseCollection.js.map +1 -1
  91. package/lib/models/base/BaseModel.js.map +1 -1
  92. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  93. package/lib/models/concepts/BusinessScenarioModel.js.map +1 -1
  94. package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
  95. package/lib/models/concepts/ConceptLinkModel.js.map +1 -1
  96. package/lib/models/concepts/SourceReferenceModel.js.map +1 -1
  97. package/lib/models/content/ContentLinkModel.js.map +1 -1
  98. package/lib/models/content/ContentTOCModel.js.map +1 -1
  99. package/lib/models/content/SectionModel.js.map +1 -1
  100. package/lib/models/content/SubSectionModel.js.map +1 -1
  101. package/lib/models/contentconfiguration/ContentConfigurationResults.js.map +1 -1
  102. package/lib/models/detail/DetailModel.js.map +1 -1
  103. package/lib/models/filters/BaseFilterModel.js.map +1 -1
  104. package/lib/models/form/FormModel.js +3 -1
  105. package/lib/models/form/FormModel.js.flow +1 -1
  106. package/lib/models/form/FormModel.js.map +1 -1
  107. package/lib/models/form/FormObjectModel.js.map +1 -1
  108. package/lib/models/href/Href.js.map +1 -1
  109. package/lib/models/layouthint/LayoutHintCollection.js.map +1 -1
  110. package/lib/models/links/LinkCollection.js.map +1 -1
  111. package/lib/models/links/LinkModel.js.map +1 -1
  112. package/lib/models/list/ListDetailModel.js.map +1 -1
  113. package/lib/models/list/ListHeaderModel.js.map +1 -1
  114. package/lib/models/list/ListItemCollection.js.map +1 -1
  115. package/lib/models/list/ListModel.js.map +1 -1
  116. package/lib/models/lookup/LookupOptionsModel.js.map +1 -1
  117. package/lib/models/paging/PagingModel.js.map +1 -1
  118. package/lib/models/panels/GroupingPanelModel.js.map +1 -1
  119. package/lib/models/parameter/Parameter.js.map +1 -1
  120. package/lib/models/process/ProcessStatusSettingsModel.js.map +1 -1
  121. package/lib/models/resolveModel.js.map +1 -1
  122. package/lib/models/sorting/SortingModel.js.map +1 -1
  123. package/lib/models/tab/TabModel.js.map +1 -1
  124. package/lib/models/user/UserProfileModel.js.map +1 -1
  125. package/lib/models/user/UserServicesModel.js.map +1 -1
  126. package/lib/modularui/Authenticate.js +102 -21
  127. package/lib/modularui/Authenticate.js.flow +75 -20
  128. package/lib/modularui/Authenticate.js.map +1 -1
  129. package/lib/modularui/ModularUIRequest.js.map +1 -1
  130. package/lib/modularui/ModularUIResponse.js.map +1 -1
  131. package/lib/react/ErrorBoundaryFallback.js.map +1 -1
  132. package/lib/react-client/client.js.map +1 -1
  133. package/lib/react-client/rehydrate.js.map +1 -1
  134. package/lib/react-server/__tests__/serverUtil.spec.js.flow +6 -4
  135. package/lib/react-server/createSSRComplete.js.map +1 -1
  136. package/lib/react-server/renderSSRComplete.js.map +1 -1
  137. package/lib/react-server/renderSSRMinimal.js.map +1 -1
  138. package/lib/react-server/serverNoSSR.js.map +1 -1
  139. package/lib/react-server/serverSSR.js.map +1 -1
  140. package/lib/react-server/serverUtil.js.map +1 -1
  141. package/lib/react-theme/ThemeProvider.js.map +1 -1
  142. package/lib/react-theme/createTheme.js.map +1 -1
  143. package/lib/react-theme/useTheme.js.map +1 -1
  144. package/lib/react-theme/utils/background.js.map +1 -1
  145. package/lib/react-theme/utils/colors.js.map +1 -1
  146. package/lib/react-theme/utils/contrast.js.map +1 -1
  147. package/lib/react-theme/utils/corners.js.map +1 -1
  148. package/lib/react-theme/utils/spacers.js.map +1 -1
  149. package/lib/react-theme/utils/themeProps.js.map +1 -1
  150. package/lib/redux/_i18n/actions.js.map +1 -1
  151. package/lib/redux/_i18n/reducer.js.map +1 -1
  152. package/lib/redux/_modularui/actions.js.map +1 -1
  153. package/lib/redux/_modularui/connector.js.map +1 -1
  154. package/lib/redux/_modularui/middleware.js.map +1 -1
  155. package/lib/redux/_modularui/modularuiUtils.js.map +1 -1
  156. package/lib/redux/_modularui/reducer.js.map +1 -1
  157. package/lib/redux/_modularui/selectors.js.map +1 -1
  158. package/lib/redux/_modularui/withModularUI.js.map +1 -1
  159. package/lib/redux/_router/connectors.js.map +1 -1
  160. package/lib/redux/actions/Application.js.map +1 -1
  161. package/lib/redux/actions/Authorization.js.map +1 -1
  162. package/lib/redux/actions/Error.js.map +1 -1
  163. package/lib/redux/actions/Form.js.map +1 -1
  164. package/lib/redux/actions/FormAttributeSet.js.map +1 -1
  165. package/lib/redux/actions/FormAttributeSetRepeatable.js.map +1 -1
  166. package/lib/redux/actions/FormAutosave.js.map +1 -1
  167. package/lib/redux/actions/FormAutosubmit.js.map +1 -1
  168. package/lib/redux/actions/FormValidations.js.map +1 -1
  169. package/lib/redux/actions/Notification.js.map +1 -1
  170. package/lib/redux/actions/Preferences.js +1 -1
  171. package/lib/redux/actions/Preferences.js.flow +7 -3
  172. package/lib/redux/actions/Preferences.js.map +1 -1
  173. package/lib/redux/actions/SignIn.js.map +1 -1
  174. package/lib/redux/actions/SignOut.js +6 -1
  175. package/lib/redux/actions/SignOut.js.flow +9 -5
  176. package/lib/redux/actions/SignOut.js.map +1 -1
  177. package/lib/redux/connectors/Application.js.map +1 -1
  178. package/lib/redux/connectors/Breadcrumb.js.map +1 -1
  179. package/lib/redux/connectors/CaseView.js.map +1 -1
  180. package/lib/redux/connectors/ConceptDetail.js.map +1 -1
  181. package/lib/redux/connectors/ContentBrowser.js.map +1 -1
  182. package/lib/redux/connectors/ContentDetail.js.map +1 -1
  183. package/lib/redux/connectors/ContentDetailSection.js.map +1 -1
  184. package/lib/redux/connectors/Form.js.map +1 -1
  185. package/lib/redux/connectors/FormAttributeSet.js.map +1 -1
  186. package/lib/redux/connectors/ListDetail.js.map +1 -1
  187. package/lib/redux/connectors/Modal.js.map +1 -1
  188. package/lib/redux/connectors/ModelCatalog.js.map +1 -1
  189. package/lib/redux/connectors/Notification.js.map +1 -1
  190. package/lib/redux/connectors/PanelRenderer.js.map +1 -1
  191. package/lib/redux/connectors/Preferences.js.map +1 -1
  192. package/lib/redux/connectors/Progress.js.map +1 -1
  193. package/lib/redux/connectors/ProgressIndicator.js.map +1 -1
  194. package/lib/redux/connectors/QuickSearch.js.map +1 -1
  195. package/lib/redux/connectors/SignIn.js +3 -5
  196. package/lib/redux/connectors/SignIn.js.flow +1 -6
  197. package/lib/redux/connectors/SignIn.js.map +1 -1
  198. package/lib/redux/connectors/SignOut.js +5 -1
  199. package/lib/redux/connectors/SignOut.js.flow +2 -1
  200. package/lib/redux/connectors/SignOut.js.map +1 -1
  201. package/lib/redux/connectors/Tab.js.map +1 -1
  202. package/lib/redux/reducers/AuthReducer.js +0 -11
  203. package/lib/redux/reducers/AuthReducer.js.flow +0 -11
  204. package/lib/redux/reducers/AuthReducer.js.map +1 -1
  205. package/lib/redux/reducers/__tests__/AuthReducer.spec.js.flow +0 -9
  206. package/lib/redux/store/configureStore.js.map +1 -1
  207. package/lib/redux/types.js.flow +0 -1
  208. package/lib/redux/types.js.map +1 -1
  209. package/lib/utils/browser/Cookies.js.map +1 -1
  210. package/lib/utils/datetime/DateTimeUtil.js.map +1 -1
  211. package/lib/utils/fetch/universalFetch.js.map +1 -1
  212. package/lib/utils/fetch/xhr.js.map +1 -1
  213. package/lib/utils/helpers/checkResource.js +2 -0
  214. package/lib/utils/helpers/checkResource.js.flow +3 -0
  215. package/lib/utils/helpers/checkResource.js.map +1 -1
  216. package/lib/utils/helpers/objects.js.map +1 -1
  217. package/lib/utils/helpers/sanitizeHtml.js.map +1 -1
  218. package/lib/utils/helpers/text.js.map +1 -1
  219. package/lib/utils/number/formatValue.js.map +1 -1
  220. package/lib/utils/number/parseNumbers.js.map +1 -1
  221. package/package.json +22 -22
  222. package/src/constants/Constants.js +1 -0
  223. package/src/constants/Settings.js +8 -3
  224. package/src/hooks/__tests__/useAuthentication.spec.js +15 -1
  225. package/src/hooks/useAuthentication.js +4 -37
  226. package/src/models/form/FormModel.js +1 -1
  227. package/src/modularui/Authenticate.js +75 -20
  228. package/src/react-server/__tests__/serverUtil.spec.js +6 -4
  229. package/src/redux/actions/Preferences.js +7 -3
  230. package/src/redux/actions/SignOut.js +9 -5
  231. package/src/redux/connectors/SignIn.js +1 -6
  232. package/src/redux/connectors/SignOut.js +2 -1
  233. package/src/redux/reducers/AuthReducer.js +0 -11
  234. package/src/redux/reducers/__tests__/AuthReducer.spec.js +0 -9
  235. package/src/redux/types.js +0 -1
  236. package/src/utils/helpers/checkResource.js +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"modularuiUtils.js","names":["getUrl","resource","props","url","Href","toString","useUrl","previousUrl","setPreviousUrl","previousExact","setPreviousExact","match","isDifferentUrl","hasDifferentStartUriPart","isExact","getKey","WrappedComponent","name","split","useReload","modelEntry","reload","isFullyLoaded","status","MODULARUI_STATUS","FINISHED","lastModification"],"sources":["../../../src/redux/_modularui/modularuiUtils.js"],"sourcesContent":["// @flow\nimport { useState } from \"react\";\n\nimport { getDisplayName } from \"../../react/utils\";\nimport { MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\n\nimport type { ComponentType } from \"react\";\n\n/**\n * Generate modular ui url\n */\nconst getUrl = (resource: string | Function, props: Object) => {\n const url = typeof resource === \"function\" ? resource(props) : resource;\n\n if (url instanceof Href) {\n return url.toString();\n }\n\n return url || \"\";\n};\n\n/**\n */\nexport const useUrl = (resource: string | Function, props: Object): string => {\n const [previousUrl, setPreviousUrl] = useState(\"\");\n const [previousExact, setPreviousExact] = useState(false);\n\n const url = getUrl(resource, props);\n\n const { match } = props;\n\n // when match is not available through props,\n // this is a direct call to the modular ui hoc, not using a route\n if (!match) {\n return url;\n }\n\n const isDifferentUrl = url !== previousUrl;\n if (!isDifferentUrl) {\n return previousUrl;\n }\n\n const hasDifferentStartUriPart =\n previousUrl !== \"\" && !previousUrl.startsWith(match.url);\n\n // Always create an url when the match is exact\n // Or when the match is not exact AND the original match also was not exact\n // Or when the new start uri is different from the previous url\n if (\n match.isExact === true ||\n previousExact === match.isExact ||\n hasDifferentStartUriPart\n ) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n\n return url;\n }\n\n return previousUrl;\n};\n\n/**\n * Create key for modularui request based on component name and requested url\n */\nexport const getKey = (\n WrappedComponent: ComponentType<any>,\n name: string,\n url: string\n): string => {\n if (url) {\n return `${getDisplayName(WrappedComponent, name)}(${url.split(\"?\")[0]})`;\n }\n\n return getDisplayName(WrappedComponent, name);\n};\n\n/**\n * Check if the model corresponding to a modular ui service should be reloaded\n */\nexport const useReload = (modelEntry: Object, reload: number = 0): boolean => {\n if (reload > 0) {\n const isFullyLoaded = modelEntry?.status === MODULARUI_STATUS.FINISHED;\n const lastModification = modelEntry?.lastModification ?? 0;\n\n if (isFullyLoaded && lastModification < reload) {\n return true;\n }\n }\n\n return false;\n};\n"],"mappings":";;;;;;;;;;;;;;;AACA;;AAEA;;AACA;;AACA;;AAIA;AACA;AACA;AACA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,QAAD,EAA8BC,KAA9B,EAAgD;EAC7D,IAAMC,GAAG,GAAG,OAAOF,QAAP,KAAoB,UAApB,GAAiCA,QAAQ,CAACC,KAAD,CAAzC,GAAmDD,QAA/D;;EAEA,IAAIE,GAAG,YAAYC,aAAnB,EAAyB;IACvB,OAAOD,GAAG,CAACE,QAAJ,EAAP;EACD;;EAED,OAAOF,GAAG,IAAI,EAAd;AACD,CARD;AAUA;AACA;;;AACO,IAAMG,MAAM,GAAG,SAATA,MAAS,CAACL,QAAD,EAA8BC,KAA9B,EAAwD;EAC5E,gBAAsC,qBAAS,EAAT,CAAtC;EAAA;EAAA,IAAOK,WAAP;EAAA,IAAoBC,cAApB;;EACA,iBAA0C,qBAAS,KAAT,CAA1C;EAAA;EAAA,IAAOC,aAAP;EAAA,IAAsBC,gBAAtB;;EAEA,IAAMP,GAAG,GAAGH,MAAM,CAACC,QAAD,EAAWC,KAAX,CAAlB;EAEA,IAAQS,KAAR,GAAkBT,KAAlB,CAAQS,KAAR,CAN4E,CAQ5E;EACA;;EACA,IAAI,CAACA,KAAL,EAAY;IACV,OAAOR,GAAP;EACD;;EAED,IAAMS,cAAc,GAAGT,GAAG,KAAKI,WAA/B;;EACA,IAAI,CAACK,cAAL,EAAqB;IACnB,OAAOL,WAAP;EACD;;EAED,IAAMM,wBAAwB,GAC5BN,WAAW,KAAK,EAAhB,IAAsB,CAAC,yBAAAA,WAAW,MAAX,CAAAA,WAAW,EAAYI,KAAK,CAACR,GAAlB,CADpC,CAnB4E,CAsB5E;EACA;EACA;;EACA,IACEQ,KAAK,CAACG,OAAN,KAAkB,IAAlB,IACAL,aAAa,KAAKE,KAAK,CAACG,OADxB,IAEAD,wBAHF,EAIE;IACAL,cAAc,CAACL,GAAD,CAAd;IACAO,gBAAgB,CAACC,KAAK,CAACG,OAAP,CAAhB;IAEA,OAAOX,GAAP;EACD;;EAED,OAAOI,WAAP;AACD,CArCM;AAuCP;AACA;AACA;;;;;AACO,IAAMQ,MAAM,GAAG,SAATA,MAAS,CACpBC,gBADoB,EAEpBC,IAFoB,EAGpBd,GAHoB,EAIT;EACX,IAAIA,GAAJ,EAAS;IAAA;;IACP,iDAAU,2BAAea,gBAAf,EAAiCC,IAAjC,CAAV,uBAAoDd,GAAG,CAACe,KAAJ,CAAU,GAAV,EAAe,CAAf,CAApD;EACD;;EAED,OAAO,2BAAeF,gBAAf,EAAiCC,IAAjC,CAAP;AACD,CAVM;AAYP;AACA;AACA;;;;;AACO,IAAME,SAAS,GAAG,SAAZA,SAAY,CAACC,UAAD,EAAqD;EAAA,IAAhCC,MAAgC,uEAAf,CAAe;;EAC5E,IAAIA,MAAM,GAAG,CAAb,EAAgB;IAAA;;IACd,IAAMC,aAAa,GAAG,CAAAF,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEG,MAAZ,MAAuBC,4BAAiBC,QAA9D;IACA,IAAMC,gBAAgB,4BAAGN,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEM,gBAAf,yEAAmC,CAAzD;;IAEA,IAAIJ,aAAa,IAAII,gBAAgB,GAAGL,MAAxC,EAAgD;MAC9C,OAAO,IAAP;IACD;EACF;;EAED,OAAO,KAAP;AACD,CAXM"}
1
+ {"version":3,"file":"modularuiUtils.js","names":["getUrl","resource","props","url","Href","toString","useUrl","useState","previousUrl","setPreviousUrl","previousExact","setPreviousExact","match","isDifferentUrl","hasDifferentStartUriPart","isExact","getKey","WrappedComponent","name","getDisplayName","split","useReload","modelEntry","reload","isFullyLoaded","status","MODULARUI_STATUS","FINISHED","lastModification"],"sources":["../../../src/redux/_modularui/modularuiUtils.js"],"sourcesContent":["// @flow\nimport { useState } from \"react\";\n\nimport { getDisplayName } from \"../../react/utils\";\nimport { MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\n\nimport type { ComponentType } from \"react\";\n\n/**\n * Generate modular ui url\n */\nconst getUrl = (resource: string | Function, props: Object) => {\n const url = typeof resource === \"function\" ? resource(props) : resource;\n\n if (url instanceof Href) {\n return url.toString();\n }\n\n return url || \"\";\n};\n\n/**\n */\nexport const useUrl = (resource: string | Function, props: Object): string => {\n const [previousUrl, setPreviousUrl] = useState(\"\");\n const [previousExact, setPreviousExact] = useState(false);\n\n const url = getUrl(resource, props);\n\n const { match } = props;\n\n // when match is not available through props,\n // this is a direct call to the modular ui hoc, not using a route\n if (!match) {\n return url;\n }\n\n const isDifferentUrl = url !== previousUrl;\n if (!isDifferentUrl) {\n return previousUrl;\n }\n\n const hasDifferentStartUriPart =\n previousUrl !== \"\" && !previousUrl.startsWith(match.url);\n\n // Always create an url when the match is exact\n // Or when the match is not exact AND the original match also was not exact\n // Or when the new start uri is different from the previous url\n if (\n match.isExact === true ||\n previousExact === match.isExact ||\n hasDifferentStartUriPart\n ) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n\n return url;\n }\n\n return previousUrl;\n};\n\n/**\n * Create key for modularui request based on component name and requested url\n */\nexport const getKey = (\n WrappedComponent: ComponentType<any>,\n name: string,\n url: string\n): string => {\n if (url) {\n return `${getDisplayName(WrappedComponent, name)}(${url.split(\"?\")[0]})`;\n }\n\n return getDisplayName(WrappedComponent, name);\n};\n\n/**\n * Check if the model corresponding to a modular ui service should be reloaded\n */\nexport const useReload = (modelEntry: Object, reload: number = 0): boolean => {\n if (reload > 0) {\n const isFullyLoaded = modelEntry?.status === MODULARUI_STATUS.FINISHED;\n const lastModification = modelEntry?.lastModification ?? 0;\n\n if (isFullyLoaded && lastModification < reload) {\n return true;\n }\n }\n\n return false;\n};\n"],"mappings":";;;;;;;;;;;;;;;AACA;;AAEA;;AACA;;AACA;;AAIA;AACA;AACA;AACA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,QAAD,EAA8BC,KAA9B,EAAgD;EAC7D,IAAMC,GAAG,GAAG,OAAOF,QAAP,KAAoB,UAApB,GAAiCA,QAAQ,CAACC,KAAD,CAAzC,GAAmDD,QAA/D;;EAEA,IAAIE,GAAG,YAAYC,aAAnB,EAAyB;IACvB,OAAOD,GAAG,CAACE,QAAJ,EAAP;EACD;;EAED,OAAOF,GAAG,IAAI,EAAd;AACD,CARD;AAUA;AACA;;;AACO,IAAMG,MAAM,GAAG,SAATA,MAAS,CAACL,QAAD,EAA8BC,KAA9B,EAAwD;EAC5E,gBAAsC,IAAAK,eAAA,EAAS,EAAT,CAAtC;EAAA;EAAA,IAAOC,WAAP;EAAA,IAAoBC,cAApB;;EACA,iBAA0C,IAAAF,eAAA,EAAS,KAAT,CAA1C;EAAA;EAAA,IAAOG,aAAP;EAAA,IAAsBC,gBAAtB;;EAEA,IAAMR,GAAG,GAAGH,MAAM,CAACC,QAAD,EAAWC,KAAX,CAAlB;EAEA,IAAQU,KAAR,GAAkBV,KAAlB,CAAQU,KAAR,CAN4E,CAQ5E;EACA;;EACA,IAAI,CAACA,KAAL,EAAY;IACV,OAAOT,GAAP;EACD;;EAED,IAAMU,cAAc,GAAGV,GAAG,KAAKK,WAA/B;;EACA,IAAI,CAACK,cAAL,EAAqB;IACnB,OAAOL,WAAP;EACD;;EAED,IAAMM,wBAAwB,GAC5BN,WAAW,KAAK,EAAhB,IAAsB,CAAC,yBAAAA,WAAW,MAAX,CAAAA,WAAW,EAAYI,KAAK,CAACT,GAAlB,CADpC,CAnB4E,CAsB5E;EACA;EACA;;EACA,IACES,KAAK,CAACG,OAAN,KAAkB,IAAlB,IACAL,aAAa,KAAKE,KAAK,CAACG,OADxB,IAEAD,wBAHF,EAIE;IACAL,cAAc,CAACN,GAAD,CAAd;IACAQ,gBAAgB,CAACC,KAAK,CAACG,OAAP,CAAhB;IAEA,OAAOZ,GAAP;EACD;;EAED,OAAOK,WAAP;AACD,CArCM;AAuCP;AACA;AACA;;;;;AACO,IAAMQ,MAAM,GAAG,SAATA,MAAS,CACpBC,gBADoB,EAEpBC,IAFoB,EAGpBf,GAHoB,EAIT;EACX,IAAIA,GAAJ,EAAS;IAAA;;IACP,iDAAU,IAAAgB,qBAAA,EAAeF,gBAAf,EAAiCC,IAAjC,CAAV,uBAAoDf,GAAG,CAACiB,KAAJ,CAAU,GAAV,EAAe,CAAf,CAApD;EACD;;EAED,OAAO,IAAAD,qBAAA,EAAeF,gBAAf,EAAiCC,IAAjC,CAAP;AACD,CAVM;AAYP;AACA;AACA;;;;;AACO,IAAMG,SAAS,GAAG,SAAZA,SAAY,CAACC,UAAD,EAAqD;EAAA,IAAhCC,MAAgC,uEAAf,CAAe;;EAC5E,IAAIA,MAAM,GAAG,CAAb,EAAgB;IAAA;;IACd,IAAMC,aAAa,GAAG,CAAAF,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEG,MAAZ,MAAuBC,2BAAA,CAAiBC,QAA9D;IACA,IAAMC,gBAAgB,4BAAGN,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEM,gBAAf,yEAAmC,CAAzD;;IAEA,IAAIJ,aAAa,IAAII,gBAAgB,GAAGL,MAAxC,EAAgD;MAC9C,OAAO,IAAP;IACD;EACF;;EAED,OAAO,KAAP;AACD,CAXM"}
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.js","names":["updateStatus","state","key","status","MODULARUI_STATUS","LOADING","lastModification","Date","now","setModel","model","IllegalArgumentException","getModelKey","connectKey","updateModel","modelKey","Error","removeKey","_","newState","resetModularUI","ApplicationModel","initialState","ModularUIReducer","action","type","payload"],"sources":["../../../src/redux/_modularui/reducer.js"],"sourcesContent":["// @flow\nimport { IllegalArgumentException } from \"../../exceptions\";\nimport { MODULARUI_STATUS } from \"../../constants/Constants\";\nimport { ApplicationModel } from \"../../models\";\n\nimport type { Reducer } from \"redux\";\nimport type { ReduxAction } from \"../types\";\nimport type { ModularUIState } from \"./types\";\n\n/**\n */\nconst updateStatus = (state, { key, status }) => {\n // model should always be available when status is not loading\n if (status !== MODULARUI_STATUS.LOADING && !state[key]) {\n return state;\n }\n\n return {\n ...state,\n [key]: {\n ...state[key],\n status,\n lastModification: Date.now(),\n },\n };\n};\n\n/**\n */\nconst setModel = (state, { key, model }) => {\n if (!state[key]) {\n return state;\n }\n\n if (model) {\n return {\n ...state,\n [key]: {\n ...state[key],\n model,\n lastModification: Date.now(),\n },\n };\n }\n\n throw new IllegalArgumentException(\"No model for setModel\");\n};\n\n/**\n */\nconst getModelKey = (state, model) =>\n Object.keys(state).find((key) => {\n const connectKey = state[key]?.model?.connectKey ?? \"\";\n return connectKey === model.connectKey;\n });\n\n/**\n */\nconst updateModel = (state, model) => {\n const modelKey = getModelKey(state, model);\n\n if (modelKey) {\n return setModel(state, { key: modelKey, model });\n }\n\n throw new Error(\n `ModularUIReducer: Cannot update model with key ${model.connectKey}`\n );\n};\n\n/**\n */\nconst removeKey = (modelKey: string, state: ModularUIState): ModularUIState => {\n // eslint-disable-next-line no-unused-vars\n const { [modelKey]: _, ...newState } = state;\n\n return newState;\n};\n\n/**\n * Remove all but application models\n */\nconst resetModularUI = (state: ModularUIState) => {\n const newState = {};\n\n for (const key in state) {\n if (state[key].model instanceof ApplicationModel) {\n newState[key] = { ...state[key] };\n }\n }\n\n return newState;\n};\n\nconst initialState: ModularUIState = {};\n\n/**\n * Modular UI Reducer\n */\nexport const ModularUIReducer: Reducer<ModularUIState, ReduxAction> = (\n state = initialState,\n action\n) => {\n if (!action) {\n return state;\n }\n\n switch (action.type) {\n case \"MODULARUI/RESET\":\n return resetModularUI(state);\n\n case \"MODULARUI/STATUS\":\n return updateStatus(state, action.payload);\n\n case \"MODULARUI/SET\":\n return setModel(state, action.payload);\n\n case \"MODULARUI/UPDATE\":\n return updateModel(state, action.payload);\n\n case \"MODULARUI/REMOVE_KEY\":\n return removeKey(action.payload, state);\n\n default:\n return state;\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"reducer.js","names":["updateStatus","state","key","status","MODULARUI_STATUS","LOADING","lastModification","Date","now","setModel","model","IllegalArgumentException","getModelKey","connectKey","updateModel","modelKey","Error","removeKey","_","newState","resetModularUI","ApplicationModel","initialState","ModularUIReducer","action","type","payload"],"sources":["../../../src/redux/_modularui/reducer.js"],"sourcesContent":["// @flow\nimport { IllegalArgumentException } from \"../../exceptions\";\nimport { MODULARUI_STATUS } from \"../../constants/Constants\";\nimport { ApplicationModel } from \"../../models\";\n\nimport type { Reducer } from \"redux\";\nimport type { ReduxAction } from \"../types\";\nimport type { ModularUIState } from \"./types\";\n\n/**\n */\nconst updateStatus = (state, { key, status }) => {\n // model should always be available when status is not loading\n if (status !== MODULARUI_STATUS.LOADING && !state[key]) {\n return state;\n }\n\n return {\n ...state,\n [key]: {\n ...state[key],\n status,\n lastModification: Date.now(),\n },\n };\n};\n\n/**\n */\nconst setModel = (state, { key, model }) => {\n if (!state[key]) {\n return state;\n }\n\n if (model) {\n return {\n ...state,\n [key]: {\n ...state[key],\n model,\n lastModification: Date.now(),\n },\n };\n }\n\n throw new IllegalArgumentException(\"No model for setModel\");\n};\n\n/**\n */\nconst getModelKey = (state, model) =>\n Object.keys(state).find((key) => {\n const connectKey = state[key]?.model?.connectKey ?? \"\";\n return connectKey === model.connectKey;\n });\n\n/**\n */\nconst updateModel = (state, model) => {\n const modelKey = getModelKey(state, model);\n\n if (modelKey) {\n return setModel(state, { key: modelKey, model });\n }\n\n throw new Error(\n `ModularUIReducer: Cannot update model with key ${model.connectKey}`\n );\n};\n\n/**\n */\nconst removeKey = (modelKey: string, state: ModularUIState): ModularUIState => {\n // eslint-disable-next-line no-unused-vars\n const { [modelKey]: _, ...newState } = state;\n\n return newState;\n};\n\n/**\n * Remove all but application models\n */\nconst resetModularUI = (state: ModularUIState) => {\n const newState = {};\n\n for (const key in state) {\n if (state[key].model instanceof ApplicationModel) {\n newState[key] = { ...state[key] };\n }\n }\n\n return newState;\n};\n\nconst initialState: ModularUIState = {};\n\n/**\n * Modular UI Reducer\n */\nexport const ModularUIReducer: Reducer<ModularUIState, ReduxAction> = (\n state = initialState,\n action\n) => {\n if (!action) {\n return state;\n }\n\n switch (action.type) {\n case \"MODULARUI/RESET\":\n return resetModularUI(state);\n\n case \"MODULARUI/STATUS\":\n return updateStatus(state, action.payload);\n\n case \"MODULARUI/SET\":\n return setModel(state, action.payload);\n\n case \"MODULARUI/UPDATE\":\n return updateModel(state, action.payload);\n\n case \"MODULARUI/REMOVE_KEY\":\n return removeKey(action.payload, state);\n\n default:\n return state;\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;;;;;;;;;AAMA;AACA;AACA,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,QAA4B;EAAA,IAAlBC,GAAkB,QAAlBA,GAAkB;EAAA,IAAbC,MAAa,QAAbA,MAAa;;EAC/C;EACA,IAAIA,MAAM,KAAKC,2BAAA,CAAiBC,OAA5B,IAAuC,CAACJ,KAAK,CAACC,GAAD,CAAjD,EAAwD;IACtD,OAAOD,KAAP;EACD;;EAED,uCACKA,KADL,yCAEGC,GAFH,kCAGOD,KAAK,CAACC,GAAD,CAHZ;IAIIC,MAAM,EAANA,MAJJ;IAKIG,gBAAgB,EAAEC,IAAI,CAACC,GAAL;EALtB;AAQD,CAdD;AAgBA;AACA;;;AACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACR,KAAD,SAA2B;EAAA,IAAjBC,GAAiB,SAAjBA,GAAiB;EAAA,IAAZQ,KAAY,SAAZA,KAAY;;EAC1C,IAAI,CAACT,KAAK,CAACC,GAAD,CAAV,EAAiB;IACf,OAAOD,KAAP;EACD;;EAED,IAAIS,KAAJ,EAAW;IACT,uCACKT,KADL,yCAEGC,GAFH,kCAGOD,KAAK,CAACC,GAAD,CAHZ;MAIIQ,KAAK,EAALA,KAJJ;MAKIJ,gBAAgB,EAAEC,IAAI,CAACC,GAAL;IALtB;EAQD;;EAED,MAAM,IAAIG,oCAAJ,CAA6B,uBAA7B,CAAN;AACD,CAjBD;AAmBA;AACA;;;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACX,KAAD,EAAQS,KAAR;EAAA;;EAAA,OAClB,iDAAYT,KAAZ,kBAAwB,UAACC,GAAD,EAAS;IAAA;;IAC/B,IAAMW,UAAU,0CAAGZ,KAAK,CAACC,GAAD,CAAR,mEAAG,WAAYQ,KAAf,qDAAG,iBAAmBG,UAAtB,yEAAoC,EAApD;IACA,OAAOA,UAAU,KAAKH,KAAK,CAACG,UAA5B;EACD,CAHD,CADkB;AAAA,CAApB;AAMA;AACA;;;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACb,KAAD,EAAQS,KAAR,EAAkB;EACpC,IAAMK,QAAQ,GAAGH,WAAW,CAACX,KAAD,EAAQS,KAAR,CAA5B;;EAEA,IAAIK,QAAJ,EAAc;IACZ,OAAON,QAAQ,CAACR,KAAD,EAAQ;MAAEC,GAAG,EAAEa,QAAP;MAAiBL,KAAK,EAALA;IAAjB,CAAR,CAAf;EACD;;EAED,MAAM,IAAIM,KAAJ,0DAC8CN,KAAK,CAACG,UADpD,EAAN;AAGD,CAVD;AAYA;AACA;;;AACA,IAAMI,SAAS,GAAG,SAAZA,SAAY,CAACF,QAAD,EAAmBd,KAAnB,EAA6D;EAAA;;EAC7E;EACA,IAAoBiB,CAApB,GAAuCjB,KAAvC,CAASc,QAAT;EAAA,IAA0BI,QAA1B,0CAAuClB,KAAvC,iCAASc,QAAT;EAEA,OAAOI,QAAP;AACD,CALD;AAOA;AACA;AACA;;;AACA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACnB,KAAD,EAA2B;EAChD,IAAMkB,QAAQ,GAAG,EAAjB;;EAEA,KAAK,IAAMjB,GAAX,IAAkBD,KAAlB,EAAyB;IACvB,IAAIA,KAAK,CAACC,GAAD,CAAL,CAAWQ,KAAX,YAA4BW,wBAAhC,EAAkD;MAChDF,QAAQ,CAACjB,GAAD,CAAR,qBAAqBD,KAAK,CAACC,GAAD,CAA1B;IACD;EACF;;EAED,OAAOiB,QAAP;AACD,CAVD;;AAYA,IAAMG,YAA4B,GAAG,EAArC;AAEA;AACA;AACA;;AACO,IAAMC,gBAAsD,GAAG,SAAzDA,gBAAyD,GAGjE;EAAA,IAFHtB,KAEG,uEAFKqB,YAEL;EAAA,IADHE,MACG;;EACH,IAAI,CAACA,MAAL,EAAa;IACX,OAAOvB,KAAP;EACD;;EAED,QAAQuB,MAAM,CAACC,IAAf;IACE,KAAK,iBAAL;MACE,OAAOL,cAAc,CAACnB,KAAD,CAArB;;IAEF,KAAK,kBAAL;MACE,OAAOD,YAAY,CAACC,KAAD,EAAQuB,MAAM,CAACE,OAAf,CAAnB;;IAEF,KAAK,eAAL;MACE,OAAOjB,QAAQ,CAACR,KAAD,EAAQuB,MAAM,CAACE,OAAf,CAAf;;IAEF,KAAK,kBAAL;MACE,OAAOZ,WAAW,CAACb,KAAD,EAAQuB,MAAM,CAACE,OAAf,CAAlB;;IAEF,KAAK,sBAAL;MACE,OAAOT,SAAS,CAACO,MAAM,CAACE,OAAR,EAAiBzB,KAAjB,CAAhB;;IAEF;MACE,OAAOA,KAAP;EAjBJ;AAmBD,CA3BM"}
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.js","names":["getAllModelsByInstance","state","instance","locale","i18n","modularui","key","model","getFirstModelByInstance","getActiveModelByInstance","location","getLocation","selfhref","path","getApplication","ApplicationModel","getTab","TabModel","getCaseView","CaseViewModel","getForm","FormModel","modelByHref","href","findHref","Href","modelConfigKey","equals","keyByHref","router","pathname","getModels","models","forEach","modelKey","modelEntry","label","type","modelInfo","selfContentLink","ContentModel","ContentTOCModel","push","getActiveModels","defaultMemoize","value","other","contextModels","locationParts","split","reduce","accumulator","current","comparePath","decodeURIComponent","replace","foundEntry","encodedHref","toString","getPreference","preferenceName","preferences","getModelsByType"],"sources":["../../../src/redux/_modularui/selectors.js"],"sourcesContent":["// @flow\nimport { createSelectorCreator, defaultMemoize } 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\";\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\n return model && model.selfhref && model.selfhref.equals(findHref);\n });\n }\n\n return null;\n};\n\n/**\n */\nconst getLocation = (state): string => state?.router?.location.pathname;\n\n/**\n */\nconst getModels = (state) => {\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"],"mappings":"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"}
1
+ {"version":3,"file":"selectors.js","names":["getAllModelsByInstance","state","instance","locale","i18n","modularui","key","model","getFirstModelByInstance","getActiveModelByInstance","location","getLocation","selfhref","path","getApplication","ApplicationModel","getTab","TabModel","getCaseView","CaseViewModel","getForm","FormModel","modelByHref","href","findHref","Href","modelConfigKey","equals","keyByHref","router","pathname","getModels","models","forEach","modelKey","modelEntry","has","label","type","modelInfo","selfContentLink","ContentModel","ContentTOCModel","push","getActiveModels","createSelectorCreator","defaultMemoize","value","other","contextModels","locationParts","split","reduce","accumulator","current","comparePath","decodeURIComponent","replace","foundEntry","encodedHref","toString","getPreference","preferenceName","preferences","getModelsByType"],"sources":["../../../src/redux/_modularui/selectors.js"],"sourcesContent":["// @flow\nimport { createSelectorCreator, defaultMemoize } 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\";\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\n return model && model.selfhref && model.selfhref.equals(findHref);\n });\n }\n\n return null;\n};\n\n/**\n */\nconst getLocation = (state): string => state?.router?.location.pathname;\n\n/**\n */\nconst getModels = (state) => {\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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"withModularUI.js","names":["getLocaleCode","state","i18n","locale","modularui","localeCode","href","options","modularuiRequest","ModularUIRequest","mapStateToProps","mapDispatchToProps","startProgress","finishProgress","reloadModel","handleError","withModularui"],"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 { reloadModel } from \"./actions\";\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 { RequestBaseOptions } from \"../../utils/fetch/types\";\nimport type FetchException from \"../../exceptions/FetchException\";\nimport type { ComponentType } from \"react\";\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?: RequestBaseOptions\n ) => ThunkAction,\n handleError: (error: Error | FetchException) => ThunkAction,\n};\n\ntype Props = {\n ...StateProps,\n ...DispatchProps,\n};\n\n/**\n */\nconst getLocaleCode = (state) => state.i18n.locale ?? \"en\";\n\nconst modularui = createSelector(\n [getLocaleCode],\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;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAkCA;AACA;AACA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD;EAAA;;EAAA,6BAAWA,KAAK,CAACC,IAAN,CAAWC,MAAtB,mEAAgC,IAAhC;AAAA,CAAtB;;AAEA,IAAMC,SAAS,GAAG,8BAChB,CAACJ,aAAD,CADgB,EAEhB,UAACK,UAAD;EAAA,OACE,UAACC,IAAD,EAAwB;IAAA,IAAjBC,OAAiB,uEAAP,EAAO;IACtB,IAAMC,gBAAgB,GAAG,IAAIC,yBAAJ,CAAqBH,IAArB,EAA2BC,OAA3B,CAAzB;IACAC,gBAAgB,CAACL,MAAjB,GAA0BE,UAA1B;IACA,OAAOG,gBAAP;EACD,CALH;AAAA,CAFgB,CAAlB;AAUA;AACA;;AACA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAACT,KAAD;EAAA,OAAoC;IAC1DG,SAAS,EAAEA,SAAS,CAACH,KAAD,CADsC;IAE1DE,MAAM,EAAEF,KAAK,CAACC,IAAN,CAAWC;EAFuC,CAApC;AAAA,CAAxB;;AAKA,IAAMQ,kBAAiC,GAAG;EACxCC,aAAa,EAAbA,gCADwC;EAExCC,cAAc,EAAdA,iCAFwC;EAGxCC,WAAW,EAAXA,oBAHwC;EAIxCC,WAAW,EAAXA;AAJwC,CAA1C;AAOA;AACA;AACA;AACA;;AACA,IAAMC,aAAiC,GAAG,yBAOxCN,eAPwC,EAOvBC,kBAPuB,CAA1C;eASeK,a"}
1
+ {"version":3,"file":"withModularUI.js","names":["getLocaleCode","state","i18n","locale","modularui","createSelector","localeCode","href","options","modularuiRequest","ModularUIRequest","mapStateToProps","mapDispatchToProps","startProgress","finishProgress","reloadModel","handleError","withModularui","connect"],"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 { reloadModel } from \"./actions\";\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 { RequestBaseOptions } from \"../../utils/fetch/types\";\nimport type FetchException from \"../../exceptions/FetchException\";\nimport type { ComponentType } from \"react\";\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?: RequestBaseOptions\n ) => ThunkAction,\n handleError: (error: Error | FetchException) => ThunkAction,\n};\n\ntype Props = {\n ...StateProps,\n ...DispatchProps,\n};\n\n/**\n */\nconst getLocaleCode = (state) => state.i18n.locale ?? \"en\";\n\nconst modularui = createSelector(\n [getLocaleCode],\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;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAkCA;AACA;AACA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD;EAAA;;EAAA,6BAAWA,KAAK,CAACC,IAAN,CAAWC,MAAtB,mEAAgC,IAAhC;AAAA,CAAtB;;AAEA,IAAMC,SAAS,GAAG,IAAAC,wBAAA,EAChB,CAACL,aAAD,CADgB,EAEhB,UAACM,UAAD;EAAA,OACE,UAACC,IAAD,EAAwB;IAAA,IAAjBC,OAAiB,uEAAP,EAAO;IACtB,IAAMC,gBAAgB,GAAG,IAAIC,yBAAJ,CAAqBH,IAArB,EAA2BC,OAA3B,CAAzB;IACAC,gBAAgB,CAACN,MAAjB,GAA0BG,UAA1B;IACA,OAAOG,gBAAP;EACD,CALH;AAAA,CAFgB,CAAlB;AAUA;AACA;;AACA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAACV,KAAD;EAAA,OAAoC;IAC1DG,SAAS,EAAEA,SAAS,CAACH,KAAD,CADsC;IAE1DE,MAAM,EAAEF,KAAK,CAACC,IAAN,CAAWC;EAFuC,CAApC;AAAA,CAAxB;;AAKA,IAAMS,kBAAiC,GAAG;EACxCC,aAAa,EAAbA,gCADwC;EAExCC,cAAc,EAAdA,iCAFwC;EAGxCC,WAAW,EAAXA,oBAHwC;EAIxCC,WAAW,EAAXA;AAJwC,CAA1C;AAOA;AACA;AACA;AACA;;AACA,IAAMC,aAAiC,GAAG,IAAAC,mBAAA,EAOxCP,eAPwC,EAOvBC,kBAPuB,CAA1C;eASeK,a"}
@@ -1 +1 @@
1
- {"version":3,"file":"connectors.js","names":["withKey","state","locationKey","router","location","key","withPathname","pathname","withLocation","withQuerystring","querystring","search","withNavigation","push","replace","go","goBack","goForward"],"sources":["../../../src/redux/_router/connectors.js"],"sourcesContent":["// @flow\nimport { connect } from \"react-redux\";\n\nimport { push, replace, go, goBack, goForward } from \"./actions\";\n\nimport type { Location, LocationShape } from \"react-router\";\nimport type {\n PushAction,\n ReplaceAction,\n GoAction,\n GoBackAction,\n GoForwardAction,\n} from \"./types\";\nimport type { ComponentType } from \"react\";\nimport type { ReduxState } from \"../types\";\n\ntype WithKeyStateProps = { locationKey: string, ... };\n\ntype WithPathnameProps = { pathname: string, ... };\n\ntype WithLocationProps = { location: Location, ... };\n\ntype WithQuerystringProps = { querystring: string, ... };\n\ntype NavigationDispatchProps = {\n push: (location: LocationShape | string, state?: { ... }) => PushAction,\n replace: (location: LocationShape | string, state?: { ... }) => ReplaceAction,\n go: (delta: number) => GoAction,\n goBack: () => GoBackAction,\n goForward: () => GoForwardAction,\n};\n\n/**\n */\nconst withKey: ComponentType<any> = connect<WithKeyStateProps, {}, _, _, _, _>(\n (state: ReduxState) => ({\n locationKey: state.router.location?.key ?? \"\",\n })\n);\n\n/**\n */\nconst withPathname: ComponentType<any> = connect<\n WithPathnameProps,\n {},\n _,\n _,\n _,\n _\n>((state: ReduxState) => ({\n pathname: state.router.location?.pathname,\n}));\n\n/**\n */\nconst withLocation: ComponentType<any> = connect<\n WithLocationProps,\n {},\n _,\n _,\n _,\n _\n>((state: ReduxState) => ({\n location: state.router.location,\n}));\n\n/**\n */\nconst withQuerystring: ComponentType<any> = connect<\n WithQuerystringProps,\n {},\n _,\n _,\n _,\n _\n>((state: ReduxState) => ({\n querystring: state.router.location?.search,\n}));\n\n/**\n */\nconst withNavigation: ComponentType<any> = connect<\n NavigationDispatchProps,\n {},\n _,\n _,\n _,\n _\n>(null, {\n push,\n replace,\n go,\n goBack,\n goForward,\n});\n\nexport { withKey, withPathname, withLocation, withQuerystring, withNavigation };\n"],"mappings":";;;;;;;AACA;;AAEA;;AA6BA;AACA;AACA,IAAMA,OAA2B,GAAG,yBAClC,UAACC,KAAD;EAAA;;EAAA,OAAwB;IACtBC,WAAW,qDAAED,KAAK,CAACE,MAAN,CAAaC,QAAf,2DAAE,uBAAuBC,GAAzB,yEAAgC;EADrB,CAAxB;AAAA,CADkC,CAApC;AAMA;AACA;;;AACA,IAAMC,YAAgC,GAAG,yBAOvC,UAACL,KAAD;EAAA;;EAAA,OAAwB;IACxBM,QAAQ,4BAAEN,KAAK,CAACE,MAAN,CAAaC,QAAf,2DAAE,uBAAuBG;EADT,CAAxB;AAAA,CAPuC,CAAzC;AAWA;AACA;;;AACA,IAAMC,YAAgC,GAAG,yBAOvC,UAACP,KAAD;EAAA,OAAwB;IACxBG,QAAQ,EAAEH,KAAK,CAACE,MAAN,CAAaC;EADC,CAAxB;AAAA,CAPuC,CAAzC;AAWA;AACA;;;AACA,IAAMK,eAAmC,GAAG,yBAO1C,UAACR,KAAD;EAAA;;EAAA,OAAwB;IACxBS,WAAW,4BAAET,KAAK,CAACE,MAAN,CAAaC,QAAf,2DAAE,uBAAuBO;EADZ,CAAxB;AAAA,CAP0C,CAA5C;AAWA;AACA;;;AACA,IAAMC,cAAkC,GAAG,yBAOzC,IAPyC,EAOnC;EACNC,IAAI,EAAJA,aADM;EAENC,OAAO,EAAPA,gBAFM;EAGNC,EAAE,EAAFA,WAHM;EAINC,MAAM,EAANA,eAJM;EAKNC,SAAS,EAATA;AALM,CAPmC,CAA3C"}
1
+ {"version":3,"file":"connectors.js","names":["withKey","connect","state","locationKey","router","location","key","withPathname","pathname","withLocation","withQuerystring","querystring","search","withNavigation","push","replace","go","goBack","goForward"],"sources":["../../../src/redux/_router/connectors.js"],"sourcesContent":["// @flow\nimport { connect } from \"react-redux\";\n\nimport { push, replace, go, goBack, goForward } from \"./actions\";\n\nimport type { Location, LocationShape } from \"react-router\";\nimport type {\n PushAction,\n ReplaceAction,\n GoAction,\n GoBackAction,\n GoForwardAction,\n} from \"./types\";\nimport type { ComponentType } from \"react\";\nimport type { ReduxState } from \"../types\";\n\ntype WithKeyStateProps = { locationKey: string, ... };\n\ntype WithPathnameProps = { pathname: string, ... };\n\ntype WithLocationProps = { location: Location, ... };\n\ntype WithQuerystringProps = { querystring: string, ... };\n\ntype NavigationDispatchProps = {\n push: (location: LocationShape | string, state?: { ... }) => PushAction,\n replace: (location: LocationShape | string, state?: { ... }) => ReplaceAction,\n go: (delta: number) => GoAction,\n goBack: () => GoBackAction,\n goForward: () => GoForwardAction,\n};\n\n/**\n */\nconst withKey: ComponentType<any> = connect<WithKeyStateProps, {}, _, _, _, _>(\n (state: ReduxState) => ({\n locationKey: state.router.location?.key ?? \"\",\n })\n);\n\n/**\n */\nconst withPathname: ComponentType<any> = connect<\n WithPathnameProps,\n {},\n _,\n _,\n _,\n _\n>((state: ReduxState) => ({\n pathname: state.router.location?.pathname,\n}));\n\n/**\n */\nconst withLocation: ComponentType<any> = connect<\n WithLocationProps,\n {},\n _,\n _,\n _,\n _\n>((state: ReduxState) => ({\n location: state.router.location,\n}));\n\n/**\n */\nconst withQuerystring: ComponentType<any> = connect<\n WithQuerystringProps,\n {},\n _,\n _,\n _,\n _\n>((state: ReduxState) => ({\n querystring: state.router.location?.search,\n}));\n\n/**\n */\nconst withNavigation: ComponentType<any> = connect<\n NavigationDispatchProps,\n {},\n _,\n _,\n _,\n _\n>(null, {\n push,\n replace,\n go,\n goBack,\n goForward,\n});\n\nexport { withKey, withPathname, withLocation, withQuerystring, withNavigation };\n"],"mappings":";;;;;;;AACA;;AAEA;;AA6BA;AACA;AACA,IAAMA,OAA2B,GAAG,IAAAC,mBAAA,EAClC,UAACC,KAAD;EAAA;;EAAA,OAAwB;IACtBC,WAAW,qDAAED,KAAK,CAACE,MAAN,CAAaC,QAAf,2DAAE,uBAAuBC,GAAzB,yEAAgC;EADrB,CAAxB;AAAA,CADkC,CAApC;AAMA;AACA;;;AACA,IAAMC,YAAgC,GAAG,IAAAN,mBAAA,EAOvC,UAACC,KAAD;EAAA;;EAAA,OAAwB;IACxBM,QAAQ,4BAAEN,KAAK,CAACE,MAAN,CAAaC,QAAf,2DAAE,uBAAuBG;EADT,CAAxB;AAAA,CAPuC,CAAzC;AAWA;AACA;;;AACA,IAAMC,YAAgC,GAAG,IAAAR,mBAAA,EAOvC,UAACC,KAAD;EAAA,OAAwB;IACxBG,QAAQ,EAAEH,KAAK,CAACE,MAAN,CAAaC;EADC,CAAxB;AAAA,CAPuC,CAAzC;AAWA;AACA;;;AACA,IAAMK,eAAmC,GAAG,IAAAT,mBAAA,EAO1C,UAACC,KAAD;EAAA;;EAAA,OAAwB;IACxBS,WAAW,4BAAET,KAAK,CAACE,MAAN,CAAaC,QAAf,2DAAE,uBAAuBO;EADZ,CAAxB;AAAA,CAP0C,CAA5C;AAWA;AACA;;;AACA,IAAMC,cAAkC,GAAG,IAAAZ,mBAAA,EAOzC,IAPyC,EAOnC;EACNa,IAAI,EAAJA,aADM;EAENC,OAAO,EAAPA,gBAFM;EAGNC,EAAE,EAAFA,WAHM;EAINC,MAAM,EAANA,eAJM;EAKNC,SAAS,EAATA;AALM,CAPmC,CAA3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Application.js","names":["reloadApplication","dispatch","getState","modelKey","locale","i18n","Href","targetModel","ApplicationModel"],"sources":["../../../src/redux/actions/Application.js"],"sourcesContent":["// @flow\nimport { loadModularUI } from \"../_modularui/actions\";\nimport { keyByHref } from \"../_modularui/selectors\";\nimport { ApplicationModel, Href } from \"../../models\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\n\n/**\n */\nexport const reloadApplication =\n (): ThunkAction => (dispatch: Dispatch, getState: GetState) => {\n let modelKey = keyByHref(getState(), \"/\");\n\n if (!modelKey) {\n const locale = getState().i18n?.locale;\n modelKey = `application(/)(${locale})`;\n }\n\n return dispatch(\n loadModularUI(modelKey, new Href(\"/\", \"Application\"), {\n targetModel: ApplicationModel,\n })\n );\n };\n"],"mappings":";;;;;;;AACA;;AACA;;AACA;;AAIA;AACA;AACO,IAAMA,iBAAiB,GAC5B,SADWA,iBACX;EAAA,OAAmB,UAACC,QAAD,EAAqBC,QAArB,EAA4C;IAC7D,IAAIC,QAAQ,GAAG,0BAAUD,QAAQ,EAAlB,EAAsB,GAAtB,CAAf;;IAEA,IAAI,CAACC,QAAL,EAAe;MAAA;;MACb,IAAMC,MAAM,qBAAGF,QAAQ,GAAGG,IAAd,mDAAG,eAAiBD,MAAhC;MACAD,QAAQ,4BAAqBC,MAArB,MAAR;IACD;;IAED,OAAOH,QAAQ,CACb,4BAAcE,QAAd,EAAwB,IAAIG,YAAJ,CAAS,GAAT,EAAc,aAAd,CAAxB,EAAsD;MACpDC,WAAW,EAAEC;IADuC,CAAtD,CADa,CAAf;EAKD,CAbD;AAAA,CADK"}
1
+ {"version":3,"file":"Application.js","names":["reloadApplication","dispatch","getState","modelKey","keyByHref","locale","i18n","loadModularUI","Href","targetModel","ApplicationModel"],"sources":["../../../src/redux/actions/Application.js"],"sourcesContent":["// @flow\nimport { loadModularUI } from \"../_modularui/actions\";\nimport { keyByHref } from \"../_modularui/selectors\";\nimport { ApplicationModel, Href } from \"../../models\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\n\n/**\n */\nexport const reloadApplication =\n (): ThunkAction => (dispatch: Dispatch, getState: GetState) => {\n let modelKey = keyByHref(getState(), \"/\");\n\n if (!modelKey) {\n const locale = getState().i18n?.locale;\n modelKey = `application(/)(${locale})`;\n }\n\n return dispatch(\n loadModularUI(modelKey, new Href(\"/\", \"Application\"), {\n targetModel: ApplicationModel,\n })\n );\n };\n"],"mappings":";;;;;;;AACA;;AACA;;AACA;;AAIA;AACA;AACO,IAAMA,iBAAiB,GAC5B,SADWA,iBACX;EAAA,OAAmB,UAACC,QAAD,EAAqBC,QAArB,EAA4C;IAC7D,IAAIC,QAAQ,GAAG,IAAAC,oBAAA,EAAUF,QAAQ,EAAlB,EAAsB,GAAtB,CAAf;;IAEA,IAAI,CAACC,QAAL,EAAe;MAAA;;MACb,IAAME,MAAM,qBAAGH,QAAQ,GAAGI,IAAd,mDAAG,eAAiBD,MAAhC;MACAF,QAAQ,4BAAqBE,MAArB,MAAR;IACD;;IAED,OAAOJ,QAAQ,CACb,IAAAM,sBAAA,EAAcJ,QAAd,EAAwB,IAAIK,YAAJ,CAAS,GAAT,EAAc,aAAd,CAAxB,EAAsD;MACpDC,WAAW,EAAEC;IADuC,CAAtD,CADa,CAAf;EAKD,CAbD;AAAA,CADK"}
@@ -1 +1 @@
1
- {"version":3,"file":"Authorization.js","names":["handleUnauthorized","errorResponse","dispatch","getState","connectKey","response","error","window","location","reload","Cache","getItem","removeItem","isInvalidUsername","WARNING_TIMEOUT","NOTIFICATION_TYPES","WARNING","id","defaultMessage","message","router","pathname","LOGIN_PATH","locationFrom","state","from","modal","type"],"sources":["../../../src/redux/actions/Authorization.js"],"sourcesContent":["// @flow\nimport { LOGIN_PATH, NOTIFICATION_TYPES } from \"../../constants/Constants\";\n\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\n\nimport { replace } from \"../_router/actions\";\nimport { logoutSuccess } from \"./SignOut\";\nimport { showNotification } from \"./Notification\";\n\nimport Cache from \"../../utils/browser/Cache\";\n\nimport { removeModelByKey } from \"../_modularui/actions\";\nimport { reloadApplication } from \"./Application\";\n\nimport { getSetting } from \"../../constants\";\n\nimport type { ThunkAction } from \"../types\";\n\n/**\n */\nexport const handleUnauthorized =\n (errorResponse: ErrorResponse): ThunkAction =>\n (dispatch, getState) => {\n if (errorResponse.connectKey) {\n dispatch(removeModelByKey(errorResponse.connectKey));\n }\n\n if (\n getSetting(\"PAGE_RELOAD_ON_UNAUTHORIZED_ERROR\", false) &&\n errorResponse.response?.error\n ) {\n window.location.reload();\n return;\n }\n\n // reload application when flag auth is set\n if (Cache.getItem(\"auth\")) {\n dispatch(reloadApplication());\n }\n\n // set logged auth\n dispatch(logoutSuccess());\n\n Cache.removeItem(\"auth\");\n\n if (errorResponse.isInvalidUsername) {\n const WARNING_TIMEOUT = 4000;\n dispatch(\n showNotification(\n NOTIFICATION_TYPES.WARNING,\n {\n id: errorResponse.id,\n defaultMessage: errorResponse.message,\n },\n null,\n WARNING_TIMEOUT\n )\n );\n }\n\n // add current location as from location before redirect\n const location = getState().router.location;\n if (location?.pathname !== LOGIN_PATH) {\n const locationFrom = location?.state?.from;\n return dispatch(\n replace(LOGIN_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n // cannot open login in a modal, because of previous locations that might be secure\n modal: false,\n })\n );\n }\n\n return { type: \"NO_ACTION\" };\n };\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AAEA;;AAIA;AACA;AACO,IAAMA,kBAAkB,GAC7B,SADWA,kBACX,CAACC,aAAD;EAAA,OACA,UAACC,QAAD,EAAWC,QAAX,EAAwB;IAAA;;IACtB,IAAIF,aAAa,CAACG,UAAlB,EAA8B;MAC5BF,QAAQ,CAAC,gCAAiBD,aAAa,CAACG,UAA/B,CAAD,CAAR;IACD;;IAED,IACE,2BAAW,mCAAX,EAAgD,KAAhD,8BACAH,aAAa,CAACI,QADd,kDACA,sBAAwBC,KAF1B,EAGE;MACAC,MAAM,CAACC,QAAP,CAAgBC,MAAhB;MACA;IACD,CAXqB,CAatB;;;IACA,IAAIC,eAAMC,OAAN,CAAc,MAAd,CAAJ,EAA2B;MACzBT,QAAQ,CAAC,qCAAD,CAAR;IACD,CAhBqB,CAkBtB;;;IACAA,QAAQ,CAAC,6BAAD,CAAR;;IAEAQ,eAAME,UAAN,CAAiB,MAAjB;;IAEA,IAAIX,aAAa,CAACY,iBAAlB,EAAqC;MACnC,IAAMC,eAAe,GAAG,IAAxB;MACAZ,QAAQ,CACN,oCACEa,8BAAmBC,OADrB,EAEE;QACEC,EAAE,EAAEhB,aAAa,CAACgB,EADpB;QAEEC,cAAc,EAAEjB,aAAa,CAACkB;MAFhC,CAFF,EAME,IANF,EAOEL,eAPF,CADM,CAAR;IAWD,CApCqB,CAsCtB;;;IACA,IAAMN,QAAQ,GAAGL,QAAQ,GAAGiB,MAAX,CAAkBZ,QAAnC;;IACA,IAAI,CAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEa,QAAV,MAAuBC,qBAA3B,EAAuC;MAAA;;MACrC,IAAMC,YAAY,GAAGf,QAAH,aAAGA,QAAH,0CAAGA,QAAQ,CAAEgB,KAAb,oDAAG,gBAAiBC,IAAtC;MACA,OAAOvB,QAAQ,CACb,sBAAQoB,qBAAR,EAAoB;QAClBG,IAAI,EAAEF,YAAY,GAAGA,YAAH,GAAkBpB,QAAQ,GAAGiB,MAAX,CAAkBZ,QADpC;QAElB;QACAkB,KAAK,EAAE;MAHW,CAApB,CADa,CAAf;IAOD;;IAED,OAAO;MAAEC,IAAI,EAAE;IAAR,CAAP;EACD,CArDD;AAAA,CADK"}
1
+ {"version":3,"file":"Authorization.js","names":["handleUnauthorized","errorResponse","dispatch","getState","connectKey","removeModelByKey","getSetting","response","error","window","location","reload","Cache","getItem","reloadApplication","logoutSuccess","removeItem","isInvalidUsername","WARNING_TIMEOUT","showNotification","NOTIFICATION_TYPES","WARNING","id","defaultMessage","message","router","pathname","LOGIN_PATH","locationFrom","state","from","replace","modal","type"],"sources":["../../../src/redux/actions/Authorization.js"],"sourcesContent":["// @flow\nimport { LOGIN_PATH, NOTIFICATION_TYPES } from \"../../constants/Constants\";\n\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\n\nimport { replace } from \"../_router/actions\";\nimport { logoutSuccess } from \"./SignOut\";\nimport { showNotification } from \"./Notification\";\n\nimport Cache from \"../../utils/browser/Cache\";\n\nimport { removeModelByKey } from \"../_modularui/actions\";\nimport { reloadApplication } from \"./Application\";\n\nimport { getSetting } from \"../../constants\";\n\nimport type { ThunkAction } from \"../types\";\n\n/**\n */\nexport const handleUnauthorized =\n (errorResponse: ErrorResponse): ThunkAction =>\n (dispatch, getState) => {\n if (errorResponse.connectKey) {\n dispatch(removeModelByKey(errorResponse.connectKey));\n }\n\n if (\n getSetting(\"PAGE_RELOAD_ON_UNAUTHORIZED_ERROR\", false) &&\n errorResponse.response?.error\n ) {\n window.location.reload();\n return;\n }\n\n // reload application when flag auth is set\n if (Cache.getItem(\"auth\")) {\n dispatch(reloadApplication());\n }\n\n // set logged auth\n dispatch(logoutSuccess());\n\n Cache.removeItem(\"auth\");\n\n if (errorResponse.isInvalidUsername) {\n const WARNING_TIMEOUT = 4000;\n dispatch(\n showNotification(\n NOTIFICATION_TYPES.WARNING,\n {\n id: errorResponse.id,\n defaultMessage: errorResponse.message,\n },\n null,\n WARNING_TIMEOUT\n )\n );\n }\n\n // add current location as from location before redirect\n const location = getState().router.location;\n if (location?.pathname !== LOGIN_PATH) {\n const locationFrom = location?.state?.from;\n return dispatch(\n replace(LOGIN_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n // cannot open login in a modal, because of previous locations that might be secure\n modal: false,\n })\n );\n }\n\n return { type: \"NO_ACTION\" };\n };\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AAEA;;AAIA;AACA;AACO,IAAMA,kBAAkB,GAC7B,SADWA,kBACX,CAACC,aAAD;EAAA,OACA,UAACC,QAAD,EAAWC,QAAX,EAAwB;IAAA;;IACtB,IAAIF,aAAa,CAACG,UAAlB,EAA8B;MAC5BF,QAAQ,CAAC,IAAAG,0BAAA,EAAiBJ,aAAa,CAACG,UAA/B,CAAD,CAAR;IACD;;IAED,IACE,IAAAE,qBAAA,EAAW,mCAAX,EAAgD,KAAhD,8BACAL,aAAa,CAACM,QADd,kDACA,sBAAwBC,KAF1B,EAGE;MACAC,MAAM,CAACC,QAAP,CAAgBC,MAAhB;MACA;IACD,CAXqB,CAatB;;;IACA,IAAIC,cAAA,CAAMC,OAAN,CAAc,MAAd,CAAJ,EAA2B;MACzBX,QAAQ,CAAC,IAAAY,8BAAA,GAAD,CAAR;IACD,CAhBqB,CAkBtB;;;IACAZ,QAAQ,CAAC,IAAAa,sBAAA,GAAD,CAAR;;IAEAH,cAAA,CAAMI,UAAN,CAAiB,MAAjB;;IAEA,IAAIf,aAAa,CAACgB,iBAAlB,EAAqC;MACnC,IAAMC,eAAe,GAAG,IAAxB;MACAhB,QAAQ,CACN,IAAAiB,8BAAA,EACEC,6BAAA,CAAmBC,OADrB,EAEE;QACEC,EAAE,EAAErB,aAAa,CAACqB,EADpB;QAEEC,cAAc,EAAEtB,aAAa,CAACuB;MAFhC,CAFF,EAME,IANF,EAOEN,eAPF,CADM,CAAR;IAWD,CApCqB,CAsCtB;;;IACA,IAAMR,QAAQ,GAAGP,QAAQ,GAAGsB,MAAX,CAAkBf,QAAnC;;IACA,IAAI,CAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEgB,QAAV,MAAuBC,qBAA3B,EAAuC;MAAA;;MACrC,IAAMC,YAAY,GAAGlB,QAAH,aAAGA,QAAH,0CAAGA,QAAQ,CAAEmB,KAAb,oDAAG,gBAAiBC,IAAtC;MACA,OAAO5B,QAAQ,CACb,IAAA6B,gBAAA,EAAQJ,qBAAR,EAAoB;QAClBG,IAAI,EAAEF,YAAY,GAAGA,YAAH,GAAkBzB,QAAQ,GAAGsB,MAAX,CAAkBf,QADpC;QAElB;QACAsB,KAAK,EAAE;MAHW,CAApB,CADa,CAAf;IAOD;;IAED,OAAO;MAAEC,IAAI,EAAE;IAAR,CAAP;EACD,CArDD;AAAA,CADK"}
@@ -1 +1 @@
1
- {"version":3,"file":"Error.js","names":["saveError","error","type","payload","defaultErrorResponseHandler","dispatch","isResourceNotFoundAfterReload","isRemoteServiceException","isUnauthorized","isBlocked","isConcurrentUser","LOGOUT_PATH","isChangePassword","IS_SERVER","setTimeout","customErrorResponseHandler","errorResponse","defaultHandler","setCustomErrorResponseHandler","handler","handleError","ErrorResponse"],"sources":["../../../src/redux/actions/Error.js"],"sourcesContent":["// @flow\nimport { LOGOUT_PATH, IS_SERVER } from \"../../constants/Constants\";\n\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\n\nimport { push } from \"../_router/actions\";\nimport { showXHRErrorNotification } from \"./Notification\";\nimport { resetProgress } from \"./ProgressIndicator\";\nimport { changePassword } from \"./SignIn\";\nimport { handleUnauthorized } from \"./Authorization\";\n\nimport type { FetchException } from \"../../exceptions\";\nimport type { Dispatch, SaveErrorAction, ThunkAction } from \"../types\";\n\ntype DefaultErrorResponseHandler = (error: ErrorResponse) => ThunkAction;\ntype CustomErrorResponseHandler = (\n errorResponse: ErrorResponse,\n defaultHandler: DefaultErrorResponseHandler\n) => ThunkAction;\n\n/**\n */\nconst saveError = (error): SaveErrorAction => ({\n type: \"SAVE_ERROR\",\n payload: error,\n});\n\n/**\n */\nconst defaultErrorResponseHandler: DefaultErrorResponseHandler =\n (error: ErrorResponse): ThunkAction =>\n (dispatch: Dispatch) => {\n if (error.isResourceNotFoundAfterReload || error.isRemoteServiceException) {\n return dispatch({ type: \"NO_ACTION\" });\n }\n\n if (error.isUnauthorized) {\n return dispatch(handleUnauthorized(error));\n }\n\n if (error.isBlocked || error.isConcurrentUser) {\n dispatch(push(LOGOUT_PATH));\n }\n\n if (error.isChangePassword) {\n return dispatch(changePassword());\n }\n\n if (IS_SERVER) {\n return dispatch(saveError(error));\n }\n\n setTimeout(() => {\n throw error;\n });\n\n return dispatch(showXHRErrorNotification(error));\n };\n\n/**\n * Standard Custom error response, acts as a proxy and can be overwritten by {@link setCustomErrorResponseHandler}\n */\nlet customErrorResponseHandler: CustomErrorResponseHandler =\n (errorResponse, defaultHandler) => (dispatch: Dispatch) =>\n dispatch(defaultHandler(errorResponse));\n\n/**\n * Set a custom error response handler,\n * can be used when custom functionality is needed on certain (error) response\n * of the modular ui, for example when custom logic is needed when a user is unauthorized<br>\n * It receives an {@link ErrorResponse} and the {@link defaultErrorResponseHandler}\n */\nexport const setCustomErrorResponseHandler = (\n handler: CustomErrorResponseHandler\n) => {\n customErrorResponseHandler = handler;\n};\n\n/**\n * Handle errors by sending an error notification message\n */\nexport const handleError =\n (error: Error | FetchException): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(resetProgress());\n\n const errorResponse = new ErrorResponse(error);\n\n return dispatch(\n customErrorResponseHandler(errorResponse, defaultErrorResponseHandler)\n );\n };\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAWA;AACA;AACA,IAAMA,SAAS,GAAG,SAAZA,SAAY,CAACC,KAAD;EAAA,OAA6B;IAC7CC,IAAI,EAAE,YADuC;IAE7CC,OAAO,EAAEF;EAFoC,CAA7B;AAAA,CAAlB;AAKA;AACA;;;AACA,IAAMG,2BAAwD,GAC5D,SADIA,2BACJ,CAACH,KAAD;EAAA,OACA,UAACI,QAAD,EAAwB;IACtB,IAAIJ,KAAK,CAACK,6BAAN,IAAuCL,KAAK,CAACM,wBAAjD,EAA2E;MACzE,OAAOF,QAAQ,CAAC;QAAEH,IAAI,EAAE;MAAR,CAAD,CAAf;IACD;;IAED,IAAID,KAAK,CAACO,cAAV,EAA0B;MACxB,OAAOH,QAAQ,CAAC,uCAAmBJ,KAAnB,CAAD,CAAf;IACD;;IAED,IAAIA,KAAK,CAACQ,SAAN,IAAmBR,KAAK,CAACS,gBAA7B,EAA+C;MAC7CL,QAAQ,CAAC,mBAAKM,sBAAL,CAAD,CAAR;IACD;;IAED,IAAIV,KAAK,CAACW,gBAAV,EAA4B;MAC1B,OAAOP,QAAQ,CAAC,6BAAD,CAAf;IACD;;IAED,IAAIQ,oBAAJ,EAAe;MACb,OAAOR,QAAQ,CAACL,SAAS,CAACC,KAAD,CAAV,CAAf;IACD;;IAEDa,UAAU,CAAC,YAAM;MACf,MAAMb,KAAN;IACD,CAFS,CAAV;IAIA,OAAOI,QAAQ,CAAC,4CAAyBJ,KAAzB,CAAD,CAAf;EACD,CA3BD;AAAA,CADF;AA8BA;AACA;AACA;;;AACA,IAAIc,0BAAsD,GACxD,oCAACC,aAAD,EAAgBC,cAAhB;EAAA,OAAmC,UAACZ,QAAD;IAAA,OACjCA,QAAQ,CAACY,cAAc,CAACD,aAAD,CAAf,CADyB;EAAA,CAAnC;AAAA,CADF;AAIA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAME,6BAA6B,GAAG,SAAhCA,6BAAgC,CAC3CC,OAD2C,EAExC;EACHJ,0BAA0B,GAAGI,OAA7B;AACD,CAJM;AAMP;AACA;AACA;;;;;AACO,IAAMC,WAAW,GACtB,SADWA,WACX,CAACnB,KAAD;EAAA,OACA,UAACI,QAAD,EAAwB;IACtBA,QAAQ,CAAC,uCAAD,CAAR;IAEA,IAAMW,aAAa,GAAG,IAAIK,sBAAJ,CAAkBpB,KAAlB,CAAtB;IAEA,OAAOI,QAAQ,CACbU,0BAA0B,CAACC,aAAD,EAAgBZ,2BAAhB,CADb,CAAf;EAGD,CATD;AAAA,CADK"}
1
+ {"version":3,"file":"Error.js","names":["saveError","error","type","payload","defaultErrorResponseHandler","dispatch","isResourceNotFoundAfterReload","isRemoteServiceException","isUnauthorized","handleUnauthorized","isBlocked","isConcurrentUser","push","LOGOUT_PATH","isChangePassword","changePassword","IS_SERVER","setTimeout","showXHRErrorNotification","customErrorResponseHandler","errorResponse","defaultHandler","setCustomErrorResponseHandler","handler","handleError","resetProgress","ErrorResponse"],"sources":["../../../src/redux/actions/Error.js"],"sourcesContent":["// @flow\nimport { LOGOUT_PATH, IS_SERVER } from \"../../constants/Constants\";\n\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\n\nimport { push } from \"../_router/actions\";\nimport { showXHRErrorNotification } from \"./Notification\";\nimport { resetProgress } from \"./ProgressIndicator\";\nimport { changePassword } from \"./SignIn\";\nimport { handleUnauthorized } from \"./Authorization\";\n\nimport type { FetchException } from \"../../exceptions\";\nimport type { Dispatch, SaveErrorAction, ThunkAction } from \"../types\";\n\ntype DefaultErrorResponseHandler = (error: ErrorResponse) => ThunkAction;\ntype CustomErrorResponseHandler = (\n errorResponse: ErrorResponse,\n defaultHandler: DefaultErrorResponseHandler\n) => ThunkAction;\n\n/**\n */\nconst saveError = (error): SaveErrorAction => ({\n type: \"SAVE_ERROR\",\n payload: error,\n});\n\n/**\n */\nconst defaultErrorResponseHandler: DefaultErrorResponseHandler =\n (error: ErrorResponse): ThunkAction =>\n (dispatch: Dispatch) => {\n if (error.isResourceNotFoundAfterReload || error.isRemoteServiceException) {\n return dispatch({ type: \"NO_ACTION\" });\n }\n\n if (error.isUnauthorized) {\n return dispatch(handleUnauthorized(error));\n }\n\n if (error.isBlocked || error.isConcurrentUser) {\n dispatch(push(LOGOUT_PATH));\n }\n\n if (error.isChangePassword) {\n return dispatch(changePassword());\n }\n\n if (IS_SERVER) {\n return dispatch(saveError(error));\n }\n\n setTimeout(() => {\n throw error;\n });\n\n return dispatch(showXHRErrorNotification(error));\n };\n\n/**\n * Standard Custom error response, acts as a proxy and can be overwritten by {@link setCustomErrorResponseHandler}\n */\nlet customErrorResponseHandler: CustomErrorResponseHandler =\n (errorResponse, defaultHandler) => (dispatch: Dispatch) =>\n dispatch(defaultHandler(errorResponse));\n\n/**\n * Set a custom error response handler,\n * can be used when custom functionality is needed on certain (error) response\n * of the modular ui, for example when custom logic is needed when a user is unauthorized<br>\n * It receives an {@link ErrorResponse} and the {@link defaultErrorResponseHandler}\n */\nexport const setCustomErrorResponseHandler = (\n handler: CustomErrorResponseHandler\n) => {\n customErrorResponseHandler = handler;\n};\n\n/**\n * Handle errors by sending an error notification message\n */\nexport const handleError =\n (error: Error | FetchException): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(resetProgress());\n\n const errorResponse = new ErrorResponse(error);\n\n return dispatch(\n customErrorResponseHandler(errorResponse, defaultErrorResponseHandler)\n );\n };\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAWA;AACA;AACA,IAAMA,SAAS,GAAG,SAAZA,SAAY,CAACC,KAAD;EAAA,OAA6B;IAC7CC,IAAI,EAAE,YADuC;IAE7CC,OAAO,EAAEF;EAFoC,CAA7B;AAAA,CAAlB;AAKA;AACA;;;AACA,IAAMG,2BAAwD,GAC5D,SADIA,2BACJ,CAACH,KAAD;EAAA,OACA,UAACI,QAAD,EAAwB;IACtB,IAAIJ,KAAK,CAACK,6BAAN,IAAuCL,KAAK,CAACM,wBAAjD,EAA2E;MACzE,OAAOF,QAAQ,CAAC;QAAEH,IAAI,EAAE;MAAR,CAAD,CAAf;IACD;;IAED,IAAID,KAAK,CAACO,cAAV,EAA0B;MACxB,OAAOH,QAAQ,CAAC,IAAAI,iCAAA,EAAmBR,KAAnB,CAAD,CAAf;IACD;;IAED,IAAIA,KAAK,CAACS,SAAN,IAAmBT,KAAK,CAACU,gBAA7B,EAA+C;MAC7CN,QAAQ,CAAC,IAAAO,aAAA,EAAKC,sBAAL,CAAD,CAAR;IACD;;IAED,IAAIZ,KAAK,CAACa,gBAAV,EAA4B;MAC1B,OAAOT,QAAQ,CAAC,IAAAU,sBAAA,GAAD,CAAf;IACD;;IAED,IAAIC,oBAAJ,EAAe;MACb,OAAOX,QAAQ,CAACL,SAAS,CAACC,KAAD,CAAV,CAAf;IACD;;IAEDgB,UAAU,CAAC,YAAM;MACf,MAAMhB,KAAN;IACD,CAFS,CAAV;IAIA,OAAOI,QAAQ,CAAC,IAAAa,sCAAA,EAAyBjB,KAAzB,CAAD,CAAf;EACD,CA3BD;AAAA,CADF;AA8BA;AACA;AACA;;;AACA,IAAIkB,0BAAsD,GACxD,oCAACC,aAAD,EAAgBC,cAAhB;EAAA,OAAmC,UAAChB,QAAD;IAAA,OACjCA,QAAQ,CAACgB,cAAc,CAACD,aAAD,CAAf,CADyB;EAAA,CAAnC;AAAA,CADF;AAIA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAME,6BAA6B,GAAG,SAAhCA,6BAAgC,CAC3CC,OAD2C,EAExC;EACHJ,0BAA0B,GAAGI,OAA7B;AACD,CAJM;AAMP;AACA;AACA;;;;;AACO,IAAMC,WAAW,GACtB,SADWA,WACX,CAACvB,KAAD;EAAA,OACA,UAACI,QAAD,EAAwB;IACtBA,QAAQ,CAAC,IAAAoB,gCAAA,GAAD,CAAR;IAEA,IAAML,aAAa,GAAG,IAAIM,sBAAJ,CAAkBzB,KAAlB,CAAtB;IAEA,OAAOI,QAAQ,CACbc,0BAA0B,CAACC,aAAD,EAAgBhB,2BAAhB,CADb,CAAf;EAGD,CATD;AAAA,CADK"}
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["previousObject","form","newForm","clone","setPreviousObject","cancelForm","dispatch","getState","key","auth","mustChangePassword","Authenticate","logout","then"],"sources":["../../../src/redux/actions/Form.js"],"sourcesContent":["// @flow\nimport { goBack } from \"../_router/actions\";\nimport { updateModel } from \"../_modularui/actions\";\nimport { logoutSuccess } from \"./SignOut\";\nimport { reloadApplication } from \"./Application\";\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\n\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type { UpdateModelAction } from \"../_modularui/types\";\n\n/**\n * Go back to previous object (back button on form)\n */\nexport const previousObject = (form: FormModel): UpdateModelAction => {\n const newForm = form.clone();\n\n newForm.setPreviousObject();\n\n return updateModel(newForm);\n};\n\n/**\n */\nexport const cancelForm =\n (form: FormModel): ThunkAction =>\n (dispatch: Dispatch, getState: GetState) => {\n if (form.key === \"ChangePassword\" && getState().auth.mustChangePassword) {\n dispatch(startProgress());\n return new Authenticate().logout().then(() => {\n dispatch(logoutSuccess());\n dispatch(reloadApplication());\n dispatch(finishProgress());\n\n return dispatch(goBack());\n });\n }\n\n return dispatch(goBack());\n };\n"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAMA;AACA;AACA;AACO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,IAAD,EAAwC;EACpE,IAAMC,OAAO,GAAGD,IAAI,CAACE,KAAL,EAAhB;EAEAD,OAAO,CAACE,iBAAR;EAEA,OAAO,2BAAYF,OAAZ,CAAP;AACD,CANM;AAQP;AACA;;;;;AACO,IAAMG,UAAU,GACrB,SADWA,UACX,CAACJ,IAAD;EAAA,OACA,UAACK,QAAD,EAAqBC,QAArB,EAA4C;IAC1C,IAAIN,IAAI,CAACO,GAAL,KAAa,gBAAb,IAAiCD,QAAQ,GAAGE,IAAX,CAAgBC,kBAArD,EAAyE;MACvEJ,QAAQ,CAAC,uCAAD,CAAR;MACA,OAAO,IAAIK,qBAAJ,GAAmBC,MAAnB,GAA4BC,IAA5B,CAAiC,YAAM;QAC5CP,QAAQ,CAAC,6BAAD,CAAR;QACAA,QAAQ,CAAC,qCAAD,CAAR;QACAA,QAAQ,CAAC,wCAAD,CAAR;QAEA,OAAOA,QAAQ,CAAC,sBAAD,CAAf;MACD,CANM,CAAP;IAOD;;IAED,OAAOA,QAAQ,CAAC,sBAAD,CAAf;EACD,CAdD;AAAA,CADK"}
1
+ {"version":3,"file":"Form.js","names":["previousObject","form","newForm","clone","setPreviousObject","updateModel","cancelForm","dispatch","getState","key","auth","mustChangePassword","startProgress","Authenticate","logout","then","logoutSuccess","reloadApplication","finishProgress","goBack"],"sources":["../../../src/redux/actions/Form.js"],"sourcesContent":["// @flow\nimport { goBack } from \"../_router/actions\";\nimport { updateModel } from \"../_modularui/actions\";\nimport { logoutSuccess } from \"./SignOut\";\nimport { reloadApplication } from \"./Application\";\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\n\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type { UpdateModelAction } from \"../_modularui/types\";\n\n/**\n * Go back to previous object (back button on form)\n */\nexport const previousObject = (form: FormModel): UpdateModelAction => {\n const newForm = form.clone();\n\n newForm.setPreviousObject();\n\n return updateModel(newForm);\n};\n\n/**\n */\nexport const cancelForm =\n (form: FormModel): ThunkAction =>\n (dispatch: Dispatch, getState: GetState) => {\n if (form.key === \"ChangePassword\" && getState().auth.mustChangePassword) {\n dispatch(startProgress());\n return new Authenticate().logout().then(() => {\n dispatch(logoutSuccess());\n dispatch(reloadApplication());\n dispatch(finishProgress());\n\n return dispatch(goBack());\n });\n }\n\n return dispatch(goBack());\n };\n"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAMA;AACA;AACA;AACO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,IAAD,EAAwC;EACpE,IAAMC,OAAO,GAAGD,IAAI,CAACE,KAAL,EAAhB;EAEAD,OAAO,CAACE,iBAAR;EAEA,OAAO,IAAAC,qBAAA,EAAYH,OAAZ,CAAP;AACD,CANM;AAQP;AACA;;;;;AACO,IAAMI,UAAU,GACrB,SADWA,UACX,CAACL,IAAD;EAAA,OACA,UAACM,QAAD,EAAqBC,QAArB,EAA4C;IAC1C,IAAIP,IAAI,CAACQ,GAAL,KAAa,gBAAb,IAAiCD,QAAQ,GAAGE,IAAX,CAAgBC,kBAArD,EAAyE;MACvEJ,QAAQ,CAAC,IAAAK,gCAAA,GAAD,CAAR;MACA,OAAO,IAAIC,qBAAJ,GAAmBC,MAAnB,GAA4BC,IAA5B,CAAiC,YAAM;QAC5CR,QAAQ,CAAC,IAAAS,sBAAA,GAAD,CAAR;QACAT,QAAQ,CAAC,IAAAU,8BAAA,GAAD,CAAR;QACAV,QAAQ,CAAC,IAAAW,iCAAA,GAAD,CAAR;QAEA,OAAOX,QAAQ,CAAC,IAAAY,eAAA,GAAD,CAAf;MACD,CANM,CAAP;IAOD;;IAED,OAAOZ,QAAQ,CAAC,IAAAY,eAAA,GAAD,CAAf;EACD,CAdD;AAAA,CADK"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormAttributeSet.js","names":["updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","validate","dispatch","newForm","clone","undefined","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","isChanged","hasDynamicValidations"],"sources":["../../../src/redux/actions/FormAttributeSet.js"],"sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { validateFormObject } from \"./FormValidations\";\nimport { autosaveFormObject } from \"./FormAutosave\";\nimport { autosubmitFormObject } from \"./FormAutosubmit\";\n\nimport type { Dispatch, ThunkAction, UpdateFormOptions } from \"../types\";\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\n\n/**\n * Update an attribute on a form\n */\nexport const updateFormAttribute =\n (\n form: FormModel,\n formObject: FormObjectModel,\n attribute: AttributeType,\n inputvalue: string,\n options: UpdateFormOptions = {\n autosubmit: false,\n autosave: false,\n forceUpdate: false,\n validate: true,\n }\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n const newForm = form.clone();\n\n if (options.validate === undefined) {\n options.validate = true;\n }\n\n if (newForm.currentFormObject?.equals(formObject)) {\n newForm.currentFormObject.updateAttribute(attribute, inputvalue);\n } else {\n newForm.completedFormObjects.forEach((completeObject) => {\n if (completeObject.equals(formObject)) {\n completeObject.updateAttribute(attribute, inputvalue);\n }\n });\n }\n\n if (options.autosubmit && newForm.isValid) {\n const autosubmitAction = autosubmitFormObject(\n newForm,\n attribute,\n options.forceUpdate\n );\n if (autosubmitAction) {\n return dispatch(autosubmitAction);\n }\n }\n\n if (options.autosave && newForm.isValid && newForm.isChanged()) {\n dispatch(autosaveFormObject(newForm));\n }\n\n if (\n options.validate &&\n newForm.currentFormObject?.hasDynamicValidations &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\")\n ) {\n // server form validations happens async, don't wait for the form to return\n dispatch(validateFormObject(newForm));\n }\n return dispatch(updateModel(newForm));\n };\n"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;EAAA,IAKEC,OALF,uEAK+B;IAC3BC,UAAU,EAAE,KADe;IAE3BC,QAAQ,EAAE,KAFiB;IAG3BC,WAAW,EAAE,KAHc;IAI3BC,QAAQ,EAAE;EAJiB,CAL/B;EAAA,OAYA,UAACC,QAAD,EAAwB;IAAA;;IACtB,IAAMC,OAAO,GAAGV,IAAI,CAACW,KAAL,EAAhB;;IAEA,IAAIP,OAAO,CAACI,QAAR,KAAqBI,SAAzB,EAAoC;MAClCR,OAAO,CAACI,QAAR,GAAmB,IAAnB;IACD;;IAED,6BAAIE,OAAO,CAACG,iBAAZ,kDAAI,sBAA2BC,MAA3B,CAAkCb,UAAlC,CAAJ,EAAmD;MACjDS,OAAO,CAACG,iBAAR,CAA0BE,eAA1B,CAA0Cb,SAA1C,EAAqDC,UAArD;IACD,CAFD,MAEO;MACLO,OAAO,CAACM,oBAAR,CAA6BC,OAA7B,CAAqC,UAACC,cAAD,EAAoB;QACvD,IAAIA,cAAc,CAACJ,MAAf,CAAsBb,UAAtB,CAAJ,EAAuC;UACrCiB,cAAc,CAACH,eAAf,CAA+Bb,SAA/B,EAA0CC,UAA1C;QACD;MACF,CAJD;IAKD;;IAED,IAAIC,OAAO,CAACC,UAAR,IAAsBK,OAAO,CAACS,OAAlC,EAA2C;MACzC,IAAMC,gBAAgB,GAAG,0CACvBV,OADuB,EAEvBR,SAFuB,EAGvBE,OAAO,CAACG,WAHe,CAAzB;;MAKA,IAAIa,gBAAJ,EAAsB;QACpB,OAAOX,QAAQ,CAACW,gBAAD,CAAf;MACD;IACF;;IAED,IAAIhB,OAAO,CAACE,QAAR,IAAoBI,OAAO,CAACS,OAA5B,IAAuCT,OAAO,CAACW,SAAR,EAA3C,EAAgE;MAC9DZ,QAAQ,CAAC,sCAAmBC,OAAnB,CAAD,CAAR;IACD;;IAED,IACEN,OAAO,CAACI,QAAR,8BACAE,OAAO,CAACG,iBADR,mDACA,uBAA2BS,qBAD3B,IAEA,0BAAW,+BAAX,CAHF,EAIE;MACA;MACAb,QAAQ,CAAC,yCAAmBC,OAAnB,CAAD,CAAR;IACD;;IACD,OAAOD,QAAQ,CAAC,0BAAYC,OAAZ,CAAD,CAAf;EACD,CArDD;AAAA,CADK"}
1
+ {"version":3,"file":"FormAttributeSet.js","names":["updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","validate","dispatch","newForm","clone","undefined","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","autosubmitFormObject","isChanged","autosaveFormObject","hasDynamicValidations","getSetting","validateFormObject","updateModel"],"sources":["../../../src/redux/actions/FormAttributeSet.js"],"sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { validateFormObject } from \"./FormValidations\";\nimport { autosaveFormObject } from \"./FormAutosave\";\nimport { autosubmitFormObject } from \"./FormAutosubmit\";\n\nimport type { Dispatch, ThunkAction, UpdateFormOptions } from \"../types\";\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\n\n/**\n * Update an attribute on a form\n */\nexport const updateFormAttribute =\n (\n form: FormModel,\n formObject: FormObjectModel,\n attribute: AttributeType,\n inputvalue: string,\n options: UpdateFormOptions = {\n autosubmit: false,\n autosave: false,\n forceUpdate: false,\n validate: true,\n }\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n const newForm = form.clone();\n\n if (options.validate === undefined) {\n options.validate = true;\n }\n\n if (newForm.currentFormObject?.equals(formObject)) {\n newForm.currentFormObject.updateAttribute(attribute, inputvalue);\n } else {\n newForm.completedFormObjects.forEach((completeObject) => {\n if (completeObject.equals(formObject)) {\n completeObject.updateAttribute(attribute, inputvalue);\n }\n });\n }\n\n if (options.autosubmit && newForm.isValid) {\n const autosubmitAction = autosubmitFormObject(\n newForm,\n attribute,\n options.forceUpdate\n );\n if (autosubmitAction) {\n return dispatch(autosubmitAction);\n }\n }\n\n if (options.autosave && newForm.isValid && newForm.isChanged()) {\n dispatch(autosaveFormObject(newForm));\n }\n\n if (\n options.validate &&\n newForm.currentFormObject?.hasDynamicValidations &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\")\n ) {\n // server form validations happens async, don't wait for the form to return\n dispatch(validateFormObject(newForm));\n }\n return dispatch(updateModel(newForm));\n };\n"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;EAAA,IAKEC,OALF,uEAK+B;IAC3BC,UAAU,EAAE,KADe;IAE3BC,QAAQ,EAAE,KAFiB;IAG3BC,WAAW,EAAE,KAHc;IAI3BC,QAAQ,EAAE;EAJiB,CAL/B;EAAA,OAYA,UAACC,QAAD,EAAwB;IAAA;;IACtB,IAAMC,OAAO,GAAGV,IAAI,CAACW,KAAL,EAAhB;;IAEA,IAAIP,OAAO,CAACI,QAAR,KAAqBI,SAAzB,EAAoC;MAClCR,OAAO,CAACI,QAAR,GAAmB,IAAnB;IACD;;IAED,6BAAIE,OAAO,CAACG,iBAAZ,kDAAI,sBAA2BC,MAA3B,CAAkCb,UAAlC,CAAJ,EAAmD;MACjDS,OAAO,CAACG,iBAAR,CAA0BE,eAA1B,CAA0Cb,SAA1C,EAAqDC,UAArD;IACD,CAFD,MAEO;MACLO,OAAO,CAACM,oBAAR,CAA6BC,OAA7B,CAAqC,UAACC,cAAD,EAAoB;QACvD,IAAIA,cAAc,CAACJ,MAAf,CAAsBb,UAAtB,CAAJ,EAAuC;UACrCiB,cAAc,CAACH,eAAf,CAA+Bb,SAA/B,EAA0CC,UAA1C;QACD;MACF,CAJD;IAKD;;IAED,IAAIC,OAAO,CAACC,UAAR,IAAsBK,OAAO,CAACS,OAAlC,EAA2C;MACzC,IAAMC,gBAAgB,GAAG,IAAAC,oCAAA,EACvBX,OADuB,EAEvBR,SAFuB,EAGvBE,OAAO,CAACG,WAHe,CAAzB;;MAKA,IAAIa,gBAAJ,EAAsB;QACpB,OAAOX,QAAQ,CAACW,gBAAD,CAAf;MACD;IACF;;IAED,IAAIhB,OAAO,CAACE,QAAR,IAAoBI,OAAO,CAACS,OAA5B,IAAuCT,OAAO,CAACY,SAAR,EAA3C,EAAgE;MAC9Db,QAAQ,CAAC,IAAAc,gCAAA,EAAmBb,OAAnB,CAAD,CAAR;IACD;;IAED,IACEN,OAAO,CAACI,QAAR,8BACAE,OAAO,CAACG,iBADR,mDACA,uBAA2BW,qBAD3B,IAEA,IAAAC,oBAAA,EAAW,+BAAX,CAHF,EAIE;MACA;MACAhB,QAAQ,CAAC,IAAAiB,mCAAA,EAAmBhB,OAAnB,CAAD,CAAR;IACD;;IACD,OAAOD,QAAQ,CAAC,IAAAkB,oBAAA,EAAYjB,OAAZ,CAAD,CAAf;EACD,CArDD;AAAA,CADK"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormAttributeSetRepeatable.js","names":["addRepeatableAttributeSet","form","newForm","clone","addEmptyFormObject","cancelRepeatableAttributeSet","formObject","removeFormObject","removeRepeatableAttributeSet"],"sources":["../../../src/redux/actions/FormAttributeSetRepeatable.js"],"sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\nimport type { UpdateModelAction } from \"../_modularui/types\";\n\n/**\n */\nexport const addRepeatableAttributeSet = (\n form: FormModel\n): UpdateModelAction => {\n const newForm = form.clone();\n\n newForm.addEmptyFormObject();\n\n return updateModel(newForm);\n};\n\n/**\n */\nexport const cancelRepeatableAttributeSet = (\n form: FormModel,\n formObject: FormObjectModel\n): UpdateModelAction => {\n const newForm = form.clone();\n\n newForm.addEmptyFormObject();\n newForm.removeFormObject(formObject);\n\n return updateModel(newForm);\n};\n\n/**\n */\nexport const removeRepeatableAttributeSet = (\n form: FormModel,\n formObject: FormObjectModel\n): UpdateModelAction => {\n const newForm = form.clone();\n\n newForm.removeFormObject(formObject);\n\n return updateModel(newForm);\n};\n"],"mappings":";;;;;;;AACA;;AAMA;AACA;AACO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,CACvCC,IADuC,EAEjB;EACtB,IAAMC,OAAO,GAAGD,IAAI,CAACE,KAAL,EAAhB;EAEAD,OAAO,CAACE,kBAAR;EAEA,OAAO,0BAAYF,OAAZ,CAAP;AACD,CARM;AAUP;AACA;;;;;AACO,IAAMG,4BAA4B,GAAG,SAA/BA,4BAA+B,CAC1CJ,IAD0C,EAE1CK,UAF0C,EAGpB;EACtB,IAAMJ,OAAO,GAAGD,IAAI,CAACE,KAAL,EAAhB;EAEAD,OAAO,CAACE,kBAAR;EACAF,OAAO,CAACK,gBAAR,CAAyBD,UAAzB;EAEA,OAAO,0BAAYJ,OAAZ,CAAP;AACD,CAVM;AAYP;AACA;;;;;AACO,IAAMM,4BAA4B,GAAG,SAA/BA,4BAA+B,CAC1CP,IAD0C,EAE1CK,UAF0C,EAGpB;EACtB,IAAMJ,OAAO,GAAGD,IAAI,CAACE,KAAL,EAAhB;EAEAD,OAAO,CAACK,gBAAR,CAAyBD,UAAzB;EAEA,OAAO,0BAAYJ,OAAZ,CAAP;AACD,CATM"}
1
+ {"version":3,"file":"FormAttributeSetRepeatable.js","names":["addRepeatableAttributeSet","form","newForm","clone","addEmptyFormObject","updateModel","cancelRepeatableAttributeSet","formObject","removeFormObject","removeRepeatableAttributeSet"],"sources":["../../../src/redux/actions/FormAttributeSetRepeatable.js"],"sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\nimport type { UpdateModelAction } from \"../_modularui/types\";\n\n/**\n */\nexport const addRepeatableAttributeSet = (\n form: FormModel\n): UpdateModelAction => {\n const newForm = form.clone();\n\n newForm.addEmptyFormObject();\n\n return updateModel(newForm);\n};\n\n/**\n */\nexport const cancelRepeatableAttributeSet = (\n form: FormModel,\n formObject: FormObjectModel\n): UpdateModelAction => {\n const newForm = form.clone();\n\n newForm.addEmptyFormObject();\n newForm.removeFormObject(formObject);\n\n return updateModel(newForm);\n};\n\n/**\n */\nexport const removeRepeatableAttributeSet = (\n form: FormModel,\n formObject: FormObjectModel\n): UpdateModelAction => {\n const newForm = form.clone();\n\n newForm.removeFormObject(formObject);\n\n return updateModel(newForm);\n};\n"],"mappings":";;;;;;;AACA;;AAMA;AACA;AACO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,CACvCC,IADuC,EAEjB;EACtB,IAAMC,OAAO,GAAGD,IAAI,CAACE,KAAL,EAAhB;EAEAD,OAAO,CAACE,kBAAR;EAEA,OAAO,IAAAC,oBAAA,EAAYH,OAAZ,CAAP;AACD,CARM;AAUP;AACA;;;;;AACO,IAAMI,4BAA4B,GAAG,SAA/BA,4BAA+B,CAC1CL,IAD0C,EAE1CM,UAF0C,EAGpB;EACtB,IAAML,OAAO,GAAGD,IAAI,CAACE,KAAL,EAAhB;EAEAD,OAAO,CAACE,kBAAR;EACAF,OAAO,CAACM,gBAAR,CAAyBD,UAAzB;EAEA,OAAO,IAAAF,oBAAA,EAAYH,OAAZ,CAAP;AACD,CAVM;AAYP;AACA;;;;;AACO,IAAMO,4BAA4B,GAAG,SAA/BA,4BAA+B,CAC1CR,IAD0C,EAE1CM,UAF0C,EAGpB;EACtB,IAAML,OAAO,GAAGD,IAAI,CAACE,KAAL,EAAhB;EAEAD,OAAO,CAACM,gBAAR,CAAyBD,UAAzB;EAEA,OAAO,IAAAF,oBAAA,EAAYH,OAAZ,CAAP;AACD,CATM"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormAutosave.js","names":["updateAutosave","status","model","type","payload","autosave","dispatch","form","AUTOSAVE_STATUS","START","formdata","getFormData","ModularUIRequest","selfhref","setParameter","method","HTTP_METHODS","POST","data","childmodels","locale","fetch","then","savedForm","FormModel","lastServerUpdate","FINISHED","debouncedAutosave","VALIDATE_DEBOUNCE_TIMEOUT","autosaveFormObject"],"sources":["../../../src/redux/actions/FormAutosave.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\nimport FormModel from \"../../models/form/FormModel\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n AUTOSAVE_STATUS,\n} from \"../../constants/Constants\";\n\nimport { updateModel } from \"../_modularui/actions\";\n\nimport type { UpdateAutosaveAction, ThunkAction, Dispatch } from \"../types\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateAutosave = (\n status: $Keys<typeof AUTOSAVE_STATUS>,\n model: FormModel\n): UpdateAutosaveAction => ({\n type: \"UPDATE_AUTOSAVE_STATUS\",\n payload: {\n status,\n model,\n },\n});\n\n/**\n */\nconst autosave = (dispatch: Dispatch, form: FormModel) => {\n dispatch(updateAutosave(AUTOSAVE_STATUS.START, form));\n\n const formdata = form.getFormData(true, false);\n\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"true\"), {\n method: HTTP_METHODS.POST,\n data: formdata,\n childmodels: false,\n locale: form.locale,\n })\n .fetch()\n .then((savedForm) => {\n if (savedForm instanceof FormModel) {\n // update last server update to indicate an update has happened\n // send the existing form to prevent updates in the ui based on autosave results\n form.lastServerUpdate = savedForm.lastServerUpdate;\n\n dispatch(updateModel(form));\n dispatch(updateAutosave(AUTOSAVE_STATUS.FINISHED, savedForm));\n }\n });\n};\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedAutosave = debounce((dispatch, form) => {\n autosave(dispatch, form);\n}, VALIDATE_DEBOUNCE_TIMEOUT);\n\n/**\n */\nexport const autosaveFormObject =\n (form: FormModel): ThunkAction =>\n (dispatch) =>\n debouncedAutosave(dispatch, form);\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AACA;;AAEA;;AAMA;;AAIA;AACA;AACA;AACA;AACA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CACrBC,MADqB,EAErBC,KAFqB;EAAA,OAGK;IAC1BC,IAAI,EAAE,wBADoB;IAE1BC,OAAO,EAAE;MACPH,MAAM,EAANA,MADO;MAEPC,KAAK,EAALA;IAFO;EAFiB,CAHL;AAAA,CAAvB;AAWA;AACA;;;AACA,IAAMG,QAAQ,GAAG,SAAXA,QAAW,CAACC,QAAD,EAAqBC,IAArB,EAAyC;EACxDD,QAAQ,CAACN,cAAc,CAACQ,2BAAgBC,KAAjB,EAAwBF,IAAxB,CAAf,CAAR;EAEA,IAAMG,QAAQ,GAAGH,IAAI,CAACI,WAAL,CAAiB,IAAjB,EAAuB,KAAvB,CAAjB;EAEA,IAAIC,yBAAJ,CAAqBL,IAAI,CAACM,QAAL,CAAcC,YAAd,CAA2B,QAA3B,EAAqC,MAArC,CAArB,EAAmE;IACjEC,MAAM,EAAEC,wBAAaC,IAD4C;IAEjEC,IAAI,EAAER,QAF2D;IAGjES,WAAW,EAAE,KAHoD;IAIjEC,MAAM,EAAEb,IAAI,CAACa;EAJoD,CAAnE,EAMGC,KANH,GAOGC,IAPH,CAOQ,UAACC,SAAD,EAAe;IACnB,IAAIA,SAAS,YAAYC,kBAAzB,EAAoC;MAClC;MACA;MACAjB,IAAI,CAACkB,gBAAL,GAAwBF,SAAS,CAACE,gBAAlC;MAEAnB,QAAQ,CAAC,0BAAYC,IAAZ,CAAD,CAAR;MACAD,QAAQ,CAACN,cAAc,CAACQ,2BAAgBkB,QAAjB,EAA2BH,SAA3B,CAAf,CAAR;IACD;EACF,CAhBH;AAiBD,CAtBD;AAwBA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMI,iBAAiB,GAAG,uBAAS,UAACrB,QAAD,EAAWC,IAAX,EAAoB;EACrDF,QAAQ,CAACC,QAAD,EAAWC,IAAX,CAAR;AACD,CAFyB,EAEvBqB,oCAFuB,CAA1B;AAIA;AACA;;AACO,IAAMC,kBAAkB,GAC7B,SADWA,kBACX,CAACtB,IAAD;EAAA,OACA,UAACD,QAAD;IAAA,OACEqB,iBAAiB,CAACrB,QAAD,EAAWC,IAAX,CADnB;EAAA,CADA;AAAA,CADK"}
1
+ {"version":3,"file":"FormAutosave.js","names":["updateAutosave","status","model","type","payload","autosave","dispatch","form","AUTOSAVE_STATUS","START","formdata","getFormData","ModularUIRequest","selfhref","setParameter","method","HTTP_METHODS","POST","data","childmodels","locale","fetch","then","savedForm","FormModel","lastServerUpdate","updateModel","FINISHED","debouncedAutosave","debounce","VALIDATE_DEBOUNCE_TIMEOUT","autosaveFormObject"],"sources":["../../../src/redux/actions/FormAutosave.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\nimport FormModel from \"../../models/form/FormModel\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n AUTOSAVE_STATUS,\n} from \"../../constants/Constants\";\n\nimport { updateModel } from \"../_modularui/actions\";\n\nimport type { UpdateAutosaveAction, ThunkAction, Dispatch } from \"../types\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateAutosave = (\n status: $Keys<typeof AUTOSAVE_STATUS>,\n model: FormModel\n): UpdateAutosaveAction => ({\n type: \"UPDATE_AUTOSAVE_STATUS\",\n payload: {\n status,\n model,\n },\n});\n\n/**\n */\nconst autosave = (dispatch: Dispatch, form: FormModel) => {\n dispatch(updateAutosave(AUTOSAVE_STATUS.START, form));\n\n const formdata = form.getFormData(true, false);\n\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"true\"), {\n method: HTTP_METHODS.POST,\n data: formdata,\n childmodels: false,\n locale: form.locale,\n })\n .fetch()\n .then((savedForm) => {\n if (savedForm instanceof FormModel) {\n // update last server update to indicate an update has happened\n // send the existing form to prevent updates in the ui based on autosave results\n form.lastServerUpdate = savedForm.lastServerUpdate;\n\n dispatch(updateModel(form));\n dispatch(updateAutosave(AUTOSAVE_STATUS.FINISHED, savedForm));\n }\n });\n};\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedAutosave = debounce((dispatch, form) => {\n autosave(dispatch, form);\n}, VALIDATE_DEBOUNCE_TIMEOUT);\n\n/**\n */\nexport const autosaveFormObject =\n (form: FormModel): ThunkAction =>\n (dispatch) =>\n debouncedAutosave(dispatch, form);\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AACA;;AAEA;;AAMA;;AAIA;AACA;AACA;AACA;AACA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CACrBC,MADqB,EAErBC,KAFqB;EAAA,OAGK;IAC1BC,IAAI,EAAE,wBADoB;IAE1BC,OAAO,EAAE;MACPH,MAAM,EAANA,MADO;MAEPC,KAAK,EAALA;IAFO;EAFiB,CAHL;AAAA,CAAvB;AAWA;AACA;;;AACA,IAAMG,QAAQ,GAAG,SAAXA,QAAW,CAACC,QAAD,EAAqBC,IAArB,EAAyC;EACxDD,QAAQ,CAACN,cAAc,CAACQ,0BAAA,CAAgBC,KAAjB,EAAwBF,IAAxB,CAAf,CAAR;EAEA,IAAMG,QAAQ,GAAGH,IAAI,CAACI,WAAL,CAAiB,IAAjB,EAAuB,KAAvB,CAAjB;EAEA,IAAIC,yBAAJ,CAAqBL,IAAI,CAACM,QAAL,CAAcC,YAAd,CAA2B,QAA3B,EAAqC,MAArC,CAArB,EAAmE;IACjEC,MAAM,EAAEC,uBAAA,CAAaC,IAD4C;IAEjEC,IAAI,EAAER,QAF2D;IAGjES,WAAW,EAAE,KAHoD;IAIjEC,MAAM,EAAEb,IAAI,CAACa;EAJoD,CAAnE,EAMGC,KANH,GAOGC,IAPH,CAOQ,UAACC,SAAD,EAAe;IACnB,IAAIA,SAAS,YAAYC,kBAAzB,EAAoC;MAClC;MACA;MACAjB,IAAI,CAACkB,gBAAL,GAAwBF,SAAS,CAACE,gBAAlC;MAEAnB,QAAQ,CAAC,IAAAoB,oBAAA,EAAYnB,IAAZ,CAAD,CAAR;MACAD,QAAQ,CAACN,cAAc,CAACQ,0BAAA,CAAgBmB,QAAjB,EAA2BJ,SAA3B,CAAf,CAAR;IACD;EACF,CAhBH;AAiBD,CAtBD;AAwBA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMK,iBAAiB,GAAG,IAAAC,iBAAA,EAAS,UAACvB,QAAD,EAAWC,IAAX,EAAoB;EACrDF,QAAQ,CAACC,QAAD,EAAWC,IAAX,CAAR;AACD,CAFyB,EAEvBuB,oCAFuB,CAA1B;AAIA;AACA;;AACO,IAAMC,kBAAkB,GAC7B,SADWA,kBACX,CAACxB,IAAD;EAAA,OACA,UAACD,QAAD;IAAA,OACEsB,iBAAiB,CAACtB,QAAD,EAAWC,IAAX,CADnB;EAAA,CADA;AAAA,CADK"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormAutosubmit.js","names":["autosubmitFormObject","form","attribute","forceUpdate","allObjects","length","currentFormObject","hasAttributeByKey","key","setPreviousObject","isChanged","connectKey","selfhref","method","HTTP_METHODS","POST","data","formdata","updateModel"],"sources":["../../../src/redux/actions/FormAutosubmit.js"],"sourcesContent":["// @flow\nimport { loadModularUI } from \"../_modularui/actions\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type { ThunkAction } from \"../types\";\n\n/**\n */\nexport const autosubmitFormObject = (\n form: FormModel,\n attribute: AttributeType,\n forceUpdate: boolean = false\n): ?ThunkAction => {\n // As long as we have form objects,\n // and the current attribute is not found in the current form object, go back.\n // When a form has a result, the current form object is null\n while (\n form.allObjects.length > 0 &&\n (!form.currentFormObject ||\n !form.currentFormObject.hasAttributeByKey(attribute.key))\n ) {\n form.setPreviousObject();\n }\n\n if (form.isChanged() || forceUpdate) {\n return loadModularUI(form.connectKey, form.selfhref, {\n method: HTTP_METHODS.POST,\n data: form.formdata,\n updateModel: form,\n });\n }\n\n return null;\n};\n"],"mappings":";;;;;;;AACA;;AACA;;AAMA;AACA;AACO,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAClCC,IADkC,EAElCC,SAFkC,EAIjB;EAAA,IADjBC,WACiB,uEADM,KACN;;EACjB;EACA;EACA;EACA,OACEF,IAAI,CAACG,UAAL,CAAgBC,MAAhB,GAAyB,CAAzB,KACC,CAACJ,IAAI,CAACK,iBAAN,IACC,CAACL,IAAI,CAACK,iBAAL,CAAuBC,iBAAvB,CAAyCL,SAAS,CAACM,GAAnD,CAFH,CADF,EAIE;IACAP,IAAI,CAACQ,iBAAL;EACD;;EAED,IAAIR,IAAI,CAACS,SAAL,MAAoBP,WAAxB,EAAqC;IACnC,OAAO,4BAAcF,IAAI,CAACU,UAAnB,EAA+BV,IAAI,CAACW,QAApC,EAA8C;MACnDC,MAAM,EAAEC,wBAAaC,IAD8B;MAEnDC,IAAI,EAAEf,IAAI,CAACgB,QAFwC;MAGnDC,WAAW,EAAEjB;IAHsC,CAA9C,CAAP;EAKD;;EAED,OAAO,IAAP;AACD,CAzBM"}
1
+ {"version":3,"file":"FormAutosubmit.js","names":["autosubmitFormObject","form","attribute","forceUpdate","allObjects","length","currentFormObject","hasAttributeByKey","key","setPreviousObject","isChanged","loadModularUI","connectKey","selfhref","method","HTTP_METHODS","POST","data","formdata","updateModel"],"sources":["../../../src/redux/actions/FormAutosubmit.js"],"sourcesContent":["// @flow\nimport { loadModularUI } from \"../_modularui/actions\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type { ThunkAction } from \"../types\";\n\n/**\n */\nexport const autosubmitFormObject = (\n form: FormModel,\n attribute: AttributeType,\n forceUpdate: boolean = false\n): ?ThunkAction => {\n // As long as we have form objects,\n // and the current attribute is not found in the current form object, go back.\n // When a form has a result, the current form object is null\n while (\n form.allObjects.length > 0 &&\n (!form.currentFormObject ||\n !form.currentFormObject.hasAttributeByKey(attribute.key))\n ) {\n form.setPreviousObject();\n }\n\n if (form.isChanged() || forceUpdate) {\n return loadModularUI(form.connectKey, form.selfhref, {\n method: HTTP_METHODS.POST,\n data: form.formdata,\n updateModel: form,\n });\n }\n\n return null;\n};\n"],"mappings":";;;;;;;AACA;;AACA;;AAMA;AACA;AACO,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAClCC,IADkC,EAElCC,SAFkC,EAIjB;EAAA,IADjBC,WACiB,uEADM,KACN;;EACjB;EACA;EACA;EACA,OACEF,IAAI,CAACG,UAAL,CAAgBC,MAAhB,GAAyB,CAAzB,KACC,CAACJ,IAAI,CAACK,iBAAN,IACC,CAACL,IAAI,CAACK,iBAAL,CAAuBC,iBAAvB,CAAyCL,SAAS,CAACM,GAAnD,CAFH,CADF,EAIE;IACAP,IAAI,CAACQ,iBAAL;EACD;;EAED,IAAIR,IAAI,CAACS,SAAL,MAAoBP,WAAxB,EAAqC;IACnC,OAAO,IAAAQ,sBAAA,EAAcV,IAAI,CAACW,UAAnB,EAA+BX,IAAI,CAACY,QAApC,EAA8C;MACnDC,MAAM,EAAEC,uBAAA,CAAaC,IAD8B;MAEnDC,IAAI,EAAEhB,IAAI,CAACiB,QAFwC;MAGnDC,WAAW,EAAElB;IAHsC,CAA9C,CAAP;EAKD;;EAED,OAAO,IAAP;AACD,CAzBM"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormValidations.js","names":["updateValidations","form","formWithValidations","dispatch","getState","currentForm","modularui","connectKey","validatedForm","model","clone","FormModel","data","debouncedValidateFormObject","ModularUIRequest","selfhref","setParameter","method","HTTP_METHODS","POST","validationData","childmodels","isValidationRequest","locale","fetch","then","VALIDATE_DEBOUNCE_TIMEOUT","leading","trailing","validateFormObject"],"sources":["../../../src/redux/actions/FormValidations.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport { updateModel } from \"../_modularui/actions\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n} from \"../../constants/Constants\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { Dispatch, ThunkAction } from \"../types\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateValidations =\n (form, formWithValidations) => (dispatch, getState) => {\n const currentForm = getState().modularui[form.connectKey];\n\n if (currentForm) {\n const validatedForm = currentForm.model.clone(true);\n if (validatedForm instanceof FormModel) {\n validatedForm.updateValidations(formWithValidations.data);\n }\n\n dispatch(updateModel(validatedForm));\n }\n };\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedValidateFormObject = debounce<\n (dispatch: Dispatch, form: FormModel) => void\n>(\n (dispatch, form: FormModel) => {\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"false\"), {\n method: HTTP_METHODS.POST,\n data: form.validationData,\n childmodels: false,\n isValidationRequest: true,\n locale: form.locale,\n })\n .fetch()\n .then((formWithValidations) =>\n dispatch(updateValidations(form, formWithValidations))\n );\n },\n VALIDATE_DEBOUNCE_TIMEOUT,\n {\n leading: true,\n trailing: true,\n }\n);\n\n/**\n */\nexport const validateFormObject =\n (form: FormModel): ThunkAction =>\n (dispatch) =>\n debouncedValidateFormObject(dispatch, form);\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAEA;;AAEA;;AAKA;;AAIA;AACA;AACA;AACA;AACA,IAAMA,iBAAiB,GACrB,SADIA,iBACJ,CAACC,IAAD,EAAOC,mBAAP;EAAA,OAA+B,UAACC,QAAD,EAAWC,QAAX,EAAwB;IACrD,IAAMC,WAAW,GAAGD,QAAQ,GAAGE,SAAX,CAAqBL,IAAI,CAACM,UAA1B,CAApB;;IAEA,IAAIF,WAAJ,EAAiB;MACf,IAAMG,aAAa,GAAGH,WAAW,CAACI,KAAZ,CAAkBC,KAAlB,CAAwB,IAAxB,CAAtB;;MACA,IAAIF,aAAa,YAAYG,kBAA7B,EAAwC;QACtCH,aAAa,CAACR,iBAAd,CAAgCE,mBAAmB,CAACU,IAApD;MACD;;MAEDT,QAAQ,CAAC,0BAAYK,aAAZ,CAAD,CAAR;IACD;EACF,CAXD;AAAA,CADF;AAcA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMK,2BAA2B,GAAG,uBAGlC,UAACV,QAAD,EAAWF,IAAX,EAA+B;EAC7B,IAAIa,yBAAJ,CAAqBb,IAAI,CAACc,QAAL,CAAcC,YAAd,CAA2B,QAA3B,EAAqC,OAArC,CAArB,EAAoE;IAClEC,MAAM,EAAEC,wBAAaC,IAD6C;IAElEP,IAAI,EAAEX,IAAI,CAACmB,cAFuD;IAGlEC,WAAW,EAAE,KAHqD;IAIlEC,mBAAmB,EAAE,IAJ6C;IAKlEC,MAAM,EAAEtB,IAAI,CAACsB;EALqD,CAApE,EAOGC,KAPH,GAQGC,IARH,CAQQ,UAACvB,mBAAD;IAAA,OACJC,QAAQ,CAACH,iBAAiB,CAACC,IAAD,EAAOC,mBAAP,CAAlB,CADJ;EAAA,CARR;AAWD,CAfiC,EAgBlCwB,oCAhBkC,EAiBlC;EACEC,OAAO,EAAE,IADX;EAEEC,QAAQ,EAAE;AAFZ,CAjBkC,CAApC;AAuBA;AACA;;AACO,IAAMC,kBAAkB,GAC7B,SADWA,kBACX,CAAC5B,IAAD;EAAA,OACA,UAACE,QAAD;IAAA,OACEU,2BAA2B,CAACV,QAAD,EAAWF,IAAX,CAD7B;EAAA,CADA;AAAA,CADK"}
1
+ {"version":3,"file":"FormValidations.js","names":["updateValidations","form","formWithValidations","dispatch","getState","currentForm","modularui","connectKey","validatedForm","model","clone","FormModel","data","updateModel","debouncedValidateFormObject","debounce","ModularUIRequest","selfhref","setParameter","method","HTTP_METHODS","POST","validationData","childmodels","isValidationRequest","locale","fetch","then","VALIDATE_DEBOUNCE_TIMEOUT","leading","trailing","validateFormObject"],"sources":["../../../src/redux/actions/FormValidations.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport { updateModel } from \"../_modularui/actions\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n} from \"../../constants/Constants\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { Dispatch, ThunkAction } from \"../types\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateValidations =\n (form, formWithValidations) => (dispatch, getState) => {\n const currentForm = getState().modularui[form.connectKey];\n\n if (currentForm) {\n const validatedForm = currentForm.model.clone(true);\n if (validatedForm instanceof FormModel) {\n validatedForm.updateValidations(formWithValidations.data);\n }\n\n dispatch(updateModel(validatedForm));\n }\n };\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedValidateFormObject = debounce<\n (dispatch: Dispatch, form: FormModel) => void\n>(\n (dispatch, form: FormModel) => {\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"false\"), {\n method: HTTP_METHODS.POST,\n data: form.validationData,\n childmodels: false,\n isValidationRequest: true,\n locale: form.locale,\n })\n .fetch()\n .then((formWithValidations) =>\n dispatch(updateValidations(form, formWithValidations))\n );\n },\n VALIDATE_DEBOUNCE_TIMEOUT,\n {\n leading: true,\n trailing: true,\n }\n);\n\n/**\n */\nexport const validateFormObject =\n (form: FormModel): ThunkAction =>\n (dispatch) =>\n debouncedValidateFormObject(dispatch, form);\n"],"mappings":";;;;;;;;;AACA;;AAEA;;AAEA;;AAEA;;AAKA;;AAIA;AACA;AACA;AACA;AACA,IAAMA,iBAAiB,GACrB,SADIA,iBACJ,CAACC,IAAD,EAAOC,mBAAP;EAAA,OAA+B,UAACC,QAAD,EAAWC,QAAX,EAAwB;IACrD,IAAMC,WAAW,GAAGD,QAAQ,GAAGE,SAAX,CAAqBL,IAAI,CAACM,UAA1B,CAApB;;IAEA,IAAIF,WAAJ,EAAiB;MACf,IAAMG,aAAa,GAAGH,WAAW,CAACI,KAAZ,CAAkBC,KAAlB,CAAwB,IAAxB,CAAtB;;MACA,IAAIF,aAAa,YAAYG,kBAA7B,EAAwC;QACtCH,aAAa,CAACR,iBAAd,CAAgCE,mBAAmB,CAACU,IAApD;MACD;;MAEDT,QAAQ,CAAC,IAAAU,oBAAA,EAAYL,aAAZ,CAAD,CAAR;IACD;EACF,CAXD;AAAA,CADF;AAcA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMM,2BAA2B,GAAG,IAAAC,iBAAA,EAGlC,UAACZ,QAAD,EAAWF,IAAX,EAA+B;EAC7B,IAAIe,yBAAJ,CAAqBf,IAAI,CAACgB,QAAL,CAAcC,YAAd,CAA2B,QAA3B,EAAqC,OAArC,CAArB,EAAoE;IAClEC,MAAM,EAAEC,uBAAA,CAAaC,IAD6C;IAElET,IAAI,EAAEX,IAAI,CAACqB,cAFuD;IAGlEC,WAAW,EAAE,KAHqD;IAIlEC,mBAAmB,EAAE,IAJ6C;IAKlEC,MAAM,EAAExB,IAAI,CAACwB;EALqD,CAApE,EAOGC,KAPH,GAQGC,IARH,CAQQ,UAACzB,mBAAD;IAAA,OACJC,QAAQ,CAACH,iBAAiB,CAACC,IAAD,EAAOC,mBAAP,CAAlB,CADJ;EAAA,CARR;AAWD,CAfiC,EAgBlC0B,oCAhBkC,EAiBlC;EACEC,OAAO,EAAE,IADX;EAEEC,QAAQ,EAAE;AAFZ,CAjBkC,CAApC;AAuBA;AACA;;AACO,IAAMC,kBAAkB,GAC7B,SADWA,kBACX,CAAC9B,IAAD;EAAA,OACA,UAACE,QAAD;IAAA,OACEW,2BAA2B,CAACX,QAAD,EAAWF,IAAX,CAD7B;EAAA,CADA;AAAA,CADK"}
@@ -1 +1 @@
1
- {"version":3,"file":"Notification.js","names":["dismissNotification","type","showNotification","message","error","timeout","dispatch","payload","setTimeout","getNotificationMessageId","form","actiontype","showFormNotification","NOTIFICATION_TYPES","SUCCESS","id","showXHRErrorNotification","ERROR","defaultMessage","parameters","properties"],"sources":["../../../src/redux/actions/Notification.js"],"sourcesContent":["// @flow\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { NOTIFICATION_TYPES } from \"../../constants/Constants\";\n\nimport type { DismissNotificationAction, ThunkAction } from \"../types\";\nimport type { MessageObject } from \"../../i18n/types\";\nimport type ErrorResponse from \"../../models/error/ErrorResponse\";\nimport type FormModel from \"../../models/form/FormModel\";\n\n/**\n * Dismiss notification message\n */\nexport const dismissNotification = (): DismissNotificationAction => ({\n type: \"DISMISS_NOTIFICATION\",\n});\n\n/**\n */\nexport const showNotification =\n (\n type: $Keys<typeof NOTIFICATION_TYPES>,\n message: MessageObject,\n error?: ?ErrorResponse,\n timeout?: ?number\n ): ThunkAction =>\n (dispatch) => {\n dispatch({\n type: \"SHOW_NOTIFICATION\",\n payload: {\n type,\n message,\n error,\n },\n });\n\n if (timeout) {\n setTimeout(() => {\n dispatch(dismissNotification());\n }, timeout);\n }\n };\n\n/**\n */\nconst getNotificationMessageId = (form) => {\n if (form.actiontype === \"create\") {\n return \"Notification.Msg.Create\";\n }\n\n if (form.actiontype === \"update\") {\n return \"Notification.Msg.Update\";\n }\n\n if (form.actiontype === \"delete\") {\n return \"Notification.Msg.Delete\";\n }\n\n return \"Notification.Msg.Generic\";\n};\n\n/**\n * Show form notification\n */\nexport const showFormNotification =\n (form: FormModel): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n dispatch(\n showNotification(NOTIFICATION_TYPES.SUCCESS, {\n id: getNotificationMessageId(form),\n })\n );\n\n setTimeout(() => {\n dispatch(dismissNotification());\n }, getSetting(\"HIDE_NOTIFICATION_TIMEOUT\"));\n\n return dispatch(finishProgress());\n };\n\n/**\n * Show error notification\n */\nexport const showXHRErrorNotification =\n (error: ErrorResponse): ThunkAction =>\n (dispatch) =>\n dispatch(\n showNotification(\n NOTIFICATION_TYPES.ERROR,\n {\n id: error.id,\n defaultMessage: error.message,\n parameters: error.properties,\n },\n error\n )\n );\n"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB;EAAA,OAAkC;IACnEC,IAAI,EAAE;EAD6D,CAAlC;AAAA,CAA5B;AAIP;AACA;;;;;AACO,IAAMC,gBAAgB,GAC3B,SADWA,gBACX,CACED,IADF,EAEEE,OAFF,EAGEC,KAHF,EAIEC,OAJF;EAAA,OAMA,UAACC,QAAD,EAAc;IACZA,QAAQ,CAAC;MACPL,IAAI,EAAE,mBADC;MAEPM,OAAO,EAAE;QACPN,IAAI,EAAJA,IADO;QAEPE,OAAO,EAAPA,OAFO;QAGPC,KAAK,EAALA;MAHO;IAFF,CAAD,CAAR;;IASA,IAAIC,OAAJ,EAAa;MACXG,UAAU,CAAC,YAAM;QACfF,QAAQ,CAACN,mBAAmB,EAApB,CAAR;MACD,CAFS,EAEPK,OAFO,CAAV;IAGD;EACF,CArBD;AAAA,CADK;AAwBP;AACA;;;;;AACA,IAAMI,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,IAAD,EAAU;EACzC,IAAIA,IAAI,CAACC,UAAL,KAAoB,QAAxB,EAAkC;IAChC,OAAO,yBAAP;EACD;;EAED,IAAID,IAAI,CAACC,UAAL,KAAoB,QAAxB,EAAkC;IAChC,OAAO,yBAAP;EACD;;EAED,IAAID,IAAI,CAACC,UAAL,KAAoB,QAAxB,EAAkC;IAChC,OAAO,yBAAP;EACD;;EAED,OAAO,0BAAP;AACD,CAdD;AAgBA;AACA;AACA;;;AACO,IAAMC,oBAAoB,GAC/B,SADWA,oBACX,CAACF,IAAD;EAAA,OACA,UAACJ,QAAD,EAAc;IACZA,QAAQ,CAAC,uCAAD,CAAR;IAEAA,QAAQ,CACNJ,gBAAgB,CAACW,8BAAmBC,OAApB,EAA6B;MAC3CC,EAAE,EAAEN,wBAAwB,CAACC,IAAD;IADe,CAA7B,CADV,CAAR;IAMAF,UAAU,CAAC,YAAM;MACfF,QAAQ,CAACN,mBAAmB,EAApB,CAAR;IACD,CAFS,EAEP,0BAAW,2BAAX,CAFO,CAAV;IAIA,OAAOM,QAAQ,CAAC,wCAAD,CAAf;EACD,CAfD;AAAA,CADK;AAkBP;AACA;AACA;;;;;AACO,IAAMU,wBAAwB,GACnC,SADWA,wBACX,CAACZ,KAAD;EAAA,OACA,UAACE,QAAD;IAAA,OACEA,QAAQ,CACNJ,gBAAgB,CACdW,8BAAmBI,KADL,EAEd;MACEF,EAAE,EAAEX,KAAK,CAACW,EADZ;MAEEG,cAAc,EAAEd,KAAK,CAACD,OAFxB;MAGEgB,UAAU,EAAEf,KAAK,CAACgB;IAHpB,CAFc,EAOdhB,KAPc,CADV,CADV;EAAA,CADA;AAAA,CADK"}
1
+ {"version":3,"file":"Notification.js","names":["dismissNotification","type","showNotification","message","error","timeout","dispatch","payload","setTimeout","getNotificationMessageId","form","actiontype","showFormNotification","startProgress","NOTIFICATION_TYPES","SUCCESS","id","getSetting","finishProgress","showXHRErrorNotification","ERROR","defaultMessage","parameters","properties"],"sources":["../../../src/redux/actions/Notification.js"],"sourcesContent":["// @flow\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { NOTIFICATION_TYPES } from \"../../constants/Constants\";\n\nimport type { DismissNotificationAction, ThunkAction } from \"../types\";\nimport type { MessageObject } from \"../../i18n/types\";\nimport type ErrorResponse from \"../../models/error/ErrorResponse\";\nimport type FormModel from \"../../models/form/FormModel\";\n\n/**\n * Dismiss notification message\n */\nexport const dismissNotification = (): DismissNotificationAction => ({\n type: \"DISMISS_NOTIFICATION\",\n});\n\n/**\n */\nexport const showNotification =\n (\n type: $Keys<typeof NOTIFICATION_TYPES>,\n message: MessageObject,\n error?: ?ErrorResponse,\n timeout?: ?number\n ): ThunkAction =>\n (dispatch) => {\n dispatch({\n type: \"SHOW_NOTIFICATION\",\n payload: {\n type,\n message,\n error,\n },\n });\n\n if (timeout) {\n setTimeout(() => {\n dispatch(dismissNotification());\n }, timeout);\n }\n };\n\n/**\n */\nconst getNotificationMessageId = (form) => {\n if (form.actiontype === \"create\") {\n return \"Notification.Msg.Create\";\n }\n\n if (form.actiontype === \"update\") {\n return \"Notification.Msg.Update\";\n }\n\n if (form.actiontype === \"delete\") {\n return \"Notification.Msg.Delete\";\n }\n\n return \"Notification.Msg.Generic\";\n};\n\n/**\n * Show form notification\n */\nexport const showFormNotification =\n (form: FormModel): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n dispatch(\n showNotification(NOTIFICATION_TYPES.SUCCESS, {\n id: getNotificationMessageId(form),\n })\n );\n\n setTimeout(() => {\n dispatch(dismissNotification());\n }, getSetting(\"HIDE_NOTIFICATION_TIMEOUT\"));\n\n return dispatch(finishProgress());\n };\n\n/**\n * Show error notification\n */\nexport const showXHRErrorNotification =\n (error: ErrorResponse): ThunkAction =>\n (dispatch) =>\n dispatch(\n showNotification(\n NOTIFICATION_TYPES.ERROR,\n {\n id: error.id,\n defaultMessage: error.message,\n parameters: error.properties,\n },\n error\n )\n );\n"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB;EAAA,OAAkC;IACnEC,IAAI,EAAE;EAD6D,CAAlC;AAAA,CAA5B;AAIP;AACA;;;;;AACO,IAAMC,gBAAgB,GAC3B,SADWA,gBACX,CACED,IADF,EAEEE,OAFF,EAGEC,KAHF,EAIEC,OAJF;EAAA,OAMA,UAACC,QAAD,EAAc;IACZA,QAAQ,CAAC;MACPL,IAAI,EAAE,mBADC;MAEPM,OAAO,EAAE;QACPN,IAAI,EAAJA,IADO;QAEPE,OAAO,EAAPA,OAFO;QAGPC,KAAK,EAALA;MAHO;IAFF,CAAD,CAAR;;IASA,IAAIC,OAAJ,EAAa;MACXG,UAAU,CAAC,YAAM;QACfF,QAAQ,CAACN,mBAAmB,EAApB,CAAR;MACD,CAFS,EAEPK,OAFO,CAAV;IAGD;EACF,CArBD;AAAA,CADK;AAwBP;AACA;;;;;AACA,IAAMI,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,IAAD,EAAU;EACzC,IAAIA,IAAI,CAACC,UAAL,KAAoB,QAAxB,EAAkC;IAChC,OAAO,yBAAP;EACD;;EAED,IAAID,IAAI,CAACC,UAAL,KAAoB,QAAxB,EAAkC;IAChC,OAAO,yBAAP;EACD;;EAED,IAAID,IAAI,CAACC,UAAL,KAAoB,QAAxB,EAAkC;IAChC,OAAO,yBAAP;EACD;;EAED,OAAO,0BAAP;AACD,CAdD;AAgBA;AACA;AACA;;;AACO,IAAMC,oBAAoB,GAC/B,SADWA,oBACX,CAACF,IAAD;EAAA,OACA,UAACJ,QAAD,EAAc;IACZA,QAAQ,CAAC,IAAAO,gCAAA,GAAD,CAAR;IAEAP,QAAQ,CACNJ,gBAAgB,CAACY,6BAAA,CAAmBC,OAApB,EAA6B;MAC3CC,EAAE,EAAEP,wBAAwB,CAACC,IAAD;IADe,CAA7B,CADV,CAAR;IAMAF,UAAU,CAAC,YAAM;MACfF,QAAQ,CAACN,mBAAmB,EAApB,CAAR;IACD,CAFS,EAEP,IAAAiB,oBAAA,EAAW,2BAAX,CAFO,CAAV;IAIA,OAAOX,QAAQ,CAAC,IAAAY,iCAAA,GAAD,CAAf;EACD,CAfD;AAAA,CADK;AAkBP;AACA;AACA;;;;;AACO,IAAMC,wBAAwB,GACnC,SADWA,wBACX,CAACf,KAAD;EAAA,OACA,UAACE,QAAD;IAAA,OACEA,QAAQ,CACNJ,gBAAgB,CACdY,6BAAA,CAAmBM,KADL,EAEd;MACEJ,EAAE,EAAEZ,KAAK,CAACY,EADZ;MAEEK,cAAc,EAAEjB,KAAK,CAACD,OAFxB;MAGEmB,UAAU,EAAElB,KAAK,CAACmB;IAHpB,CAFc,EAOdnB,KAPc,CADV,CADV;EAAA,CADA;AAAA,CADK"}
@@ -147,7 +147,7 @@ exports.setAllContentInDataSetting = setAllContentInDataSetting;
147
147
  var setLoginPreferences = function setLoginPreferences(state) {
148
148
  var _state$preferences$LO, _state$preferences$LO2, _state$preferences$LO3, _state$preferences$LO4, _loginSettings;
149
149
 
150
- var loginSettings = (_loginSettings = {}, (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_PATH_SETTING, getServerPreferenceValue(_constants.LOGIN_PATH_SETTING, (_state$preferences$LO = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_PATH_SETTING]) !== null && _state$preferences$LO !== void 0 ? _state$preferences$LO : "".concat(_constants.BASE, "/j_security_check"))), (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_USERNAME_SETTING, getServerPreferenceValue(_constants.LOGIN_USERNAME_SETTING, (_state$preferences$LO2 = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_USERNAME_SETTING]) !== null && _state$preferences$LO2 !== void 0 ? _state$preferences$LO2 : "j_username")), (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_PASSWORD_SETTING, getServerPreferenceValue(_constants.LOGIN_PASSWORD_SETTING, (_state$preferences$LO3 = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_PASSWORD_SETTING]) !== null && _state$preferences$LO3 !== void 0 ? _state$preferences$LO3 : "j_password")), (0, _defineProperty2.default)(_loginSettings, _constants.LOGOUT_PATH_SETTING, getServerPreferenceValue(_constants.LOGOUT_PATH_SETTING, (_state$preferences$LO4 = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGOUT_PATH_SETTING]) !== null && _state$preferences$LO4 !== void 0 ? _state$preferences$LO4 : "".concat(_constants.BASE, "/Logoff"))), _loginSettings);
150
+ var loginSettings = (_loginSettings = {}, (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_TYPE, getServerPreferenceValue(_constants.LOGIN_TYPE, state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_TYPE])), (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_PATH_SETTING, getServerPreferenceValue(_constants.LOGIN_PATH_SETTING, (_state$preferences$LO = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_PATH_SETTING]) !== null && _state$preferences$LO !== void 0 ? _state$preferences$LO : "/j_security_check")), (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_USERNAME_SETTING, getServerPreferenceValue(_constants.LOGIN_USERNAME_SETTING, (_state$preferences$LO2 = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_USERNAME_SETTING]) !== null && _state$preferences$LO2 !== void 0 ? _state$preferences$LO2 : "j_username")), (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_PASSWORD_SETTING, getServerPreferenceValue(_constants.LOGIN_PASSWORD_SETTING, (_state$preferences$LO3 = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_PASSWORD_SETTING]) !== null && _state$preferences$LO3 !== void 0 ? _state$preferences$LO3 : "j_password")), (0, _defineProperty2.default)(_loginSettings, _constants.LOGOUT_PATH_SETTING, getServerPreferenceValue(_constants.LOGOUT_PATH_SETTING, (_state$preferences$LO4 = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGOUT_PATH_SETTING]) !== null && _state$preferences$LO4 !== void 0 ? _state$preferences$LO4 : "/Logoff")), _loginSettings);
151
151
  (0, _Settings.setSettings)(loginSettings);
152
152
  return setPreferences(loginSettings);
153
153
  };
@@ -12,8 +12,8 @@ import type {
12
12
  } from "../types";
13
13
 
14
14
  import {
15
- BASE,
16
15
  ALL_CONTENT_IN_DATA_SETTING,
16
+ LOGIN_TYPE,
17
17
  LOGIN_PASSWORD_SETTING,
18
18
  LOGIN_PATH_SETTING,
19
19
  LOGIN_USERNAME_SETTING,
@@ -123,9 +123,13 @@ export const setLoginPreferences = (
123
123
  state?: ReduxState
124
124
  ): SetPreferencesAction => {
125
125
  const loginSettings = {
126
+ [LOGIN_TYPE]: getServerPreferenceValue(
127
+ LOGIN_TYPE,
128
+ state?.preferences[LOGIN_TYPE]
129
+ ),
126
130
  [LOGIN_PATH_SETTING]: getServerPreferenceValue(
127
131
  LOGIN_PATH_SETTING,
128
- state?.preferences[LOGIN_PATH_SETTING] ?? `${BASE}/j_security_check`
132
+ state?.preferences[LOGIN_PATH_SETTING] ?? `/j_security_check`
129
133
  ),
130
134
  [LOGIN_USERNAME_SETTING]: getServerPreferenceValue(
131
135
  LOGIN_USERNAME_SETTING,
@@ -137,7 +141,7 @@ export const setLoginPreferences = (
137
141
  ),
138
142
  [LOGOUT_PATH_SETTING]: getServerPreferenceValue(
139
143
  LOGOUT_PATH_SETTING,
140
- state?.preferences[LOGOUT_PATH_SETTING] ?? `${BASE}/Logoff`
144
+ state?.preferences[LOGOUT_PATH_SETTING] ?? `/Logoff`
141
145
  ),
142
146
  };
143
147
 
@@ -1 +1 @@
1
- {"version":3,"file":"Preferences.js","names":["getServerPreferenceValue","preferenceName","defaultValue","type","value","preferencesProvider","getPreferenceByName","split","val","setServerPreference","propertyName","setPreference","propertyValue","payload","setPreferences","preferences","setThemePreference","configTheme","themeData","JSON","parse","error","JsonParseException","settings","setAllContentInDataSetting","state","allContentInDataSetting","getModularUIContentInData","ALL_CONTENT_IN_DATA_SETTING","setLoginPreferences","loginSettings","LOGIN_PATH_SETTING","BASE","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING"],"sources":["../../../src/redux/actions/Preferences.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"../../utils/helpers/objects\";\n\nimport { JsonParseException } from \"../../exceptions\";\nimport { setSetting, setSettings } from \"../../constants/Settings\";\n\nimport type {\n PreferenceValue,\n ReduxState,\n SetPreferenceAction,\n SetPreferencesAction,\n} from \"../types\";\n\nimport {\n BASE,\n ALL_CONTENT_IN_DATA_SETTING,\n LOGIN_PASSWORD_SETTING,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGOUT_PATH_SETTING,\n} from \"../../constants\";\n\n/**\n */\nconst getServerPreferenceValue = (\n preferenceName: string,\n defaultValue: PreferenceValue = null,\n type?: string\n) => {\n let value = null;\n if (typeof preferencesProvider !== \"undefined\") {\n value = preferencesProvider.getPreferenceByName(preferenceName);\n }\n\n if (value == null) {\n value = defaultValue;\n }\n\n if (typeof value === \"string\" && type !== \"string\" && value.includes(\",\")) {\n value = value.split(\",\").map((val) => val.trim());\n }\n\n return value;\n};\n\n/**\n */\nexport const setServerPreference = (\n propertyName: string,\n defaultValue: PreferenceValue = null,\n type?: string\n): SetPreferenceAction => {\n const value = getServerPreferenceValue(propertyName, defaultValue, type);\n return setPreference(propertyName, value);\n};\n\n/**\n */\nexport const setPreference = (\n propertyName: string,\n propertyValue: PreferenceValue = null\n): SetPreferenceAction => ({\n type: \"SET_PREFERENCE\",\n payload: {\n [propertyName]: propertyValue,\n },\n});\n\n/**\n */\nexport const setPreferences = (preferences: Object): SetPreferencesAction => ({\n type: \"SET_PREFERENCES\",\n payload: {\n ...preferences,\n },\n});\n\n/**\n */\nexport const setThemePreference = (\n configTheme: string\n): SetPreferenceAction => {\n let themeData = {};\n\n try {\n themeData = configTheme ? JSON.parse(configTheme) : null;\n } catch (error) {\n throw new JsonParseException(`Theme file contains invalid JSON: ${error}`);\n }\n\n if (themeData && isPlainObject(themeData)) {\n setSettings(themeData.settings);\n }\n\n return setPreference(\"theme\", themeData);\n};\n\n/**\n * Make modular-ui-content-in-data preference available client side\n */\nexport const setAllContentInDataSetting = (\n state?: ReduxState\n): SetPreferenceAction => {\n let allContentInDataSetting = false;\n\n if (\n typeof preferencesProvider !== \"undefined\" &&\n typeof preferencesProvider.getModularUIContentInData !== \"undefined\"\n ) {\n allContentInDataSetting = preferencesProvider.getModularUIContentInData();\n } else if (typeof state !== \"undefined\") {\n allContentInDataSetting = state.preferences[ALL_CONTENT_IN_DATA_SETTING];\n }\n\n setSetting(ALL_CONTENT_IN_DATA_SETTING, !!allContentInDataSetting);\n return setPreference(ALL_CONTENT_IN_DATA_SETTING, allContentInDataSetting);\n};\n\n/**\n * Retrieves login settings from runtime preferences and sets them as setting in the preference reducer\n */\nexport const setLoginPreferences = (\n state?: ReduxState\n): SetPreferencesAction => {\n const loginSettings = {\n [LOGIN_PATH_SETTING]: getServerPreferenceValue(\n LOGIN_PATH_SETTING,\n state?.preferences[LOGIN_PATH_SETTING] ?? `${BASE}/j_security_check`\n ),\n [LOGIN_USERNAME_SETTING]: getServerPreferenceValue(\n LOGIN_USERNAME_SETTING,\n state?.preferences[LOGIN_USERNAME_SETTING] ?? \"j_username\"\n ),\n [LOGIN_PASSWORD_SETTING]: getServerPreferenceValue(\n LOGIN_PASSWORD_SETTING,\n state?.preferences[LOGIN_PASSWORD_SETTING] ?? \"j_password\"\n ),\n [LOGOUT_PATH_SETTING]: getServerPreferenceValue(\n LOGOUT_PATH_SETTING,\n state?.preferences[LOGOUT_PATH_SETTING] ?? `${BASE}/Logoff`\n ),\n };\n\n setSettings(loginSettings);\n return setPreferences(loginSettings);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Preferences.js","names":["getServerPreferenceValue","preferenceName","defaultValue","type","value","preferencesProvider","getPreferenceByName","split","val","setServerPreference","propertyName","setPreference","propertyValue","payload","setPreferences","preferences","setThemePreference","configTheme","themeData","JSON","parse","error","JsonParseException","isPlainObject","setSettings","settings","setAllContentInDataSetting","state","allContentInDataSetting","getModularUIContentInData","ALL_CONTENT_IN_DATA_SETTING","setSetting","setLoginPreferences","loginSettings","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING"],"sources":["../../../src/redux/actions/Preferences.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"../../utils/helpers/objects\";\n\nimport { JsonParseException } from \"../../exceptions\";\nimport { setSetting, setSettings } from \"../../constants/Settings\";\n\nimport type {\n PreferenceValue,\n ReduxState,\n SetPreferenceAction,\n SetPreferencesAction,\n} from \"../types\";\n\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n LOGIN_TYPE,\n LOGIN_PASSWORD_SETTING,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGOUT_PATH_SETTING,\n} from \"../../constants\";\n\n/**\n */\nconst getServerPreferenceValue = (\n preferenceName: string,\n defaultValue: PreferenceValue = null,\n type?: string\n) => {\n let value = null;\n if (typeof preferencesProvider !== \"undefined\") {\n value = preferencesProvider.getPreferenceByName(preferenceName);\n }\n\n if (value == null) {\n value = defaultValue;\n }\n\n if (typeof value === \"string\" && type !== \"string\" && value.includes(\",\")) {\n value = value.split(\",\").map((val) => val.trim());\n }\n\n return value;\n};\n\n/**\n */\nexport const setServerPreference = (\n propertyName: string,\n defaultValue: PreferenceValue = null,\n type?: string\n): SetPreferenceAction => {\n const value = getServerPreferenceValue(propertyName, defaultValue, type);\n return setPreference(propertyName, value);\n};\n\n/**\n */\nexport const setPreference = (\n propertyName: string,\n propertyValue: PreferenceValue = null\n): SetPreferenceAction => ({\n type: \"SET_PREFERENCE\",\n payload: {\n [propertyName]: propertyValue,\n },\n});\n\n/**\n */\nexport const setPreferences = (preferences: Object): SetPreferencesAction => ({\n type: \"SET_PREFERENCES\",\n payload: {\n ...preferences,\n },\n});\n\n/**\n */\nexport const setThemePreference = (\n configTheme: string\n): SetPreferenceAction => {\n let themeData = {};\n\n try {\n themeData = configTheme ? JSON.parse(configTheme) : null;\n } catch (error) {\n throw new JsonParseException(`Theme file contains invalid JSON: ${error}`);\n }\n\n if (themeData && isPlainObject(themeData)) {\n setSettings(themeData.settings);\n }\n\n return setPreference(\"theme\", themeData);\n};\n\n/**\n * Make modular-ui-content-in-data preference available client side\n */\nexport const setAllContentInDataSetting = (\n state?: ReduxState\n): SetPreferenceAction => {\n let allContentInDataSetting = false;\n\n if (\n typeof preferencesProvider !== \"undefined\" &&\n typeof preferencesProvider.getModularUIContentInData !== \"undefined\"\n ) {\n allContentInDataSetting = preferencesProvider.getModularUIContentInData();\n } else if (typeof state !== \"undefined\") {\n allContentInDataSetting = state.preferences[ALL_CONTENT_IN_DATA_SETTING];\n }\n\n setSetting(ALL_CONTENT_IN_DATA_SETTING, !!allContentInDataSetting);\n return setPreference(ALL_CONTENT_IN_DATA_SETTING, allContentInDataSetting);\n};\n\n/**\n * Retrieves login settings from runtime preferences and sets them as setting in the preference reducer\n */\nexport const setLoginPreferences = (\n state?: ReduxState\n): SetPreferencesAction => {\n const loginSettings = {\n [LOGIN_TYPE]: getServerPreferenceValue(\n LOGIN_TYPE,\n state?.preferences[LOGIN_TYPE]\n ),\n [LOGIN_PATH_SETTING]: getServerPreferenceValue(\n LOGIN_PATH_SETTING,\n state?.preferences[LOGIN_PATH_SETTING] ?? `/j_security_check`\n ),\n [LOGIN_USERNAME_SETTING]: getServerPreferenceValue(\n LOGIN_USERNAME_SETTING,\n state?.preferences[LOGIN_USERNAME_SETTING] ?? \"j_username\"\n ),\n [LOGIN_PASSWORD_SETTING]: getServerPreferenceValue(\n LOGIN_PASSWORD_SETTING,\n state?.preferences[LOGIN_PASSWORD_SETTING] ?? \"j_password\"\n ),\n [LOGOUT_PATH_SETTING]: getServerPreferenceValue(\n LOGOUT_PATH_SETTING,\n state?.preferences[LOGOUT_PATH_SETTING] ?? `/Logoff`\n ),\n };\n\n setSettings(loginSettings);\n return setPreferences(loginSettings);\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignIn.js","names":["loginFailed","errorMessage","type","payload","resetAuthErrors","loginSuccess","changePassword","dispatch","getState","isModal","router","location","state","modal","locationFrom","from","CHANGEPASSWORD_PATH","login","username","password","Authenticate","then","Cache","addItem","catch","error","id","dispatchedReloadApplication","resolve"],"sources":["../../../src/redux/actions/SignIn.js"],"sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport { reloadApplication } from \"./Application\";\n\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { push } from \"../_router/actions\";\nimport { CHANGEPASSWORD_PATH } from \"../../constants/Constants\";\n\nimport type {\n LoginFailedAction,\n ResetAuthErrorsAction,\n LoginSuccessAction,\n ThunkAction,\n} from \"../types\";\n\n/**\n * Send login failed action\n */\nexport const loginFailed = (errorMessage: string): LoginFailedAction => ({\n type: \"AUTHENTICATION_ERROR\",\n payload: errorMessage,\n});\n\n/**\n * Resets any authentication errors\n */\nexport const resetAuthErrors = (): ResetAuthErrorsAction => ({\n type: \"AUTHENTICATION_RESET_ERRORS\",\n});\n\n/**\n * Send login success action\n */\nexport const loginSuccess = (): LoginSuccessAction => ({\n type: \"AUTHENTICATION_SUCCESS\",\n});\n\n/**\n * Send change password action\n */\nexport const changePassword = (): ThunkAction => (dispatch, getState) => {\n dispatch({\n type: \"CHANGE_PASSWORD\",\n });\n\n const isModal = getState().router.location?.state?.modal;\n const locationFrom = getState().router.location?.state?.from;\n return dispatch(\n push(CHANGEPASSWORD_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n modal: isModal,\n })\n );\n};\n\n/**\n */\nexport const login =\n (username: string, password: string): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .login(username, password)\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n Cache.addItem(\"auth\", true);\n dispatch(loginSuccess());\n\n return dispatch(finishProgress());\n })\n .catch((error) => {\n if (error.id === \"Error.ChangePasswordRequired\") {\n const dispatchedReloadApplication = dispatch(reloadApplication());\n\n return Promise.resolve(dispatchedReloadApplication).then(() => {\n Cache.addItem(\"auth\", true);\n return dispatch(changePassword());\n });\n }\n\n dispatch(loginFailed(error.id));\n return dispatch(finishProgress());\n });\n };\n"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AASA;AACA;AACA;AACO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,YAAD;EAAA,OAA8C;IACvEC,IAAI,EAAE,sBADiE;IAEvEC,OAAO,EAAEF;EAF8D,CAA9C;AAAA,CAApB;AAKP;AACA;AACA;;;;;AACO,IAAMG,eAAe,GAAG,SAAlBA,eAAkB;EAAA,OAA8B;IAC3DF,IAAI,EAAE;EADqD,CAA9B;AAAA,CAAxB;AAIP;AACA;AACA;;;;;AACO,IAAMG,YAAY,GAAG,SAAfA,YAAe;EAAA,OAA2B;IACrDH,IAAI,EAAE;EAD+C,CAA3B;AAAA,CAArB;AAIP;AACA;AACA;;;;;AACO,IAAMI,cAAc,GAAG,SAAjBA,cAAiB;EAAA,OAAmB,UAACC,QAAD,EAAWC,QAAX,EAAwB;IAAA;;IACvED,QAAQ,CAAC;MACPL,IAAI,EAAE;IADC,CAAD,CAAR;IAIA,IAAMO,OAAO,4BAAGD,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,oFAAG,sBAA4BC,KAA/B,2DAAG,uBAAmCC,KAAnD;IACA,IAAMC,YAAY,6BAAGN,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,qFAAG,uBAA4BC,KAA/B,2DAAG,uBAAmCG,IAAxD;IACA,OAAOR,QAAQ,CACb,mBAAKS,8BAAL,EAA0B;MACxBD,IAAI,EAAED,YAAY,GAAGA,YAAH,GAAkBN,QAAQ,GAAGE,MAAX,CAAkBC,QAD9B;MAExBE,KAAK,EAAEJ;IAFiB,CAA1B,CADa,CAAf;EAMD,CAb6B;AAAA,CAAvB;AAeP;AACA;;;;;AACO,IAAMQ,KAAK,GAChB,SADWA,KACX,CAACC,QAAD,EAAmBC,QAAnB;EAAA,OACA,UAACZ,QAAD,EAAc;IACZA,QAAQ,CAAC,uCAAD,CAAR;IAEA,OAAO,IAAIa,qBAAJ,GACJH,KADI,CACEC,QADF,EACYC,QADZ,EAEJE,IAFI,CAEC;MAAA,OAAMd,QAAQ,CAAC,qCAAD,CAAd;IAAA,CAFD,EAGJc,IAHI,CAGC,YAAM;MACVC,eAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;MACAhB,QAAQ,CAACF,YAAY,EAAb,CAAR;MAEA,OAAOE,QAAQ,CAAC,wCAAD,CAAf;IACD,CARI,EASJiB,KATI,CASE,UAACC,KAAD,EAAW;MAChB,IAAIA,KAAK,CAACC,EAAN,KAAa,8BAAjB,EAAiD;QAC/C,IAAMC,2BAA2B,GAAGpB,QAAQ,CAAC,qCAAD,CAA5C;QAEA,OAAO,iBAAQqB,OAAR,CAAgBD,2BAAhB,EAA6CN,IAA7C,CAAkD,YAAM;UAC7DC,eAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;UACA,OAAOhB,QAAQ,CAACD,cAAc,EAAf,CAAf;QACD,CAHM,CAAP;MAID;;MAEDC,QAAQ,CAACP,WAAW,CAACyB,KAAK,CAACC,EAAP,CAAZ,CAAR;MACA,OAAOnB,QAAQ,CAAC,wCAAD,CAAf;IACD,CArBI,CAAP;EAsBD,CA1BD;AAAA,CADK"}
1
+ {"version":3,"file":"SignIn.js","names":["loginFailed","errorMessage","type","payload","resetAuthErrors","loginSuccess","changePassword","dispatch","getState","isModal","router","location","state","modal","locationFrom","from","push","CHANGEPASSWORD_PATH","login","username","password","startProgress","Authenticate","then","reloadApplication","Cache","addItem","finishProgress","catch","error","id","dispatchedReloadApplication","resolve"],"sources":["../../../src/redux/actions/SignIn.js"],"sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport { reloadApplication } from \"./Application\";\n\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { push } from \"../_router/actions\";\nimport { CHANGEPASSWORD_PATH } from \"../../constants/Constants\";\n\nimport type {\n LoginFailedAction,\n ResetAuthErrorsAction,\n LoginSuccessAction,\n ThunkAction,\n} from \"../types\";\n\n/**\n * Send login failed action\n */\nexport const loginFailed = (errorMessage: string): LoginFailedAction => ({\n type: \"AUTHENTICATION_ERROR\",\n payload: errorMessage,\n});\n\n/**\n * Resets any authentication errors\n */\nexport const resetAuthErrors = (): ResetAuthErrorsAction => ({\n type: \"AUTHENTICATION_RESET_ERRORS\",\n});\n\n/**\n * Send login success action\n */\nexport const loginSuccess = (): LoginSuccessAction => ({\n type: \"AUTHENTICATION_SUCCESS\",\n});\n\n/**\n * Send change password action\n */\nexport const changePassword = (): ThunkAction => (dispatch, getState) => {\n dispatch({\n type: \"CHANGE_PASSWORD\",\n });\n\n const isModal = getState().router.location?.state?.modal;\n const locationFrom = getState().router.location?.state?.from;\n return dispatch(\n push(CHANGEPASSWORD_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n modal: isModal,\n })\n );\n};\n\n/**\n */\nexport const login =\n (username: string, password: string): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .login(username, password)\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n Cache.addItem(\"auth\", true);\n dispatch(loginSuccess());\n\n return dispatch(finishProgress());\n })\n .catch((error) => {\n if (error.id === \"Error.ChangePasswordRequired\") {\n const dispatchedReloadApplication = dispatch(reloadApplication());\n\n return Promise.resolve(dispatchedReloadApplication).then(() => {\n Cache.addItem(\"auth\", true);\n return dispatch(changePassword());\n });\n }\n\n dispatch(loginFailed(error.id));\n return dispatch(finishProgress());\n });\n };\n"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AASA;AACA;AACA;AACO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,YAAD;EAAA,OAA8C;IACvEC,IAAI,EAAE,sBADiE;IAEvEC,OAAO,EAAEF;EAF8D,CAA9C;AAAA,CAApB;AAKP;AACA;AACA;;;;;AACO,IAAMG,eAAe,GAAG,SAAlBA,eAAkB;EAAA,OAA8B;IAC3DF,IAAI,EAAE;EADqD,CAA9B;AAAA,CAAxB;AAIP;AACA;AACA;;;;;AACO,IAAMG,YAAY,GAAG,SAAfA,YAAe;EAAA,OAA2B;IACrDH,IAAI,EAAE;EAD+C,CAA3B;AAAA,CAArB;AAIP;AACA;AACA;;;;;AACO,IAAMI,cAAc,GAAG,SAAjBA,cAAiB;EAAA,OAAmB,UAACC,QAAD,EAAWC,QAAX,EAAwB;IAAA;;IACvED,QAAQ,CAAC;MACPL,IAAI,EAAE;IADC,CAAD,CAAR;IAIA,IAAMO,OAAO,4BAAGD,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,oFAAG,sBAA4BC,KAA/B,2DAAG,uBAAmCC,KAAnD;IACA,IAAMC,YAAY,6BAAGN,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,qFAAG,uBAA4BC,KAA/B,2DAAG,uBAAmCG,IAAxD;IACA,OAAOR,QAAQ,CACb,IAAAS,aAAA,EAAKC,8BAAL,EAA0B;MACxBF,IAAI,EAAED,YAAY,GAAGA,YAAH,GAAkBN,QAAQ,GAAGE,MAAX,CAAkBC,QAD9B;MAExBE,KAAK,EAAEJ;IAFiB,CAA1B,CADa,CAAf;EAMD,CAb6B;AAAA,CAAvB;AAeP;AACA;;;;;AACO,IAAMS,KAAK,GAChB,SADWA,KACX,CAACC,QAAD,EAAmBC,QAAnB;EAAA,OACA,UAACb,QAAD,EAAc;IACZA,QAAQ,CAAC,IAAAc,gCAAA,GAAD,CAAR;IAEA,OAAO,IAAIC,qBAAJ,GACJJ,KADI,CACEC,QADF,EACYC,QADZ,EAEJG,IAFI,CAEC;MAAA,OAAMhB,QAAQ,CAAC,IAAAiB,8BAAA,GAAD,CAAd;IAAA,CAFD,EAGJD,IAHI,CAGC,YAAM;MACVE,cAAA,CAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;MACAnB,QAAQ,CAACF,YAAY,EAAb,CAAR;MAEA,OAAOE,QAAQ,CAAC,IAAAoB,iCAAA,GAAD,CAAf;IACD,CARI,EASJC,KATI,CASE,UAACC,KAAD,EAAW;MAChB,IAAIA,KAAK,CAACC,EAAN,KAAa,8BAAjB,EAAiD;QAC/C,IAAMC,2BAA2B,GAAGxB,QAAQ,CAAC,IAAAiB,8BAAA,GAAD,CAA5C;QAEA,OAAO,iBAAQQ,OAAR,CAAgBD,2BAAhB,EAA6CR,IAA7C,CAAkD,YAAM;UAC7DE,cAAA,CAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;UACA,OAAOnB,QAAQ,CAACD,cAAc,EAAf,CAAf;QACD,CAHM,CAAP;MAID;;MAEDC,QAAQ,CAACP,WAAW,CAAC6B,KAAK,CAACC,EAAP,CAAZ,CAAR;MACA,OAAOvB,QAAQ,CAAC,IAAAoB,iCAAA,GAAD,CAAf;IACD,CArBI,CAAP;EAsBD,CA1BD;AAAA,CADK"}
@@ -13,6 +13,8 @@ var _ProgressIndicator = require("./ProgressIndicator");
13
13
 
14
14
  var _actions = require("../_modularui/actions");
15
15
 
16
+ var _Application = require("./Application");
17
+
16
18
  /**
17
19
  * Send logout success action
18
20
  */
@@ -31,7 +33,10 @@ var logout = function logout() {
31
33
  return function (dispatch) {
32
34
  dispatch((0, _ProgressIndicator.startProgress)());
33
35
  return new _Authenticate.default().logout().then(function () {
34
- dispatch((0, _actions.resetModularUI)());
36
+ return dispatch((0, _actions.resetModularUI)());
37
+ }).then(function () {
38
+ return dispatch((0, _Application.reloadApplication)());
39
+ }).then(function () {
35
40
  dispatch(logoutSuccess());
36
41
  return dispatch((0, _ProgressIndicator.finishProgress)());
37
42
  });
@@ -4,6 +4,7 @@ import { startProgress, finishProgress } from "./ProgressIndicator";
4
4
  import { resetModularUI } from "../_modularui/actions";
5
5
 
6
6
  import type { Dispatch, LogoutSuccessAction, ThunkAction } from "../types";
7
+ import { reloadApplication } from "./Application";
7
8
 
8
9
  /**
9
10
  * Send logout success action
@@ -17,9 +18,12 @@ export const logoutSuccess = (): LogoutSuccessAction => ({
17
18
  export const logout = (): ThunkAction => (dispatch: Dispatch) => {
18
19
  dispatch(startProgress());
19
20
 
20
- return new Authenticate().logout().then(() => {
21
- dispatch(resetModularUI());
22
- dispatch(logoutSuccess());
23
- return dispatch(finishProgress());
24
- });
21
+ return new Authenticate()
22
+ .logout()
23
+ .then(() => dispatch(resetModularUI()))
24
+ .then(() => dispatch(reloadApplication()))
25
+ .then(() => {
26
+ dispatch(logoutSuccess());
27
+ return dispatch(finishProgress());
28
+ });
25
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SignOut.js","names":["logoutSuccess","type","logout","dispatch","Authenticate","then"],"sources":["../../../src/redux/actions/SignOut.js"],"sourcesContent":["// @flow\nimport Authenticate from \"../../modularui/Authenticate\";\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { resetModularUI } from \"../_modularui/actions\";\n\nimport type { Dispatch, LogoutSuccessAction, ThunkAction } from \"../types\";\n\n/**\n * Send logout success action\n */\nexport const logoutSuccess = (): LogoutSuccessAction => ({\n type: \"AUTHENTICATION_LOGOUT\",\n});\n\n/**\n */\nexport const logout = (): ThunkAction => (dispatch: Dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate().logout().then(() => {\n dispatch(resetModularUI());\n dispatch(logoutSuccess());\n return dispatch(finishProgress());\n });\n};\n"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AAIA;AACA;AACA;AACO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB;EAAA,OAA4B;IACvDC,IAAI,EAAE;EADiD,CAA5B;AAAA,CAAtB;AAIP;AACA;;;;;AACO,IAAMC,MAAM,GAAG,SAATA,MAAS;EAAA,OAAmB,UAACC,QAAD,EAAwB;IAC/DA,QAAQ,CAAC,uCAAD,CAAR;IAEA,OAAO,IAAIC,qBAAJ,GAAmBF,MAAnB,GAA4BG,IAA5B,CAAiC,YAAM;MAC5CF,QAAQ,CAAC,8BAAD,CAAR;MACAA,QAAQ,CAACH,aAAa,EAAd,CAAR;MACA,OAAOG,QAAQ,CAAC,wCAAD,CAAf;IACD,CAJM,CAAP;EAKD,CARqB;AAAA,CAAf"}
1
+ {"version":3,"file":"SignOut.js","names":["logoutSuccess","type","logout","dispatch","startProgress","Authenticate","then","resetModularUI","reloadApplication","finishProgress"],"sources":["../../../src/redux/actions/SignOut.js"],"sourcesContent":["// @flow\nimport Authenticate from \"../../modularui/Authenticate\";\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { resetModularUI } from \"../_modularui/actions\";\n\nimport type { Dispatch, LogoutSuccessAction, ThunkAction } from \"../types\";\nimport { reloadApplication } from \"./Application\";\n\n/**\n * Send logout success action\n */\nexport const logoutSuccess = (): LogoutSuccessAction => ({\n type: \"AUTHENTICATION_LOGOUT\",\n});\n\n/**\n */\nexport const logout = (): ThunkAction => (dispatch: Dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .logout()\n .then(() => dispatch(resetModularUI()))\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n dispatch(logoutSuccess());\n return dispatch(finishProgress());\n });\n};\n"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AAGA;;AAEA;AACA;AACA;AACO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB;EAAA,OAA4B;IACvDC,IAAI,EAAE;EADiD,CAA5B;AAAA,CAAtB;AAIP;AACA;;;;;AACO,IAAMC,MAAM,GAAG,SAATA,MAAS;EAAA,OAAmB,UAACC,QAAD,EAAwB;IAC/DA,QAAQ,CAAC,IAAAC,gCAAA,GAAD,CAAR;IAEA,OAAO,IAAIC,qBAAJ,GACJH,MADI,GAEJI,IAFI,CAEC;MAAA,OAAMH,QAAQ,CAAC,IAAAI,uBAAA,GAAD,CAAd;IAAA,CAFD,EAGJD,IAHI,CAGC;MAAA,OAAMH,QAAQ,CAAC,IAAAK,8BAAA,GAAD,CAAd;IAAA,CAHD,EAIJF,IAJI,CAIC,YAAM;MACVH,QAAQ,CAACH,aAAa,EAAd,CAAR;MACA,OAAOG,QAAQ,CAAC,IAAAM,iCAAA,GAAD,CAAf;IACD,CAPI,CAAP;EAQD,CAXqB;AAAA,CAAf"}