@icure/form 3.0.39 → 3.0.40
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.
- package/.yarn/cache/{@babel-runtime-npm-7.26.10-d01a90d446-22d2e0abb8.zip → @babel-runtime-npm-7.28.4-31bc1b0001-934b0a0460.zip} +0 -0
- package/.yarn/cache/{@icure-motss-app-datepicker-npm-6.0.0-rc.39-d00d21c35a-eefaed31a8.zip → @icure-motss-app-datepicker-npm-6.0.0-rc.40-ca1da7abbb-9bbe2bed34.zip} +0 -0
- package/.yarn/cache/@lit-labs-ssr-dom-shim-npm-1.4.0-e5ef5fbeba-e267c25576.zip +0 -0
- package/.yarn/cache/{@lit-reactive-element-npm-2.1.0-77512b732b-fb36e9f64b.zip → @lit-reactive-element-npm-2.1.1-3875228c32-b9bbc9c089.zip} +0 -0
- package/.yarn/cache/{@lit-task-npm-1.0.2-01d3dd32e9-22e1265a62.zip → @lit-task-npm-1.0.3-48f265b3e9-790b6a2603.zip} +0 -0
- package/.yarn/cache/{lit-element-npm-4.1.1-bb20932b82-74d0f2d6fb.zip → lit-element-npm-4.2.1-b5bc114ced-5925326176.zip} +0 -0
- package/.yarn/cache/{lit-html-npm-3.2.1-1662fc597d-1bacd9f8b2.zip → lit-html-npm-3.3.1-e3722d4f4a-de07c66945.zip} +0 -0
- package/.yarn/cache/{lit-npm-3.2.1-27cb5b7782-ee22bbc53d.zip → lit-npm-3.3.1-8f683c51f1-fb88f1ff80.zip} +0 -0
- package/.yarn/cache/{prosemirror-commands-npm-1.7.0-212f35173c-a39225d534.zip → prosemirror-commands-npm-1.7.1-5b2afb6640-2316c40ea2.zip} +0 -0
- package/.yarn/cache/prosemirror-history-npm-1.5.0-e639d02880-6afb0e1d17.zip +0 -0
- package/.yarn/cache/prosemirror-keymap-npm-1.2.3-0e7e0c8195-0a2eed2771.zip +0 -0
- package/.yarn/cache/prosemirror-model-npm-1.25.4-e7ee2df3df-ab5aa609df.zip +0 -0
- package/.yarn/cache/prosemirror-state-npm-1.4.4-8b7e3a396c-1b5dba46c2.zip +0 -0
- package/.yarn/cache/prosemirror-transform-npm-1.10.5-5b3b4f5f61-6f5921e53a.zip +0 -0
- package/.yarn/cache/prosemirror-view-npm-1.41.4-cf361fd330-b663b8c6ce.zip +0 -0
- package/.yarn/install-state.gz +0 -0
- package/components/common/field.d.ts +0 -1
- package/components/common/field.js +0 -5
- package/components/common/field.js.map +1 -1
- package/components/common/metadata-buttons-bar.d.ts +1 -1
- package/components/common/metadata-buttons-bar.js +2 -6
- package/components/common/metadata-buttons-bar.js.map +1 -1
- package/components/icure-button/index.js +0 -4
- package/components/icure-button/index.js.map +1 -1
- package/components/icure-button-group/index.js +0 -4
- package/components/icure-button-group/index.js.map +1 -1
- package/components/icure-date-picker/index.d.ts +2 -2
- package/components/icure-date-picker/index.js +3 -7
- package/components/icure-date-picker/index.js.map +1 -1
- package/components/icure-dropdown-field/index.js +0 -4
- package/components/icure-dropdown-field/index.js.map +1 -1
- package/components/icure-form/fields/button-group/checkbox.d.ts +0 -1
- package/components/icure-form/fields/button-group/checkbox.js +2 -39
- package/components/icure-form/fields/button-group/checkbox.js.map +1 -1
- package/components/icure-form/fields/button-group/radio-button.d.ts +0 -1
- package/components/icure-form/fields/button-group/radio-button.js +2 -39
- package/components/icure-form/fields/button-group/radio-button.js.map +1 -1
- package/components/icure-form/fields/date-picker/date-picker.d.ts +0 -1
- package/components/icure-form/fields/date-picker/date-picker.js +17 -54
- package/components/icure-form/fields/date-picker/date-picker.js.map +1 -1
- package/components/icure-form/fields/date-picker/date-time-picker.d.ts +0 -1
- package/components/icure-form/fields/date-picker/date-time-picker.js +17 -54
- package/components/icure-form/fields/date-picker/date-time-picker.js.map +1 -1
- package/components/icure-form/fields/date-picker/time-picker.d.ts +0 -1
- package/components/icure-form/fields/date-picker/time-picker.js +17 -54
- package/components/icure-form/fields/date-picker/time-picker.js.map +1 -1
- package/components/icure-form/fields/dropdown/dropdown-field.d.ts +0 -1
- package/components/icure-form/fields/dropdown/dropdown-field.js +2 -39
- package/components/icure-form/fields/dropdown/dropdown-field.js.map +1 -1
- package/components/icure-form/fields/items-list-field/items-list-field.d.ts +0 -1
- package/components/icure-form/fields/items-list-field/items-list-field.js +17 -55
- package/components/icure-form/fields/items-list-field/items-list-field.js.map +1 -1
- package/components/icure-form/fields/measure-field/measure-field.d.ts +0 -1
- package/components/icure-form/fields/measure-field/measure-field.js +2 -39
- package/components/icure-form/fields/measure-field/measure-field.js.map +1 -1
- package/components/icure-form/fields/number-field/number-field.d.ts +0 -1
- package/components/icure-form/fields/number-field/number-field.js +18 -55
- package/components/icure-form/fields/number-field/number-field.js.map +1 -1
- package/components/icure-form/fields/text-field/text-field.d.ts +0 -1
- package/components/icure-form/fields/text-field/text-field.js +28 -65
- package/components/icure-form/fields/text-field/text-field.js.map +1 -1
- package/components/icure-form/fields/token-field/token-field.d.ts +0 -1
- package/components/icure-form/fields/token-field/token-field.js +17 -55
- package/components/icure-form/fields/token-field/token-field.js.map +1 -1
- package/components/icure-form/fields/utils/index.d.ts +0 -1
- package/components/icure-form/fields/utils/index.js +0 -2
- package/components/icure-form/fields/utils/index.js.map +1 -1
- package/components/icure-form/index.d.ts +1 -1
- package/components/icure-form/index.js +5 -26
- package/components/icure-form/index.js.map +1 -1
- package/components/icure-form/renderer/form/form-selection-button.js +0 -4
- package/components/icure-form/renderer/form/form-selection-button.js.map +1 -1
- package/components/icure-form/renderer/form/form.d.ts +2 -7
- package/components/icure-form/renderer/form/form.js +454 -618
- package/components/icure-form/renderer/form/form.js.map +1 -1
- package/components/icure-form/renderer/index.d.ts +1 -1
- package/components/icure-form/renderer/index.js.map +1 -1
- package/components/icure-label/index.js +0 -4
- package/components/icure-label/index.js.map +1 -1
- package/components/icure-text-field/index.js +11 -10
- package/components/icure-text-field/index.js.map +1 -1
- package/components/model/index.d.ts +1 -15
- package/components/model/index.js +2 -13
- package/components/model/index.js.map +1 -1
- package/generic/model.d.ts +6 -6
- package/generic/model.js.map +1 -1
- package/icure/form-values-container.d.ts +42 -63
- package/icure/form-values-container.js +151 -192
- package/icure/form-values-container.js.map +1 -1
- package/icure/icure-utils.js +12 -30
- package/icure/icure-utils.js.map +1 -1
- package/icure/model.d.ts +2 -9
- package/icure/model.js +1 -7
- package/icure/model.js.map +1 -1
- package/package.json +1 -2
- package/utils/code-utils.d.ts +2 -3
- package/utils/code-utils.js +6 -5
- package/utils/code-utils.js.map +1 -1
- package/.yarn/cache/@icure-cardinal-sdk-npm-1.3.0-ts-2-d77151b3e6-86e1497829.zip +0 -0
- package/.yarn/cache/@js-joda-core-npm-3.2.0-d2526290e9-64625c2f22.zip +0 -0
- package/.yarn/cache/@lit-labs-ssr-dom-shim-npm-1.3.0-6bfa115c08-c2003e8bb6.zip +0 -0
- package/.yarn/cache/@lit-reactive-element-npm-2.0.4-4836436301-368d788d9e.zip +0 -0
- package/.yarn/cache/format-util-npm-1.0.5-a524ca953a-0c8622e54a.zip +0 -0
- package/.yarn/cache/prosemirror-history-npm-1.4.1-ad68c86bb7-90f9bf59bc.zip +0 -0
- package/.yarn/cache/prosemirror-keymap-npm-1.2.2-efb8276b00-85fe4fc303.zip +0 -0
- package/.yarn/cache/prosemirror-model-npm-1.25.0-0870b04e23-e311e1e36c.zip +0 -0
- package/.yarn/cache/prosemirror-state-npm-1.4.3-d6540e44ad-28857d935c.zip +0 -0
- package/.yarn/cache/prosemirror-transform-npm-1.10.3-fb23bef7a8-8cbe29501e.zip +0 -0
- package/.yarn/cache/prosemirror-view-npm-1.38.1-8cfb4ec84f-12f7f4d27f.zip +0 -0
- package/.yarn/cache/regenerator-runtime-npm-0.14.1-a6c97c609a-9f57c93277.zip +0 -0
- package/.yarn/cache/ws-npm-8.18.0-56f68bc4d6-91d4d35bc9.zip +0 -0
- package/utils/form-value-container.d.ts +0 -3
- package/utils/form-value-container.js +0 -30
- package/utils/form-value-container.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-values-container.js","sourceRoot":"","sources":["../../tmp/icure/form-values-container.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAiC,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACtI,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAA;AAEzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,sBAAsB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC7H,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,IAAI,SAAS,GAAG,CAAC,CAAA;AACjB,IAAI,SAAS,GAAG,CAAC,CAAA;AAEjB,SAAS,MAAM,CACd,CAA4G,EAC5G,GAAyC,EACzC,iBAAoC,EAAE,EACtC,UAA8B,SAAS,EACvC,KAAyB,SAAS,EAClC,OAAO,GAAG,KAAK;IAEf,OAAO,CAAC,GAAG,CACV,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,IAAI,0CAA2C,GAAW,CAAC,KAAK,CAAC,QAAQ,OAAO,OACxF,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAClG,EAAE,CACF,CAAA;IACD,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;AAChC,CAAC;AASD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,0BAA0B;IAqDtC,QAAQ;QACP,OAAO,WAAW,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAA;IAC3I,CAAC;IAEO,OAAO;QACd,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;YAC3D,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;SAC7C,CAAA;IACF,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,EACX,WAAW,EACX,0BAA0B,EAC1B,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,UAAU,GAAG,CAAC,EACd,OAAO,GAsCP;QA3IO,QAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAA;QAa5B,0BAAqB,GAQhC,GAAG,EAAE,CAAC,EAAE,CAAA;QACG,4BAAuB,GAQlC,GAAG,EAAE,CAAC,EAAE,CAAA;QACG,uBAAkB,GAM7B,GAAG,EAAE,CAAC,EAAE,CAAA;QACG,aAAQ,GAAW,IAAI,CAAA;QAChC,oBAAe,GAA0F,EAAE,CAAA;QAClG,uBAAkB,GAA0C,EAAE,CAAA;QAC9D,wBAAmB,GAOhC,EAAE,CAAA;QA4FL,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,iDAAiD,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,qBAAqB,EAAE,CAAC,CAAA;QAC3G,gHAAgH;QAChH,IAAI,CAAC,0BAA0B,GAAG,0BAA0B,CAAA;QAC5D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAChE,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,aAAvB,uBAAuB,cAAvB,uBAAuB,GAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACpE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI,CAAA;QAChC,IAAI,CAAC,eAAe,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,EAAE,CAAA;QAC5C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,EAAE,CAAA;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,0BAA0B,CAAC,cAAc,CAAA;QAEnE,MAAM,4BAA4B,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAEvD,IAAI,CAAC,eAAe,GAAG,+DAAsH,EAAE,oGAAjH,6BAAyD,EAAE,cAAiC,EAAE,OAAO,GAAG,KAAK;YAC1I,6BAA6B,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAC5E,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YACzD,MAAM,4BAA4B,GAAG,IAAI,0BAA0B,iCAC/D,IAAI,CAAC,OAAO,EAAE,KACjB,0BAA0B,EAAE,6BAA6B,EACzD,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EACtI,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzI,OAAO,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACpC,CAAC,iCAAM,GAAG,KAAE,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IACnF,CAAC,iCAAM,GAAG,KAAE,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,GAAE,CAAA;gBAC3E,CAAC,EAAE,EAAE,CAAC,EACN,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,mCAAmC,EAC5C,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,IAChD,CAAA;YACF,4BAA4B,CAAC,OAAO,GAAG,IAAI,CAAA;YAC3C,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,4BAA4B,EAAE,cAAc,EAAE,mCAAmC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAE3I,OAAO,4BAA4B,CAAA;QACpC,CAAC,CAAA,CAAA;QAED,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC5E,IAAI,CAAC,mBAAmB;YACvB,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,UAAU,GAAG,IAAI;gBAC9D,CAAC,CAAC,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,EAAE;gBAC3B,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAC3B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,EAClJ,cAAc,CACb,CAAA;QAEL,qIAAqI;QAErI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;YACpI,kBAAkB;iBAChB,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE;;gBAC3B,IAAI,4BAA4B,CAAC,OAAO,EAAE,CAAC;oBAC1C,OAAM;gBACP,CAAC;gBACD,0FAA0F;gBAE1F,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAA;gBACxD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;gBAEpD,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;oBACzD,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,IAAI,CAAA;oBACjC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;wBACjE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBAC9C,CAAC;oBACD,IAAI,QAAQ,EAAE,CAAC;wBACd,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBAC7B,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,kBAAkB,KAAK,EAAE,CAAC,CAAA;oBACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;wBACxG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,8BAA8B,CAAC,CAAA;oBACvD,CAAC;yBAAM,CAAC;wBACP,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,CAAC;4BACnE,4BAA4B,CAAC,OAAO,GAAG,IAAI,CAAA;4BAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,6BAA6B,CAAC,CAAA;4BACrD,MAAM,4BAA4B,GAAG,IAAI,0BAA0B,iCAC/D,IAAI,CAAC,OAAO,EAAE,KACjB,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CACnE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,iCAAM,GAAG,KAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAG,CAAC,iCAAM,GAAG,KAAE,CAAC,MAAM,CAAC,kCAAO,CAAC,KAAE,MAAM,EAAE,UAAU,MAAI,CAAC,EACvH,EAAE,CACF,EACD,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,sBAAsB,IAC9B,CAAA;4BACF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,4BAA4B,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;wBACnH,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC,CAAC;iBACD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAC,oEAAoE;QAC5F,CAAC,CAAC,CAAA;IACH,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAA;IAClD,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,CAAA;IACnD,CAAC;IAED,6BAA6B;QAC5B,OAAO,IAAI,CAAC,0BAA0B,CAAA;IACvC,CAAC;IAED,sBAAsB,CAAC,QAA2F;QACjH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,wBAAwB,CAAC,QAA2F;QACnH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC1E,CAAC;IAED,SAAS,CAAC,eAAqF;QAC9F,OAAO,MAAM,CAAC,OAAO,CACpB,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CACzD,eAAe,CACd,EAAE,EACF,OAAO;aACL,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;aAChG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;;YAAC,OAAA,CAAC;gBAC5C,QAAQ;gBACR,QAAQ;gBACR,KAAK,EAAE;oBACN,KAAK,EAAE,EAAE,CAAC,KAAK;oBACf,KAAK,EAAE,EAAE,CAAC,WAAW;oBACrB,IAAI,EAAE,MAAA,EAAE,CAAC,IAAI,0CAAE,GAAG,CAAC,cAAc,CAAC;oBAClC,SAAS,EAAE,EAAE,CAAC,SAAS;iBACvB;aACD,CAAC,CAAA;SAAA,CAAC,CACJ,CACD,CACD,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;YAC/B,uCACI,GAAG,KACN,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;;oBAAC,OAAA,CAAC;wBACxD,QAAQ;wBACR,QAAQ;wBACR,KAAK,EAAE;4BACN,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAA,CAAC,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;gCACnE,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gCAClD,OAAO,SAAS,CAAC,CAAC,iCAAM,GAAG,KAAE,CAAC,GAAG,CAAC,EAAE,SAAS,IAAG,CAAC,CAAC,GAAG,CAAA;4BACtD,CAAC,EAAE,EAAE,CAAC;4BACN,KAAK,EAAE,MAAA,CAAC,CAAC,KAAK,0CAAE,GAAG,CAAC,cAAc,CAAC;yBACnC;qBACD,CAAC,CAAA;iBAAA,CAAC,IACH;QACF,CAAC,EAAE,EAA+B,CAAC,CAAA;IACpC,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,SAA4B;QACnD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CACvF,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,iCACpB,GAAG,KACN,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxD,QAAQ;gBACR,QAAQ;gBACR,KAAK,EAAE;oBACN,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,CAAC,CAAC,WAAW;oBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,kBAAkB,EAAE,GAAG,EAAE;;wBAAC,OAAA,iCACtB,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACvE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAA,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC/I,CAAA;qBAAA;iBACF;aACD,CAAC,CAAC,IACF,EACF,EAAE,CACF,CAAA;IACF,CAAC;IAEO,eAAe,CAAC,QAAiB;;QACxC,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YACvE,OAAO,QAAsB,CAAA;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC,MAAM,CACrB,CAAC,GAAe,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;;gBAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;gBACnC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;oBACtB,OAAO,GAAG,CAAA;gBACX,CAAC;gBACD,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,MAAA,EAAE,CAAC,KAAK,mCAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAA,GAAG,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,CAAA;gBACvD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAA,MAAA,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,0CAAE,KAAK;oBACxC,CAAC,iCACI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KACnB,CAAC,MAAA,CAAC,MAAA,EAAE,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mCAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,IAEnE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACnB,OAAO,GAAG,CAAA;YACX,CAAC,EACD,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CACrD,CAAA;QACF,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QACjE,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QACjE,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QAClE,CAAC;QAED,IAAI,QAAQ,YAAY,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;QACrF,CAAC;QAED,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACjI,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,QAAQ,EAAE,mCAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QAC/G,CAAC;QAED,OAAO,SAAS,CAAA;IACjB,CAAC;IAEO,oBAAoB,CAAC,mBAAgD,EAAE,cAAkC;QAChH,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc;YAC7D,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,MAAM,CAC1J,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC/C,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;oBACvD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;oBACpD,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM;wBACxD,CAAC,iCACI,GAAG,KACN,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAExG,CAAC,CAAC,GAAG,CAAA;gBACP,CAAC;qBAAM,CAAC;oBACP,OAAO,GAAG,CAAA;gBACX,CAAC;YACF,CAAC,EACD,mBAAmB,CAClB;YACH,CAAC,CAAC,mBAAmB,CAAA;IACvB,CAAC;IAEO,sBAAsB,CAAC,mBAAgD,EAAE,cAAkC;QAClH,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc;YAC7D,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,MAAM,CAC5J,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC/C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,SAAS;oBACvD,CAAC,iCACI,GAAG,KACN,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAExG,CAAC,CAAC,GAAG,CAAA;YACP,CAAC,EACD,mBAAmB,CAClB;YACH,CAAC,CAAC,mBAAmB,CAAA;IACvB,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,QAAgB,EAAE,EAAe,EAAE,EAAW,EAAE,QAAwB,EAAE,CAAa,EAAE,OAAO,GAAG,KAAK;QAC/H,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,iBAAiB,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,CAAA;QAC9E,OAAO,oCAAoC,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IACzH,CAAC;IAED,WAAW,CAAC,IAAmB,EAAE,EAAuB;;QACvD,OAAO,IAAI,CAAC,0BAA0B,CAAC,WAAW,CACjD;YACC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;SAClD,EACD,EAAE,CACF,CAAA;IACF,CAAC;IAED,MAAM,CAAC,SAAiB;QACvB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IAEO,wBAAwB,CAAC,GAAoB;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,mBAAC,OAAA,CAAC,CAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,0CAAE,KAAK,0CAAE,KAAK,KAAI,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,0CAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAA;IACxI,CAAC;IAEK,OAAO,CAKX,OAAe,EAAE,OAAW;;;YAC7B,qCAAqC;YACrC,MAAM,YAAY,GAAG,CAAC,OAA0C,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE;;gBACrF,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,OAAO,SAAS,CAAA;gBACjB,CAAC;gBACD,MAAM,SAAS,GAAG,MAAA,MAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC,mCAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5F,OAAO,SAAS,IAAI,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACxD,CAAC,CAAA;YACD,MAAM,IAAI,GAAG,CACZ,IAIM,EACL,EAAE;gBACH,IAAI,CAAC,IAAI,EAAE,CAAC;oBACX,OAAO,SAAS,CAAA;gBACjB,CAAC;gBACD,MAAM,KAAK,GAAoD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAClG,OAAO,KAAK;qBACV,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,MAAA,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,0CAAE,QAAQ,EAAE,CAAA,EAAA,CAAC;qBACvD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACpB,IAAI,CAAC,IAAI,CAAC,CAAA;YACb,CAAC,CAAA;YACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;YACvB,qCAAqC;YACrC,MAAM,MAAM,GAAG;gBACd,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,CACV,EAEC,EACD,MAAc,EACb,EAAE,WAAC,OAAA,EAAE,KAAI,MAAA,EAAE,CAAC,KAAK,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,eAAC,OAAA,CAAC,CAAC,EAAE,KAAK,MAAM,IAAI,CAAA,MAAA,MAAA,CAAC,CAAC,EAAE,0CAAE,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,MAAK,MAAM,CAAA,EAAA,CAAC,CAAA,CAAA,EAAA;gBACrF,KAAK,EAAE,CAAC,EAAyB,EAAE,EAAE;;oBACpC,OAAO,EAAE;wBACR,CAAC,CAAC,CAAC,MAAA,EAAE,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;;4BACnC,IAAI,CAAC;gCACJ,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAA,MAAA,MAAA,CAAC,CAAC,EAAE,0CAAE,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,mCAAI,GAAG,CAAC,CAAA;4BACpD,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACZ,OAAO,GAAG,CAAA;4BACX,CAAC;wBACD,CAAC,EAAE,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC,CAAA;gBACL,CAAC;gBACD,YAAY;gBACZ,QAAQ,EAAE;oBACT,QAAQ,EAAE,CAAC,IAAS,EAAE,KAAa,EAAE,EAAE;;wBACtC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAA,MAAC,IAAI,CAAC,KAAY,CAAS,0CAAG,CAAC,CAAC,0CAAE,OAAO,CAAC,CAAA;wBACrE,OAAO,CAAC,CAAC,CAAA,MAAC,KAAa,aAAb,KAAK,uBAAL,KAAK,CAAU,IAAI,EAAE,0CAAE,MAAM,CAAA,CAAA;oBACxC,CAAC;iBACD;gBACD,IAAI;gBACJ,GAAG;gBACH,OAAO;aACmB,CAAA;YAC3B,MAAM,KAAK,GAAM,IAAI,KAAK,CAAC,EAAO,EAAE;gBACnC,GAAG,EAAE,CAAC,OAAU,EAAE,GAAoB,EAAE,EAAE,WACzC,OAAA,CAAC,CAAC,MAAM,CAAC,GAAa,CAAC,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAa,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA,EAAA;gBAC1J,GAAG,EAAE,CAAC,OAAU,EAAE,GAAoB,EAAE,EAAE;oBACzC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;wBACzB,OAAO,SAAS,CAAA;oBACjB,CAAC;oBACD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAa,CAAC,CAAA;oBACzC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;wBACnB,OAAO,WAAW,CAAA;oBACnB,CAAC;oBACD,OAAO,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAa,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAA,EAAA,CAAC,CAAA;gBAC9L,CAAC;aACD,CAAC,CAAA;YACF,OAAO,MAAA,IAAI,CAAC,WAAW,qDAAG,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,KAAK,CAAC,CAAA;QACrD,CAAC;KAAA;IAED,oBAAoB,CAAC,KAAa;;QACjC,OAAO,CAAA,MAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,0CAAE,MAAM,MAAK,SAAS,CAAA;IAC7D,CAAC;IAEK,WAAW;;YAChB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,CACC,MAAM,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CACnD,CAAC,GAAG,CACJ,CAAC,GAAG,EAAE,EAAE,CACP,IAAI,0BAA0B,CAAC;gBAC9B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,0BAA0B,EAAE,GAAG;gBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;gBACrD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,OAAO,EAAE,gBAAgB;aACzB,CAAC,CACH,CACD,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,sBAAsB,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;YAC5J,OAAO,QAAQ,CAAA;QAChB,CAAC;KAAA;IAEK,mBAAmB;;YACxB,IAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC7D,+BAA+B;gBAC/B,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CACnJ,mBAA6C,EAAE,wDAAxC,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;oBAC1C,OAAA,MAAM,UAAU,CAAC,MAAM,CAAC,mBAA4C,EAAE,wDAAvC,UAAU,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;wBACjE,MAAM,GAAG,GAAG,MAAM,UAAU,CAAA;wBAC5B,IAAI,CAAC;4BACJ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gCACvC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;4BAC9B,CAAC;wBACF,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACZ,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAA;wBACpE,CAAC;wBACD,OAAO,GAAG,CAAA;oBACX,CAAC,CAAA,EAAE,UAAU,CAAC,CAAA;kBAAA,EACf,OAAO,CAAC,OAAO,CAAC,EAAE,CAAuC,CACzD,CAAA;YACF,CAAC;iBAAM,CAAC;gBACP,OAAO,EAAE,CAAA;YACV,CAAC;QACF,CAAC;KAAA;IAEK,QAAQ,CAAC,QAAgB,EAAE,UAAkB,EAAE,KAAa;;YACjE,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;QAC5E,CAAC;KAAA;IAEK,WAAW,CAAC,SAAqC;;YACtD,MAAM,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAA;QACxF,CAAC;KAAA;IAED,WAAW;QACV,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAA;QAC7C,OAAO,IAAI,CAAA;IACZ,CAAC;CACD;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,0BAA0B;IAatC,QAAQ;QACP,OAAO,WAAW,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAA;IACrF,CAAC;IAED;;OAEG;IACH,kBAAkB;;QACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAA;QACzE,MAAM,kBAAkB,GAAG,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,CAAC,MAAA,EAAE,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,EAAA,CAAC,CAAA;QAC9K,OAAO,IAAI,gBAAgB,iCACvB,IAAI,CAAC,cAAc,KACtB,QAAQ,EAAE,gBAAgB;iBACxB,MAAM,CAAC,CAAC,GAAuB,EAAE,CAAmB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,MAAM,CAAC,MAAA,CAAC,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAA,EAAA,EAAE,EAAE,CAAC;iBAC1F,MAAM,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC/F,WAAW,EAAE,gBAAgB;iBAC3B,MAAM,CAAC,CAAC,GAA0B,EAAE,CAAmB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,MAAM,CAAC,MAAA,CAAC,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAA,EAAA,EAAE,EAAE,CAAC;iBAChG,MAAM,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAC7F,CAAA;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACP,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,YACC,QAAsB,EACtB,cAAgC,EAChC,eAAmC,EACnC,cAAuE,EACvE,QAAsC,EACtC,WAAiH,EACjH,YAA+C,EAC/C,kBAAyG,EAAE;QAE3G,iHAAiH;QAzClH,QAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAA;QA2CpC,IAAI,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;QACrF,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QACnE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QAEtC,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;YAC7F,OAAO,CACN,MAAA,MAAA,MAAA,GAAG,CAAC,QAAQ,0CACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,GAAG,CAAC,WAAW,0CAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAI,MAAA,EAAE,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA,CAAA,EAAA,CAAC,CAAA,EAAA,CAAC,0CAClI,MAAM,CACP,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;;gBACV,OAAA,CAAC,CAAC,EAAE;oBACH,CAAC,iCACI,GAAG,KACN,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mCAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;4BAC9C,QAAQ,EAAE,MAAA,GAAG,CAAC,GAAG,mCAAI,IAAI;4BACzB,QAAQ,EAAE,GAAG,CAAC,OAAO;4BACrB,KAAK,EAAE,CAAC;yBACR,CAAC,IAEJ,CAAC,CAAC,GAAG,CAAA;aAAA,EACP,GAAG,CACH,mCAAI,GAAG,CACT,CAAA;QACF,CAAC,EAAE,EAAqC,CAAC,CAAA;QAEzC,IAAI,CAAC,WAAW,EAAE,CAAA;IACnB,CAAC;IAED,WAAW;QACV,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,iGAAiG;IACjG,gCAAgC,CAAC,uBAAmD;QACnF,uBAAuB,CAAC,eAAe,GAAG;YACzC,CAAC,QAAQ,EAAE,EAAE;gBACZ,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,IAAI,uBAAuB,CAAC,QAAQ,CAAC,cAAc,6BAA6B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAA;gBAC5J,MAAM,6BAA6B,GAAG,IAAI,0BAA0B,CACnE,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACvB,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5E,CAAC,CAAC,EACF,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,CACjB,CAAA;gBACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,6BAA6B,EAAE,EAAE,EAAE,SAAS,uBAAuB,CAAC,QAAQ,CAAC,cAAc,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAChK,CAAC;SACD,CAAA;IACF,CAAC;IAED,MAAM,CAAO,kBAAkB;6DAC9B,QAAsB,EACtB,cAAgC,EAChC,eAAmC,EACnC,cAAuE,EACvE,oBAA+E,EAC/E,WAAiH,EACjH,YAA+C,EAC/C,kBAAsE,EAAE;YAExE,MAAM,0BAA0B,GAAG,IAAI,0BAA0B,CAChE,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,QAAQ,CAAC,EAAE;gBACV,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CACjB,CACC,MAAM,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CACvC,CAAC,GAAG,CACJ,CAAO,CAAC,EAAE,EAAE;gBACX,mCAAmC;gBACnC,OAAA,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA,GAAA,CACzJ,CACA;gBACH,CAAC,CAAC,EAAE,EACL,WAAW,EACX,YAAY,EACZ,eAAe,CACf,CAAA;YACD,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,0BAA0B,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAA;YAEhI,OAAO,0BAA0B,CAAA;QAClC,CAAC;KAAA;IAED,QAAQ;;QACP,OAAO,MAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,mCAAI,EAAE,CAAA;IACjC,CAAC;IAED,SAAS;;QACR,OAAO,MAAA,IAAI,CAAC,QAAQ,0CAAE,cAAc,CAAA;IACrC,CAAC;IAED,sBAAsB,CAAC,QAA2F;QACjH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,wBAAwB,CAAC,QAA2F;QACnH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC1E,CAAC;IAEK,WAAW;;YAChB,OAAO,IAAI,CAAC,QAAQ,CAAA;QACrB,CAAC;KAAA;IAEK,mBAAmB;;YACxB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC7D,CAAC;KAAA;IAED,SAAS,CAAC,eAAuF;QAChG,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CACvE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CACtB,OAAO,CAAC,MAAM;YACb,CAAC,iCACI,GAAG,KACN,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,KAAI,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,KAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAEhG,CAAC,CAAC,GAAG,EACP,EAAE,CACF,CAAA;IACF,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,SAA4B;QACnD,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;aAC1B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;aAC5B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACrE,MAAM,CACN,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;YACZ,OAAA,MAAA,CAAC,MAAA,GAAG,CAAC,QAAQ,mCAAI,EAAE,CAAC;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;iBAC1B,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;;gBACV,OAAA,CAAC,CAAC,EAAE;oBACH,CAAC,iCACI,GAAG,KACN,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mCAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;4BAC9C,QAAQ,EAAE,MAAA,GAAG,CAAC,GAAG,mCAAI,IAAI;4BACzB,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,KAAK,EAAE;gCACN,KAAK,EAAE,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,EAAE;gCACtB,WAAW,EAAE,CAAC,CAAC,WAAW;gCAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;gCACtB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;6BAC5B;yBACD,CAAC,IAEJ,CAAC,CAAC,GAAG,CAAA;aAAA,EACP,GAAG,CACH,mCAAI,GAAG,CAAA;SAAA,EACV,EAAkD,CAClD,CAAA,CAAC,iCAAiC;IACrC,CAAC;IAED,WAAW,CAAC,IAAqB,EAAE,EAAW;;QAC7C,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAClG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC9C,CAAC;QACD,IACC,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC;YAC9D,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;YACxD,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;YAC5C,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EACxC,CAAC;YACF,MAAM,UAAU,GAAG,IAAI,gBAAgB,iCAAM,OAAO,KAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAG,CAAA;YAC7E,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;YAC/D,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;YACzD,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAE1D,MAAM,sBAAsB,GAAG,IAAI,0BAA0B,CAC5D,IAAI,CAAC,QAAQ,kCAET,IAAI,CAAC,cAAc,KACtB,QAAQ,EAAE,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAE3F,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,IAAI,CAAC,EAAE,+BAA+B,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACrI,OAAO,IAAI,CAAA;QACZ,CAAC;aAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACb,CAAC;IACF,CAAC;IAED,QAAQ,CACP,KAAa,EACb,QAAgB,EAChB,KAAwB,EACxB,EAAW,EACX,QAA0B,EAC1B,wBAAoE,EACpE,OAAO,GAAG,KAAK;;QAEf,MAAM,OAAO,GAAG,CAAC,EAAE,KAAI,MAAA,MAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,0CAAG,CAAC,CAAC,0CAAE,KAAK,CAAA,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACjL,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,UAAU,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAG,QAAQ,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAEhE,IAAI,CAAC,cAAc,CAAC,MAAA,OAAO,CAAC,OAAO,0CAAG,QAAQ,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7H,8FAA8F;YAE9F,MAAM,UAAU,GAAG,IAAI,gBAAgB,iCAAM,OAAO,KAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAG,CAAA;YAC7E,MAAM,WAAW,GAAG,UAAU;gBAC7B,CAAC,iCACI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,KAC1B,CAAC,QAAQ,CAAC,EAAE,UAAU,IAExB,CAAC,mBAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAE,CAAA;YACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAA;YAC7B,CAAC;YAED,IAAI,iBAAmC,CAAA;YACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;gBAChF,iBAAiB,mCACb,IAAI,CAAC,cAAc,KACtB,WAAW,EAAE,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChG,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;;4BACnD,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gCACpC,uCACI,EAAE,KACL,QAAQ,EAAE,CAAC,MAAA,EAAE,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,IAC3G;4BACF,CAAC;iCAAM,CAAC;gCACP,OAAO,EAAE,CAAA;4BACV,CAAC;wBACD,CAAC,CAAC;wBACJ,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,MAAM,CAC9C,IAAI,mBAAmB,CAAC;4BACvB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;4BACxB,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;yBACrC,CAAC,CACD,EACJ,QAAQ,EAAE,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;wBAC9E,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;wBACzE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,GAC5C,CAAA;YACF,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,OAAO,GAAG,WAAW,CAAA;gBAChC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAA;gBAE3B,IAAI,QAAQ,EAAE,CAAC;oBACd,UAAU,CAAC,WAAW,GAAG,MAAA,QAAQ,CAAC,WAAW,mCAAI,UAAU,CAAC,WAAW,CAAA;oBACvE,UAAU,CAAC,SAAS,GAAG,MAAA,QAAQ,CAAC,SAAS,mCAAI,UAAU,CAAC,SAAS,CAAA;oBACjE,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAA;oBACjF,UAAU,CAAC,KAAK,GAAG,MAAA,QAAQ,CAAC,KAAK,mCAAI,UAAU,CAAC,KAAK,CAAA;gBACtD,CAAC;gBAED,iBAAiB,mCACb,IAAI,CAAC,cAAc,KACtB,WAAW,EAAE,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChG,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;;4BACnD,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gCACpC,uCACI,EAAE,KACL,QAAQ,EAAE,CAAC,MAAA,EAAE,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,IAC3G;4BACF,CAAC;iCAAM,CAAC;gCACP,OAAO,EAAE,CAAA;4BACV,CAAC;wBACD,CAAC,CAAC;wBACJ,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,MAAM,CAC9C,IAAI,mBAAmB,CAAC;4BACvB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;4BACxB,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;yBACrC,CAAC,CACD,EACJ,QAAQ,EAAE,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;wBAC9E,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACzF,CAAC,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,EAAE,UAAU,CAAC,GACxD,CAAA;YACF,CAAC;YACD,MAAM,sBAAsB,GAAG,IAAI,0BAA0B,CAC5D,IAAI,CAAC,QAAQ,EACb,iBAAiB,EACjB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpF,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YAED,wBAAwB;gBACvB,CAAC,CAAC,wBAAwB,CAAC,sBAAsB,CAAC;gBAClD,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;oBACnC,OAAA,MAAM,CACL,CAAC,EACD,sBAAsB,EACtB;wBACC;4BACC,SAAS,EAAE,UAAU,CAAC,SAAS;4BAC/B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;4BACrC,KAAK,EAAE,MAAA,UAAU,CAAC,KAAK,mCAAI,KAAK;yBAChC;qBACD,EACD,wBAAwB,OAAO,CAAC,EAAE,GAAG,EACrC,IAAI,CAAC,GAAG,EACR,OAAO,CACP,CAAA;iBAAA,CACA,CAAA;YACJ,OAAO,IAAI,CAAA;QACZ,CAAC;aAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACb,CAAC;IACF,CAAC;IAED,MAAM,CAAC,SAAiB;;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,sBAAsB,GAAG,IAAI,0BAA0B,CAC5D,IAAI,CAAC,QAAQ,kCAET,IAAI,CAAC,cAAc,KACtB,QAAQ,EAAE,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,CAAC,CAAC,EAAE,KAAK,SAAS;oBACjB,CAAC,CAAC,IAAI,gBAAgB,iCACjB,OAAO,KACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,IACnB;oBACJ,CAAC,CAAC,CAAC,CACJ,KAEF,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,sBAAsB,EAAE,EAAE,EAAE,kBAAkB,SAAS,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACpH,CAAC;IACF,CAAC;IAEK,OAAO;;YACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAC1D,CAAC;KAAA;IAED,oBAAoB;QACnB,OAAO,KAAK,CAAA;IACb,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAAC,eAAuF;QACnH,iCAAiC;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;YACtB,MAAM,aAAa,GAAG,eAAe,CACpC,EAAE,EACF,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;;gBAAC,OAAA,CAAC;oBAClD,QAAQ;oBACR,QAAQ;oBACR,KAAK,EAAE;wBACN,KAAK,EAAE,MAAA,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,EAAE,mCAAI,EAAE;wBAC5B,KAAK,EAAE,CAAC,CAAC,WAAW;wBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;wBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;qBAC5B;iBACD,CAAC,CAAA;aAAA,CAAC,CACH,CAAA;YACD,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAA0C,CAAA;QACzH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,iCAAM,GAAG,KAAE,CAAC,EAAE,CAAC,EAAE,OAAO,IAAG,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC;IAEK,QAAQ,CAAC,QAAgB,EAAE,UAAkB,EAAE,KAAa;;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;YACjC,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAErB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;YAC7E,MAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;YAErK,MAAM,6BAA6B,GAAG,IAAI,0BAA0B,CACnE,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC5B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YACD,6BAA6B,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAA;YACxE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,6BAA6B,EAAE,EAAE,EAAE,kBAAkB,OAAO,CAAC,cAAc,oBAAoB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACxL,CAAC;KAAA;IAEO,0BAA0B,CAAC,EAAU;;QAC5C,MAAM,OAAO,GAAG,MAAA,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9E,OAAO,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,SAAS,CAAA;IAC5B,CAAC;IAEK,WAAW,CAAC,SAAqC;;YACtD,MAAM,6BAA6B,GAAG,IAAI,0BAA0B,CACnE,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EACpE,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAClC,MAAM,CAAC,CAAC,EAAE,6BAA6B,EAAE,EAAE,EAAE,qBAAqB,SAAS,CAAC,QAAQ,CAAC,cAAc,sBAAsB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAClK,CAAA;QACF,CAAC;KAAA;CACD;AAED,MAAM,oCAAoC,GAAG,CAAC,IAAgC,EAAE,KAAa,EAAE,QAAgB,EAAE,EAAe,EAAE,EAAW,EAAE,QAAwB,EAAE,OAAO,GAAG,KAAK,EAAW,EAAE;;IACpM,MAAM,KAAK,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACnC,OAAO,IAAI,CAAC,QAAQ,CACnB,KAAK,EACL,QAAQ,EACR,IAAI,gBAAgB,CAAC;QACpB,EAAE,EAAE,EAAE;QACN,KAAK,EAAE,MAAA,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,KAAK,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,mCAAI,EAAE;QACnD,OAAO,EAAE,KAAK;YACb,CAAC,CAAC;gBACA,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC;aAClD;YACH,CAAC,CAAC,SAAS;KACZ,CAAC,EACF,EAAE,EACF,QAAQ;QACP,CAAC,CAAC;YACA,KAAK,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,mCAAI,KAAK;YAC/B,WAAW,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK;YAC5B,SAAS,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS;YAC9B,IAAI,EAAE,cAAc,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SAChE;QACH,CAAC,CAAC,SAAS,EACZ,SAAS,EACT,OAAO,CACP,CAAA;AACF,CAAC,CAAA","sourcesContent":["import { CodeStub, DecryptedContact, DecryptedForm as CardinalForm, DecryptedService, DecryptedSubContact } from '@icure/cardinal-sdk'\nimport { sortedBy } from '../utils/no-lodash'\nimport { FormValuesContainer, Version, VersionedData } from '../generic'\nimport { CodeStubWithId, ServiceMetadata } from './model'\nimport { FieldMetadata, FieldValue, Metadata as GenericMetadata, PrimitiveType, Validator } from '../components/model'\nimport { areCodesEqual, codeStubToCode, contentToPrimitiveType, isContentEqual, primitiveTypeToContent } from './icure-utils'\nimport { parsePrimitive } from '../utils/primitive'\nimport { anyDateToDate, dateToFuzzyDate } from '../utils/dates'\nimport { normalizeCodes } from '../utils/code-utils'\n\nlet bfvcIdGen = 0\nlet cfvcIdGen = 0\n\nfunction notify<Value, Metadata>(\n\tl: (fvc: FormValuesContainer<Value, Metadata>, modifiedFields: GenericMetadata[], recurse?: boolean) => void,\n\tfvc: FormValuesContainer<Value, Metadata>,\n\tmodifiedFields: GenericMetadata[] = [],\n\tcontext: string | undefined = undefined,\n\tid: string | undefined = undefined,\n\trecurse = false,\n) {\n\tconsole.log(\n\t\t`${id ?? 'cc'}: Notifying listener with context [>>> ${(fvc as any)['_id']}] -> ${context} <- ${\n\t\t\tmodifiedFields.length ? `and modified fields ${modifiedFields.map((f) => f.label).join(', ')}` : ''\n\t\t}`,\n\t)\n\tl(fvc, modifiedFields, recurse)\n}\n\ntype Computation = {\n\tmetadata: FieldMetadata\n\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\tcomputation: Promise<unknown>\n\tstatus: 'pending' | 'resolved' | 'rejected'\n}\n\n/** This class is a bridge between the ICure API and the generic FormValuesContainer interface.\n * It wraps around a ContactFormValuesContainer and provides a series of services:\n * - It computes dependent values when the form is created\n * - It broadcasts changes from the wrapped ContactFormValuesContainer to its listeners\n * - It provides a way to compute formulas in a sandboxed environment\n * - It bridges the setValues and setMetadata methods with the wrapped ContactFormValuesContainer by\n * \t\t- converting the FieldValue to a Service\n * \t\t- converting the FieldMetadata to a ServiceMetadata\n * - It bridges the getValues and getMetadata methods with the wrapped ContactFormValuesContainer by\n * \t\t- converting the Service to a FieldValue\n * \t\t- converting the ServiceMetadata to a FieldMetadata\n * - It lazily creates bridges the children by\n * - lazily creating BridgedFormValuesContainer when the children of the wrapped ContactFormValuesContainer are accessed\n * - creating a new ContactFormValuesContainer and wrapping it in a BridgedFormValuesContainer when a child is added\n *\n * The icure-form typically accepts a BridgedFormValuesContainer as a prop and uses it to interact with the form.\n *\n * This class is fairly generic and can be used as an inspiration or subclassed for other bridges\n */\nexport class BridgedFormValuesContainer implements FormValuesContainer<FieldValue, FieldMetadata> {\n\tprivate readonly contact: DecryptedContact\n\tprivate readonly contactFormValuesContainer: ContactFormValuesContainer\n\tprivate _id = `B-${(bfvcIdGen++).toString()}`\n\tprivate readonly mutateAndNotify: (newContactFormValuesContainer: ContactFormValuesContainer, modifiedFields: GenericMetadata[]) => Promise<BridgedFormValuesContainer>\n\n\tprivate readonly responsible: string\n\tprivate readonly interpreter?: <\n\t\tT,\n\t\tS extends {\n\t\t\t[key: string | symbol]: unknown\n\t\t},\n\t>(\n\t\tformula: string,\n\t\tsandbox: S,\n\t) => Promise<T | undefined>\n\tprivate readonly initialValuesProvider: (\n\t\tanchorId?: string,\n\t\ttemplateId?: string,\n\t\tmodifiedFields?: GenericMetadata[],\n\t) => {\n\t\tmetadata: FieldMetadata\n\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\tformula: string\n\t}[] = () => []\n\tprivate readonly dependentValuesProvider: (\n\t\tanchorId: string | undefined,\n\t\ttemplateId: string | undefined,\n\t\tmodifiedFields?: GenericMetadata[],\n\t) => {\n\t\tmetadata: FieldMetadata\n\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\tformula: string\n\t}[] = () => []\n\tprivate readonly validatorsProvider: (\n\t\tanchorId: string | undefined,\n\t\ttemplateId: string,\n\t) => {\n\t\tmetadata: FieldMetadata\n\t\tvalidators: Validator[]\n\t}[] = () => []\n\tprivate readonly language: string = 'en'\n\tprivate changeListeners: ((newValue: BridgedFormValuesContainer, modifiedFields: GenericMetadata[]) => void)[] = []\n\tprivate readonly interpreterContext: { [variable: string]: () => unknown } = {}\n\tprivate readonly currentComputations: {\n\t\t[key: string]: {\n\t\t\tmetadata: FieldMetadata\n\t\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\t\tcomputation: Promise<unknown>\n\t\t\tstatus: 'pending' | 'resolved' | 'rejected'\n\t\t}\n\t} = {}\n\n\ttoString(): string {\n\t\treturn `Bridged(${this.contactFormValuesContainer.rootForm.formTemplateId}[${this.contactFormValuesContainer.rootForm.id}]) - ${this._id}`\n\t}\n\n\tprivate options() {\n\t\treturn {\n\t\t\tresponsible: this.responsible,\n\t\t\tcontactFormValuesContainer: this.contactFormValuesContainer,\n\t\t\tinterpreter: this.interpreter,\n\t\t\tcontact: this.contact,\n\t\t\tinitialValuesProvider: this.initialValuesProvider,\n\t\t\tdependentValuesProvider: this.dependentValuesProvider,\n\t\t\tvalidatorsProvider: this.validatorsProvider,\n\t\t\tlanguage: this.language,\n\t\t\tchangeListeners: this.changeListeners,\n\t\t\tinterpreterContext: this.interpreterContext,\n\t\t\tcurrentComputations: this.currentComputations,\n\t\t}\n\t}\n\n\t/**\n\t * Creates an instance of BridgedFormValuesContainer.\n\t * @param responsible The id of the data owner responsible for the creation of the values\n\t * @param contactFormValuesContainer The wrapped ContactFormValuesContainer\n\t * @param interpreter A function that can interpret formulas\n\t * @param contact The displayed contact (may be in the past). === to currentContact if the contact is the contact of the day\n\t * @param initialValuesProvider A lambda that provides the initial values of the form\n\t * @param dependentValuesProvider A function that provides the dependent values (computed on the basis of other values) for a given anchorId and templateId\n\t * @param validatorsProvider A function that provides the validators for a given anchorId and templateId\n\t * @param language The language in which the values are displayed\n\t * @param changeListeners The listeners that will be notified when the values change\n\t * @param interpreterContext A map with keys that are the names of the variables and values that are the functions that return the values of the variables\n\t * @param currentComputations A list of ongoing computations that should be observed and not recomputed when the form is created.\n\t * @param modifiedFields A list of fields that have been modified and should be considered when computing the initial values\n\t * @param stackLevel The stack level at which the BridgedFormValuesContainer is created, used to limit recursion induced by default values computations\n\t * @param context A string that describes the context in which the BridgedFormValuesContainer is created, used for debugging purposes\n\t */\n\tconstructor({\n\t\tresponsible,\n\t\tcontactFormValuesContainer,\n\t\tinterpreter,\n\t\tcontact,\n\t\tinitialValuesProvider,\n\t\tdependentValuesProvider,\n\t\tvalidatorsProvider,\n\t\tlanguage,\n\t\tchangeListeners,\n\t\tinterpreterContext,\n\t\tcurrentComputations,\n\t\tmodifiedFields,\n\t\tstackLevel = 0,\n\t\tcontext,\n\t}: {\n\t\tresponsible: string\n\t\tcontactFormValuesContainer: ContactFormValuesContainer\n\t\tinterpreter?: <T, S extends Record<string | symbol, unknown>>(formula: string, sandbox: S) => Promise<T | undefined>\n\t\tcontact?: DecryptedContact\n\t\tinitialValuesProvider?: (\n\t\t\tanchorId?: string,\n\t\t\ttemplateId?: string,\n\t\t\tmodifiedFields?: GenericMetadata[],\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\t\tformula: string\n\t\t}[]\n\t\tdependentValuesProvider?: (\n\t\t\tanchorId: string | undefined,\n\t\t\ttemplateId: string | undefined,\n\t\t\tmodifiedFields?: GenericMetadata[],\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\t\tformula: string\n\t\t}[]\n\t\tvalidatorsProvider?: (\n\t\t\tanchorId: string | undefined,\n\t\t\ttemplateId: string,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\tvalidators: Validator[]\n\t\t}[]\n\t\tlanguage?: string\n\t\tchangeListeners?: ((newValue: BridgedFormValuesContainer, modifiedFields: GenericMetadata[]) => void)[]\n\t\tinterpreterContext?: Record<string, () => unknown>\n\t\tcurrentComputations?: Record<string, Computation>\n\t\tmodifiedFields?: GenericMetadata[]\n\t\tstackLevel?: number\n\t\tcontext?: string\n\t}) {\n\t\tconsole.log(`${this._id}: Creating BridgedFormValuesContainer because ${context ?? 'no context provided'}`)\n\t\t//Before start to broadcast changes, we need to fill in the contactFormValuesContainer with the dependent values\n\t\tthis.contactFormValuesContainer = contactFormValuesContainer\n\t\tthis.responsible = responsible\n\t\tthis.interpreter = interpreter\n\t\tthis.initialValuesProvider = initialValuesProvider ?? (() => [])\n\t\tthis.dependentValuesProvider = dependentValuesProvider ?? (() => [])\n\t\tthis.validatorsProvider = validatorsProvider ?? (() => [])\n\t\tthis.language = language ?? 'en'\n\t\tthis.changeListeners = changeListeners ?? []\n\t\tthis.interpreterContext = interpreterContext ?? {}\n\t\tthis.contact = contact ?? contactFormValuesContainer.currentContact\n\n\t\tconst isFormValueContainerObsolete = { current: false }\n\n\t\tthis.mutateAndNotify = async (newContactFormValuesContainer: ContactFormValuesContainer, modifiedFields: GenericMetadata[], recurse = false) => {\n\t\t\tnewContactFormValuesContainer.unregisterChangeListener(this.mutateAndNotify)\n\t\t\tconst modifiedLabels = modifiedFields.map((f) => f.label)\n\t\t\tconst newBridgedFormValueContainer = new BridgedFormValuesContainer({\n\t\t\t\t...this.options(),\n\t\t\t\tcontactFormValuesContainer: newContactFormValuesContainer,\n\t\t\t\tcontact: this.contact === this.contactFormValuesContainer.currentContact ? newContactFormValuesContainer.currentContact : this.contact,\n\t\t\t\tcurrentComputations: Object.entries(this.currentComputations).reduce((acc, [label, { metadata, revisionsFilter, computation, status }]) => {\n\t\t\t\t\treturn modifiedLabels.includes(label)\n\t\t\t\t\t\t? { ...acc, [label]: { metadata, revisionsFilter, computation, status: 'resolved' } }\n\t\t\t\t\t\t: { ...acc, [label]: { metadata, revisionsFilter, computation, status } }\n\t\t\t\t}, {}),\n\t\t\t\tmodifiedFields: modifiedFields,\n\t\t\t\tcontext: 'ContactFormValuesContainer change',\n\t\t\t\tstackLevel: recurse ? stackLevel + 1 : stackLevel,\n\t\t\t})\n\t\t\tisFormValueContainerObsolete.current = true\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newBridgedFormValueContainer, modifiedFields, 'ContactFormValuesContainer change', this._id))\n\n\t\t\treturn newBridgedFormValueContainer\n\t\t}\n\n\t\tthis.contactFormValuesContainer.registerChangeListener(this.mutateAndNotify)\n\t\tthis.currentComputations =\n\t\t\t(modifiedFields && !modifiedFields.length) || stackLevel > 1000\n\t\t\t\t? currentComputations ?? {}\n\t\t\t\t: this.computeDependentValues(\n\t\t\t\t\t\tthis.computeInitialValues(Object.fromEntries(Object.entries(currentComputations ?? {}).filter(([, c]) => c.status === 'pending')), modifiedFields),\n\t\t\t\t\t\tmodifiedFields,\n\t\t\t\t )\n\n\t\t//console.log(`bFVC with uuid ${this.uuid} has the following initial computations`, Object.keys(this.currentComputations).join(', '))\n\n\t\tObject.entries(this.currentComputations).forEach(([label, { metadata, revisionsFilter, computation: computationPromise, status }]) => {\n\t\t\tcomputationPromise\n\t\t\t\t.then((computationResult) => {\n\t\t\t\t\tif (isFormValueContainerObsolete.current) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t//console.log(`Computed value for ${label} in ${this.uuid} with computation`, computation)\n\n\t\t\t\t\tconst newValue = this.convertRawValue(computationResult)\n\t\t\t\t\tconst currentValue = this.getValues(revisionsFilter)\n\n\t\t\t\t\tif (newValue !== undefined || currentValue != undefined) {\n\t\t\t\t\t\tconst lng = this.language ?? 'en'\n\t\t\t\t\t\tif (newValue && !newValue.content[lng] && newValue.content['*']) {\n\t\t\t\t\t\t\tnewValue.content[lng] = newValue.content['*']\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\tdelete newValue.content['*']\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconsole.log(`${this._id}: setValue for ${label}`)\n\t\t\t\t\t\tif (this.setValue(label, lng, newValue, Object.keys(currentValue ?? {})[0], metadata, undefined, true)) {\n\t\t\t\t\t\t\tconsole.log(`${this._id}: Obsolete because of update`)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (status === 'pending' && !isFormValueContainerObsolete.current) {\n\t\t\t\t\t\t\t\tisFormValueContainerObsolete.current = true\n\t\t\t\t\t\t\t\tconsole.log(`${this._id}: Obsolete because of prune`)\n\t\t\t\t\t\t\t\tconst newBridgedFormValueContainer = new BridgedFormValuesContainer({\n\t\t\t\t\t\t\t\t\t...this.options(),\n\t\t\t\t\t\t\t\t\tcurrentComputations: Object.entries(this.currentComputations).reduce(\n\t\t\t\t\t\t\t\t\t\t(acc, [cLabel, c]) => (cLabel !== label ? { ...acc, [cLabel]: c } : { ...acc, [cLabel]: { ...c, status: 'resolved' } }),\n\t\t\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tmodifiedFields: [],\n\t\t\t\t\t\t\t\t\tcontext: 'Prune computed value',\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tthis.changeListeners.forEach((l) => notify(l, newBridgedFormValueContainer, [], 'Prune computed value', this._id))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(console.error) // Ignore errors in computations, they will be logged in the console\n\t\t})\n\t}\n\n\tgetLabel(): string {\n\t\treturn this.contactFormValuesContainer.getLabel()\n\t}\n\n\tgetFormId(): string | undefined {\n\t\treturn this.contactFormValuesContainer.getFormId()\n\t}\n\n\tgetContactFormValuesContainer() {\n\t\treturn this.contactFormValuesContainer\n\t}\n\n\tregisterChangeListener(listener: (newValue: BridgedFormValuesContainer, modifiedFields: GenericMetadata[]) => void): void {\n\t\tthis.changeListeners.push(listener)\n\t}\n\n\tunregisterChangeListener(listener: (newValue: BridgedFormValuesContainer, modifiedFields: GenericMetadata[]) => void): void {\n\t\tthis.changeListeners = this.changeListeners.filter((l) => l !== listener)\n\t}\n\n\tgetValues(revisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]): VersionedData<FieldValue> {\n\t\treturn Object.entries(\n\t\t\tthis.contactFormValuesContainer.getValues((id, history) =>\n\t\t\t\trevisionsFilter(\n\t\t\t\t\tid,\n\t\t\t\t\thistory\n\t\t\t\t\t\t.filter(({ modified }) => !this.contact.created || !modified || modified <= this.contact.created)\n\t\t\t\t\t\t.map(({ revision, modified, value: sm }) => ({\n\t\t\t\t\t\t\trevision,\n\t\t\t\t\t\t\tmodified,\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tlabel: sm.label,\n\t\t\t\t\t\t\t\towner: sm.responsible,\n\t\t\t\t\t\t\t\ttags: sm.tags?.map(codeStubToCode),\n\t\t\t\t\t\t\t\tvalueDate: sm.valueDate,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t),\n\t\t).reduce((acc, [id, history]) => {\n\t\t\treturn {\n\t\t\t\t...acc,\n\t\t\t\t[id]: history.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\trevision,\n\t\t\t\t\tmodified,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tcontent: Object.entries(s.content ?? {}).reduce((acc, [lng, cnt]) => {\n\t\t\t\t\t\t\tconst converted = contentToPrimitiveType(lng, cnt)\n\t\t\t\t\t\t\treturn converted ? { ...acc, [lng]: converted } : acc\n\t\t\t\t\t\t}, {}),\n\t\t\t\t\t\tcodes: s.codes?.map(codeStubToCode),\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t}\n\t\t}, {} as VersionedData<FieldValue>)\n\t}\n\n\tgetMetadata(id: string, revisions: (string | null)[]): VersionedData<FieldMetadata> {\n\t\treturn Object.entries(this.contactFormValuesContainer.getMetadata(id, revisions)).reduce(\n\t\t\t(acc, [id, history]) => ({\n\t\t\t\t...acc,\n\t\t\t\t[id]: history.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\trevision,\n\t\t\t\t\tmodified,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tlabel: s.label,\n\t\t\t\t\t\towner: s.responsible,\n\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\tdiscordantMetadata: () => ({\n\t\t\t\t\t\t\t...(s.responsible !== this.responsible ? { owner: this.responsible } : {}),\n\t\t\t\t\t\t\t...(Math.abs(+(anyDateToDate(s.valueDate) ?? 0) - +(anyDateToDate(this.contact.created) ?? 0)) > 24 * 3600000 ? { valueDate: s.valueDate } : {}),\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t}),\n\t\t\t{},\n\t\t)\n\t}\n\n\tprivate convertRawValue(rawValue: unknown): FieldValue | undefined {\n\t\tif (rawValue && typeof rawValue === 'object' && 'content' in rawValue) {\n\t\t\treturn rawValue as FieldValue\n\t\t}\n\n\t\tif (Array.isArray(rawValue)) {\n\t\t\treturn rawValue.reduce(\n\t\t\t\t(acc: FieldValue, it, idx) => {\n\t\t\t\t\tconst fv = this.convertRawValue(it)\n\t\t\t\t\tif (fv === undefined) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\t\t\t\t\tacc.codes = [...(fv.codes ?? []), ...(acc.codes ?? [])]\n\t\t\t\t\tacc.content['*'] = fv.content['*']?.value\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...acc.content['*'],\n\t\t\t\t\t\t\t\t[(fv.codes ?? [])[0].id ?? idx.toString()]: fv.content['*'].value,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: acc.content['*']\n\t\t\t\t\treturn acc\n\t\t\t\t},\n\t\t\t\t{ content: { '*': { type: 'compound', value: {} } } },\n\t\t\t)\n\t\t}\n\n\t\tif (typeof rawValue === 'number') {\n\t\t\treturn { content: { '*': { type: 'number', value: rawValue } } }\n\t\t}\n\n\t\tif (typeof rawValue === 'string') {\n\t\t\treturn { content: { '*': { type: 'string', value: rawValue } } }\n\t\t}\n\n\t\tif (typeof rawValue === 'boolean') {\n\t\t\treturn { content: { '*': { type: 'boolean', value: rawValue } } }\n\t\t}\n\n\t\tif (rawValue instanceof Date) {\n\t\t\treturn { content: { '*': { type: 'timestamp', value: dateToFuzzyDate(rawValue) } } }\n\t\t}\n\n\t\tif (rawValue && typeof rawValue === 'object' && 'unit' in rawValue && 'value' in rawValue && typeof rawValue.value === 'number') {\n\t\t\treturn { content: { '*': { type: 'measure', value: rawValue.value, unit: rawValue.unit?.toString() ?? '' } } }\n\t\t}\n\n\t\treturn undefined\n\t}\n\n\tprivate computeInitialValues(currentComputations: Record<string, Computation>, modifiedFields?: GenericMetadata[]): Record<string, Computation> {\n\t\treturn this.contactFormValuesContainer.rootForm.formTemplateId\n\t\t\t? this.initialValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId, modifiedFields).reduce(\n\t\t\t\t\t(acc, { metadata, revisionsFilter, formula }) => {\n\t\t\t\t\t\tif (currentComputations[metadata.label] === undefined) {\n\t\t\t\t\t\t\tconst currentValue = this.getValues(revisionsFilter)\n\t\t\t\t\t\t\treturn !currentValue || !Object.keys(currentValue).length\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t\t[metadata.label]: { metadata, revisionsFilter, computation: this.compute(formula), status: 'pending' },\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: acc\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn acc\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcurrentComputations,\n\t\t\t )\n\t\t\t: currentComputations\n\t}\n\n\tprivate computeDependentValues(currentComputations: Record<string, Computation>, modifiedFields?: GenericMetadata[]): Record<string, Computation> {\n\t\treturn this.contactFormValuesContainer.rootForm.formTemplateId\n\t\t\t? this.dependentValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId, modifiedFields).reduce(\n\t\t\t\t\t(acc, { metadata, revisionsFilter, formula }) => {\n\t\t\t\t\t\treturn currentComputations[metadata.label] === undefined\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t[metadata.label]: { metadata, revisionsFilter, computation: this.compute(formula), status: 'pending' },\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: acc\n\t\t\t\t\t},\n\t\t\t\t\tcurrentComputations,\n\t\t\t )\n\t\t\t: currentComputations\n\t}\n\n\tsetValue(label: string, language: string, fv?: FieldValue, id?: string, metadata?: FieldMetadata, _?: undefined, recurse = false): boolean {\n\t\tconsole.log(`${this._id}: setValue on ${this.contactFormValuesContainer._id}`)\n\t\treturn setValueOnContactFormValuesContainer(this.contactFormValuesContainer, label, language, fv, id, metadata, recurse)\n\t}\n\n\tsetMetadata(meta: FieldMetadata, id?: string | undefined): boolean {\n\t\treturn this.contactFormValuesContainer.setMetadata(\n\t\t\t{\n\t\t\t\tlabel: meta.label,\n\t\t\t\tresponsible: meta.owner,\n\t\t\t\tvalueDate: meta.valueDate,\n\t\t\t\ttags: meta.tags?.map((x) => new CodeStubWithId(x)),\n\t\t\t},\n\t\t\tid,\n\t\t)\n\t}\n\n\tdelete(serviceId: string): void {\n\t\tthis.contactFormValuesContainer.delete(serviceId)\n\t}\n\n\tprivate getVersionedValuesForKey(key: string | symbol) {\n\t\treturn this.getValues((_id, history) => (history?.[0]?.value?.label && key === history[0].value.label ? [history?.[0]?.revision] : []))\n\t}\n\n\tasync compute<\n\t\tT,\n\t\tS extends {\n\t\t\t[key: string | symbol]: unknown\n\t\t},\n\t>(formula: string, sandbox?: S): Promise<T | undefined> {\n\t\t// noinspection JSUnusedGlobalSymbols\n\t\tconst parseContent = (content?: { [key: string]: PrimitiveType }, toString = false) => {\n\t\t\tif (!content) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst primitive = content[this.language] ?? content['*'] ?? content[Object.keys(content)[0]]\n\t\t\treturn primitive && parsePrimitive(primitive, toString)\n\t\t}\n\t\tconst text = (\n\t\t\titem?:\n\t\t\t\t| { content: { [key: string]: PrimitiveType } }\n\t\t\t\t| {\n\t\t\t\t\t\tcontent: { [key: string]: PrimitiveType }\n\t\t\t\t }[],\n\t\t) => {\n\t\t\tif (!item) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst items: { content: { [key: string]: PrimitiveType } }[] = Array.isArray(item) ? item : [item]\n\t\t\treturn items\n\t\t\t\t.map((it) => parseContent(it.content, true)?.toString())\n\t\t\t\t.filter((it) => !!it)\n\t\t\t\t.join(', ')\n\t\t}\n\t\tconst log = console.log\n\t\t// noinspection JSUnusedGlobalSymbols\n\t\tconst native = {\n\t\t\tparseInt: parseInt,\n\t\t\tparseFloat: parseFloat,\n\t\t\tDate: Date,\n\t\t\tMath: Math,\n\t\t\tNumber: Number,\n\t\t\tString: String,\n\t\t\tBoolean: Boolean,\n\t\t\tArray: Array,\n\t\t\tObject: Object,\n\t\t\thasOption: (\n\t\t\t\tit: {\n\t\t\t\t\tcodes: CodeStub[]\n\t\t\t\t},\n\t\t\t\toption: string,\n\t\t\t) => it && it.codes?.some((c) => c.id === option || c.id?.split('|')?.[1] === option),\n\t\t\tscore: (it: { codes: CodeStub[] }) => {\n\t\t\t\treturn it\n\t\t\t\t\t? (it.codes ?? []).reduce((acc, c) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\treturn acc + parseInt(c.id?.split('|')?.[1] ?? '0')\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn acc\n\t\t\t\t\t\t\t}\n\t\t\t\t\t }, 0)\n\t\t\t\t\t: 0\n\t\t\t},\n\t\t\tparseContent,\n\t\t\tvalidate: {\n\t\t\t\tnotBlank: (self: any, label: string) => {\n\t\t\t\t\tconst value = parseContent((self[label as any] as any)?.[0]?.content)\n\t\t\t\t\treturn !!(value as any)?.trim()?.length\n\t\t\t\t},\n\t\t\t},\n\t\t\ttext,\n\t\t\tlog,\n\t\t\tPromise,\n\t\t} as { [key: string]: any }\n\t\tconst proxy: S = new Proxy({} as S, {\n\t\t\thas: (_target: S, key: string | symbol) =>\n\t\t\t\t!!native[key as string] || key === 'self' || !!this.interpreterContext[key as string] || Object.keys(this.getVersionedValuesForKey(key) ?? {}).length > 0,\n\t\t\tget: (_target: S, key: string | symbol) => {\n\t\t\t\tif (key === 'undefined') {\n\t\t\t\t\treturn undefined\n\t\t\t\t}\n\t\t\t\tconst nativeValue = native[key as string]\n\t\t\t\tif (!!nativeValue) {\n\t\t\t\t\treturn nativeValue\n\t\t\t\t}\n\t\t\t\treturn key === 'self' ? proxy : this.interpreterContext[key as string] ? this.interpreterContext[key as string]() : Object.values(this.getVersionedValuesForKey(key)).map((v) => v[0]?.value)\n\t\t\t},\n\t\t})\n\t\treturn this.interpreter?.(formula, sandbox ?? proxy)\n\t}\n\n\tisFieldBeingComputed(label: string): boolean {\n\t\treturn this.currentComputations[label]?.status === 'pending'\n\t}\n\n\tasync getChildren(): Promise<FormValuesContainer<FieldValue, FieldMetadata>[]> {\n\t\tconst children = await Promise.all(\n\t\t\t(\n\t\t\t\tawait this.contactFormValuesContainer.getChildren()\n\t\t\t).map(\n\t\t\t\t(fvc) =>\n\t\t\t\t\tnew BridgedFormValuesContainer({\n\t\t\t\t\t\tresponsible: this.responsible,\n\t\t\t\t\t\tcontactFormValuesContainer: fvc,\n\t\t\t\t\t\tinterpreter: this.interpreter,\n\t\t\t\t\t\tcontact: this.contact,\n\t\t\t\t\t\tinitialValuesProvider: this.initialValuesProvider,\n\t\t\t\t\t\tdependentValuesProvider: this.dependentValuesProvider,\n\t\t\t\t\t\tvalidatorsProvider: this.validatorsProvider,\n\t\t\t\t\t\tlanguage: this.language,\n\t\t\t\t\t\tinterpreterContext: this.interpreterContext,\n\t\t\t\t\t\tcontext: 'New child form',\n\t\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\tconsole.log(`${children.length} children found in ${this.contactFormValuesContainer.rootForm.formTemplateId} initialised with `, this.initialValuesProvider)\n\t\treturn children\n\t}\n\n\tasync getValidationErrors(): Promise<[FieldMetadata, string][]> {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\t// noinspection ES6MissingAwait\n\t\t\treturn await this.validatorsProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).reduce(\n\t\t\t\tasync (resPromise, { metadata, validators }) =>\n\t\t\t\t\tawait validators.reduce(async (resPromise, { validation, message }) => {\n\t\t\t\t\t\tconst res = await resPromise\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (!(await this.compute(validation))) {\n\t\t\t\t\t\t\t\tres.push([metadata, message])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.warn(`Error while computing validation : ${validation}`, e)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn res\n\t\t\t\t\t}, resPromise),\n\t\t\t\tPromise.resolve([]) as Promise<[FieldMetadata, string][]>,\n\t\t\t)\n\t\t} else {\n\t\t\treturn []\n\t\t}\n\t}\n\n\tasync addChild(anchorId: string, templateId: string, label: string): Promise<void> {\n\t\tawait this.contactFormValuesContainer.addChild(anchorId, templateId, label)\n\t}\n\n\tasync removeChild(container: BridgedFormValuesContainer): Promise<void> {\n\t\tawait this.contactFormValuesContainer.removeChild(container.contactFormValuesContainer)\n\t}\n\n\tsynchronise() {\n\t\tthis.contactFormValuesContainer.synchronise()\n\t\treturn this\n\t}\n}\n\n/**\n * This class is a form values container that uses a hierarchy of forms as a data source. The actual values are extracted from the services of the contacts.\n * The `currentContact` is the contact that has been selected by the user, any later contact should be ignored.\n * The `contactsHistory` is used to provide the full history of the services.\n * The hierarchy of ContactFormValuesContainer has to be maintained by the manager of the instances of this class (typically the BridgedFormValuesContainer).\n * Each ContactFormValuesContainer has a reference to its `rootForm`.\n * The `serviceFactory` and `formFactory` are used to create new services and add sub-forms.\n */\nexport class ContactFormValuesContainer implements FormValuesContainer<DecryptedService, ServiceMetadata> {\n\trootForm: CardinalForm\n\tcurrentContact: DecryptedContact //The contact of the moment, used to record new modifications\n\tcontactsHistory: DecryptedContact[] //Must be sorted (most recent first), contains all the contacts linked to this form\n\tchildren: ContactFormValuesContainer[] //Direct children of the ContactFormValuesContainer\n\tserviceFactory: (label: string, serviceId?: string) => DecryptedService\n\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>\n\tformRecycler: (formId: string) => Promise<void>\n\n\tchangeListeners: ((newValue: ContactFormValuesContainer, modifiedFields: GenericMetadata[], recurse?: boolean) => void)[]\n\t_id = `C-${(cfvcIdGen++).toString()}`\n\tprivate indexedServices: { [id: string]: Version<DecryptedService>[] }\n\n\ttoString(): string {\n\t\treturn `Contact(${this.rootForm.formTemplateId}[${this.rootForm.id}]) - ${this._id}`\n\t}\n\n\t/**\n\t * Returns a contact that combines the content of the contact in this form with the content of all contents stored in the children\n\t */\n\tcoordinatedContact(): DecryptedContact {\n\t\tconst childrenContacts = this.children.map((c) => c.coordinatedContact())\n\t\tconst thisKeptServiceIds = (this.currentContact.subContacts ?? []).filter((sc) => sc.formId === this.rootForm.id).flatMap((sc) => (sc.services ?? []).map((s) => s.serviceId))\n\t\treturn new DecryptedContact({\n\t\t\t...this.currentContact,\n\t\t\tservices: childrenContacts\n\t\t\t\t.reduce((acc: DecryptedService[], c: DecryptedContact) => acc.concat(c.services ?? []), [])\n\t\t\t\t.concat((this.currentContact.services ?? []).filter((s) => thisKeptServiceIds.includes(s.id))),\n\t\t\tsubContacts: childrenContacts\n\t\t\t\t.reduce((acc: DecryptedSubContact[], c: DecryptedContact) => acc.concat(c.subContacts ?? []), [])\n\t\t\t\t.concat((this.currentContact.subContacts ?? []).filter((s) => s.formId === this.rootForm.id)),\n\t\t})\n\t}\n\n\t/**\n\t * Returns a contact that combines the content of the contact in this form with the content of all contents stored in the children\n\t */\n\tallForms(): CardinalForm[] {\n\t\treturn [this.rootForm].concat(this.children.flatMap((c) => c.allForms()))\n\t}\n\n\tconstructor(\n\t\trootForm: CardinalForm,\n\t\tcurrentContact: DecryptedContact,\n\t\tcontactsHistory: DecryptedContact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => DecryptedService,\n\t\tchildren: ContactFormValuesContainer[],\n\t\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>,\n\t\tformRecycler: (formId: string) => Promise<void>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer, modifiedFields: GenericMetadata[]) => void)[] = [],\n\t) {\n\t\t//console.log(`Creating contact FVC (${rootForm.formTemplateId}) with ${children.length} children [${this._id}]`)\n\n\t\tif (contactsHistory.includes(currentContact)) {\n\t\t\tthrow new Error('Illegal argument, the history must not contain the currentContact')\n\t\t}\n\t\tthis.rootForm = rootForm\n\t\tthis.currentContact = currentContact\n\t\tthis.contactsHistory = sortedBy(contactsHistory, 'created', 'desc')\n\t\tthis.children = children\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.formFactory = formFactory\n\t\tthis.formRecycler = formRecycler\n\t\tthis.changeListeners = changeListeners\n\n\t\tthis.indexedServices = [this.currentContact].concat(this.contactsHistory).reduce((acc, ctc) => {\n\t\t\treturn (\n\t\t\t\tctc.services\n\t\t\t\t\t?.filter((s) => ctc.subContacts?.some((sc) => sc.formId === this.rootForm.id && sc.services?.some((sss) => sss.serviceId === s.id)))\n\t\t\t\t\t?.reduce(\n\t\t\t\t\t\t(acc, s) =>\n\t\t\t\t\t\t\ts.id\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t\t[s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({\n\t\t\t\t\t\t\t\t\t\t\trevision: ctc.rev ?? null,\n\t\t\t\t\t\t\t\t\t\t\tmodified: ctc.created,\n\t\t\t\t\t\t\t\t\t\t\tvalue: s,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t\tacc,\n\t\t\t\t\t) ?? acc\n\t\t\t)\n\t\t}, {} as VersionedData<DecryptedService>)\n\n\t\tthis.synchronise()\n\t}\n\n\tsynchronise() {\n\t\tthis.children.forEach((childFVC) => {\n\t\t\tthis.registerChildFormValuesContainer(childFVC.synchronise())\n\t\t})\n\t\treturn this\n\t}\n\n\t//Make sure that when a child is changed, a new version of this is created with the updated child\n\tregisterChildFormValuesContainer(childFormValueContainer: ContactFormValuesContainer) {\n\t\tchildFormValueContainer.changeListeners = [\n\t\t\t(newValue) => {\n\t\t\t\tconsole.log(`Child ${newValue._id} ${childFormValueContainer.rootForm.formTemplateId} changed, updating parent ${this._id} ${this.rootForm.formTemplateId}`)\n\t\t\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\t\tthis.rootForm,\n\t\t\t\t\tthis.currentContact,\n\t\t\t\t\tthis.contactsHistory,\n\t\t\t\t\tthis.serviceFactory,\n\t\t\t\t\tthis.children.map((c) => {\n\t\t\t\t\t\treturn c.rootForm.id === childFormValueContainer.rootForm.id ? newValue : c\n\t\t\t\t\t}),\n\t\t\t\t\tthis.formFactory,\n\t\t\t\t\tthis.formRecycler,\n\t\t\t\t)\n\t\t\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer, [], `Child ${childFormValueContainer.rootForm.formTemplateId} changed`, this._id))\n\t\t\t},\n\t\t]\n\t}\n\n\tstatic async fromFormsHierarchy(\n\t\trootForm: CardinalForm,\n\t\tcurrentContact: DecryptedContact,\n\t\tcontactsHistory: DecryptedContact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => DecryptedService,\n\t\tformChildrenProvider: (parentId: string | undefined) => Promise<CardinalForm[]>,\n\t\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>,\n\t\tformRecycler: (formId: string) => Promise<void>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[] = [],\n\t): Promise<ContactFormValuesContainer> {\n\t\tconst contactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\trootForm,\n\t\t\tcurrentContact,\n\t\t\tcontactsHistory,\n\t\t\tserviceFactory,\n\t\t\trootForm.id\n\t\t\t\t? await Promise.all(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tawait formChildrenProvider(rootForm.id)\n\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\tasync (f) =>\n\t\t\t\t\t\t\t\t// eslint-disable-next-line max-len\n\t\t\t\t\t\t\t\tawait ContactFormValuesContainer.fromFormsHierarchy(f, currentContact, contactsHistory, serviceFactory, formChildrenProvider, formFactory, formRecycler),\n\t\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: [],\n\t\t\tformFactory,\n\t\t\tformRecycler,\n\t\t\tchangeListeners,\n\t\t)\n\t\tcontactFormValuesContainer.children.forEach((childFVC) => contactFormValuesContainer.registerChildFormValuesContainer(childFVC))\n\n\t\treturn contactFormValuesContainer\n\t}\n\n\tgetLabel(): string {\n\t\treturn this.rootForm.descr ?? ''\n\t}\n\n\tgetFormId(): string | undefined {\n\t\treturn this.rootForm?.formTemplateId\n\t}\n\n\tregisterChangeListener(listener: (newValue: ContactFormValuesContainer, modifiedFields: GenericMetadata[]) => void): void {\n\t\tthis.changeListeners.push(listener)\n\t}\n\n\tunregisterChangeListener(listener: (newValue: ContactFormValuesContainer, modifiedFields: GenericMetadata[]) => void): void {\n\t\tthis.changeListeners = this.changeListeners.filter((l) => l !== listener)\n\t}\n\n\tasync getChildren(): Promise<ContactFormValuesContainer[]> {\n\t\treturn this.children\n\t}\n\n\tasync getValidationErrors(): Promise<[FieldMetadata, string][]> {\n\t\tthrow new Error('Validation not supported at contact level')\n\t}\n\n\tgetValues(revisionsFilter: (id: string, history: Version<ServiceMetadata>[]) => (string | null)[]): VersionedData<DecryptedService> {\n\t\treturn Object.entries(this.getServicesInHistory(revisionsFilter)).reduce(\n\t\t\t(acc, [id, history]) =>\n\t\t\t\thistory.length\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[id]: [...history].sort((a, b) => (b?.modified || +new Date()) - (a?.modified || +new Date())),\n\t\t\t\t\t }\n\t\t\t\t\t: acc,\n\t\t\t{},\n\t\t)\n\t}\n\n\tgetMetadata(id: string, revisions: (string | null)[]): VersionedData<ServiceMetadata> {\n\t\treturn [this.currentContact]\n\t\t\t.concat(this.contactsHistory)\n\t\t\t.filter((ctc) => ctc.rev !== undefined && revisions.includes(ctc.rev))\n\t\t\t.reduce(\n\t\t\t\t(acc, ctc) =>\n\t\t\t\t\t(ctc.services ?? [])\n\t\t\t\t\t\t.filter((s) => s.id === id)\n\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\t(acc, s) =>\n\t\t\t\t\t\t\t\ts.id\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t\t\t[s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({\n\t\t\t\t\t\t\t\t\t\t\t\trevision: ctc.rev ?? null,\n\t\t\t\t\t\t\t\t\t\t\t\tmodified: s.modified,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: s.label ?? s.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tresponsible: s.responsible,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttags: normalizeCodes(s.tags),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t) ?? acc,\n\t\t\t\t{} as { [id: string]: Version<ServiceMetadata>[] },\n\t\t\t) //index services in history by id\n\t}\n\n\tsetMetadata(meta: ServiceMetadata, id?: string): boolean {\n\t\tconst service = (id && this.getServiceInCurrentContact(id)) || this.serviceFactory(meta.label, id)\n\t\tif (!service.id) {\n\t\t\tthrow new Error('Service id must be defined')\n\t\t}\n\t\tif (\n\t\t\t(meta.responsible && service.responsible !== meta.responsible) ||\n\t\t\t(meta.valueDate && service.valueDate !== meta.valueDate) ||\n\t\t\t(meta.codes && service.codes !== meta.codes) ||\n\t\t\t(meta.tags && service.tags !== meta.tags)\n\t\t) {\n\t\t\tconst newService = new DecryptedService({ ...service, modified: Date.now() })\n\t\t\tmeta.responsible && (newService.responsible = meta.responsible)\n\t\t\tmeta.valueDate && (newService.valueDate = meta.valueDate)\n\t\t\tmeta.codes && (newService.codes = normalizeCodes(meta.codes))\n\t\t\tmeta.tags && (newService.tags = normalizeCodes(meta.tags))\n\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\t{\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tservices: this.currentContact.services?.map((s) => (s.id === service.id ? newService : s)),\n\t\t\t\t},\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newFormValuesContainer, [meta], `Metadata change for service ${service.id}`, this._id))\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tsetValue(\n\t\tlabel: string,\n\t\tlanguage: string,\n\t\tvalue?: DecryptedService,\n\t\tid?: string,\n\t\tmetadata?: ServiceMetadata,\n\t\tchangeListenersOverrider?: (fvc: ContactFormValuesContainer) => void,\n\t\trecurse = false,\n\t): boolean {\n\t\tconst service = (id && this.getServicesInHistory((sid: string, history) => (sid === id ? history.map((x) => x.revision) : []))[id]?.[0]?.value) || this.serviceFactory(label, id)\n\t\tif (!service.id) {\n\t\t\tthrow new Error('Service id must be defined')\n\t\t}\n\n\t\tconst newContent = value?.content?.[language]\n\t\tconst newCodes = value?.codes ? normalizeCodes(value.codes) : []\n\n\t\tif (!isContentEqual(service.content?.[language], newContent) || (newCodes && !areCodesEqual(newCodes, service.codes ?? []))) {\n\t\t\t//console.log('Setting value of service', service.id, 'with', value, 'and metadata', metadata)\n\n\t\t\tconst newService = new DecryptedService({ ...service, modified: Date.now() })\n\t\t\tconst newContents = newContent\n\t\t\t\t? {\n\t\t\t\t\t\t...(service.content || {}),\n\t\t\t\t\t\t[language]: newContent,\n\t\t\t\t }\n\t\t\t\t: { ...(service.content || {}) }\n\t\t\tif (!newContent) {\n\t\t\t\tdelete newContents[language]\n\t\t\t}\n\n\t\t\tlet newCurrentContact: DecryptedContact\n\t\t\tif (!Object.entries(newContents).filter(([, cnt]) => cnt !== undefined).length) {\n\t\t\t\tnewCurrentContact = {\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tsubContacts: (this.currentContact.subContacts ?? []).some((sc) => sc.formId === this.rootForm.id)\n\t\t\t\t\t\t? (this.currentContact.subContacts ?? []).map((sc) => {\n\t\t\t\t\t\t\t\tif (sc.formId === this.rootForm.id) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...sc,\n\t\t\t\t\t\t\t\t\t\tservices: (sc.services ?? []).filter((s) => s.serviceId !== service.id).concat([{ serviceId: service.id }]),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn sc\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: (this.currentContact.subContacts ?? []).concat(\n\t\t\t\t\t\t\t\tnew DecryptedSubContact({\n\t\t\t\t\t\t\t\t\tformId: this.rootForm.id,\n\t\t\t\t\t\t\t\t\tservices: [{ serviceId: service.id }],\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t ),\n\t\t\t\t\tservices: (this.currentContact.services ?? []).some((s) => s.id === service.id)\n\t\t\t\t\t\t? (this.currentContact.services ?? []).filter((s) => s.id !== service.id)\n\t\t\t\t\t\t: [...(this.currentContact.services ?? [])],\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewService.content = newContents\n\t\t\t\tnewService.codes = newCodes\n\n\t\t\t\tif (metadata) {\n\t\t\t\t\tnewService.responsible = metadata.responsible ?? newService.responsible\n\t\t\t\t\tnewService.valueDate = metadata.valueDate ?? newService.valueDate\n\t\t\t\t\tnewService.tags = metadata.tags ? normalizeCodes(metadata.tags) : newService.tags\n\t\t\t\t\tnewService.label = metadata.label ?? newService.label\n\t\t\t\t}\n\n\t\t\t\tnewCurrentContact = {\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tsubContacts: (this.currentContact.subContacts ?? []).some((sc) => sc.formId === this.rootForm.id)\n\t\t\t\t\t\t? (this.currentContact.subContacts ?? []).map((sc) => {\n\t\t\t\t\t\t\t\tif (sc.formId === this.rootForm.id) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...sc,\n\t\t\t\t\t\t\t\t\t\tservices: (sc.services ?? []).filter((s) => s.serviceId !== service.id).concat([{ serviceId: service.id }]),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn sc\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: (this.currentContact.subContacts ?? []).concat(\n\t\t\t\t\t\t\t\tnew DecryptedSubContact({\n\t\t\t\t\t\t\t\t\tformId: this.rootForm.id,\n\t\t\t\t\t\t\t\t\tservices: [{ serviceId: service.id }],\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t ),\n\t\t\t\t\tservices: (this.currentContact.services ?? []).some((s) => s.id === service.id)\n\t\t\t\t\t\t? (this.currentContact.services ?? []).map((s) => (s.id === service.id ? newService : s))\n\t\t\t\t\t\t: [...(this.currentContact.services ?? []), newService],\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tnewCurrentContact,\n\t\t\t\tthis.contactsHistory.map((c) => (c === this.currentContact ? newCurrentContact : c)),\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tchangeListenersOverrider\n\t\t\t\t? changeListenersOverrider(newFormValuesContainer)\n\t\t\t\t: this.changeListeners.forEach((l) =>\n\t\t\t\t\t\tnotify(\n\t\t\t\t\t\t\tl,\n\t\t\t\t\t\t\tnewFormValuesContainer,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalueDate: newService.valueDate,\n\t\t\t\t\t\t\t\t\ttags: normalizeCodes(newService.tags),\n\t\t\t\t\t\t\t\t\tlabel: newService.label ?? label,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t`Set value of service ${service.id}}`,\n\t\t\t\t\t\t\tthis._id,\n\t\t\t\t\t\t\trecurse,\n\t\t\t\t\t\t),\n\t\t\t\t )\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tdelete(serviceId: string): void {\n\t\tconst service = this.getServiceInCurrentContact(serviceId)\n\t\tif (service) {\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\t{\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tservices: this.currentContact.services?.map((s) =>\n\t\t\t\t\t\ts.id === serviceId\n\t\t\t\t\t\t\t? new DecryptedService({\n\t\t\t\t\t\t\t\t\t...service,\n\t\t\t\t\t\t\t\t\tendOfLife: Date.now(),\n\t\t\t\t\t\t\t })\n\t\t\t\t\t\t\t: s,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newFormValuesContainer, [], `Delete service ${serviceId}`, this._id))\n\t\t}\n\t}\n\n\tasync compute<T>(): Promise<T | undefined> {\n\t\tthrow new Error('Compute not supported at contact level')\n\t}\n\n\tisFieldBeingComputed(): boolean {\n\t\treturn false\n\t}\n\n\t/** returns all services in history that match a selector\n\t *\n\t * @private\n\t * @param revisionsFilter\n\t */\n\tprivate getServicesInHistory(revisionsFilter: (id: string, history: Version<ServiceMetadata>[]) => (string | null)[]): VersionedData<DecryptedService> {\n\t\t//index services in history by id\n\t\treturn Object.entries(this.indexedServices)\n\t\t\t.map(([id, history]) => {\n\t\t\t\tconst keptRevisions = revisionsFilter(\n\t\t\t\t\tid,\n\t\t\t\t\thistory.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\t\trevision,\n\t\t\t\t\t\tmodified,\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tlabel: s.label ?? s.id ?? '',\n\t\t\t\t\t\t\towner: s.responsible,\n\t\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\t\tcodes: s.codes,\n\t\t\t\t\t\t\ttags: normalizeCodes(s.tags),\n\t\t\t\t\t\t},\n\t\t\t\t\t})),\n\t\t\t\t)\n\t\t\t\treturn [id, history.filter(({ revision }) => keptRevisions.includes(revision))] as [string, Version<DecryptedService>[]]\n\t\t\t})\n\t\t\t.reduce((acc, [id, history]) => ({ ...acc, [id]: history }), {})\n\t}\n\n\tasync addChild(anchorId: string, templateId: string, label: string): Promise<void> {\n\t\tconst parentId = this.rootForm.id\n\t\tif (!parentId) return\n\n\t\tconst newForm = await this.formFactory(parentId, anchorId, templateId, label)\n\t\tconst childFVC = new ContactFormValuesContainer(newForm, this.currentContact, this.contactsHistory, this.serviceFactory, [], this.formFactory, this.formRecycler, [])\n\n\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\tthis.rootForm,\n\t\t\tthis.currentContact,\n\t\t\tthis.contactsHistory,\n\t\t\tthis.serviceFactory,\n\t\t\t[...this.children, childFVC],\n\t\t\tthis.formFactory,\n\t\t\tthis.formRecycler,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tnewContactFormValuesContainer.registerChildFormValuesContainer(childFVC)\n\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer, [], `Add child form ${newForm.formTemplateId} to contact form ${this.rootForm.formTemplateId}`, this._id))\n\t}\n\n\tprivate getServiceInCurrentContact(id: string): DecryptedService | undefined {\n\t\tconst service = (this.currentContact.services || [])?.find((s) => s.id === id)\n\t\treturn service ?? undefined\n\t}\n\n\tasync removeChild(container: ContactFormValuesContainer): Promise<void> {\n\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\tthis.rootForm,\n\t\t\tthis.currentContact,\n\t\t\tthis.contactsHistory,\n\t\t\tthis.serviceFactory,\n\t\t\tthis.children.filter((c) => c.rootForm.id !== container.rootForm.id),\n\t\t\tthis.formFactory,\n\t\t\tthis.formRecycler,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tthis.changeListeners.forEach((l) =>\n\t\t\tnotify(l, newContactFormValuesContainer, [], `Remove child form ${container.rootForm.formTemplateId} from contact form ${this.rootForm.formTemplateId}`, this._id),\n\t\t)\n\t}\n}\n\nconst setValueOnContactFormValuesContainer = (cfvc: ContactFormValuesContainer, label: string, language: string, fv?: FieldValue, id?: string, metadata?: FieldMetadata, recurse = false): boolean => {\n\tconst value = fv?.content[language]\n\treturn cfvc.setValue(\n\t\tlabel,\n\t\tlanguage,\n\t\tnew DecryptedService({\n\t\t\tid: id,\n\t\t\tcodes: fv?.codes?.map((x) => new CodeStub(x)) ?? [],\n\t\t\tcontent: value\n\t\t\t\t? {\n\t\t\t\t\t\t[language]: primitiveTypeToContent(language, value),\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t}),\n\t\tid,\n\t\tmetadata\n\t\t\t? {\n\t\t\t\t\tlabel: metadata?.label ?? label,\n\t\t\t\t\tresponsible: metadata?.owner,\n\t\t\t\t\tvalueDate: metadata?.valueDate,\n\t\t\t\t\ttags: normalizeCodes(metadata?.tags?.map((x) => new CodeStub(x))),\n\t\t\t }\n\t\t\t: undefined,\n\t\tundefined,\n\t\trecurse,\n\t)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"form-values-container.js","sourceRoot":"","sources":["../../tmp/icure/form-values-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { CodeStub, DecryptedContact, DecryptedForm as CardinalForm, DecryptedService, DecryptedSubContact, ServiceLink } from '@icure/cardinal-sdk'\nimport { sortedBy } from '../utils/no-lodash'\nimport { FormValuesContainer, Version, VersionedData } from '../generic'\nimport { ServiceMetadata } from './model'\nimport { FieldMetadata, FieldValue, PrimitiveType, Validator } from '../components/model'\nimport { areCodesEqual, codeStubToCode, contentToPrimitiveType, isContentEqual, primitiveTypeToContent } from './icure-utils'\nimport { parsePrimitive } from '../utils/primitive'\nimport { anyDateToDate, dateToFuzzyDate } from '../utils/dates'\nimport { v4 as uuidv4 } from 'uuid'\nimport { normalizeCodes } from '../utils/code-utils'\n\nfunction notify<Value, Metadata>(l: (fvc: FormValuesContainer<Value, Metadata>) => void, fvc: FormValuesContainer<Value, Metadata>) {\n\tl(fvc)\n}\n\n/** This class is a bridge between the ICure API and the generic FormValuesContainer interface.\n * It wraps around a ContactFormValuesContainer and provides a series of services:\n * - It computes dependent values when the form is created\n * - It broadcasts changes from the wrapped ContactFormValuesContainer to its listeners\n * - It provides a way to compute formulas in a sandboxed environment\n * - It bridges the setValues and setMetadata methods with the wrapped ContactFormValuesContainer by\n * \t\t- converting the FieldValue to a Service\n * \t\t- converting the FieldMetadata to a ServiceMetadata\n * - It bridges the getValues and getMetadata methods with the wrapped ContactFormValuesContainer by\n * \t\t- converting the Service to a FieldValue\n * \t\t- converting the ServiceMetadata to a FieldMetadata\n * - It lazily creates bridges the children by\n * - lazily creating BridgedFormValuesContainer when the children of the wrapped ContactFormValuesContainer are accessed\n * - creating a new ContactFormValuesContainer and wrapping it in a BridgedFormValuesContainer when a child is added\n *\n * The icure-form typically accepts a BridgedFormValuesContainer as a prop and uses it to interact with the form.\n *\n * This class is fairly generic and can be used as an inspiration or subclassed for other bridges\n */\nexport class BridgedFormValuesContainer implements FormValuesContainer<FieldValue, FieldMetadata> {\n\tprivate contact: DecryptedContact\n\tprivate contactFormValuesContainer: ContactFormValuesContainer\n\tprivate _id: string = uuidv4()\n\tprivate readonly mutateAndNotify: (newContactFormValuesContainer: ContactFormValuesContainer) => Promise<BridgedFormValuesContainer>\n\n\ttoString(): string {\n\t\treturn `Bridged(${this.contactFormValuesContainer.rootForm.formTemplateId}[${this.contactFormValuesContainer.rootForm.id}]) - ${this._id}`\n\t}\n\n\t/**\n\t * Creates an instance of BridgedFormValuesContainer.\n\t * @param responsible The id of the data owner responsible for the creation of the values\n\t * @param contactFormValuesContainer The wrapped ContactFormValuesContainer\n\t * @param interpreter A function that can interpret formulas\n\t * @param contact The displayed contact (may be in the past). === to currentContact if the contact is the contact of the day\n\t * @param initialValuesProvider A lambda that provides the initial values of the form\n\t * @param dependentValuesProvider A function that provides the dependent values (computed on the basis of other values) for a given anchorId and templateId\n\t * @param validatorsProvider A function that provides the validators for a given anchorId and templateId\n\t * @param language The language in which the values are displayed\n\t * @param changeListeners The listeners that will be notified when the values change\n\t * @param interpreterContext A map with keys that are the names of the variables and values that are the functions that return the values of the variables\n\t */\n\tconstructor(\n\t\tprivate responsible: string,\n\t\tcontactFormValuesContainer: ContactFormValuesContainer,\n\t\tprivate interpreter?: <\n\t\t\tT,\n\t\t\tS extends {\n\t\t\t\t[key: string | symbol]: unknown\n\t\t\t},\n\t\t>(\n\t\t\tformula: string,\n\t\t\tsandbox: S,\n\t\t) => Promise<T | undefined>,\n\t\tcontact?: DecryptedContact,\n\t\tprivate initialValuesProvider: (\n\t\t\tanchorId?: string,\n\t\t\ttemplateId?: string,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\t\tformula: string\n\t\t}[] = () => [],\n\t\tprivate dependentValuesProvider: (\n\t\t\tanchorId: string | undefined,\n\t\t\ttemplateId: string | undefined,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\t\tformula: string\n\t\t}[] = () => [],\n\t\tprivate validatorsProvider: (\n\t\t\tanchorId: string | undefined,\n\t\t\ttemplateId: string,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\tvalidators: Validator[]\n\t\t}[] = () => [],\n\t\tprivate language = 'en',\n\t\tprivate changeListeners: ((newValue: BridgedFormValuesContainer) => void)[] = [],\n\t\tprivate interpreterContext: { [variable: string]: () => unknown } = {},\n\t) {\n\t\tconsole.log(`Creating bridge FVC (${contactFormValuesContainer.rootForm.formTemplateId}) with ${contactFormValuesContainer.children.length} children [${this._id}]`)\n\t\t//Before start to broadcast changes, we need to fill in the contactFormValuesContainer with the dependent values\n\t\tthis.contactFormValuesContainer = contactFormValuesContainer\n\t\tthis.mutateAndNotify = async (newContactFormValuesContainer: ContactFormValuesContainer) => {\n\t\t\tnewContactFormValuesContainer.unregisterChangeListener(this.mutateAndNotify)\n\t\t\tconst newBridgedFormValueContainer = await new BridgedFormValuesContainer(\n\t\t\t\tthis.responsible,\n\t\t\t\tnewContactFormValuesContainer,\n\t\t\t\tthis.interpreter,\n\t\t\t\tthis.contact === this.contactFormValuesContainer.currentContact ? newContactFormValuesContainer.currentContact : this.contact,\n\t\t\t\tthis.initialValuesProvider,\n\t\t\t\tthis.dependentValuesProvider,\n\t\t\t\tthis.validatorsProvider,\n\t\t\t\tthis.language,\n\t\t\t\tthis.changeListeners,\n\t\t\t\tthis.interpreterContext,\n\t\t\t).init()\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newBridgedFormValueContainer))\n\t\t\treturn newBridgedFormValueContainer\n\t\t}\n\t\tthis.contactFormValuesContainer.registerChangeListener(this.mutateAndNotify)\n\t\tthis.contact = contact ?? contactFormValuesContainer.currentContact\n\t}\n\n\tasync init() {\n\t\tif (this.contactFormValuesContainer.mustBeInitialised()) {\n\t\t\tawait this.computeInitialValues()\n\t\t}\n\t\tawait this.computeDependentValues()\n\n\t\treturn this\n\t}\n\n\tgetLabel(): string {\n\t\treturn this.contactFormValuesContainer.getLabel()\n\t}\n\n\tgetFormId(): string | undefined {\n\t\treturn this.contactFormValuesContainer.getFormId()\n\t}\n\n\tgetContactFormValuesContainer() {\n\t\treturn this.contactFormValuesContainer\n\t}\n\n\tregisterChangeListener(listener: (newValue: BridgedFormValuesContainer) => void): void {\n\t\tthis.changeListeners.push(listener)\n\t}\n\n\tunregisterChangeListener(listener: (newValue: BridgedFormValuesContainer) => void): void {\n\t\tthis.changeListeners = this.changeListeners.filter((l) => l !== listener)\n\t}\n\n\tasync getDefaultValue(label: string): Promise<FieldValue | undefined> {\n\t\tconst formula = this.initialValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).find(\n\t\t\t({ metadata }) => metadata.label === label,\n\t\t)?.formula\n\t\treturn formula ? this.convertRawValue(await this.compute(formula)) : undefined\n\t}\n\n\tgetValues(revisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]): VersionedData<FieldValue> {\n\t\treturn Object.entries(\n\t\t\tthis.contactFormValuesContainer.getValues((id, history) =>\n\t\t\t\trevisionsFilter(\n\t\t\t\t\tid,\n\t\t\t\t\thistory\n\t\t\t\t\t\t.filter(({ modified }) => !this.contact.created || !modified || modified <= this.contact.created)\n\t\t\t\t\t\t.map(({ revision, modified, value: sm }) => ({\n\t\t\t\t\t\t\trevision,\n\t\t\t\t\t\t\tmodified,\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tlabel: sm.label,\n\t\t\t\t\t\t\t\towner: sm.responsible,\n\t\t\t\t\t\t\t\ttags: sm.tags?.map(codeStubToCode),\n\t\t\t\t\t\t\t\tvalueDate: sm.valueDate,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t),\n\t\t).reduce((acc, [id, history]) => {\n\t\t\treturn {\n\t\t\t\t...acc,\n\t\t\t\t[id]: history.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\trevision,\n\t\t\t\t\tmodified,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tcontent: Object.entries(s.content ?? {}).reduce((acc, [lng, cnt]) => {\n\t\t\t\t\t\t\tconst converted = contentToPrimitiveType(lng, cnt)\n\t\t\t\t\t\t\treturn converted ? { ...acc, [lng]: converted } : acc\n\t\t\t\t\t\t}, {}),\n\t\t\t\t\t\tcodes: s.codes?.map(codeStubToCode),\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t}\n\t\t}, {} as VersionedData<FieldValue>)\n\t}\n\n\tgetMetadata(id: string, revisions: (string | null)[]): VersionedData<FieldMetadata> {\n\t\treturn Object.entries(this.contactFormValuesContainer.getMetadata(id, revisions)).reduce(\n\t\t\t(acc, [id, history]) => ({\n\t\t\t\t...acc,\n\t\t\t\t[id]: history.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\trevision,\n\t\t\t\t\tmodified,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tlabel: s.label,\n\t\t\t\t\t\towner: s.responsible,\n\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\tdiscordantMetadata: () => ({\n\t\t\t\t\t\t\t...(s.responsible !== this.responsible ? { owner: this.responsible } : {}),\n\t\t\t\t\t\t\t...(Math.abs(+(anyDateToDate(s.valueDate) ?? 0) - +(anyDateToDate(this.contact.created) ?? 0)) > 24 * 3600000 ? { valueDate: s.valueDate } : {}),\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t}),\n\t\t\t{},\n\t\t)\n\t}\n\n\tprivate convertRawValue(rawValue: unknown): FieldValue | undefined {\n\t\tif (rawValue && typeof rawValue === 'object' && 'content' in rawValue) {\n\t\t\treturn rawValue as FieldValue\n\t\t}\n\n\t\tif (Array.isArray(rawValue)) {\n\t\t\treturn rawValue.reduce(\n\t\t\t\t(acc: FieldValue, it, idx) => {\n\t\t\t\t\tconst fv = this.convertRawValue(it)\n\t\t\t\t\tif (fv === undefined) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\t\t\t\t\tacc.codes = [...(fv.codes ?? []), ...(acc.codes ?? [])]\n\t\t\t\t\tacc.content['*'] = fv.content['*']?.value\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...acc.content['*'],\n\t\t\t\t\t\t\t\t[(fv.codes ?? [])[0].id ?? idx.toString()]: fv.content['*'].value,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: acc.content['*']\n\t\t\t\t\treturn acc\n\t\t\t\t},\n\t\t\t\t{ content: { '*': { type: 'compound', value: {} } } },\n\t\t\t)\n\t\t}\n\n\t\tif (typeof rawValue === 'number') {\n\t\t\treturn { content: { '*': { type: 'number', value: rawValue } } }\n\t\t}\n\n\t\tif (typeof rawValue === 'string') {\n\t\t\treturn { content: { '*': { type: 'string', value: rawValue } } }\n\t\t}\n\n\t\tif (typeof rawValue === 'boolean') {\n\t\t\treturn { content: { '*': { type: 'boolean', value: rawValue } } }\n\t\t}\n\n\t\tif (rawValue instanceof Date) {\n\t\t\treturn { content: { '*': { type: 'timestamp', value: dateToFuzzyDate(rawValue) } } }\n\t\t}\n\n\t\tif (rawValue && typeof rawValue === 'object' && 'unit' in rawValue && 'value' in rawValue && typeof rawValue.value === 'number') {\n\t\t\treturn { content: { '*': { type: 'measure', value: rawValue.value, unit: rawValue.unit?.toString() ?? '' } } }\n\t\t}\n\n\t\treturn undefined\n\t}\n\n\t//This method mutates the BridgedFormValuesContainer but can only be called from the constructor\n\tprivate async computeInitialValues() {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\tawait Promise.all(\n\t\t\t\tthis.initialValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).map(async ({ metadata, revisionsFilter, formula }) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentValue = this.getValues(revisionsFilter)\n\t\t\t\t\t\tif (!currentValue || !Object.keys(currentValue).length) {\n\t\t\t\t\t\t\tconst newValue = this.convertRawValue((await this.compute(formula)) as unknown)\n\t\t\t\t\t\t\tif (newValue !== undefined) {\n\t\t\t\t\t\t\t\tconst lng = this.language ?? 'en'\n\t\t\t\t\t\t\t\tif (newValue && !newValue.content[lng] && newValue.content['*']) {\n\t\t\t\t\t\t\t\t\tnewValue.content[lng] = newValue.content['*']\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\t\tdelete newValue.content['*']\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsetValueOnContactFormValuesContainer(this.contactFormValuesContainer, metadata.label, lng, newValue, undefined, metadata, (fvc: ContactFormValuesContainer) => {\n\t\t\t\t\t\t\t\t\tconst currentContact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\t\t\t\tthis.contactFormValuesContainer = fvc\n\t\t\t\t\t\t\t\t\tif (this.contact === currentContact) {\n\t\t\t\t\t\t\t\t\t\tthis.contact = fvc.currentContact\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.log(`Error while computing formula : ${formula}`, e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\t//This method mutates the BridgedFormValuesContainer but can only be called from the constructor\n\tprivate async computeDependentValues() {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\tawait Promise.all(\n\t\t\t\tthis.dependentValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).map(async ({ metadata, revisionsFilter, formula }) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentValue = this.getValues(revisionsFilter)\n\t\t\t\t\t\tconst newValue = this.convertRawValue((await this.compute(formula)) as unknown)\n\n\t\t\t\t\t\tif (newValue !== undefined || currentValue != undefined) {\n\t\t\t\t\t\t\tconst lng = this.language ?? 'en'\n\t\t\t\t\t\t\tif (newValue && !newValue.content[lng] && newValue.content['*']) {\n\t\t\t\t\t\t\t\tnewValue.content[lng] = newValue.content['*']\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tdelete newValue.content['*']\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst interceptor = (fvc: ContactFormValuesContainer) => {\n\t\t\t\t\t\t\t\tconst currentContact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\t\t\tthis.contactFormValuesContainer = fvc\n\t\t\t\t\t\t\t\tif (this.contact === currentContact) {\n\t\t\t\t\t\t\t\t\tthis.contact = fvc.currentContact\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetValueOnContactFormValuesContainer(this.contactFormValuesContainer, metadata.label, lng, newValue, Object.keys(currentValue ?? {})[0], metadata, interceptor)\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.log(`Error while computing formula : ${formula}`, e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tsetValue(label: string, language: string, fv?: FieldValue, id?: string, metadata?: FieldMetadata): void {\n\t\tsetValueOnContactFormValuesContainer(this.contactFormValuesContainer, label, language, fv, id, metadata)\n\t}\n\n\tsetMetadata(meta: FieldMetadata, id?: string | undefined): void {\n\t\tthis.contactFormValuesContainer.setMetadata(\n\t\t\t{\n\t\t\t\tlabel: meta.label,\n\t\t\t\tresponsible: meta.owner,\n\t\t\t\tvalueDate: meta.valueDate,\n\t\t\t\ttags: meta.tags?.map((x) => new CodeStub(x)),\n\t\t\t},\n\t\t\tid,\n\t\t)\n\t}\n\n\tdelete(serviceId: string): void {\n\t\tthis.contactFormValuesContainer.delete(serviceId)\n\t}\n\n\tprivate getVersionedValuesForKey(key: string | symbol) {\n\t\treturn this.getValues((id, history) => (history?.[0]?.value?.label && key === history[0].value.label ? [history?.[0]?.revision] : []))\n\t}\n\n\tasync compute<\n\t\tT,\n\t\tS extends {\n\t\t\t[key: string | symbol]: unknown\n\t\t},\n\t>(formula: string, sandbox?: S): Promise<T | undefined> {\n\t\t// noinspection JSUnusedGlobalSymbols\n\t\tconst parseContent = (content?: { [key: string]: PrimitiveType }, toString = false) => {\n\t\t\tif (!content) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst primitive = content[this.language] ?? content['*'] ?? content[Object.keys(content)[0]]\n\t\t\treturn primitive && parsePrimitive(primitive, toString)\n\t\t}\n\t\tconst text = (item?: { content: { [key: string]: PrimitiveType } } | { content: { [key: string]: PrimitiveType } }[]) => {\n\t\t\tif (!item) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst items: { content: { [key: string]: PrimitiveType } }[] = Array.isArray(item) ? item : [item]\n\t\t\treturn items\n\t\t\t\t.map((it) => parseContent(it.content, true)?.toString())\n\t\t\t\t.filter((it) => !!it)\n\t\t\t\t.join(', ')\n\t\t}\n\t\tconst log = console.log\n\t\tconst native = {\n\t\t\tparseInt: parseInt,\n\t\t\tparseFloat: parseFloat,\n\t\t\tDate: Date,\n\t\t\tMath: Math,\n\t\t\tNumber: Number,\n\t\t\tString: String,\n\t\t\tBoolean: Boolean,\n\t\t\tArray: Array,\n\t\t\tObject: Object,\n\t\t\thasOption: (\n\t\t\t\tit: {\n\t\t\t\t\tcodes: CodeStub[]\n\t\t\t\t},\n\t\t\t\toption: string,\n\t\t\t) => it && it.codes?.some((c) => c.id === option || c.id?.split('|')?.[1] === option),\n\t\t\tscore: (it: { codes: CodeStub[] }) => {\n\t\t\t\treturn it\n\t\t\t\t\t? (it.codes ?? []).reduce((acc, c) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\treturn acc + parseInt(c.id?.split('|')?.[1] ?? '0')\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn acc\n\t\t\t\t\t\t\t}\n\t\t\t\t\t }, 0)\n\t\t\t\t\t: 0\n\t\t\t},\n\t\t\tparseContent,\n\t\t\tvalidate: {\n\t\t\t\tnotBlank: (self: any, label: string) => {\n\t\t\t\t\tconst value = parseContent((self[label as any] as any)?.[0]?.content)\n\t\t\t\t\treturn !!(value as any)?.trim()?.length\n\t\t\t\t},\n\t\t\t},\n\t\t\ttext,\n\t\t\tlog,\n\t\t\tPromise,\n\t\t} as { [key: string]: any }\n\t\tconst proxy: S = new Proxy({} as S, {\n\t\t\thas: (target: S, key: string | symbol) =>\n\t\t\t\t!!native[key as string] || key === 'self' || !!this.interpreterContext[key as string] || Object.keys(this.getVersionedValuesForKey(key) ?? {}).length > 0,\n\t\t\tget: (target: S, key: string | symbol) => {\n\t\t\t\tif (key === 'undefined') {\n\t\t\t\t\treturn undefined\n\t\t\t\t}\n\t\t\t\tconst nativeValue = native[key as string]\n\t\t\t\tif (!!nativeValue) {\n\t\t\t\t\treturn nativeValue\n\t\t\t\t}\n\t\t\t\treturn key === 'self' ? proxy : this.interpreterContext[key as string] ? this.interpreterContext[key as string]() : Object.values(this.getVersionedValuesForKey(key)).map((v) => v[0]?.value)\n\t\t\t},\n\t\t})\n\t\treturn this.interpreter?.(formula, sandbox ?? proxy)\n\t}\n\n\tasync getChildren(): Promise<FormValuesContainer<FieldValue, FieldMetadata>[]> {\n\t\tconst children = await Promise.all(\n\t\t\t(\n\t\t\t\tawait this.contactFormValuesContainer.getChildren()\n\t\t\t).map((fvc) =>\n\t\t\t\tnew BridgedFormValuesContainer(\n\t\t\t\t\tthis.responsible,\n\t\t\t\t\tfvc,\n\t\t\t\t\tthis.interpreter,\n\t\t\t\t\tthis.contact,\n\t\t\t\t\tthis.initialValuesProvider,\n\t\t\t\t\tthis.dependentValuesProvider,\n\t\t\t\t\tthis.validatorsProvider,\n\t\t\t\t\tthis.language,\n\t\t\t\t\t[],\n\t\t\t\t\tthis.interpreterContext,\n\t\t\t\t).init(),\n\t\t\t),\n\t\t)\n\t\tconsole.log(`${children.length} children found in ${this.contactFormValuesContainer.rootForm.formTemplateId} initialised with `, this.initialValuesProvider)\n\t\treturn children\n\t}\n\n\tasync getValidationErrors(): Promise<[FieldMetadata, string][]> {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\t// noinspection ES6MissingAwait\n\t\t\treturn await this.validatorsProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).reduce(\n\t\t\t\tasync (resPromise, { metadata, validators }) =>\n\t\t\t\t\tawait validators.reduce(async (resPromise, { validation, message }) => {\n\t\t\t\t\t\tconst res = await resPromise\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (!(await this.compute(validation))) {\n\t\t\t\t\t\t\t\tres.push([metadata, message])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.log(`Error while computing validation : ${validation}`, e)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn res\n\t\t\t\t\t}, resPromise),\n\t\t\t\tPromise.resolve([]) as Promise<[FieldMetadata, string][]>,\n\t\t\t)\n\t\t} else {\n\t\t\treturn []\n\t\t}\n\t}\n\n\tasync addChild(anchorId: string, templateId: string, label: string): Promise<void> {\n\t\tawait this.contactFormValuesContainer.addChild(anchorId, templateId, label)\n\t}\n\n\tasync removeChild(container: BridgedFormValuesContainer): Promise<void> {\n\t\tawait this.contactFormValuesContainer.removeChild(container.contactFormValuesContainer)\n\t}\n\n\tsynchronise() {\n\t\tthis.contactFormValuesContainer.synchronise()\n\t\treturn this\n\t}\n}\n\n/**\n * This class is a form values container that uses a hierarchy of forms as a data source. The actual values are extracted from the services of the contacts.\n * The `currentContact` is the contact that has been selected by the user, any later contact should be ignored.\n * The `contactsHistory` is used to provide the full history of the services.\n * The hierarchy of ContactFormValuesContainer has to be maintained by the manager of the instances of this class (typically the BridgedFormValuesContainer).\n * Each ContactFormValuesContainer has a reference to its `rootForm`.\n * The `serviceFactory` and `formFactory` are used to create new services and add sub-forms.\n */\nexport class ContactFormValuesContainer implements FormValuesContainer<DecryptedService, ServiceMetadata> {\n\trootForm: CardinalForm\n\tcurrentContact: DecryptedContact //The contact of the moment, used to record new modifications\n\tcontactsHistory: DecryptedContact[] //Must be sorted (most recent first), contains all the contacts linked to this form\n\tchildren: ContactFormValuesContainer[] //Direct children of the ContactFormValuesContainer\n\tserviceFactory: (label: string, serviceId?: string) => DecryptedService\n\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>\n\tformRecycler: (formId: string) => Promise<void>\n\n\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[]\n\tprivate _id: string = uuidv4()\n\tprivate _initialised = false\n\tprivate indexedServices: { [id: string]: Version<DecryptedService>[] }\n\n\ttoString(): string {\n\t\treturn `Contact(${this.rootForm.formTemplateId}[${this.rootForm.id}]) - ${this._id}`\n\t}\n\n\tmustBeInitialised() {\n\t\treturn !this._initialised\n\t}\n\n\t/**\n\t * Returns a contact that combines the content of the contact in this form with the content of all contents stored in the children\n\t */\n\tcoordinatedContact(): DecryptedContact {\n\t\tconst childrenContacts = this.children.map((c) => c.coordinatedContact())\n\t\tconst thisKeptServiceIds = (this.currentContact.subContacts ?? []).filter((sc) => sc.formId === this.rootForm.id).flatMap((sc) => (sc.services ?? []).map((s) => s.serviceId))\n\t\treturn new DecryptedContact({\n\t\t\t...this.currentContact,\n\t\t\tservices: childrenContacts\n\t\t\t\t.reduce((acc: DecryptedService[], c: DecryptedContact) => acc.concat(c.services ?? []), [])\n\t\t\t\t.concat((this.currentContact.services ?? []).filter((s) => thisKeptServiceIds.includes(s.id))),\n\t\t\tsubContacts: childrenContacts\n\t\t\t\t.reduce((acc: DecryptedSubContact[], c: DecryptedContact) => acc.concat(c.subContacts ?? []), [])\n\t\t\t\t.concat((this.currentContact.subContacts ?? []).filter((s) => s.formId === this.rootForm.id)),\n\t\t})\n\t}\n\n\t/**\n\t * Returns a contact that combines the content of the contact in this form with the content of all contents stored in the children\n\t */\n\tallForms(): CardinalForm[] {\n\t\treturn [this.rootForm].concat(this.children.flatMap((c) => c.allForms()))\n\t}\n\n\tconstructor(\n\t\trootForm: CardinalForm,\n\t\tcurrentContact: DecryptedContact,\n\t\tcontactsHistory: DecryptedContact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => DecryptedService,\n\t\tchildren: ContactFormValuesContainer[],\n\t\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>,\n\t\tformRecycler: (formId: string) => Promise<void>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[] = [],\n\t\tinitialised = true,\n\t) {\n\t\tconsole.log(`Creating contact FVC (${rootForm.formTemplateId}) with ${children.length} children [${this._id}]`)\n\n\t\tif (contactsHistory.includes(currentContact)) {\n\t\t\tthrow new Error('Illegal argument, the history must not contain the currentContact')\n\t\t}\n\t\tthis.rootForm = rootForm\n\t\tthis.currentContact = currentContact\n\t\tthis.contactsHistory = sortedBy(contactsHistory, 'created', 'desc')\n\t\tthis.children = children\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.formFactory = formFactory\n\t\tthis.formRecycler = formRecycler\n\t\tthis.changeListeners = changeListeners\n\t\tthis._initialised = initialised\n\n\t\tthis.indexedServices = [this.currentContact].concat(this.contactsHistory).reduce((acc, ctc) => {\n\t\t\tconst services =\n\t\t\t\tctc.services\n\t\t\t\t\t?.filter((s) => ctc.subContacts?.some((sc) => sc.formId === this.rootForm.id && sc.services?.some((sss) => sss.serviceId === s.id)))\n\t\t\t\t\t?.reduce(\n\t\t\t\t\t\t(acc, s) =>\n\t\t\t\t\t\t\ts.id\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t\t[s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({\n\t\t\t\t\t\t\t\t\t\t\trevision: ctc.rev ?? null,\n\t\t\t\t\t\t\t\t\t\t\tmodified: ctc.created,\n\t\t\t\t\t\t\t\t\t\t\tvalue: s,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t\tacc,\n\t\t\t\t\t) ?? acc\n\t\t\treturn services\n\t\t}, {} as VersionedData<DecryptedService>)\n\n\t\tthis.synchronise()\n\t}\n\n\tsynchronise() {\n\t\tthis.children.forEach((childFVC) => {\n\t\t\tthis.registerChildFormValuesContainer(childFVC.synchronise())\n\t\t})\n\t\treturn this\n\t}\n\n\t//Make sure that when a child is changed, a new version of this is created with the updated child\n\tregisterChildFormValuesContainer(childFormValueContainer: ContactFormValuesContainer) {\n\t\tchildFormValueContainer.changeListeners = [\n\t\t\t(newValue) => {\n\t\t\t\tconsole.log(`Child ${newValue._id} ${childFormValueContainer.rootForm.formTemplateId} changed, updating parent ${this._id} ${this.rootForm.formTemplateId}`)\n\t\t\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\t\tthis.rootForm,\n\t\t\t\t\tthis.currentContact,\n\t\t\t\t\tthis.contactsHistory,\n\t\t\t\t\tthis.serviceFactory,\n\t\t\t\t\tthis.children.map((c) => {\n\t\t\t\t\t\treturn c.rootForm.id === childFormValueContainer.rootForm.id ? newValue : c\n\t\t\t\t\t}),\n\t\t\t\t\tthis.formFactory,\n\t\t\t\t\tthis.formRecycler,\n\t\t\t\t)\n\t\t\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer))\n\t\t\t},\n\t\t]\n\t}\n\n\tstatic async fromFormsHierarchy(\n\t\trootForm: CardinalForm,\n\t\tcurrentContact: DecryptedContact,\n\t\tcontactsHistory: DecryptedContact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => DecryptedService,\n\t\tformChildrenProvider: (parentId: string | undefined) => Promise<CardinalForm[]>,\n\t\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>,\n\t\tformRecycler: (formId: string) => Promise<void>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[] = [],\n\t): Promise<ContactFormValuesContainer> {\n\t\tconst contactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\trootForm,\n\t\t\tcurrentContact,\n\t\t\tcontactsHistory,\n\t\t\tserviceFactory,\n\t\t\trootForm.id\n\t\t\t\t? await Promise.all(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tawait formChildrenProvider(rootForm.id)\n\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\tasync (f) =>\n\t\t\t\t\t\t\t\t// eslint-disable-next-line max-len\n\t\t\t\t\t\t\t\tawait ContactFormValuesContainer.fromFormsHierarchy(f, currentContact, contactsHistory, serviceFactory, formChildrenProvider, formFactory, formRecycler),\n\t\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: [],\n\t\t\tformFactory,\n\t\t\tformRecycler,\n\t\t\tchangeListeners,\n\t\t\tfalse,\n\t\t)\n\t\tcontactFormValuesContainer.children.forEach((childFVC) => contactFormValuesContainer.registerChildFormValuesContainer(childFVC))\n\n\t\treturn contactFormValuesContainer\n\t}\n\n\tgetLabel(): string {\n\t\treturn this.rootForm.descr ?? ''\n\t}\n\n\tgetFormId(): string | undefined {\n\t\treturn this.rootForm?.formTemplateId\n\t}\n\n\tregisterChangeListener(listener: (newValue: ContactFormValuesContainer) => void): void {\n\t\tthis.changeListeners.push(listener)\n\t}\n\n\tunregisterChangeListener(listener: (newValue: ContactFormValuesContainer) => void): void {\n\t\tthis.changeListeners = this.changeListeners.filter((l) => l !== listener)\n\t}\n\n\tasync getChildren(): Promise<ContactFormValuesContainer[]> {\n\t\treturn this.children\n\t}\n\n\tasync getValidationErrors(): Promise<[FieldMetadata, string][]> {\n\t\tthrow new Error('Validation not supported at contact level')\n\t}\n\n\tgetDefaultValue(): Promise<FieldValue | undefined> {\n\t\treturn Promise.resolve(undefined)\n\t}\n\n\tgetValues(revisionsFilter: (id: string, history: Version<ServiceMetadata>[]) => (string | null)[]): VersionedData<DecryptedService> {\n\t\treturn Object.entries(this.getServicesInHistory(revisionsFilter)).reduce(\n\t\t\t(acc, [id, history]) =>\n\t\t\t\thistory.length\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[id]: [...history].sort((a, b) => (b?.modified || +new Date()) - (a?.modified || +new Date())),\n\t\t\t\t\t }\n\t\t\t\t\t: acc,\n\t\t\t{},\n\t\t)\n\t}\n\n\tgetMetadata(id: string, revisions: (string | null)[]): VersionedData<ServiceMetadata> {\n\t\treturn [this.currentContact]\n\t\t\t.concat(this.contactsHistory)\n\t\t\t.filter((ctc) => ctc.rev !== undefined && revisions.includes(ctc.rev))\n\t\t\t.reduce(\n\t\t\t\t(acc, ctc) =>\n\t\t\t\t\t(ctc.services ?? [])\n\t\t\t\t\t\t.filter((s) => s.id === id)\n\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\t(acc, s) =>\n\t\t\t\t\t\t\t\ts.id\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t\t\t[s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({\n\t\t\t\t\t\t\t\t\t\t\t\trevision: ctc.rev ?? null,\n\t\t\t\t\t\t\t\t\t\t\t\tmodified: s.modified,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: s.label ?? s.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tresponsible: s.responsible,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t) ?? acc,\n\t\t\t\t{} as { [id: string]: Version<ServiceMetadata>[] },\n\t\t\t) //index services in history by id\n\t}\n\n\tsetMetadata(meta: ServiceMetadata, id?: string): void {\n\t\tconst service = (id && this.getServiceInCurrentContact(id)) || this.serviceFactory(meta.label, id)\n\t\tif (!service.id) {\n\t\t\tthrow new Error('Service id must be defined')\n\t\t}\n\t\tif (\n\t\t\t(meta.responsible && service.responsible !== meta.responsible) ||\n\t\t\t(meta.valueDate && service.valueDate !== meta.valueDate) ||\n\t\t\t(meta.codes && service.codes !== meta.codes) ||\n\t\t\t(meta.tags && service.tags !== meta.tags)\n\t\t) {\n\t\t\tconst newService = new DecryptedService({ ...service, modified: Date.now() })\n\t\t\tmeta.responsible && (newService.responsible = meta.responsible)\n\t\t\tmeta.valueDate && (newService.valueDate = meta.valueDate)\n\t\t\tmeta.codes && (newService.codes = normalizeCodes(meta.codes))\n\t\t\tmeta.tags && (newService.tags = normalizeCodes(meta.tags))\n\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tnew DecryptedContact({\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tservices: this.currentContact.services?.map((s) => (s.id === service.id ? newService : s)),\n\t\t\t\t}),\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newFormValuesContainer))\n\t\t}\n\t}\n\n\tsetValue(label: string, language: string, value?: DecryptedService, id?: string, metadata?: ServiceMetadata, changeListenersOverrider?: (fvc: ContactFormValuesContainer) => void): void {\n\t\tconst service = (id && this.getServicesInHistory((sid: string, history) => (sid === id ? history.map((x) => x.revision) : []))[id]?.[0]?.value) || this.serviceFactory(label, id)\n\t\tif (!service.id) {\n\t\t\tthrow new Error('Service id must be defined')\n\t\t}\n\t\tconsole.log('Setting value of service', service.id, 'with', value, 'and metadata', metadata)\n\t\tconst newContent = value?.content?.[language]\n\t\tconst newCodes = value?.codes ? normalizeCodes(value.codes) : []\n\t\tif (!isContentEqual(service.content?.[language], newContent) || (newCodes && !areCodesEqual(newCodes, service.codes ?? []))) {\n\t\t\tconst newService = new DecryptedService({ ...service, modified: Date.now() })\n\t\t\tconst newContents = newContent\n\t\t\t\t? {\n\t\t\t\t\t\t...(service.content || {}),\n\t\t\t\t\t\t[language]: newContent,\n\t\t\t\t }\n\t\t\t\t: { ...(service.content || {}) }\n\t\t\tif (!newContent) {\n\t\t\t\tdelete newContents[language]\n\t\t\t}\n\n\t\t\tlet newCurrentContact: DecryptedContact\n\t\t\tif (!Object.entries(newContents).filter(([, cnt]) => cnt !== undefined).length) {\n\t\t\t\tnewCurrentContact = new DecryptedContact({\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tsubContacts: (this.currentContact.subContacts ?? []).some((sc) => sc.formId === this.rootForm.id)\n\t\t\t\t\t\t? (this.currentContact.subContacts ?? []).map((sc) => {\n\t\t\t\t\t\t\t\tif (sc.formId === this.rootForm.id) {\n\t\t\t\t\t\t\t\t\treturn new DecryptedSubContact({\n\t\t\t\t\t\t\t\t\t\t...sc,\n\t\t\t\t\t\t\t\t\t\tservices: (sc.services ?? []).filter((s) => s.serviceId !== service.id).concat([new ServiceLink({ serviceId: service.id })]),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn sc\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: (this.currentContact.subContacts ?? []).concat(\n\t\t\t\t\t\t\t\tnew DecryptedSubContact({\n\t\t\t\t\t\t\t\t\tformId: this.rootForm.id,\n\t\t\t\t\t\t\t\t\tservices: [new ServiceLink({ serviceId: service.id })],\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t ),\n\t\t\t\t\tservices: (this.currentContact.services ?? []).some((s) => s.id === service.id)\n\t\t\t\t\t\t? (this.currentContact.services ?? []).filter((s) => s.id !== service.id)\n\t\t\t\t\t\t: [...(this.currentContact.services ?? [])],\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tnewService.content = newContents\n\t\t\t\tnewService.codes = newCodes\n\n\t\t\t\tif (metadata) {\n\t\t\t\t\tnewService.responsible = metadata.responsible ?? newService.responsible\n\t\t\t\t\tnewService.valueDate = metadata.valueDate ?? newService.valueDate\n\t\t\t\t\tnewService.tags = metadata.tags ? normalizeCodes(metadata.tags) : newService.tags\n\t\t\t\t\tnewService.label = metadata.label ?? newService.label\n\t\t\t\t}\n\n\t\t\t\tnewCurrentContact = new DecryptedContact({\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tsubContacts: (this.currentContact.subContacts ?? []).some((sc) => sc.formId === this.rootForm.id)\n\t\t\t\t\t\t? (this.currentContact.subContacts ?? []).map((sc) => {\n\t\t\t\t\t\t\t\tif (sc.formId === this.rootForm.id) {\n\t\t\t\t\t\t\t\t\treturn new DecryptedSubContact({\n\t\t\t\t\t\t\t\t\t\t...sc,\n\t\t\t\t\t\t\t\t\t\tservices: (sc.services ?? []).filter((s) => s.serviceId !== service.id).concat([new ServiceLink({ serviceId: service.id })]),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn sc\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: (this.currentContact.subContacts ?? []).concat(\n\t\t\t\t\t\t\t\tnew DecryptedSubContact({\n\t\t\t\t\t\t\t\t\tformId: this.rootForm.id,\n\t\t\t\t\t\t\t\t\tservices: [new ServiceLink({ serviceId: service.id })],\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t ),\n\t\t\t\t\tservices: (this.currentContact.services ?? []).some((s) => s.id === service.id)\n\t\t\t\t\t\t? (this.currentContact.services ?? []).map((s) => (s.id === service.id ? newService : s))\n\t\t\t\t\t\t: [...(this.currentContact.services ?? []), newService],\n\t\t\t\t})\n\t\t\t}\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tnewCurrentContact,\n\t\t\t\tthis.contactsHistory.map((c) => (c === this.currentContact ? newCurrentContact : c)),\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tchangeListenersOverrider ? changeListenersOverrider(newFormValuesContainer) : this.changeListeners.forEach((l) => notify(l, newFormValuesContainer))\n\t\t}\n\t}\n\n\tdelete(serviceId: string): void {\n\t\tconst service = this.getServiceInCurrentContact(serviceId)\n\t\tif (service) {\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tnew DecryptedContact({\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tservices: this.currentContact.services?.map((s) =>\n\t\t\t\t\t\ts.id === serviceId\n\t\t\t\t\t\t\t? new DecryptedService({\n\t\t\t\t\t\t\t\t\t...service,\n\t\t\t\t\t\t\t\t\tendOfLife: Date.now(),\n\t\t\t\t\t\t\t })\n\t\t\t\t\t\t\t: s,\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newFormValuesContainer))\n\t\t}\n\t}\n\n\tasync compute<T>(): Promise<T | undefined> {\n\t\tthrow new Error('Compute not supported at contact level')\n\t}\n\n\t/** returns all services in history that match a selector\n\t *\n\t * @private\n\t * @param revisionsFilter\n\t */\n\tprivate getServicesInHistory(revisionsFilter: (id: string, history: Version<ServiceMetadata>[]) => (string | null)[]): VersionedData<DecryptedService> {\n\t\t//index services in history by id\n\t\treturn Object.entries(this.indexedServices)\n\t\t\t.map(([id, history]) => {\n\t\t\t\tconst keptRevisions = revisionsFilter(\n\t\t\t\t\tid,\n\t\t\t\t\thistory.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\t\trevision,\n\t\t\t\t\t\tmodified,\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tlabel: s.label ?? s.id ?? '',\n\t\t\t\t\t\t\towner: s.responsible,\n\t\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\t\tcodes: s.codes,\n\t\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\t},\n\t\t\t\t\t})),\n\t\t\t\t)\n\t\t\t\treturn [id, history.filter(({ revision }) => keptRevisions.includes(revision))] as [string, Version<DecryptedService>[]]\n\t\t\t})\n\t\t\t.reduce((acc, [id, history]) => ({ ...acc, [id]: history }), {})\n\t}\n\n\tasync addChild(anchorId: string, templateId: string, label: string): Promise<void> {\n\t\tconst parentId = this.rootForm.id\n\t\tif (!parentId) return\n\n\t\tconst newForm = await this.formFactory(parentId, anchorId, templateId, label)\n\t\tconst childFVC = new ContactFormValuesContainer(newForm, this.currentContact, this.contactsHistory, this.serviceFactory, [], this.formFactory, this.formRecycler, [], false)\n\n\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\tthis.rootForm,\n\t\t\tthis.currentContact,\n\t\t\tthis.contactsHistory,\n\t\t\tthis.serviceFactory,\n\t\t\t[...this.children, childFVC],\n\t\t\tthis.formFactory,\n\t\t\tthis.formRecycler,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tnewContactFormValuesContainer.registerChildFormValuesContainer(childFVC)\n\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer))\n\t}\n\n\tprivate getServiceInCurrentContact(id: string): DecryptedService | undefined {\n\t\tconst service = (this.currentContact.services || [])?.find((s) => s.id === id)\n\t\treturn service ?? undefined\n\t}\n\n\tasync removeChild(container: ContactFormValuesContainer): Promise<void> {\n\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\tthis.rootForm,\n\t\t\tthis.currentContact,\n\t\t\tthis.contactsHistory,\n\t\t\tthis.serviceFactory,\n\t\t\tthis.children.filter((c) => c.rootForm.id !== container.rootForm.id),\n\t\t\tthis.formFactory,\n\t\t\tthis.formRecycler,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer))\n\t}\n}\n\nconst setValueOnContactFormValuesContainer = (\n\tcfvc: ContactFormValuesContainer,\n\tlabel: string,\n\tlanguage: string,\n\tfv?: FieldValue,\n\tid?: string,\n\tmetadata?: FieldMetadata,\n\tchangeListenersOverrider?: (fvc: ContactFormValuesContainer) => void,\n) => {\n\tconst value = fv?.content[language]\n\tcfvc.setValue(\n\t\tlabel,\n\t\tlanguage,\n\t\tnew DecryptedService({\n\t\t\tid: id,\n\t\t\tcodes: fv?.codes?.map((x) => new CodeStub(x)) ?? [],\n\t\t\tcontent: value\n\t\t\t\t? {\n\t\t\t\t\t\t[language]: primitiveTypeToContent(language, value),\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t}),\n\t\tid,\n\t\tmetadata\n\t\t\t? {\n\t\t\t\t\tlabel: metadata?.label ?? label,\n\t\t\t\t\tresponsible: metadata?.owner,\n\t\t\t\t\tvalueDate: metadata?.valueDate,\n\t\t\t\t\ttags: metadata?.tags?.map((x) => new CodeStub(x)),\n\t\t\t }\n\t\t\t: undefined,\n\t\tchangeListenersOverrider,\n\t)\n}\n"]}
|
package/icure/icure-utils.js
CHANGED
|
@@ -17,27 +17,6 @@ export function areCodesEqual(c1s, c2s) {
|
|
|
17
17
|
export function isServiceEqual(svc1, svc2) {
|
|
18
18
|
return svc1.id === svc2.id && svc1.valueDate === svc2.valueDate && areCodesEqual(svc1.codes || [], svc2.codes || []) && isServiceContentEqual(svc1.content || {}, svc2.content || {});
|
|
19
19
|
}
|
|
20
|
-
function areBinaryValuesEqual(content1, content2) {
|
|
21
|
-
return ((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) || content1 == content2;
|
|
22
|
-
}
|
|
23
|
-
function areBooleanValuesEqual(content1, content2) {
|
|
24
|
-
return ((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) || content1 === content2;
|
|
25
|
-
}
|
|
26
|
-
function areNumberValuesEqual(content1, content2) {
|
|
27
|
-
return (((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) ||
|
|
28
|
-
(content1 !== undefined && content2 !== undefined && content1 !== null && content2 !== null && isNaN(content1) && isNaN(content2)) ||
|
|
29
|
-
content1 === content2);
|
|
30
|
-
}
|
|
31
|
-
function areStringValuesEqual(content1, content2) {
|
|
32
|
-
return ((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) || content1 === content2;
|
|
33
|
-
}
|
|
34
|
-
function areMeasureValuesEqual(content1, content2) {
|
|
35
|
-
return (((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) ||
|
|
36
|
-
(areNumberValuesEqual(content1 === null || content1 === void 0 ? void 0 : content1.value, content2 === null || content2 === void 0 ? void 0 : content2.value) && areStringValuesEqual(content1 === null || content1 === void 0 ? void 0 : content1.unit, content2 === null || content2 === void 0 ? void 0 : content2.unit)));
|
|
37
|
-
}
|
|
38
|
-
function areMedicationValuesEqual(content1, content2) {
|
|
39
|
-
return ((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) || content1 == content2;
|
|
40
|
-
}
|
|
41
20
|
export function isContentEqual(content1, content2) {
|
|
42
21
|
var _a, _b;
|
|
43
22
|
if (!content1 && !content2) {
|
|
@@ -46,15 +25,18 @@ export function isContentEqual(content1, content2) {
|
|
|
46
25
|
if (!content1 || !content2) {
|
|
47
26
|
return false;
|
|
48
27
|
}
|
|
49
|
-
return (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
28
|
+
return (((!content1.binaryValue && !content2.binaryValue) || content1.binaryValue === content2.binaryValue) &&
|
|
29
|
+
(((content1.booleanValue === null || content1.booleanValue === undefined) && (content2.booleanValue === null || content2.booleanValue === undefined)) ||
|
|
30
|
+
content1.booleanValue === content2.booleanValue) &&
|
|
31
|
+
((!content1.documentId && !content2.documentId) || content1.documentId === content2.documentId) &&
|
|
32
|
+
(((content1.fuzzyDateValue === null || content1.fuzzyDateValue === undefined) && (content2.fuzzyDateValue === null || content2.fuzzyDateValue === undefined)) ||
|
|
33
|
+
content1.fuzzyDateValue === content2.fuzzyDateValue) &&
|
|
34
|
+
((!content1.instantValue && !content2.instantValue) || content1.instantValue === content2.instantValue) &&
|
|
35
|
+
((!content1.measureValue && !content2.measureValue) || content1.measureValue === content2.measureValue) &&
|
|
36
|
+
((!content1.medicationValue && !content2.medicationValue) || content1.medicationValue === content2.medicationValue) &&
|
|
37
|
+
((!content1.stringValue && !content2.stringValue) || content1.stringValue === content2.stringValue) &&
|
|
38
|
+
(((content1.numberValue === null || content1.numberValue === undefined) && (content2.numberValue === null || content2.numberValue === undefined)) ||
|
|
39
|
+
content1.numberValue === content2.numberValue) &&
|
|
58
40
|
((!content1.compoundValue && !content2.compoundValue) ||
|
|
59
41
|
((((_a = content1.compoundValue) === null || _a === void 0 ? void 0 : _a.every((s1) => { var _a; return (_a = content2.compoundValue) === null || _a === void 0 ? void 0 : _a.some((s2) => isServiceEqual(s1, s2)); })) || false) &&
|
|
60
42
|
(((_b = content2 === null || content2 === void 0 ? void 0 : content2.compoundValue) === null || _b === void 0 ? void 0 : _b.every((s2) => { var _a; return (_a = content1 === null || content1 === void 0 ? void 0 : content1.compoundValue) === null || _a === void 0 ? void 0 : _a.some((s1) => isServiceEqual(s1, s2)); })) || false))));
|
package/icure/icure-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icure-utils.js","sourceRoot":"","sources":["../../tmp/icure/icure-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { CodeStub, DecryptedContent, DecryptedService, Measure, Medication } from '@icure/cardinal-sdk'\nimport { BooleanType, CompoundType, DateTimeType, MeasureType, NumberType, PrimitiveType, StringType, TimestampType } from '../components/model'\n\nexport function isCodeEqual(c1: CodeStub, c2: CodeStub): boolean {\n\tconst idParts1 = c1.id?.split('|')\n\tconst idParts2 = c2.id?.split('|')\n\tconst type1 = c1.type || idParts1?.[0]\n\tconst type2 = c2.type || idParts2?.[0]\n\tconst code1 = c1.code || idParts1?.[1]\n\tconst code2 = c2.code || idParts2?.[1]\n\tconst version1 = c1.version || idParts1?.[2]\n\tconst version2 = c2.version || idParts2?.[2]\n\treturn type1 === type2 && code1 === code2 && version1 === version2\n}\n\nexport function areCodesEqual(c1s: CodeStub[], c2s: CodeStub[]): boolean {\n\treturn c1s.every((c1) => c2s.some((c2) => isCodeEqual(c1, c2)) || false) && c2s.every((c2) => c1s.some((c1) => isCodeEqual(c1, c2)) || false)\n}\n\nexport function isServiceEqual(svc1: DecryptedService, svc2: DecryptedService): boolean {\n\treturn svc1.id === svc2.id && svc1.valueDate === svc2.valueDate && areCodesEqual(svc1.codes || [], svc2.codes || []) && isServiceContentEqual(svc1.content || {}, svc2.content || {})\n}\n\nfunction areBinaryValuesEqual(content1: ArrayBuffer | null | undefined, content2: ArrayBuffer | null | undefined) {\n\treturn ((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) || content1 == content2\n}\n\nfunction areBooleanValuesEqual(content1: boolean | null | undefined, content2: boolean | null | undefined) {\n\treturn ((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) || content1 === content2\n}\n\nfunction areNumberValuesEqual(content1: number | null | undefined, content2: number | null | undefined) {\n\treturn (\n\t\t((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) ||\n\t\t(content1 !== undefined && content2 !== undefined && content1 !== null && content2 !== null && isNaN(content1) && isNaN(content2)) ||\n\t\tcontent1 === content2\n\t)\n}\n\nfunction areStringValuesEqual(content1: string | null | undefined, content2: string | null | undefined) {\n\treturn ((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) || content1 === content2\n}\n\nfunction areMeasureValuesEqual(content1: Measure | null | undefined, content2: Measure | null | undefined) {\n\treturn (\n\t\t((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) ||\n\t\t(areNumberValuesEqual(content1?.value, content2?.value) && areStringValuesEqual(content1?.unit, content2?.unit))\n\t)\n}\n\nfunction areMedicationValuesEqual(content1: Medication | null | undefined, content2: Medication | null | undefined) {\n\treturn ((content1 === null || content1 === undefined) && (content2 === null || content2 === undefined)) || content1 == content2\n}\n\nexport function isContentEqual(content1: DecryptedContent | undefined, content2: DecryptedContent | undefined): boolean {\n\tif (!content1 && !content2) {\n\t\treturn true\n\t}\n\tif (!content1 || !content2) {\n\t\treturn false\n\t}\n\treturn (\n\t\tareBinaryValuesEqual(content1.binaryValue, content2.binaryValue) &&\n\t\tareBooleanValuesEqual(content1.booleanValue, content2.booleanValue) &&\n\t\tareStringValuesEqual(content1.documentId, content2.documentId) &&\n\t\tareNumberValuesEqual(content1.fuzzyDateValue, content2.fuzzyDateValue) &&\n\t\tareNumberValuesEqual(content1.instantValue, content2.instantValue) &&\n\t\tareMeasureValuesEqual(content1.measureValue, content2.measureValue) &&\n\t\tareMedicationValuesEqual(content1.medicationValue, content2.medicationValue) &&\n\t\tareStringValuesEqual(content1.stringValue, content2.stringValue) &&\n\t\tareNumberValuesEqual(content1.numberValue, content2.numberValue) &&\n\t\t((!content1.compoundValue && !content2.compoundValue) ||\n\t\t\t((content1.compoundValue?.every((s1) => content2.compoundValue?.some((s2) => isServiceEqual(s1, s2))) || false) &&\n\t\t\t\t(content2?.compoundValue?.every((s2) => content1?.compoundValue?.some((s1) => isServiceEqual(s1, s2))) || false)))\n\t)\n}\n\nexport function isServiceContentEqual(content1: { [language: string]: DecryptedContent }, content2: { [language: string]: DecryptedContent }): boolean {\n\treturn Object.keys(content1).reduce((isEqual, lng) => isEqual && isContentEqual(content1[lng], content2[lng]), true as boolean)\n}\n\nexport const primitiveTypeToContent = (language: string, value: PrimitiveType): DecryptedContent => {\n\treturn new DecryptedContent({\n\t\t...(value.type === 'number' ? { numberValue: (value as NumberType).value } : {}),\n\t\t...(value.type === 'measure'\n\t\t\t? {\n\t\t\t\t\tmeasureValue: new Measure({\n\t\t\t\t\t\tvalue: (value as MeasureType).value,\n\t\t\t\t\t\tunit: (value as MeasureType).unit,\n\t\t\t\t\t}),\n\t\t\t }\n\t\t\t: {}),\n\t\t...(value.type === 'string' ? { stringValue: (value as StringType).value } : {}),\n\t\t...(value.type === 'datetime' ? { fuzzyDateValue: (value as DateTimeType).value } : {}),\n\t\t...(value.type === 'boolean' ? { booleanValue: (value as BooleanType).value } : {}),\n\t\t...(value.type === 'timestamp' ? { instantValue: (value as TimestampType).value } : {}),\n\t\t...(value.type === 'compound'\n\t\t\t? {\n\t\t\t\t\tcompoundValue: Object.entries((value as CompoundType).value).map(\n\t\t\t\t\t\t([label, value]) =>\n\t\t\t\t\t\t\tnew DecryptedService({\n\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\t[language]: primitiveTypeToContent(language, value),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t }\n\t\t\t: {}),\n\t})\n}\nexport const contentToPrimitiveType = (language: string, content: DecryptedContent | undefined): PrimitiveType | undefined => {\n\tif (!content) {\n\t\treturn undefined\n\t}\n\tif (content.numberValue || content.numberValue === 0) {\n\t\treturn { type: 'number', value: content.numberValue }\n\t}\n\tif (content.measureValue?.value || content.measureValue?.value === 0 || content.measureValue?.unit?.length) {\n\t\treturn { type: 'measure', value: content.measureValue?.value, unit: content.measureValue?.unit }\n\t}\n\tif (content.stringValue) {\n\t\treturn { type: 'string', value: content.stringValue }\n\t}\n\tif (content.fuzzyDateValue) {\n\t\treturn { type: 'datetime', value: content.fuzzyDateValue }\n\t}\n\tif (content.booleanValue) {\n\t\treturn { type: 'boolean', value: content.booleanValue }\n\t}\n\tif (content.instantValue) {\n\t\treturn { type: 'timestamp', value: content.instantValue }\n\t}\n\tif (content.compoundValue) {\n\t\treturn {\n\t\t\ttype: 'compound',\n\t\t\tvalue: content.compoundValue.reduce((acc: { [label: string]: PrimitiveType }, { label, content }) => {\n\t\t\t\tconst primitiveValue = contentToPrimitiveType(language, content?.[language])\n\t\t\t\treturn label && primitiveValue ? { ...acc, [label]: primitiveValue } : acc\n\t\t\t}, {}),\n\t\t}\n\t}\n\n\treturn undefined\n}\nexport const codeStubToCode = (c: CodeStub) => ({\n\tid: c.id ?? `${c.type}|${c.code}|${c.version}`,\n\tlabel: c.label ?? {},\n})\n"]}
|
|
1
|
+
{"version":3,"file":"icure-utils.js","sourceRoot":"","sources":["../../tmp/icure/icure-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { CodeStub, DecryptedContent, DecryptedService, Measure } from '@icure/cardinal-sdk'\nimport { BooleanType, CompoundType, DateTimeType, MeasureType, NumberType, PrimitiveType, StringType, TimestampType } from '../components/model'\n\nexport function isCodeEqual(c1: CodeStub, c2: CodeStub): boolean {\n\tconst idParts1 = c1.id?.split('|')\n\tconst idParts2 = c2.id?.split('|')\n\tconst type1 = c1.type || idParts1?.[0]\n\tconst type2 = c2.type || idParts2?.[0]\n\tconst code1 = c1.code || idParts1?.[1]\n\tconst code2 = c2.code || idParts2?.[1]\n\tconst version1 = c1.version || idParts1?.[2]\n\tconst version2 = c2.version || idParts2?.[2]\n\treturn type1 === type2 && code1 === code2 && version1 === version2\n}\n\nexport function areCodesEqual(c1s: CodeStub[], c2s: CodeStub[]): boolean {\n\treturn c1s.every((c1) => c2s.some((c2) => isCodeEqual(c1, c2)) || false) && c2s.every((c2) => c1s.some((c1) => isCodeEqual(c1, c2)) || false)\n}\n\nexport function isServiceEqual(svc1: DecryptedService, svc2: DecryptedService): boolean {\n\treturn svc1.id === svc2.id && svc1.valueDate === svc2.valueDate && areCodesEqual(svc1.codes || [], svc2.codes || []) && isServiceContentEqual(svc1.content || {}, svc2.content || {})\n}\n\nexport function isContentEqual(content1: DecryptedContent | undefined, content2: DecryptedContent | undefined): boolean {\n\tif (!content1 && !content2) {\n\t\treturn true\n\t}\n\tif (!content1 || !content2) {\n\t\treturn false\n\t}\n\treturn (\n\t\t((!content1.binaryValue && !content2.binaryValue) || content1.binaryValue === content2.binaryValue) &&\n\t\t(((content1.booleanValue === null || content1.booleanValue === undefined) && (content2.booleanValue === null || content2.booleanValue === undefined)) ||\n\t\t\tcontent1.booleanValue === content2.booleanValue) &&\n\t\t((!content1.documentId && !content2.documentId) || content1.documentId === content2.documentId) &&\n\t\t(((content1.fuzzyDateValue === null || content1.fuzzyDateValue === undefined) && (content2.fuzzyDateValue === null || content2.fuzzyDateValue === undefined)) ||\n\t\t\tcontent1.fuzzyDateValue === content2.fuzzyDateValue) &&\n\t\t((!content1.instantValue && !content2.instantValue) || content1.instantValue === content2.instantValue) &&\n\t\t((!content1.measureValue && !content2.measureValue) || content1.measureValue === content2.measureValue) &&\n\t\t((!content1.medicationValue && !content2.medicationValue) || content1.medicationValue === content2.medicationValue) &&\n\t\t((!content1.stringValue && !content2.stringValue) || content1.stringValue === content2.stringValue) &&\n\t\t(((content1.numberValue === null || content1.numberValue === undefined) && (content2.numberValue === null || content2.numberValue === undefined)) ||\n\t\t\tcontent1.numberValue === content2.numberValue) &&\n\t\t((!content1.compoundValue && !content2.compoundValue) ||\n\t\t\t((content1.compoundValue?.every((s1) => content2.compoundValue?.some((s2) => isServiceEqual(s1, s2))) || false) &&\n\t\t\t\t(content2?.compoundValue?.every((s2) => content1?.compoundValue?.some((s1) => isServiceEqual(s1, s2))) || false)))\n\t)\n}\n\nexport function isServiceContentEqual(content1: { [language: string]: DecryptedContent }, content2: { [language: string]: DecryptedContent }): boolean {\n\treturn Object.keys(content1).reduce((isEqual, lng) => isEqual && isContentEqual(content1[lng], content2[lng]), true as boolean)\n}\n\nexport const primitiveTypeToContent = (language: string, value: PrimitiveType): DecryptedContent => {\n\treturn new DecryptedContent({\n\t\t...(value.type === 'number' ? { numberValue: (value as NumberType).value } : {}),\n\t\t...(value.type === 'measure'\n\t\t\t? {\n\t\t\t\t\tmeasureValue: new Measure({\n\t\t\t\t\t\tvalue: (value as MeasureType).value,\n\t\t\t\t\t\tunit: (value as MeasureType).unit,\n\t\t\t\t\t}),\n\t\t\t }\n\t\t\t: {}),\n\t\t...(value.type === 'string' ? { stringValue: (value as StringType).value } : {}),\n\t\t...(value.type === 'datetime' ? { fuzzyDateValue: (value as DateTimeType).value } : {}),\n\t\t...(value.type === 'boolean' ? { booleanValue: (value as BooleanType).value } : {}),\n\t\t...(value.type === 'timestamp' ? { instantValue: (value as TimestampType).value } : {}),\n\t\t...(value.type === 'compound'\n\t\t\t? {\n\t\t\t\t\tcompoundValue: Object.entries((value as CompoundType).value).map(\n\t\t\t\t\t\t([label, value]) =>\n\t\t\t\t\t\t\tnew DecryptedService({\n\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\t[language]: primitiveTypeToContent(language, value),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t }\n\t\t\t: {}),\n\t})\n}\nexport const contentToPrimitiveType = (language: string, content: DecryptedContent | undefined): PrimitiveType | undefined => {\n\tif (!content) {\n\t\treturn undefined\n\t}\n\tif (content.numberValue || content.numberValue === 0) {\n\t\treturn { type: 'number', value: content.numberValue }\n\t}\n\tif (content.measureValue?.value || content.measureValue?.value === 0 || content.measureValue?.unit?.length) {\n\t\treturn { type: 'measure', value: content.measureValue?.value, unit: content.measureValue?.unit }\n\t}\n\tif (content.stringValue) {\n\t\treturn { type: 'string', value: content.stringValue }\n\t}\n\tif (content.fuzzyDateValue) {\n\t\treturn { type: 'datetime', value: content.fuzzyDateValue }\n\t}\n\tif (content.booleanValue) {\n\t\treturn { type: 'boolean', value: content.booleanValue }\n\t}\n\tif (content.instantValue) {\n\t\treturn { type: 'timestamp', value: content.instantValue }\n\t}\n\tif (content.compoundValue) {\n\t\treturn {\n\t\t\ttype: 'compound',\n\t\t\tvalue: content.compoundValue.reduce((acc: { [label: string]: PrimitiveType }, { label, content }) => {\n\t\t\t\tconst primitiveValue = contentToPrimitiveType(language, content?.[language])\n\t\t\t\treturn label && primitiveValue ? { ...acc, [label]: primitiveValue } : acc\n\t\t\t}, {}),\n\t\t}\n\t}\n\n\treturn undefined\n}\nexport const codeStubToCode = (c: CodeStub) => ({\n\tid: c.id ?? `${c.type}|${c.code}|${c.version}`,\n\tlabel: c.label ?? {},\n})\n"]}
|
package/icure/model.d.ts
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import { CodeStub } from '@icure/cardinal-sdk';
|
|
2
|
-
|
|
3
|
-
export declare class CodeStubWithId extends CodeStub {
|
|
4
|
-
id: string;
|
|
5
|
-
constructor(partial: Partial<CodeStub> & {
|
|
6
|
-
id: string;
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
export interface ServiceMetadata extends Metadata {
|
|
2
|
+
export interface ServiceMetadata {
|
|
10
3
|
label: string;
|
|
11
4
|
index?: number;
|
|
12
5
|
valueDate?: number;
|
|
13
6
|
author?: string;
|
|
14
7
|
responsible?: string;
|
|
15
8
|
codes?: CodeStub[];
|
|
16
|
-
tags?:
|
|
9
|
+
tags?: CodeStub[];
|
|
17
10
|
}
|
package/icure/model.js
CHANGED
package/icure/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../tmp/icure/model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../tmp/icure/model.ts"],"names":[],"mappings":"","sourcesContent":["import { CodeStub } from '@icure/cardinal-sdk'\n\nexport interface ServiceMetadata {\n\tlabel: string\n\tindex?: number\n\tvalueDate?: number\n\tauthor?: string\n\tresponsible?: string\n\tcodes?: CodeStub[]\n\ttags?: CodeStub[]\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@icure/form",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.40",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@icure/cardinal-sdk": "^1.3.0-ts-2",
|
|
9
8
|
"@icure/motss-app-datepicker": "^6.0.0-rc.39",
|
|
10
9
|
"@lit/task": "^1.0.2",
|
|
11
10
|
"@webcomponents/webcomponentsjs": "^2.7.0",
|
package/utils/code-utils.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Code, Field, SortOptions } from '../components/model';
|
|
2
2
|
import { Suggestion } from '../generic';
|
|
3
3
|
import { CodeStub } from '@icure/cardinal-sdk';
|
|
4
|
-
import { CodeStubWithId } from '../icure';
|
|
5
4
|
/**
|
|
6
5
|
* Maps the options defined in a field into a list of codes
|
|
7
6
|
*
|
|
@@ -13,7 +12,7 @@ export declare const optionMapper: (language: string, field: Field, translationP
|
|
|
13
12
|
export declare const sortCodes: (codes: Code[], language: string, sortOptions?: SortOptions) => Code[];
|
|
14
13
|
export declare const sortSuggestions: (codes: (Code | Suggestion)[], language: string, sortOptions?: SortOptions) => Suggestion[];
|
|
15
14
|
export declare const filterAndSortOptionsFromFieldDefinition: (language: string, fg: Field, translationProvider: ((language: string, text: string) => string) | undefined, terms?: string[]) => Promise<Code[]>;
|
|
16
|
-
export declare const normalizeCodes: (codes: CodeStub[]
|
|
15
|
+
export declare const normalizeCodes: (codes: CodeStub[]) => CodeStub[];
|
|
17
16
|
/**
|
|
18
17
|
* Normalizes the code's four main fields (type, code, version and id). The first three are considered to be
|
|
19
18
|
* authoritative, while the id is a pure function of them. The authoritative fields are filled in from the id if
|
|
@@ -22,4 +21,4 @@ export declare const normalizeCodes: (codes: CodeStub[] | undefined) => CodeStub
|
|
|
22
21
|
* @param code The code to normalize.
|
|
23
22
|
* @returns A shallow copy of the input with its type, code, version and id normalized.
|
|
24
23
|
*/
|
|
25
|
-
export declare function normalizeCode(
|
|
24
|
+
export declare function normalizeCode(code: CodeStub): CodeStub;
|