@beinformed/ui 1.13.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 (95) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/esm/builder/mergeLayoutHintConfigurations.js +3 -3
  3. package/esm/builder/mergeLayoutHintConfigurations.js.map +1 -1
  4. package/esm/hooks/useContent.js +2 -2
  5. package/esm/hooks/useContent.js.map +1 -1
  6. package/esm/hooks/useDeepCompareEffect.js +2 -1
  7. package/esm/hooks/useDeepCompareEffect.js.map +1 -1
  8. package/esm/hooks/useForm.js.map +1 -1
  9. package/esm/hooks/useModal.js +2 -2
  10. package/esm/hooks/useModal.js.map +1 -1
  11. package/esm/hooks/useModularUI.js +0 -1
  12. package/esm/hooks/useModularUI.js.map +1 -1
  13. package/esm/models/caseview/CaseViewModel.js +2 -1
  14. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  15. package/esm/models/list/ListItemCollection.js +38 -0
  16. package/esm/models/list/ListItemCollection.js.map +1 -1
  17. package/esm/models/list/ListItemModel.js +14 -2
  18. package/esm/models/list/ListItemModel.js.map +1 -1
  19. package/esm/models/list/ListModel.js +16 -69
  20. package/esm/models/list/ListModel.js.map +1 -1
  21. package/esm/modularui/ModularUIRequest.js +69 -47
  22. package/esm/modularui/ModularUIRequest.js.map +1 -1
  23. package/esm/utils/browser/Cookies.js +18 -32
  24. package/esm/utils/browser/Cookies.js.map +1 -1
  25. package/esm/utils/fetch/xhr.js +2 -1
  26. package/esm/utils/fetch/xhr.js.map +1 -1
  27. package/lib/builder/mergeLayoutHintConfigurations.js +3 -3
  28. package/lib/builder/mergeLayoutHintConfigurations.js.flow +3 -3
  29. package/lib/builder/mergeLayoutHintConfigurations.js.map +1 -1
  30. package/lib/hooks/useContent.js +2 -2
  31. package/lib/hooks/useContent.js.flow +2 -2
  32. package/lib/hooks/useContent.js.map +1 -1
  33. package/lib/hooks/useDeepCompareEffect.js +2 -1
  34. package/lib/hooks/useDeepCompareEffect.js.flow +1 -1
  35. package/lib/hooks/useDeepCompareEffect.js.map +1 -1
  36. package/lib/hooks/useForm.js.flow +1 -2
  37. package/lib/hooks/useForm.js.map +1 -1
  38. package/lib/hooks/useModal.js +2 -2
  39. package/lib/hooks/useModal.js.flow +1 -1
  40. package/lib/hooks/useModal.js.map +1 -1
  41. package/lib/hooks/useModularUI.js +0 -1
  42. package/lib/hooks/useModularUI.js.flow +0 -2
  43. package/lib/hooks/useModularUI.js.map +1 -1
  44. package/lib/models/caseview/CaseViewModel.js +3 -1
  45. package/lib/models/caseview/CaseViewModel.js.flow +3 -1
  46. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  47. package/lib/models/caseview/__tests__/CaseViewModel.spec.js.flow +38 -1
  48. package/lib/models/list/ListItemCollection.js +40 -0
  49. package/lib/models/list/ListItemCollection.js.flow +38 -1
  50. package/lib/models/list/ListItemCollection.js.map +1 -1
  51. package/lib/models/list/ListItemModel.js +14 -2
  52. package/lib/models/list/ListItemModel.js.flow +15 -0
  53. package/lib/models/list/ListItemModel.js.map +1 -1
  54. package/lib/models/list/ListModel.js +15 -70
  55. package/lib/models/list/ListModel.js.flow +1 -45
  56. package/lib/models/list/ListModel.js.map +1 -1
  57. package/lib/models/list/__tests__/ListItemCollection.spec.js.flow +22 -0
  58. package/lib/models/list/__tests__/ListModel.spec.js.flow +0 -2
  59. package/lib/models/panels/__tests__/GroupingPanelModel.spec.js.flow +38 -21
  60. package/lib/models/process/__tests__/ProcessStatusSettingsModel.spec.js.flow +11 -0
  61. package/lib/modularui/ModularUIRequest.js +67 -47
  62. package/lib/modularui/ModularUIRequest.js.flow +38 -22
  63. package/lib/modularui/ModularUIRequest.js.map +1 -1
  64. package/lib/utils/browser/Cookies.js +18 -31
  65. package/lib/utils/browser/Cookies.js.flow +22 -28
  66. package/lib/utils/browser/Cookies.js.map +1 -1
  67. package/lib/utils/browser/__tests__/Cookies.spec.js.flow +51 -0
  68. package/lib/utils/fetch/xhr.js +2 -1
  69. package/lib/utils/fetch/xhr.js.flow +3 -1
  70. package/lib/utils/fetch/xhr.js.map +1 -1
  71. package/package.json +12 -10
  72. package/src/builder/mergeLayoutHintConfigurations.js +3 -3
  73. package/src/hooks/useContent.js +2 -2
  74. package/src/hooks/useDeepCompareEffect.js +1 -1
  75. package/src/hooks/useForm.js +1 -2
  76. package/src/hooks/useModal.js +1 -1
  77. package/src/hooks/useModularUI.js +0 -2
  78. package/src/models/caseview/CaseViewModel.js +3 -1
  79. package/src/models/caseview/__tests__/CaseViewModel.spec.js +38 -1
  80. package/src/models/caseview/__tests__/caseview.json +14 -3
  81. package/src/models/caseview/__tests__/caseviewContributions.json +48 -77
  82. package/src/models/caseview/__tests__/caseview_local_taskgroup.json +57 -0
  83. package/src/models/list/ListItemCollection.js +38 -1
  84. package/src/models/list/ListItemModel.js +15 -0
  85. package/src/models/list/ListModel.js +1 -45
  86. package/src/models/list/__tests__/ListItemCollection.spec.js +22 -0
  87. package/src/models/list/__tests__/ListModel.spec.js +0 -2
  88. package/src/models/panels/__tests__/GroupingPanelModel.spec.js +38 -21
  89. package/src/models/panels/__tests__/groupingPanel.json +20 -1
  90. package/src/models/panels/__tests__/groupingPanelContributions.json +14 -1
  91. package/src/models/process/__tests__/ProcessStatusSettingsModel.spec.js +11 -0
  92. package/src/modularui/ModularUIRequest.js +38 -22
  93. package/src/utils/browser/Cookies.js +22 -28
  94. package/src/utils/browser/__tests__/Cookies.spec.js +51 -0
  95. package/src/utils/fetch/xhr.js +3 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/fetch/xhr.js"],"names":["has","isPlainObject","IllegalArgumentException","UnauthorizedException","FetchException","TimeoutException","NotFoundException","JsonParseException","NetworkException","Cache","HTTP_METHODS","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","GET","timeout","responseType","onProgress","events","baseHeaders","Accept","headers","reject","responseJSON","status","isReload","response","getResponseHeader","JSON","parse","error","resolve","getResponse","errorHandler","forEach","eventType","addEventListener","timeoutHandler","responseHandler","eventName","open","hasItem","withCredentials","basicToken","getItem","setRequestHeader","headerName","send","stringData","XMLHttpRequest","setEventListeners","openConnection","setBasicAuthentication","setCustomHeaders","setOtherOptions","sendData","setXMLHttpRequest","fetch","validateInputArguments","args","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 }\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":["has","isPlainObject","IllegalArgumentException","UnauthorizedException","FetchException","TimeoutException","NotFoundException","JsonParseException","NetworkException","Cache","HTTP_METHODS","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","GET","timeout","responseType","onProgress","events","baseHeaders","Accept","headers","reject","responseJSON","status","isReload","response","getResponseHeader","JSON","parse","error","resolve","getResponse","errorHandler","forEach","eventType","addEventListener","timeoutHandler","responseHandler","eventName","open","hasItem","withCredentials","basicToken","getItem","setRequestHeader","headerName","send","stringData","XMLHttpRequest","setEventListeners","openConnection","setBasicAuthentication","setCustomHeaders","setOtherOptions","sendData","setXMLHttpRequest","fetch","validateInputArguments","args","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"}
