@beinformed/ui 1.27.1 → 1.27.3

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 (78) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/esm/constants/Constants.js +5 -0
  3. package/esm/constants/Constants.js.map +1 -1
  4. package/esm/constants/Settings.js +6 -4
  5. package/esm/constants/Settings.js.map +1 -1
  6. package/esm/models/application/ApplicationModel.js +6 -3
  7. package/esm/models/application/ApplicationModel.js.map +1 -1
  8. package/esm/models/attributes/AttributeDataHelper.js +2 -2
  9. package/esm/models/attributes/AttributeDataHelper.js.map +1 -1
  10. package/esm/models/attributes/_createAttribute.js +2 -2
  11. package/esm/models/attributes/_createAttribute.js.map +1 -1
  12. package/esm/models/base/BaseCollection.js +3 -9
  13. package/esm/models/base/BaseCollection.js.map +1 -1
  14. package/esm/models/base/BaseModel.js +2 -8
  15. package/esm/models/base/BaseModel.js.map +1 -1
  16. package/esm/modularui/Authenticate.js +25 -13
  17. package/esm/modularui/Authenticate.js.map +1 -1
  18. package/esm/react/ErrorBoundaryFallback.js +3 -0
  19. package/esm/react/ErrorBoundaryFallback.js.map +1 -1
  20. package/esm/react-server/serverUtil.js +1 -0
  21. package/esm/react-server/serverUtil.js.map +1 -1
  22. package/esm/redux/actions/FormValidations.js +1 -1
  23. package/esm/redux/actions/FormValidations.js.map +1 -1
  24. package/lib/constants/Constants.js +7 -1
  25. package/lib/constants/Constants.js.flow +5 -0
  26. package/lib/constants/Constants.js.map +1 -1
  27. package/lib/constants/Settings.js +5 -3
  28. package/lib/constants/Settings.js.flow +7 -3
  29. package/lib/constants/Settings.js.map +1 -1
  30. package/lib/models/application/ApplicationModel.js +6 -3
  31. package/lib/models/application/ApplicationModel.js.flow +10 -5
  32. package/lib/models/application/ApplicationModel.js.map +1 -1
  33. package/lib/models/attributes/AttributeDataHelper.js +2 -2
  34. package/lib/models/attributes/AttributeDataHelper.js.flow +2 -2
  35. package/lib/models/attributes/AttributeDataHelper.js.map +1 -1
  36. package/lib/models/attributes/__tests__/ChoiceAttributeModel.spec.js.flow +3 -0
  37. package/lib/models/attributes/__tests__/CompositeAttributeModel.spec.js.flow +3 -0
  38. package/lib/models/attributes/_createAttribute.js +2 -2
  39. package/lib/models/attributes/_createAttribute.js.flow +2 -2
  40. package/lib/models/attributes/_createAttribute.js.map +1 -1
  41. package/lib/models/base/BaseCollection.js +3 -9
  42. package/lib/models/base/BaseCollection.js.flow +4 -10
  43. package/lib/models/base/BaseCollection.js.map +1 -1
  44. package/lib/models/base/BaseModel.js +2 -8
  45. package/lib/models/base/BaseModel.js.flow +3 -9
  46. package/lib/models/base/BaseModel.js.map +1 -1
  47. package/lib/models/base/__tests__/BaseModel.spec.js.flow +3 -7
  48. package/lib/modularui/Authenticate.js +24 -12
  49. package/lib/modularui/Authenticate.js.flow +30 -13
  50. package/lib/modularui/Authenticate.js.map +1 -1
  51. package/lib/react/ErrorBoundaryFallback.js +3 -0
  52. package/lib/react/ErrorBoundaryFallback.js.flow +2 -0
  53. package/lib/react/ErrorBoundaryFallback.js.map +1 -1
  54. package/lib/react-server/serverUtil.js +1 -0
  55. package/lib/react-server/serverUtil.js.flow +2 -0
  56. package/lib/react-server/serverUtil.js.map +1 -1
  57. package/lib/redux/actions/FormValidations.js +1 -1
  58. package/lib/redux/actions/FormValidations.js.flow +1 -1
  59. package/lib/redux/actions/FormValidations.js.map +1 -1
  60. package/package.json +11 -10
  61. package/src/constants/Constants.js +5 -0
  62. package/src/constants/Settings.js +7 -3
  63. package/src/models/application/ApplicationModel.js +10 -5
  64. package/src/models/attributes/AttributeDataHelper.js +2 -2
  65. package/src/models/attributes/__tests__/ChoiceAttributeModel.spec.js +3 -0
  66. package/src/models/attributes/__tests__/CompositeAttributeModel.spec.js +3 -0
  67. package/src/models/attributes/_createAttribute.js +2 -2
  68. package/src/models/base/BaseCollection.js +4 -10
  69. package/src/models/base/BaseModel.js +3 -9
  70. package/src/models/base/__tests__/BaseModel.spec.js +3 -7
  71. package/src/modularui/Authenticate.js +30 -13
  72. package/src/react/ErrorBoundaryFallback.js +2 -0
  73. package/src/react-server/serverUtil.js +2 -0
  74. package/src/redux/actions/FormValidations.js +1 -1
  75. package/types/constants/Constants.d.ts +5 -0
  76. package/types/models/base/BaseCollection.d.ts +2 -2
  77. package/types/models/base/BaseModel.d.ts +1 -1
  78. package/types/modularui/Authenticate.d.ts +8 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Authenticate.js","names":["HTTP_METHODS","universalFetch","Cache","UnauthorizedException","loginType","loginPath","loginPasswordField","loginUsernameField","logoutPath","getBasePath","Authenticate","constructor","_isBasic","authenticationType","type","Error","isBasicAuthentication","requestLogin","url","method","GET","headers","Accept","initLogin","resolve","catch","error","login","username","password","doFormLogin","doBasicAuthentication","doJaasAuthentication","getFormLoginUrl","getFormLoginData","encodedUsername","encodeURIComponent","encodedPassword","POST","data","addItem","btoa","then","logout","response","clear"],"sources":["../../src/modularui/Authenticate.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS } from \"../constants/Constants\";\n\nimport universalFetch from \"../utils/fetch/universalFetch\";\nimport Cache from \"../utils/browser/Cache\";\n\nimport { UnauthorizedException } from \"../exceptions\";\nimport {\n loginType,\n loginPath,\n loginPasswordField,\n loginUsernameField,\n logoutPath,\n getBasePath,\n} from \"../constants\";\n\n/**\n */\nclass Authenticate {\n _isBasic: boolean;\n\n /**\n */\n constructor() {\n this._isBasic = false;\n }\n\n /**\n */\n get authenticationType(): \"JAAS\" | \"PAC4J_FORM\" | \"PAC4J_BASIC\" {\n const type = loginType();\n\n if (!type || type === \"JAAS\") {\n return \"JAAS\";\n }\n if (type.includes(\"FormClient\")) {\n return \"PAC4J_FORM\";\n } else if (type.includes(\"BasicClient\")) {\n return \"PAC4J_BASIC\";\n }\n\n throw new Error(`Unsupported login type found: ${type}`);\n }\n\n /**\n */\n get isBasicAuthentication(): boolean {\n return this._isBasic || this.authenticationType === \"PAC4J_BASIC\";\n }\n\n /**\n */\n set isBasicAuthentication(isBasicAuthentication: boolean) {\n this._isBasic = isBasicAuthentication;\n }\n\n /**\n */\n requestLogin(): Promise<any> {\n return universalFetch({\n url: `${getBasePath()}/login`,\n method: HTTP_METHODS.GET,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n }\n\n /**\n */\n initLogin(initLogin: boolean): Promise<any> {\n if (this.isBasicAuthentication || !initLogin) {\n return Promise.resolve(true);\n }\n\n return this.requestLogin().catch((error) => {\n // when an unauthorizedexception is received on a request to the login service,\n // this indicates a basic authorization scenario\n // in case of form based authentication other exceptions are thrown\n if (error instanceof UnauthorizedException) {\n this.isBasicAuthentication = true;\n }\n\n return Promise.resolve({});\n });\n }\n\n /**\n */\n login(username: string, password: string): Promise<any> {\n switch (this.authenticationType) {\n case \"PAC4J_FORM\":\n return this.doFormLogin(username, password);\n case \"PAC4J_BASIC\":\n return this.doBasicAuthentication(username, password);\n default:\n return this.doJaasAuthentication(username, password);\n }\n }\n\n /**\n */\n getFormLoginUrl(): string {\n switch (this.authenticationType) {\n case \"PAC4J_BASIC\":\n case \"PAC4J_FORM\":\n return `${getBasePath()}${loginPath()}`;\n default:\n return `${getBasePath()}/j_security_check`;\n }\n }\n\n /**\n */\n getFormLoginData(username: string, password: string): string {\n const encodedUsername = encodeURIComponent(username);\n const encodedPassword = encodeURIComponent(password);\n\n switch (this.authenticationType) {\n case \"PAC4J_BASIC\":\n case \"PAC4J_FORM\":\n return `${loginUsernameField()}=${encodedUsername}&${loginPasswordField()}=${encodedPassword}`;\n default:\n return `j_username=${encodedUsername}&j_password=${encodedPassword}`;\n }\n }\n\n /**\n */\n doFormLogin(username: string, password: string): Promise<any> {\n return universalFetch({\n url: this.getFormLoginUrl(),\n method: HTTP_METHODS.POST,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n data: this.getFormLoginData(username, password),\n });\n }\n\n /**\n */\n doBasicAuthentication(username: string, password: string): Promise<any> {\n Cache.addItem(\"basic\", btoa(`${username}:${password}`));\n return this.requestLogin();\n }\n\n /**\n */\n doJaasAuthentication(username: string, password: string): Promise<any> {\n return this.initLogin(true).then(() => {\n if (this.isBasicAuthentication) {\n return this.doBasicAuthentication(username, password);\n }\n return this.doFormLogin(username, password);\n });\n }\n\n /**\n */\n logout(): Promise<any> {\n return universalFetch({\n url: `${getBasePath()}${logoutPath()}`,\n }).then((response) => {\n // clear cache because of cached contributions\n Cache.clear();\n return response;\n });\n }\n}\n\nexport default Authenticate;\n"],"mappings":";;;AACA,SAASA,YAAY,QAAQ,wBAAwB;AAErD,OAAOC,cAAc,MAAM,+BAA+B;AAC1D,OAAOC,KAAK,MAAM,wBAAwB;AAE1C,SAASC,qBAAqB,QAAQ,eAAe;AACrD,SACEC,SAAS,EACTC,SAAS,EACTC,kBAAkB,EAClBC,kBAAkB,EAClBC,UAAU,EACVC,WAAW,QACN,cAAc;;AAErB;AACA;AACA,MAAMC,YAAY,CAAC;EAGjB;AACF;EACEC,WAAW,GAAG;IAAA;IACZ,IAAI,CAACC,QAAQ,GAAG,KAAK;EACvB;;EAEA;AACF;EACE,IAAIC,kBAAkB,GAA0C;IAC9D,MAAMC,IAAI,GAAGV,SAAS,EAAE;IAExB,IAAI,CAACU,IAAI,IAAIA,IAAI,KAAK,MAAM,EAAE;MAC5B,OAAO,MAAM;IACf;IACA,IAAI,0BAAAA,IAAI,OAAJA,IAAI,EAAU,YAAY,CAAC,EAAE;MAC/B,OAAO,YAAY;IACrB,CAAC,MAAM,IAAI,0BAAAA,IAAI,OAAJA,IAAI,EAAU,aAAa,CAAC,EAAE;MACvC,OAAO,aAAa;IACtB;IAEA,MAAM,IAAIC,KAAK,CAAE,iCAAgCD,IAAK,EAAC,CAAC;EAC1D;;EAEA;AACF;EACE,IAAIE,qBAAqB,GAAY;IACnC,OAAO,IAAI,CAACJ,QAAQ,IAAI,IAAI,CAACC,kBAAkB,KAAK,aAAa;EACnE;;EAEA;AACF;EACE,IAAIG,qBAAqB,CAACA,qBAA8B,EAAE;IACxD,IAAI,CAACJ,QAAQ,GAAGI,qBAAqB;EACvC;;EAEA;AACF;EACEC,YAAY,GAAiB;IAC3B,OAAOhB,cAAc,CAAC;MACpBiB,GAAG,EAAG,GAAET,WAAW,EAAG,QAAO;MAC7BU,MAAM,EAAEnB,YAAY,CAACoB,GAAG;MACxBC,OAAO,EAAE;QACPC,MAAM,EAAE,kBAAkB;QAC1B,cAAc,EAAE;MAClB;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;EACEC,SAAS,CAACA,SAAkB,EAAgB;IAC1C,IAAI,IAAI,CAACP,qBAAqB,IAAI,CAACO,SAAS,EAAE;MAC5C,OAAO,SAAQC,OAAO,CAAC,IAAI,CAAC;IAC9B;IAEA,OAAO,IAAI,CAACP,YAAY,EAAE,CAACQ,KAAK,CAAEC,KAAK,IAAK;MAC1C;MACA;MACA;MACA,IAAIA,KAAK,YAAYvB,qBAAqB,EAAE;QAC1C,IAAI,CAACa,qBAAqB,GAAG,IAAI;MACnC;MAEA,OAAO,SAAQQ,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC;EACJ;;EAEA;AACF;EACEG,KAAK,CAACC,QAAgB,EAAEC,QAAgB,EAAgB;IACtD,QAAQ,IAAI,CAAChB,kBAAkB;MAC7B,KAAK,YAAY;QACf,OAAO,IAAI,CAACiB,WAAW,CAACF,QAAQ,EAAEC,QAAQ,CAAC;MAC7C,KAAK,aAAa;QAChB,OAAO,IAAI,CAACE,qBAAqB,CAACH,QAAQ,EAAEC,QAAQ,CAAC;MACvD;QACE,OAAO,IAAI,CAACG,oBAAoB,CAACJ,QAAQ,EAAEC,QAAQ,CAAC;IAAC;EAE3D;;EAEA;AACF;EACEI,eAAe,GAAW;IACxB,QAAQ,IAAI,CAACpB,kBAAkB;MAC7B,KAAK,aAAa;MAClB,KAAK,YAAY;QACf,OAAQ,GAAEJ,WAAW,EAAG,GAAEJ,SAAS,EAAG,EAAC;MACzC;QACE,OAAQ,GAAEI,WAAW,EAAG,mBAAkB;IAAC;EAEjD;;EAEA;AACF;EACEyB,gBAAgB,CAACN,QAAgB,EAAEC,QAAgB,EAAU;IAC3D,MAAMM,eAAe,GAAGC,kBAAkB,CAACR,QAAQ,CAAC;IACpD,MAAMS,eAAe,GAAGD,kBAAkB,CAACP,QAAQ,CAAC;IAEpD,QAAQ,IAAI,CAAChB,kBAAkB;MAC7B,KAAK,aAAa;MAClB,KAAK,YAAY;QACf,OAAQ,GAAEN,kBAAkB,EAAG,IAAG4B,eAAgB,IAAG7B,kBAAkB,EAAG,IAAG+B,eAAgB,EAAC;MAChG;QACE,OAAQ,cAAaF,eAAgB,eAAcE,eAAgB,EAAC;IAAC;EAE3E;;EAEA;AACF;EACEP,WAAW,CAACF,QAAgB,EAAEC,QAAgB,EAAgB;IAC5D,OAAO5B,cAAc,CAAC;MACpBiB,GAAG,EAAE,IAAI,CAACe,eAAe,EAAE;MAC3Bd,MAAM,EAAEnB,YAAY,CAACsC,IAAI;MACzBjB,OAAO,EAAE;QACPC,MAAM,EAAE,kBAAkB;QAC1B,cAAc,EAAE;MAClB,CAAC;MACDiB,IAAI,EAAE,IAAI,CAACL,gBAAgB,CAACN,QAAQ,EAAEC,QAAQ;IAChD,CAAC,CAAC;EACJ;;EAEA;AACF;EACEE,qBAAqB,CAACH,QAAgB,EAAEC,QAAgB,EAAgB;IACtE3B,KAAK,CAACsC,OAAO,CAAC,OAAO,EAAEC,IAAI,CAAE,GAAEb,QAAS,IAAGC,QAAS,EAAC,CAAC,CAAC;IACvD,OAAO,IAAI,CAACZ,YAAY,EAAE;EAC5B;;EAEA;AACF;EACEe,oBAAoB,CAACJ,QAAgB,EAAEC,QAAgB,EAAgB;IACrE,OAAO,IAAI,CAACN,SAAS,CAAC,IAAI,CAAC,CAACmB,IAAI,CAAC,MAAM;MACrC,IAAI,IAAI,CAAC1B,qBAAqB,EAAE;QAC9B,OAAO,IAAI,CAACe,qBAAqB,CAACH,QAAQ,EAAEC,QAAQ,CAAC;MACvD;MACA,OAAO,IAAI,CAACC,WAAW,CAACF,QAAQ,EAAEC,QAAQ,CAAC;IAC7C,CAAC,CAAC;EACJ;;EAEA;AACF;EACEc,MAAM,GAAiB;IACrB,OAAO1C,cAAc,CAAC;MACpBiB,GAAG,EAAG,GAAET,WAAW,EAAG,GAAED,UAAU,EAAG;IACvC,CAAC,CAAC,CAACkC,IAAI,CAAEE,QAAQ,IAAK;MACpB;MACA1C,KAAK,CAAC2C,KAAK,EAAE;MACb,OAAOD,QAAQ;IACjB,CAAC,CAAC;EACJ;AACF;AAEA,eAAelC,YAAY"}
