@beinformed/ui 1.12.0 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/CHANGELOG.md +32 -2
  2. package/esm/builder/mergeLayoutHintConfigurations.js +3 -3
  3. package/esm/builder/mergeLayoutHintConfigurations.js.map +1 -1
  4. package/esm/exceptions/ConfigurationException.js +2 -1
  5. package/esm/exceptions/ConfigurationException.js.map +1 -1
  6. package/esm/exceptions/FetchException.js +4 -3
  7. package/esm/exceptions/FetchException.js.map +1 -1
  8. package/esm/exceptions/IllegalArgumentException.js +2 -1
  9. package/esm/exceptions/IllegalArgumentException.js.map +1 -1
  10. package/esm/exceptions/IllegalReturnException.js +2 -1
  11. package/esm/exceptions/IllegalReturnException.js.map +1 -1
  12. package/esm/exceptions/IllegalStateException.js +2 -1
  13. package/esm/exceptions/IllegalStateException.js.map +1 -1
  14. package/esm/exceptions/JsonParseException.js +2 -1
  15. package/esm/exceptions/JsonParseException.js.map +1 -1
  16. package/esm/exceptions/MissingPropertyException.js +2 -1
  17. package/esm/exceptions/MissingPropertyException.js.map +1 -1
  18. package/esm/exceptions/NetworkException.js +2 -1
  19. package/esm/exceptions/NetworkException.js.map +1 -1
  20. package/esm/exceptions/NotAllowedUriException.js +2 -1
  21. package/esm/exceptions/NotAllowedUriException.js.map +1 -1
  22. package/esm/exceptions/NotFoundException.js +2 -1
  23. package/esm/exceptions/NotFoundException.js.map +1 -1
  24. package/esm/exceptions/ServerRequestException.js +2 -1
  25. package/esm/exceptions/ServerRequestException.js.map +1 -1
  26. package/esm/exceptions/ThemePropertyException.js +2 -1
  27. package/esm/exceptions/ThemePropertyException.js.map +1 -1
  28. package/esm/exceptions/TimeoutException.js +2 -1
  29. package/esm/exceptions/TimeoutException.js.map +1 -1
  30. package/esm/exceptions/UnauthorizedException.js +2 -1
  31. package/esm/exceptions/UnauthorizedException.js.map +1 -1
  32. package/esm/exceptions/UnsupportedOperationException.js +2 -1
  33. package/esm/exceptions/UnsupportedOperationException.js.map +1 -1
  34. package/esm/hooks/useContent.js +2 -2
  35. package/esm/hooks/useContent.js.map +1 -1
  36. package/esm/hooks/useDeepCompareEffect.js +2 -1
  37. package/esm/hooks/useDeepCompareEffect.js.map +1 -1
  38. package/esm/hooks/useForm.js.map +1 -1
  39. package/esm/hooks/useModal.js +2 -2
  40. package/esm/hooks/useModal.js.map +1 -1
  41. package/esm/hooks/useModularUI.js +0 -1
  42. package/esm/hooks/useModularUI.js.map +1 -1
  43. package/esm/hooks/useProgressIndicator.js +2 -2
  44. package/esm/i18n/Locale.js +11 -4
  45. package/esm/i18n/Locale.js.map +1 -1
  46. package/esm/i18n/Locales.js +2 -2
  47. package/esm/i18n/Message.js +2 -2
  48. package/esm/i18n/languages.js +2 -1
  49. package/esm/i18n/languages.js.map +1 -1
  50. package/esm/models/attributes/AttributeCollection.js +2 -2
  51. package/esm/models/attributes/AttributeContent.js +58 -30
  52. package/esm/models/attributes/AttributeContent.js.map +1 -1
  53. package/esm/models/attributes/AttributeDataHelper.js +3 -3
  54. package/esm/models/attributes/AttributeDataHelper.js.map +1 -1
  55. package/esm/models/attributes/BooleanAttributeModel.js +2 -2
  56. package/esm/models/attributes/ChoiceAttributeModel.js +2 -2
  57. package/esm/models/attributes/ChoiceAttributeOptionCollection.js +2 -2
  58. package/esm/models/attributes/CompositeAttributeChildCollection.js +2 -2
  59. package/esm/models/attributes/HelptextAttributeModel.js +24 -9
  60. package/esm/models/attributes/HelptextAttributeModel.js.map +1 -1
  61. package/esm/models/attributes/_createAttribute.js +2 -2
  62. package/esm/models/base/ResourceModel.js +2 -2
  63. package/esm/models/caseview/CaseViewModel.js +4 -5
  64. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  65. package/esm/models/concepts/ConceptDetailModel.js +2 -2
  66. package/esm/models/concepts/SourceReferenceModel.js +2 -2
  67. package/esm/models/content/ContentTOCModel.js +2 -2
  68. package/esm/models/filters/AssignmentFilterModel.js +2 -2
  69. package/esm/models/filters/BaseFilterModel.js +2 -2
  70. package/esm/models/filters/ConceptIndexFilterModel.js +2 -1
  71. package/esm/models/filters/ConceptIndexFilterModel.js.map +1 -1
  72. package/esm/models/filters/FilterCollection.js +2 -2
  73. package/esm/models/filters/FilterModel.js +2 -1
  74. package/esm/models/filters/FilterModel.js.map +1 -1
  75. package/esm/models/form/FormModel.js +28 -4
  76. package/esm/models/form/FormModel.js.map +1 -1
  77. package/esm/models/form/FormObjectModel.js +5 -7
  78. package/esm/models/form/FormObjectModel.js.map +1 -1
  79. package/esm/models/grouping/GroupingModel.js +2 -2
  80. package/esm/models/links/normalizeLinkJSON.js +2 -2
  81. package/esm/models/list/ListDetailModel.js +4 -6
  82. package/esm/models/list/ListDetailModel.js.map +1 -1
  83. package/esm/models/list/ListItemCollection.js +38 -0
  84. package/esm/models/list/ListItemCollection.js.map +1 -1
  85. package/esm/models/list/ListItemModel.js +14 -2
  86. package/esm/models/list/ListItemModel.js.map +1 -1
  87. package/esm/models/list/ListModel.js +19 -74
  88. package/esm/models/list/ListModel.js.map +1 -1
  89. package/esm/models/lookup/LookupOptionCollection.js +2 -2
  90. package/esm/models/panels/GroupingPanelModel.js +2 -4
  91. package/esm/models/panels/GroupingPanelModel.js.map +1 -1
  92. package/esm/modularui/ModularUIError.js +2 -1
  93. package/esm/modularui/ModularUIError.js.map +1 -1
  94. package/esm/modularui/ModularUIRequest.js +71 -49
  95. package/esm/modularui/ModularUIRequest.js.map +1 -1
  96. package/esm/react-server/serverUtil.js +2 -2
  97. package/esm/react-theme/createTheme.js +2 -2
  98. package/esm/redux/_i18n/reducer.js +2 -2
  99. package/esm/redux/_modularui/actions.js +2 -2
  100. package/esm/redux/_modularui/connector.js +2 -2
  101. package/esm/redux/_modularui/reducer.js +2 -2
  102. package/esm/redux/_modularui/selectors.js +2 -2
  103. package/esm/redux/reducers/AuthReducer.js +2 -2
  104. package/esm/redux/reducers/ModalsReducer.js +2 -2
  105. package/esm/redux/reducers/NotificationReducer.js +2 -2
  106. package/esm/redux/reducers/PreferencesReducer.js +2 -2
  107. package/esm/redux/reducers/ProgressIndicatorReducer.js +2 -2
  108. package/esm/redux/store/configureStore.js +2 -2
  109. package/esm/utils/browser/Cookies.js +18 -32
  110. package/esm/utils/browser/Cookies.js.map +1 -1
  111. package/esm/utils/fetch/xhr.js +4 -3
  112. package/esm/utils/fetch/xhr.js.map +1 -1
  113. package/lib/builder/mergeLayoutHintConfigurations.js +3 -3
  114. package/lib/builder/mergeLayoutHintConfigurations.js.flow +3 -3
  115. package/lib/builder/mergeLayoutHintConfigurations.js.map +1 -1
  116. package/lib/exceptions/ConfigurationException.js +3 -1
  117. package/lib/exceptions/ConfigurationException.js.map +1 -1
  118. package/lib/exceptions/FetchException.js +5 -3
  119. package/lib/exceptions/FetchException.js.map +1 -1
  120. package/lib/exceptions/IllegalArgumentException.js +3 -1
  121. package/lib/exceptions/IllegalArgumentException.js.map +1 -1
  122. package/lib/exceptions/IllegalReturnException.js +3 -1
  123. package/lib/exceptions/IllegalReturnException.js.map +1 -1
  124. package/lib/exceptions/IllegalStateException.js +3 -1
  125. package/lib/exceptions/IllegalStateException.js.map +1 -1
  126. package/lib/exceptions/JsonParseException.js +3 -1
  127. package/lib/exceptions/JsonParseException.js.map +1 -1
  128. package/lib/exceptions/MissingPropertyException.js +3 -1
  129. package/lib/exceptions/MissingPropertyException.js.map +1 -1
  130. package/lib/exceptions/NetworkException.js +3 -1
  131. package/lib/exceptions/NetworkException.js.map +1 -1
  132. package/lib/exceptions/NotAllowedUriException.js +3 -1
  133. package/lib/exceptions/NotAllowedUriException.js.map +1 -1
  134. package/lib/exceptions/NotFoundException.js +3 -1
  135. package/lib/exceptions/NotFoundException.js.map +1 -1
  136. package/lib/exceptions/ServerRequestException.js +3 -1
  137. package/lib/exceptions/ServerRequestException.js.map +1 -1
  138. package/lib/exceptions/ThemePropertyException.js +3 -1
  139. package/lib/exceptions/ThemePropertyException.js.map +1 -1
  140. package/lib/exceptions/TimeoutException.js +3 -1
  141. package/lib/exceptions/TimeoutException.js.map +1 -1
  142. package/lib/exceptions/UnauthorizedException.js +3 -1
  143. package/lib/exceptions/UnauthorizedException.js.map +1 -1
  144. package/lib/exceptions/UnsupportedOperationException.js +3 -1
  145. package/lib/exceptions/UnsupportedOperationException.js.map +1 -1
  146. package/lib/hooks/useContent.js +2 -2
  147. package/lib/hooks/useContent.js.flow +2 -2
  148. package/lib/hooks/useContent.js.map +1 -1
  149. package/lib/hooks/useDeepCompareEffect.js +2 -1
  150. package/lib/hooks/useDeepCompareEffect.js.flow +1 -1
  151. package/lib/hooks/useDeepCompareEffect.js.map +1 -1
  152. package/lib/hooks/useForm.js.flow +1 -2
  153. package/lib/hooks/useForm.js.map +1 -1
  154. package/lib/hooks/useModal.js +2 -2
  155. package/lib/hooks/useModal.js.flow +1 -1
  156. package/lib/hooks/useModal.js.map +1 -1
  157. package/lib/hooks/useModularUI.js +0 -1
  158. package/lib/hooks/useModularUI.js.flow +0 -2
  159. package/lib/hooks/useModularUI.js.map +1 -1
  160. package/lib/hooks/useProgressIndicator.js +2 -2
  161. package/lib/i18n/Locale.js +11 -5
  162. package/lib/i18n/Locale.js.flow +7 -0
  163. package/lib/i18n/Locale.js.map +1 -1
  164. package/lib/i18n/Locales.js +2 -2
  165. package/lib/i18n/Message.js +2 -2
  166. package/lib/i18n/__tests__/Locale.spec.js.flow +14 -0
  167. package/lib/i18n/languages.js +2 -1
  168. package/lib/i18n/languages.js.flow +1 -0
  169. package/lib/i18n/languages.js.map +1 -1
  170. package/lib/i18n/types.js.flow +1 -0
  171. package/lib/models/attributes/AttributeCollection.js +2 -2
  172. package/lib/models/attributes/AttributeContent.js +59 -31
  173. package/lib/models/attributes/AttributeContent.js.flow +63 -16
  174. package/lib/models/attributes/AttributeContent.js.map +1 -1
  175. package/lib/models/attributes/AttributeDataHelper.js +3 -3
  176. package/lib/models/attributes/AttributeDataHelper.js.flow +1 -0
  177. package/lib/models/attributes/AttributeDataHelper.js.map +1 -1
  178. package/lib/models/attributes/BooleanAttributeModel.js +2 -2
  179. package/lib/models/attributes/ChoiceAttributeModel.js +2 -2
  180. package/lib/models/attributes/ChoiceAttributeOptionCollection.js +2 -2
  181. package/lib/models/attributes/CompositeAttributeChildCollection.js +2 -2
  182. package/lib/models/attributes/HelptextAttributeModel.js +24 -9
  183. package/lib/models/attributes/HelptextAttributeModel.js.flow +18 -5
  184. package/lib/models/attributes/HelptextAttributeModel.js.map +1 -1
  185. package/lib/models/attributes/__tests__/AttributeCollection.spec.js.flow +4 -4
  186. package/lib/models/attributes/__tests__/AttributeContent.spec.js.flow +13 -19
  187. package/lib/models/attributes/__tests__/HelptextAttributeModel.spec.js.flow +18 -10
  188. package/lib/models/attributes/_createAttribute.js +2 -2
  189. package/lib/models/base/ResourceModel.js +2 -2
  190. package/lib/models/caseview/CaseViewModel.js +5 -5
  191. package/lib/models/caseview/CaseViewModel.js.flow +5 -3
  192. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  193. package/lib/models/caseview/__tests__/CaseViewModel.spec.js.flow +43 -4
  194. package/lib/models/concepts/ConceptDetailModel.js +2 -2
  195. package/lib/models/concepts/SourceReferenceModel.js +2 -2
  196. package/lib/models/content/ContentTOCModel.js +2 -2
  197. package/lib/models/filters/AssignmentFilterModel.js +2 -2
  198. package/lib/models/filters/BaseFilterModel.js +2 -2
  199. package/lib/models/filters/ConceptIndexFilterModel.js +3 -1
  200. package/lib/models/filters/ConceptIndexFilterModel.js.map +1 -1
  201. package/lib/models/filters/FilterCollection.js +2 -2
  202. package/lib/models/filters/FilterModel.js +3 -1
  203. package/lib/models/filters/FilterModel.js.map +1 -1
  204. package/lib/models/form/FormModel.js +28 -4
  205. package/lib/models/form/FormModel.js.flow +18 -1
  206. package/lib/models/form/FormModel.js.map +1 -1
  207. package/lib/models/form/FormObjectModel.js +5 -7
  208. package/lib/models/form/FormObjectModel.js.flow +2 -4
  209. package/lib/models/form/FormObjectModel.js.map +1 -1
  210. package/lib/models/form/__tests__/FormModel.getters.spec.js.flow +15 -0
  211. package/lib/models/form/__tests__/FormObjectModel.spec.js.flow +29 -3
  212. package/lib/models/grouping/GroupingModel.js +2 -2
  213. package/lib/models/links/normalizeLinkJSON.js +2 -2
  214. package/lib/models/list/ListDetailModel.js +4 -6
  215. package/lib/models/list/ListDetailModel.js.flow +2 -2
  216. package/lib/models/list/ListDetailModel.js.map +1 -1
  217. package/lib/models/list/ListItemCollection.js +40 -0
  218. package/lib/models/list/ListItemCollection.js.flow +38 -1
  219. package/lib/models/list/ListItemCollection.js.map +1 -1
  220. package/lib/models/list/ListItemModel.js +14 -2
  221. package/lib/models/list/ListItemModel.js.flow +15 -0
  222. package/lib/models/list/ListItemModel.js.map +1 -1
  223. package/lib/models/list/ListModel.js +18 -75
  224. package/lib/models/list/ListModel.js.flow +3 -47
  225. package/lib/models/list/ListModel.js.map +1 -1
  226. package/lib/models/list/__tests__/ListDetailModel.spec.js.flow +5 -3
  227. package/lib/models/list/__tests__/ListItemCollection.spec.js.flow +22 -0
  228. package/lib/models/list/__tests__/ListModel.spec.js.flow +5 -5
  229. package/lib/models/lookup/LookupOptionCollection.js +2 -2
  230. package/lib/models/panels/GroupingPanelModel.js +2 -4
  231. package/lib/models/panels/GroupingPanelModel.js.flow +2 -2
  232. package/lib/models/panels/GroupingPanelModel.js.map +1 -1
  233. package/lib/models/panels/__tests__/GroupingPanelModel.spec.js.flow +43 -24
  234. package/lib/models/process/__tests__/ProcessStatusSettingsModel.spec.js.flow +11 -0
  235. package/lib/models/types.js.flow +3 -3
  236. package/lib/modularui/ModularUIError.js +3 -1
  237. package/lib/modularui/ModularUIError.js.map +1 -1
  238. package/lib/modularui/ModularUIRequest.js +69 -49
  239. package/lib/modularui/ModularUIRequest.js.flow +38 -22
  240. package/lib/modularui/ModularUIRequest.js.map +1 -1
  241. package/lib/react-server/serverUtil.js +2 -2
  242. package/lib/react-theme/createTheme.js +2 -2
  243. package/lib/redux/_i18n/reducer.js +2 -2
  244. package/lib/redux/_modularui/actions.js +2 -2
  245. package/lib/redux/_modularui/connector.js +2 -2
  246. package/lib/redux/_modularui/reducer.js +2 -2
  247. package/lib/redux/_modularui/selectors.js +2 -2
  248. package/lib/redux/reducers/AuthReducer.js +2 -2
  249. package/lib/redux/reducers/ModalsReducer.js +2 -2
  250. package/lib/redux/reducers/NotificationReducer.js +2 -2
  251. package/lib/redux/reducers/PreferencesReducer.js +2 -2
  252. package/lib/redux/reducers/ProgressIndicatorReducer.js +2 -2
  253. package/lib/redux/store/configureStore.js +2 -2
  254. package/lib/utils/browser/Cookies.js +18 -31
  255. package/lib/utils/browser/Cookies.js.flow +22 -28
  256. package/lib/utils/browser/Cookies.js.map +1 -1
  257. package/lib/utils/browser/__tests__/Cookies.spec.js.flow +51 -0
  258. package/lib/utils/fetch/xhr.js +4 -3
  259. package/lib/utils/fetch/xhr.js.flow +3 -1
  260. package/lib/utils/fetch/xhr.js.map +1 -1
  261. package/package.json +36 -34
  262. package/src/builder/mergeLayoutHintConfigurations.js +3 -3
  263. package/src/hooks/useContent.js +2 -2
  264. package/src/hooks/useDeepCompareEffect.js +1 -1
  265. package/src/hooks/useForm.js +1 -2
  266. package/src/hooks/useModal.js +1 -1
  267. package/src/hooks/useModularUI.js +0 -2
  268. package/src/i18n/Locale.js +7 -0
  269. package/src/i18n/__tests__/Locale.spec.js +14 -0
  270. package/src/i18n/languages.js +1 -0
  271. package/src/i18n/types.js +1 -0
  272. package/src/models/attributes/AttributeContent.js +63 -16
  273. package/src/models/attributes/AttributeDataHelper.js +1 -0
  274. package/src/models/attributes/HelptextAttributeModel.js +18 -5
  275. package/src/models/attributes/__mock__/_FormCollectionContribution.json +9 -0
  276. package/src/models/attributes/__mock__/_FormCollectionData.json +12 -3
  277. package/src/models/attributes/__tests__/AttributeCollection.spec.js +4 -4
  278. package/src/models/attributes/__tests__/AttributeContent.spec.js +13 -19
  279. package/src/models/attributes/__tests__/HelptextAttributeModel.spec.js +18 -10
  280. package/src/models/caseview/CaseViewModel.js +5 -3
  281. package/src/models/caseview/__tests__/CaseViewModel.spec.js +43 -4
  282. package/src/models/caseview/__tests__/caseview.json +14 -3
  283. package/src/models/caseview/__tests__/caseviewContributions.json +48 -77
  284. package/src/models/caseview/__tests__/caseview_local_taskgroup.json +57 -0
  285. package/src/models/form/FormModel.js +18 -1
  286. package/src/models/form/FormObjectModel.js +2 -4
  287. package/src/models/form/__tests__/FormModel.getters.spec.js +15 -0
  288. package/src/models/form/__tests__/FormObjectModel.spec.js +29 -3
  289. package/src/models/list/ListDetailModel.js +2 -2
  290. package/src/models/list/ListItemCollection.js +38 -1
  291. package/src/models/list/ListItemModel.js +15 -0
  292. package/src/models/list/ListModel.js +3 -47
  293. package/src/models/list/__tests__/ListDetailModel.spec.js +5 -3
  294. package/src/models/list/__tests__/ListItemCollection.spec.js +22 -0
  295. package/src/models/list/__tests__/ListModel.spec.js +5 -5
  296. package/src/models/panels/GroupingPanelModel.js +2 -2
  297. package/src/models/panels/__tests__/GroupingPanelModel.spec.js +43 -24
  298. package/src/models/panels/__tests__/groupingPanel.json +20 -1
  299. package/src/models/panels/__tests__/groupingPanelContributions.json +14 -1
  300. package/src/models/process/__tests__/ProcessStatusSettingsModel.spec.js +11 -0
  301. package/src/models/types.js +3 -3
  302. package/src/modularui/ModularUIRequest.js +38 -22
  303. package/src/utils/browser/Cookies.js +22 -28
  304. package/src/utils/browser/__tests__/Cookies.spec.js +51 -0
  305. package/src/utils/fetch/xhr.js +3 -1