@@ -67,9 +67,9 @@ exports.mergeLayoutHintConfigurations = /*#__PURE__*/function () {
67
67
 
68
68
  var newConfig = _assign.default.apply(Object, (0, _concat.default)(_context = [LayoutHintConfiguration]).call(_context, (0, _toConsumableArray2.default)(jsons)));
69
69
 
70
- fs.writeFile(path.join(outputFolder, "LayoutHintConfig.json"), (0, _stringify.default)(newConfig), function (err) {
71
- if (err) {
72
- return reject(err);
70
+ fs.writeFile(path.join(outputFolder, "LayoutHintConfig.json"), (0, _stringify.default)(newConfig), function (writeErr) {
71
+ if (writeErr) {
72
+ return reject(writeErr);
73
73
  }
74
74
 
75
75
  return resolve();
@@ -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();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/builder/mergeLayoutHintConfigurations.js"],"names":["glob","require","fs","path","LayoutHintConfiguration","readFiles","files","filePromises","file","resolve","reject","readFile","err","data","JSON","parse","all","exports","mergeLayoutHintConfigurations","srcFolder","outputFolder","escapedSrcFolder","replace","then","jsons","newConfig","Object","writeFile","join"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,IAAMA,IAAI,GAAGC,OAAO,CAAC,MAAD,CAApB;;AACA,IAAMC,EAAE,GAAGD,OAAO,CAAC,IAAD,CAAlB;;AACA,IAAME,IAAI,GAAGF,OAAO,CAAC,MAAD,CAApB;;AAEA,eAAoCA,OAAO,CAAC,+BAAD,CAA3C;AAAA,IAAQG,uBAAR,YAAQA,uBAAR;;AAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,KAAD,EAAW;AAC3B,MAAMC,YAAY,GAAG,kBAAAD,KAAK,MAAL,CAAAA,KAAK,EACxB,UAACE,IAAD;AAAA,WACE,qBAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AAC/BR,MAAAA,EAAE,CAACS,QAAH,CAAYH,IAAZ,EAAkB,OAAlB,EAA2B,UAACI,GAAD,EAAMC,IAAN,EAAe;AACxC,YAAID,GAAJ,EAAS;AACP,iBAAOF,MAAM,CAACE,GAAD,CAAb;AACD,SAFD,MAEO;AACL,iBAAOH,OAAO,CAACK,IAAI,CAACC,KAAL,CAAWF,IAAX,CAAD,CAAd;AACD;AACF,OAND;AAOD,KARD,CADF;AAAA,GADwB,CAA1B;AAaA,SAAO,iBAAQG,GAAR,CAAYT,YAAZ,CAAP;AACD,CAfD;AAiBA;AACA;AACA;AACA;AACA;;;AACAU,OAAO,CAACC,6BAAR;AAAA,qFAAwC,iBACtCC,SADsC,EAEtCC,YAFsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAIhCC,YAAAA,gBAJgC,GAIbF,SAAS,CAACG,OAAV,CAAkB,KAAlB,EAAyB,GAAzB,CAJa;AAAA,8CAK/B,qBAAY,UAACb,OAAD,EAAUC,MAAV,EAAqB;AACtCV,cAAAA,IAAI,CAACqB,gBAAgB,GAAG,2BAApB,EAAiD,EAAjD,EAAqD,UAACT,GAAD,EAAMN,KAAN,EAAgB;AACvE,oBAAIM,GAAJ,EAAS;AACP,yBAAOF,MAAM,CAACE,GAAD,CAAb;AACD;;AAEDP,gBAAAA,SAAS,CAACC,KAAD,CAAT,CAAiBiB,IAAjB,CAAsB,UAACC,KAAD,EAAW;AAAA;;AAC/B,sBAAMC,SAAS,GAAG,sBAAAC,MAAM,mCAAQtB,uBAAR,mDAAoCoB,KAApC,GAAxB;;AACAtB,kBAAAA,EAAE,CAACyB,SAAH,CACExB,IAAI,CAACyB,IAAL,CAAUR,YAAV,EAAwB,uBAAxB,CADF,EAEE,wBAAeK,SAAf,CAFF,EAIE,UAACb,GAAD,EAAS;AACP,wBAAIA,GAAJ,EAAS;AACP,6BAAOF,MAAM,CAACE,GAAD,CAAb;AACD;;AAED,2BAAOH,OAAO,EAAd;AACD,mBAVH;AAYD,iBAdD;AAeD,eApBG,CAAJ;AAqBD,aAtBM,CAL+B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAxC;;AAAA;AAAA;AAAA;AAAA","sourcesContent":["// @flow\nconst glob = require(\"glob\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst { LayoutHintConfiguration } = require(\"../constants/LayoutHintConfig\");\n\nconst readFiles = (files) => {\n const filePromises = files.map(\n (file) =>\n new Promise((resolve, reject) => {\n fs.readFile(file, \"utf-8\", (err, data) => {\n if (err) {\n return reject(err);\n } else {\n return resolve(JSON.parse(data));\n }\n });\n })\n );\n\n return Promise.all(filePromises);\n};\n\n/**\n * Merge all LayoutHintConfig.json files from this library and in the srcFolder\n * together into one config file, and copies it to the outputFolder.<br/>\n * This file is consumed by Be Informed studio to give layout hint information\n */\nexports.mergeLayoutHintConfigurations = async (\n srcFolder: string,\n outputFolder: string\n): Promise<void> => {\n const escapedSrcFolder = srcFolder.replace(/\\\\/g, \"/\");\n return new Promise((resolve, reject) => {\n glob(escapedSrcFolder + \"/**/LayoutHintConfig.json\", {}, (err, files) => {\n if (err) {\n return reject(err);\n }\n\n readFiles(files).then((jsons) => {\n const newConfig = Object.assign(LayoutHintConfiguration, ...jsons);\n fs.writeFile(\n path.join(outputFolder, \"LayoutHintConfig.json\"),\n JSON.stringify(newConfig),\n\n (err) => {\n if (err) {\n return reject(err);\n }\n\n return resolve();\n }\n );\n });\n });\n });\n};\n"],"file":"mergeLayoutHintConfigurations.js"}
1
+ {"version":3,"sources":["../../src/builder/mergeLayoutHintConfigurations.js"],"names":["glob","require","fs","path","LayoutHintConfiguration","readFiles","files","filePromises","file","resolve","reject","readFile","err","data","JSON","parse","all","exports","mergeLayoutHintConfigurations","srcFolder","outputFolder","escapedSrcFolder","replace","then","jsons","newConfig","Object","writeFile","join","writeErr"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,IAAMA,IAAI,GAAGC,OAAO,CAAC,MAAD,CAApB;;AACA,IAAMC,EAAE,GAAGD,OAAO,CAAC,IAAD,CAAlB;;AACA,IAAME,IAAI,GAAGF,OAAO,CAAC,MAAD,CAApB;;AAEA,eAAoCA,OAAO,CAAC,+BAAD,CAA3C;AAAA,IAAQG,uBAAR,YAAQA,uBAAR;;AAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,KAAD,EAAW;AAC3B,MAAMC,YAAY,GAAG,kBAAAD,KAAK,MAAL,CAAAA,KAAK,EACxB,UAACE,IAAD;AAAA,WACE,qBAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AAC/BR,MAAAA,EAAE,CAACS,QAAH,CAAYH,IAAZ,EAAkB,OAAlB,EAA2B,UAACI,GAAD,EAAMC,IAAN,EAAe;AACxC,YAAID,GAAJ,EAAS;AACP,iBAAOF,MAAM,CAACE,GAAD,CAAb;AACD,SAFD,MAEO;AACL,iBAAOH,OAAO,CAACK,IAAI,CAACC,KAAL,CAAWF,IAAX,CAAD,CAAd;AACD;AACF,OAND;AAOD,KARD,CADF;AAAA,GADwB,CAA1B;AAaA,SAAO,iBAAQG,GAAR,CAAYT,YAAZ,CAAP;AACD,CAfD;AAiBA;AACA;AACA;AACA;AACA;;;AACAU,OAAO,CAACC,6BAAR;AAAA,qFAAwC,iBACtCC,SADsC,EAEtCC,YAFsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAIhCC,YAAAA,gBAJgC,GAIbF,SAAS,CAACG,OAAV,CAAkB,KAAlB,EAAyB,GAAzB,CAJa;AAAA,8CAK/B,qBAAY,UAACb,OAAD,EAAUC,MAAV,EAAqB;AACtCV,cAAAA,IAAI,CAACqB,gBAAgB,GAAG,2BAApB,EAAiD,EAAjD,EAAqD,UAACT,GAAD,EAAMN,KAAN,EAAgB;AACvE,oBAAIM,GAAJ,EAAS;AACP,yBAAOF,MAAM,CAACE,GAAD,CAAb;AACD;;AAEDP,gBAAAA,SAAS,CAACC,KAAD,CAAT,CAAiBiB,IAAjB,CAAsB,UAACC,KAAD,EAAW;AAAA;;AAC/B,sBAAMC,SAAS,GAAG,sBAAAC,MAAM,mCAAQtB,uBAAR,mDAAoCoB,KAApC,GAAxB;;AACAtB,kBAAAA,EAAE,CAACyB,SAAH,CACExB,IAAI,CAACyB,IAAL,CAAUR,YAAV,EAAwB,uBAAxB,CADF,EAEE,wBAAeK,SAAf,CAFF,EAIE,UAACI,QAAD,EAAc;AACZ,wBAAIA,QAAJ,EAAc;AACZ,6BAAOnB,MAAM,CAACmB,QAAD,CAAb;AACD;;AAED,2BAAOpB,OAAO,EAAd;AACD,mBAVH;AAYD,iBAdD;AAeD,eApBG,CAAJ;AAqBD,aAtBM,CAL+B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAxC;;AAAA;AAAA;AAAA;AAAA","sourcesContent":["// @flow\nconst glob = require(\"glob\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst { LayoutHintConfiguration } = require(\"../constants/LayoutHintConfig\");\n\nconst readFiles = (files) => {\n const filePromises = files.map(\n (file) =>\n new Promise((resolve, reject) => {\n fs.readFile(file, \"utf-8\", (err, data) => {\n if (err) {\n return reject(err);\n } else {\n return resolve(JSON.parse(data));\n }\n });\n })\n );\n\n return Promise.all(filePromises);\n};\n\n/**\n * Merge all LayoutHintConfig.json files from this library and in the srcFolder\n * together into one config file, and copies it to the outputFolder.<br/>\n * This file is consumed by Be Informed studio to give layout hint information\n */\nexports.mergeLayoutHintConfigurations = async (\n srcFolder: string,\n outputFolder: string\n): Promise<void> => {\n const escapedSrcFolder = srcFolder.replace(/\\\\/g, \"/\");\n return new Promise((resolve, reject) => {\n glob(escapedSrcFolder + \"/**/LayoutHintConfig.json\", {}, (err, files) => {\n if (err) {\n return reject(err);\n }\n\n readFiles(files).then((jsons) => {\n const newConfig = Object.assign(LayoutHintConfiguration, ...jsons);\n fs.writeFile(\n path.join(outputFolder, \"LayoutHintConfig.json\"),\n JSON.stringify(newConfig),\n\n (writeErr) => {\n if (writeErr) {\n return reject(writeErr);\n }\n\n return resolve();\n }\n );\n });\n });\n });\n};\n"],"file":"mergeLayoutHintConfigurations.js"}
@@ -66,8 +66,8 @@ var useContentFromSourceReferences = function useContentFromSourceReferences(sou
66
66
  });
67
67
  start();
68
68
 
69
- _promise.default.all(requests).then(function (content) {
70
- setContent(content);
69
+ _promise.default.all(requests).then(function (responseContent) {
70
+ setContent(responseContent);
71
71
  finish();
72
72
  }); // start and finish don't change
73
73
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -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
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useContent.js"],"names":["useContentFromSourceReferences","sourceReferences","renderChildSections","content","setContent","localeCode","state","i18n","locale","start","finish","hrefs","sourceReference","link","selfhref","href","index","self","indexOf","toString","allHrefs","requests","JSON","parse","modularuiRequest","ModularUIRequest","fetchContent","all","then"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AAIA;AACA;AACA;AACO,IAAMA,8BAA8B,GAAG,SAAjCA,8BAAiC,CAC5CC,gBAD4C,EAE5CC,mBAF4C,EAGpB;AAAA;;AACxB,kBAA8B,qBAAS,EAAT,CAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,MAAMC,UAAU,GAAG,6BAAY,UAACC,KAAD;AAAA;;AAAA,iCAAWA,KAAK,CAACC,IAAN,CAAWC,MAAtB,mEAAgC,IAAhC;AAAA,GAAZ,CAAnB;;AAEA,8BAA0B,kDAA1B;AAAA,MAAQC,KAAR,yBAAQA,KAAR;AAAA,MAAeC,MAAf,yBAAeA,MAAf;;AAEA,MAAMC,KAAK,GAAG,gFAAAV,gBAAgB,MAAhB,CAAAA,gBAAgB,EACvB,UAACW,eAAD;AAAA,WAAqBA,eAAe,CAACC,IAAhB,CAAqBC,QAArB,CAA8BC,IAAnD;AAAA,GADuB,CAAhB,kBAEJ,UAACA,IAAD,EAAOC,KAAP,EAAcC,IAAd;AAAA,WAAuBA,IAAI,CAACC,OAAL,CAAaH,IAAb,MAAuBC,KAA9C;AAAA,GAFI,kBAGP,UAACD,IAAD;AAAA,WAAUA,IAAI,CAACI,QAAL,EAAV;AAAA,GAHO,CAAd;AAKA,MAAMC,QAAQ,GAAG,wBAAeT,KAAf,CAAjB;AACA,wBAAU,YAAM;AAAA;;AACd,QAAMU,QAAQ,GAAG,8BAAAC,IAAI,CAACC,KAAL,CAAWH,QAAX,mBAAyB,UAACL,IAAD,EAAU;AAClD,UAAMS,gBAAgB,GAAG,IAAIC,yBAAJ,CAAqBV,IAArB,CAAzB;AACAS,MAAAA,gBAAgB,CAAChB,MAAjB,GAA0BH,UAA1B;AACA,aAAOmB,gBAAgB,CAACE,YAAjB,CAA8BxB,mBAA9B,CAAP;AACD,KAJgB,CAAjB;AAMAO,IAAAA,KAAK;;AACL,qBAAQkB,GAAR,CAAYN,QAAZ,EAAsBO,IAAtB,CAA2B,UAACzB,OAAD,EAAa;AACtCC,MAAAA,UAAU,CAACD,OAAD,CAAV;AACAO,MAAAA,MAAM;AACP,KAHD,EARc,CAad;AACA;;AACD,GAfD,EAeG,CAACU,QAAD,EAAWf,UAAX,EAAuBH,mBAAvB,CAfH;AAiBA,SAAOC,OAAP;AACD,CAjCM","sourcesContent":["// @flow\nimport { useState, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport SourceReferenceCollection from \"../models/concepts/SourceReferenceCollection\";\nimport ModularUIRequest from \"../modularui/ModularUIRequest\";\n\nimport { useProgressIndicator } from \"../hooks/useProgressIndicator\";\n\nimport type ContentModel from \"../models/content/ContentModel\";\n\n/**\n * Hook to retrieve multiple source references at once\n */\nexport const useContentFromSourceReferences = (\n sourceReferences: SourceReferenceCollection,\n renderChildSections: boolean\n): Array<ContentModel> => {\n const [content, setContent] = useState([]);\n const localeCode = useSelector((state) => state.i18n.locale ?? \"en\");\n\n const { start, finish } = useProgressIndicator();\n\n const hrefs = sourceReferences\n .map((sourceReference) => sourceReference.link.selfhref.href)\n .filter((href, index, self) => self.indexOf(href) === index)\n .map((href) => href.toString());\n\n const allHrefs = JSON.stringify(hrefs);\n useEffect(() => {\n const requests = JSON.parse(allHrefs).map((href) => {\n const modularuiRequest = new ModularUIRequest(href);\n modularuiRequest.locale = localeCode;\n return modularuiRequest.fetchContent(renderChildSections);\n });\n\n start();\n Promise.all(requests).then((content) => {\n setContent(content);\n finish();\n });\n\n // start and finish don't change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allHrefs, localeCode, renderChildSections]);\n\n return content;\n};\n"],"file":"useContent.js"}
1
+ {"version":3,"sources":["../../src/hooks/useContent.js"],"names":["useContentFromSourceReferences","sourceReferences","renderChildSections","content","setContent","localeCode","state","i18n","locale","start","finish","hrefs","sourceReference","link","selfhref","href","index","self","indexOf","toString","allHrefs","requests","JSON","parse","modularuiRequest","ModularUIRequest","fetchContent","all","then","responseContent"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AAIA;AACA;AACA;AACO,IAAMA,8BAA8B,GAAG,SAAjCA,8BAAiC,CAC5CC,gBAD4C,EAE5CC,mBAF4C,EAGpB;AAAA;;AACxB,kBAA8B,qBAAS,EAAT,CAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,MAAMC,UAAU,GAAG,6BAAY,UAACC,KAAD;AAAA;;AAAA,iCAAWA,KAAK,CAACC,IAAN,CAAWC,MAAtB,mEAAgC,IAAhC;AAAA,GAAZ,CAAnB;;AAEA,8BAA0B,kDAA1B;AAAA,MAAQC,KAAR,yBAAQA,KAAR;AAAA,MAAeC,MAAf,yBAAeA,MAAf;;AAEA,MAAMC,KAAK,GAAG,gFAAAV,gBAAgB,MAAhB,CAAAA,gBAAgB,EACvB,UAACW,eAAD;AAAA,WAAqBA,eAAe,CAACC,IAAhB,CAAqBC,QAArB,CAA8BC,IAAnD;AAAA,GADuB,CAAhB,kBAEJ,UAACA,IAAD,EAAOC,KAAP,EAAcC,IAAd;AAAA,WAAuBA,IAAI,CAACC,OAAL,CAAaH,IAAb,MAAuBC,KAA9C;AAAA,GAFI,kBAGP,UAACD,IAAD;AAAA,WAAUA,IAAI,CAACI,QAAL,EAAV;AAAA,GAHO,CAAd;AAKA,MAAMC,QAAQ,GAAG,wBAAeT,KAAf,CAAjB;AACA,wBAAU,YAAM;AAAA;;AACd,QAAMU,QAAQ,GAAG,8BAAAC,IAAI,CAACC,KAAL,CAAWH,QAAX,mBAAyB,UAACL,IAAD,EAAU;AAClD,UAAMS,gBAAgB,GAAG,IAAIC,yBAAJ,CAAqBV,IAArB,CAAzB;AACAS,MAAAA,gBAAgB,CAAChB,MAAjB,GAA0BH,UAA1B;AACA,aAAOmB,gBAAgB,CAACE,YAAjB,CAA8BxB,mBAA9B,CAAP;AACD,KAJgB,CAAjB;AAMAO,IAAAA,KAAK;;AACL,qBAAQkB,GAAR,CAAYN,QAAZ,EAAsBO,IAAtB,CAA2B,UAACC,eAAD,EAAqB;AAC9CzB,MAAAA,UAAU,CAACyB,eAAD,CAAV;AACAnB,MAAAA,MAAM;AACP,KAHD,EARc,CAad;AACA;;AACD,GAfD,EAeG,CAACU,QAAD,EAAWf,UAAX,EAAuBH,mBAAvB,CAfH;AAiBA,SAAOC,OAAP;AACD,CAjCM","sourcesContent":["// @flow\nimport { useState, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport SourceReferenceCollection from \"../models/concepts/SourceReferenceCollection\";\nimport ModularUIRequest from \"../modularui/ModularUIRequest\";\n\nimport { useProgressIndicator } from \"../hooks/useProgressIndicator\";\n\nimport type ContentModel from \"../models/content/ContentModel\";\n\n/**\n * Hook to retrieve multiple source references at once\n */\nexport const useContentFromSourceReferences = (\n sourceReferences: SourceReferenceCollection,\n renderChildSections: boolean\n): Array<ContentModel> => {\n const [content, setContent] = useState([]);\n const localeCode = useSelector((state) => state.i18n.locale ?? \"en\");\n\n const { start, finish } = useProgressIndicator();\n\n const hrefs = sourceReferences\n .map((sourceReference) => sourceReference.link.selfhref.href)\n .filter((href, index, self) => self.indexOf(href) === index)\n .map((href) => href.toString());\n\n const allHrefs = JSON.stringify(hrefs);\n useEffect(() => {\n const requests = JSON.parse(allHrefs).map((href) => {\n const modularuiRequest = new ModularUIRequest(href);\n modularuiRequest.locale = localeCode;\n return modularuiRequest.fetchContent(renderChildSections);\n });\n\n start();\n Promise.all(requests).then((responseContent) => {\n setContent(responseContent);\n finish();\n });\n\n // start and finish don't change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allHrefs, localeCode, renderChildSections]);\n\n return content;\n};\n"],"file":"useContent.js"}
@@ -25,7 +25,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
25
25
  * Need to copy this, because the dependency on dequal breaks in ie11
26
26
  */
27
27
  var useDeepCompareMemoize = function useDeepCompareMemoize(value) {
28
- var ref = React.useRef(null);
28
+ var ref = React.useRef(null); // NOSONAR
29
+
29
30
  var signalRef = React.useRef(0);
30
31
 
31
32
  if (!(0, _lite.dequal)(value, ref.current)) {
@@ -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)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useDeepCompareEffect.js"],"names":["useDeepCompareMemoize","value","ref","React","useRef","signalRef","current","useDeepCompareEffect","callback","dependencies","useEffect"],"mappings":";;;;;;;;;;;;;;AACA;;AACA;;;;;;AAKA;AACA;AACA;AACA;AACA,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACC,KAAD,EAA2B;AACvD,MAAMC,GAAG,GAAGC,KAAK,CAACC,MAAN,CAAoC,IAApC,CAAZ;AACA,MAAMC,SAAS,GAAGF,KAAK,CAACC,MAAN,CAAqB,CAArB,CAAlB;;AAEA,MAAI,CAAC,kBAAUH,KAAV,EAAiBC,GAAG,CAACI,OAArB,CAAL,EAAoC;AAClCJ,IAAAA,GAAG,CAACI,OAAJ,GAAcL,KAAd;AACAI,IAAAA,SAAS,CAACC,OAAV,IAAqB,CAArB;AACD;;AAED,SAAO,CAACD,SAAS,CAACC,OAAX,CAAP;AACD,CAVD;AAYA;AACA;;;AACO,SAASC,oBAAT,CACLC,QADK,EAELC,YAFK,EAGC;AACN;AACA,SAAON,KAAK,CAACO,SAAN,CAAgBF,QAAhB,EAA0BR,qBAAqB,CAACS,YAAD,CAA/C,CAAP;AACD;;eAEcF,oB","sourcesContent":["// @flow\nimport * as React from \"react\";\nimport { dequal as deepEqual } from \"dequal/lite\";\n\ntype Callback = () => void | (() => void);\ntype DependencyList = Array<mixed>;\n\n/**\n * As copied from https://github.com/kentcdodds/use-deep-compare-effect/\n * Need to copy this, because the dependency on dequal breaks in ie11\n */\nconst useDeepCompareMemoize = (value: DependencyList) => {\n const ref = React.useRef<DependencyList | null>(null);\n const signalRef = React.useRef<number>(0);\n\n if (!deepEqual(value, ref.current)) {\n ref.current = value;\n signalRef.current += 1;\n }\n\n return [signalRef.current];\n};\n\n/**\n */\nexport function useDeepCompareEffect(\n callback: Callback,\n dependencies: DependencyList\n): void {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(callback, useDeepCompareMemoize(dependencies));\n}\n\nexport default useDeepCompareEffect;\n"],"file":"useDeepCompareEffect.js"}
1
+ {"version":3,"sources":["../../src/hooks/useDeepCompareEffect.js"],"names":["useDeepCompareMemoize","value","ref","React","useRef","signalRef","current","useDeepCompareEffect","callback","dependencies","useEffect"],"mappings":";;;;;;;;;;;;;;AACA;;AACA;;;;;;AAKA;AACA;AACA;AACA;AACA,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACC,KAAD,EAA2B;AACvD,MAAMC,GAAG,GAAGC,KAAK,CAACC,MAAN,CAAoC,IAApC,CAAZ,CADuD,CACA;;AACvD,MAAMC,SAAS,GAAGF,KAAK,CAACC,MAAN,CAAqB,CAArB,CAAlB;;AAEA,MAAI,CAAC,kBAAUH,KAAV,EAAiBC,GAAG,CAACI,OAArB,CAAL,EAAoC;AAClCJ,IAAAA,GAAG,CAACI,OAAJ,GAAcL,KAAd;AACAI,IAAAA,SAAS,CAACC,OAAV,IAAqB,CAArB;AACD;;AAED,SAAO,CAACD,SAAS,CAACC,OAAX,CAAP;AACD,CAVD;AAYA;AACA;;;AACO,SAASC,oBAAT,CACLC,QADK,EAELC,YAFK,EAGC;AACN;AACA,SAAON,KAAK,CAACO,SAAN,CAAgBF,QAAhB,EAA0BR,qBAAqB,CAACS,YAAD,CAA/C,CAAP;AACD;;eAEcF,oB","sourcesContent":["// @flow\nimport * as React from \"react\";\nimport { dequal as deepEqual } from \"dequal/lite\";\n\ntype Callback = () => void | (() => void);\ntype DependencyList = Array<mixed>;\n\n/**\n * As copied from https://github.com/kentcdodds/use-deep-compare-effect/\n * Need to copy this, because the dependency on dequal breaks in ie11\n */\nconst useDeepCompareMemoize = (value: DependencyList) => {\n const ref = React.useRef<DependencyList | null>(null); // NOSONAR\n const signalRef = React.useRef<number>(0);\n\n if (!deepEqual(value, ref.current)) {\n ref.current = value;\n signalRef.current += 1;\n }\n\n return [signalRef.current];\n};\n\n/**\n */\nexport function useDeepCompareEffect(\n callback: Callback,\n dependencies: DependencyList\n): void {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(callback, useDeepCompareMemoize(dependencies));\n}\n\nexport default useDeepCompareEffect;\n"],"file":"useDeepCompareEffect.js"}
@@ -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,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useForm.js"],"names":["useForm","href","formHref","Href","addParameter","form","method","HTTP_METHODS","POST","targetModel","FormModel","removeOnUnmount","model","useFormNavigation","dispatch","previous","cancel","submit","connectKey","selfhref","data","formdata","updateModel","remove","showFormNotificationAction","showFormNotification","useAttributeUpdate","object","attribute","value","options","useAttributeSet","save"],"mappings":"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","sourcesContent":["// @flow\nimport { useDispatch } from \"react-redux\";\n\nimport Href from \"../models/href/Href\";\n\nimport { getSetting, HTTP_METHODS } from \"../constants\";\n\nimport { loadModularUI, removeModelByKey } from \"../redux/_modularui\";\nimport { useModularUI } from \"./useModularUI\";\n\nimport {\n addRepeatableAttributeSet,\n cancelForm,\n cancelRepeatableAttributeSet,\n previousObject,\n removeRepeatableAttributeSet,\n showFormNotification,\n updateFormAttribute,\n} from \"../redux/actions\";\n\nimport FormModel from \"../models/form/FormModel\";\n\nimport type { FormObjectModel } from \"../models\";\nimport type { AttributeType } from \"../models\";\nimport type { UpdateFormOptions } from \"../redux/types\";\nimport type {\n RemoveModelByKeyAction,\n UpdateModelAction,\n} from \"../redux/_modularui\";\n\ntype FormNavigationHook = {\n previous: (form: FormModel) => UpdateModelAction,\n cancel: (form: FormModel) => void,\n submit: (form: FormModel) => void,\n showFormNotification: (form: FormModel) => void,\n remove: (form: FormModel) => RemoveModelByKeyAction,\n};\n\ntype AttributeSetHook = {\n save: () => UpdateModelAction,\n cancel: (object: FormObjectModel) => UpdateModelAction,\n remove: (object: FormObjectModel) => UpdateModelAction,\n};\n\ntype AttributeUpdateHook = (\n attribute: AttributeType,\n value: string,\n options: UpdateFormOptions\n) => void;\n\n/**\n * Load a form by href\n */\nexport const useForm = (href: string | Href): ?FormModel => {\n const formHref = new Href(href);\n\n if (!getSetting(\"ALWAYS_COMMIT_FORM\")) {\n formHref.addParameter(\"commit\", \"false\");\n }\n\n const form = useModularUI(\"form\", formHref, {\n method: HTTP_METHODS.POST,\n targetModel: FormModel,\n removeOnUnmount: true,\n });\n\n if (form?.model) {\n return form.model;\n }\n};\n\n/**\n * Form navigation methods\n */\nexport const useFormNavigation = (): FormNavigationHook => {\n const dispatch = useDispatch();\n\n const previous = (form: FormModel) => dispatch(previousObject(form));\n\n const cancel = (form: FormModel) => dispatch(cancelForm(form));\n\n const submit = (form: FormModel) =>\n dispatch(\n loadModularUI(form.connectKey, form.selfhref, {\n method: HTTP_METHODS.POST,\n data: form.formdata,\n updateModel: form,\n targetModel: FormModel,\n })\n );\n\n const remove = (form: FormModel) =>\n dispatch(removeModelByKey(form.connectKey));\n\n const showFormNotificationAction = (form: FormModel) =>\n dispatch(showFormNotification(form));\n\n return {\n previous,\n cancel,\n submit,\n remove,\n showFormNotification: showFormNotificationAction,\n };\n};\n\n/**\n * Update attributes of a form\n */\nexport const useAttributeUpdate = (\n form: FormModel,\n object: FormObjectModel\n): AttributeUpdateHook => {\n const dispatch = useDispatch();\n\n return (\n attribute: AttributeType,\n value: string,\n options: UpdateFormOptions\n ) => dispatch(updateFormAttribute(form, object, attribute, value, options));\n};\n\n/**\n * Attributeset actions\n */\nexport const useAttributeSet = (form: FormModel): AttributeSetHook => {\n const dispatch = useDispatch();\n\n return {\n save: () => dispatch(addRepeatableAttributeSet(form)),\n cancel: (object: FormObjectModel) =>\n dispatch(cancelRepeatableAttributeSet(form, object)),\n remove: (object: FormObjectModel) =>\n dispatch(removeRepeatableAttributeSet(form, object)),\n };\n};\n"],"file":"useForm.js"}
1
+ {"version":3,"sources":["../../src/hooks/useForm.js"],"names":["useForm","href","formHref","Href","addParameter","form","method","HTTP_METHODS","POST","targetModel","FormModel","removeOnUnmount","model","useFormNavigation","dispatch","previous","cancel","submit","connectKey","selfhref","data","formdata","updateModel","remove","showFormNotificationAction","showFormNotification","useAttributeUpdate","object","attribute","value","options","useAttributeSet","save"],"mappings":"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","sourcesContent":["// @flow\nimport { useDispatch } from \"react-redux\";\n\nimport Href from \"../models/href/Href\";\n\nimport { getSetting, HTTP_METHODS } from \"../constants\";\n\nimport { loadModularUI, removeModelByKey } from \"../redux/_modularui\";\nimport { useModularUI } from \"./useModularUI\";\n\nimport {\n addRepeatableAttributeSet,\n cancelForm,\n cancelRepeatableAttributeSet,\n previousObject,\n removeRepeatableAttributeSet,\n showFormNotification,\n updateFormAttribute,\n} from \"../redux/actions\";\n\nimport FormModel from \"../models/form/FormModel\";\n\nimport type { FormObjectModel, AttributeType } from \"../models\";\nimport type { UpdateFormOptions } from \"../redux/types\";\nimport type {\n RemoveModelByKeyAction,\n UpdateModelAction,\n} from \"../redux/_modularui\";\n\ntype FormNavigationHook = {\n previous: (form: FormModel) => UpdateModelAction,\n cancel: (form: FormModel) => void,\n submit: (form: FormModel) => void,\n showFormNotification: (form: FormModel) => void,\n remove: (form: FormModel) => RemoveModelByKeyAction,\n};\n\ntype AttributeSetHook = {\n save: () => UpdateModelAction,\n cancel: (object: FormObjectModel) => UpdateModelAction,\n remove: (object: FormObjectModel) => UpdateModelAction,\n};\n\ntype AttributeUpdateHook = (\n attribute: AttributeType,\n value: string,\n options: UpdateFormOptions\n) => void;\n\n/**\n * Load a form by href\n */\nexport const useForm = (href: string | Href): ?FormModel => {\n const formHref = new Href(href);\n\n if (!getSetting(\"ALWAYS_COMMIT_FORM\")) {\n formHref.addParameter(\"commit\", \"false\");\n }\n\n const form = useModularUI(\"form\", formHref, {\n method: HTTP_METHODS.POST,\n targetModel: FormModel,\n removeOnUnmount: true,\n });\n\n if (form?.model) {\n return form.model;\n }\n};\n\n/**\n * Form navigation methods\n */\nexport const useFormNavigation = (): FormNavigationHook => {\n const dispatch = useDispatch();\n\n const previous = (form: FormModel) => dispatch(previousObject(form));\n\n const cancel = (form: FormModel) => dispatch(cancelForm(form));\n\n const submit = (form: FormModel) =>\n dispatch(\n loadModularUI(form.connectKey, form.selfhref, {\n method: HTTP_METHODS.POST,\n data: form.formdata,\n updateModel: form,\n targetModel: FormModel,\n })\n );\n\n const remove = (form: FormModel) =>\n dispatch(removeModelByKey(form.connectKey));\n\n const showFormNotificationAction = (form: FormModel) =>\n dispatch(showFormNotification(form));\n\n return {\n previous,\n cancel,\n submit,\n remove,\n showFormNotification: showFormNotificationAction,\n };\n};\n\n/**\n * Update attributes of a form\n */\nexport const useAttributeUpdate = (\n form: FormModel,\n object: FormObjectModel\n): AttributeUpdateHook => {\n const dispatch = useDispatch();\n\n return (\n attribute: AttributeType,\n value: string,\n options: UpdateFormOptions\n ) => dispatch(updateFormAttribute(form, object, attribute, value, options));\n};\n\n/**\n * Attributeset actions\n */\nexport const useAttributeSet = (form: FormModel): AttributeSetHook => {\n const dispatch = useDispatch();\n\n return {\n save: () => dispatch(addRepeatableAttributeSet(form)),\n cancel: (object: FormObjectModel) =>\n dispatch(cancelRepeatableAttributeSet(form, object)),\n remove: (object: FormObjectModel) =>\n dispatch(removeRepeatableAttributeSet(form, object)),\n };\n};\n"],"file":"useForm.js"}
@@ -30,8 +30,8 @@ var useModal = function useModal(modalId) {
30
30
  var _context;
31
31
 
32
32
  var modals = _ref.modals;
33
- return (0, _find.default)(_context = modals.modals).call(_context, function (modal) {
34
- return modal.key === modalId;
33
+ return (0, _find.default)(_context = modals.modals).call(_context, function (m) {
34
+ return m.key === modalId;
35
35
  });
36
36
  });
37
37
  var show = (0, _react.useCallback)(function () {
@@ -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(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useModal.js"],"names":["useModal","modalId","IllegalArgumentException","dispatch","modal","modals","key","show","close","size","visible"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AACA;;AAUA;AACA;AACA;AACO,IAAMA,QAAmB,GAAG,SAAtBA,QAAsB,CAACC,OAAD,EAAqB;AACtD,MAAI,CAACA,OAAL,EAAc;AACZ,UAAM,IAAIC,oCAAJ,CACJ,4CADI,CAAN;AAGD;;AAED,MAAMC,QAAQ,GAAG,8BAAjB;AACA,MAAMC,KAAK,GAAG,6BAAY;AAAA;;AAAA,QAAGC,MAAH,QAAGA,MAAH;AAAA,WACxB,8BAAAA,MAAM,CAACA,MAAP,iBAAmB,UAACD,KAAD;AAAA,aAAWA,KAAK,CAACE,GAAN,KAAcL,OAAzB;AAAA,KAAnB,CADwB;AAAA,GAAZ,CAAd;AAIA,MAAMM,IAAI,GAAG,wBAAY,YAAM;AAC7BJ,IAAAA,QAAQ,CAAC,uBAAUF,OAAV,CAAD,CAAR;AACD,GAFY,EAEV,CAACE,QAAD,EAAWF,OAAX,CAFU,CAAb;AAIA,MAAMO,KAAK,GAAG,wBAAY,YAAM;AAC9BL,IAAAA,QAAQ,CAAC,wBAAWF,OAAX,CAAD,CAAR;AACD,GAFa,EAEX,CAACE,QAAD,EAAWF,OAAX,CAFW,CAAd;AAIA,SAAO;AACLK,IAAAA,GAAG,EAAEF,KAAK,GAAGA,KAAK,CAACE,GAAT,GAAe,IADpB;AAELG,IAAAA,IAAI,EAAEL,KAAK,GAAGA,KAAK,CAACK,IAAT,GAAgB,IAFtB;AAGLC,IAAAA,OAAO,EAAEN,KAAK,GAAGA,KAAK,CAACM,OAAT,GAAmB,KAH5B;AAILH,IAAAA,IAAI,EAAJA,IAJK;AAKLC,IAAAA,KAAK,EAALA;AALK,GAAP;AAOD,CA3BM","sourcesContent":["// @flow\nimport { useCallback } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { showModal, closeModal } from \"../redux/actions/Modals\";\nimport { IllegalArgumentException } from \"../exceptions\";\n\ntype ModalHook = (modalId: string) => {\n key: string | null,\n size: string | null,\n visible: boolean,\n show: () => void,\n close: () => void,\n};\n\n/**\n * Manage modals\n */\nexport const useModal: ModalHook = (modalId: string) => {\n if (!modalId) {\n throw new IllegalArgumentException(\n \"Missing modalId argument for useModal hook\"\n );\n }\n\n const dispatch = useDispatch();\n const modal = useSelector(({ modals }) =>\n modals.modals.find((modal) => modal.key === modalId)\n );\n\n const show = useCallback(() => {\n dispatch(showModal(modalId));\n }, [dispatch, modalId]);\n\n const close = useCallback(() => {\n dispatch(closeModal(modalId));\n }, [dispatch, modalId]);\n\n return {\n key: modal ? modal.key : null,\n size: modal ? modal.size : null,\n visible: modal ? modal.visible : false,\n show,\n close,\n };\n};\n"],"file":"useModal.js"}
1
+ {"version":3,"sources":["../../src/hooks/useModal.js"],"names":["useModal","modalId","IllegalArgumentException","dispatch","modal","modals","m","key","show","close","size","visible"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AACA;;AAUA;AACA;AACA;AACO,IAAMA,QAAmB,GAAG,SAAtBA,QAAsB,CAACC,OAAD,EAAqB;AACtD,MAAI,CAACA,OAAL,EAAc;AACZ,UAAM,IAAIC,oCAAJ,CACJ,4CADI,CAAN;AAGD;;AAED,MAAMC,QAAQ,GAAG,8BAAjB;AACA,MAAMC,KAAK,GAAG,6BAAY;AAAA;;AAAA,QAAGC,MAAH,QAAGA,MAAH;AAAA,WACxB,8BAAAA,MAAM,CAACA,MAAP,iBAAmB,UAACC,CAAD;AAAA,aAAOA,CAAC,CAACC,GAAF,KAAUN,OAAjB;AAAA,KAAnB,CADwB;AAAA,GAAZ,CAAd;AAIA,MAAMO,IAAI,GAAG,wBAAY,YAAM;AAC7BL,IAAAA,QAAQ,CAAC,uBAAUF,OAAV,CAAD,CAAR;AACD,GAFY,EAEV,CAACE,QAAD,EAAWF,OAAX,CAFU,CAAb;AAIA,MAAMQ,KAAK,GAAG,wBAAY,YAAM;AAC9BN,IAAAA,QAAQ,CAAC,wBAAWF,OAAX,CAAD,CAAR;AACD,GAFa,EAEX,CAACE,QAAD,EAAWF,OAAX,CAFW,CAAd;AAIA,SAAO;AACLM,IAAAA,GAAG,EAAEH,KAAK,GAAGA,KAAK,CAACG,GAAT,GAAe,IADpB;AAELG,IAAAA,IAAI,EAAEN,KAAK,GAAGA,KAAK,CAACM,IAAT,GAAgB,IAFtB;AAGLC,IAAAA,OAAO,EAAEP,KAAK,GAAGA,KAAK,CAACO,OAAT,GAAmB,KAH5B;AAILH,IAAAA,IAAI,EAAJA,IAJK;AAKLC,IAAAA,KAAK,EAALA;AALK,GAAP;AAOD,CA3BM","sourcesContent":["// @flow\nimport { useCallback } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { showModal, closeModal } from \"../redux/actions/Modals\";\nimport { IllegalArgumentException } from \"../exceptions\";\n\ntype ModalHook = (modalId: string) => {\n key: string | null,\n size: string | null,\n visible: boolean,\n show: () => void,\n close: () => void,\n};\n\n/**\n * Manage modals\n */\nexport const useModal: ModalHook = (modalId: string) => {\n if (!modalId) {\n throw new IllegalArgumentException(\n \"Missing modalId argument for useModal hook\"\n );\n }\n\n const dispatch = useDispatch();\n const modal = useSelector(({ modals }) =>\n modals.modals.find((m) => m.key === modalId)\n );\n\n const show = useCallback(() => {\n dispatch(showModal(modalId));\n }, [dispatch, modalId]);\n\n const close = useCallback(() => {\n dispatch(closeModal(modalId));\n }, [dispatch, modalId]);\n\n return {\n key: modal ? modal.key : null,\n size: modal ? modal.size : null,\n visible: modal ? modal.visible : false,\n show,\n close,\n };\n};\n"],"file":"useModal.js"}
@@ -46,7 +46,6 @@ var useModularUI = function useModularUI(modelKey, url) {
46
46
  var prevHref = (0, _react.useRef)(href); // dispatch loadModularUI
47
47
 
48
48
  (0, _useDeepCompareEffect.default)(function () {
49
- // console.info({ new: options }, { old: prevOptions.current });
50
49
  // prevent reloads when previous option had the isReload, but the new options not
51
50
  var isOldReload = prevHref.current === href && prevOptions.current.isReload && !options.isReload;
52
51
 
@@ -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 &&
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useModularUI.js"],"names":["useKeyForHook","modelKey","url","locale","state","i18n","split","useModularUI","options","method","HTTP_METHODS","GET","removeOnUnmount","dispatch","href","toString","key","prevOptions","prevHref","isOldReload","current","isReload","modularui"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AAKA;AACA;AACA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,QAAD,EAAmBC,GAAnB,EAAmC;AAAA;;AACvD,MAAMC,MAAM,GAAG,6BAAY,UAACC,KAAD;AAAA,WAAWA,KAAK,CAACC,IAAN,CAAWF,MAAtB;AAAA,GAAZ,CAAf;AAEA,oFAAUF,QAAV,wBAAsBC,GAAG,CAACI,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAtB,wBAA4CH,MAA5C;AACD,CAJD;AAMA;AACA;AACA;;;AACO,IAAMI,YAAY,GAAG,SAAfA,YAAe,CAC1BN,QAD0B,EAE1BC,GAF0B,EAOlB;AAAA,MAJRM,OAIQ,uEAJsB;AAC5BC,IAAAA,MAAM,EAAEC,wBAAaC,GADO;AAE5BC,IAAAA,eAAe,EAAE;AAFW,GAItB;AACR,MAAMC,QAAQ,GAAG,8BAAjB;AACA,MAAMC,IAAI,GAAGZ,GAAG,CAACa,QAAJ,EAAb;AACA,MAAMC,GAAG,GAAGhB,aAAa,CAACC,QAAD,EAAWa,IAAX,CAAzB;AAEA,MAAMG,WAAW,GAAG,mBAAOT,OAAP,CAApB;AACA,MAAMU,QAAQ,GAAG,mBAAOJ,IAAP,CAAjB,CANQ,CAQR;;AACA,qCAAqB,YAAM;AACzB;AAEA;AACA,QAAMK,WAAW,GACfD,QAAQ,CAACE,OAAT,KAAqBN,IAArB,IACAG,WAAW,CAACG,OAAZ,CAAoBC,QADpB,IAEA,CAACb,OAAO,CAACa,QAHX;;AAKA,QAAI,CAACF,WAAL,EAAkB;AAChBN,MAAAA,QAAQ,CAAC,4BAAcG,GAAd,EAAmBF,IAAnB,EAAyBN,OAAzB,CAAD,CAAR;AACD;;AAEDS,IAAAA,WAAW,CAACG,OAAZ,GAAsBZ,OAAtB;AACAU,IAAAA,QAAQ,CAACE,OAAT,GAAmBN,IAAnB;AACD,GAfD,EAeG,CAACE,GAAD,EAAMF,IAAN,EAAYN,OAAZ,CAfH;AAiBA,8BAAoCA,OAApC,CAAQI,eAAR;AAAA,MAAQA,eAAR,sCAA0B,KAA1B;AACA,wBAAU,YAAM;AACd,WAAO,YAAM;AACX,UAAIA,eAAJ,EAAqB;AACnBC,QAAAA,QAAQ,CAAC,+BAAiBG,GAAjB,CAAD,CAAR;AACD;AACF,KAJD;AAKD,GAND,EAMG,CAACH,QAAD,EAAWG,GAAX,EAAgBJ,eAAhB,CANH,EA3BQ,CAmCR;;AACA,SAAO,6BAAY,UAACR,KAAD,EAAW;AAC5B,WAAOA,KAAK,CAACkB,SAAN,CAAgBN,GAAhB,CAAP;AACD,GAFM,CAAP;AAGD,CA9CM","sourcesContent":["// @flow\nimport { useEffect, useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { HTTP_METHODS } from \"../constants\";\nimport { loadModularUI, removeModelByKey } from \"../redux/_modularui/actions\";\n\nimport useDeepCompareEffect from \"./useDeepCompareEffect\";\n\nimport type Href from \"../models/href/Href\";\nimport type { RequestBaseOptions } from \"../utils\";\n\n/**\n */\nconst useKeyForHook = (modelKey: string, url: string) => {\n const locale = useSelector((state) => state.i18n.locale);\n\n return `${modelKey}(${url.split(\"?\")[0]})(${locale})`;\n};\n\n/**\n * Use redux action and selector to retrieve the correct modular ui service model\n */\nexport const useModularUI = (\n modelKey: string,\n url: string | Href,\n options: RequestBaseOptions = {\n method: HTTP_METHODS.GET,\n removeOnUnmount: false,\n }\n): any => {\n const dispatch = useDispatch();\n const href = url.toString();\n const key = useKeyForHook(modelKey, href);\n\n const prevOptions = useRef(options);\n const prevHref = useRef(href);\n\n // dispatch loadModularUI\n useDeepCompareEffect(() => {\n // console.info({ new: options }, { old: prevOptions.current });\n\n // prevent reloads when previous option had the isReload, but the new options not\n const isOldReload =\n prevHref.current === href &&\n prevOptions.current.isReload &&\n !options.isReload;\n\n if (!isOldReload) {\n dispatch(loadModularUI(key, href, options));\n }\n\n prevOptions.current = options;\n prevHref.current = href;\n }, [key, href, options]);\n\n const { removeOnUnmount = false } = options;\n useEffect(() => {\n return () => {\n if (removeOnUnmount) {\n dispatch(removeModelByKey(key));\n }\n };\n }, [dispatch, key, removeOnUnmount]);\n\n // retrieve current model from modularui reducer\n return useSelector((state) => {\n return state.modularui[key];\n });\n};\n"],"file":"useModularUI.js"}
1
+ {"version":3,"sources":["../../src/hooks/useModularUI.js"],"names":["useKeyForHook","modelKey","url","locale","state","i18n","split","useModularUI","options","method","HTTP_METHODS","GET","removeOnUnmount","dispatch","href","toString","key","prevOptions","prevHref","isOldReload","current","isReload","modularui"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AAKA;AACA;AACA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,QAAD,EAAmBC,GAAnB,EAAmC;AAAA;;AACvD,MAAMC,MAAM,GAAG,6BAAY,UAACC,KAAD;AAAA,WAAWA,KAAK,CAACC,IAAN,CAAWF,MAAtB;AAAA,GAAZ,CAAf;AAEA,oFAAUF,QAAV,wBAAsBC,GAAG,CAACI,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAtB,wBAA4CH,MAA5C;AACD,CAJD;AAMA;AACA;AACA;;;AACO,IAAMI,YAAY,GAAG,SAAfA,YAAe,CAC1BN,QAD0B,EAE1BC,GAF0B,EAOlB;AAAA,MAJRM,OAIQ,uEAJsB;AAC5BC,IAAAA,MAAM,EAAEC,wBAAaC,GADO;AAE5BC,IAAAA,eAAe,EAAE;AAFW,GAItB;AACR,MAAMC,QAAQ,GAAG,8BAAjB;AACA,MAAMC,IAAI,GAAGZ,GAAG,CAACa,QAAJ,EAAb;AACA,MAAMC,GAAG,GAAGhB,aAAa,CAACC,QAAD,EAAWa,IAAX,CAAzB;AAEA,MAAMG,WAAW,GAAG,mBAAOT,OAAP,CAApB;AACA,MAAMU,QAAQ,GAAG,mBAAOJ,IAAP,CAAjB,CANQ,CAQR;;AACA,qCAAqB,YAAM;AACzB;AACA,QAAMK,WAAW,GACfD,QAAQ,CAACE,OAAT,KAAqBN,IAArB,IACAG,WAAW,CAACG,OAAZ,CAAoBC,QADpB,IAEA,CAACb,OAAO,CAACa,QAHX;;AAKA,QAAI,CAACF,WAAL,EAAkB;AAChBN,MAAAA,QAAQ,CAAC,4BAAcG,GAAd,EAAmBF,IAAnB,EAAyBN,OAAzB,CAAD,CAAR;AACD;;AAEDS,IAAAA,WAAW,CAACG,OAAZ,GAAsBZ,OAAtB;AACAU,IAAAA,QAAQ,CAACE,OAAT,GAAmBN,IAAnB;AACD,GAbD,EAaG,CAACE,GAAD,EAAMF,IAAN,EAAYN,OAAZ,CAbH;AAeA,8BAAoCA,OAApC,CAAQI,eAAR;AAAA,MAAQA,eAAR,sCAA0B,KAA1B;AACA,wBAAU,YAAM;AACd,WAAO,YAAM;AACX,UAAIA,eAAJ,EAAqB;AACnBC,QAAAA,QAAQ,CAAC,+BAAiBG,GAAjB,CAAD,CAAR;AACD;AACF,KAJD;AAKD,GAND,EAMG,CAACH,QAAD,EAAWG,GAAX,EAAgBJ,eAAhB,CANH,EAzBQ,CAiCR;;AACA,SAAO,6BAAY,UAACR,KAAD,EAAW;AAC5B,WAAOA,KAAK,CAACkB,SAAN,CAAgBN,GAAhB,CAAP;AACD,GAFM,CAAP;AAGD,CA5CM","sourcesContent":["// @flow\nimport { useEffect, useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { HTTP_METHODS } from \"../constants\";\nimport { loadModularUI, removeModelByKey } from \"../redux/_modularui/actions\";\n\nimport useDeepCompareEffect from \"./useDeepCompareEffect\";\n\nimport type Href from \"../models/href/Href\";\nimport type { RequestBaseOptions } from \"../utils\";\n\n/**\n */\nconst useKeyForHook = (modelKey: string, url: string) => {\n const locale = useSelector((state) => state.i18n.locale);\n\n return `${modelKey}(${url.split(\"?\")[0]})(${locale})`;\n};\n\n/**\n * Use redux action and selector to retrieve the correct modular ui service model\n */\nexport const useModularUI = (\n modelKey: string,\n url: string | Href,\n options: RequestBaseOptions = {\n method: HTTP_METHODS.GET,\n removeOnUnmount: false,\n }\n): any => {\n const dispatch = useDispatch();\n const href = url.toString();\n const key = useKeyForHook(modelKey, href);\n\n const prevOptions = useRef(options);\n const prevHref = useRef(href);\n\n // dispatch loadModularUI\n useDeepCompareEffect(() => {\n // prevent reloads when previous option had the isReload, but the new options not\n const isOldReload =\n prevHref.current === href &&\n prevOptions.current.isReload &&\n !options.isReload;\n\n if (!isOldReload) {\n dispatch(loadModularUI(key, href, options));\n }\n\n prevOptions.current = options;\n prevHref.current = href;\n }, [key, href, options]);\n\n const { removeOnUnmount = false } = options;\n useEffect(() => {\n return () => {\n if (removeOnUnmount) {\n dispatch(removeModelByKey(key));\n }\n };\n }, [dispatch, key, removeOnUnmount]);\n\n // retrieve current model from modularui reducer\n return useSelector((state) => {\n return state.modularui[key];\n });\n};\n"],"file":"useModularUI.js"}
@@ -41,6 +41,8 @@ var _TaskGroupModel = _interopRequireDefault(require("../taskgroup/TaskGroupMode
41
41
 
42
42
  var _LayoutHints = require("../../constants/LayoutHints");
43
43
 
44
+ var _IllegalStateException = _interopRequireDefault(require("../../exceptions/IllegalStateException"));
45
+
44
46
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
45
47
 
46
48
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -181,7 +183,7 @@ var CaseViewModel = /*#__PURE__*/function (_DetailModel) {
181
183
  var selfLink = this.links.getLinkByKey("self");
182
184
 
183
185
  if (selfLink === null) {
184
- throw new Error("No self href available");
186
+ throw new _IllegalStateException.default("No self href available");
185
187
  }
186
188
 
187
189
  return new _Href.default(selfLink.href);
@@ -6,6 +6,8 @@ import TaskGroupModel from "../taskgroup/TaskGroupModel";
6
6
 
7
7
  import { TITLE } from "../../constants/LayoutHints";
8
8
 
9
+ import IllegalStateException from "../../exceptions/IllegalStateException";
10
+
9
11
  import type { ModularUIModel, AttributeType } from "../types";
10
12
  import type { ModularUIResponse } from "../../modularui";
11
13
  import type LinkCollection from "../links/LinkCollection";
@@ -122,7 +124,7 @@ export default class CaseViewModel extends DetailModel {
122
124
  const selfLink = this.links.getLinkByKey("self");
123
125
 
124
126
  if (selfLink === null) {
125
- throw new Error("No self href available");
127
+ throw new IllegalStateException("No self href available");
126
128
  }
127
129
 
128
130
  return new Href(selfLink.href);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/caseview/CaseViewModel.js"],"names":["CaseViewModel","caseviewData","createTaskGroupCollection","links","getLinksByGroup","all","models","taskGroupModels","i","length","TaskGroupModel","push","taskGroupCollection","add","attributeCollection","getAttributeByLayoutHint","TITLE","casename","value","getContribution","introtext","data","_content","text","message","contributions","Array","isArray","texts","selfLink","getLinkByKey","Error","Href","href","allTaskgroupData","getData","allTaskgroupContributions","taskgroup","some","taskgroupContribution","name","taskgroupContributions","create","_taskGroupCollection","taskgroups","TaskGroupCollection","hasItems","resourcetype","DetailModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAOA;AACA;AACA;IACqBA,a;;;;;AAGnB;AACF;AACE,yBAAYC,YAAZ,EAA6C;AAAA;;AAAA;AAC3C,8BAAMA,YAAN;AAD2C;;AAG3C,UAAKC,yBAAL;;AAH2C;AAI5C;AAED;AACF;;;;;SACE,eAAmB;AACjB,aAAO,UAAP;AACD;AAED;AACF;;;;;AAQE;AACF;AACE,yCAA8C;AAC5C,aAAO,KAAKC,KAAL,CAAWC,eAAX,CAA2B,WAA3B,EAAwCC,GAA/C;AACD;AAED;AACF;AACA;;;;SACE,eAAiC;AAC/B,aAAO,KAAKF,KAAL,CAAWC,eAAX,CAA2B,OAA3B,CAAP;AACD;AAED;AACF;;;;WACE,wBAAeE,MAAf,EAA8C;AAC5C,oHAAqBA,MAArB;AAEA,UAAMC,eAAe,GAAG,EAAxB;;AACA,WAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACG,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC,YAAIF,MAAM,CAACE,CAAD,CAAN,YAAqBE,uBAAzB,EAAyC;AACvCH,UAAAA,eAAe,CAACI,IAAhB,CAAqBL,MAAM,CAACE,CAAD,CAA3B;AACD;AACF;;AAED,WAAKI,mBAAL,CAAyBC,GAAzB,CAA6BN,eAA7B;AACD;AAED;AACF;AACA;;;;SACE,eAA+B;AAC7B,aAAO,KAAKO,mBAAL,CAAyBC,wBAAzB,CAAkDC,kBAAlD,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAAoB;AAClB,aAAO,KAAKC,QAAL,GAAgB,KAAKA,QAAL,CAAcC,KAA9B,GAAsC,EAA7C;AACD;AAED;AACF;AACA;;;;SACE,eAAwB;AACtB,aAAO,KAAKC,eAAL,CAAqB,OAArB,EAA8B,EAA9B,CAAP;AACD;AAED;AACF;AACA;;;;WACE,wBAAwB;AACtB,aAAO,KAAKC,SAAL,KAAmB,EAA1B;AACD;AAED;AACF;AACA;;;;SACE,eAAwB;AACtB,UAAI,KAAKC,IAAL,CAAUC,QAAd,EAAwB;AACtB,eAAO,KAAKD,IAAL,CAAUC,QAAV,CAAmBC,IAAnB,CAAwBC,OAA/B;AACD;;AAED,UAAI,KAAKC,aAAL,CAAmBF,IAAvB,EAA6B;AAAA;;AAC3B,wCAAO,KAAKE,aAAL,CAAmBF,IAAnB,CAAwBC,OAA/B,yEAA0C,KAAKC,aAAL,CAAmBF,IAA7D;AACD;;AAED,UAAIG,KAAK,CAACC,OAAN,CAAc,KAAKF,aAAL,CAAmBG,KAAjC,CAAJ,EAA6C;AAC3C,eAAO,KAAKH,aAAL,CAAmBG,KAAnB,CAAyB,CAAzB,EAA4BL,IAAnC;AACD;;AAED,aAAO,EAAP;AACD;AAED;AACF;AACA;;;;SACE,eAAqB;AACnB,UAAMM,QAAQ,GAAG,KAAK1B,KAAL,CAAW2B,YAAX,CAAwB,MAAxB,CAAjB;;AAEA,UAAID,QAAQ,KAAK,IAAjB,EAAuB;AACrB,cAAM,IAAIE,KAAJ,CAAU,wBAAV,CAAN;AACD;;AAED,aAAO,IAAIC,aAAJ,CAASH,QAAQ,CAACI,IAAlB,CAAP;AACD;AAED;AACF;;;;WACE,qCAA4B;AAAA;;AAC1B,UAAMC,gBAAgB,GAAG,KAAKC,OAAL,CAAa,YAAb,EAA2B,EAA3B,CAAzB;AACA,UAAMC,yBAAyB,GAAG,KAAKjB,eAAL,CAAqB,YAArB,EAAmC,EAAnC,CAAlC;AAEA,WAAKP,mBAAL,GAA2B,kDAAAsB,gBAAgB,MAAhB,CAAAA,gBAAgB,EACjC,UAACG,SAAD;AAAA,eACND,yBAAyB,CAACE,IAA1B,CACE,UAACC,qBAAD;AAAA,iBACEA,qBAAqB,CAACC,IAAtB,KAA+BH,SAAS,CAACG,IAD3C;AAAA,SADF,CADM;AAAA,OADiC,CAAhB,iBAOpB,UAACH,SAAD,EAAe;AAClB,YAAMI,sBAAsB,GAAG,mBAAAL,yBAAyB,MAAzB,CAAAA,yBAAyB,EACtD,UAACG,qBAAD;AAAA,iBACEA,qBAAqB,CAACC,IAAtB,KAA+BH,SAAS,CAACG,IAD3C;AAAA,SADsD,CAAxD;AAKA,eAAO9B,wBAAegC,MAAf,CACLL,SAAS,CAACG,IADL,EAELH,SAFK,EAGLI,sBAHK,CAAP;AAKD,OAlBwB,CAA3B;AAmBD;AAED;AACF;AACA;;;;;AAKE;AACF;AACA;AACE,mBAA+C;AAC7C,aAAO,KAAKE,oBAAZ;AACD;AAED;AACF;AACA;;SAbE,aAAwBC,UAAxB,EAA2D;AACzD,WAAKD,oBAAL,GAA4B,IAAIE,4BAAJ,CAAwBD,UAAxB,CAA5B;AACD;;;WAYD,yBAAyB;AACvB,aAAO,KAAKhC,mBAAL,IAA4B,KAAKA,mBAAL,CAAyBkC,QAA5D;AACD;;;WA7ID,2BAAyBzB,IAAzB,EAA2D;AACzD,aACEA,IAAI,CAACI,aAAL,CAAmBsB,YAAnB,IACA1B,IAAI,CAACI,aAAL,CAAmBsB,YAAnB,KAAoC,UAFtC;AAID;;;EAxBwCC,qB","sourcesContent":["// @flow\nimport DetailModel from \"../detail/DetailModel\";\nimport Href from \"../href/Href\";\nimport TaskGroupCollection from \"../taskgroup/TaskGroupCollection\";\nimport TaskGroupModel from \"../taskgroup/TaskGroupModel\";\n\nimport { TITLE } from \"../../constants/LayoutHints\";\n\nimport type { ModularUIModel, AttributeType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n * Model containing the details of one case.\n */\nexport default class CaseViewModel extends DetailModel {\n _taskGroupCollection: TaskGroupCollection;\n\n /**\n */\n constructor(caseviewData: ModularUIResponse) {\n super(caseviewData);\n\n this.createTaskGroupCollection();\n }\n\n /**\n */\n get type(): string {\n return \"CaseView\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"CaseView\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.links.getLinksByGroup(\"taskgroup\").all;\n }\n\n /**\n * Getting panel links\n */\n get panelLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"panel\");\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n super.setChildModels(models);\n\n const taskGroupModels = [];\n for (let i = 0; i < models.length; i++) {\n if (models[i] instanceof TaskGroupModel) {\n taskGroupModels.push(models[i]);\n }\n }\n\n this.taskGroupCollection.add(taskGroupModels);\n }\n\n /**\n * Getting the case name\n */\n get casename(): ?AttributeType {\n return this.attributeCollection.getAttributeByLayoutHint(TITLE);\n }\n\n /**\n * Retrieve the case label, this can be configured with a case property with the layout hint 'title'\n */\n get label(): string {\n return this.casename ? this.casename.value : \"\";\n }\n\n /**\n * Retrieve the label that was configured on the caseview\n */\n get viewLabel(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Check if an introtext exists for this caseview\n */\n hasIntroText(): boolean {\n return this.introtext !== \"\";\n }\n\n /**\n * Getting the introduction text configured on the case view\n */\n get introtext(): string {\n if (this.data._content) {\n return this.data._content.text.message;\n }\n\n if (this.contributions.text) {\n return this.contributions.text.message ?? this.contributions.text;\n }\n\n if (Array.isArray(this.contributions.texts)) {\n return this.contributions.texts[0].text;\n }\n\n return \"\";\n }\n\n /**\n * Getting the self href\n */\n get selfhref(): Href {\n const selfLink = this.links.getLinkByKey(\"self\");\n\n if (selfLink === null) {\n throw new Error(\"No self href available\");\n }\n\n return new Href(selfLink.href);\n }\n\n /**\n */\n createTaskGroupCollection() {\n const allTaskgroupData = this.getData(\"taskgroups\", []);\n const allTaskgroupContributions = this.getContribution(\"taskgroups\", []);\n\n this.taskGroupCollection = allTaskgroupData\n .filter((taskgroup) =>\n allTaskgroupContributions.some(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n )\n )\n .map((taskgroup) => {\n const taskgroupContributions = allTaskgroupContributions.find(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n );\n\n return TaskGroupModel.create(\n taskgroup.name,\n taskgroup,\n taskgroupContributions\n );\n });\n }\n\n /**\n * Setting the taskgroup panel collection\n */\n set taskGroupCollection(taskgroups: Array<TaskGroupModel>) {\n this._taskGroupCollection = new TaskGroupCollection(taskgroups);\n }\n\n /**\n * Getting the taskgrouppanels on the tab\n */\n get taskGroupCollection(): TaskGroupCollection {\n return this._taskGroupCollection;\n }\n\n /**\n * Has taskgroups\n */\n hasTaskGroups(): boolean {\n return this.taskGroupCollection && this.taskGroupCollection.hasItems;\n }\n}\n"],"file":"CaseViewModel.js"}
1
+ {"version":3,"sources":["../../../src/models/caseview/CaseViewModel.js"],"names":["CaseViewModel","caseviewData","createTaskGroupCollection","links","getLinksByGroup","all","models","taskGroupModels","i","length","TaskGroupModel","push","taskGroupCollection","add","attributeCollection","getAttributeByLayoutHint","TITLE","casename","value","getContribution","introtext","data","_content","text","message","contributions","Array","isArray","texts","selfLink","getLinkByKey","IllegalStateException","Href","href","allTaskgroupData","getData","allTaskgroupContributions","taskgroup","some","taskgroupContribution","name","taskgroupContributions","create","_taskGroupCollection","taskgroups","TaskGroupCollection","hasItems","resourcetype","DetailModel"],"mappings":"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","sourcesContent":["// @flow\nimport DetailModel from \"../detail/DetailModel\";\nimport Href from \"../href/Href\";\nimport TaskGroupCollection from \"../taskgroup/TaskGroupCollection\";\nimport TaskGroupModel from \"../taskgroup/TaskGroupModel\";\n\nimport { TITLE } from \"../../constants/LayoutHints\";\n\nimport IllegalStateException from \"../../exceptions/IllegalStateException\";\n\nimport type { ModularUIModel, AttributeType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n * Model containing the details of one case.\n */\nexport default class CaseViewModel extends DetailModel {\n _taskGroupCollection: TaskGroupCollection;\n\n /**\n */\n constructor(caseviewData: ModularUIResponse) {\n super(caseviewData);\n\n this.createTaskGroupCollection();\n }\n\n /**\n */\n get type(): string {\n return \"CaseView\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"CaseView\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.links.getLinksByGroup(\"taskgroup\").all;\n }\n\n /**\n * Getting panel links\n */\n get panelLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"panel\");\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n super.setChildModels(models);\n\n const taskGroupModels = [];\n for (let i = 0; i < models.length; i++) {\n if (models[i] instanceof TaskGroupModel) {\n taskGroupModels.push(models[i]);\n }\n }\n\n this.taskGroupCollection.add(taskGroupModels);\n }\n\n /**\n * Getting the case name\n */\n get casename(): ?AttributeType {\n return this.attributeCollection.getAttributeByLayoutHint(TITLE);\n }\n\n /**\n * Retrieve the case label, this can be configured with a case property with the layout hint 'title'\n */\n get label(): string {\n return this.casename ? this.casename.value : \"\";\n }\n\n /**\n * Retrieve the label that was configured on the caseview\n */\n get viewLabel(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Check if an introtext exists for this caseview\n */\n hasIntroText(): boolean {\n return this.introtext !== \"\";\n }\n\n /**\n * Getting the introduction text configured on the case view\n */\n get introtext(): string {\n if (this.data._content) {\n return this.data._content.text.message;\n }\n\n if (this.contributions.text) {\n return this.contributions.text.message ?? this.contributions.text;\n }\n\n if (Array.isArray(this.contributions.texts)) {\n return this.contributions.texts[0].text;\n }\n\n return \"\";\n }\n\n /**\n * Getting the self href\n */\n get selfhref(): Href {\n const selfLink = this.links.getLinkByKey(\"self\");\n\n if (selfLink === null) {\n throw new IllegalStateException(\"No self href available\");\n }\n\n return new Href(selfLink.href);\n }\n\n /**\n */\n createTaskGroupCollection() {\n const allTaskgroupData = this.getData(\"taskgroups\", []);\n const allTaskgroupContributions = this.getContribution(\"taskgroups\", []);\n\n this.taskGroupCollection = allTaskgroupData\n .filter((taskgroup) =>\n allTaskgroupContributions.some(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n )\n )\n .map((taskgroup) => {\n const taskgroupContributions = allTaskgroupContributions.find(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n );\n\n return TaskGroupModel.create(\n taskgroup.name,\n taskgroup,\n taskgroupContributions\n );\n });\n }\n\n /**\n * Setting the taskgroup panel collection\n */\n set taskGroupCollection(taskgroups: Array<TaskGroupModel>) {\n this._taskGroupCollection = new TaskGroupCollection(taskgroups);\n }\n\n /**\n * Getting the taskgrouppanels on the tab\n */\n get taskGroupCollection(): TaskGroupCollection {\n return this._taskGroupCollection;\n }\n\n /**\n * Has taskgroups\n */\n hasTaskGroups(): boolean {\n return this.taskGroupCollection && this.taskGroupCollection.hasItems;\n }\n}\n"],"file":"CaseViewModel.js"}
@@ -2,13 +2,26 @@ import CaseViewModel from "../CaseViewModel";
2
2
  import DetailModel from "../../detail/DetailModel";
3
3
 
4
4
  import caseviewJson from "./caseview.json";
5
+ import caseviewLocalTaskgroupJson from "./caseview_local_taskgroup.json";
5
6
  import caseviewContributionsJson from "./caseviewContributions.json";
6
7
 
8
+ import IllegalStateException from "../../../exceptions/IllegalStateException";
9
+
7
10
  describe("caseViewModel", () => {
8
11
  it("should be able to create an empty casedetail", () => {
9
12
  const caseview = new CaseViewModel({});
10
13
 
11
14
  expect(caseview).toBeInstanceOf(CaseViewModel);
15
+ expect(caseview.getInitialChildModelLinks()).toHaveLength(0);
16
+ expect(caseview.panelLinks).toHaveLength(0);
17
+ expect(caseview.introtext).toBe("");
18
+ });
19
+
20
+ it("throws when no self link is available", () => {
21
+ const caseview = new CaseViewModel({});
22
+ expect(() => {
23
+ caseview.selfhref;
24
+ }).toThrow(IllegalStateException);
12
25
  });
13
26
 
14
27
  it("should be able to create a casedetail from a typical modular UI json structure", () => {
@@ -18,6 +31,8 @@ describe("caseViewModel", () => {
18
31
  contributions: caseviewContributionsJson,
19
32
  });
20
33
 
34
+ expect(caseDetail.viewLabel).toBe("Book");
35
+ expect(caseDetail.hasIntroText()).toBe(true);
21
36
  expect(caseDetail).toBeInstanceOf(CaseViewModel);
22
37
  expect(caseDetail).toBeInstanceOf(DetailModel);
23
38
 
@@ -25,13 +40,35 @@ describe("caseViewModel", () => {
25
40
  expect(caseDetail.id).toBe(24);
26
41
 
27
42
  expect(caseDetail.casename.value).toBe("The safety of objects");
43
+
44
+ expect(caseDetail.hasTaskGroups()).toBe(false);
45
+ });
46
+
47
+ it("should be able to handle local taskgroup", () => {
48
+ const caseDetail = new CaseViewModel({
49
+ key: "Book",
50
+ data: caseviewLocalTaskgroupJson,
51
+ contributions: caseviewContributionsJson,
52
+ });
53
+
54
+ expect(caseDetail.hasTaskGroups()).toBe(true);
55
+ expect(caseDetail.taskGroupCollection).toHaveLength(1);
28
56
  });
29
57
 
30
58
  it("should be able to handle different kind of introtext", () => {
31
59
  const caseviewOldStructure = new CaseViewModel({
32
60
  key: "Book",
33
61
  data: caseviewJson,
34
- contributions: caseviewContributionsJson,
62
+ contributions: {
63
+ ...caseviewContributionsJson,
64
+ text: undefined,
65
+ texts: [
66
+ {
67
+ type: "master",
68
+ text: "<p>This is introtext</p>",
69
+ },
70
+ ],
71
+ },
35
72
  });
36
73
 
37
74
  expect(caseviewOldStructure.introtext).toBe("<p>This is introtext</p>");
@@ -13,6 +13,10 @@ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable
13
13
 
14
14
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
15
15
 
16
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
17
+
18
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
19
+
16
20
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
17
21
 
18
22
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
@@ -29,6 +33,10 @@ var _BaseCollection2 = _interopRequireDefault(require("../base/BaseCollection"))
29
33
 
30
34
  var _ActionCollection = _interopRequireDefault(require("../actions/ActionCollection"));
31
35
 
36
+ var _ListItemModel = _interopRequireDefault(require("../list/ListItemModel"));
37
+
38
+ var _ConfigurationException = _interopRequireDefault(require("../../exceptions/ConfigurationException"));
39
+
32
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
33
41
 
34
42
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -82,6 +90,38 @@ var ListItemCollection = /*#__PURE__*/function (_BaseCollection) {
82
90
  });
83
91
  return actions;
84
92
  }
93
+ }], [{
94
+ key: "createFromList",
95
+ value:
96
+ /**
97
+ * Create a list item collection from the given list
98
+ */
99
+ function createFromList(list) {
100
+ var _embedded = list.getData("_embedded");
101
+
102
+ if (_embedded != null) {
103
+ var _context2;
104
+
105
+ if (Array.isArray(_embedded)) {
106
+ throw new _ConfigurationException.default("One record panel with multiple tables is not supported, place all types in one panel for the panel with key ".concat(list.key));
107
+ }
108
+
109
+ var dynamicschema = list.getData("dynamicschema");
110
+ var collection = (0, _map.default)(_context2 = _embedded.results).call(_context2, function (resultItem) {
111
+ var _Object$keys = (0, _keys.default)(resultItem),
112
+ _Object$keys2 = (0, _slicedToArray2.default)(_Object$keys, 1),
113
+ key = _Object$keys2[0];
114
+
115
+ var listitemData = resultItem[key];
116
+ listitemData.dynamicschema = dynamicschema;
117
+ var listitemContributions = list.contributions.results[key];
118
+ return _ListItemModel.default.createFromListResult(key, listitemData, listitemContributions);
119
+ });
120
+ return new ListItemCollection(collection);
121
+ }
122
+
123
+ return new ListItemCollection();
124
+ }
85
125
  }]);
86
126
  return ListItemCollection;
87
127
  }(_BaseCollection2.default);
@@ -1,13 +1,50 @@
1
1
  // @flow
2
2
  import BaseCollection from "../base/BaseCollection";
3
3
  import ActionCollection from "../actions/ActionCollection";
4
+ import ListItemModel from "../list/ListItemModel";
4
5
 
5
- import type ListItemModel from "../list/ListItemModel";
6
+ import ConfigurationException from "../../exceptions/ConfigurationException";
7
+
8
+ import type ListModel from "../list/ListModel";
6
9
 
7
10
  /**
8
11
  * Collection of list items
9
12
  */
10
13
  class ListItemCollection extends BaseCollection<ListItemModel> {
14
+ /**
15
+ * Create a list item collection from the given list
16
+ */
17
+ static createFromList(list: ListModel): ListItemCollection {
18
+ const _embedded = list.getData("_embedded");
19
+ if (_embedded != null) {
20
+ if (Array.isArray(_embedded)) {
21
+ throw new ConfigurationException(
22
+ `One record panel with multiple tables is not supported, place all types in one panel for the panel with key ${list.key}`
23
+ );
24
+ }
25
+
26
+ const dynamicschema = list.getData("dynamicschema");
27
+
28
+ const collection = _embedded.results.map((resultItem) => {
29
+ const [key] = Object.keys(resultItem);
30
+ const listitemData = resultItem[key];
31
+ listitemData.dynamicschema = dynamicschema;
32
+
33
+ const listitemContributions = list.contributions.results[key];
34
+
35
+ return ListItemModel.createFromListResult(
36
+ key,
37
+ listitemData,
38
+ listitemContributions
39
+ );
40
+ });
41
+
42
+ return new ListItemCollection(collection);
43
+ }
44
+
45
+ return new ListItemCollection();
46
+ }
47
+
11
48
  /**
12
49
  */
13
50
  get additionalDetailRoutePath(): string {