1
+ {"version":3,"file":"Authenticate.js","names":["HTTP_METHODS","universalFetch","Cache","UnauthorizedException","INTERNAL_LOGIN_TYPE","loginType","loginPath","loginPasswordField","loginUsernameField","logoutPath","getBasePath","Authenticate","constructor","_isBasic","authenticationType","type","JAAS","PAC4J_FORM","PAC4J_BASIC","Error","isBasicAuthentication","requestLogin","url","method","GET","headers","Accept","initLogin","resolve","catch","error","login","username","password","doFormLogin","doBasicAuthentication","doJaasAuthentication","getFormLoginUrl","getFormLoginData","encodedUsername","encodeURIComponent","encodedPassword","POST","data","addItem","btoa","then","getLogoutUrl","logout","response","clear"],"sources":["../../src/modularui/Authenticate.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS } from \"../constants/Constants\";\n\nimport universalFetch from \"../utils/fetch/universalFetch\";\nimport Cache from \"../utils/browser/Cache\";\n\nimport { UnauthorizedException } from \"../exceptions\";\nimport {\n INTERNAL_LOGIN_TYPE,\n loginType,\n loginPath,\n loginPasswordField,\n loginUsernameField,\n logoutPath,\n getBasePath,\n} from \"../constants\";\n\n/**\n */\nclass Authenticate {\n _isBasic: boolean;\n\n /**\n */\n constructor() {\n this._isBasic = false;\n }\n\n /**\n */\n get authenticationType(): $Keys<typeof INTERNAL_LOGIN_TYPE> {\n const type = loginType();\n\n if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {\n return INTERNAL_LOGIN_TYPE.JAAS;\n }\n\n if (type.includes(\"FormClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_FORM;\n } else if (type.includes(\"BasicClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_BASIC;\n }\n\n throw new Error(`Unsupported login type found: ${type}`);\n }\n\n /**\n */\n get isBasicAuthentication(): boolean {\n return (\n this._isBasic ||\n this.authenticationType === INTERNAL_LOGIN_TYPE.PAC4J_BASIC\n );\n }\n\n /**\n */\n set isBasicAuthentication(isBasicAuthentication: boolean) {\n this._isBasic = isBasicAuthentication;\n }\n\n /**\n */\n requestLogin(): Promise<any> {\n return universalFetch({\n url: `${getBasePath()}/login`,\n method: HTTP_METHODS.GET,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n }\n\n /**\n */\n initLogin(initLogin: boolean): Promise<any> {\n if (this.isBasicAuthentication || !initLogin) {\n return Promise.resolve(true);\n }\n\n return this.requestLogin().catch((error) => {\n // when an unauthorizedexception is received on a request to the login service,\n // this indicates a basic authorization scenario\n // in case of form based authentication other exceptions are thrown\n if (error instanceof UnauthorizedException) {\n this.isBasicAuthentication = true;\n }\n\n return Promise.resolve({});\n });\n }\n\n /**\n */\n login(username: string, password: string): Promise<any> {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return this.doFormLogin(username, password);\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n return this.doBasicAuthentication(username, password);\n default:\n return this.doJaasAuthentication(username, password);\n }\n }\n\n /**\n */\n getFormLoginUrl(): string {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${getBasePath()}${loginPath()}`;\n default:\n return `${getBasePath()}/j_security_check`;\n }\n }\n\n /**\n */\n getFormLoginData(username: string, password: string): string {\n const encodedUsername = encodeURIComponent(username);\n const encodedPassword = encodeURIComponent(password);\n\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${loginUsernameField()}=${encodedUsername}&${loginPasswordField()}=${encodedPassword}`;\n default:\n return `j_username=${encodedUsername}&j_password=${encodedPassword}`;\n }\n }\n\n /**\n */\n doFormLogin(username: string, password: string): Promise<any> {\n return universalFetch({\n url: this.getFormLoginUrl(),\n method: HTTP_METHODS.POST,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n data: this.getFormLoginData(username, password),\n });\n }\n\n /**\n */\n doBasicAuthentication(username: string, password: string): Promise<any> {\n Cache.addItem(\"basic\", btoa(`${username}:${password}`));\n return this.requestLogin();\n }\n\n /**\n */\n doJaasAuthentication(username: string, password: string): Promise<any> {\n return this.initLogin(true).then(() => {\n if (this.isBasicAuthentication) {\n return this.doBasicAuthentication(username, password);\n }\n return this.doFormLogin(username, password);\n });\n }\n\n /**\n */\n getLogoutUrl(): string {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${getBasePath()}${logoutPath()}`;\n default:\n return `${getBasePath()}/Logoff`;\n }\n }\n\n /**\n */\n logout(): Promise<any> {\n return universalFetch({\n url: this.getLogoutUrl(),\n }).then((response) => {\n // clear cache because of cached contributions\n Cache.clear();\n return response;\n });\n }\n}\n\nexport default Authenticate;\n"],"mappings":"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"}
@@ -2,9 +2,12 @@ import styled from "styled-components";
2
2
  import { spacers, spacer } from "../react-theme/utils/spacers";
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { jsxs as _jsxs } from "react/jsx-runtime";
5
+ // $FlowFixMe
5
6
  const StyledBoundary = /*#__PURE__*/styled.div.withConfig({
6
7
  componentId: "sc-xsbtpo-0"
7
8
  })(["padding:", ";margin-bottom:", ";background-color:#e9ecef;border-radius:0.3em;"], spacers(2, 1), spacer(2));
