@icure/form 1.1.21 → 1.1.23
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/@lit-labs-ssr-dom-shim-npm-1.2.1-d14ce3e3e5-5667c44f58.zip +0 -0
- package/.yarn/cache/{lit-element-npm-4.0.6-bfca4f9870-4f73cd1c0d.zip → lit-element-npm-4.1.0-98fef2c259-16cc7e343f.zip} +0 -0
- package/.yarn/cache/lit-html-npm-3.2.0-5c83bb0b92-fa566878ef.zip +0 -0
- package/.yarn/cache/{lit-npm-3.1.4-b7dcc2d5a3-c6ffa5580f.zip → lit-npm-3.2.0-e29d8256b0-b34e667481.zip} +0 -0
- package/.yarn/cache/prosemirror-model-npm-1.22.3-f92a11e7ca-dfc1f80fad.zip +0 -0
- package/.yarn/cache/prosemirror-transform-npm-1.10.0-c36ebced12-4cacb4ef83.zip +0 -0
- package/.yarn/cache/prosemirror-view-npm-1.34.2-c94b518ce1-5895d76c3f.zip +0 -0
- package/.yarn/cache/tslib-npm-2.7.0-21668f5c21-1606d5c89f.zip +0 -0
- package/.yarn/cache/wicg-inert-npm-3.1.3-38590e83f2-45b3cfec63.zip +0 -0
- package/.yarn/install-state.gz +0 -0
- package/components/common/field.d.ts +4 -2
- package/components/common/field.js +22 -0
- package/components/common/field.js.map +1 -1
- package/components/common/metadata-buttons-bar.d.ts +9 -6
- package/components/common/metadata-buttons-bar.js +56 -24
- package/components/common/metadata-buttons-bar.js.map +1 -1
- package/components/common/utils.d.ts +1 -0
- package/components/common/utils.js +7 -1
- package/components/common/utils.js.map +1 -1
- package/components/icure-button-group/index.js +1 -1
- package/components/icure-button-group/index.js.map +1 -1
- package/components/icure-date-picker/index.js +1 -1
- package/components/icure-date-picker/index.js.map +1 -1
- package/components/icure-dropdown-field/index.js +1 -1
- package/components/icure-dropdown-field/index.js.map +1 -1
- package/components/icure-form/fields/button-group/checkbox.js +2 -0
- package/components/icure-form/fields/button-group/checkbox.js.map +1 -1
- package/components/icure-form/fields/button-group/radio-button.js +2 -0
- package/components/icure-form/fields/button-group/radio-button.js.map +1 -1
- package/components/icure-form/fields/date-picker/date-picker.js +2 -0
- package/components/icure-form/fields/date-picker/date-picker.js.map +1 -1
- package/components/icure-form/fields/date-picker/date-time-picker.js +2 -0
- package/components/icure-form/fields/date-picker/date-time-picker.js.map +1 -1
- package/components/icure-form/fields/date-picker/time-picker.js +2 -0
- package/components/icure-form/fields/date-picker/time-picker.js.map +1 -1
- package/components/icure-form/fields/dropdown/dropdown-field.d.ts +1 -3
- package/components/icure-form/fields/dropdown/dropdown-field.js +3 -5
- package/components/icure-form/fields/dropdown/dropdown-field.js.map +1 -1
- package/components/icure-form/fields/items-list-field/items-list-field.js +2 -0
- package/components/icure-form/fields/items-list-field/items-list-field.js.map +1 -1
- package/components/icure-form/fields/measure-field/measure-field.js +2 -0
- package/components/icure-form/fields/measure-field/measure-field.js.map +1 -1
- package/components/icure-form/fields/number-field/number-field.js +2 -0
- 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 +0 -5
- package/components/icure-form/fields/text-field/text-field.js.map +1 -1
- package/components/icure-form/index.js +1 -1
- package/components/icure-form/index.js.map +1 -1
- package/components/icure-label/index.js +1 -1
- package/components/icure-label/index.js.map +1 -1
- package/components/icure-text-field/index.d.ts +0 -2
- package/components/icure-text-field/index.js +16 -26
- package/components/icure-text-field/index.js.map +1 -1
- package/components/themes/icure-blue/index.js +19 -1
- package/components/themes/icure-blue/index.js.map +1 -1
- package/icure/form-values-container.js +23 -21
- package/icure/form-values-container.js.map +1 -1
- package/package.json +1 -1
- package/utils/code-utils.js +2 -2
- package/utils/code-utils.js.map +1 -1
- package/.yarn/cache/@lit-labs-ssr-dom-shim-npm-1.2.0-6bda8c35cb-704621c28d.zip +0 -0
- package/.yarn/cache/lit-html-npm-3.1.4-58e56c5010-428593679c.zip +0 -0
- package/.yarn/cache/prosemirror-model-npm-1.22.2-9238026de4-f4004a4ebe.zip +0 -0
- package/.yarn/cache/prosemirror-transform-npm-1.9.0-fd256f82f0-c2d63c1fb0.zip +0 -0
- package/.yarn/cache/prosemirror-view-npm-1.33.9-dd77e3e48f-d3bd6cef56.zip +0 -0
- package/.yarn/cache/tslib-npm-2.6.3-0fd136b3be-74fce0e100.zip +0 -0
- package/.yarn/cache/wicg-inert-npm-3.1.2-786d525c4e-538c5cb7f2.zip +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../tmp/components/themes/icure-blue/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tCheckBox,\n\tDatePicker,\n\tDateTimePicker,\n\tDropdownField,\n\tItemsListField,\n\tLabel,\n\tMeasureField,\n\tNumberField,\n\tRadioButton,\n\tTextField,\n\tTimePicker,\n\tTokenField,\n} from '../../icure-form/fields'\nimport { IcureButtonGroup } from '../../icure-button-group'\nimport { IcureDatePickerField } from '../../icure-date-picker'\nimport { IcureDropdownField } from '../../icure-dropdown-field'\nimport { IcureForm } from '../../icure-form'\nimport { IcureLabel } from '../../icure-label'\nimport { IcureTextField } from '../../icure-text-field'\n\n// @ts-ignore\nimport { css } from 'lit';\nconst ehrLiteCss = css`.group .icure-form .icure-form-field:first-child {\n margin-top: 16px;\n}\n\n.icure-text-field, .icure-button-group {\n width: 100%;\n}\n.icure-text-field > .icure-label, .icure-button-group > .icure-label {\n color: #1D2235;\n font-size: 14px;\n font-weight: 400;\n}\n.icure-text-field > .icure-label > span, .icure-button-group > .icure-label > span {\n display: block;\n word-wrap: break-word;\n overflow: auto;\n font-weight: 400;\n}\n.icure-text-field > .icure-input, .icure-button-group > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-text-field > .icure-label, .icure-button-group > .icure-label {\n transform: translate(0, 0) scale(1);\n}\n.icure-text-field .icure-input,\n.icure-text-field .input-container, .icure-button-group .icure-input,\n.icure-button-group .input-container {\n cursor: pointer;\n border-radius: 6px;\n padding: 0 8px;\n width: 100%;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n outline: 0;\n font: inherit;\n font-size: 13px;\n line-height: 1.4em;\n display: flex;\n align-items: center;\n vertical-align: middle;\n position: relative;\n -webkit-appearance: none;\n background-color: #ffffff;\n border-color: #DDE3E7;\n color: #1D2235;\n box-sizing: border-box;\n}\n.icure-text-field .icure-input:focus, .icure-text-field .icure-input:focus-within,\n.icure-text-field .input-container:focus,\n.icure-text-field .input-container:focus-within, .icure-button-group .icure-input:focus, .icure-button-group .icure-input:focus-within,\n.icure-button-group .input-container:focus,\n.icure-button-group .input-container:focus-within {\n box-shadow: 0px 0px 0px 2px rgba(61, 135, 197, 0.2);\n border-color: #084B83;\n}\n.icure-text-field .icure-input:hover,\n.icure-text-field .input-container:hover, .icure-button-group .icure-input:hover,\n.icure-button-group .input-container:hover {\n border-color: #084B83;\n box-shadow: none;\n}\n.icure-text-field .icure-input:hover:focus, .icure-text-field .icure-input:hover:focus-within,\n.icure-text-field .input-container:hover:focus,\n.icure-text-field .input-container:hover:focus-within, .icure-button-group .icure-input:hover:focus, .icure-button-group .icure-input:hover:focus-within,\n.icure-button-group .input-container:hover:focus,\n.icure-button-group .input-container:hover:focus-within {\n box-shadow: 0px 0px 0px 2px rgba(61, 135, 197, 0.2);\n border-color: #084B83;\n}\n.icure-text-field .icure-input .ProseMirror,\n.icure-text-field .input-container .ProseMirror, .icure-button-group .icure-input .ProseMirror,\n.icure-button-group .input-container .ProseMirror {\n padding: 0;\n font-size: 13px;\n line-height: 1.4em;\n color: #1D2235;\n}\n.icure-text-field .icure-input .ProseMirror .date,\n.icure-text-field .input-container .ProseMirror .date, .icure-button-group .icure-input .ProseMirror .date,\n.icure-button-group .input-container .ProseMirror .date {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror .time,\n.icure-text-field .input-container .ProseMirror .time, .icure-button-group .icure-input .ProseMirror .time,\n.icure-button-group .input-container .ProseMirror .time {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror:focus .focused, .icure-text-field .icure-input .ProseMirror:hover,\n.icure-text-field .input-container .ProseMirror:focus .focused,\n.icure-text-field .input-container .ProseMirror:hover, .icure-button-group .icure-input .ProseMirror:focus .focused, .icure-button-group .icure-input .ProseMirror:hover,\n.icure-button-group .input-container .ProseMirror:focus .focused,\n.icure-button-group .input-container .ProseMirror:hover {\n border-color: #084B83;\n}\n.icure-text-field .icure-input > svg,\n.icure-text-field .input-container > svg, .icure-button-group .icure-input > svg,\n.icure-button-group .input-container > svg {\n opacity: 0.5;\n}\n.icure-text-field .icure-input > svg path,\n.icure-text-field .input-container > svg path, .icure-button-group .icure-input > svg path,\n.icure-button-group .input-container > svg path {\n fill: #656565;\n}\n.icure-text-field .icure-input .extra,\n.icure-text-field .input-container .extra, .icure-button-group .icure-input .extra,\n.icure-button-group .input-container .extra {\n height: 20px;\n}\n.icure-text-field .icure-input .extra > .info,\n.icure-text-field .input-container .extra > .info, .icure-button-group .icure-input .extra > .info,\n.icure-button-group .input-container .extra > .info {\n color: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .buttons-container .btn svg path,\n.icure-text-field .input-container .extra .buttons-container .btn svg path, .icure-button-group .icure-input .extra .buttons-container .btn svg path,\n.icure-button-group .input-container .extra .buttons-container .btn svg path {\n fill: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .buttons-container .btn svg path:hover,\n.icure-text-field .input-container .extra .buttons-container .btn svg path:hover, .icure-button-group .icure-input .extra .buttons-container .btn svg path:hover,\n.icure-button-group .input-container .extra .buttons-container .btn svg path:hover {\n fill: #656565;\n opacity: 1;\n}\n\ninput[type=radio] {\n margin-top: -1px;\n vertical-align: middle;\n}\n\n.icure-checkbox:hover {\n border-color: #DCE7F2;\n}\n.icure-checkbox:checked {\n accent-color: #084B83;\n}\n\n.icure-button-group > .icure-label {\n z-index: 1;\n pointer-events: none;\n line-height: 1.4em;\n cursor: text;\n font-size: 14px;\n top: calc(1.4em + 1px);\n left: 9px;\n color: #1D2235;\n align-items: center;\n height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-button-group > .icure-label > span {\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n padding-right: 8px;\n}\n.icure-button-group > div {\n display: grid;\n}\n.icure-button-group > div > div {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.icure-button-group > div > div > .icure-button-group-label {\n z-index: 1;\n line-height: 1.4em;\n cursor: text;\n font-size: 14px;\n top: calc(1.4em + 1px);\n left: 9px;\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n color: #1D2235;\n display: flex;\n align-items: center;\n max-width: 85%;\n min-width: 0;\n}\n.icure-button-group > div > div > .icure-button-group-label > span {\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n padding-right: 8px;\n}\n.icure-button-group > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n\n.icure-input #editor {\n color: #1D2235;\n}\n.icure-input #editor.tokens-list .ProseMirror li, .icure-input #editor.styled-tokens-list .ProseMirror li {\n background-color: #DCE7F2;\n}\n.icure-input #editor.tokens-list .ProseMirror li span:after, .icure-input #editor.styled-tokens-list .ProseMirror li span:after {\n background: transparent url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxu cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJPdXRsaW5lIiB2aWV3 Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iIzg4ODg4OCIgZmlsbD0iIzg4ODg4OCIg d2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPjxwYXRoIGQ9Ik0xNiw4YTEsMSwwLDAs MC0xLjQxNCwwTDEyLDEwLjU4Niw5LjQxNCw4QTEsMSwwLDAsMCw4LDkuNDE0TDEw LjU4NiwxMiw4LDE0LjU4NkExLDEsMCwwLDAsOS40MTQsMTZMMTIsMTMuNDE0LDE0 LjU4NiwxNkExLDEsMCwwLDAsMTYsMTQuNTg2TDEzLjQxNCwxMiwxNiw5LjQxNEEx LDEsMCwwLDAsMTYsOFoiLz48cGF0aCBkPSJNMTIsMEExMiwxMiwwLDEsMCwyNCwx MiwxMi4wMTMsMTIuMDEzLDAsMCwwLDEyLDBabTAsMjJBMTAsMTAsMCwxLDEsMjIs MTIsMTAuMDExLDEwLjAxMSwwLDAsMSwxMiwyMloiLz48L3N2Zz4K\") no-repeat center/16px;\n}\n.icure-input #editor.items-list .ProseMirror li {\n border-bottom: 1px dotted #8DA6BF;\n}\n.icure-input .extra {\n padding-right: 0;\n}\n.icure-input .select-arrow {\n opacity: 1;\n}\n.icure-input .select-arrow svg {\n width: 15px;\n height: 15px;\n}\n.icure-input .select-arrow svg path {\n fill: #9CA8B2;\n}\n.icure-input .options {\n padding: 2px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n border-radius: 6px;\n background: white;\n box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.12), 0px 6px 16px 0px rgba(0, 0, 0, 0.08), 0px 9px 28px 0px rgba(0, 0, 0, 0.05);\n}\n.icure-input .options .option {\n height: auto;\n min-height: unset;\n display: flex;\n padding: 8px;\n align-items: center;\n align-self: stretch;\n border-radius: 4px;\n background: white;\n color: #1D2235;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n cursor: pointer;\n}\n.icure-input .options .option:hover {\n background: #DCE7F2;\n color: #084B83;\n}\n.icure-input:hover .select-arrow svg path, .icure-input:focus .select-arrow svg path {\n fill: #084B83;\n}` \nimport { MetadataButtonBar } from '../../common/metadata-buttons-bar'\nclass EhrLiteIcureButtonGroup extends IcureButtonGroup {\n\tstatic get styles() {\n\t\treturn [...IcureButtonGroup.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureDatePickerField extends IcureDatePickerField {\n\tstatic get styles() {\n\t\treturn [...IcureDatePickerField.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureDropdownField extends IcureDropdownField {\n\tstatic get styles() {\n\t\treturn [...IcureDropdownField.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureForm extends IcureForm {\n\tstatic get styles() {\n\t\treturn [...IcureForm.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureLabel extends IcureLabel {\n\tstatic get styles() {\n\t\treturn [...IcureLabel.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureTextField extends IcureTextField {\n\tstatic get styles() {\n\t\treturn [...IcureTextField.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteLabel extends Label {\n\tstatic get styles() {\n\t\treturn [...Label.styles, ehrLiteCss]\n\t}\n}\n\ncustomElements.define('icure-metadata-buttons-bar', MetadataButtonBar)\n\ncustomElements.define('icure-form-checkbox', CheckBox)\ncustomElements.define('icure-form-date-picker', DatePicker)\ncustomElements.define('icure-form-date-time-picker', DateTimePicker)\ncustomElements.define('icure-form-dropdown-field', DropdownField)\ncustomElements.define('icure-button-group', EhrLiteIcureButtonGroup)\ncustomElements.define('icure-date-picker-field', EhrLiteIcureDatePickerField)\ncustomElements.define('icure-dropdown-field', EhrLiteIcureDropdownField)\ncustomElements.define('icure-form', EhrLiteIcureForm)\ncustomElements.define('icure-label', EhrLiteIcureLabel)\ncustomElements.define('icure-text-field', EhrLiteIcureTextField)\ncustomElements.define('icure-form-items-list-field', ItemsListField)\ncustomElements.define('icure-form-label', EhrLiteLabel)\ncustomElements.define('icure-form-measure-field', MeasureField)\ncustomElements.define('icure-form-number-field', NumberField)\ncustomElements.define('icure-form-radio-button', RadioButton)\ncustomElements.define('icure-form-text-field', TextField)\ncustomElements.define('icure-form-time-picker', TimePicker)\ncustomElements.define('icure-form-token-field', TokenField)\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../tmp/components/themes/icure-blue/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tCheckBox,\n\tDatePicker,\n\tDateTimePicker,\n\tDropdownField,\n\tItemsListField,\n\tLabel,\n\tMeasureField,\n\tNumberField,\n\tRadioButton,\n\tTextField,\n\tTimePicker,\n\tTokenField,\n} from '../../icure-form/fields'\nimport { IcureButtonGroup } from '../../icure-button-group'\nimport { IcureDatePickerField } from '../../icure-date-picker'\nimport { IcureDropdownField } from '../../icure-dropdown-field'\nimport { IcureForm } from '../../icure-form'\nimport { IcureLabel } from '../../icure-label'\nimport { IcureTextField } from '../../icure-text-field'\n\n// @ts-ignore\nimport { css } from 'lit';\nconst ehrLiteCss = css`.group .icure-form .icure-form-field:first-child {\n margin-top: 16px;\n}\n\n.icure-text-field, .icure-button-group {\n width: 100%;\n}\n.icure-text-field > .icure-label, .icure-button-group > .icure-label {\n color: #1D2235;\n font-size: 14px;\n font-weight: 400;\n}\n.icure-text-field > .icure-label > span, .icure-button-group > .icure-label > span {\n display: block;\n word-wrap: break-word;\n overflow: auto;\n font-weight: 400;\n}\n.icure-text-field > .icure-input, .icure-button-group > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-text-field > .icure-label, .icure-button-group > .icure-label {\n transform: translate(0, 0) scale(1);\n}\n.icure-text-field .icure-input,\n.icure-text-field .input-container, .icure-button-group .icure-input,\n.icure-button-group .input-container {\n cursor: pointer;\n border-radius: 6px;\n padding: 0 8px;\n width: 100%;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n outline: 0;\n font: inherit;\n font-size: 13px;\n line-height: 1.4em;\n display: flex;\n align-items: center;\n vertical-align: middle;\n position: relative;\n -webkit-appearance: none;\n background-color: #ffffff;\n border-color: #DDE3E7;\n color: #1D2235;\n box-sizing: border-box;\n}\n.icure-text-field .icure-input:focus, .icure-text-field .icure-input:focus-within,\n.icure-text-field .input-container:focus,\n.icure-text-field .input-container:focus-within, .icure-button-group .icure-input:focus, .icure-button-group .icure-input:focus-within,\n.icure-button-group .input-container:focus,\n.icure-button-group .input-container:focus-within {\n box-shadow: 0px 0px 0px 2px rgba(61, 135, 197, 0.2);\n border-color: #084B83;\n}\n.icure-text-field .icure-input:hover,\n.icure-text-field .input-container:hover, .icure-button-group .icure-input:hover,\n.icure-button-group .input-container:hover {\n border-color: #084B83;\n box-shadow: none;\n}\n.icure-text-field .icure-input:hover:focus, .icure-text-field .icure-input:hover:focus-within,\n.icure-text-field .input-container:hover:focus,\n.icure-text-field .input-container:hover:focus-within, .icure-button-group .icure-input:hover:focus, .icure-button-group .icure-input:hover:focus-within,\n.icure-button-group .input-container:hover:focus,\n.icure-button-group .input-container:hover:focus-within {\n box-shadow: 0px 0px 0px 2px rgba(61, 135, 197, 0.2);\n border-color: #084B83;\n}\n.icure-text-field .icure-input .ProseMirror,\n.icure-text-field .input-container .ProseMirror, .icure-button-group .icure-input .ProseMirror,\n.icure-button-group .input-container .ProseMirror {\n padding: 0;\n font-size: 13px;\n line-height: 1.4em;\n color: #1D2235;\n}\n.icure-text-field .icure-input .ProseMirror .date,\n.icure-text-field .input-container .ProseMirror .date, .icure-button-group .icure-input .ProseMirror .date,\n.icure-button-group .input-container .ProseMirror .date {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror .time,\n.icure-text-field .input-container .ProseMirror .time, .icure-button-group .icure-input .ProseMirror .time,\n.icure-button-group .input-container .ProseMirror .time {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror:focus .focused, .icure-text-field .icure-input .ProseMirror:hover,\n.icure-text-field .input-container .ProseMirror:focus .focused,\n.icure-text-field .input-container .ProseMirror:hover, .icure-button-group .icure-input .ProseMirror:focus .focused, .icure-button-group .icure-input .ProseMirror:hover,\n.icure-button-group .input-container .ProseMirror:focus .focused,\n.icure-button-group .input-container .ProseMirror:hover {\n border-color: #084B83;\n}\n.icure-text-field .icure-input > svg,\n.icure-text-field .input-container > svg, .icure-button-group .icure-input > svg,\n.icure-button-group .input-container > svg {\n opacity: 0.5;\n}\n.icure-text-field .icure-input > svg path,\n.icure-text-field .input-container > svg path, .icure-button-group .icure-input > svg path,\n.icure-button-group .input-container > svg path {\n fill: #656565;\n}\n.icure-text-field .icure-input .extra,\n.icure-text-field .input-container .extra, .icure-button-group .icure-input .extra,\n.icure-button-group .input-container .extra {\n height: 20px;\n}\n.icure-text-field .icure-input .extra > .info,\n.icure-text-field .input-container .extra > .info, .icure-button-group .icure-input .extra > .info,\n.icure-button-group .input-container .extra > .info {\n color: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .buttons-container .btn svg path,\n.icure-text-field .input-container .extra .buttons-container .btn svg path, .icure-button-group .icure-input .extra .buttons-container .btn svg path,\n.icure-button-group .input-container .extra .buttons-container .btn svg path {\n fill: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .buttons-container .btn svg path:hover,\n.icure-text-field .input-container .extra .buttons-container .btn svg path:hover, .icure-button-group .icure-input .extra .buttons-container .btn svg path:hover,\n.icure-button-group .input-container .extra .buttons-container .btn svg path:hover {\n fill: #656565;\n opacity: 1;\n}\n.icure-text-field .icure-input .extra > .options > .selected,\n.icure-text-field .input-container .extra > .options > .selected, .icure-button-group .icure-input .extra > .options > .selected,\n.icure-button-group .input-container .extra > .options > .selected {\n color: white;\n background-color: #084B83;\n border-radius: 0 !important;\n}\n\n.menu-container .item.selected {\n color: white;\n background-color: #084B83;\n border-radius: 0 !important;\n}\n\ninput[type=radio] {\n margin-top: -1px;\n vertical-align: middle;\n}\n\n.icure-checkbox:hover {\n border-color: #DCE7F2;\n}\n.icure-checkbox:checked {\n accent-color: #084B83;\n}\n\n.icure-button-group > .icure-label {\n z-index: 1;\n pointer-events: none;\n line-height: 1.4em;\n cursor: text;\n font-size: 14px;\n top: calc(1.4em + 1px);\n left: 9px;\n color: #1D2235;\n align-items: center;\n height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-button-group > .icure-label > span {\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n padding-right: 8px;\n}\n.icure-button-group > div {\n display: grid;\n}\n.icure-button-group > div > div {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.icure-button-group > div > div > .icure-button-group-label {\n z-index: 1;\n line-height: 1.4em;\n cursor: text;\n font-size: 14px;\n top: calc(1.4em + 1px);\n left: 9px;\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n color: #1D2235;\n display: flex;\n align-items: center;\n max-width: 85%;\n min-width: 0;\n}\n.icure-button-group > div > div > .icure-button-group-label > span {\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n padding-right: 8px;\n}\n.icure-button-group > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n\n.icure-input #editor {\n color: #1D2235;\n}\n.icure-input #editor.tokens-list .ProseMirror li, .icure-input #editor.styled-tokens-list .ProseMirror li {\n background-color: #DCE7F2;\n}\n.icure-input #editor.tokens-list .ProseMirror li span:after, .icure-input #editor.styled-tokens-list .ProseMirror li span:after {\n background: transparent url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxu cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJPdXRsaW5lIiB2aWV3 Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iIzg4ODg4OCIgZmlsbD0iIzg4ODg4OCIg d2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPjxwYXRoIGQ9Ik0xNiw4YTEsMSwwLDAs MC0xLjQxNCwwTDEyLDEwLjU4Niw5LjQxNCw4QTEsMSwwLDAsMCw4LDkuNDE0TDEw LjU4NiwxMiw4LDE0LjU4NkExLDEsMCwwLDAsOS40MTQsMTZMMTIsMTMuNDE0LDE0 LjU4NiwxNkExLDEsMCwwLDAsMTYsMTQuNTg2TDEzLjQxNCwxMiwxNiw5LjQxNEEx LDEsMCwwLDAsMTYsOFoiLz48cGF0aCBkPSJNMTIsMEExMiwxMiwwLDEsMCwyNCwx MiwxMi4wMTMsMTIuMDEzLDAsMCwwLDEyLDBabTAsMjJBMTAsMTAsMCwxLDEsMjIs MTIsMTAuMDExLDEwLjAxMSwwLDAsMSwxMiwyMloiLz48L3N2Zz4K\") no-repeat center/16px;\n}\n.icure-input #editor.items-list .ProseMirror li {\n border-bottom: 1px dotted #8DA6BF;\n}\n.icure-input .extra {\n padding-right: 0;\n}\n.icure-input .select-arrow {\n opacity: 1;\n}\n.icure-input .select-arrow svg {\n width: 15px;\n height: 15px;\n}\n.icure-input .select-arrow svg path {\n fill: #9CA8B2;\n}\n.icure-input .options {\n padding: 2px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n border-radius: 6px;\n background: white;\n box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.12), 0px 6px 16px 0px rgba(0, 0, 0, 0.08), 0px 9px 28px 0px rgba(0, 0, 0, 0.05);\n}\n.icure-input .options .option {\n height: auto;\n min-height: unset;\n display: flex;\n padding: 8px;\n align-items: center;\n align-self: stretch;\n border-radius: 4px;\n background: white;\n color: #1D2235;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n cursor: pointer;\n}\n.icure-input .options .option:hover {\n background: #DCE7F2;\n color: #084B83;\n}\n.icure-input:hover .select-arrow svg path, .icure-input:focus .select-arrow svg path {\n fill: #084B83;\n}` \nimport { MetadataButtonBar } from '../../common/metadata-buttons-bar'\nclass EhrLiteIcureButtonGroup extends IcureButtonGroup {\n\tstatic get styles() {\n\t\treturn [...IcureButtonGroup.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureDatePickerField extends IcureDatePickerField {\n\tstatic get styles() {\n\t\treturn [...IcureDatePickerField.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureDropdownField extends IcureDropdownField {\n\tstatic get styles() {\n\t\treturn [...IcureDropdownField.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureForm extends IcureForm {\n\tstatic get styles() {\n\t\treturn [...IcureForm.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureLabel extends IcureLabel {\n\tstatic get styles() {\n\t\treturn [...IcureLabel.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteIcureTextField extends IcureTextField {\n\tstatic get styles() {\n\t\treturn [...IcureTextField.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteLabel extends Label {\n\tstatic get styles() {\n\t\treturn [...Label.styles, ehrLiteCss]\n\t}\n}\nclass EhrLiteMetadataButtonBar extends MetadataButtonBar {\n\tstatic get styles() {\n\t\treturn [...MetadataButtonBar.styles, ehrLiteCss]\n\t}\n}\n\ncustomElements.define('icure-metadata-buttons-bar', EhrLiteMetadataButtonBar)\n\ncustomElements.define('icure-form-checkbox', CheckBox)\ncustomElements.define('icure-form-date-picker', DatePicker)\ncustomElements.define('icure-form-date-time-picker', DateTimePicker)\ncustomElements.define('icure-form-dropdown-field', DropdownField)\ncustomElements.define('icure-button-group', EhrLiteIcureButtonGroup)\ncustomElements.define('icure-date-picker-field', EhrLiteIcureDatePickerField)\ncustomElements.define('icure-dropdown-field', EhrLiteIcureDropdownField)\ncustomElements.define('icure-form', EhrLiteIcureForm)\ncustomElements.define('icure-label', EhrLiteIcureLabel)\ncustomElements.define('icure-text-field', EhrLiteIcureTextField)\ncustomElements.define('icure-form-items-list-field', ItemsListField)\ncustomElements.define('icure-form-label', EhrLiteLabel)\ncustomElements.define('icure-form-measure-field', MeasureField)\ncustomElements.define('icure-form-number-field', NumberField)\ncustomElements.define('icure-form-radio-button', RadioButton)\ncustomElements.define('icure-form-text-field', TextField)\ncustomElements.define('icure-form-time-picker', TimePicker)\ncustomElements.define('icure-form-token-field', TokenField)\n"]}
|
|
@@ -376,15 +376,15 @@ class ContactFormValuesContainer {
|
|
|
376
376
|
return { result: service.id, formValuesContainer: this };
|
|
377
377
|
}
|
|
378
378
|
setValue(label, language, value, id, metadata) {
|
|
379
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
380
|
-
const service = (id && this.
|
|
379
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
380
|
+
const service = (id && ((_b = (_a = this.getServicesInHistory((sid, history) => (sid === id ? history.map((x) => x.revision) : []))[id]) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.value)) || this.serviceFactory(label, id);
|
|
381
381
|
if (!service.id) {
|
|
382
382
|
throw new Error('Service id must be defined');
|
|
383
383
|
}
|
|
384
384
|
console.log('Setting value of service', service.id, 'with', value, 'and metadata', metadata);
|
|
385
|
-
const newContent = (
|
|
386
|
-
const newCodes = (
|
|
387
|
-
if (!(0, icure_utils_1.isContentEqual)((
|
|
385
|
+
const newContent = (_c = value === null || value === void 0 ? void 0 : value.content) === null || _c === void 0 ? void 0 : _c[language];
|
|
386
|
+
const newCodes = (_d = value === null || value === void 0 ? void 0 : value.codes) !== null && _d !== void 0 ? _d : [];
|
|
387
|
+
if (!(0, icure_utils_1.isContentEqual)((_e = service.content) === null || _e === void 0 ? void 0 : _e[language], newContent) || (newCodes && !(0, icure_utils_1.areCodesEqual)(newCodes, (_f = service.codes) !== null && _f !== void 0 ? _f : []))) {
|
|
388
388
|
const newService = new api_1.Service(Object.assign(Object.assign({}, service), { modified: Date.now() }));
|
|
389
389
|
const newContents = newContent ? Object.assign(Object.assign({}, (service.content || {})), { [language]: newContent }) : Object.assign({}, (service.content || {}));
|
|
390
390
|
if (!newContent) {
|
|
@@ -392,22 +392,22 @@ class ContactFormValuesContainer {
|
|
|
392
392
|
}
|
|
393
393
|
let newCurrentContact;
|
|
394
394
|
if (!Object.entries(newContents).filter(([, cnt]) => cnt !== undefined).length) {
|
|
395
|
-
newCurrentContact = Object.assign(Object.assign({}, this.currentContact), { services: ((
|
|
396
|
-
? ((
|
|
397
|
-
: [...((
|
|
395
|
+
newCurrentContact = Object.assign(Object.assign({}, this.currentContact), { services: ((_g = this.currentContact.services) !== null && _g !== void 0 ? _g : []).some((s) => s.id === service.id)
|
|
396
|
+
? ((_h = this.currentContact.services) !== null && _h !== void 0 ? _h : []).filter((s) => s.id !== service.id)
|
|
397
|
+
: [...((_j = this.currentContact.services) !== null && _j !== void 0 ? _j : [])] });
|
|
398
398
|
}
|
|
399
399
|
else {
|
|
400
400
|
newService.content = newContents;
|
|
401
401
|
newService.codes = newCodes;
|
|
402
402
|
if (metadata) {
|
|
403
|
-
newService.responsible = (
|
|
404
|
-
newService.valueDate = (
|
|
405
|
-
newService.tags = (
|
|
406
|
-
newService.label = (
|
|
403
|
+
newService.responsible = (_k = metadata.responsible) !== null && _k !== void 0 ? _k : newService.responsible;
|
|
404
|
+
newService.valueDate = (_l = metadata.valueDate) !== null && _l !== void 0 ? _l : newService.valueDate;
|
|
405
|
+
newService.tags = (_m = metadata.tags) !== null && _m !== void 0 ? _m : newService.tags;
|
|
406
|
+
newService.label = (_o = metadata.label) !== null && _o !== void 0 ? _o : newService.label;
|
|
407
407
|
}
|
|
408
|
-
newCurrentContact = Object.assign(Object.assign({}, this.currentContact), { services: ((
|
|
409
|
-
? ((
|
|
410
|
-
: [...((
|
|
408
|
+
newCurrentContact = Object.assign(Object.assign({}, this.currentContact), { services: ((_p = this.currentContact.services) !== null && _p !== void 0 ? _p : []).some((s) => s.id === service.id)
|
|
409
|
+
? ((_q = this.currentContact.services) !== null && _q !== void 0 ? _q : []).map((s) => (s.id === service.id ? newService : s))
|
|
410
|
+
: [...((_r = this.currentContact.services) !== null && _r !== void 0 ? _r : []), newService] });
|
|
411
411
|
}
|
|
412
412
|
const newFormValuesContainer = new ContactFormValuesContainer(this.rootForm, newCurrentContact, this.contactsHistory.map((c) => (c === this.currentContact ? newCurrentContact : c)), this.serviceFactory, this.children, this.formFactory, this.changeListeners);
|
|
413
413
|
this.changeListeners.forEach((l) => l(newFormValuesContainer));
|
|
@@ -495,12 +495,14 @@ const setValueOnContactFormValuesContainer = (cfvc, label, language, fv, id, met
|
|
|
495
495
|
[language]: (0, icure_utils_1.primitiveTypeToContent)(language, value),
|
|
496
496
|
}
|
|
497
497
|
: undefined,
|
|
498
|
-
}, id,
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
498
|
+
}, id, metadata
|
|
499
|
+
? {
|
|
500
|
+
label: (_b = metadata === null || metadata === void 0 ? void 0 : metadata.label) !== null && _b !== void 0 ? _b : label,
|
|
501
|
+
responsible: metadata === null || metadata === void 0 ? void 0 : metadata.owner,
|
|
502
|
+
valueDate: metadata === null || metadata === void 0 ? void 0 : metadata.valueDate,
|
|
503
|
+
tags: metadata === null || metadata === void 0 ? void 0 : metadata.tags,
|
|
504
|
+
}
|
|
505
|
+
: undefined);
|
|
504
506
|
return mutation;
|
|
505
507
|
};
|
|
506
508
|
//# sourceMappingURL=form-values-container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-values-container.js","sourceRoot":"","sources":["../../tmp/icure/form-values-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { Contact, Form as ICureForm, Service } from '@icure/api'\nimport { sortedBy } from '../utils/no-lodash'\nimport { FormValuesContainer, FormValuesContainerMutation, ID, 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 } from '../utils/dates'\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: Contact\n\tprivate contactFormValuesContainer: ContactFormValuesContainer\n\tprivate _children: BridgedFormValuesContainer[] | undefined\n\tget children(): BridgedFormValuesContainer[] {\n\t\treturn (\n\t\t\tthis._children ??\n\t\t\t(this._children = this.contactFormValuesContainer\n\t\t\t\t.getChildren()\n\t\t\t\t.map(\n\t\t\t\t\t(fvc) =>\n\t\t\t\t\t\tnew BridgedFormValuesContainer(\n\t\t\t\t\t\t\tthis.responsible,\n\t\t\t\t\t\t\tfvc,\n\t\t\t\t\t\t\tthis.interpreter,\n\t\t\t\t\t\t\tthis.contact,\n\t\t\t\t\t\t\tthis.dependentValuesProvider,\n\t\t\t\t\t\t\tthis.validatorsProvider,\n\t\t\t\t\t\t\tthis.language,\n\t\t\t\t\t\t\tthis.changeListeners,\n\t\t\t\t\t\t),\n\t\t\t\t))\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 contact The displayed contact (may be in the past). === to currentContact if the contact is the contact of the day\n\t * @param contactFormValuesContainer The wrapped ContactFormValuesContainer\n\t * @param interpreter A function that can interpret formulas\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 */\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) => T | undefined,\n\t\tcontact?: Contact,\n\t\tprivate dependentValuesProvider: (anchorId: string | undefined, templateId: string) => { metadata: FieldMetadata; formula: string }[] = () => [],\n\t\tprivate validatorsProvider: (anchorId: string | undefined, templateId: string) => { metadata: FieldMetadata; validators: Validator[] }[] = () => [],\n\t\tprivate language = 'en',\n\t\tprivate changeListeners: ((newValue: BridgedFormValuesContainer) => void)[] = [],\n\t) {\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.contact = contact ?? contactFormValuesContainer.currentContact\n\t\tthis.computeDependentValues()\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\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 mutateAndNotify(newContactFormValuesContainer: ContactFormValuesContainer) {\n\t\tconst newBridgedFormValueContainer = new BridgedFormValuesContainer(\n\t\t\tthis.responsible,\n\t\t\tnewContactFormValuesContainer,\n\t\t\tthis.interpreter,\n\t\t\tthis.contact === this.contactFormValuesContainer.currentContact ? newContactFormValuesContainer.currentContact : this.contact,\n\t\t\tthis.dependentValuesProvider,\n\t\t\tthis.validatorsProvider,\n\t\t\tthis.language,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tthis.changeListeners.forEach((l) => l(newBridgedFormValueContainer))\n\t\treturn newBridgedFormValueContainer\n\t}\n\n\t//This method mutates the BridgedFormValuesContainer but can only be called from the constructor\n\tprivate computeDependentValues() {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\tthis.dependentValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).forEach(({ metadata, formula }) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst currentValue = this.getVersionedValuesForKey(metadata.label)\n\t\t\t\t\tconst newValue = this.compute(formula) as FieldValue | undefined\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\tconst currentContact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\tthis.contactFormValuesContainer = setValueOnContactFormValuesContainer(\n\t\t\t\t\t\t\tthis.contactFormValuesContainer,\n\t\t\t\t\t\t\tmetadata.label,\n\t\t\t\t\t\t\tlng,\n\t\t\t\t\t\t\tnewValue,\n\t\t\t\t\t\t\tObject.keys(currentValue ?? {})[0],\n\t\t\t\t\t\t\tmetadata,\n\t\t\t\t\t\t).formValuesContainer\n\t\t\t\t\t\tif (this.contact === currentContact) {\n\t\t\t\t\t\t\tthis.contact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(`Error while computing formula : ${formula}`, e)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tsetValue(\n\t\tlabel: string,\n\t\tlanguage: string,\n\t\tfv?: FieldValue,\n\t\tid?: string,\n\t\tmetadata?: FieldMetadata,\n\t): FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, ID> {\n\t\tconst mutation = setValueOnContactFormValuesContainer(this.contactFormValuesContainer, label, language, fv, id, metadata)\n\t\treturn { result: mutation.result, formValuesContainer: this.mutateAndNotify(mutation.formValuesContainer) }\n\t}\n\n\tsetMetadata(meta: FieldMetadata, id?: string | undefined): FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, ID> {\n\t\tconst mutation = 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,\n\t\t\t},\n\t\t\tid,\n\t\t)\n\t\treturn { result: mutation.result, formValuesContainer: this.mutateAndNotify(mutation.formValuesContainer) }\n\t}\n\n\tdelete(serviceId: string): FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, void> {\n\t\tconst mutation = this.contactFormValuesContainer.delete(serviceId)\n\t\treturn { result: undefined, formValuesContainer: this.mutateAndNotify(mutation.formValuesContainer) }\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\tcompute<T, S extends { [key: string | symbol]: unknown }>(formula: string, sandbox?: S): T | undefined {\n\t\t// noinspection JSUnusedGlobalSymbols\n\t\tconst parseContent = (content?: { [key: string]: PrimitiveType }) => {\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)\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\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\tlog,\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) => !!native[key as string] || key === 'self' || 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 : 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\tgetChildren(): FormValuesContainer<FieldValue, FieldMetadata>[] {\n\t\treturn this.contactFormValuesContainer.getChildren().map((fvc) => new BridgedFormValuesContainer(this.responsible, fvc, this.interpreter, this.contact))\n\t}\n\n\tgetValidationErrors(): [FieldMetadata, string][] {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\treturn this.validatorsProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).flatMap(\n\t\t\t\t({ metadata, validators }) =>\n\t\t\t\t\tvalidators\n\t\t\t\t\t\t.map(({ validation, message }) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\treturn this.compute(validation) ? undefined : [metadata, message]\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\tconsole.log(`Error while computing validation : ${validation}`, e)\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter((x) => !!x) as [FieldMetadata, string][],\n\t\t\t)\n\t\t} else {\n\t\t\treturn []\n\t\t}\n\t}\n\n\tasync addChild(\n\t\tanchorId: string,\n\t\ttemplateId: string,\n\t\tlabel: string,\n\t): Promise<FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, BridgedFormValuesContainer>> {\n\t\tconst mutation = await this.contactFormValuesContainer.addChild(anchorId, templateId, label)\n\t\tconst newBridgedFormValueContainer = this.mutateAndNotify(mutation.formValuesContainer)\n\t\tconst newChild = newBridgedFormValueContainer.children.find((c) => c.contactFormValuesContainer === mutation.result)\n\t\tif (!newChild) {\n\t\t\tthrow new Error('Illegal state, the new child must be found')\n\t\t}\n\t\treturn { result: newChild, formValuesContainer: newBridgedFormValueContainer }\n\t}\n\n\tasync removeChild(container: BridgedFormValuesContainer): Promise<FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, void>> {\n\t\tconst mutation = await this.contactFormValuesContainer.removeChild(container.contactFormValuesContainer)\n\t\treturn { result: undefined, formValuesContainer: this.mutateAndNotify(mutation.formValuesContainer) }\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<Service, ServiceMetadata> {\n\trootForm: ICureForm\n\tcurrentContact: Contact //The contact of the moment, used to record new modifications\n\tcontactsHistory: Contact[] //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) => Service\n\tformFactory: (anchorId: string, formTemplateId: string, label: string) => Promise<ICureForm>\n\n\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[]\n\n\tconstructor(\n\t\trootForm: ICureForm,\n\t\tcurrentContact: Contact,\n\t\tcontactsHistory: Contact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => Service,\n\t\tchildren: ContactFormValuesContainer[],\n\t\tformFactory: (anchorId: string, formTemplateId: string, label: string) => Promise<ICureForm>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[] = [],\n\t) {\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.changeListeners = changeListeners\n\t}\n\n\tregisterChildFormValuesContainer(childFVC: ContactFormValuesContainer) {\n\t\tchildFVC.registerChangeListener((newValue) => {\n\t\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tthis.currentContact,\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children.map((c) => (c === childFVC ? newValue : c)),\n\t\t\t\tthis.formFactory,\n\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\t\t\tthis.changeListeners.forEach((l) => l(newContactFormValuesContainer))\n\t\t})\n\t}\n\n\tstatic async fromFormsHierarchy(\n\t\trootForm: ICureForm,\n\t\tcurrentContact: Contact,\n\t\tcontactsHistory: Contact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => Service,\n\t\tformChildrenProvider: (parentId: string) => Promise<ICureForm[]>,\n\t\tformFactory: (anchorId: string, formTemplateId: string, label: string) => Promise<ICureForm>,\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),\n\t\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: [],\n\t\t\tformFactory,\n\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) => 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\tgetChildren(): ContactFormValuesContainer[] {\n\t\treturn this.children\n\t}\n\n\tgetValidationErrors(): [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<Service> {\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): FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, ID> {\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 Service({ ...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 = meta.codes)\n\t\t\tmeta.tags && (newService.tags = meta.tags)\n\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\t{ ...this.currentContact, services: this.currentContact.services?.map((s) => (s.id === service.id ? newService : s)) },\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\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => l(newFormValuesContainer))\n\t\t\treturn { result: service.id, formValuesContainer: newFormValuesContainer }\n\t\t}\n\n\t\treturn { result: service.id, formValuesContainer: this }\n\t}\n\n\tsetValue(\n\t\tlabel: string,\n\t\tlanguage: string,\n\t\tvalue?: Service,\n\t\tid?: string,\n\t\tmetadata?: ServiceMetadata,\n\t): FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, ID> {\n\t\tconst service = (id && this.getServiceInCurrentContact(id)) || 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 ?? []\n\t\tif (!isContentEqual(service.content?.[language], newContent) || (newCodes && !areCodesEqual(newCodes, service.codes ?? []))) {\n\t\t\tconst newService = new Service({ ...service, modified: Date.now() })\n\t\t\tconst newContents = newContent ? { ...(service.content || {}), [language]: newContent } : { ...(service.content || {}) }\n\t\t\tif (!newContent) {\n\t\t\t\tdelete newContents[language]\n\t\t\t}\n\n\t\t\tlet newCurrentContact: Contact\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\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 ?? 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\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\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => l(newFormValuesContainer))\n\n\t\t\treturn { result: service.id!, formValuesContainer: newFormValuesContainer }\n\t\t}\n\n\t\treturn { result: service.id, formValuesContainer: this }\n\t}\n\n\tdelete(serviceId: string): FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, 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{ ...this.currentContact, services: this.currentContact.services?.map((s) => (s.id === serviceId ? new Service({ ...service, endOfLife: Date.now() }) : s)) },\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\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => l(newFormValuesContainer))\n\t\t\treturn { result: undefined, formValuesContainer: newFormValuesContainer }\n\t\t}\n\t\treturn { result: undefined, formValuesContainer: this }\n\t}\n\n\tcompute<T>(): 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<Service> {\n\t\tconst indexedServices = [this.currentContact]\n\t\t\t.concat(this.contactsHistory)\n\t\t\t.reduce(\n\t\t\t\t(acc, ctc) =>\n\t\t\t\t\tctc.services?.reduce(\n\t\t\t\t\t\t(acc, s) => (s.id ? { ...acc, [s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({ revision: ctc.rev ?? null, modified: ctc.created, value: s }) } : acc),\n\t\t\t\t\t\tacc,\n\t\t\t\t\t) ?? acc,\n\t\t\t\t{} as VersionedData<Service>,\n\t\t\t) //index services in history by id\n\t\treturn Object.entries(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<Service>[]]\n\t\t\t})\n\t\t\t.reduce((acc, [id, history]) => ({ ...acc, [id]: history }), {})\n\t}\n\n\tasync addChild(\n\t\tanchorId: string,\n\t\ttemplateId: string,\n\t\tlabel: string,\n\t): Promise<FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, ContactFormValuesContainer>> {\n\t\tconst newForm = await this.formFactory(anchorId, templateId, label)\n\t\tconst childFVC = new ContactFormValuesContainer(newForm, this.currentContact, this.contactsHistory, this.serviceFactory, [], this.formFactory)\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)\n\t\tnewContactFormValuesContainer.registerChildFormValuesContainer(childFVC)\n\t\tthis.changeListeners.forEach((l) => l(newContactFormValuesContainer))\n\t\treturn { result: childFVC, formValuesContainer: newContactFormValuesContainer }\n\t}\n\n\tprivate getServiceInCurrentContact(id: string): Service | 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<FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, 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 !== container),\n\t\t\tthis.formFactory,\n\t\t)\n\t\tthis.changeListeners.forEach((l) => l(newContactFormValuesContainer))\n\t\treturn { result: undefined, formValuesContainer: newContactFormValuesContainer }\n\t}\n}\n\nconst setValueOnContactFormValuesContainer = (cfvc: ContactFormValuesContainer, label: string, language: string, fv?: FieldValue, id?: string, metadata?: FieldMetadata) => {\n\tconst value = fv?.content[language]\n\tconst mutation = cfvc.setValue(\n\t\tlabel,\n\t\tlanguage,\n\t\t{\n\t\t\tid: id,\n\t\t\tcodes: fv?.codes ?? [],\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\t{\n\t\t\tlabel: metadata?.label ?? label,\n\t\t\tresponsible: metadata?.owner,\n\t\t\tvalueDate: metadata?.valueDate,\n\t\t\ttags: metadata?.tags,\n\t\t},\n\t)\n\treturn mutation\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 { Contact, Form as ICureForm, Service } from '@icure/api'\nimport { sortedBy } from '../utils/no-lodash'\nimport { FormValuesContainer, FormValuesContainerMutation, ID, 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 } from '../utils/dates'\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: Contact\n\tprivate contactFormValuesContainer: ContactFormValuesContainer\n\tprivate _children: BridgedFormValuesContainer[] | undefined\n\tget children(): BridgedFormValuesContainer[] {\n\t\treturn (\n\t\t\tthis._children ??\n\t\t\t(this._children = this.contactFormValuesContainer\n\t\t\t\t.getChildren()\n\t\t\t\t.map(\n\t\t\t\t\t(fvc) =>\n\t\t\t\t\t\tnew BridgedFormValuesContainer(\n\t\t\t\t\t\t\tthis.responsible,\n\t\t\t\t\t\t\tfvc,\n\t\t\t\t\t\t\tthis.interpreter,\n\t\t\t\t\t\t\tthis.contact,\n\t\t\t\t\t\t\tthis.dependentValuesProvider,\n\t\t\t\t\t\t\tthis.validatorsProvider,\n\t\t\t\t\t\t\tthis.language,\n\t\t\t\t\t\t\tthis.changeListeners,\n\t\t\t\t\t\t),\n\t\t\t\t))\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 contact The displayed contact (may be in the past). === to currentContact if the contact is the contact of the day\n\t * @param contactFormValuesContainer The wrapped ContactFormValuesContainer\n\t * @param interpreter A function that can interpret formulas\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 */\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) => T | undefined,\n\t\tcontact?: Contact,\n\t\tprivate dependentValuesProvider: (anchorId: string | undefined, templateId: string) => { metadata: FieldMetadata; formula: string }[] = () => [],\n\t\tprivate validatorsProvider: (anchorId: string | undefined, templateId: string) => { metadata: FieldMetadata; validators: Validator[] }[] = () => [],\n\t\tprivate language = 'en',\n\t\tprivate changeListeners: ((newValue: BridgedFormValuesContainer) => void)[] = [],\n\t) {\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.contact = contact ?? contactFormValuesContainer.currentContact\n\t\tthis.computeDependentValues()\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\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 mutateAndNotify(newContactFormValuesContainer: ContactFormValuesContainer) {\n\t\tconst newBridgedFormValueContainer = new BridgedFormValuesContainer(\n\t\t\tthis.responsible,\n\t\t\tnewContactFormValuesContainer,\n\t\t\tthis.interpreter,\n\t\t\tthis.contact === this.contactFormValuesContainer.currentContact ? newContactFormValuesContainer.currentContact : this.contact,\n\t\t\tthis.dependentValuesProvider,\n\t\t\tthis.validatorsProvider,\n\t\t\tthis.language,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tthis.changeListeners.forEach((l) => l(newBridgedFormValueContainer))\n\t\treturn newBridgedFormValueContainer\n\t}\n\n\t//This method mutates the BridgedFormValuesContainer but can only be called from the constructor\n\tprivate computeDependentValues() {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\tthis.dependentValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).forEach(({ metadata, formula }) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst currentValue = this.getVersionedValuesForKey(metadata.label)\n\t\t\t\t\tconst newValue = this.compute(formula) as FieldValue | undefined\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\tconst currentContact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\tthis.contactFormValuesContainer = setValueOnContactFormValuesContainer(\n\t\t\t\t\t\t\tthis.contactFormValuesContainer,\n\t\t\t\t\t\t\tmetadata.label,\n\t\t\t\t\t\t\tlng,\n\t\t\t\t\t\t\tnewValue,\n\t\t\t\t\t\t\tObject.keys(currentValue ?? {})[0],\n\t\t\t\t\t\t\tmetadata,\n\t\t\t\t\t\t).formValuesContainer\n\t\t\t\t\t\tif (this.contact === currentContact) {\n\t\t\t\t\t\t\tthis.contact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(`Error while computing formula : ${formula}`, e)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tsetValue(\n\t\tlabel: string,\n\t\tlanguage: string,\n\t\tfv?: FieldValue,\n\t\tid?: string,\n\t\tmetadata?: FieldMetadata,\n\t): FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, ID> {\n\t\tconst mutation = setValueOnContactFormValuesContainer(this.contactFormValuesContainer, label, language, fv, id, metadata)\n\t\treturn { result: mutation.result, formValuesContainer: this.mutateAndNotify(mutation.formValuesContainer) }\n\t}\n\n\tsetMetadata(meta: FieldMetadata, id?: string | undefined): FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, ID> {\n\t\tconst mutation = 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,\n\t\t\t},\n\t\t\tid,\n\t\t)\n\t\treturn { result: mutation.result, formValuesContainer: this.mutateAndNotify(mutation.formValuesContainer) }\n\t}\n\n\tdelete(serviceId: string): FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, void> {\n\t\tconst mutation = this.contactFormValuesContainer.delete(serviceId)\n\t\treturn { result: undefined, formValuesContainer: this.mutateAndNotify(mutation.formValuesContainer) }\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\tcompute<T, S extends { [key: string | symbol]: unknown }>(formula: string, sandbox?: S): T | undefined {\n\t\t// noinspection JSUnusedGlobalSymbols\n\t\tconst parseContent = (content?: { [key: string]: PrimitiveType }) => {\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)\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\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\tlog,\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) => !!native[key as string] || key === 'self' || 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 : 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\tgetChildren(): FormValuesContainer<FieldValue, FieldMetadata>[] {\n\t\treturn this.contactFormValuesContainer.getChildren().map((fvc) => new BridgedFormValuesContainer(this.responsible, fvc, this.interpreter, this.contact))\n\t}\n\n\tgetValidationErrors(): [FieldMetadata, string][] {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\treturn this.validatorsProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).flatMap(\n\t\t\t\t({ metadata, validators }) =>\n\t\t\t\t\tvalidators\n\t\t\t\t\t\t.map(({ validation, message }) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\treturn this.compute(validation) ? undefined : [metadata, message]\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\tconsole.log(`Error while computing validation : ${validation}`, e)\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter((x) => !!x) as [FieldMetadata, string][],\n\t\t\t)\n\t\t} else {\n\t\t\treturn []\n\t\t}\n\t}\n\n\tasync addChild(\n\t\tanchorId: string,\n\t\ttemplateId: string,\n\t\tlabel: string,\n\t): Promise<FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, BridgedFormValuesContainer>> {\n\t\tconst mutation = await this.contactFormValuesContainer.addChild(anchorId, templateId, label)\n\t\tconst newBridgedFormValueContainer = this.mutateAndNotify(mutation.formValuesContainer)\n\t\tconst newChild = newBridgedFormValueContainer.children.find((c) => c.contactFormValuesContainer === mutation.result)\n\t\tif (!newChild) {\n\t\t\tthrow new Error('Illegal state, the new child must be found')\n\t\t}\n\t\treturn { result: newChild, formValuesContainer: newBridgedFormValueContainer }\n\t}\n\n\tasync removeChild(container: BridgedFormValuesContainer): Promise<FormValuesContainerMutation<FieldValue, FieldMetadata, BridgedFormValuesContainer, void>> {\n\t\tconst mutation = await this.contactFormValuesContainer.removeChild(container.contactFormValuesContainer)\n\t\treturn { result: undefined, formValuesContainer: this.mutateAndNotify(mutation.formValuesContainer) }\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<Service, ServiceMetadata> {\n\trootForm: ICureForm\n\tcurrentContact: Contact //The contact of the moment, used to record new modifications\n\tcontactsHistory: Contact[] //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) => Service\n\tformFactory: (anchorId: string, formTemplateId: string, label: string) => Promise<ICureForm>\n\n\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[]\n\n\tconstructor(\n\t\trootForm: ICureForm,\n\t\tcurrentContact: Contact,\n\t\tcontactsHistory: Contact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => Service,\n\t\tchildren: ContactFormValuesContainer[],\n\t\tformFactory: (anchorId: string, formTemplateId: string, label: string) => Promise<ICureForm>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[] = [],\n\t) {\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.changeListeners = changeListeners\n\t}\n\n\tregisterChildFormValuesContainer(childFVC: ContactFormValuesContainer) {\n\t\tchildFVC.registerChangeListener((newValue) => {\n\t\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tthis.currentContact,\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children.map((c) => (c === childFVC ? newValue : c)),\n\t\t\t\tthis.formFactory,\n\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\t\t\tthis.changeListeners.forEach((l) => l(newContactFormValuesContainer))\n\t\t})\n\t}\n\n\tstatic async fromFormsHierarchy(\n\t\trootForm: ICureForm,\n\t\tcurrentContact: Contact,\n\t\tcontactsHistory: Contact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => Service,\n\t\tformChildrenProvider: (parentId: string) => Promise<ICureForm[]>,\n\t\tformFactory: (anchorId: string, formTemplateId: string, label: string) => Promise<ICureForm>,\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),\n\t\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: [],\n\t\t\tformFactory,\n\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) => 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\tgetChildren(): ContactFormValuesContainer[] {\n\t\treturn this.children\n\t}\n\n\tgetValidationErrors(): [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<Service> {\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): FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, ID> {\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 Service({ ...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 = meta.codes)\n\t\t\tmeta.tags && (newService.tags = meta.tags)\n\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\t{ ...this.currentContact, services: this.currentContact.services?.map((s) => (s.id === service.id ? newService : s)) },\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\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => l(newFormValuesContainer))\n\t\t\treturn { result: service.id, formValuesContainer: newFormValuesContainer }\n\t\t}\n\n\t\treturn { result: service.id, formValuesContainer: this }\n\t}\n\n\tsetValue(\n\t\tlabel: string,\n\t\tlanguage: string,\n\t\tvalue?: Service,\n\t\tid?: string,\n\t\tmetadata?: ServiceMetadata,\n\t): FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, ID> {\n\t\tconst service =\n\t\t\t(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 ?? []\n\t\tif (!isContentEqual(service.content?.[language], newContent) || (newCodes && !areCodesEqual(newCodes, service.codes ?? []))) {\n\t\t\tconst newService = new Service({ ...service, modified: Date.now() })\n\t\t\tconst newContents = newContent ? { ...(service.content || {}), [language]: newContent } : { ...(service.content || {}) }\n\t\t\tif (!newContent) {\n\t\t\t\tdelete newContents[language]\n\t\t\t}\n\n\t\t\tlet newCurrentContact: Contact\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\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 ?? 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\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\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => l(newFormValuesContainer))\n\n\t\t\treturn { result: service.id!, formValuesContainer: newFormValuesContainer }\n\t\t}\n\n\t\treturn { result: service.id, formValuesContainer: this }\n\t}\n\n\tdelete(serviceId: string): FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, 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{ ...this.currentContact, services: this.currentContact.services?.map((s) => (s.id === serviceId ? new Service({ ...service, endOfLife: Date.now() }) : s)) },\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\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => l(newFormValuesContainer))\n\t\t\treturn { result: undefined, formValuesContainer: newFormValuesContainer }\n\t\t}\n\t\treturn { result: undefined, formValuesContainer: this }\n\t}\n\n\tcompute<T>(): 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<Service> {\n\t\tconst indexedServices = [this.currentContact]\n\t\t\t.concat(this.contactsHistory)\n\t\t\t.reduce(\n\t\t\t\t(acc, ctc) =>\n\t\t\t\t\tctc.services?.reduce(\n\t\t\t\t\t\t(acc, s) => (s.id ? { ...acc, [s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({ revision: ctc.rev ?? null, modified: ctc.created, value: s }) } : acc),\n\t\t\t\t\t\tacc,\n\t\t\t\t\t) ?? acc,\n\t\t\t\t{} as VersionedData<Service>,\n\t\t\t) //index services in history by id\n\t\treturn Object.entries(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<Service>[]]\n\t\t\t})\n\t\t\t.reduce((acc, [id, history]) => ({ ...acc, [id]: history }), {})\n\t}\n\n\tasync addChild(\n\t\tanchorId: string,\n\t\ttemplateId: string,\n\t\tlabel: string,\n\t): Promise<FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, ContactFormValuesContainer>> {\n\t\tconst newForm = await this.formFactory(anchorId, templateId, label)\n\t\tconst childFVC = new ContactFormValuesContainer(newForm, this.currentContact, this.contactsHistory, this.serviceFactory, [], this.formFactory)\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)\n\t\tnewContactFormValuesContainer.registerChildFormValuesContainer(childFVC)\n\t\tthis.changeListeners.forEach((l) => l(newContactFormValuesContainer))\n\t\treturn { result: childFVC, formValuesContainer: newContactFormValuesContainer }\n\t}\n\n\tprivate getServiceInCurrentContact(id: string): Service | 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<FormValuesContainerMutation<Service, ServiceMetadata, ContactFormValuesContainer, 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 !== container),\n\t\t\tthis.formFactory,\n\t\t)\n\t\tthis.changeListeners.forEach((l) => l(newContactFormValuesContainer))\n\t\treturn { result: undefined, formValuesContainer: newContactFormValuesContainer }\n\t}\n}\n\nconst setValueOnContactFormValuesContainer = (cfvc: ContactFormValuesContainer, label: string, language: string, fv?: FieldValue, id?: string, metadata?: FieldMetadata) => {\n\tconst value = fv?.content[language]\n\tconst mutation = cfvc.setValue(\n\t\tlabel,\n\t\tlanguage,\n\t\t{\n\t\t\tid: id,\n\t\t\tcodes: fv?.codes ?? [],\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,\n\t\t\t }\n\t\t\t: undefined,\n\t)\n\treturn mutation\n}\n"]}
|
package/package.json
CHANGED
package/utils/code-utils.js
CHANGED
|
@@ -23,11 +23,11 @@ const optionMapper = (language, field, translationProvider) => {
|
|
|
23
23
|
exports.optionMapper = optionMapper;
|
|
24
24
|
const sortCodes = (codes, language, sortOptions) => (sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.sort) && (sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.sort) !== 'natural'
|
|
25
25
|
? codes.sort((0, utils_1.defaultCodesComparator)(language, (sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.sort) === 'asc', (sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.promotions) ? (0, utils_1.makePromoter)(sortOptions.promotions.split(/ ?, ?/)) : utils_1.defaultCodePromoter))
|
|
26
|
-
: codes;
|
|
26
|
+
: codes.sort((0, utils_1.naturalCodesComparator)((sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.promotions) ? (0, utils_1.makePromoter)(sortOptions.promotions.split(/ ?, ?/)) : utils_1.defaultCodePromoter));
|
|
27
27
|
exports.sortCodes = sortCodes;
|
|
28
28
|
const sortSuggestions = (codes, language, sortOptions) => ((sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.sort) && (sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.sort) !== 'natural'
|
|
29
29
|
? codes.sort((0, utils_1.defaultCodesComparator)(language, (sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.sort) === 'asc', (sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.promotions) ? (0, utils_1.makePromoter)(sortOptions.promotions.split(/ ?, ?/)) : utils_1.defaultCodePromoter))
|
|
30
|
-
: codes).map((c) => { var _a; return ({ id: c.id, label: c.label, text: (_a = c.label[language]) !== null && _a !== void 0 ? _a : '', terms: [] }); });
|
|
30
|
+
: codes.sort((0, utils_1.naturalCodesComparator)((sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.promotions) ? (0, utils_1.makePromoter)(sortOptions.promotions.split(/ ?, ?/)) : utils_1.defaultCodePromoter))).map((c) => { var _a; return ({ id: c.id, label: c.label, text: (_a = c.label[language]) !== null && _a !== void 0 ? _a : '', terms: [] }); });
|
|
31
31
|
exports.sortSuggestions = sortSuggestions;
|
|
32
32
|
const filterAndSortOptionsFromFieldDefinition = (language, fg, translationProvider, terms) => Promise.resolve((0, exports.sortCodes)((0, exports.optionMapper)(language, fg, translationProvider).filter((x) => (terms !== null && terms !== void 0 ? terms : []).map((st) => st.toLowerCase()).every((st) => x.label[language].toLowerCase().includes(st))), language, fg.sortOptions));
|
|
33
33
|
exports.filterAndSortOptionsFromFieldDefinition = filterAndSortOptionsFromFieldDefinition;
|
package/utils/code-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-utils.js","sourceRoot":"","sources":["../../tmp/utils/code-utils.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"code-utils.js","sourceRoot":"","sources":["../../tmp/utils/code-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Code, Field, SortOptions } from '../components/model'\nimport { defaultCodePromoter, defaultCodesComparator, makePromoter, naturalCodesComparator } from '../components/common/utils'\nimport { Suggestion } from '../generic'\n\n/**\n * Maps the options defined in a field into a list of codes\n *\n * @param language\n * @param field\n * @param translationProvider\n */\nexport const optionMapper = (language: string, field: Field, translationProvider?: (language: string, text: string) => string): Code[] =>\n\tObject.keys(field?.options ?? []).map((optionKey) => {\n\t\tconst text: string = (field?.options?.[optionKey] as string) ?? ''\n\t\treturn {\n\t\t\tid: optionKey,\n\t\t\tlabel: { [language]: translationProvider ? translationProvider(language, text) : text },\n\t\t}\n\t})\n\nexport const sortCodes = (codes: Code[], language: string, sortOptions?: SortOptions) =>\n\tsortOptions?.sort && sortOptions?.sort !== 'natural'\n\t\t? codes.sort(defaultCodesComparator(language, sortOptions?.sort === 'asc', sortOptions?.promotions ? makePromoter(sortOptions.promotions.split(/ ?, ?/)) : defaultCodePromoter))\n\t\t: codes.sort(naturalCodesComparator(sortOptions?.promotions ? makePromoter(sortOptions.promotions.split(/ ?, ?/)) : defaultCodePromoter))\n\nexport const sortSuggestions = (codes: (Code | Suggestion)[], language: string, sortOptions?: SortOptions): Suggestion[] =>\n\t(sortOptions?.sort && sortOptions?.sort !== 'natural'\n\t\t? codes.sort(defaultCodesComparator(language, sortOptions?.sort === 'asc', sortOptions?.promotions ? makePromoter(sortOptions.promotions.split(/ ?, ?/)) : defaultCodePromoter))\n\t\t: codes.sort(naturalCodesComparator(sortOptions?.promotions ? makePromoter(sortOptions.promotions.split(/ ?, ?/)) : defaultCodePromoter))\n\t).map((c) => ({ id: c.id, label: c.label, text: c.label[language] ?? '', terms: [] }))\n\nexport const filterAndSortOptionsFromFieldDefinition = (\n\tlanguage: string,\n\tfg: Field,\n\ttranslationProvider: ((language: string, text: string) => string) | undefined,\n\tterms?: string[],\n) =>\n\tPromise.resolve(\n\t\tsortCodes(\n\t\t\toptionMapper(language, fg, translationProvider).filter((x) => (terms ?? []).map((st) => st.toLowerCase()).every((st) => x.label[language].toLowerCase().includes(st))),\n\t\t\tlanguage,\n\t\t\tfg.sortOptions,\n\t\t),\n\t)\n"]}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|