@@ -45,9 +45,9 @@ var _Cache = _interopRequireDefault(require("../browser/Cache"));
45
45
 
46
46
  var _Constants = require("../../constants/Constants");
47
47
 
48
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) { symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
48
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
49
49
 
50
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { Object.defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
50
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? Object.defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
51
51
 
52
52
  var NETWORK_ERROR_CODE = 0;
53
53
  var SUCCESS_CODE = 200;
@@ -188,7 +188,8 @@ var XHR = /*#__PURE__*/function () {
188
188
  return this.options.onProgress;
189
189
  }
190
190
 
191
- return function () {};
191
+ return function () {// do nothing
192
+ };
192
193
  }
193
194
  /**
194
195
  */
@@ -132,7 +132,9 @@ class XHR {
132
132
  return this.options.onProgress;
133
133
  }
134
134
 
135
- return () => {};
135
+ return () => {
136
+ // do nothing
137
+ };
136
138
  }
137
139
 
138
140
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/fetch/xhr.js"],"names":["NETWORK_ERROR_CODE","SUCCESS_CODE","CLIENT_ERROR_CODE","UNAUTHORIZED_CODE","REDIRECTION_CODE","NOT_FOUND_CODE","JSON_TYPE","XHR","options","_options","_attempts","_xmlhttp","xmlhttp","attempts","url","params","aUrl","split","data","method","HTTP_METHODS","GET","timeout","responseType","onProgress","events","baseHeaders","Accept","headers","reject","TimeoutException","responseJSON","status","isReload","NetworkException","NotFoundException","UnauthorizedException","FetchException","response","getResponseHeader","JSON","parse","error","JsonParseException","resolve","getResponse","errorHandler","forEach","eventType","addEventListener","timeoutHandler","responseHandler","eventName","open","Cache","hasItem","withCredentials","basicToken","getItem","setRequestHeader","headerName","send","stringData","XMLHttpRequest","setEventListeners","openConnection","setBasicAuthentication","setCustomHeaders","setOtherOptions","sendData","setXMLHttpRequest","fetch","validateInputArguments","args","IllegalArgumentException","toString","xhr"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAUA;;AAEA;;;;;;AAIA,IAAMA,kBAAkB,GAAG,CAA3B;AACA,IAAMC,YAAY,GAAG,GAArB;AACA,IAAMC,iBAAiB,GAAG,GAA1B;AACA,IAAMC,iBAAiB,GAAG,GAA1B;AACA,IAAMC,gBAAgB,GAAG,GAAzB;AACA,IAAMC,cAAc,GAAG,GAAvB;AAEA,IAAMC,SAAS,GAAG,kBAAlB;AAEA;AACA;AACA;;IACMC,G;AAKJ;AACF;AACE,eAAYC,OAAZ,EAAqC;AAAA;AAAA;AAAA;AAAA;AACnC,SAAKC,QAAL,GAAgBD,OAAhB;AACA,SAAKE,SAAL,GAAiB,CAAjB;AACD;AAED;AACF;;;;;SACE,eAAc;AACZ,aAAO,KAAKC,QAAZ;AACD;AAED;AACF;;SACE,aAAYC,OAAZ,EAAqB;AACnB,WAAKD,QAAL,GAAgBC,OAAhB;AACD;AAED;AACF;;;;SACE,eAAc;AACZ,aAAO,KAAKH,QAAZ;AACD;AAED;AACF;;SACE,aAAYD,OAAZ,EAAqC;AACnC,WAAKC,QAAL,GAAgBD,OAAhB;AACD;AAED;AACF;;;;SACE,eAAe;AACb,aAAO,KAAKE,SAAZ;AACD;AAED;AACF;;SACE,aAAaG,QAAb,EAAuB;AACrB,WAAKH,SAAL,GAAiBG,QAAjB;AACD;AAED;AACF;AACA;;;;SACE,eAAU;AACR,UAAQC,GAAR,GAAgB,KAAKN,OAArB,CAAQM,GAAR;;AACA,UAAI,KAAKC,MAAL,KAAgB,EAApB,EAAwB;AAAA;;AACtB,YAAI,uBAAAD,GAAG,MAAH,CAAAA,GAAG,EAAU,GAAV,CAAP,EAAuB;AAAA;;AACrB,cAAME,IAAI,GAAGF,GAAG,CAACG,KAAJ,CAAU,GAAV,CAAb;AAEA,4FAAUD,IAAI,CAAC,CAAD,CAAd,wBAAqBA,IAAI,CAAC,CAAD,CAAzB,uBAAgC,KAAKD,MAArC;AACD;;AAED,0DAAUD,GAAV,wBAAiB,KAAKC,MAAtB;AACD;;AAED,aAAOD,GAAP;AACD;AAED;AACF;;;;SACE,eAAa;AACX,aAAO,KAAKN,OAAL,CAAaO,MAAb,IAAuB,EAA9B;AACD;AAED;AACF;;;;SACE,eAAW;AACT,aAAO,KAAKP,OAAL,CAAaU,IAAb,IAAqB,IAA5B;AACD;AAED;AACF;;;;SACE,eAAa;AACX,aAAO,KAAKV,OAAL,CAAaW,MAAb,IAAuBC,wBAAaC,GAA3C;AACD;AAED;AACF;;;;SACE,eAAc;AACZ,aAAO,KAAKb,OAAL,CAAac,OAAb,IAAwB,MAA/B;AACD;AAED;AACF;;;;SACE,eAAmB;AACjB,aAAO,KAAKd,OAAL,CAAae,YAAb,IAA6B,MAApC;AACD;AAED;AACF;;;;SACE,eAAuC;AACrC,UAAI,KAAKf,OAAL,CAAagB,UAAjB,EAA6B;AAC3B,eAAO,KAAKhB,OAAL,CAAagB,UAApB;AACD;;AAED,aAAO,YAAM,CAAE,CAAf;AACD;AAED;AACF;;;;SACE,eAAa;AACX,aAAO,KAAKhB,OAAL,CAAaiB,MAAb,IAAuB,EAA9B;AACD;AAED;AACF;;;;SACE,eAAc;AACZ,UAAMC,WAAW,GAAG;AAClBC,QAAAA,MAAM,EAAErB,SADU;AAElB,wBAAgBA,SAFE;AAIlB;AACA,4BAAoB,gBALF;AAOlB,2BAAmB;AAPD,OAApB;;AAUA,UAAI,KAAKE,OAAL,CAAaoB,OAAjB,EAA0B;AACxB;AACA,+CACKF,WADL,GAEK,KAAKlB,OAAL,CAAaoB,OAFlB;AAID;;AAED,aAAOF,WAAP;AACD;AAED;AACF;;;;WACE,wBAAeG,MAAf,EAAuB;AACrB,aAAOA,MAAM,CAAC,IAAIC,4BAAJ,CAAqB,KAAKhB,GAA1B,EAA+B,KAAKK,MAApC,CAAD,CAAb;AACD;AAED;AACF;;;;WACE,sBAAaU,MAAb,EAA0C;AAAA,UAArBE,YAAqB,uEAAN,IAAM;AACxC,UAAQC,MAAR,GAAmB,KAAKpB,OAAxB,CAAQoB,MAAR;AACA,UAAQC,QAAR,GAAqB,KAAKzB,OAA1B,CAAQyB,QAAR;;AAEA,UAAID,MAAM,KAAKhC,kBAAf,EAAmC;AACjC,eAAO6B,MAAM,CAAC,IAAIK,4BAAJ,CAAqB,KAAKpB,GAA1B,EAA+B,KAAKK,MAApC,CAAD,CAAb;AACD;;AAED,UAAIa,MAAM,KAAK3B,cAAf,EAA+B;AAC7B,eAAOwB,MAAM,CAAC,IAAIM,6BAAJ,CAAsB,KAAKrB,GAA3B,EAAgC,KAAKK,MAArC,EAA6Cc,QAA7C,CAAD,CAAb;AACD;;AAED,UAAID,MAAM,KAAK7B,iBAAf,EAAkC;AAChC,eAAO0B,MAAM,CACX,IAAIO,iCAAJ,CAA0B,KAAKtB,GAA/B,EAAoC,KAAKK,MAAzC,EAAiDY,YAAjD,CADW,CAAb;AAGD;;AAED,aAAOF,MAAM,CAAC,IAAIQ,0BAAJ,CAAmBN,YAAnB,EAAiC,KAAKnB,OAAtC,EAA+C,KAAKJ,OAApD,CAAD,CAAb;AACD;AAED;AACF;;;;WACE,uBAAc;AACZ,0BAAmC,KAAKI,OAAxC;AAAA,UAAQW,YAAR,iBAAQA,YAAR;AAAA,UAAsBe,QAAtB,iBAAsBA,QAAtB;;AAEA,UACE,CAACf,YAAY,KAAK,EAAjB,IAAuBA,YAAY,KAAK,MAAzC,KACA,KAAKgB,iBAAL,CAAuB,cAAvB,MAA2CjC,SAF7C,EAGE;AACA,YAAI,4BAAcgC,QAAd,CAAJ,EAA6B;AAC3B,iBAAOA,QAAP;AACD;;AAED,YAAI;AACF,iBAAOE,IAAI,CAACC,KAAL,CAAWH,QAAX,CAAP;AACD,SAFD,CAEE,OAAOI,KAAP,EAAc;AACd,gBAAM,IAAIC,8BAAJ,CAAuBD,KAAvB,CAAN;AACD;AACF;;AAED,aAAOJ,QAAP;AACD;AAED;AACF;;;;WACE,yBAAgBM,OAAhB,EAAyBf,MAAzB,EAAiC;AAC/B,UAAQG,MAAR,GAAmB,KAAKpB,OAAxB,CAAQoB,MAAR;AAEA,UAAIM,QAAQ,GAAG,IAAf;;AACA,UAAI;AACFA,QAAAA,QAAQ,GAAG,KAAKO,WAAL,EAAX;AACD,OAFD,CAEE,OAAOH,KAAP,EAAc;AACd,eAAOb,MAAM,CAACa,KAAD,CAAb;AACD;;AAED,UACGV,MAAM,IAAI/B,YAAV,IAA0B+B,MAAM,GAAG5B,gBAApC,IACC4B,MAAM,KAAK9B,iBAAX,IAAgC,kBAAIoC,QAAJ,EAAc,cAAd,CAFnC,EAGE;AACA,eAAOM,OAAO,CAACN,QAAD,CAAd;AACD;;AAED,aAAO,KAAKQ,YAAL,CAAkBjB,MAAlB,EAA0BS,QAA1B,CAAP;AACD;AAED;AACF;;;;WACE,2BAAkBM,OAAlB,EAA2Bf,MAA3B,EAAmC;AAAA;;AACjC,UAAI,KAAKrB,OAAL,CAAagB,UAAjB,EAA6B;AAC3B,SAAC,MAAD,EAAS,SAAT,EAAoB,WAApB,EAAiC,UAAjC,EAA6CuB,OAA7C,CAAqD,UAACC,SAAD,EAAe;AAClE,UAAA,KAAI,CAACpC,OAAL,CAAaqC,gBAAb,CAA8BD,SAA9B,EAAyC,KAAI,CAACxB,UAA9C;AACD,SAFD;AAGD;;AAED,OAAC,OAAD,EAAU,OAAV,EAAmBuB,OAAnB,CAA2B,UAACC,SAAD,EAAe;AACxC,QAAA,KAAI,CAACpC,OAAL,CAAaqC,gBAAb,CAA8BD,SAA9B,EAAyC;AAAA,iBAAM,KAAI,CAACF,YAAL,CAAkBjB,MAAlB,CAAN;AAAA,SAAzC;AACD,OAFD;AAIA,WAAKjB,OAAL,CAAaqC,gBAAb,CAA8B,SAA9B,EAAyC;AAAA,eAAM,KAAI,CAACC,cAAL,CAAoBrB,MAApB,CAAN;AAAA,OAAzC;AAEA,WAAKjB,OAAL,CAAaqC,gBAAb,CAA8B,MAA9B,EAAsC;AAAA,eACpC,KAAI,CAACE,eAAL,CAAqBP,OAArB,EAA8Bf,MAA9B,CADoC;AAAA,OAAtC,EAbiC,CAiBjC;;AACA,yBAAY,KAAKJ,MAAjB,EAAyBsB,OAAzB,CAAiC,UAACK,SAAD,EAAe;AAC9C,QAAA,KAAI,CAACxC,OAAL,CAAaqC,gBAAb,CAA8BG,SAA9B,EAAyC,KAAI,CAAC3B,MAAL,CAAY2B,SAAZ,CAAzC;AACD,OAFD;AAGD;AAED;AACF;;;;WACE,0BAAiB;AACf,WAAKxC,OAAL,CAAayC,IAAb,CAAkB,KAAKlC,MAAvB,EAA+B,KAAKL,GAApC,EAAyC,IAAzC;AACD;AAED;AACF;;;;WACE,kCAAyB;AACvB,UAAIwC,eAAMC,OAAN,CAAc,OAAd,CAAJ,EAA4B;AAC1B,aAAK3C,OAAL,CAAa4C,eAAb,GAA+B,IAA/B;;AACA,YAAMC,UAAU,GAAGH,eAAMI,OAAN,CAAc,OAAd,CAAnB;;AAEA,YAAI,OAAOD,UAAP,KAAsB,QAA1B,EAAoC;AAClC,eAAK7C,OAAL,CAAa+C,gBAAb,CAA8B,eAA9B,kBAAwDF,UAAxD;AACD;AACF;AACF;AAED;AACF;;;;WACE,2BAAkBG,UAAlB,EAA8B;AAC5B,aAAO,KAAKhD,OAAL,CAAa2B,iBAAb,CAA+BqB,UAA/B,CAAP;AACD;AAED;AACF;;;;WACE,4BAAmB;AAAA;;AACjB,yBAAY,KAAKhC,OAAjB,EAA0BmB,OAA1B,CAAkC,UAACa,UAAD,EAAgB;AAChD,QAAA,MAAI,CAAChD,OAAL,CAAa+C,gBAAb,CAA8BC,UAA9B,EAA0C,MAAI,CAAChC,OAAL,CAAagC,UAAb,CAA1C;AACD,OAFD;AAGD;AAED;AACF;;;;WACE,2BAAkB;AAChB,WAAKhD,OAAL,CAAaW,YAAb,GAA4B,KAAKA,YAAjC;AACA,WAAKX,OAAL,CAAaU,OAAb,GAAuB,KAAKA,OAA5B;AACD;AAED;AACF;;;;WACE,oBAAW;AACT,UAAI,KAAKJ,IAAL,IAAa,IAAjB,EAAuB;AACrB,aAAKN,OAAL,CAAaiD,IAAb;AACD,OAFD,MAEO;AACL,YAAMC,UAAU,GAAG,4BAAc,KAAK5C,IAAnB,IACf,wBAAe,KAAKA,IAApB,CADe,GAEf,KAAKA,IAFT;AAGA,aAAKN,OAAL,CAAaiD,IAAb,CAAkBC,UAAlB;AACD;AACF;AAED;AACF;;;;WACE,6BAAoB;AAAA;;AAClB,aAAO,qBAAY,UAAClB,OAAD,EAAUf,MAAV,EAAqB;AACtC,QAAA,MAAI,CAACjB,OAAL,GAAe,IAAImD,cAAJ,EAAf;;AAEA,QAAA,MAAI,CAACC,iBAAL,CAAuBpB,OAAvB,EAAgCf,MAAhC;;AAEA,QAAA,MAAI,CAACoC,cAAL;;AAEA,QAAA,MAAI,CAACC,sBAAL;;AAEA,QAAA,MAAI,CAACC,gBAAL;;AAEA,QAAA,MAAI,CAACC,eAAL;;AAEA,QAAA,MAAI,CAACC,QAAL;AACD,OAdM,CAAP;AAeD;AAED;AACF;;;;;2FACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEiB,KAAKC,iBAAL,EAFjB;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA,sBAIQ,wBAAepC,4BAAf,IAAmC,KAAKrB,QAAL,GAAgB,CAJ3D;AAAA;AAAA;AAAA;;AAKM,qBAAKA,QAAL,IAAiB,CAAjB;AALN,kDAMa,KAAK0D,KAAL,EANb;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;AAcF;AACA;;;AACA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,IAAD,EAA0B;AACvD,MAAIA,IAAI,IAAI,IAAZ,EAAkB;AAChB,UAAM,IAAIC,oCAAJ,CACJ,kEADI,CAAN;AAGD;;AAED,MAAI,CAAC,4BAAcD,IAAd,CAAL,EAA0B;AACxB,UAAM,IAAIC,oCAAJ,kEACsDD,IAAI,CAACE,QAAL,EADtD,EAAN;AAGD;;AAED,MAAI,CAAC,kBAAIF,IAAJ,EAAU,KAAV,CAAL,EAAuB;AACrB,UAAM,IAAIC,oCAAJ,gEACoD,wBACtDD,IADsD,CADpD,EAAN;AAKD;;AAED,SAAO,IAAP;AACD,CAtBD;AAwBA;AACA;;;AACA,IAAMG,GAAG,GAAG,SAANA,GAAM,CAACH,IAAD,EAAwC;AAClDD,EAAAA,sBAAsB,CAACC,IAAD,CAAtB;AAEA,SAAO,IAAIlE,GAAJ,CAAQkE,IAAR,EAAcF,KAAd,EAAP;AACD,CAJD;;eAMeK,G","sourcesContent":["// @flow\nimport { has, isPlainObject } from \"../helpers/objects\";\n\nimport {\n IllegalArgumentException,\n UnauthorizedException,\n FetchException,\n TimeoutException,\n NotFoundException,\n JsonParseException,\n NetworkException,\n} from \"../../exceptions\";\n\nimport Cache from \"../browser/Cache\";\n\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport type { RequestOptions } from \"./types\";\n\nconst NETWORK_ERROR_CODE = 0;\nconst SUCCESS_CODE = 200;\nconst CLIENT_ERROR_CODE = 400;\nconst UNAUTHORIZED_CODE = 401;\nconst REDIRECTION_CODE = 300;\nconst NOT_FOUND_CODE = 404;\n\nconst JSON_TYPE = \"application/json\";\n\n/**\n * @private\n */\nclass XHR {\n _options: RequestOptions;\n _xmlhttp: XMLHttpRequest;\n _attempts: number;\n\n /**\n */\n constructor(options: RequestOptions) {\n this._options = options;\n this._attempts = 0;\n }\n\n /**\n */\n get xmlhttp() {\n return this._xmlhttp;\n }\n\n /**\n */\n set xmlhttp(xmlhttp) {\n this._xmlhttp = xmlhttp;\n }\n\n /**\n */\n get options() {\n return this._options;\n }\n\n /**\n */\n set options(options: RequestOptions) {\n this._options = options;\n }\n\n /**\n */\n get attempts() {\n return this._attempts;\n }\n\n /**\n */\n set attempts(attempts) {\n this._attempts = attempts;\n }\n\n /**\n * Create and fix url when params or both querystring and params exist.\n */\n get url() {\n const { url } = this.options;\n if (this.params !== \"\") {\n if (url.includes(\"?\")) {\n const aUrl = url.split(\"?\");\n\n return `${aUrl[0]}?${aUrl[1]}&${this.params}`;\n }\n\n return `${url}?${this.params}`;\n }\n\n return url;\n }\n\n /**\n */\n get params() {\n return this.options.params || \"\";\n }\n\n /**\n */\n get data() {\n return this.options.data || null;\n }\n\n /**\n */\n get method() {\n return this.options.method || HTTP_METHODS.GET;\n }\n\n /**\n */\n get timeout() {\n return this.options.timeout || 300000;\n }\n\n /**\n */\n get responseType() {\n return this.options.responseType || \"json\";\n }\n\n /**\n */\n get onProgress(): ProgressEventHandler {\n if (this.options.onProgress) {\n return this.options.onProgress;\n }\n\n return () => {};\n }\n\n /**\n */\n get events() {\n return this.options.events || {};\n }\n\n /**\n */\n get headers() {\n const baseHeaders = {\n Accept: JSON_TYPE,\n \"Content-Type\": JSON_TYPE,\n\n // needed for csrf, see: https://plaza.beinformed.com/amdoc/csrf-protection-in-modular-ui-services-40054554.html\n \"X-Requested-With\": \"XMLHttpRequest\",\n\n \"Accept-Language\": \"en\",\n };\n\n if (this.options.headers) {\n // $FlowFixMe[cannot-spread-indexer]\n return {\n ...baseHeaders,\n ...this.options.headers,\n };\n }\n\n return baseHeaders;\n }\n\n /**\n */\n timeoutHandler(reject) {\n return reject(new TimeoutException(this.url, this.method));\n }\n\n /**\n */\n errorHandler(reject, responseJSON = null) {\n const { status } = this.xmlhttp;\n const { isReload } = this.options;\n\n if (status === NETWORK_ERROR_CODE) {\n return reject(new NetworkException(this.url, this.method));\n }\n\n if (status === NOT_FOUND_CODE) {\n return reject(new NotFoundException(this.url, this.method, isReload));\n }\n\n if (status === UNAUTHORIZED_CODE) {\n return reject(\n new UnauthorizedException(this.url, this.method, responseJSON)\n );\n }\n\n return reject(new FetchException(responseJSON, this.xmlhttp, this.options));\n }\n\n /**\n */\n getResponse() {\n const { responseType, response } = this.xmlhttp;\n\n if (\n (responseType === \"\" || responseType === \"text\") &&\n this.getResponseHeader(\"Content-Type\") === JSON_TYPE\n ) {\n if (isPlainObject(response)) {\n return response;\n }\n\n try {\n return JSON.parse(response);\n } catch (error) {\n throw new JsonParseException(error);\n }\n }\n\n return response;\n }\n\n /**\n */\n responseHandler(resolve, reject) {\n const { status } = this.xmlhttp;\n\n let response = null;\n try {\n response = this.getResponse();\n } catch (error) {\n return reject(error);\n }\n\n if (\n (status >= SUCCESS_CODE && status < REDIRECTION_CODE) ||\n (status === CLIENT_ERROR_CODE && has(response, \"formresponse\"))\n ) {\n return resolve(response);\n }\n\n return this.errorHandler(reject, response);\n }\n\n /**\n */\n setEventListeners(resolve, reject) {\n if (this.options.onProgress) {\n [\"load\", \"loadend\", \"loadstart\", \"progress\"].forEach((eventType) => {\n this.xmlhttp.addEventListener(eventType, this.onProgress);\n });\n }\n\n [\"abort\", \"error\"].forEach((eventType) => {\n this.xmlhttp.addEventListener(eventType, () => this.errorHandler(reject));\n });\n\n this.xmlhttp.addEventListener(\"timeout\", () => this.timeoutHandler(reject));\n\n this.xmlhttp.addEventListener(\"load\", () =>\n this.responseHandler(resolve, reject)\n );\n\n // Set custom events\n Object.keys(this.events).forEach((eventName) => {\n this.xmlhttp.addEventListener(eventName, this.events[eventName]);\n });\n }\n\n /**\n */\n openConnection() {\n this.xmlhttp.open(this.method, this.url, true);\n }\n\n /**\n */\n setBasicAuthentication() {\n if (Cache.hasItem(\"basic\")) {\n this.xmlhttp.withCredentials = true;\n const basicToken = Cache.getItem(\"basic\");\n\n if (typeof basicToken === \"string\") {\n this.xmlhttp.setRequestHeader(\"Authorization\", `Basic ${basicToken}`);\n }\n }\n }\n\n /**\n */\n getResponseHeader(headerName) {\n return this.xmlhttp.getResponseHeader(headerName);\n }\n\n /**\n */\n setCustomHeaders() {\n Object.keys(this.headers).forEach((headerName) => {\n this.xmlhttp.setRequestHeader(headerName, this.headers[headerName]);\n });\n }\n\n /**\n */\n setOtherOptions() {\n this.xmlhttp.responseType = this.responseType;\n this.xmlhttp.timeout = this.timeout;\n }\n\n /**\n */\n sendData() {\n if (this.data == null) {\n this.xmlhttp.send();\n } else {\n const stringData = isPlainObject(this.data)\n ? JSON.stringify(this.data)\n : this.data;\n this.xmlhttp.send(stringData);\n }\n }\n\n /**\n */\n setXMLHttpRequest() {\n return new Promise((resolve, reject) => {\n this.xmlhttp = new XMLHttpRequest();\n\n this.setEventListeners(resolve, reject);\n\n this.openConnection();\n\n this.setBasicAuthentication();\n\n this.setCustomHeaders();\n\n this.setOtherOptions();\n\n this.sendData();\n });\n }\n\n /**\n */\n async fetch() {\n try {\n return await this.setXMLHttpRequest();\n } catch (err) {\n if (err instanceof NetworkException && this.attempts < 2) {\n this.attempts += 1;\n return this.fetch();\n }\n\n throw err;\n }\n }\n}\n\n/**\n */\nconst validateInputArguments = (args: RequestOptions) => {\n if (args == null) {\n throw new IllegalArgumentException(\n \"Missing request options, expecting an object as argument for xhr\"\n );\n }\n\n if (!isPlainObject(args)) {\n throw new IllegalArgumentException(\n `Expecting an object as argument for xhr, but received: ${args.toString()}`\n );\n }\n\n if (!has(args, \"url\")) {\n throw new IllegalArgumentException(\n `No url property found in arguments of xhr, received: ${JSON.stringify(\n args\n )}`\n );\n }\n\n return true;\n};\n\n/**\n */\nconst xhr = (args: RequestOptions): Promise<any> => {\n validateInputArguments(args);\n\n return new XHR(args).fetch();\n};\n\nexport default xhr;\n"],"file":"xhr.js"}
1
+ {"version":3,"sources":["../../../src/utils/fetch/xhr.js"],"names":["NETWORK_ERROR_CODE","SUCCESS_CODE","CLIENT_ERROR_CODE","UNAUTHORIZED_CODE","REDIRECTION_CODE","NOT_FOUND_CODE","JSON_TYPE","XHR","options","_options","_attempts","_xmlhttp","xmlhttp","attempts","url","params","aUrl","split","data","method","HTTP_METHODS","GET","timeout","responseType","onProgress","events","baseHeaders","Accept","headers","reject","TimeoutException","responseJSON","status","isReload","NetworkException","NotFoundException","UnauthorizedException","FetchException","response","getResponseHeader","JSON","parse","error","JsonParseException","resolve","getResponse","errorHandler","forEach","eventType","addEventListener","timeoutHandler","responseHandler","eventName","open","Cache","hasItem","withCredentials","basicToken","getItem","setRequestHeader","headerName","send","stringData","XMLHttpRequest","setEventListeners","openConnection","setBasicAuthentication","setCustomHeaders","setOtherOptions","sendData","setXMLHttpRequest","fetch","validateInputArguments","args","IllegalArgumentException","toString","xhr"],"mappings":"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","sourcesContent":["// @flow\nimport { has, isPlainObject } from \"../helpers/objects\";\n\nimport {\n IllegalArgumentException,\n UnauthorizedException,\n FetchException,\n TimeoutException,\n NotFoundException,\n JsonParseException,\n NetworkException,\n} from \"../../exceptions\";\n\nimport Cache from \"../browser/Cache\";\n\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport type { RequestOptions } from \"./types\";\n\nconst NETWORK_ERROR_CODE = 0;\nconst SUCCESS_CODE = 200;\nconst CLIENT_ERROR_CODE = 400;\nconst UNAUTHORIZED_CODE = 401;\nconst REDIRECTION_CODE = 300;\nconst NOT_FOUND_CODE = 404;\n\nconst JSON_TYPE = \"application/json\";\n\n/**\n * @private\n */\nclass XHR {\n _options: RequestOptions;\n _xmlhttp: XMLHttpRequest;\n _attempts: number;\n\n /**\n */\n constructor(options: RequestOptions) {\n this._options = options;\n this._attempts = 0;\n }\n\n /**\n */\n get xmlhttp() {\n return this._xmlhttp;\n }\n\n /**\n */\n set xmlhttp(xmlhttp) {\n this._xmlhttp = xmlhttp;\n }\n\n /**\n */\n get options() {\n return this._options;\n }\n\n /**\n */\n set options(options: RequestOptions) {\n this._options = options;\n }\n\n /**\n */\n get attempts() {\n return this._attempts;\n }\n\n /**\n */\n set attempts(attempts) {\n this._attempts = attempts;\n }\n\n /**\n * Create and fix url when params or both querystring and params exist.\n */\n get url() {\n const { url } = this.options;\n if (this.params !== \"\") {\n if (url.includes(\"?\")) {\n const aUrl = url.split(\"?\");\n\n return `${aUrl[0]}?${aUrl[1]}&${this.params}`;\n }\n\n return `${url}?${this.params}`;\n }\n\n return url;\n }\n\n /**\n */\n get params() {\n return this.options.params || \"\";\n }\n\n /**\n */\n get data() {\n return this.options.data || null;\n }\n\n /**\n */\n get method() {\n return this.options.method || HTTP_METHODS.GET;\n }\n\n /**\n */\n get timeout() {\n return this.options.timeout || 300000;\n }\n\n /**\n */\n get responseType() {\n return this.options.responseType || \"json\";\n }\n\n /**\n */\n get onProgress(): ProgressEventHandler {\n if (this.options.onProgress) {\n return this.options.onProgress;\n }\n\n return () => {\n // do nothing\n };\n }\n\n /**\n */\n get events() {\n return this.options.events || {};\n }\n\n /**\n */\n get headers() {\n const baseHeaders = {\n Accept: JSON_TYPE,\n \"Content-Type\": JSON_TYPE,\n\n // needed for csrf, see: https://plaza.beinformed.com/amdoc/csrf-protection-in-modular-ui-services-40054554.html\n \"X-Requested-With\": \"XMLHttpRequest\",\n\n \"Accept-Language\": \"en\",\n };\n\n if (this.options.headers) {\n // $FlowFixMe[cannot-spread-indexer]\n return {\n ...baseHeaders,\n ...this.options.headers,\n };\n }\n\n return baseHeaders;\n }\n\n /**\n */\n timeoutHandler(reject) {\n return reject(new TimeoutException(this.url, this.method));\n }\n\n /**\n */\n errorHandler(reject, responseJSON = null) {\n const { status } = this.xmlhttp;\n const { isReload } = this.options;\n\n if (status === NETWORK_ERROR_CODE) {\n return reject(new NetworkException(this.url, this.method));\n }\n\n if (status === NOT_FOUND_CODE) {\n return reject(new NotFoundException(this.url, this.method, isReload));\n }\n\n if (status === UNAUTHORIZED_CODE) {\n return reject(\n new UnauthorizedException(this.url, this.method, responseJSON)\n );\n }\n\n return reject(new FetchException(responseJSON, this.xmlhttp, this.options));\n }\n\n /**\n */\n getResponse() {\n const { responseType, response } = this.xmlhttp;\n\n if (\n (responseType === \"\" || responseType === \"text\") &&\n this.getResponseHeader(\"Content-Type\") === JSON_TYPE\n ) {\n if (isPlainObject(response)) {\n return response;\n }\n\n try {\n return JSON.parse(response);\n } catch (error) {\n throw new JsonParseException(error);\n }\n }\n\n return response;\n }\n\n /**\n */\n responseHandler(resolve, reject) {\n const { status } = this.xmlhttp;\n\n let response = null;\n try {\n response = this.getResponse();\n } catch (error) {\n return reject(error);\n }\n\n if (\n (status >= SUCCESS_CODE && status < REDIRECTION_CODE) ||\n (status === CLIENT_ERROR_CODE && has(response, \"formresponse\"))\n ) {\n return resolve(response);\n }\n\n return this.errorHandler(reject, response);\n }\n\n /**\n */\n setEventListeners(resolve, reject) {\n if (this.options.onProgress) {\n [\"load\", \"loadend\", \"loadstart\", \"progress\"].forEach((eventType) => {\n this.xmlhttp.addEventListener(eventType, this.onProgress);\n });\n }\n\n [\"abort\", \"error\"].forEach((eventType) => {\n this.xmlhttp.addEventListener(eventType, () => this.errorHandler(reject));\n });\n\n this.xmlhttp.addEventListener(\"timeout\", () => this.timeoutHandler(reject));\n\n this.xmlhttp.addEventListener(\"load\", () =>\n this.responseHandler(resolve, reject)\n );\n\n // Set custom events\n Object.keys(this.events).forEach((eventName) => {\n this.xmlhttp.addEventListener(eventName, this.events[eventName]);\n });\n }\n\n /**\n */\n openConnection() {\n this.xmlhttp.open(this.method, this.url, true);\n }\n\n /**\n */\n setBasicAuthentication() {\n if (Cache.hasItem(\"basic\")) {\n this.xmlhttp.withCredentials = true;\n const basicToken = Cache.getItem(\"basic\");\n\n if (typeof basicToken === \"string\") {\n this.xmlhttp.setRequestHeader(\"Authorization\", `Basic ${basicToken}`);\n }\n }\n }\n\n /**\n */\n getResponseHeader(headerName) {\n return this.xmlhttp.getResponseHeader(headerName);\n }\n\n /**\n */\n setCustomHeaders() {\n Object.keys(this.headers).forEach((headerName) => {\n this.xmlhttp.setRequestHeader(headerName, this.headers[headerName]);\n });\n }\n\n /**\n */\n setOtherOptions() {\n this.xmlhttp.responseType = this.responseType;\n this.xmlhttp.timeout = this.timeout;\n }\n\n /**\n */\n sendData() {\n if (this.data == null) {\n this.xmlhttp.send();\n } else {\n const stringData = isPlainObject(this.data)\n ? JSON.stringify(this.data)\n : this.data;\n this.xmlhttp.send(stringData);\n }\n }\n\n /**\n */\n setXMLHttpRequest() {\n return new Promise((resolve, reject) => {\n this.xmlhttp = new XMLHttpRequest();\n\n this.setEventListeners(resolve, reject);\n\n this.openConnection();\n\n this.setBasicAuthentication();\n\n this.setCustomHeaders();\n\n this.setOtherOptions();\n\n this.sendData();\n });\n }\n\n /**\n */\n async fetch() {\n try {\n return await this.setXMLHttpRequest();\n } catch (err) {\n if (err instanceof NetworkException && this.attempts < 2) {\n this.attempts += 1;\n return this.fetch();\n }\n\n throw err;\n }\n }\n}\n\n/**\n */\nconst validateInputArguments = (args: RequestOptions) => {\n if (args == null) {\n throw new IllegalArgumentException(\n \"Missing request options, expecting an object as argument for xhr\"\n );\n }\n\n if (!isPlainObject(args)) {\n throw new IllegalArgumentException(\n `Expecting an object as argument for xhr, but received: ${args.toString()}`\n );\n }\n\n if (!has(args, \"url\")) {\n throw new IllegalArgumentException(\n `No url property found in arguments of xhr, received: ${JSON.stringify(\n args\n )}`\n );\n }\n\n return true;\n};\n\n/**\n */\nconst xhr = (args: RequestOptions): Promise<any> => {\n validateInputArguments(args);\n\n return new XHR(args).fetch();\n};\n\nexport default xhr;\n"],"file":"xhr.js"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.12.0",
3
+ "version": "1.13.1",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "http://support.beinformed.com",
7
7
  "main": "lib/index.js",
8
8
  "module": "esm/index.js",
9
9
  "engines": {
10
- "node": "^12.20 || ^14.14.0 || ^16"
10
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
11
11
  },
12
12
  "esnext": "src/index.js",
13
13
  "sideEffects": false,
@@ -38,7 +38,7 @@
38
38
  "prepublishOnly": "npm run build",
39
39
  "docs": "node ./.build/docs.js",
40
40
  "prepare": "husky install",
41
- "security-audit": "npm audit --production --json | node ./.build/transform-audit.js > npm-audit.json"
41
+ "security-audit": "auditjs ossi --xml > npm-audit.xml"
42
42
  },