9
+
10
+ // $FlowFixMe
8
11
  const StyledStack = /*#__PURE__*/styled.pre.withConfig({
9
12
  componentId: "sc-xsbtpo-1"
10
13
  })(["display:block;font-size:87.5%;color:#212529;font-style:italic;"]);
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundaryFallback.js","names":["styled","spacers","spacer","StyledBoundary","div","StyledStack","pre","ErrorBoundaryFallback","className","componentStack","error","toString","displayName"],"sources":["../../src/react/ErrorBoundaryFallback.js"],"sourcesContent":["// @flow\nimport styled from \"styled-components\";\nimport { spacers, spacer } from \"../react-theme/utils/spacers\";\n\nimport type { StyledComponent } from \"styled-components\";\nimport type { Theme } from \"../react-theme/types\";\nimport type { Node } from \"react\";\n\nexport type Props = {\n +className?: string,\n +componentStack: string,\n +error: Error,\n};\n\nconst StyledBoundary: StyledComponent<{}, Theme, *> = styled.div`\n padding: ${spacers(2, 1)};\n margin-bottom: ${spacer(2)};\n background-color: #e9ecef;\n border-radius: 0.3em;\n`;\n\nconst StyledStack = styled.pre`\n display: block;\n font-size: 87.5%;\n color: #212529;\n font-style: italic;\n`;\n\n/**\n */\nconst ErrorBoundaryFallback = ({\n className,\n componentStack,\n error,\n}: Props): Node => (\n <StyledBoundary className={className}>\n <h2>{error.toString()}</h2>\n <StyledStack className=\"debug\">{componentStack}</StyledStack>\n </StyledBoundary>\n);\n\nErrorBoundaryFallback.displayName = \"BI.ErrorBoundaryFallback\";\n\nexport default ErrorBoundaryFallback;\n"],"mappings":"AACA,OAAOA,MAAM,MAAM,mBAAmB;AACtC,SAASC,OAAO,EAAEC,MAAM,QAAQ,8BAA8B;AAAC;AAAA;AAY/D,MAAMC,cAA6C,gBAAGH,MAAM,CAACI,GAAG;EAAA;AAAA,sFACnDH,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACPC,MAAM,CAAC,CAAC,CAAC,CAG3B;AAED,MAAMG,WAAW,gBAAGL,MAAM,CAACM,GAAG;EAAA;AAAA,sEAK7B;;AAED;AACA;AACA,MAAMC,qBAAqB,GAAG;EAAA,IAAC;IAC7BC,SAAS;IACTC,cAAc;IACdC;EACK,CAAC;EAAA,oBACN,MAAC,cAAc;IAAC,SAAS,EAAEF,SAAU;IAAA,wBACnC;MAAA,UAAKE,KAAK,CAACC,QAAQ;IAAE,EAAM,eAC3B,KAAC,WAAW;MAAC,SAAS,EAAC,OAAO;MAAA,UAAEF;IAAc,EAAe;EAAA,EAC9C;AAAA,CAClB;AAEDF,qBAAqB,CAACK,WAAW,GAAG,0BAA0B;AAE9D,eAAeL,qBAAqB"}
1
+ {"version":3,"file":"ErrorBoundaryFallback.js","names":["styled","spacers","spacer","StyledBoundary","div","StyledStack","pre","ErrorBoundaryFallback","className","componentStack","error","toString","displayName"],"sources":["../../src/react/ErrorBoundaryFallback.js"],"sourcesContent":["// @flow\nimport styled from \"styled-components\";\nimport { spacers, spacer } from \"../react-theme/utils/spacers\";\n\nimport type { StyledComponent } from \"styled-components\";\nimport type { Theme } from \"../react-theme/types\";\nimport type { Node } from \"react\";\n\nexport type Props = {\n +className?: string,\n +componentStack: string,\n +error: Error,\n};\n\n// $FlowFixMe\nconst StyledBoundary: StyledComponent<{}, Theme, *> = styled.div`\n padding: ${spacers(2, 1)};\n margin-bottom: ${spacer(2)};\n background-color: #e9ecef;\n border-radius: 0.3em;\n`;\n\n// $FlowFixMe\nconst StyledStack = styled.pre`\n display: block;\n font-size: 87.5%;\n color: #212529;\n font-style: italic;\n`;\n\n/**\n */\nconst ErrorBoundaryFallback = ({\n className,\n componentStack,\n error,\n}: Props): Node => (\n <StyledBoundary className={className}>\n <h2>{error.toString()}</h2>\n <StyledStack className=\"debug\">{componentStack}</StyledStack>\n </StyledBoundary>\n);\n\nErrorBoundaryFallback.displayName = \"BI.ErrorBoundaryFallback\";\n\nexport default ErrorBoundaryFallback;\n"],"mappings":"AACA,OAAOA,MAAM,MAAM,mBAAmB;AACtC,SAASC,OAAO,EAAEC,MAAM,QAAQ,8BAA8B;AAAC;AAAA;AAY/D;AACA,MAAMC,cAA6C,gBAAGH,MAAM,CAACI,GAAG;EAAA;AAAA,sFACnDH,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACPC,MAAM,CAAC,CAAC,CAAC,CAG3B;;AAED;AACA,MAAMG,WAAW,gBAAGL,MAAM,CAACM,GAAG;EAAA;AAAA,sEAK7B;;AAED;AACA;AACA,MAAMC,qBAAqB,GAAG;EAAA,IAAC;IAC7BC,SAAS;IACTC,cAAc;IACdC;EACK,CAAC;EAAA,oBACN,MAAC,cAAc;IAAC,SAAS,EAAEF,SAAU;IAAA,wBACnC;MAAA,UAAKE,KAAK,CAACC,QAAQ;IAAE,EAAM,eAC3B,KAAC,WAAW;MAAC,SAAS,EAAC,OAAO;MAAA,UAAEF;IAAc,EAAe;EAAA,EAC9C;AAAA,CAClB;AAEDF,qBAAqB,CAACK,WAAW,GAAG,0BAA0B;AAE9D,eAAeL,qBAAqB"}
@@ -127,6 +127,7 @@ const setApplication = store => {
127
127
  const application = new ModularUIRequest("/", {
128
128
  locale: locale
129
129
  }).fetchSync();
130
+ application.connectKey = `application(/)(${locale})`;
130
131
  store.dispatch(initModels([{
131
132
  key: `application(/)(${locale})`,
132
133
  model: application
@@ -1 +1 @@
1
- {"version":3,"file":"serverUtil.js","names":["createMemoryHistory","has","deepmerge","configureStore","availableLocales","Locales","getPreferredLocale","setLocales","setServerPreference","setThemePreference","setPreference","setAllContentInDataSetting","setLoginPreferences","getSetting","IllegalArgumentException","initModels","getLocale","ModularUIRequest","createReduxStore","requestHref","customReducers","initialState","history","initialEntries","toString","store","setI18n","locales","request","Array","isArray","mergedLocales","locale","code","customLocale","custLocale","forEach","some","push","enabledLocales","localesInstance","preferredLocale","dispatch","setServerPreferencesFromArray","serverPreferences","serverPreference","name","defaultValue","type","setServerPreferences","preferencesProvider","isStudioContext","setConfigurationTheme","configTheme","configFileLocation","getLayoutConfigFileLocation","configFilePath","dataFetcher","fetch","Error","setApplication","getState","application","fetchSync","key","model","e","console","info","handleErrors","state","error","shouldThrowOnServer","dehydrate","modularui","status","lastModification","undefined","filteredState","replace","createHead","sheet","UUID","helmetContext","style","getStyleTags","meta","helmet"],"sources":["../../src/react-server/serverUtil.js"],"sourcesContent":["// @flow\nimport { createMemoryHistory } from \"history\";\nimport { has } from \"../utils/helpers/objects\";\nimport deepmerge from \"deepmerge\";\n\nimport configureStore from \"../redux/store/configureStore\";\n\nimport { availableLocales } from \"../i18n/Locales\";\nimport Locales from \"../i18n/Locales\";\n\nimport { getPreferredLocale } from \"./requestInformation\";\nimport { setLocales } from \"../redux/_i18n/I18nActions\";\n\nimport {\n setServerPreference,\n setThemePreference,\n setPreference,\n setAllContentInDataSetting,\n setLoginPreferences,\n} from \"../redux/actions/Preferences\";\n\nimport { getSetting } from \"../constants/Settings\";\n\nimport { IllegalArgumentException } from \"../exceptions\";\n\nimport { initModels } from \"../redux\";\nimport { getLocale } from \"../redux/selectors/i18n\";\n\nimport ModularUIRequest from \"../modularui/ModularUIRequest\";\n\nimport type { LocaleConfiguration } from \"../i18n/types\";\nimport type { ReduxState, ReduxStore } from \"../redux/types\";\nimport type Href from \"../models/href/Href\";\nimport type { RouterHistory } from \"react-router\";\n\nexport type PreferenceValue = {\n name: string,\n defaultValue?: string | null,\n type?: string,\n};\n\n/**\n */\nconst createReduxStore = (\n requestHref: Href,\n customReducers: Object,\n initialState?: $Shape<ReduxState>\n): ReduxStore => {\n // $FlowExpectedError\n const history: RouterHistory = createMemoryHistory({\n initialEntries: [requestHref.toString()],\n });\n\n const { store } = configureStore(history, customReducers, initialState);\n\n return store;\n};\n\n/**\n */\nconst setI18n = (\n store: ReduxStore,\n locales: Array<LocaleConfiguration> = [],\n request: HttpServletRequestJava\n) => {\n if (!Array.isArray(locales)) {\n throw new IllegalArgumentException(\"locales must be an array of objects\");\n }\n if (!request) {\n throw new IllegalArgumentException(\"missing request argument\");\n }\n\n const mergedLocales = availableLocales.map((locale) => {\n const code = locale.code;\n const customLocale = locales.find((custLocale) => custLocale.code === code);\n\n if (customLocale) {\n return deepmerge(locale, customLocale);\n }\n\n return locale;\n });\n\n locales.forEach((customLocale) => {\n if (!mergedLocales.some((locale) => locale.code === customLocale.code)) {\n mergedLocales.push(customLocale);\n }\n });\n\n const enabledLocales = mergedLocales.filter((locale: LocaleConfiguration) =>\n getSetting(\"ENABLED_LOCALES\").includes(locale.code)\n );\n\n const localesInstance = new Locales(enabledLocales);\n const preferredLocale = getPreferredLocale(request, localesInstance);\n store.dispatch(setLocales(localesInstance, preferredLocale ?? \"en\"));\n};\n\nconst setServerPreferencesFromArray = (\n store: ReduxStore,\n serverPreferences: Array<string | PreferenceValue>\n) => {\n serverPreferences.forEach((serverPreference) => {\n if (typeof serverPreference === \"object\") {\n const { name, defaultValue, type } = serverPreference;\n store.dispatch(setServerPreference(name, defaultValue, type));\n } else {\n store.dispatch(setServerPreference(serverPreference, null));\n }\n });\n};\n\n/**\n * Server preferences can be suplied by an array of preference names,\n * or an array of objects which has the name, an optional default value and an optional type.<br>\n * When the type is set to string, a comma separated value is not converted to an array:\n *\n * @example\n * // value becomes an array [default1, default2]\n * { name: \"prefName\", defaultValue: \"default1, default2\" }\n * // value remains a string \"default1, default2\"\n * { name: \"prefName\", defaultValue: \"default1, default2\", type: \"string\" }\n *\n * @param store\n * @param serverPreferences\n */\nconst setServerPreferences = (\n store: ReduxStore,\n serverPreferences: Array<string | PreferenceValue>\n) => {\n if (Array.isArray(serverPreferences)) {\n setServerPreferencesFromArray(store, serverPreferences);\n }\n\n store.dispatch(setAllContentInDataSetting());\n store.dispatch(setLoginPreferences());\n\n if (\n preferencesProvider &&\n preferencesProvider.isStudioContext &&\n preferencesProvider.isStudioContext()\n ) {\n store.dispatch(setPreference(\"isStudioContext\", true));\n }\n};\n\n/**\n */\nconst setConfigurationTheme = (store: ReduxStore) => {\n let configTheme = null;\n\n const configFileLocation = preferencesProvider.getLayoutConfigFileLocation();\n if (typeof configFileLocation === \"string\") {\n const configFilePath = configFileLocation.startsWith(\"/\")\n ? `/resource${configFileLocation}`\n : `/resource/${configFileLocation}`;\n\n configTheme = dataFetcher.fetch(configFilePath);\n\n if (configTheme) {\n store.dispatch(setThemePreference(configTheme));\n } else {\n throw new Error(\n `Could not read theme configuration file from: ${configFilePath}`\n );\n }\n }\n};\n\n/**\n */\nconst setApplication = (store: ReduxStore) => {\n try {\n const locale = getLocale(store.getState());\n const application = new ModularUIRequest(\"/\", {\n locale: locale,\n }).fetchSync();\n\n store.dispatch(\n initModels([\n {\n key: `application(/)(${locale})`,\n model: application,\n },\n ])\n );\n } catch (e) {\n // eslint-disable-next-line no-console\n console.info(\"Could not load webapplication on server\");\n }\n};\n\n/**\n */\nconst handleErrors = (store: ReduxStore) => {\n const state = store.getState();\n\n if (\n state.error &&\n (state.error.shouldThrowOnServer ||\n !has(state.error, \"shouldThrowOnServer\"))\n ) {\n throw state.error;\n }\n};\n\n/**\n */\nconst dehydrate = (store: ReduxStore): string => {\n const state = store.getState();\n\n const modularui: {\n [key: string]: { status: string, lastModification: number, model: ?Object },\n } = {};\n\n for (const key in state.modularui) {\n const { status, model, lastModification } = state.modularui[key];\n\n if (model) {\n modularui[key] = {\n status,\n lastModification,\n model: model.dehydrate(),\n };\n } else {\n modularui[key] = {\n status,\n lastModification,\n model: undefined,\n };\n }\n }\n\n const filteredState = {\n ...state,\n modularui,\n };\n\n return JSON.stringify(filteredState).replace(/</g, \"\\\\u003c\");\n};\n\n/**\n */\nconst createHead = (\n sheet: any,\n UUID: string,\n helmetContext?: Object\n): Object => {\n const style = sheet.getStyleTags();\n const meta = helmetContext ? [...helmetContext.helmet.meta] : [];\n\n if (helmetContext) {\n return {\n ...helmetContext.helmet,\n style,\n meta,\n };\n }\n\n return {\n style,\n meta,\n };\n};\n\nexport {\n createReduxStore,\n setI18n,\n setApplication,\n setServerPreferences,\n setConfigurationTheme,\n createHead,\n handleErrors,\n dehydrate,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"serverUtil.js","names":["createMemoryHistory","has","deepmerge","configureStore","availableLocales","Locales","getPreferredLocale","setLocales","setServerPreference","setThemePreference","setPreference","setAllContentInDataSetting","setLoginPreferences","getSetting","IllegalArgumentException","initModels","getLocale","ModularUIRequest","createReduxStore","requestHref","customReducers","initialState","history","initialEntries","toString","store","setI18n","locales","request","Array","isArray","mergedLocales","locale","code","customLocale","custLocale","forEach","some","push","enabledLocales","localesInstance","preferredLocale","dispatch","setServerPreferencesFromArray","serverPreferences","serverPreference","name","defaultValue","type","setServerPreferences","preferencesProvider","isStudioContext","setConfigurationTheme","configTheme","configFileLocation","getLayoutConfigFileLocation","configFilePath","dataFetcher","fetch","Error","setApplication","getState","application","fetchSync","connectKey","key","model","e","console","info","handleErrors","state","error","shouldThrowOnServer","dehydrate","modularui","status","lastModification","undefined","filteredState","replace","createHead","sheet","UUID","helmetContext","style","getStyleTags","meta","helmet"],"sources":["../../src/react-server/serverUtil.js"],"sourcesContent":["// @flow\nimport { createMemoryHistory } from \"history\";\nimport { has } from \"../utils/helpers/objects\";\nimport deepmerge from \"deepmerge\";\n\nimport configureStore from \"../redux/store/configureStore\";\n\nimport { availableLocales } from \"../i18n/Locales\";\nimport Locales from \"../i18n/Locales\";\n\nimport { getPreferredLocale } from \"./requestInformation\";\nimport { setLocales } from \"../redux/_i18n/I18nActions\";\n\nimport {\n setServerPreference,\n setThemePreference,\n setPreference,\n setAllContentInDataSetting,\n setLoginPreferences,\n} from \"../redux/actions/Preferences\";\n\nimport { getSetting } from \"../constants/Settings\";\n\nimport { IllegalArgumentException } from \"../exceptions\";\n\nimport { initModels } from \"../redux\";\nimport { getLocale } from \"../redux/selectors/i18n\";\n\nimport ModularUIRequest from \"../modularui/ModularUIRequest\";\n\nimport type { LocaleConfiguration } from \"../i18n/types\";\nimport type { ReduxState, ReduxStore } from \"../redux/types\";\nimport type Href from \"../models/href/Href\";\nimport type { RouterHistory } from \"react-router\";\n\nexport type PreferenceValue = {\n name: string,\n defaultValue?: string | null,\n type?: string,\n};\n\n/**\n */\nconst createReduxStore = (\n requestHref: Href,\n customReducers: Object,\n initialState?: $Shape<ReduxState>\n): ReduxStore => {\n // $FlowExpectedError\n const history: RouterHistory = createMemoryHistory({\n initialEntries: [requestHref.toString()],\n });\n\n const { store } = configureStore(history, customReducers, initialState);\n\n return store;\n};\n\n/**\n */\nconst setI18n = (\n store: ReduxStore,\n locales: Array<LocaleConfiguration> = [],\n request: HttpServletRequestJava\n) => {\n if (!Array.isArray(locales)) {\n throw new IllegalArgumentException(\"locales must be an array of objects\");\n }\n if (!request) {\n throw new IllegalArgumentException(\"missing request argument\");\n }\n\n const mergedLocales = availableLocales.map((locale) => {\n const code = locale.code;\n const customLocale = locales.find((custLocale) => custLocale.code === code);\n\n if (customLocale) {\n return deepmerge(locale, customLocale);\n }\n\n return locale;\n });\n\n locales.forEach((customLocale) => {\n if (!mergedLocales.some((locale) => locale.code === customLocale.code)) {\n mergedLocales.push(customLocale);\n }\n });\n\n const enabledLocales = mergedLocales.filter((locale: LocaleConfiguration) =>\n getSetting(\"ENABLED_LOCALES\").includes(locale.code)\n );\n\n const localesInstance = new Locales(enabledLocales);\n const preferredLocale = getPreferredLocale(request, localesInstance);\n store.dispatch(setLocales(localesInstance, preferredLocale ?? \"en\"));\n};\n\nconst setServerPreferencesFromArray = (\n store: ReduxStore,\n serverPreferences: Array<string | PreferenceValue>\n) => {\n serverPreferences.forEach((serverPreference) => {\n if (typeof serverPreference === \"object\") {\n const { name, defaultValue, type } = serverPreference;\n store.dispatch(setServerPreference(name, defaultValue, type));\n } else {\n store.dispatch(setServerPreference(serverPreference, null));\n }\n });\n};\n\n/**\n * Server preferences can be suplied by an array of preference names,\n * or an array of objects which has the name, an optional default value and an optional type.<br>\n * When the type is set to string, a comma separated value is not converted to an array:\n *\n * @example\n * // value becomes an array [default1, default2]\n * { name: \"prefName\", defaultValue: \"default1, default2\" }\n * // value remains a string \"default1, default2\"\n * { name: \"prefName\", defaultValue: \"default1, default2\", type: \"string\" }\n *\n * @param store\n * @param serverPreferences\n */\nconst setServerPreferences = (\n store: ReduxStore,\n serverPreferences: Array<string | PreferenceValue>\n) => {\n if (Array.isArray(serverPreferences)) {\n setServerPreferencesFromArray(store, serverPreferences);\n }\n\n store.dispatch(setAllContentInDataSetting());\n store.dispatch(setLoginPreferences());\n\n if (\n preferencesProvider &&\n preferencesProvider.isStudioContext &&\n preferencesProvider.isStudioContext()\n ) {\n store.dispatch(setPreference(\"isStudioContext\", true));\n }\n};\n\n/**\n */\nconst setConfigurationTheme = (store: ReduxStore) => {\n let configTheme = null;\n\n const configFileLocation = preferencesProvider.getLayoutConfigFileLocation();\n if (typeof configFileLocation === \"string\") {\n const configFilePath = configFileLocation.startsWith(\"/\")\n ? `/resource${configFileLocation}`\n : `/resource/${configFileLocation}`;\n\n configTheme = dataFetcher.fetch(configFilePath);\n\n if (configTheme) {\n store.dispatch(setThemePreference(configTheme));\n } else {\n throw new Error(\n `Could not read theme configuration file from: ${configFilePath}`\n );\n }\n }\n};\n\n/**\n */\nconst setApplication = (store: ReduxStore) => {\n try {\n const locale = getLocale(store.getState());\n const application = new ModularUIRequest(\"/\", {\n locale: locale,\n }).fetchSync();\n\n application.connectKey = `application(/)(${locale})`;\n\n store.dispatch(\n initModels([\n {\n key: `application(/)(${locale})`,\n model: application,\n },\n ])\n );\n } catch (e) {\n // eslint-disable-next-line no-console\n console.info(\"Could not load webapplication on server\");\n }\n};\n\n/**\n */\nconst handleErrors = (store: ReduxStore) => {\n const state = store.getState();\n\n if (\n state.error &&\n (state.error.shouldThrowOnServer ||\n !has(state.error, \"shouldThrowOnServer\"))\n ) {\n throw state.error;\n }\n};\n\n/**\n */\nconst dehydrate = (store: ReduxStore): string => {\n const state = store.getState();\n\n const modularui: {\n [key: string]: { status: string, lastModification: number, model: ?Object },\n } = {};\n\n for (const key in state.modularui) {\n const { status, model, lastModification } = state.modularui[key];\n\n if (model) {\n modularui[key] = {\n status,\n lastModification,\n model: model.dehydrate(),\n };\n } else {\n modularui[key] = {\n status,\n lastModification,\n model: undefined,\n };\n }\n }\n\n const filteredState = {\n ...state,\n modularui,\n };\n\n return JSON.stringify(filteredState).replace(/</g, \"\\\\u003c\");\n};\n\n/**\n */\nconst createHead = (\n sheet: any,\n UUID: string,\n helmetContext?: Object\n): Object => {\n const style = sheet.getStyleTags();\n const meta = helmetContext ? [...helmetContext.helmet.meta] : [];\n\n if (helmetContext) {\n return {\n ...helmetContext.helmet,\n style,\n meta,\n };\n }\n\n return {\n style,\n meta,\n };\n};\n\nexport {\n createReduxStore,\n setI18n,\n setApplication,\n setServerPreferences,\n setConfigurationTheme,\n createHead,\n handleErrors,\n dehydrate,\n};\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ import FormModel from "../../models/form/FormModel";
10
10
  const updateValidations = (form, formWithValidations) => (dispatch, getState) => {
11
11
  const currentForm = getState().modularui[form.connectKey];
12
12
  if (currentForm) {
13
- const validatedForm = currentForm.model.clone(true);
13
+ const validatedForm = currentForm.model.clone();
14
14
  if (validatedForm instanceof FormModel) {
15
15
  validatedForm.updateValidations(formWithValidations.data);
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FormValidations.js","names":["debounce","updateModel","ModularUIRequest","HTTP_METHODS","VALIDATE_DEBOUNCE_TIMEOUT","FormModel","updateValidations","form","formWithValidations","dispatch","getState","currentForm","modularui","connectKey","validatedForm","model","clone","data","debouncedValidateFormObject","selfhref","setParameter","method","POST","validationData","childmodels","isValidationRequest","locale","fetch","then","leading","trailing","validateFormObject"],"sources":["../../../src/redux/actions/FormValidations.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport { updateModel } from \"../_modularui/ModularUIActions\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n} from \"../../constants/Constants\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\nimport type { ModularUIModel } from \"../../models\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateValidations =\n (form: FormModel, formWithValidations: ModularUIModel) =>\n (dispatch: Dispatch, getState: GetState) => {\n const currentForm = getState().modularui[form.connectKey];\n\n if (currentForm) {\n const validatedForm = currentForm.model.clone(true);\n if (validatedForm instanceof FormModel) {\n validatedForm.updateValidations(formWithValidations.data);\n }\n\n dispatch(updateModel(validatedForm));\n }\n };\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedValidateFormObject = debounce<\n (dispatch: Dispatch, form: FormModel) => void\n>(\n (dispatch, form: FormModel) => {\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"false\"), {\n method: HTTP_METHODS.POST,\n data: form.validationData,\n childmodels: false,\n isValidationRequest: true,\n locale: form.locale,\n })\n .fetch()\n .then((formWithValidations) =>\n dispatch(updateValidations(form, formWithValidations))\n );\n },\n VALIDATE_DEBOUNCE_TIMEOUT,\n {\n leading: true,\n trailing: true,\n }\n);\n\n/**\n */\nexport const validateFormObject =\n (form: FormModel): ThunkAction =>\n (dispatch) =>\n debouncedValidateFormObject(dispatch, form);\n"],"mappings":"AACA,OAAOA,QAAQ,MAAM,iBAAiB;AAEtC,SAASC,WAAW,QAAQ,gCAAgC;AAE5D,OAAOC,gBAAgB,MAAM,kCAAkC;AAE/D,SACEC,YAAY,EACZC,yBAAyB,QACpB,2BAA2B;AAElC,OAAOC,SAAS,MAAM,6BAA6B;AAKnD;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GACrB,CAACC,IAAe,EAAEC,mBAAmC,KACrD,CAACC,QAAkB,EAAEC,QAAkB,KAAK;EAC1C,MAAMC,WAAW,GAAGD,QAAQ,EAAE,CAACE,SAAS,CAACL,IAAI,CAACM,UAAU,CAAC;EAEzD,IAAIF,WAAW,EAAE;IACf,MAAMG,aAAa,GAAGH,WAAW,CAACI,KAAK,CAACC,KAAK,CAAC,IAAI,CAAC;IACnD,IAAIF,aAAa,YAAYT,SAAS,EAAE;MACtCS,aAAa,CAACR,iBAAiB,CAACE,mBAAmB,CAACS,IAAI,CAAC;IAC3D;IAEAR,QAAQ,CAACR,WAAW,CAACa,aAAa,CAAC,CAAC;EACtC;AACF,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,2BAA2B,GAAGlB,QAAQ,CAG1C,CAACS,QAAQ,EAAEF,IAAe,KAAK;EAC7B,IAAIL,gBAAgB,CAACK,IAAI,CAACY,QAAQ,CAACC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;IAClEC,MAAM,EAAElB,YAAY,CAACmB,IAAI;IACzBL,IAAI,EAAEV,IAAI,CAACgB,cAAc;IACzBC,WAAW,EAAE,KAAK;IAClBC,mBAAmB,EAAE,IAAI;IACzBC,MAAM,EAAEnB,IAAI,CAACmB;EACf,CAAC,CAAC,CACCC,KAAK,EAAE,CACPC,IAAI,CAAEpB,mBAAmB,IACxBC,QAAQ,CAACH,iBAAiB,CAACC,IAAI,EAAEC,mBAAmB,CAAC,CAAC,CACvD;AACL,CAAC,EACDJ,yBAAyB,EACzB;EACEyB,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE;AACZ,CAAC,CACF;;AAED;AACA;AACA,OAAO,MAAMC,kBAAkB,GAC5BxB,IAAe,IACfE,QAAQ,IACPS,2BAA2B,CAACT,QAAQ,EAAEF,IAAI,CAAC"}
1
+ {"version":3,"file":"FormValidations.js","names":["debounce","updateModel","ModularUIRequest","HTTP_METHODS","VALIDATE_DEBOUNCE_TIMEOUT","FormModel","updateValidations","form","formWithValidations","dispatch","getState","currentForm","modularui","connectKey","validatedForm","model","clone","data","debouncedValidateFormObject","selfhref","setParameter","method","POST","validationData","childmodels","isValidationRequest","locale","fetch","then","leading","trailing","validateFormObject"],"sources":["../../../src/redux/actions/FormValidations.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport { updateModel } from \"../_modularui/ModularUIActions\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n} from \"../../constants/Constants\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\nimport type { ModularUIModel } from \"../../models\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateValidations =\n (form: FormModel, formWithValidations: ModularUIModel) =>\n (dispatch: Dispatch, getState: GetState) => {\n const currentForm = getState().modularui[form.connectKey];\n\n if (currentForm) {\n const validatedForm = currentForm.model.clone();\n if (validatedForm instanceof FormModel) {\n validatedForm.updateValidations(formWithValidations.data);\n }\n\n dispatch(updateModel(validatedForm));\n }\n };\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedValidateFormObject = debounce<\n (dispatch: Dispatch, form: FormModel) => void\n>(\n (dispatch, form: FormModel) => {\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"false\"), {\n method: HTTP_METHODS.POST,\n data: form.validationData,\n childmodels: false,\n isValidationRequest: true,\n locale: form.locale,\n })\n .fetch()\n .then((formWithValidations) =>\n dispatch(updateValidations(form, formWithValidations))\n );\n },\n VALIDATE_DEBOUNCE_TIMEOUT,\n {\n leading: true,\n trailing: true,\n }\n);\n\n/**\n */\nexport const validateFormObject =\n (form: FormModel): ThunkAction =>\n (dispatch) =>\n debouncedValidateFormObject(dispatch, form);\n"],"mappings":"AACA,OAAOA,QAAQ,MAAM,iBAAiB;AAEtC,SAASC,WAAW,QAAQ,gCAAgC;AAE5D,OAAOC,gBAAgB,MAAM,kCAAkC;AAE/D,SACEC,YAAY,EACZC,yBAAyB,QACpB,2BAA2B;AAElC,OAAOC,SAAS,MAAM,6BAA6B;AAKnD;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GACrB,CAACC,IAAe,EAAEC,mBAAmC,KACrD,CAACC,QAAkB,EAAEC,QAAkB,KAAK;EAC1C,MAAMC,WAAW,GAAGD,QAAQ,EAAE,CAACE,SAAS,CAACL,IAAI,CAACM,UAAU,CAAC;EAEzD,IAAIF,WAAW,EAAE;IACf,MAAMG,aAAa,GAAGH,WAAW,CAACI,KAAK,CAACC,KAAK,EAAE;IAC/C,IAAIF,aAAa,YAAYT,SAAS,EAAE;MACtCS,aAAa,CAACR,iBAAiB,CAACE,mBAAmB,CAACS,IAAI,CAAC;IAC3D;IAEAR,QAAQ,CAACR,WAAW,CAACa,aAAa,CAAC,CAAC;EACtC;AACF,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,2BAA2B,GAAGlB,QAAQ,CAG1C,CAACS,QAAQ,EAAEF,IAAe,KAAK;EAC7B,IAAIL,gBAAgB,CAACK,IAAI,CAACY,QAAQ,CAACC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;IAClEC,MAAM,EAAElB,YAAY,CAACmB,IAAI;IACzBL,IAAI,EAAEV,IAAI,CAACgB,cAAc;IACzBC,WAAW,EAAE,KAAK;IAClBC,mBAAmB,EAAE,IAAI;IACzBC,MAAM,EAAEnB,IAAI,CAACmB;EACf,CAAC,CAAC,CACCC,KAAK,EAAE,CACPC,IAAI,CAAEpB,mBAAmB,IACxBC,QAAQ,CAACH,iBAAiB,CAACC,IAAI,EAAEC,mBAAmB,CAAC,CAAC,CACvD;AACL,CAAC,EACDJ,yBAAyB,EACzB;EACEyB,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE;AACZ,CAAC,CACF;;AAED;AACA;AACA,OAAO,MAAMC,kBAAkB,GAC5BxB,IAAe,IACfE,QAAQ,IACPS,2BAA2B,CAACT,QAAQ,EAAEF,IAAI,CAAC"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.VALIDATE_DEBOUNCE_TIMEOUT = exports.USERPROFILE_PATH = exports.UPLOAD_PATH = exports.TIMEVERSION_FILTER_NAME = exports.RESOURCE_PATH = exports.PARAMETER_SEPARATOR = exports.NOTIFICATION_TYPES = exports.MODULARUI_STATUS = exports.LOGOUT_PATH_SETTING = exports.LOGIN_USERNAME_SETTING = exports.LOGIN_TYPE = exports.LOGIN_PATH_SETTING = exports.LOGIN_PASSWORD_SETTING = exports.KEYCODES = exports.IS_SYNC = exports.IS_SERVER = exports.ISO_TIME_FORMAT = exports.ISO_TIMESTAMP_FORMAT = exports.ISO_DATE_FORMAT = exports.ISO_DATETIME_FORMAT = exports.INPUT_DEBOUNCE_TIMEOUT = exports.HTTP_METHODS = exports.DEFAULT_WEEK_STARTS_ON = exports.DEFAULT_UI_PARAMETERS = exports.DEFAULT_FIRST_WEEK_CONTAINS_DATE = exports.DEFAULT_AUTHENTICATION_TYPE = exports.CONTENT_PATH = exports.CHANGEPASSWORD_PATH = exports.CAPTCHA_PATH = exports.AUTOSAVE_STATUS = exports.ATTRIBUTE_WIDTH = exports.ALL_CONTENT_IN_DATA_SETTING = void 0;
6
+ exports.VALIDATE_DEBOUNCE_TIMEOUT = exports.USERPROFILE_PATH = exports.UPLOAD_PATH = exports.TIMEVERSION_FILTER_NAME = exports.RESOURCE_PATH = exports.PARAMETER_SEPARATOR = exports.NOTIFICATION_TYPES = exports.MODULARUI_STATUS = exports.LOGOUT_PATH_SETTING = exports.LOGIN_USERNAME_SETTING = exports.LOGIN_TYPE = exports.LOGIN_PATH_SETTING = exports.LOGIN_PASSWORD_SETTING = exports.KEYCODES = exports.IS_SYNC = exports.IS_SERVER = exports.ISO_TIME_FORMAT = exports.ISO_TIMESTAMP_FORMAT = exports.ISO_DATE_FORMAT = exports.ISO_DATETIME_FORMAT = exports.INTERNAL_LOGIN_TYPE = exports.INPUT_DEBOUNCE_TIMEOUT = exports.HTTP_METHODS = exports.DEFAULT_WEEK_STARTS_ON = exports.DEFAULT_UI_PARAMETERS = exports.DEFAULT_FIRST_WEEK_CONTAINS_DATE = exports.DEFAULT_AUTHENTICATION_TYPE = exports.CONTENT_PATH = exports.CHANGEPASSWORD_PATH = exports.CAPTCHA_PATH = exports.AUTOSAVE_STATUS = exports.ATTRIBUTE_WIDTH = exports.ALL_CONTENT_IN_DATA_SETTING = void 0;
7
7
  /**
8
8
  * path to content service
9
9
  */
@@ -182,6 +182,12 @@ const ATTRIBUTE_WIDTH = {
182
182
  exports.ATTRIBUTE_WIDTH = ATTRIBUTE_WIDTH;
183
183
  const ALL_CONTENT_IN_DATA_SETTING = "hasAllContentInData";
184
184
  exports.ALL_CONTENT_IN_DATA_SETTING = ALL_CONTENT_IN_DATA_SETTING;
185
+ const INTERNAL_LOGIN_TYPE = {
186
+ JAAS: "JAAS",
187
+ PAC4J_FORM: "PAC4J_FORM",
188
+ PAC4J_BASIC: "PAC4J_BASIC"
189
+ };
190
+ exports.INTERNAL_LOGIN_TYPE = INTERNAL_LOGIN_TYPE;
185
191
  const LOGIN_TYPE = "security.clients";
186
192
  exports.LOGIN_TYPE = LOGIN_TYPE;
187
193
  const LOGIN_PATH_SETTING = "FormClient.login_url";
@@ -156,6 +156,11 @@ export const ATTRIBUTE_WIDTH = {
156
156
 
157
157
  export const ALL_CONTENT_IN_DATA_SETTING = "hasAllContentInData";
158
158
 
159
+ export const INTERNAL_LOGIN_TYPE = {
160
+ JAAS: "JAAS",
161
+ PAC4J_FORM: "PAC4J_FORM",
162
+ PAC4J_BASIC: "PAC4J_BASIC",
163
+ };
159
164
  export const LOGIN_TYPE = "security.clients";
160
165
  export const LOGIN_PATH_SETTING = "FormClient.login_url";
161
166
  export const LOGIN_USERNAME_SETTING = "FormClient.username_field_name";
@@ -1 +1 @@
1
- {"version":3,"file":"Constants.js","names":["CONTENT_PATH","UPLOAD_PATH","CAPTCHA_PATH","CHANGEPASSWORD_PATH","USERPROFILE_PATH","RESOURCE_PATH","PARAMETER_SEPARATOR","TIMEVERSION_FILTER_NAME","PARAMETER_OVERVIEW_VIEWTYPE","DEFAULT_UI_PARAMETERS","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","DEFAULT_WEEK_STARTS_ON","DEFAULT_FIRST_WEEK_CONTAINS_DATE","KEYCODES","TAB","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","IS_SYNC","dataFetcher","IS_SERVER","NOTIFICATION_TYPES","SUCCESS","INFO","WARNING","ERROR","HTTP_METHODS","GET","POST","MODULARUI_STATUS","LOADING","FINISHED","AUTOSAVE_STATUS","START","INPUT_DEBOUNCE_TIMEOUT","VALIDATE_DEBOUNCE_TIMEOUT","ATTRIBUTE_WIDTH","EXTRA_SMALL","SMALL","MEDIUM","LARGE","EXTRA_LARGE","ALL_CONTENT_IN_DATA_SETTING","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","DEFAULT_AUTHENTICATION_TYPE","name","authentication","isPrimary"],"sources":["../../src/constants/Constants.js"],"sourcesContent":["// @flow\n/**\n * path to content service\n */\nexport const CONTENT_PATH = `/content`;\n\n/**\n * Upload Path\n */\nexport const UPLOAD_PATH = `/uploadFile`;\n\n/**\n * Captcha Path\n */\nexport const CAPTCHA_PATH = `/captchaServices`;\n\n/**\n * Path to change password page / component\n */\nexport const CHANGEPASSWORD_PATH = \"/change-password\";\n\n/**\n * Path to user profile page / component\n */\nexport const USERPROFILE_PATH = \"/user\";\n\n/**\n * Path to resources in the Be Informed repository\n */\nexport const RESOURCE_PATH = \"/resource\";\n\n/**\n * Separator for parameters of a list, makes it possible to render multiple lists on a page in a non-js environment\n */\nexport const PARAMETER_SEPARATOR = \"~\";\n\n/**\n * Timeversion filter name\n */\nexport const TIMEVERSION_FILTER_NAME = \"entryDate\";\n\nconst PARAMETER_OVERVIEW_VIEWTYPE = \"viewType\";\n/**\n * Parameter name for the viewtype toggle\n */\nexport const DEFAULT_UI_PARAMETERS: Array<string> = [\n PARAMETER_OVERVIEW_VIEWTYPE,\n];\n\n/**\n */\nexport const ISO_DATE_FORMAT = \"yyyy-MM-dd\";\n/**\n */\nexport const ISO_DATETIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\n/**\n */\nexport const ISO_TIME_FORMAT = \"HH:mm:ss\";\n/**\n */\nexport const ISO_TIMESTAMP_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n/**\n * week starts on monday by default\n */\nexport const DEFAULT_WEEK_STARTS_ON = 1;\n\n/**\n * first week indicated by the 1st of january\n */\nexport const DEFAULT_FIRST_WEEK_CONTAINS_DATE = 1;\n\n/**\n * Key codes\n * @type {{SPACE: number, PAGE_DOWN: number, TAB: number, ARROW_RIGHT: number, ARROW_DOWN: number, ENTER: number, ARROW_UP: number, ARROW_LEFT: number, PAGE_UP: number, ESCAPE: number}}\n */\nexport const KEYCODES = {\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n};\n\n/**\n * @type {boolean}\n */\nexport const IS_SYNC = typeof dataFetcher !== \"undefined\";\n/**\n * @type {boolean}\n */\nexport const IS_SERVER = IS_SYNC;\n\n/**\n * @type {{SUCCESS: string, ERROR: string, INFO: string, WARNING: string}}\n */\nexport const NOTIFICATION_TYPES = {\n SUCCESS: \"SUCCESS\",\n INFO: \"INFO\",\n WARNING: \"WARNING\",\n ERROR: \"ERROR\",\n};\n\n/**\n * SUPPORTED HTTP METHODS\n * @type {{POST: string, GET: string}}\n */\nexport const HTTP_METHODS = {\n GET: \"GET\",\n POST: \"POST\",\n};\n\n/**\n * POSSIBLE MODULARUI STATUSSES\n * @type {{LOADING: string, ERROR: string, FINISHED: string}}\n */\nexport const MODULARUI_STATUS = {\n LOADING: \"LOADING\",\n FINISHED: \"FINISHED\",\n ERROR: \"ERROR\",\n};\n\n/**\n * POSSIBLE AUTOSAVE STATUSSES\n * @type {{START: string, FINISHED: string}}\n */\nexport const AUTOSAVE_STATUS = {\n START: \"START\",\n FINISHED: \"FINISHED\",\n};\n\n/**\n * DEBOUNCE INPUT TIMEOUT\n */\nexport const INPUT_DEBOUNCE_TIMEOUT = 100;\n\n/**\n * DEBOUNCE VALIDATION TIMEOUT\n */\nexport const VALIDATE_DEBOUNCE_TIMEOUT = 500;\n\n/**\n * ATTRIBUTE WIDTH\n */\nexport const ATTRIBUTE_WIDTH = {\n EXTRA_SMALL: \"EXTRA_SMALL\",\n SMALL: \"SMALL\",\n MEDIUM: \"MEDIUM\",\n LARGE: \"LARGE\",\n EXTRA_LARGE: \"EXTRA_LARGE\",\n};\n\nexport const ALL_CONTENT_IN_DATA_SETTING = \"hasAllContentInData\";\n\nexport const LOGIN_TYPE = \"security.clients\";\nexport const LOGIN_PATH_SETTING = \"FormClient.login_url\";\nexport const LOGIN_USERNAME_SETTING = \"FormClient.username_field_name\";\nexport const LOGIN_PASSWORD_SETTING = \"FormClient.password_field_name\";\nexport const LOGOUT_PATH_SETTING = \"FormClient.logout_url\";\n\nexport const DEFAULT_AUTHENTICATION_TYPE = {\n name: \"Form based authentication\",\n authentication: \"DefaultFormClient\",\n isPrimary: true,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Constants.js","names":["CONTENT_PATH","UPLOAD_PATH","CAPTCHA_PATH","CHANGEPASSWORD_PATH","USERPROFILE_PATH","RESOURCE_PATH","PARAMETER_SEPARATOR","TIMEVERSION_FILTER_NAME","PARAMETER_OVERVIEW_VIEWTYPE","DEFAULT_UI_PARAMETERS","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","DEFAULT_WEEK_STARTS_ON","DEFAULT_FIRST_WEEK_CONTAINS_DATE","KEYCODES","TAB","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","IS_SYNC","dataFetcher","IS_SERVER","NOTIFICATION_TYPES","SUCCESS","INFO","WARNING","ERROR","HTTP_METHODS","GET","POST","MODULARUI_STATUS","LOADING","FINISHED","AUTOSAVE_STATUS","START","INPUT_DEBOUNCE_TIMEOUT","VALIDATE_DEBOUNCE_TIMEOUT","ATTRIBUTE_WIDTH","EXTRA_SMALL","SMALL","MEDIUM","LARGE","EXTRA_LARGE","ALL_CONTENT_IN_DATA_SETTING","INTERNAL_LOGIN_TYPE","JAAS","PAC4J_FORM","PAC4J_BASIC","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","DEFAULT_AUTHENTICATION_TYPE","name","authentication","isPrimary"],"sources":["../../src/constants/Constants.js"],"sourcesContent":["// @flow\n/**\n * path to content service\n */\nexport const CONTENT_PATH = `/content`;\n\n/**\n * Upload Path\n */\nexport const UPLOAD_PATH = `/uploadFile`;\n\n/**\n * Captcha Path\n */\nexport const CAPTCHA_PATH = `/captchaServices`;\n\n/**\n * Path to change password page / component\n */\nexport const CHANGEPASSWORD_PATH = \"/change-password\";\n\n/**\n * Path to user profile page / component\n */\nexport const USERPROFILE_PATH = \"/user\";\n\n/**\n * Path to resources in the Be Informed repository\n */\nexport const RESOURCE_PATH = \"/resource\";\n\n/**\n * Separator for parameters of a list, makes it possible to render multiple lists on a page in a non-js environment\n */\nexport const PARAMETER_SEPARATOR = \"~\";\n\n/**\n * Timeversion filter name\n */\nexport const TIMEVERSION_FILTER_NAME = \"entryDate\";\n\nconst PARAMETER_OVERVIEW_VIEWTYPE = \"viewType\";\n/**\n * Parameter name for the viewtype toggle\n */\nexport const DEFAULT_UI_PARAMETERS: Array<string> = [\n PARAMETER_OVERVIEW_VIEWTYPE,\n];\n\n/**\n */\nexport const ISO_DATE_FORMAT = \"yyyy-MM-dd\";\n/**\n */\nexport const ISO_DATETIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\n/**\n */\nexport const ISO_TIME_FORMAT = \"HH:mm:ss\";\n/**\n */\nexport const ISO_TIMESTAMP_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n/**\n * week starts on monday by default\n */\nexport const DEFAULT_WEEK_STARTS_ON = 1;\n\n/**\n * first week indicated by the 1st of january\n */\nexport const DEFAULT_FIRST_WEEK_CONTAINS_DATE = 1;\n\n/**\n * Key codes\n * @type {{SPACE: number, PAGE_DOWN: number, TAB: number, ARROW_RIGHT: number, ARROW_DOWN: number, ENTER: number, ARROW_UP: number, ARROW_LEFT: number, PAGE_UP: number, ESCAPE: number}}\n */\nexport const KEYCODES = {\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n};\n\n/**\n * @type {boolean}\n */\nexport const IS_SYNC = typeof dataFetcher !== \"undefined\";\n/**\n * @type {boolean}\n */\nexport const IS_SERVER = IS_SYNC;\n\n/**\n * @type {{SUCCESS: string, ERROR: string, INFO: string, WARNING: string}}\n */\nexport const NOTIFICATION_TYPES = {\n SUCCESS: \"SUCCESS\",\n INFO: \"INFO\",\n WARNING: \"WARNING\",\n ERROR: \"ERROR\",\n};\n\n/**\n * SUPPORTED HTTP METHODS\n * @type {{POST: string, GET: string}}\n */\nexport const HTTP_METHODS = {\n GET: \"GET\",\n POST: \"POST\",\n};\n\n/**\n * POSSIBLE MODULARUI STATUSSES\n * @type {{LOADING: string, ERROR: string, FINISHED: string}}\n */\nexport const MODULARUI_STATUS = {\n LOADING: \"LOADING\",\n FINISHED: \"FINISHED\",\n ERROR: \"ERROR\",\n};\n\n/**\n * POSSIBLE AUTOSAVE STATUSSES\n * @type {{START: string, FINISHED: string}}\n */\nexport const AUTOSAVE_STATUS = {\n START: \"START\",\n FINISHED: \"FINISHED\",\n};\n\n/**\n * DEBOUNCE INPUT TIMEOUT\n */\nexport const INPUT_DEBOUNCE_TIMEOUT = 100;\n\n/**\n * DEBOUNCE VALIDATION TIMEOUT\n */\nexport const VALIDATE_DEBOUNCE_TIMEOUT = 500;\n\n/**\n * ATTRIBUTE WIDTH\n */\nexport const ATTRIBUTE_WIDTH = {\n EXTRA_SMALL: \"EXTRA_SMALL\",\n SMALL: \"SMALL\",\n MEDIUM: \"MEDIUM\",\n LARGE: \"LARGE\",\n EXTRA_LARGE: \"EXTRA_LARGE\",\n};\n\nexport const ALL_CONTENT_IN_DATA_SETTING = \"hasAllContentInData\";\n\nexport const INTERNAL_LOGIN_TYPE = {\n JAAS: \"JAAS\",\n PAC4J_FORM: \"PAC4J_FORM\",\n PAC4J_BASIC: \"PAC4J_BASIC\",\n};\nexport const LOGIN_TYPE = \"security.clients\";\nexport const LOGIN_PATH_SETTING = \"FormClient.login_url\";\nexport const LOGIN_USERNAME_SETTING = \"FormClient.username_field_name\";\nexport const LOGIN_PASSWORD_SETTING = \"FormClient.password_field_name\";\nexport const LOGOUT_PATH_SETTING = \"FormClient.logout_url\";\n\nexport const DEFAULT_AUTHENTICATION_TYPE = {\n name: \"Form based authentication\",\n authentication: \"DefaultFormClient\",\n isPrimary: true,\n};\n"],"mappings":"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"}
@@ -141,14 +141,16 @@ const hasAllContentInData = () => getSetting(_Constants.ALL_CONTENT_IN_DATA_SETT
141
141
 
142
142
  /**
143
143
  * Login type, only available when pac4j is configured
144
+ *
145
+ * Preview does not support pac4j, thus is probably not configured when started, which results in login type JAAS
144
146
  */
145
147
  exports.hasAllContentInData = hasAllContentInData;
146
- const loginType = () => getSetting(_Constants.LOGIN_TYPE, "JAAS");
148
+ const loginType = () => getSetting(_Constants.LOGIN_TYPE, _Constants.INTERNAL_LOGIN_TYPE.JAAS);
147
149
 
148
150
  /**
149
151
  */
150
152
  exports.loginType = loginType;
151
- const loginPath = () => getSetting(_Constants.LOGIN_PATH_SETTING, "/j_security_check");
153
+ const loginPath = () => getSetting(_Constants.LOGIN_PATH_SETTING, "/callback?client_name=FormClient");
152
154
  /**
153
155
  */
154
156
  exports.loginPath = loginPath;
@@ -160,7 +162,7 @@ const loginPasswordField = () => getSetting(_Constants.LOGIN_PASSWORD_SETTING, "
160
162
  /**
161
163
  */
162
164
  exports.loginPasswordField = loginPasswordField;
163
- const logoutPath = () => getSetting(_Constants.LOGOUT_PATH_SETTING, "/Logoff");
165
+ const logoutPath = () => getSetting(_Constants.LOGOUT_PATH_SETTING, "/logout");
164
166
  exports.logoutPath = logoutPath;
165
167
  const LOGIN_PATH = loginPath();
166
168
  exports.LOGIN_PATH = LOGIN_PATH;
@@ -3,6 +3,7 @@ import { isPlainObject, has } from "../utils/helpers/objects";
3
3
  import { getRepositoryResourceUrl } from "../utils/helpers/repositoryResource";
4
4
  import {
5
5
  ALL_CONTENT_IN_DATA_SETTING,
6
+ INTERNAL_LOGIN_TYPE,
6
7
  LOGIN_TYPE,
7
8
  LOGIN_PATH_SETTING,
8
9
  LOGIN_USERNAME_SETTING,
@@ -186,13 +187,16 @@ export const hasAllContentInData = (): boolean =>
186
187
 
187
188
  /**
188
189
  * Login type, only available when pac4j is configured
190
+ *
191
+ * Preview does not support pac4j, thus is probably not configured when started, which results in login type JAAS
189
192
  */
190
- export const loginType = (): string => getSetting(LOGIN_TYPE, "JAAS");
193
+ export const loginType = (): string =>
194
+ getSetting(LOGIN_TYPE, INTERNAL_LOGIN_TYPE.JAAS);
191
195
 
192
196
  /**
193
197
  */
194
198
  export const loginPath = (): string =>
195
- getSetting(LOGIN_PATH_SETTING, "/j_security_check");
199
+ getSetting(LOGIN_PATH_SETTING, "/callback?client_name=FormClient");
196
200
  /**
197
201
  */
198
202
  export const loginUsernameField = (): string =>
@@ -204,7 +208,7 @@ export const loginPasswordField = (): string =>
204
208
  /**
205
209
  */
206
210
  export const logoutPath = (): string =>
207
- getSetting(LOGOUT_PATH_SETTING, "/Logoff");
211
+ getSetting(LOGOUT_PATH_SETTING, "/logout");
208
212
 
209
213
  export const LOGIN_PATH: string = loginPath();
210
214
  export const LOGOUT_PATH: string = logoutPath();
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","names":["serverBase","__CONTEXT_PATH__","defaultSettings","CONTEXT_PATH","window","contextPath","CACHE_CONTRIBUTIONS","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_GLOBAL_LOGIN_PAGE","RENDER_GLOBAL_LOGOUT_PAGE","RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE","LOGIN_PATH","ADMINISTRATOR_LOGIN_PATH","LOGOUT_PATH","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","BUSINESS_SCENARIO_CONCEPT_TYPE","BUSINESS_SCENARIO_STEP_CONCEPT_TYPE","BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","HIDE_WHEN_EMPTY_IGNORE_TASKS","settings","setSettings","config","isPlainObject","getSetting","key","defaultValue","has","undefined","Error","setSetting","value","allSettings","cacheContributions","getBasePath","getUploadPath","UPLOAD_PATH","getCaptchaPath","CAPTCHA_PATH","hasAllContentInData","ALL_CONTENT_IN_DATA_SETTING","loginType","LOGIN_TYPE","loginPath","LOGIN_PATH_SETTING","loginUsernameField","LOGIN_USERNAME_SETTING","loginPasswordField","LOGIN_PASSWORD_SETTING","logoutPath","LOGOUT_PATH_SETTING","getSwimLaneDiagramConfiguration","configLocation","getRepositoryResourceUrl","BASE"],"sources":["../../src/constants/Settings.js"],"sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { getRepositoryResourceUrl } from \"../utils/helpers/repositoryResource\";\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n LOGIN_TYPE,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGIN_PASSWORD_SETTING,\n LOGOUT_PATH_SETTING,\n UPLOAD_PATH,\n CAPTCHA_PATH,\n} from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst serverBase =\n typeof __CONTEXT_PATH__ === \"undefined\" ? null : __CONTEXT_PATH__;\n\nconst defaultSettings: { [name: string]: Setting } = {\n // This uses contextPath set from property from server\n CONTEXT_PATH:\n serverBase ??\n (typeof window !== \"undefined\" && window.contextPath\n ? window.contextPath\n : \"/BeInformed\"),\n\n // Indicates if contributions should be cached\n CACHE_CONTRIBUTIONS: true,\n\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Renders the global log in page\n RENDER_GLOBAL_LOGIN_PAGE: false,\n\n // Renders the global log out page\n RENDER_GLOBAL_LOGOUT_PAGE: false,\n\n // Renders the login variants as option on the global logout page\n RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE: false,\n\n // Path to login page / component\n LOGIN_PATH: \"/signin\",\n\n // Path to administrator login page / component\n ADMINISTRATOR_LOGIN_PATH: \"\",\n\n // Path to logout page / component\n LOGOUT_PATH: \"/signout\",\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Business scenario concept types\n BUSINESS_SCENARIO_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/BusinessScenario\",\n ],\n BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/ScenarioStep\",\n ],\n BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/Persona\",\n ],\n\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n\n HIDE_WHEN_EMPTY_IGNORE_TASKS: false,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n * Indicates if contributions must be cached\n */\nexport const cacheContributions = (): boolean =>\n getSetting(\"CACHE_CONTRIBUTIONS\", true);\n\n/**\n * Base path\n * This uses contextPath set from property from server\n * When requesting a remote server with CORS enabled, add the origin, for example:\n * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';\n */\nexport const getBasePath = (): string =>\n getSetting(\"CONTEXT_PATH\", \"/BeInformed\");\n\n/**\n * Path to upload service\n */\nexport const getUploadPath = (): string => `${getBasePath()}${UPLOAD_PATH}`;\n\n/**\n * Path to captcha service\n */\nexport const getCaptchaPath = (): string => `${getBasePath()}${CAPTCHA_PATH}`;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n\n/**\n * Login type, only available when pac4j is configured\n */\nexport const loginType = (): string => getSetting(LOGIN_TYPE, \"JAAS\");\n\n/**\n */\nexport const loginPath = (): string =>\n getSetting(LOGIN_PATH_SETTING, \"/j_security_check\");\n/**\n */\nexport const loginUsernameField = (): string =>\n getSetting(LOGIN_USERNAME_SETTING, \"j_username\");\n/**\n */\nexport const loginPasswordField = (): string =>\n getSetting(LOGIN_PASSWORD_SETTING, \"j_password\");\n/**\n */\nexport const logoutPath = (): string =>\n getSetting(LOGOUT_PATH_SETTING, \"/Logoff\");\n\nexport const LOGIN_PATH: string = loginPath();\nexport const LOGOUT_PATH: string = logoutPath();\n\n/**\n * Model overview swim lane configuration\n */\nexport const getSwimLaneDiagramConfiguration: Object = () => {\n let configLocation = getSetting(\n \"SWIM_LANE_DIAGRAM_CONFIGURATION\",\n \"/Library/Diagrams/Overviews.json\"\n );\n if (!configLocation.startsWith(\"/\")) {\n configLocation = `/${configLocation}`;\n }\n return getRepositoryResourceUrl(configLocation);\n};\n\n/**\n * Backwards compatible export of BASE constant\n */\nexport const BASE: string = getBasePath();\n"],"mappings":"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"}
1
+ {"version":3,"file":"Settings.js","names":["serverBase","__CONTEXT_PATH__","defaultSettings","CONTEXT_PATH","window","contextPath","CACHE_CONTRIBUTIONS","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_GLOBAL_LOGIN_PAGE","RENDER_GLOBAL_LOGOUT_PAGE","RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE","LOGIN_PATH","ADMINISTRATOR_LOGIN_PATH","LOGOUT_PATH","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","BUSINESS_SCENARIO_CONCEPT_TYPE","BUSINESS_SCENARIO_STEP_CONCEPT_TYPE","BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","HIDE_WHEN_EMPTY_IGNORE_TASKS","settings","setSettings","config","isPlainObject","getSetting","key","defaultValue","has","undefined","Error","setSetting","value","allSettings","cacheContributions","getBasePath","getUploadPath","UPLOAD_PATH","getCaptchaPath","CAPTCHA_PATH","hasAllContentInData","ALL_CONTENT_IN_DATA_SETTING","loginType","LOGIN_TYPE","INTERNAL_LOGIN_TYPE","JAAS","loginPath","LOGIN_PATH_SETTING","loginUsernameField","LOGIN_USERNAME_SETTING","loginPasswordField","LOGIN_PASSWORD_SETTING","logoutPath","LOGOUT_PATH_SETTING","getSwimLaneDiagramConfiguration","configLocation","getRepositoryResourceUrl","BASE"],"sources":["../../src/constants/Settings.js"],"sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { getRepositoryResourceUrl } from \"../utils/helpers/repositoryResource\";\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n INTERNAL_LOGIN_TYPE,\n LOGIN_TYPE,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGIN_PASSWORD_SETTING,\n LOGOUT_PATH_SETTING,\n UPLOAD_PATH,\n CAPTCHA_PATH,\n} from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst serverBase =\n typeof __CONTEXT_PATH__ === \"undefined\" ? null : __CONTEXT_PATH__;\n\nconst defaultSettings: { [name: string]: Setting } = {\n // This uses contextPath set from property from server\n CONTEXT_PATH:\n serverBase ??\n (typeof window !== \"undefined\" && window.contextPath\n ? window.contextPath\n : \"/BeInformed\"),\n\n // Indicates if contributions should be cached\n CACHE_CONTRIBUTIONS: true,\n\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Renders the global log in page\n RENDER_GLOBAL_LOGIN_PAGE: false,\n\n // Renders the global log out page\n RENDER_GLOBAL_LOGOUT_PAGE: false,\n\n // Renders the login variants as option on the global logout page\n RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE: false,\n\n // Path to login page / component\n LOGIN_PATH: \"/signin\",\n\n // Path to administrator login page / component\n ADMINISTRATOR_LOGIN_PATH: \"\",\n\n // Path to logout page / component\n LOGOUT_PATH: \"/signout\",\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Business scenario concept types\n BUSINESS_SCENARIO_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/BusinessScenario\",\n ],\n BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/ScenarioStep\",\n ],\n BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/Persona\",\n ],\n\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n\n HIDE_WHEN_EMPTY_IGNORE_TASKS: false,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n * Indicates if contributions must be cached\n */\nexport const cacheContributions = (): boolean =>\n getSetting(\"CACHE_CONTRIBUTIONS\", true);\n\n/**\n * Base path\n * This uses contextPath set from property from server\n * When requesting a remote server with CORS enabled, add the origin, for example:\n * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';\n */\nexport const getBasePath = (): string =>\n getSetting(\"CONTEXT_PATH\", \"/BeInformed\");\n\n/**\n * Path to upload service\n */\nexport const getUploadPath = (): string => `${getBasePath()}${UPLOAD_PATH}`;\n\n/**\n * Path to captcha service\n */\nexport const getCaptchaPath = (): string => `${getBasePath()}${CAPTCHA_PATH}`;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n\n/**\n * Login type, only available when pac4j is configured\n *\n * Preview does not support pac4j, thus is probably not configured when started, which results in login type JAAS\n */\nexport const loginType = (): string =>\n getSetting(LOGIN_TYPE, INTERNAL_LOGIN_TYPE.JAAS);\n\n/**\n */\nexport const loginPath = (): string =>\n getSetting(LOGIN_PATH_SETTING, \"/callback?client_name=FormClient\");\n/**\n */\nexport const loginUsernameField = (): string =>\n getSetting(LOGIN_USERNAME_SETTING, \"j_username\");\n/**\n */\nexport const loginPasswordField = (): string =>\n getSetting(LOGIN_PASSWORD_SETTING, \"j_password\");\n/**\n */\nexport const logoutPath = (): string =>\n getSetting(LOGOUT_PATH_SETTING, \"/logout\");\n\nexport const LOGIN_PATH: string = loginPath();\nexport const LOGOUT_PATH: string = logoutPath();\n\n/**\n * Model overview swim lane configuration\n */\nexport const getSwimLaneDiagramConfiguration: Object = () => {\n let configLocation = getSetting(\n \"SWIM_LANE_DIAGRAM_CONFIGURATION\",\n \"/Library/Diagrams/Overviews.json\"\n );\n if (!configLocation.startsWith(\"/\")) {\n configLocation = `/${configLocation}`;\n }\n return getRepositoryResourceUrl(configLocation);\n};\n\n/**\n * Backwards compatible export of BASE constant\n */\nexport const BASE: string = getBasePath();\n"],"mappings":"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"}
@@ -70,10 +70,13 @@ class ApplicationModel extends _ResourceModel.default {
70
70
  */
71
71
  get authenticationTypes() {
72
72
  const authenticationTypes = this.getContribution("security", [_constants.DEFAULT_AUTHENTICATION_TYPE]);
73
-
74
- //put primary first
75
- return authenticationTypes?.sort((a, b) => a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1);
73
+ if (authenticationTypes) {
74
+ //put primary first
75
+ return authenticationTypes?.sort((a, b) => a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1);
76
+ }
77
+ return [_constants.DEFAULT_AUTHENTICATION_TYPE];
76
78
  }
79
+
77
80
  /**
78
81
  * Getting the tab links
79
82
  */
@@ -80,12 +80,17 @@ export default class ApplicationModel extends ResourceModel {
80
80
  DEFAULT_AUTHENTICATION_TYPE,
81
81
  ]);
82
82
 
83
- //put primary first
84
- return authenticationTypes?.sort(
85
- (a: AuthenticationType, b: AuthenticationType) =>
86
- a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1
87
- );
83
+ if (authenticationTypes) {
84
+ //put primary first
85
+ return authenticationTypes?.sort(
86
+ (a: AuthenticationType, b: AuthenticationType) =>
87
+ a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1
88
+ );
89
+ }
90
+
91
+ return [DEFAULT_AUTHENTICATION_TYPE];
88
92
  }
93
+
89
94
  /**
90
95
  * Getting the tab links
91
96
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationModel.js","names":["ApplicationModel","ResourceModel","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","NotAllowedUriException","setChildModels","models","userServiceModel","model","userServices","label","getContribution","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","LinkModel","create","_userServices","UserServicesModel","isLoggedIn","userHref","userLink"],"sources":["../../../src/models/application/ApplicationModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport { DEFAULT_AUTHENTICATION_TYPE } from \"../../constants\";\n\nimport type { ModularUIModel, AuthenticationType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ApplicationModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\"\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\"\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the authentication types of the application\n */\n get authenticationTypes(): Array<AuthenticationType> {\n const authenticationTypes = this.getContribution(\"security\", [\n DEFAULT_AUTHENTICATION_TYPE,\n ]);\n\n //put primary first\n return authenticationTypes?.sort(\n (a: AuthenticationType, b: AuthenticationType) =>\n a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1\n );\n }\n /**\n * Getting the tab links\n */\n get tabs(): LinkCollection {\n return this.links.getLinksByGroup(\"tab\");\n }\n\n /**\n * Get modelcatalog link\n */\n get modelcatalog(): LinkModel {\n return LinkModel.create(\"modelcatalog\", \"/modelcatalog\", \"Model catalog\");\n }\n\n /**\n * Set the userservices for this application\n */\n set userServices(model: ?ModularUIModel) {\n this._userServices = model instanceof UserServicesModel ? model : null;\n }\n\n /**\n * returns the userservices configured for this application\n */\n get userServices(): ?UserServicesModel {\n return this._userServices ? this._userServices : null;\n }\n\n /**\n * Indicates if the user is logged in\n */\n get isLoggedIn(): boolean {\n return this.userServices?.isLoggedIn ?? false;\n }\n\n /**\n * Retrieve link to the user information,\n * only available when the user services are available\n */\n get userHref(): Href | null {\n if (this.userServices != null && this.userServices.userLink != null) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n}\n"],"mappings":";;;;;;;;;AACA;AACA;AACA;AAEA;AAEA;AAOA;AACA;AACA;AACe,MAAMA,gBAAgB,SAASC,sBAAa,CAAC;EAAA;IAAA;IAAA;EAAA;EAG1D;AACF;AACA;EACE,IAAIC,IAAI,GAAW;IACjB,OAAO,aAAa;EACtB;;EAEA;AACF;EACE,WAAWC,SAAS,GAAW;IAC7B,OAAO,kBAAkB;EAC3B;;EAEA;AACF;EACE,OAAOC,iBAAiB,CAACC,IAAuB,EAAW;IACzD,OACEA,IAAI,CAACC,aAAa,CAACC,YAAY,IAC/BF,IAAI,CAACC,aAAa,CAACC,YAAY,KAAK,aAAa;EAErD;;EAEA;AACF;EACEC,yBAAyB,GAAqB;IAC5C,MAAMC,WAAW,GAAG,IAAI,CAACC,KAAK,CAACC,YAAY,CAAC,cAAc,CAAC;IAC3D,IAAIF,WAAW,IAAIA,WAAW,CAACG,IAAI,CAACC,IAAI,KAAK,QAAQ,EAAE;MACrD,MAAM,IAAIC,kCAAsB,CAC9B,kIAAkI,CACnI;IACH;IAEA,OAAOL,WAAW,GAAG,CAACA,WAAW,CAAC,GAAG,EAAE;EACzC;;EAEA;AACF;EACEM,cAAc,CAACC,MAA6B,EAAE;IAC5C,MAAMC,gBAAgB,GAAG,mBAAAD,MAAM,OAANA,MAAM,EAC5BE,KAAK,IAAKA,KAAK,CAAChB,IAAI,KAAK,cAAc,CACzC;IAED,IAAIe,gBAAgB,EAAE;MACpB,IAAI,CAACE,YAAY,GAAGF,gBAAgB;IACtC;EACF;;EAEA;AACF;AACA;EACE,IAAIG,KAAK,GAAW;IAClB,OAAO,IAAI,CAACC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIC,mBAAmB,GAA8B;IACnD,MAAMA,mBAAmB,GAAG,IAAI,CAACD,eAAe,CAAC,UAAU,EAAE,CAC3DE,sCAA2B,CAC5B,CAAC;;IAEF;IACA,OAAOD,mBAAmB,EAAEE,IAAI,CAC9B,CAACC,CAAqB,EAAEC,CAAqB,KAC3CD,CAAC,CAACE,SAAS,KAAKD,CAAC,CAACC,SAAS,GAAG,CAAC,GAAGF,CAAC,CAACE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CACzD;EACH;EACA;AACF;AACA;EACE,IAAIC,IAAI,GAAmB;IACzB,OAAO,IAAI,CAAClB,KAAK,CAACmB,eAAe,CAAC,KAAK,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIC,YAAY,GAAc;IAC5B,OAAOC,kBAAS,CAACC,MAAM,CAAC,cAAc,EAAE,eAAe,EAAE,eAAe,CAAC;EAC3E;;EAEA;AACF;AACA;EACE,IAAIb,YAAY,CAACD,KAAsB,EAAE;IACvC,IAAI,CAACe,aAAa,GAAGf,KAAK,YAAYgB,0BAAiB,GAAGhB,KAAK,GAAG,IAAI;EACxE;;EAEA;AACF;AACA;EACE,IAAIC,YAAY,GAAuB;IACrC,OAAO,IAAI,CAACc,aAAa,GAAG,IAAI,CAACA,aAAa,GAAG,IAAI;EACvD;;EAEA;AACF;AACA;EACE,IAAIE,UAAU,GAAY;IACxB,OAAO,IAAI,CAAChB,YAAY,EAAEgB,UAAU,IAAI,KAAK;EAC/C;;EAEA;AACF;AACA;AACA;EACE,IAAIC,QAAQ,GAAgB;IAC1B,IAAI,IAAI,CAACjB,YAAY,IAAI,IAAI,IAAI,IAAI,CAACA,YAAY,CAACkB,QAAQ,IAAI,IAAI,EAAE;MACnE,OAAO,IAAI,CAAClB,YAAY,CAACkB,QAAQ,CAACzB,IAAI;IACxC;IAEA,OAAO,IAAI;EACb;AACF;AAAC"}
1
+ {"version":3,"file":"ApplicationModel.js","names":["ApplicationModel","ResourceModel","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","NotAllowedUriException","setChildModels","models","userServiceModel","model","userServices","label","getContribution","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","LinkModel","create","_userServices","UserServicesModel","isLoggedIn","userHref","userLink"],"sources":["../../../src/models/application/ApplicationModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport { DEFAULT_AUTHENTICATION_TYPE } from \"../../constants\";\n\nimport type { ModularUIModel, AuthenticationType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ApplicationModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\"\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\"\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the authentication types of the application\n */\n get authenticationTypes(): Array<AuthenticationType> {\n const authenticationTypes = this.getContribution(\"security\", [\n DEFAULT_AUTHENTICATION_TYPE,\n ]);\n\n if (authenticationTypes) {\n //put primary first\n return authenticationTypes?.sort(\n (a: AuthenticationType, b: AuthenticationType) =>\n a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1\n );\n }\n\n return [DEFAULT_AUTHENTICATION_TYPE];\n }\n\n /**\n * Getting the tab links\n */\n get tabs(): LinkCollection {\n return this.links.getLinksByGroup(\"tab\");\n }\n\n /**\n * Get modelcatalog link\n */\n get modelcatalog(): LinkModel {\n return LinkModel.create(\"modelcatalog\", \"/modelcatalog\", \"Model catalog\");\n }\n\n /**\n * Set the userservices for this application\n */\n set userServices(model: ?ModularUIModel) {\n this._userServices = model instanceof UserServicesModel ? model : null;\n }\n\n /**\n * returns the userservices configured for this application\n */\n get userServices(): ?UserServicesModel {\n return this._userServices ? this._userServices : null;\n }\n\n /**\n * Indicates if the user is logged in\n */\n get isLoggedIn(): boolean {\n return this.userServices?.isLoggedIn ?? false;\n }\n\n /**\n * Retrieve link to the user information,\n * only available when the user services are available\n */\n get userHref(): Href | null {\n if (this.userServices != null && this.userServices.userLink != null) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n}\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-sta
11
11
  var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
12
12
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
14
- var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
14
+ var _full = require("klona/full");
15
15
  var _pick = _interopRequireDefault(require("lodash/pick"));
16
16
  var _objects = require("../../utils/helpers/objects");
17
17
  /**
@@ -33,7 +33,7 @@ class AttributeDataHelper {
33
33
  this._attribute = (0, _find.default)(data).call(data, attr => attr.elementid === key || attr.name === key || attr.param === key) || {};
34
34
  this._value = this.getValue(this._attribute);
35
35
  } else {
36
- const attributeData = (0, _cloneDeep.default)(data);
36
+ const attributeData = (0, _full.klona)(data);
37
37
  attributeData._links = (0, _pick.default)(data._links, ["concept", "download", "lookupOptions", "lookupList"]);
38
38
  this._attribute = attributeData;
39
39
  if (data[key] === undefined || "name" in data && "param" in data) {
@@ -1,5 +1,5 @@
1
1
  // @flow
2
- import cloneDeep from "lodash/cloneDeep";
2
+ import { klona } from "klona/full";
3
3
  import pick from "lodash/pick";
4
4
 
5
5
  import { has, isPlainObject } from "../../utils/helpers/objects";
@@ -33,7 +33,7 @@ class AttributeDataHelper {
33
33
  ) || {};
34
34
  this._value = this.getValue(this._attribute);
35
35
  } else {
36
- const attributeData = cloneDeep(data);
36
+ const attributeData = klona(data);
37
37
  attributeData._links = pick(data._links, [
38
38
  "concept",
39
39
  "download",
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeDataHelper.js","names":["AttributeDataHelper","constructor","data","key","childrenKeys","_key","Array","isArray","_attribute","attr","elementid","name","param","_value","getValue","attributeData","cloneDeep","_links","pick","undefined","_children","createChildren","childData","parentKey","childKey","elements","element","has","isPlainObject","parentData","content","createChild","keyObject","dynamicschema","dynamicschemaId","children","childrenIsArray","value","attribute","suggestions","suggestion","options","option","selected","code","static","links","attrDS","message","isResult","referenceDate","pickedContent","length","getData","child","subChild"],"sources":["../../../src/models/attributes/AttributeDataHelper.js"],"sourcesContent":["// @flow\nimport cloneDeep from \"lodash/cloneDeep\";\nimport pick from \"lodash/pick\";\n\nimport { has, isPlainObject } from \"../../utils/helpers/objects\";\n\n/**\n * This util helps to normalize various attribute data formats available in the modular ui.\n * It fixes differences in choice attributes with dynamic schema's, links on download attributes, composites with various children, etc\n *\n * @private\n */\nclass AttributeDataHelper {\n _key: string;\n _attribute: Object;\n _value: any;\n _children: Array<AttributeDataHelper>;\n\n /**\n */\n constructor(\n data: Object | Array<Object>,\n key: string,\n childrenKeys: Array<Object>\n ) {\n this._key = key;\n\n if (Array.isArray(data)) {\n this._attribute =\n data.find(\n (attr) =>\n attr.elementid === key || attr.name === key || attr.param === key\n ) || {};\n this._value = this.getValue(this._attribute);\n } else {\n const attributeData = cloneDeep(data);\n attributeData._links = pick(data._links, [\n \"concept\",\n \"download\",\n \"lookupOptions\",\n \"lookupList\",\n ]);\n\n this._attribute = attributeData;\n\n if (data[key] === undefined || (\"name\" in data && \"param\" in data)) {\n this._value = this.getValue(data);\n } else {\n this._value = data[key];\n }\n }\n\n this._children = this.createChildren(data, childrenKeys);\n }\n\n /**\n */\n childData(\n data: Object | Array<Object>,\n parentKey: string,\n childKey: string\n ): Object {\n if (Array.isArray(data)) {\n if (Array.isArray(this._attribute.elements)) {\n return this._attribute.elements.find(\n (element) => element.elementid === childKey\n );\n }\n } else if (has(data, parentKey) && isPlainObject(data[parentKey])) {\n const parentData = data[parentKey];\n if (isPlainObject(parentData) && data.content?.[childKey]) {\n return { ...parentData, content: data.content[childKey] };\n }\n return parentData;\n } else if (has(data, childKey) && isPlainObject(data[childKey])) {\n return data[childKey];\n }\n\n if (isPlainObject(data)) {\n return data;\n }\n\n return {};\n }\n\n /**\n */\n createChild(\n data: Object | Array<Object>,\n childData: Object,\n keyObject: Object\n ): AttributeDataHelper {\n const dynamicschema =\n isPlainObject(data) && !Array.isArray(data)\n ? data.dynamicschema\n : undefined;\n\n let dynamicschemaId = null;\n if (keyObject.dynamicschemaId) {\n dynamicschemaId = keyObject.dynamicschemaId;\n } else if (\n isPlainObject(data) &&\n typeof data.key === \"string\" &&\n keyObject.key\n ) {\n dynamicschemaId = `${data.key}.${keyObject.key}`;\n }\n\n return new AttributeDataHelper(\n {\n ...childData,\n dynamicschema,\n dynamicschemaId,\n },\n keyObject.key,\n keyObject.children\n );\n }\n\n /**\n */\n createChildren(\n data: Object | Array<Object>,\n childrenKeys: Array<Object> = []\n ): Array<AttributeDataHelper> {\n const childrenIsArray = Array.isArray(this.value);\n\n if (childrenIsArray) {\n return this.value.map((value) =>\n childrenKeys.map((keyObject) => {\n const childData = this.childData(value, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n })\n );\n }\n\n return childrenKeys.map((keyObject) => {\n const childData = this.childData(data, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n });\n }\n\n /**\n */\n getValue(attribute: Object): any {\n if (\"values\" in attribute) {\n return attribute.values;\n }\n\n if (\"value\" in attribute) {\n return attribute.value;\n }\n\n if (\"suggestions\" in attribute) {\n return attribute.suggestions;\n }\n\n if (\"suggestion\" in attribute) {\n return attribute.suggestion;\n }\n\n if (Array.isArray(attribute.options)) {\n return attribute.options\n .filter((option) => option.selected)\n .map((option) => option.code || option.key);\n }\n\n return null;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n get value(): any {\n return this._value;\n }\n\n /**\n */\n get static(): boolean {\n return this._attribute.static || false;\n }\n\n /**\n */\n get links(): any {\n return this._attribute._links || void 0;\n }\n\n /**\n */\n get dynamicschemaId(): string {\n return this._attribute.dynamicschemaId || this.key;\n }\n\n /*\n retrieve the dynamischema by the dynamischemaId\n mentioned in the contributions of the attribute\n */\n /**\n */\n get dynamicschema(): any {\n const { dynamicschema } = this._attribute;\n if (!dynamicschema) {\n return void 0;\n }\n\n if (Array.isArray(dynamicschema)) {\n return dynamicschema;\n } else if (dynamicschema[this.dynamicschemaId]) {\n const attrDS = dynamicschema[this.dynamicschemaId];\n return attrDS.map((attr) => {\n if (attr.elements) {\n return {\n ...attr,\n elements: {\n ...attr.elements,\n dynamicschema,\n },\n };\n }\n\n return attr;\n });\n }\n\n return void 0;\n }\n\n /**\n */\n get options(): any {\n return this._attribute.options || void 0;\n }\n\n /**\n */\n get message(): any {\n return this._attribute.message || void 0;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._attribute.isResult || false;\n }\n\n /**\n */\n get referenceDate(): any {\n return this._attribute.referenceDate || void 0;\n }\n\n /**\n */\n get children(): Array<AttributeDataHelper> {\n return this._children || [];\n }\n\n /**\n */\n get content(): Object {\n if (this._attribute.content) {\n const pickedContent = pick(this._attribute.content, [\n \"header\",\n \"label\",\n \"elements\",\n \"layouthint\",\n \"text\",\n ]);\n\n if (Object.keys(pickedContent).length > 0) {\n return pickedContent;\n }\n }\n\n return null;\n }\n\n /**\n */\n getData(): Object {\n return {\n key: this.key,\n value: this.value,\n static: this.static,\n _links: this.links,\n dynamicschema: this.dynamicschema,\n dynamicschemaId: this.dynamicschemaId,\n options: this.options,\n message: this.message,\n isResult: this.isResult,\n referenceDate: this.referenceDate,\n children: this.children.map((child) =>\n Array.isArray(child)\n ? child.map((subChild) => subChild.getData())\n : child.getData()\n ),\n content: this.content,\n };\n }\n}\n\nexport default AttributeDataHelper;\n"],"mappings":";;;;;;;;;;;;;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,mBAAmB,CAAC;EAMxB;AACF;EACEC,WAAW,CACTC,IAA4B,EAC5BC,GAAW,EACXC,YAA2B,EAC3B;IAAA;IAAA;IAAA;IAAA;IACA,IAAI,CAACC,IAAI,GAAGF,GAAG;IAEf,IAAIG,KAAK,CAACC,OAAO,CAACL,IAAI,CAAC,EAAE;MACvB,IAAI,CAACM,UAAU,GACb,mBAAAN,IAAI,OAAJA,IAAI,EACDO,IAAI,IACHA,IAAI,CAACC,SAAS,KAAKP,GAAG,IAAIM,IAAI,CAACE,IAAI,KAAKR,GAAG,IAAIM,IAAI,CAACG,KAAK,KAAKT,GAAG,CACpE,IAAI,CAAC,CAAC;MACT,IAAI,CAACU,MAAM,GAAG,IAAI,CAACC,QAAQ,CAAC,IAAI,CAACN,UAAU,CAAC;IAC9C,CAAC,MAAM;MACL,MAAMO,aAAa,GAAG,IAAAC,kBAAS,EAACd,IAAI,CAAC;MACrCa,aAAa,CAACE,MAAM,GAAG,IAAAC,aAAI,EAAChB,IAAI,CAACe,MAAM,EAAE,CACvC,SAAS,EACT,UAAU,EACV,eAAe,EACf,YAAY,CACb,CAAC;MAEF,IAAI,CAACT,UAAU,GAAGO,aAAa;MAE/B,IAAIb,IAAI,CAACC,GAAG,CAAC,KAAKgB,SAAS,IAAK,MAAM,IAAIjB,IAAI,IAAI,OAAO,IAAIA,IAAK,EAAE;QAClE,IAAI,CAACW,MAAM,GAAG,IAAI,CAACC,QAAQ,CAACZ,IAAI,CAAC;MACnC,CAAC,MAAM;QACL,IAAI,CAACW,MAAM,GAAGX,IAAI,CAACC,GAAG,CAAC;MACzB;IACF;IAEA,IAAI,CAACiB,SAAS,GAAG,IAAI,CAACC,cAAc,CAACnB,IAAI,EAAEE,YAAY,CAAC;EAC1D;;EAEA;AACF;EACEkB,SAAS,CACPpB,IAA4B,EAC5BqB,SAAiB,EACjBC,QAAgB,EACR;IACR,IAAIlB,KAAK,CAACC,OAAO,CAACL,IAAI,CAAC,EAAE;MACvB,IAAII,KAAK,CAACC,OAAO,CAAC,IAAI,CAACC,UAAU,CAACiB,QAAQ,CAAC,EAAE;QAAA;QAC3C,OAAO,kCAAI,CAACjB,UAAU,CAACiB,QAAQ,iBAC5BC,OAAO,IAAKA,OAAO,CAAChB,SAAS,KAAKc,QAAQ,CAC5C;MACH;IACF,CAAC,MAAM,IAAI,IAAAG,YAAG,EAACzB,IAAI,EAAEqB,SAAS,CAAC,IAAI,IAAAK,sBAAa,EAAC1B,IAAI,CAACqB,SAAS,CAAC,CAAC,EAAE;MACjE,MAAMM,UAAU,GAAG3B,IAAI,CAACqB,SAAS,CAAC;MAClC,IAAI,IAAAK,sBAAa,EAACC,UAAU,CAAC,IAAI3B,IAAI,CAAC4B,OAAO,GAAGN,QAAQ,CAAC,EAAE;QACzD,OAAO;UAAE,GAAGK,UAAU;UAAEC,OAAO,EAAE5B,IAAI,CAAC4B,OAAO,CAACN,QAAQ;QAAE,CAAC;MAC3D;MACA,OAAOK,UAAU;IACnB,CAAC,MAAM,IAAI,IAAAF,YAAG,EAACzB,IAAI,EAAEsB,QAAQ,CAAC,IAAI,IAAAI,sBAAa,EAAC1B,IAAI,CAACsB,QAAQ,CAAC,CAAC,EAAE;MAC/D,OAAOtB,IAAI,CAACsB,QAAQ,CAAC;IACvB;IAEA,IAAI,IAAAI,sBAAa,EAAC1B,IAAI,CAAC,EAAE;MACvB,OAAOA,IAAI;IACb;IAEA,OAAO,CAAC,CAAC;EACX;;EAEA;AACF;EACE6B,WAAW,CACT7B,IAA4B,EAC5BoB,SAAiB,EACjBU,SAAiB,EACI;IACrB,MAAMC,aAAa,GACjB,IAAAL,sBAAa,EAAC1B,IAAI,CAAC,IAAI,CAACI,KAAK,CAACC,OAAO,CAACL,IAAI,CAAC,GACvCA,IAAI,CAAC+B,aAAa,GAClBd,SAAS;IAEf,IAAIe,eAAe,GAAG,IAAI;IAC1B,IAAIF,SAAS,CAACE,eAAe,EAAE;MAC7BA,eAAe,GAAGF,SAAS,CAACE,eAAe;IAC7C,CAAC,MAAM,IACL,IAAAN,sBAAa,EAAC1B,IAAI,CAAC,IACnB,OAAOA,IAAI,CAACC,GAAG,KAAK,QAAQ,IAC5B6B,SAAS,CAAC7B,GAAG,EACb;MACA+B,eAAe,GAAI,GAAEhC,IAAI,CAACC,GAAI,IAAG6B,SAAS,CAAC7B,GAAI,EAAC;IAClD;IAEA,OAAO,IAAIH,mBAAmB,CAC5B;MACE,GAAGsB,SAAS;MACZW,aAAa;MACbC;IACF,CAAC,EACDF,SAAS,CAAC7B,GAAG,EACb6B,SAAS,CAACG,QAAQ,CACnB;EACH;;EAEA;AACF;EACEd,cAAc,CACZnB,IAA4B,EAEA;IAAA,IAD5BE,YAA2B,uEAAG,EAAE;IAEhC,MAAMgC,eAAe,GAAG9B,KAAK,CAACC,OAAO,CAAC,IAAI,CAAC8B,KAAK,CAAC;IAEjD,IAAID,eAAe,EAAE;MAAA;MACnB,OAAO,kCAAI,CAACC,KAAK,kBAAMA,KAAK,IAC1B,kBAAAjC,YAAY,OAAZA,YAAY,EAAM4B,SAAS,IAAK;QAC9B,MAAMV,SAAS,GAAG,IAAI,CAACA,SAAS,CAACe,KAAK,EAAE,IAAI,CAAClC,GAAG,EAAE6B,SAAS,CAAC7B,GAAG,CAAC;QAEhE,OAAO,IAAI,CAAC4B,WAAW,CAAC7B,IAAI,EAAEoB,SAAS,EAAEU,SAAS,CAAC;MACrD,CAAC,CAAC,CACH;IACH;IAEA,OAAO,kBAAA5B,YAAY,OAAZA,YAAY,EAAM4B,SAAS,IAAK;MACrC,MAAMV,SAAS,GAAG,IAAI,CAACA,SAAS,CAACpB,IAAI,EAAE,IAAI,CAACC,GAAG,EAAE6B,SAAS,CAAC7B,GAAG,CAAC;MAE/D,OAAO,IAAI,CAAC4B,WAAW,CAAC7B,IAAI,EAAEoB,SAAS,EAAEU,SAAS,CAAC;IACrD,CAAC,CAAC;EACJ;;EAEA;AACF;EACElB,QAAQ,CAACwB,SAAiB,EAAO;IAC/B,IAAI,QAAQ,IAAIA,SAAS,EAAE;MACzB,4BAAOA,SAAS;IAClB;IAEA,IAAI,OAAO,IAAIA,SAAS,EAAE;MACxB,OAAOA,SAAS,CAACD,KAAK;IACxB;IAEA,IAAI,aAAa,IAAIC,SAAS,EAAE;MAC9B,OAAOA,SAAS,CAACC,WAAW;IAC9B;IAEA,IAAI,YAAY,IAAID,SAAS,EAAE;MAC7B,OAAOA,SAAS,CAACE,UAAU;IAC7B;IAEA,IAAIlC,KAAK,CAACC,OAAO,CAAC+B,SAAS,CAACG,OAAO,CAAC,EAAE;MAAA;MACpC,OAAO,+DAAAH,SAAS,CAACG,OAAO,kBACbC,MAAM,IAAKA,MAAM,CAACC,QAAQ,CAAC,kBAC9BD,MAAM,IAAKA,MAAM,CAACE,IAAI,IAAIF,MAAM,CAACvC,GAAG,CAAC;IAC/C;IAEA,OAAO,IAAI;EACb;;EAEA;AACF;EACE,IAAIA,GAAG,GAAW;IAChB,OAAO,IAAI,CAACE,IAAI;EAClB;;EAEA;AACF;EACE,IAAIgC,KAAK,GAAQ;IACf,OAAO,IAAI,CAACxB,MAAM;EACpB;;EAEA;AACF;EACE,IAAIgC,MAAM,GAAY;IACpB,OAAO,IAAI,CAACrC,UAAU,CAACqC,MAAM,IAAI,KAAK;EACxC;;EAEA;AACF;EACE,IAAIC,KAAK,GAAQ;IACf,OAAO,IAAI,CAACtC,UAAU,CAACS,MAAM,IAAI,KAAK,CAAC;EACzC;;EAEA;AACF;EACE,IAAIiB,eAAe,GAAW;IAC5B,OAAO,IAAI,CAAC1B,UAAU,CAAC0B,eAAe,IAAI,IAAI,CAAC/B,GAAG;EACpD;;EAEA;AACF;AACA;AACA;EACE;AACF;EACE,IAAI8B,aAAa,GAAQ;IACvB,MAAM;MAAEA;IAAc,CAAC,GAAG,IAAI,CAACzB,UAAU;IACzC,IAAI,CAACyB,aAAa,EAAE;MAClB,OAAO,KAAK,CAAC;IACf;IAEA,IAAI3B,KAAK,CAACC,OAAO,CAAC0B,aAAa,CAAC,EAAE;MAChC,OAAOA,aAAa;IACtB,CAAC,MAAM,IAAIA,aAAa,CAAC,IAAI,CAACC,eAAe,CAAC,EAAE;MAC9C,MAAMa,MAAM,GAAGd,aAAa,CAAC,IAAI,CAACC,eAAe,CAAC;MAClD,OAAO,kBAAAa,MAAM,OAANA,MAAM,EAAMtC,IAAI,IAAK;QAC1B,IAAIA,IAAI,CAACgB,QAAQ,EAAE;UACjB,OAAO;YACL,GAAGhB,IAAI;YACPgB,QAAQ,EAAE;cACR,GAAGhB,IAAI,CAACgB,QAAQ;cAChBQ;YACF;UACF,CAAC;QACH;QAEA,OAAOxB,IAAI;MACb,CAAC,CAAC;IACJ;IAEA,OAAO,KAAK,CAAC;EACf;;EAEA;AACF;EACE,IAAIgC,OAAO,GAAQ;IACjB,OAAO,IAAI,CAACjC,UAAU,CAACiC,OAAO,IAAI,KAAK,CAAC;EAC1C;;EAEA;AACF;EACE,IAAIO,OAAO,GAAQ;IACjB,OAAO,IAAI,CAACxC,UAAU,CAACwC,OAAO,IAAI,KAAK,CAAC;EAC1C;;EAEA;AACF;EACE,IAAIC,QAAQ,GAAY;IACtB,OAAO,IAAI,CAACzC,UAAU,CAACyC,QAAQ,IAAI,KAAK;EAC1C;;EAEA;AACF;EACE,IAAIC,aAAa,GAAQ;IACvB,OAAO,IAAI,CAAC1C,UAAU,CAAC0C,aAAa,IAAI,KAAK,CAAC;EAChD;;EAEA;AACF;EACE,IAAIf,QAAQ,GAA+B;IACzC,OAAO,IAAI,CAACf,SAAS,IAAI,EAAE;EAC7B;;EAEA;AACF;EACE,IAAIU,OAAO,GAAW;IACpB,IAAI,IAAI,CAACtB,UAAU,CAACsB,OAAO,EAAE;MAC3B,MAAMqB,aAAa,GAAG,IAAAjC,aAAI,EAAC,IAAI,CAACV,UAAU,CAACsB,OAAO,EAAE,CAClD,QAAQ,EACR,OAAO,EACP,UAAU,EACV,YAAY,EACZ,MAAM,CACP,CAAC;MAEF,IAAI,mBAAYqB,aAAa,CAAC,CAACC,MAAM,GAAG,CAAC,EAAE;QACzC,OAAOD,aAAa;MACtB;IACF;IAEA,OAAO,IAAI;EACb;;EAEA;AACF;EACEE,OAAO,GAAW;IAAA;IAChB,OAAO;MACLlD,GAAG,EAAE,IAAI,CAACA,GAAG;MACbkC,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBQ,MAAM,EAAE,IAAI,CAACA,MAAM;MACnB5B,MAAM,EAAE,IAAI,CAAC6B,KAAK;MAClBb,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCC,eAAe,EAAE,IAAI,CAACA,eAAe;MACrCO,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBO,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCf,QAAQ,EAAE,kCAAI,CAACA,QAAQ,kBAAMmB,KAAK,IAChChD,KAAK,CAACC,OAAO,CAAC+C,KAAK,CAAC,GAChB,kBAAAA,KAAK,OAALA,KAAK,EAAMC,QAAQ,IAAKA,QAAQ,CAACF,OAAO,EAAE,CAAC,GAC3CC,KAAK,CAACD,OAAO,EAAE,CACpB;MACDvB,OAAO,EAAE,IAAI,CAACA;IAChB,CAAC;EACH;AACF;AAAC,eAEc9B,mBAAmB;AAAA"}
1
+ {"version":3,"file":"AttributeDataHelper.js","names":["AttributeDataHelper","constructor","data","key","childrenKeys","_key","Array","isArray","_attribute","attr","elementid","name","param","_value","getValue","attributeData","klona","_links","pick","undefined","_children","createChildren","childData","parentKey","childKey","elements","element","has","isPlainObject","parentData","content","createChild","keyObject","dynamicschema","dynamicschemaId","children","childrenIsArray","value","attribute","suggestions","suggestion","options","option","selected","code","static","links","attrDS","message","isResult","referenceDate","pickedContent","length","getData","child","subChild"],"sources":["../../../src/models/attributes/AttributeDataHelper.js"],"sourcesContent":["// @flow\nimport { klona } from \"klona/full\";\nimport pick from \"lodash/pick\";\n\nimport { has, isPlainObject } from \"../../utils/helpers/objects\";\n\n/**\n * This util helps to normalize various attribute data formats available in the modular ui.\n * It fixes differences in choice attributes with dynamic schema's, links on download attributes, composites with various children, etc\n *\n * @private\n */\nclass AttributeDataHelper {\n _key: string;\n _attribute: Object;\n _value: any;\n _children: Array<AttributeDataHelper>;\n\n /**\n */\n constructor(\n data: Object | Array<Object>,\n key: string,\n childrenKeys: Array<Object>\n ) {\n this._key = key;\n\n if (Array.isArray(data)) {\n this._attribute =\n data.find(\n (attr) =>\n attr.elementid === key || attr.name === key || attr.param === key\n ) || {};\n this._value = this.getValue(this._attribute);\n } else {\n const attributeData = klona(data);\n attributeData._links = pick(data._links, [\n \"concept\",\n \"download\",\n \"lookupOptions\",\n \"lookupList\",\n ]);\n\n this._attribute = attributeData;\n\n if (data[key] === undefined || (\"name\" in data && \"param\" in data)) {\n this._value = this.getValue(data);\n } else {\n this._value = data[key];\n }\n }\n\n this._children = this.createChildren(data, childrenKeys);\n }\n\n /**\n */\n childData(\n data: Object | Array<Object>,\n parentKey: string,\n childKey: string\n ): Object {\n if (Array.isArray(data)) {\n if (Array.isArray(this._attribute.elements)) {\n return this._attribute.elements.find(\n (element) => element.elementid === childKey\n );\n }\n } else if (has(data, parentKey) && isPlainObject(data[parentKey])) {\n const parentData = data[parentKey];\n if (isPlainObject(parentData) && data.content?.[childKey]) {\n return { ...parentData, content: data.content[childKey] };\n }\n return parentData;\n } else if (has(data, childKey) && isPlainObject(data[childKey])) {\n return data[childKey];\n }\n\n if (isPlainObject(data)) {\n return data;\n }\n\n return {};\n }\n\n /**\n */\n createChild(\n data: Object | Array<Object>,\n childData: Object,\n keyObject: Object\n ): AttributeDataHelper {\n const dynamicschema =\n isPlainObject(data) && !Array.isArray(data)\n ? data.dynamicschema\n : undefined;\n\n let dynamicschemaId = null;\n if (keyObject.dynamicschemaId) {\n dynamicschemaId = keyObject.dynamicschemaId;\n } else if (\n isPlainObject(data) &&\n typeof data.key === \"string\" &&\n keyObject.key\n ) {\n dynamicschemaId = `${data.key}.${keyObject.key}`;\n }\n\n return new AttributeDataHelper(\n {\n ...childData,\n dynamicschema,\n dynamicschemaId,\n },\n keyObject.key,\n keyObject.children\n );\n }\n\n /**\n */\n createChildren(\n data: Object | Array<Object>,\n childrenKeys: Array<Object> = []\n ): Array<AttributeDataHelper> {\n const childrenIsArray = Array.isArray(this.value);\n\n if (childrenIsArray) {\n return this.value.map((value) =>\n childrenKeys.map((keyObject) => {\n const childData = this.childData(value, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n })\n );\n }\n\n return childrenKeys.map((keyObject) => {\n const childData = this.childData(data, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n });\n }\n\n /**\n */\n getValue(attribute: Object): any {\n if (\"values\" in attribute) {\n return attribute.values;\n }\n\n if (\"value\" in attribute) {\n return attribute.value;\n }\n\n if (\"suggestions\" in attribute) {\n return attribute.suggestions;\n }\n\n if (\"suggestion\" in attribute) {\n return attribute.suggestion;\n }\n\n if (Array.isArray(attribute.options)) {\n return attribute.options\n .filter((option) => option.selected)\n .map((option) => option.code || option.key);\n }\n\n return null;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n get value(): any {\n return this._value;\n }\n\n /**\n */\n get static(): boolean {\n return this._attribute.static || false;\n }\n\n /**\n */\n get links(): any {\n return this._attribute._links || void 0;\n }\n\n /**\n */\n get dynamicschemaId(): string {\n return this._attribute.dynamicschemaId || this.key;\n }\n\n /*\n retrieve the dynamischema by the dynamischemaId\n mentioned in the contributions of the attribute\n */\n /**\n */\n get dynamicschema(): any {\n const { dynamicschema } = this._attribute;\n if (!dynamicschema) {\n return void 0;\n }\n\n if (Array.isArray(dynamicschema)) {\n return dynamicschema;\n } else if (dynamicschema[this.dynamicschemaId]) {\n const attrDS = dynamicschema[this.dynamicschemaId];\n return attrDS.map((attr) => {\n if (attr.elements) {\n return {\n ...attr,\n elements: {\n ...attr.elements,\n dynamicschema,\n },\n };\n }\n\n return attr;\n });\n }\n\n return void 0;\n }\n\n /**\n */\n get options(): any {\n return this._attribute.options || void 0;\n }\n\n /**\n */\n get message(): any {\n return this._attribute.message || void 0;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._attribute.isResult || false;\n }\n\n /**\n */\n get referenceDate(): any {\n return this._attribute.referenceDate || void 0;\n }\n\n /**\n */\n get children(): Array<AttributeDataHelper> {\n return this._children || [];\n }\n\n /**\n */\n get content(): Object {\n if (this._attribute.content) {\n const pickedContent = pick(this._attribute.content, [\n \"header\",\n \"label\",\n \"elements\",\n \"layouthint\",\n \"text\",\n ]);\n\n if (Object.keys(pickedContent).length > 0) {\n return pickedContent;\n }\n }\n\n return null;\n }\n\n /**\n */\n getData(): Object {\n return {\n key: this.key,\n value: this.value,\n static: this.static,\n _links: this.links,\n dynamicschema: this.dynamicschema,\n dynamicschemaId: this.dynamicschemaId,\n options: this.options,\n message: this.message,\n isResult: this.isResult,\n referenceDate: this.referenceDate,\n children: this.children.map((child) =>\n Array.isArray(child)\n ? child.map((subChild) => subChild.getData())\n : child.getData()\n ),\n content: this.content,\n };\n }\n}\n\nexport default AttributeDataHelper;\n"],"mappings":"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"}