43
43
  "repository": {
44
44
  "type": "git",
@@ -71,16 +71,16 @@
71
71
  "react": "^16.14.0 || ^17.0.0",
72
72
  "react-dom": "^16.14.0 || ^17.0.0",
73
73
  "react-helmet-async": "^1.0.0",
74
- "redux": "^4.0.0",
75
74
  "react-redux": "^7.0.0",
76
75
  "react-router-dom": "^5.2.0",
76
+ "redux": "^4.0.0",
77
77
  "redux-thunk": "^2.3.0",
78
78
  "styled-components": "^5.2.0"
79
79
  },
80
80
  "dependencies": {
81
- "@babel/runtime-corejs3": "^7.15.4",
81
+ "@babel/runtime-corejs3": "^7.16.5",
82
82
  "big.js": "^6.1.1",
83
- "date-fns": "^2.25.0",
83
+ "date-fns": "^2.27.0",
84
84
  "deepmerge": "^4.2.2",
85
85
  "dequal": "^2.0.2",
86
86
  "element-closest": "^3.0.2",
@@ -89,59 +89,61 @@
89
89
  "format-message": "^6.2.3",
90
90
  "he": "^1.2.0",
91
91
  "iban": "^0.0.14",
92
+ "js-cookie": "^3.0.1",
92
93
  "lodash": "^4.17.21",
93
- "reselect": "^4.0.0",
94
+ "reselect": "^4.1.5",
94
95
  "setimmediate": "^1.0.5"
95
96
  },
96
97
  "devDependencies": {
97
- "@babel/cli": "^7.15.7",
98
- "@babel/core": "^7.15.8",
99
- "@babel/eslint-parser": "^7.15.8",
100
- "@babel/eslint-plugin": "^7.14.5",
98
+ "@babel/cli": "^7.16.0",
99
+ "@babel/core": "^7.16.5",
100
+ "@babel/eslint-parser": "^7.16.5",
101
+ "@babel/eslint-plugin": "^7.16.5",
101
102
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
102
- "@babel/plugin-transform-runtime": "^7.15.8",
103
- "@babel/preset-env": "^7.15.8",
104
- "@babel/preset-flow": "^7.14.5",
105
- "@babel/preset-react": "^7.14.5",
106
- "@commitlint/cli": "^13.2.1",
107
- "@commitlint/config-conventional": "^13.2.0",
103
+ "@babel/plugin-transform-runtime": "^7.16.5",
104
+ "@babel/preset-env": "^7.16.5",
105
+ "@babel/preset-flow": "^7.16.5",
106
+ "@babel/preset-react": "^7.16.5",
107
+ "@commitlint/cli": "^15.0.0",
108
+ "@commitlint/config-conventional": "^15.0.0",
108
109
  "@testing-library/react-hooks": "^7.0.2",
109
- "babel-jest": "^27.3.1",
110
- "babel-plugin-styled-components": "^1.13.3",
110
+ "auditjs": "^4.0.33",
111
+ "babel-jest": "^27.4.5",
112
+ "babel-plugin-styled-components": "^2.0.2",
111
113
  "cherry-pick": "^0.5.0",
112
114
  "cross-env": "^7.0.3",
113
115
  "documentation": "^13.2.5",
114
- "eslint": "^7.32.0",
116
+ "eslint": "^8.5.0",
115
117
  "eslint-config-prettier": "^8.3.0",
116
118
  "eslint-plugin-babel": "^5.3.1",
117
- "eslint-plugin-flowtype": "^6.1.1",
118
- "eslint-plugin-import": "^2.25.2",
119
- "eslint-plugin-jest": "^25.2.2",
120
- "eslint-plugin-jsdoc": "^37.0.0",
121
- "eslint-plugin-react": "^7.26.1",
122
- "eslint-plugin-react-hooks": "^4.2.0",
119
+ "eslint-plugin-flowtype": "^8.0.3",
120
+ "eslint-plugin-import": "^2.25.3",
121
+ "eslint-plugin-jest": "^25.3.0",
122
+ "eslint-plugin-jsdoc": "^37.4.0",
123
+ "eslint-plugin-react": "^7.28.0",
124
+ "eslint-plugin-react-hooks": "^4.3.0",
123
125
  "flow-bin": "0.152.0",
124
126
  "flow-copy-source": "^2.0.9",
125
- "flow-typed": "^3.4.0",
127
+ "flow-typed": "^3.5.0",
126
128
  "glob": "^7.2.0",
127
129
  "history": "^4.0.0",
128
130
  "husky": "^7.0.4",
129
- "jest": "^27.3.1",
131
+ "jest": "^27.4.5",
130
132
  "jest-junit": "^13.0.0",
131
133
  "jest-sonar-reporter": "^2.0.0",
132
134
  "jscodeshift": "^0.13.0",
133
- "lint-staged": "^11.2.4",
135
+ "lint-staged": "^12.1.3",
134
136
  "polished": "^4.1.3",
135
- "prettier": "^2.4.1",
137
+ "prettier": "^2.5.1",
136
138
  "react": "^17.0.2",
137
139
  "react-dom": "^17.0.2",
138
- "react-helmet-async": "^1.1.2",
139
- "react-redux": "^7.2.5",
140
+ "react-helmet-async": "^1.2.2",
141
+ "react-redux": "^7.2.6",
140
142
  "react-router-dom": "^5.3.0",
141
143
  "react-test-renderer": "^17.0.2",
142
- "redux": "^4.1.1",
144
+ "redux": "^4.1.2",
143
145
  "redux-mock-store": "^1.5.4",
144
- "redux-thunk": "^2.3.0",
146
+ "redux-thunk": "^2.4.1",
145
147
  "rimraf": "^3.0.2",
146
148
  "standard-version": "^9.3.2",
147
149
  "styled-components": "^5.3.3",
@@ -44,9 +44,9 @@ exports.mergeLayoutHintConfigurations = async (
44
44
  path.join(outputFolder, "LayoutHintConfig.json"),
45
45
  JSON.stringify(newConfig),
46
46
 
47
- (err) => {
48
- if (err) {
49
- return reject(err);
47
+ (writeErr) => {
48
+ if (writeErr) {
49
+ return reject(writeErr);
50
50
  }
51
51
 
52
52
  return resolve();
@@ -35,8 +35,8 @@ export const useContentFromSourceReferences = (
35
35
  });
36
36
 
37
37
  start();
38
- Promise.all(requests).then((content) => {
39
- setContent(content);
38
+ Promise.all(requests).then((responseContent) => {
39
+ setContent(responseContent);
40
40
  finish();
41
41
  });
42
42
 
@@ -10,7 +10,7 @@ type DependencyList = Array<mixed>;
10
10
  * Need to copy this, because the dependency on dequal breaks in ie11
11
11
  */
12
12
  const useDeepCompareMemoize = (value: DependencyList) => {
13
- const ref = React.useRef<DependencyList | null>(null);
13
+ const ref = React.useRef<DependencyList | null>(null); // NOSONAR
14
14
  const signalRef = React.useRef<number>(0);
15
15
 
16
16
  if (!deepEqual(value, ref.current)) {
@@ -20,8 +20,7 @@ import {
20
20
 
21
21
  import FormModel from "../models/form/FormModel";
22
22
 
23
- import type { FormObjectModel } from "../models";
24
- import type { AttributeType } from "../models";
23
+ import type { FormObjectModel, AttributeType } from "../models";
25
24
  import type { UpdateFormOptions } from "../redux/types";
26
25
  import type {
27
26
  RemoveModelByKeyAction,
@@ -25,7 +25,7 @@ export const useModal: ModalHook = (modalId: string) => {
25
25
 
26
26
  const dispatch = useDispatch();
27
27
  const modal = useSelector(({ modals }) =>
28
- modals.modals.find((modal) => modal.key === modalId)
28
+ modals.modals.find((m) => m.key === modalId)
29
29
  );
30
30
 
31
31
  const show = useCallback(() => {
@@ -38,8 +38,6 @@ export const useModularUI = (
38
38
 
39
39
  // dispatch loadModularUI
40
40
  useDeepCompareEffect(() => {
41
- // console.info({ new: options }, { old: prevOptions.current });
42
-
43
41
  // prevent reloads when previous option had the isReload, but the new options not
44
42
  const isOldReload =
45
43
  prevHref.current === href &&
@@ -15,6 +15,7 @@ class Locale {
15
15
  _code: string;
16
16
  _messages: { [string]: string };
17
17
  _errors: { [string]: string };
18
+ _nativeName: ?string;
18
19
 
19
20
  constructor(locale: LocaleConfiguration) {
20
21
  this._code = locale.code;
@@ -22,6 +23,8 @@ class Locale {
22
23
  this._messages = this.fixPlaceHoldersInObject(locale.messages);
23
24
  this._errors = this.fixPlaceHoldersInObject(locale.errors);
24
25
 
26
+ this._nativeName = locale.nativeName;
27
+
25
28
  formatMessage.setup({
26
29
  missingTranslation: "ignore",
27
30
  });
@@ -38,6 +41,10 @@ class Locale {
38
41
  * Retrieve nativeName
39
42
  */
40
43
  get nativeName(): string {
44
+ if (this._nativeName) {
45
+ return this._nativeName;
46
+ }
47
+
41
48
  const aLocale = this.code.split("-");
42
49
 
43
50
  if (aLocale.length > 0) {
@@ -39,6 +39,20 @@ describe("locale", () => {
39
39
  expect(locale.getMessage("testMessage")).toBe("Updated message");
40
40
  });
41
41
 
42
+ it("can handle languages without iso-639-2 code", () => {
43
+ const locale = new Locale({
44
+ code: "pap",
45
+ nativeName: "Papiamento",
46
+ messages: {
47
+ descr: "Papiamento",
48
+ },
49
+ errors: {},
50
+ });
51
+
52
+ expect(locale.code).toBe("pap");
53
+ expect(locale.nativeName).toBe("Papiamento");
54
+ });
55
+
42
56
  it("throws on non exising locale", () => {
43
57
  const locale = new Locale({
44
58
  code: "NONEXISTING",
@@ -200,6 +200,7 @@ const languages = {
200
200
  za: ["Zhuang", "Cuengh / Tôô / 壮语"],
201
201
  zh: ["Chinese", "中文"],
202
202
  zu: ["Zulu", "isiZulu"],
203
+ pap: ["Papiamento", "Papiamento"],
203
204
  },
204
205
  };
205
206
 
package/src/i18n/types.js CHANGED
@@ -19,4 +19,5 @@ export type LocaleConfiguration = {
19
19
  code: string,
20
20
  messages: Object,
21
21
  errors?: Object,
22
+ nativeName?: string,
22
23
  };
@@ -3,15 +3,19 @@ import { retrieveText } from "../../utils/helpers/text";
3
3
  import { hasAllContentInData } from "../../constants/Settings";
4
4
  import SectionModel from "../content/SectionModel";
5
5
 
6
+ import LayoutHintCollection from "../layouthint/LayoutHintCollection";
7
+ import { isPlainObject } from "../../utils";
8
+
6
9
  import type {
7
10
  ContentData,
11
+ ContentElementMapped,
8
12
  PropertyData,
13
+ PropertyElementMapped,
9
14
  TextFragmentData,
15
+ TextFragmentElementMapped,
10
16
  ContentAll,
11
17
  } from "../types";
12
18
  import type SubSectionModel from "../content/SubSectionModel";
13
- import LayoutHintCollection from "../layouthint/LayoutHintCollection";
14
- import { isPlainObject } from "../../utils";
15
19
 
16
20
  class AttributeContent {
17
21
  _content: ?ContentData;
@@ -116,51 +120,84 @@ class AttributeContent {
116
120
 
117
121
  /**
118
122
  */
119
- getContentElements<T>(elementName: string, collectionName: string): Array<T> {
120
- return this.elements
121
- .filter((element) => elementName in element)
123
+ getContentElements<T>(elementName: string): Array<T> {
124
+ // $FlowIssue incompatible-return
125
+ return this.elements.filter((element) => elementName in element);
126
+ }
127
+
128
+ /**
129
+ */
130
+ getContentElementCollections<T>(
131
+ elementName: string,
132
+ collectionName: string
133
+ ): Array<T> {
134
+ return this.getContentElements(elementName)
122
135
  .map((element) => element[elementName][collectionName])
123
136
  .flat();
124
137
  }
125
138
 
139
+ /**
140
+ */
141
+ getContentElementCollectionByLabels<T, U>(
142
+ elementName: string,
143
+ collectionName: string,
144
+ labels: Array<string>
145
+ ): Array<U> {
146
+ return (
147
+ this.getContentElements<T>(elementName)
148
+ // $FlowIssue incompatible-use
149
+ .filter((element) => labels.includes(element[elementName].label))
150
+ // $FlowIssue incompatible-use
151
+ .map((element) => element[elementName][collectionName])
152
+ .flat()
153
+ );
154
+ }
155
+
126
156
  /**
127
157
  */
128
158
  get properties(): Array<PropertyData> {
129
- return this.getContentElements<PropertyData>(
159
+ return this.getContentElementCollections<PropertyData>(
130
160
  "propertyElement",
131
161
  "properties"
132
162
  );
133
163
  }
134
164
 
135
165
  /**
136
- * Get concept properties by id
166
+ * Get concept properties by property element label
137
167
  */
138
- getConceptPropertiesByIds(ids: Array<string>): Array<PropertyData> {
139
- return this.properties.filter((property) => ids.includes(property.type));
168
+ getConceptPropertiesByLabels(labels: Array<string>): Array<PropertyData> {
169
+ return this.getContentElementCollectionByLabels<
170
+ PropertyElementMapped,
171
+ PropertyData
172
+ >("propertyElement", "properties", labels);
140
173
  }
141
174
 
142
175
  /**
143
176
  */
144
177
  get textfragments(): Array<TextFragmentData> {
145
- return this.getContentElements<TextFragmentData>(
178
+ return this.getContentElementCollections<TextFragmentData>(
146
179
  "textFragmentElement",
147
180
  "textfragments"
148
181
  );
149
182
  }
150
183
 
151
184
  /**
152
- * Get concept text fragments by type
185
+ * Get concept text fragments by text fragment element label
153
186
  */
154
- getTextFragmentByKeys(keys: Array<string>): Array<TextFragmentData> {
155
- return this.textfragments.filter((textfragment) =>
156
- keys.includes(textfragment.type)
157
- );
187
+ getTextFragmentsByLabels(labels: Array<string>): Array<TextFragmentData> {
188
+ return this.getContentElementCollectionByLabels<
189
+ TextFragmentElementMapped,
190
+ TextFragmentData
191
+ >("textFragmentElement", "textfragments", labels);
158
192
  }
159
193
 
160
194
  /**
161
195
  */
162
196
  get sections(): Array<SectionModel> {
163
- return this.getContentElements<SectionModel>("contentElement", "sections");
197
+ return this.getContentElementCollections<SectionModel>(
198
+ "contentElement",
199
+ "sections"
200
+ );
164
201
  }
165
202
 
166
203
  /**
@@ -169,6 +206,16 @@ class AttributeContent {
169
206
  return this.sections.filter((section) => types.includes(section.type));
170
207
  }
171
208
 
209
+ /**
210
+ * Get concept text fragments by text fragment element label
211
+ */
212
+ getSectionsByLabels(labels: Array<string>): Array<SectionModel> {
213
+ return this.getContentElementCollectionByLabels<
214
+ ContentElementMapped,
215
+ SectionModel
216
+ >("contentElement", "sections", labels);
217
+ }
218
+
172
219
  /**
173
220
  */
174
221
  getReferredSections(): Array<SectionModel | SubSectionModel> {
@@ -269,6 +269,7 @@ class AttributeDataHelper {
269
269
  "label",
270
270
  "elements",
271
271
  "layouthint",
272
+ "text",
272
273
  ]);
273
274
 
274
275
  if (Object.keys(pickedContent).length > 0) {
@@ -1,12 +1,12 @@
1
1
  // @flow
2
2
  import { has } from "../../utils/helpers/objects";
3
3
 
4
- import LabelAttributeModel from "./LabelAttributeModel";
4
+ import AttributeModel from "./AttributeModel";
5
5
 
6
6
  /**
7
7
  * Helptext attribute
8
8
  */
9
- export default class HelptextAttributeModel extends LabelAttributeModel {
9
+ export default class HelptextAttributeModel extends AttributeModel {
10
10
  /**
11
11
  */
12
12
  static isApplicableModel(contributions: Object): boolean {
@@ -26,9 +26,9 @@ export default class HelptextAttributeModel extends LabelAttributeModel {
26
26
  * Get helptext text
27
27
  */
28
28
  get text(): string | null {
29
- const dataText = this.getData("value");
30
- if (dataText) {
31
- return dataText.message ?? dataText;
29
+ const dataContent = this.getData("content");
30
+ if (dataContent?.text) {
31
+ return dataContent.text.message;
32
32
  }
33
33
 
34
34
  const contributionText = this.getContribution("text");
@@ -38,4 +38,17 @@ export default class HelptextAttributeModel extends LabelAttributeModel {
38
38
 
39
39
  return null;
40
40
  }
41
+
42
+ /**
43
+ */
44
+ // eslint-disable-next-line no-unused-vars
45
+ update(value: string): HelptextAttributeModel {
46
+ return this;
47
+ }
48
+
49
+ /**
50
+ */
51
+ getFormData(): null {
52
+ return null;
53
+ }
41
54
  }
@@ -215,6 +215,15 @@
215
215
  "readonly": true
216
216
  }
217
217
  },
218
+ {
219
+ "HelpText2": {
220
+ "label": "Help text 2",
221
+ "type": "string",
222
+ "mandatory": false,
223
+ "text": "<p>Tekst met placeholder, caseid: ${CASE.ID}</p>",
224
+ "readonly": true
225
+ }
226
+ },
218
227
  {
219
228
  "Label1": {
220
229
  "label": "Label 1",
@@ -51,13 +51,22 @@
51
51
  },
52
52
  {
53
53
  "elementid": "HelpText1",
54
+ "static": true
55
+ },
56
+ {
57
+ "elementid": "HelpText2",
54
58
  "static": true,
55
- "value": "<p>Dit is <strike>een</strike> helptekst!<br />Hallo <em>daar</em>.<br />Even <u>wat</u> meer <strong>regels.</strong></p>"
59
+ "content": {
60
+ "id": "TextID",
61
+ "text": "<p>Tekst met placeholder, caseid: 12</p>",
62
+ "properties": {
63
+ "CASE.ID": 12
64
+ }
65
+ }
56
66
  },
57
67
  {
58
68
  "elementid": "Label1",
59
- "static": true,
60
- "value": "Label 1"
69
+ "static": true
61
70
  },
62
71
  {
63
72
  "elementid": "Memo"
@@ -32,9 +32,9 @@ describe("attributeCollection", () => {
32
32
  );
33
33
 
34
34
  expect(attributeCollection).toBeInstanceOf(AttributeCollection);
35
- expect(attributeCollection.size).toBe(31);
36
- expect(attributeCollection).toHaveLength(31);
37
- expect(attributeCollection.visible).toHaveLength(31);
35
+ expect(attributeCollection.size).toBe(32);
36
+ expect(attributeCollection).toHaveLength(32);
37
+ expect(attributeCollection.visible).toHaveLength(32);
38
38
  expect(attributeCollection.hasAttributeByKey("Address")).toBeTruthy();
39
39
  expect(
40
40
  attributeCollection.getAttributesByLayoutHint("zipcode")
@@ -118,7 +118,7 @@ describe("attributeCollection", () => {
118
118
 
119
119
  const attributeCollection = new AttributeCollection(data, contributions);
120
120
 
121
- expect(attributeCollection).toHaveLength(31);
121
+ expect(attributeCollection).toHaveLength(32);
122
122
 
123
123
  const contributions2 = [
124
124
  {