@icure/form 3.0.38 → 3.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.yarn/cache/{@babel-runtime-npm-7.26.10-d01a90d446-22d2e0abb8.zip → @babel-runtime-npm-7.28.4-31bc1b0001-934b0a0460.zip} +0 -0
- package/.yarn/cache/{@icure-motss-app-datepicker-npm-6.0.0-rc.39-d00d21c35a-eefaed31a8.zip → @icure-motss-app-datepicker-npm-6.0.0-rc.40-ca1da7abbb-9bbe2bed34.zip} +0 -0
- package/.yarn/cache/@lit-labs-ssr-dom-shim-npm-1.4.0-e5ef5fbeba-e267c25576.zip +0 -0
- package/.yarn/cache/{@lit-reactive-element-npm-2.1.0-77512b732b-fb36e9f64b.zip → @lit-reactive-element-npm-2.1.1-3875228c32-b9bbc9c089.zip} +0 -0
- package/.yarn/cache/{@lit-task-npm-1.0.2-01d3dd32e9-22e1265a62.zip → @lit-task-npm-1.0.3-48f265b3e9-790b6a2603.zip} +0 -0
- package/.yarn/cache/{lit-element-npm-4.1.1-bb20932b82-74d0f2d6fb.zip → lit-element-npm-4.2.1-b5bc114ced-5925326176.zip} +0 -0
- package/.yarn/cache/{lit-html-npm-3.2.1-1662fc597d-1bacd9f8b2.zip → lit-html-npm-3.3.1-e3722d4f4a-de07c66945.zip} +0 -0
- package/.yarn/cache/{lit-npm-3.2.1-27cb5b7782-ee22bbc53d.zip → lit-npm-3.3.1-8f683c51f1-fb88f1ff80.zip} +0 -0
- package/.yarn/cache/{prosemirror-commands-npm-1.7.0-212f35173c-a39225d534.zip → prosemirror-commands-npm-1.7.1-5b2afb6640-2316c40ea2.zip} +0 -0
- package/.yarn/cache/prosemirror-history-npm-1.5.0-e639d02880-6afb0e1d17.zip +0 -0
- package/.yarn/cache/prosemirror-keymap-npm-1.2.3-0e7e0c8195-0a2eed2771.zip +0 -0
- package/.yarn/cache/prosemirror-model-npm-1.25.4-e7ee2df3df-ab5aa609df.zip +0 -0
- package/.yarn/cache/prosemirror-state-npm-1.4.4-8b7e3a396c-1b5dba46c2.zip +0 -0
- package/.yarn/cache/prosemirror-transform-npm-1.10.5-5b3b4f5f61-6f5921e53a.zip +0 -0
- package/.yarn/cache/prosemirror-view-npm-1.41.4-cf361fd330-b663b8c6ce.zip +0 -0
- package/.yarn/install-state.gz +0 -0
- package/components/common/metadata-buttons-bar.d.ts +1 -1
- package/components/common/metadata-buttons-bar.js +2 -2
- package/components/common/metadata-buttons-bar.js.map +1 -1
- package/components/icure-date-picker/index.d.ts +2 -2
- package/components/icure-date-picker/index.js +3 -3
- package/components/icure-date-picker/index.js.map +1 -1
- package/icure/form-values-container.js +12 -12
- package/icure/form-values-container.js.map +1 -1
- package/package.json +1 -2
- package/.yarn/cache/@icure-cardinal-sdk-npm-1.3.0-ts-2-d77151b3e6-86e1497829.zip +0 -0
- package/.yarn/cache/@js-joda-core-npm-3.2.0-d2526290e9-64625c2f22.zip +0 -0
- package/.yarn/cache/@lit-labs-ssr-dom-shim-npm-1.3.0-6bfa115c08-c2003e8bb6.zip +0 -0
- package/.yarn/cache/@lit-reactive-element-npm-2.0.4-4836436301-368d788d9e.zip +0 -0
- package/.yarn/cache/format-util-npm-1.0.5-a524ca953a-0c8622e54a.zip +0 -0
- package/.yarn/cache/prosemirror-history-npm-1.4.1-ad68c86bb7-90f9bf59bc.zip +0 -0
- package/.yarn/cache/prosemirror-keymap-npm-1.2.2-efb8276b00-85fe4fc303.zip +0 -0
- package/.yarn/cache/prosemirror-model-npm-1.25.0-0870b04e23-e311e1e36c.zip +0 -0
- package/.yarn/cache/prosemirror-state-npm-1.4.3-d6540e44ad-28857d935c.zip +0 -0
- package/.yarn/cache/prosemirror-transform-npm-1.10.3-fb23bef7a8-8cbe29501e.zip +0 -0
- package/.yarn/cache/prosemirror-view-npm-1.38.1-8cfb4ec84f-12f7f4d27f.zip +0 -0
- package/.yarn/cache/regenerator-runtime-npm-0.14.1-a6c97c609a-9f57c93277.zip +0 -0
- package/.yarn/cache/ws-npm-8.18.0-56f68bc4d6-91d4d35bc9.zip +0 -0
- package/utils/form-value-container.d.ts +0 -3
- package/utils/form-value-container.js +0 -30
- package/utils/form-value-container.js.map +0 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/.yarn/install-state.gz
CHANGED
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
2
|
import { FieldMetadata, FieldValue } from '../model';
|
|
3
3
|
import { Suggestion, Version } from '../../generic';
|
|
4
|
-
import { CustomEventDetail } from '@icure/motss-app-datepicker/dist/typings';
|
|
4
|
+
import { CustomEventDetail } from '@icure/motss-app-datepicker/dist/typings.js';
|
|
5
5
|
export declare class MetadataButtonBar extends LitElement {
|
|
6
6
|
valueId: string;
|
|
7
7
|
metadata: FieldMetadata;
|
|
@@ -21,8 +21,8 @@ import { property, state } from 'lit/decorators.js';
|
|
|
21
21
|
import { calendarPatientPicto, i18nPicto, ownerPicto, resetPicto, searchPicto, versionPicto } from './styles/paths';
|
|
22
22
|
import { format } from 'date-fns';
|
|
23
23
|
import { anyDateToDate } from '../../utils/dates';
|
|
24
|
-
import { toResolvedDate } from '@icure/motss-app-datepicker/dist/helpers/to-resolved-date';
|
|
25
|
-
import { MAX_DATE } from '@icure/motss-app-datepicker/dist/constants';
|
|
24
|
+
import { toResolvedDate } from '@icure/motss-app-datepicker/dist/helpers/to-resolved-date.js';
|
|
25
|
+
import { MAX_DATE } from '@icure/motss-app-datepicker/dist/constants.js';
|
|
26
26
|
import { languageName } from '../../utils/languages';
|
|
27
27
|
// @ts-ignore
|
|
28
28
|
import { css } from 'lit';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-buttons-bar.js","sourceRoot":"","sources":["../../../tmp/components/common/metadata-buttons-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { FieldMetadata, FieldValue } from '../model'\nimport { Suggestion, Version } from '../../generic'\nimport { calendarPatientPicto, i18nPicto, ownerPicto, resetPicto, searchPicto, versionPicto } from './styles/paths'\nimport { format } from 'date-fns'\nimport { anyDateToDate } from '../../utils/dates'\nimport { toResolvedDate } from '@icure/motss-app-datepicker/dist/helpers/to-resolved-date'\nimport { CustomEventDetail } from '@icure/motss-app-datepicker/dist/typings'\nimport { MAX_DATE } from '@icure/motss-app-datepicker/dist/constants'\nimport { languageName } from '../../utils/languages'\n\n// @ts-ignore\nimport { css } from 'lit';\nconst baseCss = css`@charset \"UTF-8\";\n.tab-container .tab-bar li {\n display: inline-block;\n padding: 8px 16px;\n cursor: pointer;\n color: #000000;\n font-size: 14px;\n font-weight: 500;\n}\n.tab-container .tab-bar li.active {\n background-color: #656565;\n color: white;\n}\n.tab-container .tab-content .tab {\n display: none;\n}\n.tab-container .tab-content .tab.active {\n display: block;\n}\n\n:host {\n --bg-color-1: #f44336;\n}\n\n.ProseMirror {\n position: relative;\n width: 100%;\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n padding: 6px 8px 2px 8px;\n line-height: 1.2;\n color: #274768;\n font-size: 14px;\n font-weight: 400;\n outline: none;\n}\n.ProseMirror p:last-child,\n.ProseMirror h1:last-child,\n.ProseMirror h2:last-child,\n.ProseMirror h3:last-child,\n.ProseMirror h4:last-child,\n.ProseMirror h5:last-child,\n.ProseMirror h6:last-child {\n margin-bottom: 2px;\n}\n.ProseMirror p {\n margin-bottom: 1em;\n}\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n.ProseMirror li {\n position: relative;\n}\n.ProseMirror ul,\n.ProseMirror ol {\n padding-left: 30px;\n}\n.ProseMirror blockquote {\n padding-left: 1em;\n border-left: 3px solid #eee;\n margin-left: 0;\n margin-right: 0;\n}\n\n.ProseMirror-hideselection {\n caret-color: transparent;\n}\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf;\n}\n\n/* Make sure li selections wrap around markers */\nli.ProseMirror-selectednode {\n outline: none;\n}\nli.ProseMirror-selectednode :after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n/* Add space around the hr to make clicking it easier */\n.ProseMirror-example-setup-style hr {\n padding: 2px 10px;\n border: none;\n margin: 1em 0;\n}\n.ProseMirror-example-setup-style hr:after {\n content: \"\";\n display: block;\n height: 1px;\n background: silver;\n line-height: 2px;\n}\n\n.ProseMirror-example-setup-style img {\n cursor: default;\n}\n\n.ProseMirror-prompt {\n background: white;\n padding: 5px 10px 5px 15px;\n border: 1px solid silver;\n position: fixed;\n border-radius: 3px;\n z-index: 11;\n box-shadow: -0.5px 2px 5px rgba(0, 0, 0, 0.2);\n}\n.ProseMirror-prompt h5 {\n margin: 0;\n font-weight: normal;\n font-size: 100%;\n color: #444;\n}\n.ProseMirror-prompt input[type=text],\n.ProseMirror-prompt textarea {\n background: #eee;\n border: none;\n outline: none;\n}\n.ProseMirror-prompt input[type=text] {\n padding: 0 4px;\n}\n\n.ProseMirror-prompt-close {\n position: absolute;\n left: 2px;\n top: 1px;\n color: #666;\n border: none;\n background: transparent;\n padding: 0;\n}\n.ProseMirror-prompt-close:after {\n content: \"✕\";\n font-size: 12px;\n}\n\n.ProseMirror-invalid {\n background: #ffc;\n border: 1px solid #cc7;\n border-radius: 4px;\n padding: 5px 10px;\n position: absolute;\n min-width: 10em;\n}\n\n.ProseMirror-prompt-buttons {\n margin-top: 5px;\n display: none;\n}\n\n#editor,\n.editor {\n color: rgb(101, 101, 101);\n background-clip: padding-box;\n border-radius: 4px;\n border: 2px solid rgba(0, 0, 0, 0.2);\n padding: 5px 0;\n display: flex;\n align-items: flex-end;\n}\n\n.icure-input {\n background: #edf2f7;\n border-radius: 8px;\n border: none;\n min-height: 28px;\n height: auto;\n display: flex;\n flex-flow: row nowrap;\n align-items: flex-start;\n justify-content: space-between;\n}\n\n#editor {\n background: transparent;\n border: none;\n padding: 0;\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n#editor.tokens-list .ProseMirror, #editor.styled-tokens-list .ProseMirror {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n}\n#editor.tokens-list .ProseMirror li, #editor.styled-tokens-list .ProseMirror li {\n display: flex;\n flex-direction: row;\n border-radius: 8px;\n padding: 2px 4px;\n margin-right: 2px;\n background-color: #dadada;\n border-color: rgba(42, 61, 108, 0.44);\n min-height: 20px;\n}\n#editor.tokens-list .ProseMirror li span, #editor.styled-tokens-list .ProseMirror li span {\n display: inline-block;\n min-height: 18px;\n}\n#editor.tokens-list .ProseMirror li span br, #editor.styled-tokens-list .ProseMirror li span br {\n display: none;\n}\n#editor.items-list .ProseMirror {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: flex-start;\n gap: 6px;\n}\n#editor.items-list .ProseMirror li {\n list-style-type: none;\n width: 100%;\n padding-bottom: 4px;\n border-bottom: 1px dotted rgba(128, 128, 128, 0.5098039216);\n}\n#editor.items-list .ProseMirror li:last-child {\n border-bottom: none;\n}\n\n#content {\n position: relative;\n padding: 0;\n}\n\n* {\n font-family: \"Roboto\", Helvetica, sans-serif;\n}\n\np {\n margin-top: 0;\n}\n\nh3 {\n color: #274768;\n margin-top: 0;\n}\n\n.icure-input-metadata-container {\n display: flex;\n}\n.icure-input-metadata-container .icure-metadata-container {\n display: flex;\n flex-grow: 1;\n padding: 0 4px;\n border: 1px solid #DDE3E7;\n border-left: none;\n border-radius: 0 6px 6px 0;\n outline: 0;\n box-sizing: border-box;\n}\n.icure-input-metadata-container .icure-metadata-container__validationError {\n border-color: red;\n}\n\n.extra {\n min-width: 20px;\n width: auto;\n height: 20px;\n transition: all 0.24s cubic-bezier(0.42, 0.01, 1, 0.62);\n}\n.extra:hover .info {\n display: none;\n}\n.extra:hover .buttons-container .menu-container .btn {\n animation: slideIn 0.24s ease-in forwards;\n pointer-events: none;\n display: unset !important;\n}\n.extra.forced .info, .extra.forced .extra .info.hidden {\n opacity: 0 !important;\n z-index: 0 !important;\n display: none;\n}\n.extra.forced .buttons-container .btn {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra.forced:hover .buttons-container .menu-container .btn {\n animation: none;\n pointer-events: all;\n}\n.extra--metadataButtonsBar {\n height: 100%;\n display: flex;\n align-items: center;\n padding: 0 4px;\n}\n.extra .info {\n color: #809ab4;\n font-size: 15px;\n width: 100%;\n height: auto;\n overflow: hidden;\n pointer-events: none;\n text-align: center;\n}\n.extra .info span {\n font-weight: 700;\n}\n.extra .info.hidden {\n display: none;\n}\n.extra .buttons-container {\n display: flex;\n height: 20px;\n width: auto;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-end;\n transition: all 0.24s cubic-bezier(0.14, 0.69, 0.87, 0.54);\n z-index: 1000;\n}\n.extra .buttons-container .btn {\n border: none;\n background: transparent;\n position: relative;\n top: 0;\n display: none;\n opacity: 0;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.extra .buttons-container .btn svg {\n width: 15px;\n height: 15px;\n}\n.extra .buttons-container .btn svg path {\n fill: #809ab4;\n}\n.extra .buttons-container .btn.forced {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra .buttons-container .btn.forced svg path {\n fill: crimson !important;\n}\n.extra .buttons-container .btn:focus, .extra .buttons-container .btn:focus-within {\n border: none;\n outline: none;\n}\n.extra .buttons-container .btn:hover svg path {\n fill: #274768;\n}\n.extra .buttons-container .menu-container .btn:hover::before {\n content: \"\";\n display: block;\n border-color: #274768 transparent transparent transparent;\n border-style: solid;\n border-width: 4px;\n position: absolute;\n top: -6px;\n}\n.extra .buttons-container .menu-container .btn:hover::after {\n content: attr(data-content);\n position: absolute;\n top: -21px;\n height: 16px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n background: #274768;\n color: white;\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n text-transform: capitalize;\n white-space: nowrap;\n padding: 0 12px;\n font-size: 12px;\n line-height: 0;\n}\n.extra .buttons-container .menu-container:last-child .btn {\n margin-right: 0;\n}\n\n@keyframes slideIn {\n 0% {\n top: 0;\n opacity: 0;\n pointer-events: none;\n }\n 100% {\n top: 0;\n opacity: 1;\n pointer-events: all;\n }\n}\n.menu-container {\n display: flex;\n align-items: center;\n height: fit-content;\n}\n.menu-container .item {\n height: 30px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #274768;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n}\n.menu-container .item.existing {\n background-color: #BFE8EA;\n}\n.menu-container .item.selected {\n color: white;\n background-color: #084B83;\n}\n.menu-container .item:hover {\n background: #DCE7F2;\n color: #274768;\n font-weight: 500;\n border-radius: 4px;\n}\n\n.value-date-menu {\n width: unset !important;\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n gap: 2px;\n position: absolute;\n top: 32px;\n right: -12px;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n border-radius: 8px;\n padding: 8px;\n width: 220px;\n min-height: 120px;\n max-height: 320px;\n overflow-y: scroll;\n}\n.menu .input-container {\n background: #edf2f7;\n border-radius: 4px;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n height: 32px;\n margin-bottom: 4px;\n padding: 0 4px;\n}\n.menu .input-container:hover {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2);\n}\n.menu .input-container:focus-within {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2), 0 0 0 1px rgb(40, 151, 255);\n}\n.menu .input-container input {\n background: transparent;\n border: none;\n flex-grow: 1;\n height: 100%;\n}\n.menu .input-container input:focus {\n background: transparent;\n border: none;\n outline: none;\n}\n\n.menu-trigger:focus .menu {\n display: flex;\n}\n\nspan {\n position: relative;\n z-index: 1;\n}\nspan.date {\n margin-right: 1px;\n}\nspan.time {\n margin-left: 1px;\n}\nspan.measure {\n display: inline-block;\n margin-right: 1px;\n}\nspan.unit {\n margin-left: 1px;\n display: inline-block;\n}\nspan[data-content]:hover::after {\n position: absolute;\n content: attr(data-content);\n background: #274768;\n color: #ffffff;\n font-size: 9px;\n line-height: 12px;\n top: -12px;\n left: 0px;\n padding: 0px 2px;\n}\nspan[data-content]::before {\n position: absolute;\n content: \"\";\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n opacity: 0.3;\n}\n\n.masked {\n display: none;\n}\n\n.companion {\n position: absolute;\n width: 15px;\n background-color: hsl(194, 100%, 50%);\n color: white;\n z-index: 20;\n padding: 0;\n text-align: center;\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 0 2px 2px 0;\n}\n.companion:hover {\n font-weight: 700;\n background: hsl(202, 100%, 50%);\n}\n\n*::selection {\n background-color: hsla(194, 100%, 50%, 0.2);\n}\n\n.suggestion-palette {\n position: absolute;\n z-index: 20;\n max-width: 380px;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 4px;\n border: none;\n border-radius: 8px;\n background: white;\n box-shadow: 0 1.1px 1.1px rgba(0, 0, 0, 0.022), 0 2.7px 2.7px rgba(0, 0, 0, 0.032), 0 5px 5px rgba(0, 0, 0, 0.04), 0 8.9px 8.9px rgba(0, 0, 0, 0.048), 0 16.7px 16.7px rgba(0, 0, 0, 0.058), 0 40px 40px rgba(0, 0, 0, 0.08);\n}\n.suggestion-palette ul {\n white-space: nowrap;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.suggestion-palette ul li:not(:first-child) svg.tab-icn,\n.suggestion-palette ul li:not(.focused) svg.return-icn, .suggestion-palette ul.focused li:first-child svg.tab-icn {\n height: 0;\n width: 0;\n transform: scale(0);\n opacity: 0;\n}\n.suggestion-palette ul li {\n padding: 0 8px;\n font-size: 11px;\n height: 20px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 4px;\n color: rgb(39, 71, 104);\n}\n.suggestion-palette ul li.focused {\n background-color: rgb(237, 242, 247);\n}\n.suggestion-palette ul li.focused svg.return-icn {\n animation: growIn 0.24s ease-in forwards;\n}\n.suggestion-palette ul li svg {\n height: 12px;\n width: 12px;\n border-radius: 4px;\n transform-origin: center center;\n}\n.suggestion-palette ul li svg path {\n fill: rgb(128, 154, 180);\n}\n\n@keyframes growIn {\n 0% {\n transform: scale(0.5);\n }\n 90% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n }\n}\nspan.code-count-1::after,\nspan.code-count-1::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n}\n\nspan.code-count-2::after,\nspan.code-count-2::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n /*background: repeating-linear-gradient(*/\n /*\t45deg,*/\n /*\tvar(--bg-code-color-1),*/\n /*\tvar(--bg-code-color-1) 10px,*/\n /*\tvar(--bg-code-color-2) 10px,*/\n /*\tvar(--bg-code-color-2) 20px*/\n /*);*/\n /* PAS STRIPES */\n background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);\n}\n\nspan.code-count-3::after,\nspan.code-count-3::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n background: repeating-linear-gradient(45deg, var(--bg-code-color-1), var(--bg-code-color-1) 10px, var(--bg-code-color-2) 10px, var(--bg-code-color-2) 20px);\n /* PAS STRIPES */\n /* background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);*/\n}\n\n.selected-option {\n padding: 2px;\n margin-right: 5px;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: auto;\n min-width: 100%;\n overflow-y: auto;\n padding: 2px;\n border-radius: 6px;\n}\n.options--subformView {\n top: 46px;\n min-width: unset;\n left: unset;\n right: 0;\n}\n\n.date-picker {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: 260px;\n overflow-y: auto;\n max-height: 280px;\n}\n\napp-date-picker {\n --app-primary: #084B83;\n --app-hover: #5b7da2;\n --app-selected-hover: #5b7da2;\n}\n\n.option {\n height: 28px;\n min-height: 28px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #545454;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n padding: 4px 8px;\n -webkit-user-select: none; /* Safari */\n -ms-user-select: none; /* IE 10 and IE 11 */\n user-select: none; /* Standard syntax */\n cursor: pointer;\n}\n.option:hover {\n color: #656565;\n background-color: #ededed;\n}\n\n.select-arrow {\n border: none;\n background: 0px 0px;\n position: relative;\n top: 0px;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n width: 10px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0px;\n}\n\n.hidden {\n display: none;\n}\n\n.container {\n position: relative;\n}\n\n.group {\n align-items: end;\n display: grid;\n}\n\n.subform {\n display: grid;\n position: relative;\n padding: 8px;\n border-radius: 6px;\n background-color: #e7f0fd;\n gap: 12px;\n}\n.subform__heading {\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: auto;\n}\n.subform__heading__title {\n padding: 0;\n margin: 0;\n}\n.subform__addBtn, .subform__removeBtn {\n cursor: pointer;\n background-color: #084B83;\n color: white;\n height: 32px;\n padding: 0 16px;\n border-radius: 6px;\n border: none;\n outline: none;\n}\n.subform__addBtn:hover, .subform__removeBtn:hover {\n background-color: #3D87C5;\n}\n.subform__removeBtn {\n justify-self: end;\n border: 1px solid #DDE3E7;\n background-color: #FCFCFD;\n color: #084B83;\n}\n.subform__removeBtn:hover {\n background-color: #F2F2F2;\n}\n.subform__child {\n display: grid;\n grid-template-rows: auto;\n gap: 8px;\n padding: 8px;\n border-radius: 6px;\n background: white;\n border: 1px solid #3D87C5;\n}\n.subform__child__title {\n padding: 12px !important;\n border-radius: 6px;\n margin: 0;\n background-color: #BFE8EA;\n}\n.subform__child .subform {\n background: unset;\n margin: 0;\n padding: 0;\n}\n\n.icure-form {\n background-color: rgba(0, 0, 0, 0);\n display: grid;\n gap: 16px 6px;\n grid-template-columns: repeat(24, 1fr);\n}\n.icure-form hr {\n display: block;\n margin-top: 20px;\n border-top: 1px solid rgba(8, 75, 131, 0.13);\n margin-bottom: 20px;\n}\n.icure-form h2 {\n font-size: add-two(12px, 0, 1.2);\n font-weight: 700;\n color: #084B83;\n padding: 2px;\n}\n.icure-form h3 {\n font-size: add-two(12px, 0, 1.1);\n font-weight: 500;\n color: #084B83;\n padding: 6px;\n}\n.icure-form .group.bordered {\n background: #f6f6f6;\n border-radius: 12px;\n}\n\n.icure-form-field {\n display: grid;\n align-items: flex-start;\n}\n\n.error {\n color: red;\n font-size: 12px;\n margin-top: 4px;\n}\n\n.icure-text-field .icure-label-extra, .icure-button-group .icure-label-extra {\n display: flex;\n width: 100%;\n gap: 12px;\n}\n.icure-text-field .icure-label, .icure-button-group .icure-label {\n z-index: 1;\n pointer-events: none;\n line-height: 1.4em;\n cursor: text;\n font-size: 12px;\n left: add-two(8px, 1px);\n color: #084B83;\n align-items: center;\n text-wrap: auto;\n min-height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-text-field .icure-label.float, .icure-button-group .icure-label.float {\n display: flex;\n overflow: hidden;\n}\n\n.icure-text-field {\n position: relative;\n width: 100%;\n}\n.icure-text-field > .icure-label {\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n}\n.icure-text-field > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-text-field > .icure-label.side {\n position: relative;\n}\n.icure-text-field > .icure-label.side.left {\n order: -1;\n margin-right: 1em;\n}\n.icure-text-field > .icure-label.side.right {\n order: 1;\n margin-left: 1em;\n}\n.icure-text-field .icure-input,\n.icure-text-field .input-container {\n padding: 8px;\n width: 100%;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n border-color: #DDE3E7;\n border-radius: 2px;\n outline: 0;\n font: inherit;\n font-size: 14px;\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 color: #000000;\n}\n.icure-text-field .icure-input .reset-button,\n.icure-text-field .input-container .reset-button {\n position: absolute;\n right: 0;\n border: none;\n background: transparent;\n top: 0;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.icure-text-field .icure-input .reset-button svg,\n.icure-text-field .input-container .reset-button svg {\n width: 15px;\n height: 15px;\n}\n.icure-text-field .icure-input__validationError,\n.icure-text-field .input-container__validationError {\n border-color: red;\n}\n.icure-text-field .icure-input__withMetadata,\n.icure-text-field .input-container__withMetadata {\n border-radius: 6px 0 0 6px;\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 {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input:hover,\n.icure-text-field .input-container:hover {\n border-color: rgba(0, 0, 0, 0.15);\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 {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input .ProseMirror,\n.icure-text-field .input-container .ProseMirror {\n padding: 0;\n font-size: 14px;\n line-height: 1.4em;\n color: #000000;\n}\n.icure-text-field .icure-input .ProseMirror .date,\n.icure-text-field .input-container .ProseMirror .date {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror .time,\n.icure-text-field .input-container .ProseMirror .time {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror:focus .focused,\n.icure-text-field .input-container .ProseMirror:focus .focused {\n background-color: rgba(0, 0, 0, 0.05);\n border-radius: 3px;\n border-color: rgba(0, 0, 0, 0.1);\n}\n.icure-text-field .icure-input > svg,\n.icure-text-field .input-container > svg {\n opacity: 0.5;\n}\n.icure-text-field .icure-input > svg path,\n.icure-text-field .input-container > svg path {\n fill: #656565;\n}\n.icure-text-field .icure-input .extra,\n.icure-text-field .input-container .extra {\n height: 20px;\n}\n.icure-text-field .icure-input .extra > .info,\n.icure-text-field .input-container .extra > .info {\n color: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path,\n.icure-text-field .input-container .extra .btn svg path {\n fill: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path:hover,\n.icure-text-field .input-container .extra .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:checked {\n accent-color: #06a070;\n}\n\n.icure-button {\n display: flex;\n height: 32px;\n padding: 0 16px;\n background-color: #084B83;\n color: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: normal;\n}\n.icure-button:hover {\n background-color: #3D87C5;\n}\n\n.icure-button-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.icure-button-group > div {\n display: grid;\n}\n.icure-button-group > div > div {\n display: flex;\n align-items: center;\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: 12px;\n top: add-three(1.4em, 1px, 0);\n left: add-two(8px, 1px);\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n color: #084B83;\n display: flex;\n align-items: center;\n height: 28px;\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.icure-button-group > .icure-label {\n transform: translate(0, 0) scale(1);\n}\n.icure-button-group > .icure-label.above, .icure-button-group.has-content > .icure-label, .icure-button-group:focus > .icure-label, .icure-button-group:focus-within > .icure-label {\n font-weight: 500;\n height: 1.4em;\n}` \n\nexport class MetadataButtonBar extends LitElement {\n\t@property() valueId: string\n\t@property() metadata: FieldMetadata\n\t@property() revision: string\n\t@property() versions: Version<FieldValue>[]\n\t@property() defaultLanguage: string\n\t@property() selectedLanguage?: string\n\t@property() languages: { [iso: string]: string } = {}\n\t@property() existingLanguages?: string[]\n\t@property() displayedLabels: { [iso: string]: string } = {}\n\t@property() handleReset?: () => void | undefined = undefined\n\t@property() handleMetadataChanged?: (metadata: FieldMetadata, id?: string) => string | undefined = undefined\n\t@property() handleLanguageSelected?: (iso?: string) => void = undefined\n\t@property() handleRevisionSelected?: (rev?: string | null) => void = undefined\n\t@property() ownersProvider: (terms: string[], ids?: string[], specialties?: string[]) => Promise<Suggestion[]> = async () => []\n\n\t@state() protected displayOwnersMenu = false\n\t@state() protected ownerInputValue = ''\n\t@state() protected availableOwners: Suggestion[] = []\n\t@state() protected loadedOwners: { [id: string]: Suggestion } = {}\n\n\t@state() protected displayLanguagesMenu = false\n\t@state() protected displayVersionsMenu = false\n\t@state() protected displayValueDateMenu = false\n\t@state() protected languageInputValue = ''\n\n\tstatic get styles() {\n\t\treturn [baseCss]\n\t}\n\n\t_handleClickOutside(event: MouseEvent): void {\n\t\tif (!event.composedPath().includes(this)) {\n\t\t\tthis.displayVersionsMenu = false\n\t\t\tthis.displayLanguagesMenu = false\n\t\t\tthis.displayOwnersMenu = false\n\t\t\tthis.displayValueDateMenu = false\n\t\t\tevent.stopPropagation()\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tdocument.addEventListener('click', this._handleClickOutside.bind(this))\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tdocument.removeEventListener('click', this._handleClickOutside.bind(this))\n\t}\n\n\trender() {\n\t\tconst revisionDate = this.versions.find((x) => x.revision === this.revision)?.modified\n\n\t\tconst owner = this.metadata?.owner\n\t\tif (owner && !this.loadedOwners[owner]) {\n\t\t\tthis.loadedOwners = { ...this.loadedOwners, [owner]: { id: owner, text: '', terms: [], label: {} } } // Make sure we do not loop endlessly\n\t\t\tthis.ownersProvider && this.ownersProvider([], [owner]).then((availableOwners) => (this.loadedOwners = availableOwners.reduce((acc, o) => ({ ...acc, [o.id]: o }), this.loadedOwners)))\n\t\t}\n\n\t\tconst forcedByMenu = this.displayOwnersMenu || this.displayLanguagesMenu || this.displayValueDateMenu || this.displayVersionsMenu\n\n\t\tconst discordantMetadata = this.metadata?.discordantMetadata?.()\n\n\t\tconst forcedByOwner = discordantMetadata?.owner !== undefined\n\t\tconst forcedByValueDate = discordantMetadata?.valueDate !== undefined\n\t\tconst forcedByLanguage = this.selectedLanguage && this.defaultLanguage !== this.selectedLanguage\n\t\tconst forcedByVersion = this.revision && this.revision !== this.versions?.[0]?.revision\n\n\t\tconsole.log('handle reset', this.handleReset)\n\n\t\treturn html` <div id=\"extra\" class=${'extra extra--metadataButtonsBar' + (forcedByMenu ? ' forced' : '')}>\n\t\t\t<div class=\"info ${forcedByOwner || forcedByLanguage || forcedByValueDate ? 'hidden' : ''}\">ⓘ</div>\n\t\t\t<div class=\"buttons-container\">\n\t\t\t\t${this.handleReset ? html`<button @click=\"${() => this.handleReset?.()}\" class=\"btn forced\">${resetPicto}</button>` : nothing}\n\t\t\t\t<div class=\"menu-container\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-content=\"${(this.metadata?.owner ? this.loadedOwners[this.metadata?.owner]?.text : '') ?? ''}\"\n\t\t\t\t\t\t@click=\"${() => this.toggleOwnersMenu(this.metadata?.owner)}\"\n\t\t\t\t\t\tclass=\"btn menu-trigger author ${forcedByOwner ? 'forced' : ''}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${ownerPicto}\n\t\t\t\t\t</button>\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.displayOwnersMenu\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div id=\"menu\" class=\"menu\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-container\">${searchPicto} <input id=\"ownerSearch\" @input=\"${this.searchOwner}\" /></div>\n\t\t\t\t\t\t\t\t\t\t${(this.availableOwners?.length ? this.availableOwners : Object.values(this.loadedOwners))?.map(\n\t\t\t\t\t\t\t\t\t\t\t(x) => html` <button\n\t\t\t\t\t\t\t\t\t\t\t\t@click=\"${() => this.handleOwnerButtonClicked(x.id)}\"\n\t\t\t\t\t\t\t\t\t\t\t\tid=\"${x.id}\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"${this.metadata?.owner && this.loadedOwners[this.metadata?.owner]?.text === x.text ? 'item selected' : 'item'}\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${x.text}\n\t\t\t\t\t\t\t\t\t\t\t</button>`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"menu-container\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-content=\"${this.metadata?.valueDate ? format(anyDateToDate(this.metadata.valueDate)!, 'yyyy-MM-dd HH:mm:ss').replace(/ 00:00:00$/, '') : ''}\"\n\t\t\t\t\t\tclass=\"btn date ${forcedByValueDate ? 'forced' : ''}\"\n\t\t\t\t\t\t@click=\"${() => this.toggleValueDateMenu()}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${calendarPatientPicto}\n\t\t\t\t\t</button>\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.displayValueDateMenu\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div id=\"menu\" class=\"menu value-date-menu\">\n\t\t\t\t\t\t\t\t\t\t<app-date-picker locale=\"${this.defaultLanguage ?? 'en'}\" style=\"\" max=\"${MAX_DATE}\" min=\"${toResolvedDate('1900-01-01')}\" @date-updated=\"${this.dateUpdated}\"></app-date-picker>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"menu-container\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-content=\"${this.revision === null ? 'latest' : this.revision ? `rev-${this.revision.split('-')[0]} ${revisionDate ? `(${format(new Date(revisionDate), 'yyyy-MM-dd')})` : ''}` : ''}\"\n\t\t\t\t\t\t@click=\"${this.toggleVersionsMenu}\"\n\t\t\t\t\t\tclass=\"btn version ${forcedByVersion ? 'forced' : ''}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${versionPicto}\n\t\t\t\t\t</button>\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.displayVersionsMenu\n\t\t\t\t\t\t\t? html` <div id=\"menu\" class=\"menu\">\n\t\t\t\t\t\t\t\t\t${this.versions.map(\n\t\t\t\t\t\t\t\t\t\t(x) =>\n\t\t\t\t\t\t\t\t\t\t\thtml` <button class=\"item ${x.revision === this.revision ? 'item selected' : ''}\" @click=\"${() => this.handleRevisionButtonClicked(x.revision)}\">\n\t\t\t\t\t\t\t\t\t\t\t\t${x.revision == null ? 'Latest' : x.revision ?? ''} ${x.modified ? `(${format(new Date(x.modified), 'yyyy-MM-dd')})` : ''}\n\t\t\t\t\t\t\t\t\t\t\t</button>`,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t </div>`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"menu-container\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-content=\"${this.selectedLanguage ? languageName(this.selectedLanguage) ?? this.selectedLanguage : languageName(this.defaultLanguage) ?? this.defaultLanguage}\"\n\t\t\t\t\t\t@click=\"${this.toggleLanguagesMenu}\"\n\t\t\t\t\t\tclass=\"btn menu-trigger language ${forcedByLanguage ? 'forced' : ''}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${i18nPicto}\n\t\t\t\t\t</button>\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.displayLanguagesMenu\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div id=\"menu\" class=\"menu\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-container\">${searchPicto} <input id=\"languageSearch\" @input=\"${this.searchLanguage}\" /></div>\n\t\t\t\t\t\t\t\t\t\t${[this.defaultLanguage, ...Object.keys(this.languages).filter((x) => x !== this.defaultLanguage)]\n\t\t\t\t\t\t\t\t\t\t\t.filter((x) => !!x && (languageName(x) ?? this.languages[x] ?? x).toLowerCase().includes((this.languageInputValue ?? '').toLowerCase()))\n\t\t\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(x) => html` <button\n\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"${() => this.handleLanguageButtonClicked(x)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tid=\"${x}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"${(x === this.defaultLanguage && !this.selectedLanguage) || x === this.selectedLanguage\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'item item selected'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: this.existingLanguages?.includes(x)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'item item existing'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'item'}\"\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\t\t${x ? languageName(x) : ''}\n\t\t\t\t\t\t\t\t\t\t\t\t</button>`,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>`\n\t}\n\n\ttoggleOwnersMenu(ownerId?: string) {\n\t\tthis.displayOwnersMenu = !this.displayOwnersMenu\n\t\tif (this.displayOwnersMenu) {\n\t\t\tthis.displayLanguagesMenu = false\n\t\t\tthis.displayVersionsMenu = false\n\t\t\tthis.displayValueDateMenu = false\n\n\t\t\tsetTimeout(() => {\n\t\t\t\t;(this.renderRoot.querySelector('#ownerSearch') as HTMLInputElement)?.focus()\n\t\t\t}, 0)\n\t\t}\n\t}\n\n\tsearchOwner(e: InputEvent) {\n\t\tconst text = (e.target as HTMLInputElement).value\n\t\tsetTimeout(async () => {\n\t\t\tif ((this.renderRoot.querySelector('#ownerSearch') as HTMLInputElement)?.value === text) {\n\t\t\t\tif (this.ownersProvider) {\n\t\t\t\t\tconst availableOwners = await this.ownersProvider(text.split(' '))\n\t\t\t\t\tconsole.log(availableOwners)\n\t\t\t\t\tthis.availableOwners = availableOwners\n\t\t\t\t}\n\t\t\t}\n\t\t}, 300)\n\t}\n\n\tsearchLanguage(e: InputEvent) {\n\t\tthis.languageInputValue = (e.target as HTMLInputElement).value\n\t}\n\n\thandleOwnerButtonClicked(id: string) {\n\t\tconst valueId = this.valueId\n\t\tthis.handleMetadataChanged && valueId && this.handleMetadataChanged({ label: this.metadata.label, owner: id })\n\t\tthis.displayOwnersMenu = false\n\t}\n\n\thandleLanguageButtonClicked(id: string) {\n\t\tthis.handleLanguageSelected?.(id)\n\t\tthis.displayOwnersMenu = false\n\t}\n\n\thandleRevisionButtonClicked(rev?: string | null) {\n\t\tthis.handleRevisionSelected?.(rev)\n\t\tthis.displayVersionsMenu = false\n\t}\n\n\ttoggleValueDateMenu() {\n\t\tthis.displayValueDateMenu = !this.displayValueDateMenu\n\t\tif (this.displayValueDateMenu) {\n\t\t\tthis.displayOwnersMenu = false\n\t\t\tthis.displayLanguagesMenu = false\n\t\t\tthis.displayVersionsMenu = false\n\t\t}\n\t}\n\n\tdateUpdated(date: CustomEventDetail['date-updated']): void {\n\t\tconst parts = date.detail.value?.split('-')\n\t\tif (parts && parts.length === 3) {\n\t\t\tconst fuzzyDateValue = parseInt(parts[0]) * 10000 + parseInt(parts[1]) * 100 + parseInt(parts[2])\n\t\t\tconst valueId = this.valueId\n\t\t\tthis.handleMetadataChanged && this.handleMetadataChanged({ label: this.metadata.label, valueDate: fuzzyDateValue * 1000000 }, valueId)\n\t\t\tthis.displayOwnersMenu = false\n\t\t}\n\t}\n\n\ttoggleLanguagesMenu() {\n\t\tthis.displayLanguagesMenu = !this.displayLanguagesMenu\n\t\tif (this.displayLanguagesMenu) {\n\t\t\tthis.displayOwnersMenu = false\n\t\t\tthis.displayVersionsMenu = false\n\t\t\tthis.displayValueDateMenu = false\n\t\t}\n\t}\n\n\ttoggleVersionsMenu() {\n\t\tthis.displayVersionsMenu = !this.displayVersionsMenu\n\t\tif (this.displayVersionsMenu) {\n\t\t\tthis.displayOwnersMenu = false\n\t\t\tthis.displayLanguagesMenu = false\n\t\t\tthis.displayValueDateMenu = false\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"metadata-buttons-bar.js","sourceRoot":"","sources":["../../../tmp/components/common/metadata-buttons-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { FieldMetadata, FieldValue } from '../model'\nimport { Suggestion, Version } from '../../generic'\nimport { calendarPatientPicto, i18nPicto, ownerPicto, resetPicto, searchPicto, versionPicto } from './styles/paths'\nimport { format } from 'date-fns'\nimport { anyDateToDate } from '../../utils/dates'\nimport { toResolvedDate } from '@icure/motss-app-datepicker/dist/helpers/to-resolved-date.js'\nimport { CustomEventDetail } from '@icure/motss-app-datepicker/dist/typings.js'\nimport { MAX_DATE } from '@icure/motss-app-datepicker/dist/constants.js'\nimport { languageName } from '../../utils/languages'\n\n// @ts-ignore\nimport { css } from 'lit';\nconst baseCss = css`@charset \"UTF-8\";\n.tab-container .tab-bar li {\n display: inline-block;\n padding: 8px 16px;\n cursor: pointer;\n color: #000000;\n font-size: 14px;\n font-weight: 500;\n}\n.tab-container .tab-bar li.active {\n background-color: #656565;\n color: white;\n}\n.tab-container .tab-content .tab {\n display: none;\n}\n.tab-container .tab-content .tab.active {\n display: block;\n}\n\n:host {\n --bg-color-1: #f44336;\n}\n\n.ProseMirror {\n position: relative;\n width: 100%;\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n padding: 6px 8px 2px 8px;\n line-height: 1.2;\n color: #274768;\n font-size: 14px;\n font-weight: 400;\n outline: none;\n}\n.ProseMirror p:last-child,\n.ProseMirror h1:last-child,\n.ProseMirror h2:last-child,\n.ProseMirror h3:last-child,\n.ProseMirror h4:last-child,\n.ProseMirror h5:last-child,\n.ProseMirror h6:last-child {\n margin-bottom: 2px;\n}\n.ProseMirror p {\n margin-bottom: 1em;\n}\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n.ProseMirror li {\n position: relative;\n}\n.ProseMirror ul,\n.ProseMirror ol {\n padding-left: 30px;\n}\n.ProseMirror blockquote {\n padding-left: 1em;\n border-left: 3px solid #eee;\n margin-left: 0;\n margin-right: 0;\n}\n\n.ProseMirror-hideselection {\n caret-color: transparent;\n}\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf;\n}\n\n/* Make sure li selections wrap around markers */\nli.ProseMirror-selectednode {\n outline: none;\n}\nli.ProseMirror-selectednode :after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n/* Add space around the hr to make clicking it easier */\n.ProseMirror-example-setup-style hr {\n padding: 2px 10px;\n border: none;\n margin: 1em 0;\n}\n.ProseMirror-example-setup-style hr:after {\n content: \"\";\n display: block;\n height: 1px;\n background: silver;\n line-height: 2px;\n}\n\n.ProseMirror-example-setup-style img {\n cursor: default;\n}\n\n.ProseMirror-prompt {\n background: white;\n padding: 5px 10px 5px 15px;\n border: 1px solid silver;\n position: fixed;\n border-radius: 3px;\n z-index: 11;\n box-shadow: -0.5px 2px 5px rgba(0, 0, 0, 0.2);\n}\n.ProseMirror-prompt h5 {\n margin: 0;\n font-weight: normal;\n font-size: 100%;\n color: #444;\n}\n.ProseMirror-prompt input[type=text],\n.ProseMirror-prompt textarea {\n background: #eee;\n border: none;\n outline: none;\n}\n.ProseMirror-prompt input[type=text] {\n padding: 0 4px;\n}\n\n.ProseMirror-prompt-close {\n position: absolute;\n left: 2px;\n top: 1px;\n color: #666;\n border: none;\n background: transparent;\n padding: 0;\n}\n.ProseMirror-prompt-close:after {\n content: \"✕\";\n font-size: 12px;\n}\n\n.ProseMirror-invalid {\n background: #ffc;\n border: 1px solid #cc7;\n border-radius: 4px;\n padding: 5px 10px;\n position: absolute;\n min-width: 10em;\n}\n\n.ProseMirror-prompt-buttons {\n margin-top: 5px;\n display: none;\n}\n\n#editor,\n.editor {\n color: rgb(101, 101, 101);\n background-clip: padding-box;\n border-radius: 4px;\n border: 2px solid rgba(0, 0, 0, 0.2);\n padding: 5px 0;\n display: flex;\n align-items: flex-end;\n}\n\n.icure-input {\n background: #edf2f7;\n border-radius: 8px;\n border: none;\n min-height: 28px;\n height: auto;\n display: flex;\n flex-flow: row nowrap;\n align-items: flex-start;\n justify-content: space-between;\n}\n\n#editor {\n background: transparent;\n border: none;\n padding: 0;\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n#editor.tokens-list .ProseMirror, #editor.styled-tokens-list .ProseMirror {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n}\n#editor.tokens-list .ProseMirror li, #editor.styled-tokens-list .ProseMirror li {\n display: flex;\n flex-direction: row;\n border-radius: 8px;\n padding: 2px 4px;\n margin-right: 2px;\n background-color: #dadada;\n border-color: rgba(42, 61, 108, 0.44);\n min-height: 20px;\n}\n#editor.tokens-list .ProseMirror li span, #editor.styled-tokens-list .ProseMirror li span {\n display: inline-block;\n min-height: 18px;\n}\n#editor.tokens-list .ProseMirror li span br, #editor.styled-tokens-list .ProseMirror li span br {\n display: none;\n}\n#editor.items-list .ProseMirror {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: flex-start;\n gap: 6px;\n}\n#editor.items-list .ProseMirror li {\n list-style-type: none;\n width: 100%;\n padding-bottom: 4px;\n border-bottom: 1px dotted rgba(128, 128, 128, 0.5098039216);\n}\n#editor.items-list .ProseMirror li:last-child {\n border-bottom: none;\n}\n\n#content {\n position: relative;\n padding: 0;\n}\n\n* {\n font-family: \"Roboto\", Helvetica, sans-serif;\n}\n\np {\n margin-top: 0;\n}\n\nh3 {\n color: #274768;\n margin-top: 0;\n}\n\n.icure-input-metadata-container {\n display: flex;\n}\n.icure-input-metadata-container .icure-metadata-container {\n display: flex;\n flex-grow: 1;\n padding: 0 4px;\n border: 1px solid #DDE3E7;\n border-left: none;\n border-radius: 0 6px 6px 0;\n outline: 0;\n box-sizing: border-box;\n}\n.icure-input-metadata-container .icure-metadata-container__validationError {\n border-color: red;\n}\n\n.extra {\n min-width: 20px;\n width: auto;\n height: 20px;\n transition: all 0.24s cubic-bezier(0.42, 0.01, 1, 0.62);\n}\n.extra:hover .info {\n display: none;\n}\n.extra:hover .buttons-container .menu-container .btn {\n animation: slideIn 0.24s ease-in forwards;\n pointer-events: none;\n display: unset !important;\n}\n.extra.forced .info, .extra.forced .extra .info.hidden {\n opacity: 0 !important;\n z-index: 0 !important;\n display: none;\n}\n.extra.forced .buttons-container .btn {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra.forced:hover .buttons-container .menu-container .btn {\n animation: none;\n pointer-events: all;\n}\n.extra--metadataButtonsBar {\n height: 100%;\n display: flex;\n align-items: center;\n padding: 0 4px;\n}\n.extra .info {\n color: #809ab4;\n font-size: 15px;\n width: 100%;\n height: auto;\n overflow: hidden;\n pointer-events: none;\n text-align: center;\n}\n.extra .info span {\n font-weight: 700;\n}\n.extra .info.hidden {\n display: none;\n}\n.extra .buttons-container {\n display: flex;\n height: 20px;\n width: auto;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-end;\n transition: all 0.24s cubic-bezier(0.14, 0.69, 0.87, 0.54);\n z-index: 1000;\n}\n.extra .buttons-container .btn {\n border: none;\n background: transparent;\n position: relative;\n top: 0;\n display: none;\n opacity: 0;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.extra .buttons-container .btn svg {\n width: 15px;\n height: 15px;\n}\n.extra .buttons-container .btn svg path {\n fill: #809ab4;\n}\n.extra .buttons-container .btn.forced {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra .buttons-container .btn.forced svg path {\n fill: crimson !important;\n}\n.extra .buttons-container .btn:focus, .extra .buttons-container .btn:focus-within {\n border: none;\n outline: none;\n}\n.extra .buttons-container .btn:hover svg path {\n fill: #274768;\n}\n.extra .buttons-container .menu-container .btn:hover::before {\n content: \"\";\n display: block;\n border-color: #274768 transparent transparent transparent;\n border-style: solid;\n border-width: 4px;\n position: absolute;\n top: -6px;\n}\n.extra .buttons-container .menu-container .btn:hover::after {\n content: attr(data-content);\n position: absolute;\n top: -21px;\n height: 16px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n background: #274768;\n color: white;\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n text-transform: capitalize;\n white-space: nowrap;\n padding: 0 12px;\n font-size: 12px;\n line-height: 0;\n}\n.extra .buttons-container .menu-container:last-child .btn {\n margin-right: 0;\n}\n\n@keyframes slideIn {\n 0% {\n top: 0;\n opacity: 0;\n pointer-events: none;\n }\n 100% {\n top: 0;\n opacity: 1;\n pointer-events: all;\n }\n}\n.menu-container {\n display: flex;\n align-items: center;\n height: fit-content;\n}\n.menu-container .item {\n height: 30px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #274768;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n}\n.menu-container .item.existing {\n background-color: #BFE8EA;\n}\n.menu-container .item.selected {\n color: white;\n background-color: #084B83;\n}\n.menu-container .item:hover {\n background: #DCE7F2;\n color: #274768;\n font-weight: 500;\n border-radius: 4px;\n}\n\n.value-date-menu {\n width: unset !important;\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n gap: 2px;\n position: absolute;\n top: 32px;\n right: -12px;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n border-radius: 8px;\n padding: 8px;\n width: 220px;\n min-height: 120px;\n max-height: 320px;\n overflow-y: scroll;\n}\n.menu .input-container {\n background: #edf2f7;\n border-radius: 4px;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n height: 32px;\n margin-bottom: 4px;\n padding: 0 4px;\n}\n.menu .input-container:hover {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2);\n}\n.menu .input-container:focus-within {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2), 0 0 0 1px rgb(40, 151, 255);\n}\n.menu .input-container input {\n background: transparent;\n border: none;\n flex-grow: 1;\n height: 100%;\n}\n.menu .input-container input:focus {\n background: transparent;\n border: none;\n outline: none;\n}\n\n.menu-trigger:focus .menu {\n display: flex;\n}\n\nspan {\n position: relative;\n z-index: 1;\n}\nspan.date {\n margin-right: 1px;\n}\nspan.time {\n margin-left: 1px;\n}\nspan.measure {\n display: inline-block;\n margin-right: 1px;\n}\nspan.unit {\n margin-left: 1px;\n display: inline-block;\n}\nspan[data-content]:hover::after {\n position: absolute;\n content: attr(data-content);\n background: #274768;\n color: #ffffff;\n font-size: 9px;\n line-height: 12px;\n top: -12px;\n left: 0px;\n padding: 0px 2px;\n}\nspan[data-content]::before {\n position: absolute;\n content: \"\";\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n opacity: 0.3;\n}\n\n.masked {\n display: none;\n}\n\n.companion {\n position: absolute;\n width: 15px;\n background-color: hsl(194, 100%, 50%);\n color: white;\n z-index: 20;\n padding: 0;\n text-align: center;\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 0 2px 2px 0;\n}\n.companion:hover {\n font-weight: 700;\n background: hsl(202, 100%, 50%);\n}\n\n*::selection {\n background-color: hsla(194, 100%, 50%, 0.2);\n}\n\n.suggestion-palette {\n position: absolute;\n z-index: 20;\n max-width: 380px;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 4px;\n border: none;\n border-radius: 8px;\n background: white;\n box-shadow: 0 1.1px 1.1px rgba(0, 0, 0, 0.022), 0 2.7px 2.7px rgba(0, 0, 0, 0.032), 0 5px 5px rgba(0, 0, 0, 0.04), 0 8.9px 8.9px rgba(0, 0, 0, 0.048), 0 16.7px 16.7px rgba(0, 0, 0, 0.058), 0 40px 40px rgba(0, 0, 0, 0.08);\n}\n.suggestion-palette ul {\n white-space: nowrap;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.suggestion-palette ul li:not(:first-child) svg.tab-icn,\n.suggestion-palette ul li:not(.focused) svg.return-icn, .suggestion-palette ul.focused li:first-child svg.tab-icn {\n height: 0;\n width: 0;\n transform: scale(0);\n opacity: 0;\n}\n.suggestion-palette ul li {\n padding: 0 8px;\n font-size: 11px;\n height: 20px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 4px;\n color: rgb(39, 71, 104);\n}\n.suggestion-palette ul li.focused {\n background-color: rgb(237, 242, 247);\n}\n.suggestion-palette ul li.focused svg.return-icn {\n animation: growIn 0.24s ease-in forwards;\n}\n.suggestion-palette ul li svg {\n height: 12px;\n width: 12px;\n border-radius: 4px;\n transform-origin: center center;\n}\n.suggestion-palette ul li svg path {\n fill: rgb(128, 154, 180);\n}\n\n@keyframes growIn {\n 0% {\n transform: scale(0.5);\n }\n 90% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n }\n}\nspan.code-count-1::after,\nspan.code-count-1::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n}\n\nspan.code-count-2::after,\nspan.code-count-2::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n /*background: repeating-linear-gradient(*/\n /*\t45deg,*/\n /*\tvar(--bg-code-color-1),*/\n /*\tvar(--bg-code-color-1) 10px,*/\n /*\tvar(--bg-code-color-2) 10px,*/\n /*\tvar(--bg-code-color-2) 20px*/\n /*);*/\n /* PAS STRIPES */\n background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);\n}\n\nspan.code-count-3::after,\nspan.code-count-3::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n background: repeating-linear-gradient(45deg, var(--bg-code-color-1), var(--bg-code-color-1) 10px, var(--bg-code-color-2) 10px, var(--bg-code-color-2) 20px);\n /* PAS STRIPES */\n /* background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);*/\n}\n\n.selected-option {\n padding: 2px;\n margin-right: 5px;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: auto;\n min-width: 100%;\n overflow-y: auto;\n padding: 2px;\n border-radius: 6px;\n}\n.options--subformView {\n top: 46px;\n min-width: unset;\n left: unset;\n right: 0;\n}\n\n.date-picker {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: 260px;\n overflow-y: auto;\n max-height: 280px;\n}\n\napp-date-picker {\n --app-primary: #084B83;\n --app-hover: #5b7da2;\n --app-selected-hover: #5b7da2;\n}\n\n.option {\n height: 28px;\n min-height: 28px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #545454;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n padding: 4px 8px;\n -webkit-user-select: none; /* Safari */\n -ms-user-select: none; /* IE 10 and IE 11 */\n user-select: none; /* Standard syntax */\n cursor: pointer;\n}\n.option:hover {\n color: #656565;\n background-color: #ededed;\n}\n\n.select-arrow {\n border: none;\n background: 0px 0px;\n position: relative;\n top: 0px;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n width: 10px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0px;\n}\n\n.hidden {\n display: none;\n}\n\n.container {\n position: relative;\n}\n\n.group {\n align-items: end;\n display: grid;\n}\n\n.subform {\n display: grid;\n position: relative;\n padding: 8px;\n border-radius: 6px;\n background-color: #e7f0fd;\n gap: 12px;\n}\n.subform__heading {\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: auto;\n}\n.subform__heading__title {\n padding: 0;\n margin: 0;\n}\n.subform__addBtn, .subform__removeBtn {\n cursor: pointer;\n background-color: #084B83;\n color: white;\n height: 32px;\n padding: 0 16px;\n border-radius: 6px;\n border: none;\n outline: none;\n}\n.subform__addBtn:hover, .subform__removeBtn:hover {\n background-color: #3D87C5;\n}\n.subform__removeBtn {\n justify-self: end;\n border: 1px solid #DDE3E7;\n background-color: #FCFCFD;\n color: #084B83;\n}\n.subform__removeBtn:hover {\n background-color: #F2F2F2;\n}\n.subform__child {\n display: grid;\n grid-template-rows: auto;\n gap: 8px;\n padding: 8px;\n border-radius: 6px;\n background: white;\n border: 1px solid #3D87C5;\n}\n.subform__child__title {\n padding: 12px !important;\n border-radius: 6px;\n margin: 0;\n background-color: #BFE8EA;\n}\n.subform__child .subform {\n background: unset;\n margin: 0;\n padding: 0;\n}\n\n.icure-form {\n background-color: rgba(0, 0, 0, 0);\n display: grid;\n gap: 16px 6px;\n grid-template-columns: repeat(24, 1fr);\n}\n.icure-form hr {\n display: block;\n margin-top: 20px;\n border-top: 1px solid rgba(8, 75, 131, 0.13);\n margin-bottom: 20px;\n}\n.icure-form h2 {\n font-size: add-two(12px, 0, 1.2);\n font-weight: 700;\n color: #084B83;\n padding: 2px;\n}\n.icure-form h3 {\n font-size: add-two(12px, 0, 1.1);\n font-weight: 500;\n color: #084B83;\n padding: 6px;\n}\n.icure-form .group.bordered {\n background: #f6f6f6;\n border-radius: 12px;\n}\n\n.icure-form-field {\n display: grid;\n align-items: flex-start;\n}\n\n.error {\n color: red;\n font-size: 12px;\n margin-top: 4px;\n}\n\n.icure-text-field .icure-label-extra, .icure-button-group .icure-label-extra {\n display: flex;\n width: 100%;\n gap: 12px;\n}\n.icure-text-field .icure-label, .icure-button-group .icure-label {\n z-index: 1;\n pointer-events: none;\n line-height: 1.4em;\n cursor: text;\n font-size: 12px;\n left: add-two(8px, 1px);\n color: #084B83;\n align-items: center;\n text-wrap: auto;\n min-height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-text-field .icure-label.float, .icure-button-group .icure-label.float {\n display: flex;\n overflow: hidden;\n}\n\n.icure-text-field {\n position: relative;\n width: 100%;\n}\n.icure-text-field > .icure-label {\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n}\n.icure-text-field > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-text-field > .icure-label.side {\n position: relative;\n}\n.icure-text-field > .icure-label.side.left {\n order: -1;\n margin-right: 1em;\n}\n.icure-text-field > .icure-label.side.right {\n order: 1;\n margin-left: 1em;\n}\n.icure-text-field .icure-input,\n.icure-text-field .input-container {\n padding: 8px;\n width: 100%;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n border-color: #DDE3E7;\n border-radius: 2px;\n outline: 0;\n font: inherit;\n font-size: 14px;\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 color: #000000;\n}\n.icure-text-field .icure-input .reset-button,\n.icure-text-field .input-container .reset-button {\n position: absolute;\n right: 0;\n border: none;\n background: transparent;\n top: 0;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.icure-text-field .icure-input .reset-button svg,\n.icure-text-field .input-container .reset-button svg {\n width: 15px;\n height: 15px;\n}\n.icure-text-field .icure-input__validationError,\n.icure-text-field .input-container__validationError {\n border-color: red;\n}\n.icure-text-field .icure-input__withMetadata,\n.icure-text-field .input-container__withMetadata {\n border-radius: 6px 0 0 6px;\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 {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input:hover,\n.icure-text-field .input-container:hover {\n border-color: rgba(0, 0, 0, 0.15);\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 {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input .ProseMirror,\n.icure-text-field .input-container .ProseMirror {\n padding: 0;\n font-size: 14px;\n line-height: 1.4em;\n color: #000000;\n}\n.icure-text-field .icure-input .ProseMirror .date,\n.icure-text-field .input-container .ProseMirror .date {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror .time,\n.icure-text-field .input-container .ProseMirror .time {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror:focus .focused,\n.icure-text-field .input-container .ProseMirror:focus .focused {\n background-color: rgba(0, 0, 0, 0.05);\n border-radius: 3px;\n border-color: rgba(0, 0, 0, 0.1);\n}\n.icure-text-field .icure-input > svg,\n.icure-text-field .input-container > svg {\n opacity: 0.5;\n}\n.icure-text-field .icure-input > svg path,\n.icure-text-field .input-container > svg path {\n fill: #656565;\n}\n.icure-text-field .icure-input .extra,\n.icure-text-field .input-container .extra {\n height: 20px;\n}\n.icure-text-field .icure-input .extra > .info,\n.icure-text-field .input-container .extra > .info {\n color: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path,\n.icure-text-field .input-container .extra .btn svg path {\n fill: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path:hover,\n.icure-text-field .input-container .extra .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:checked {\n accent-color: #06a070;\n}\n\n.icure-button {\n display: flex;\n height: 32px;\n padding: 0 16px;\n background-color: #084B83;\n color: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: normal;\n}\n.icure-button:hover {\n background-color: #3D87C5;\n}\n\n.icure-button-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.icure-button-group > div {\n display: grid;\n}\n.icure-button-group > div > div {\n display: flex;\n align-items: center;\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: 12px;\n top: add-three(1.4em, 1px, 0);\n left: add-two(8px, 1px);\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n color: #084B83;\n display: flex;\n align-items: center;\n height: 28px;\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.icure-button-group > .icure-label {\n transform: translate(0, 0) scale(1);\n}\n.icure-button-group > .icure-label.above, .icure-button-group.has-content > .icure-label, .icure-button-group:focus > .icure-label, .icure-button-group:focus-within > .icure-label {\n font-weight: 500;\n height: 1.4em;\n}` \n\nexport class MetadataButtonBar extends LitElement {\n\t@property() valueId: string\n\t@property() metadata: FieldMetadata\n\t@property() revision: string\n\t@property() versions: Version<FieldValue>[]\n\t@property() defaultLanguage: string\n\t@property() selectedLanguage?: string\n\t@property() languages: { [iso: string]: string } = {}\n\t@property() existingLanguages?: string[]\n\t@property() displayedLabels: { [iso: string]: string } = {}\n\t@property() handleReset?: () => void | undefined = undefined\n\t@property() handleMetadataChanged?: (metadata: FieldMetadata, id?: string) => string | undefined = undefined\n\t@property() handleLanguageSelected?: (iso?: string) => void = undefined\n\t@property() handleRevisionSelected?: (rev?: string | null) => void = undefined\n\t@property() ownersProvider: (terms: string[], ids?: string[], specialties?: string[]) => Promise<Suggestion[]> = async () => []\n\n\t@state() protected displayOwnersMenu = false\n\t@state() protected ownerInputValue = ''\n\t@state() protected availableOwners: Suggestion[] = []\n\t@state() protected loadedOwners: { [id: string]: Suggestion } = {}\n\n\t@state() protected displayLanguagesMenu = false\n\t@state() protected displayVersionsMenu = false\n\t@state() protected displayValueDateMenu = false\n\t@state() protected languageInputValue = ''\n\n\tstatic get styles() {\n\t\treturn [baseCss]\n\t}\n\n\t_handleClickOutside(event: MouseEvent): void {\n\t\tif (!event.composedPath().includes(this)) {\n\t\t\tthis.displayVersionsMenu = false\n\t\t\tthis.displayLanguagesMenu = false\n\t\t\tthis.displayOwnersMenu = false\n\t\t\tthis.displayValueDateMenu = false\n\t\t\tevent.stopPropagation()\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tdocument.addEventListener('click', this._handleClickOutside.bind(this))\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tdocument.removeEventListener('click', this._handleClickOutside.bind(this))\n\t}\n\n\trender() {\n\t\tconst revisionDate = this.versions.find((x) => x.revision === this.revision)?.modified\n\n\t\tconst owner = this.metadata?.owner\n\t\tif (owner && !this.loadedOwners[owner]) {\n\t\t\tthis.loadedOwners = { ...this.loadedOwners, [owner]: { id: owner, text: '', terms: [], label: {} } } // Make sure we do not loop endlessly\n\t\t\tthis.ownersProvider && this.ownersProvider([], [owner]).then((availableOwners) => (this.loadedOwners = availableOwners.reduce((acc, o) => ({ ...acc, [o.id]: o }), this.loadedOwners)))\n\t\t}\n\n\t\tconst forcedByMenu = this.displayOwnersMenu || this.displayLanguagesMenu || this.displayValueDateMenu || this.displayVersionsMenu\n\n\t\tconst discordantMetadata = this.metadata?.discordantMetadata?.()\n\n\t\tconst forcedByOwner = discordantMetadata?.owner !== undefined\n\t\tconst forcedByValueDate = discordantMetadata?.valueDate !== undefined\n\t\tconst forcedByLanguage = this.selectedLanguage && this.defaultLanguage !== this.selectedLanguage\n\t\tconst forcedByVersion = this.revision && this.revision !== this.versions?.[0]?.revision\n\n\t\tconsole.log('handle reset', this.handleReset)\n\n\t\treturn html` <div id=\"extra\" class=${'extra extra--metadataButtonsBar' + (forcedByMenu ? ' forced' : '')}>\n\t\t\t<div class=\"info ${forcedByOwner || forcedByLanguage || forcedByValueDate ? 'hidden' : ''}\">ⓘ</div>\n\t\t\t<div class=\"buttons-container\">\n\t\t\t\t${this.handleReset ? html`<button @click=\"${() => this.handleReset?.()}\" class=\"btn forced\">${resetPicto}</button>` : nothing}\n\t\t\t\t<div class=\"menu-container\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-content=\"${(this.metadata?.owner ? this.loadedOwners[this.metadata?.owner]?.text : '') ?? ''}\"\n\t\t\t\t\t\t@click=\"${() => this.toggleOwnersMenu(this.metadata?.owner)}\"\n\t\t\t\t\t\tclass=\"btn menu-trigger author ${forcedByOwner ? 'forced' : ''}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${ownerPicto}\n\t\t\t\t\t</button>\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.displayOwnersMenu\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div id=\"menu\" class=\"menu\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-container\">${searchPicto} <input id=\"ownerSearch\" @input=\"${this.searchOwner}\" /></div>\n\t\t\t\t\t\t\t\t\t\t${(this.availableOwners?.length ? this.availableOwners : Object.values(this.loadedOwners))?.map(\n\t\t\t\t\t\t\t\t\t\t\t(x) => html` <button\n\t\t\t\t\t\t\t\t\t\t\t\t@click=\"${() => this.handleOwnerButtonClicked(x.id)}\"\n\t\t\t\t\t\t\t\t\t\t\t\tid=\"${x.id}\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"${this.metadata?.owner && this.loadedOwners[this.metadata?.owner]?.text === x.text ? 'item selected' : 'item'}\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${x.text}\n\t\t\t\t\t\t\t\t\t\t\t</button>`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"menu-container\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-content=\"${this.metadata?.valueDate ? format(anyDateToDate(this.metadata.valueDate)!, 'yyyy-MM-dd HH:mm:ss').replace(/ 00:00:00$/, '') : ''}\"\n\t\t\t\t\t\tclass=\"btn date ${forcedByValueDate ? 'forced' : ''}\"\n\t\t\t\t\t\t@click=\"${() => this.toggleValueDateMenu()}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${calendarPatientPicto}\n\t\t\t\t\t</button>\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.displayValueDateMenu\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div id=\"menu\" class=\"menu value-date-menu\">\n\t\t\t\t\t\t\t\t\t\t<app-date-picker locale=\"${this.defaultLanguage ?? 'en'}\" style=\"\" max=\"${MAX_DATE}\" min=\"${toResolvedDate('1900-01-01')}\" @date-updated=\"${this.dateUpdated}\"></app-date-picker>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"menu-container\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-content=\"${this.revision === null ? 'latest' : this.revision ? `rev-${this.revision.split('-')[0]} ${revisionDate ? `(${format(new Date(revisionDate), 'yyyy-MM-dd')})` : ''}` : ''}\"\n\t\t\t\t\t\t@click=\"${this.toggleVersionsMenu}\"\n\t\t\t\t\t\tclass=\"btn version ${forcedByVersion ? 'forced' : ''}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${versionPicto}\n\t\t\t\t\t</button>\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.displayVersionsMenu\n\t\t\t\t\t\t\t? html` <div id=\"menu\" class=\"menu\">\n\t\t\t\t\t\t\t\t\t${this.versions.map(\n\t\t\t\t\t\t\t\t\t\t(x) =>\n\t\t\t\t\t\t\t\t\t\t\thtml` <button class=\"item ${x.revision === this.revision ? 'item selected' : ''}\" @click=\"${() => this.handleRevisionButtonClicked(x.revision)}\">\n\t\t\t\t\t\t\t\t\t\t\t\t${x.revision == null ? 'Latest' : x.revision ?? ''} ${x.modified ? `(${format(new Date(x.modified), 'yyyy-MM-dd')})` : ''}\n\t\t\t\t\t\t\t\t\t\t\t</button>`,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t </div>`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"menu-container\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-content=\"${this.selectedLanguage ? languageName(this.selectedLanguage) ?? this.selectedLanguage : languageName(this.defaultLanguage) ?? this.defaultLanguage}\"\n\t\t\t\t\t\t@click=\"${this.toggleLanguagesMenu}\"\n\t\t\t\t\t\tclass=\"btn menu-trigger language ${forcedByLanguage ? 'forced' : ''}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${i18nPicto}\n\t\t\t\t\t</button>\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.displayLanguagesMenu\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div id=\"menu\" class=\"menu\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-container\">${searchPicto} <input id=\"languageSearch\" @input=\"${this.searchLanguage}\" /></div>\n\t\t\t\t\t\t\t\t\t\t${[this.defaultLanguage, ...Object.keys(this.languages).filter((x) => x !== this.defaultLanguage)]\n\t\t\t\t\t\t\t\t\t\t\t.filter((x) => !!x && (languageName(x) ?? this.languages[x] ?? x).toLowerCase().includes((this.languageInputValue ?? '').toLowerCase()))\n\t\t\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(x) => html` <button\n\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"${() => this.handleLanguageButtonClicked(x)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tid=\"${x}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"${(x === this.defaultLanguage && !this.selectedLanguage) || x === this.selectedLanguage\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'item item selected'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: this.existingLanguages?.includes(x)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'item item existing'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'item'}\"\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\t\t${x ? languageName(x) : ''}\n\t\t\t\t\t\t\t\t\t\t\t\t</button>`,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>`\n\t}\n\n\ttoggleOwnersMenu(ownerId?: string) {\n\t\tthis.displayOwnersMenu = !this.displayOwnersMenu\n\t\tif (this.displayOwnersMenu) {\n\t\t\tthis.displayLanguagesMenu = false\n\t\t\tthis.displayVersionsMenu = false\n\t\t\tthis.displayValueDateMenu = false\n\n\t\t\tsetTimeout(() => {\n\t\t\t\t;(this.renderRoot.querySelector('#ownerSearch') as HTMLInputElement)?.focus()\n\t\t\t}, 0)\n\t\t}\n\t}\n\n\tsearchOwner(e: InputEvent) {\n\t\tconst text = (e.target as HTMLInputElement).value\n\t\tsetTimeout(async () => {\n\t\t\tif ((this.renderRoot.querySelector('#ownerSearch') as HTMLInputElement)?.value === text) {\n\t\t\t\tif (this.ownersProvider) {\n\t\t\t\t\tconst availableOwners = await this.ownersProvider(text.split(' '))\n\t\t\t\t\tconsole.log(availableOwners)\n\t\t\t\t\tthis.availableOwners = availableOwners\n\t\t\t\t}\n\t\t\t}\n\t\t}, 300)\n\t}\n\n\tsearchLanguage(e: InputEvent) {\n\t\tthis.languageInputValue = (e.target as HTMLInputElement).value\n\t}\n\n\thandleOwnerButtonClicked(id: string) {\n\t\tconst valueId = this.valueId\n\t\tthis.handleMetadataChanged && valueId && this.handleMetadataChanged({ label: this.metadata.label, owner: id })\n\t\tthis.displayOwnersMenu = false\n\t}\n\n\thandleLanguageButtonClicked(id: string) {\n\t\tthis.handleLanguageSelected?.(id)\n\t\tthis.displayOwnersMenu = false\n\t}\n\n\thandleRevisionButtonClicked(rev?: string | null) {\n\t\tthis.handleRevisionSelected?.(rev)\n\t\tthis.displayVersionsMenu = false\n\t}\n\n\ttoggleValueDateMenu() {\n\t\tthis.displayValueDateMenu = !this.displayValueDateMenu\n\t\tif (this.displayValueDateMenu) {\n\t\t\tthis.displayOwnersMenu = false\n\t\t\tthis.displayLanguagesMenu = false\n\t\t\tthis.displayVersionsMenu = false\n\t\t}\n\t}\n\n\tdateUpdated(date: CustomEventDetail['date-updated']): void {\n\t\tconst parts = date.detail.value?.split('-')\n\t\tif (parts && parts.length === 3) {\n\t\t\tconst fuzzyDateValue = parseInt(parts[0]) * 10000 + parseInt(parts[1]) * 100 + parseInt(parts[2])\n\t\t\tconst valueId = this.valueId\n\t\t\tthis.handleMetadataChanged && this.handleMetadataChanged({ label: this.metadata.label, valueDate: fuzzyDateValue * 1000000 }, valueId)\n\t\t\tthis.displayOwnersMenu = false\n\t\t}\n\t}\n\n\ttoggleLanguagesMenu() {\n\t\tthis.displayLanguagesMenu = !this.displayLanguagesMenu\n\t\tif (this.displayLanguagesMenu) {\n\t\t\tthis.displayOwnersMenu = false\n\t\t\tthis.displayVersionsMenu = false\n\t\t\tthis.displayValueDateMenu = false\n\t\t}\n\t}\n\n\ttoggleVersionsMenu() {\n\t\tthis.displayVersionsMenu = !this.displayVersionsMenu\n\t\tif (this.displayVersionsMenu) {\n\t\t\tthis.displayOwnersMenu = false\n\t\t\tthis.displayLanguagesMenu = false\n\t\t\tthis.displayValueDateMenu = false\n\t\t}\n\t}\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CSSResultGroup, TemplateResult } from 'lit';
|
|
2
|
-
import '@icure/motss-app-datepicker';
|
|
3
|
-
import { CustomEventDetail } from '@icure/motss-app-datepicker/dist/typings';
|
|
2
|
+
import '@icure/motss-app-datepicker.js';
|
|
3
|
+
import { CustomEventDetail } from '@icure/motss-app-datepicker/dist/typings.js';
|
|
4
4
|
import { Field } from '../common';
|
|
5
5
|
import { FieldMetadata } from '../model';
|
|
6
6
|
export declare class IcureDatePickerField extends Field {
|
|
@@ -10,9 +10,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
import { html, nothing } from 'lit';
|
|
11
11
|
import { generateLabels } from '../common/utils';
|
|
12
12
|
import { property, state } from 'lit/decorators.js';
|
|
13
|
-
import '@icure/motss-app-datepicker';
|
|
14
|
-
import { MAX_DATE } from '@icure/motss-app-datepicker/dist/constants';
|
|
15
|
-
import { toResolvedDate } from '@icure/motss-app-datepicker/dist/helpers/to-resolved-date';
|
|
13
|
+
import '@icure/motss-app-datepicker.js';
|
|
14
|
+
import { MAX_DATE } from '@icure/motss-app-datepicker/dist/constants.js';
|
|
15
|
+
import { toResolvedDate } from '@icure/motss-app-datepicker/dist/helpers/to-resolved-date.js';
|
|
16
16
|
import { Field } from '../common';
|
|
17
17
|
import { datePicto } from '../common/styles/paths';
|
|
18
18
|
import { extractSingleValue } from '../icure-form/fields/utils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../tmp/components/icure-date-picker/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAkB,IAAI,EAAE,OAAO,EAAkB,MAAM,KAAK,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,6BAA6B,CAAA;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,2DAA2D,CAAA;AAC1F,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,aAAa;AACb,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,OAAO,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgmCjB,CAAA;AACF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9C,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAA/C;;QACC,sCAAsC;QAC1B,gBAAW,GAAG,EAAE,CAAA;QAET,sBAAiB,GAAG,KAAK,CAAA;IA8F7C,CAAC;IA5FA,MAAM,KAAK,MAAM;QAChB,OAAO,CAAC,OAAO,CAAC,CAAA;IACjB,CAAC;IAED,mBAAmB,CAAC,KAAiB;QACpC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;YAC9B,KAAK,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;IACF,CAAC;IAED,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAA;QACzB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACxE,CAAC;IAED,oBAAoB;QACnB,KAAK,CAAC,oBAAoB,EAAE,CAAA;QAC5B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3E,CAAC;IAED,oBAAoB;;QACnB,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,kBAAkB,CAAC,MAAA,IAAI,CAAC,aAAa,oDAAI,CAAC,CAAA;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,MAAA,MAAA,QAAQ,CAAC,CAAC,CAAC,0CAAE,KAAK,0CAAE,OAAO,CAAA;YAC3C,MAAM,gBAAgB,GAAG,MAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,mCAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,IAAI,CAAC,eAAe,CAAC,mCAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,GAAG,CAAC,mCAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9I,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,WAAW,IAAI,gBAAgB,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBACnI,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;gBAClD,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAC9C,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAA;IACjB,CAAC;IAEQ,UAAU,CAAC,EAAE,gBAAgB,EAAmD;;QACxF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA,EAAE,CAAA;QACd,CAAC;QAED,IAAI,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACzC,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAA;QAE/C,OAAO,IAAI,CAAA,2CAA2C,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,uBAAuB,IAAI,CAAC,WAAW;KACnI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO;6BACrH,eAAe,IAAI,8BAA8B,aAAa,IAAI,CAAC,WAAW;uBACpF,KAAK;4BACA,cAAc;wCACF,SAAS;OAC1C,IAAI,CAAC,iBAAiB;YACvB,CAAC,CAAC,IAAI,CAAA,8CAA8C,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE;;mBAEhF,MAAA,MAAA,IAAI,CAAC,gBAAgB,mCAAI,IAAI,CAAC,eAAe,mCAAI,IAAI;;gBAExD,QAAQ;gBACR,cAAc,CAAC,YAAY,CAAC;0BAClB,IAAI,CAAC,WAAW;;eAE3B;YACT,CAAC,CAAC,EAAE;;yBAEe,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,WAAC,OAAA,IAAI,CAAA,QAAQ,MAAA,IAAI,CAAC,mBAAmB,qDAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAA,EAAA,CAAC;;SAE3H,CAAA;IACR,CAAC;IAEM,WAAW,CAAC,IAAuC;;QACzD,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,0CAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAEjG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAA,IAAI,CAAC,oBAAoB,EAAE,mCAAI,EAAE,CAAA;YACnD,MAAA,IAAI,CAAC,kBAAkB,qDACtB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,EAAE,EACf;gBACC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;aAC3E,EACD,OAAO,CACP,CAAA;QACF,CAAC;IACF,CAAC;IAEM,WAAW;QACjB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,OAAM;QACP,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAA;IACjD,CAAC;CACD;AAhGY;IAAX,QAAQ,EAAE;;yDAAiB;AAET;IAAlB,KAAK,EAAE;;+DAAoC","sourcesContent":["import { CSSResultGroup, html, nothing, TemplateResult } from 'lit'\nimport { generateLabels } from '../common/utils'\nimport { property, state } from 'lit/decorators.js'\nimport '@icure/motss-app-datepicker'\nimport { CustomEventDetail } from '@icure/motss-app-datepicker/dist/typings'\nimport { MAX_DATE } from '@icure/motss-app-datepicker/dist/constants'\nimport { toResolvedDate } from '@icure/motss-app-datepicker/dist/helpers/to-resolved-date'\nimport { Field } from '../common'\nimport { datePicto } from '../common/styles/paths'\nimport { extractSingleValue } from '../icure-form/fields/utils'\nimport { format } from 'date-fns'\n// @ts-ignore\nimport { css } from 'lit';\nconst baseCss = css`@charset \"UTF-8\";\n.tab-container .tab-bar li {\n display: inline-block;\n padding: 8px 16px;\n cursor: pointer;\n color: #000000;\n font-size: 14px;\n font-weight: 500;\n}\n.tab-container .tab-bar li.active {\n background-color: #656565;\n color: white;\n}\n.tab-container .tab-content .tab {\n display: none;\n}\n.tab-container .tab-content .tab.active {\n display: block;\n}\n\n:host {\n --bg-color-1: #f44336;\n}\n\n.ProseMirror {\n position: relative;\n width: 100%;\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n padding: 6px 8px 2px 8px;\n line-height: 1.2;\n color: #274768;\n font-size: 14px;\n font-weight: 400;\n outline: none;\n}\n.ProseMirror p:last-child,\n.ProseMirror h1:last-child,\n.ProseMirror h2:last-child,\n.ProseMirror h3:last-child,\n.ProseMirror h4:last-child,\n.ProseMirror h5:last-child,\n.ProseMirror h6:last-child {\n margin-bottom: 2px;\n}\n.ProseMirror p {\n margin-bottom: 1em;\n}\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n.ProseMirror li {\n position: relative;\n}\n.ProseMirror ul,\n.ProseMirror ol {\n padding-left: 30px;\n}\n.ProseMirror blockquote {\n padding-left: 1em;\n border-left: 3px solid #eee;\n margin-left: 0;\n margin-right: 0;\n}\n\n.ProseMirror-hideselection {\n caret-color: transparent;\n}\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf;\n}\n\n/* Make sure li selections wrap around markers */\nli.ProseMirror-selectednode {\n outline: none;\n}\nli.ProseMirror-selectednode :after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n/* Add space around the hr to make clicking it easier */\n.ProseMirror-example-setup-style hr {\n padding: 2px 10px;\n border: none;\n margin: 1em 0;\n}\n.ProseMirror-example-setup-style hr:after {\n content: \"\";\n display: block;\n height: 1px;\n background: silver;\n line-height: 2px;\n}\n\n.ProseMirror-example-setup-style img {\n cursor: default;\n}\n\n.ProseMirror-prompt {\n background: white;\n padding: 5px 10px 5px 15px;\n border: 1px solid silver;\n position: fixed;\n border-radius: 3px;\n z-index: 11;\n box-shadow: -0.5px 2px 5px rgba(0, 0, 0, 0.2);\n}\n.ProseMirror-prompt h5 {\n margin: 0;\n font-weight: normal;\n font-size: 100%;\n color: #444;\n}\n.ProseMirror-prompt input[type=text],\n.ProseMirror-prompt textarea {\n background: #eee;\n border: none;\n outline: none;\n}\n.ProseMirror-prompt input[type=text] {\n padding: 0 4px;\n}\n\n.ProseMirror-prompt-close {\n position: absolute;\n left: 2px;\n top: 1px;\n color: #666;\n border: none;\n background: transparent;\n padding: 0;\n}\n.ProseMirror-prompt-close:after {\n content: \"✕\";\n font-size: 12px;\n}\n\n.ProseMirror-invalid {\n background: #ffc;\n border: 1px solid #cc7;\n border-radius: 4px;\n padding: 5px 10px;\n position: absolute;\n min-width: 10em;\n}\n\n.ProseMirror-prompt-buttons {\n margin-top: 5px;\n display: none;\n}\n\n#editor,\n.editor {\n color: rgb(101, 101, 101);\n background-clip: padding-box;\n border-radius: 4px;\n border: 2px solid rgba(0, 0, 0, 0.2);\n padding: 5px 0;\n display: flex;\n align-items: flex-end;\n}\n\n.icure-input {\n background: #edf2f7;\n border-radius: 8px;\n border: none;\n min-height: 28px;\n height: auto;\n display: flex;\n flex-flow: row nowrap;\n align-items: flex-start;\n justify-content: space-between;\n}\n\n#editor {\n background: transparent;\n border: none;\n padding: 0;\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n#editor.tokens-list .ProseMirror, #editor.styled-tokens-list .ProseMirror {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n}\n#editor.tokens-list .ProseMirror li, #editor.styled-tokens-list .ProseMirror li {\n display: flex;\n flex-direction: row;\n border-radius: 8px;\n padding: 2px 4px;\n margin-right: 2px;\n background-color: #dadada;\n border-color: rgba(42, 61, 108, 0.44);\n min-height: 20px;\n}\n#editor.tokens-list .ProseMirror li span, #editor.styled-tokens-list .ProseMirror li span {\n display: inline-block;\n min-height: 18px;\n}\n#editor.tokens-list .ProseMirror li span br, #editor.styled-tokens-list .ProseMirror li span br {\n display: none;\n}\n#editor.items-list .ProseMirror {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: flex-start;\n gap: 6px;\n}\n#editor.items-list .ProseMirror li {\n list-style-type: none;\n width: 100%;\n padding-bottom: 4px;\n border-bottom: 1px dotted rgba(128, 128, 128, 0.5098039216);\n}\n#editor.items-list .ProseMirror li:last-child {\n border-bottom: none;\n}\n\n#content {\n position: relative;\n padding: 0;\n}\n\n* {\n font-family: \"Roboto\", Helvetica, sans-serif;\n}\n\np {\n margin-top: 0;\n}\n\nh3 {\n color: #274768;\n margin-top: 0;\n}\n\n.icure-input-metadata-container {\n display: flex;\n}\n.icure-input-metadata-container .icure-metadata-container {\n display: flex;\n flex-grow: 1;\n padding: 0 4px;\n border: 1px solid #DDE3E7;\n border-left: none;\n border-radius: 0 6px 6px 0;\n outline: 0;\n box-sizing: border-box;\n}\n.icure-input-metadata-container .icure-metadata-container__validationError {\n border-color: red;\n}\n\n.extra {\n min-width: 20px;\n width: auto;\n height: 20px;\n transition: all 0.24s cubic-bezier(0.42, 0.01, 1, 0.62);\n}\n.extra:hover .info {\n display: none;\n}\n.extra:hover .buttons-container .menu-container .btn {\n animation: slideIn 0.24s ease-in forwards;\n pointer-events: none;\n display: unset !important;\n}\n.extra.forced .info, .extra.forced .extra .info.hidden {\n opacity: 0 !important;\n z-index: 0 !important;\n display: none;\n}\n.extra.forced .buttons-container .btn {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra.forced:hover .buttons-container .menu-container .btn {\n animation: none;\n pointer-events: all;\n}\n.extra--metadataButtonsBar {\n height: 100%;\n display: flex;\n align-items: center;\n padding: 0 4px;\n}\n.extra .info {\n color: #809ab4;\n font-size: 15px;\n width: 100%;\n height: auto;\n overflow: hidden;\n pointer-events: none;\n text-align: center;\n}\n.extra .info span {\n font-weight: 700;\n}\n.extra .info.hidden {\n display: none;\n}\n.extra .buttons-container {\n display: flex;\n height: 20px;\n width: auto;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-end;\n transition: all 0.24s cubic-bezier(0.14, 0.69, 0.87, 0.54);\n z-index: 1000;\n}\n.extra .buttons-container .btn {\n border: none;\n background: transparent;\n position: relative;\n top: 0;\n display: none;\n opacity: 0;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.extra .buttons-container .btn svg {\n width: 15px;\n height: 15px;\n}\n.extra .buttons-container .btn svg path {\n fill: #809ab4;\n}\n.extra .buttons-container .btn.forced {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra .buttons-container .btn.forced svg path {\n fill: crimson !important;\n}\n.extra .buttons-container .btn:focus, .extra .buttons-container .btn:focus-within {\n border: none;\n outline: none;\n}\n.extra .buttons-container .btn:hover svg path {\n fill: #274768;\n}\n.extra .buttons-container .menu-container .btn:hover::before {\n content: \"\";\n display: block;\n border-color: #274768 transparent transparent transparent;\n border-style: solid;\n border-width: 4px;\n position: absolute;\n top: -6px;\n}\n.extra .buttons-container .menu-container .btn:hover::after {\n content: attr(data-content);\n position: absolute;\n top: -21px;\n height: 16px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n background: #274768;\n color: white;\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n text-transform: capitalize;\n white-space: nowrap;\n padding: 0 12px;\n font-size: 12px;\n line-height: 0;\n}\n.extra .buttons-container .menu-container:last-child .btn {\n margin-right: 0;\n}\n\n@keyframes slideIn {\n 0% {\n top: 0;\n opacity: 0;\n pointer-events: none;\n }\n 100% {\n top: 0;\n opacity: 1;\n pointer-events: all;\n }\n}\n.menu-container {\n display: flex;\n align-items: center;\n height: fit-content;\n}\n.menu-container .item {\n height: 30px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #274768;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n}\n.menu-container .item.existing {\n background-color: #BFE8EA;\n}\n.menu-container .item.selected {\n color: white;\n background-color: #084B83;\n}\n.menu-container .item:hover {\n background: #DCE7F2;\n color: #274768;\n font-weight: 500;\n border-radius: 4px;\n}\n\n.value-date-menu {\n width: unset !important;\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n gap: 2px;\n position: absolute;\n top: 32px;\n right: -12px;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n border-radius: 8px;\n padding: 8px;\n width: 220px;\n min-height: 120px;\n max-height: 320px;\n overflow-y: scroll;\n}\n.menu .input-container {\n background: #edf2f7;\n border-radius: 4px;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n height: 32px;\n margin-bottom: 4px;\n padding: 0 4px;\n}\n.menu .input-container:hover {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2);\n}\n.menu .input-container:focus-within {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2), 0 0 0 1px rgb(40, 151, 255);\n}\n.menu .input-container input {\n background: transparent;\n border: none;\n flex-grow: 1;\n height: 100%;\n}\n.menu .input-container input:focus {\n background: transparent;\n border: none;\n outline: none;\n}\n\n.menu-trigger:focus .menu {\n display: flex;\n}\n\nspan {\n position: relative;\n z-index: 1;\n}\nspan.date {\n margin-right: 1px;\n}\nspan.time {\n margin-left: 1px;\n}\nspan.measure {\n display: inline-block;\n margin-right: 1px;\n}\nspan.unit {\n margin-left: 1px;\n display: inline-block;\n}\nspan[data-content]:hover::after {\n position: absolute;\n content: attr(data-content);\n background: #274768;\n color: #ffffff;\n font-size: 9px;\n line-height: 12px;\n top: -12px;\n left: 0px;\n padding: 0px 2px;\n}\nspan[data-content]::before {\n position: absolute;\n content: \"\";\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n opacity: 0.3;\n}\n\n.masked {\n display: none;\n}\n\n.companion {\n position: absolute;\n width: 15px;\n background-color: hsl(194, 100%, 50%);\n color: white;\n z-index: 20;\n padding: 0;\n text-align: center;\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 0 2px 2px 0;\n}\n.companion:hover {\n font-weight: 700;\n background: hsl(202, 100%, 50%);\n}\n\n*::selection {\n background-color: hsla(194, 100%, 50%, 0.2);\n}\n\n.suggestion-palette {\n position: absolute;\n z-index: 20;\n max-width: 380px;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 4px;\n border: none;\n border-radius: 8px;\n background: white;\n box-shadow: 0 1.1px 1.1px rgba(0, 0, 0, 0.022), 0 2.7px 2.7px rgba(0, 0, 0, 0.032), 0 5px 5px rgba(0, 0, 0, 0.04), 0 8.9px 8.9px rgba(0, 0, 0, 0.048), 0 16.7px 16.7px rgba(0, 0, 0, 0.058), 0 40px 40px rgba(0, 0, 0, 0.08);\n}\n.suggestion-palette ul {\n white-space: nowrap;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.suggestion-palette ul li:not(:first-child) svg.tab-icn,\n.suggestion-palette ul li:not(.focused) svg.return-icn, .suggestion-palette ul.focused li:first-child svg.tab-icn {\n height: 0;\n width: 0;\n transform: scale(0);\n opacity: 0;\n}\n.suggestion-palette ul li {\n padding: 0 8px;\n font-size: 11px;\n height: 20px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 4px;\n color: rgb(39, 71, 104);\n}\n.suggestion-palette ul li.focused {\n background-color: rgb(237, 242, 247);\n}\n.suggestion-palette ul li.focused svg.return-icn {\n animation: growIn 0.24s ease-in forwards;\n}\n.suggestion-palette ul li svg {\n height: 12px;\n width: 12px;\n border-radius: 4px;\n transform-origin: center center;\n}\n.suggestion-palette ul li svg path {\n fill: rgb(128, 154, 180);\n}\n\n@keyframes growIn {\n 0% {\n transform: scale(0.5);\n }\n 90% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n }\n}\nspan.code-count-1::after,\nspan.code-count-1::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n}\n\nspan.code-count-2::after,\nspan.code-count-2::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n /*background: repeating-linear-gradient(*/\n /*\t45deg,*/\n /*\tvar(--bg-code-color-1),*/\n /*\tvar(--bg-code-color-1) 10px,*/\n /*\tvar(--bg-code-color-2) 10px,*/\n /*\tvar(--bg-code-color-2) 20px*/\n /*);*/\n /* PAS STRIPES */\n background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);\n}\n\nspan.code-count-3::after,\nspan.code-count-3::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n background: repeating-linear-gradient(45deg, var(--bg-code-color-1), var(--bg-code-color-1) 10px, var(--bg-code-color-2) 10px, var(--bg-code-color-2) 20px);\n /* PAS STRIPES */\n /* background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);*/\n}\n\n.selected-option {\n padding: 2px;\n margin-right: 5px;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: auto;\n min-width: 100%;\n overflow-y: auto;\n padding: 2px;\n border-radius: 6px;\n}\n.options--subformView {\n top: 46px;\n min-width: unset;\n left: unset;\n right: 0;\n}\n\n.date-picker {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: 260px;\n overflow-y: auto;\n max-height: 280px;\n}\n\napp-date-picker {\n --app-primary: #084B83;\n --app-hover: #5b7da2;\n --app-selected-hover: #5b7da2;\n}\n\n.option {\n height: 28px;\n min-height: 28px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #545454;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n padding: 4px 8px;\n -webkit-user-select: none; /* Safari */\n -ms-user-select: none; /* IE 10 and IE 11 */\n user-select: none; /* Standard syntax */\n cursor: pointer;\n}\n.option:hover {\n color: #656565;\n background-color: #ededed;\n}\n\n.select-arrow {\n border: none;\n background: 0px 0px;\n position: relative;\n top: 0px;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n width: 10px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0px;\n}\n\n.hidden {\n display: none;\n}\n\n.container {\n position: relative;\n}\n\n.group {\n align-items: end;\n display: grid;\n}\n\n.subform {\n display: grid;\n position: relative;\n padding: 8px;\n border-radius: 6px;\n background-color: #e7f0fd;\n gap: 12px;\n}\n.subform__heading {\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: auto;\n}\n.subform__heading__title {\n padding: 0;\n margin: 0;\n}\n.subform__addBtn, .subform__removeBtn {\n cursor: pointer;\n background-color: #084B83;\n color: white;\n height: 32px;\n padding: 0 16px;\n border-radius: 6px;\n border: none;\n outline: none;\n}\n.subform__addBtn:hover, .subform__removeBtn:hover {\n background-color: #3D87C5;\n}\n.subform__removeBtn {\n justify-self: end;\n border: 1px solid #DDE3E7;\n background-color: #FCFCFD;\n color: #084B83;\n}\n.subform__removeBtn:hover {\n background-color: #F2F2F2;\n}\n.subform__child {\n display: grid;\n grid-template-rows: auto;\n gap: 8px;\n padding: 8px;\n border-radius: 6px;\n background: white;\n border: 1px solid #3D87C5;\n}\n.subform__child__title {\n padding: 12px !important;\n border-radius: 6px;\n margin: 0;\n background-color: #BFE8EA;\n}\n.subform__child .subform {\n background: unset;\n margin: 0;\n padding: 0;\n}\n\n.icure-form {\n background-color: rgba(0, 0, 0, 0);\n display: grid;\n gap: 16px 6px;\n grid-template-columns: repeat(24, 1fr);\n}\n.icure-form hr {\n display: block;\n margin-top: 20px;\n border-top: 1px solid rgba(8, 75, 131, 0.13);\n margin-bottom: 20px;\n}\n.icure-form h2 {\n font-size: add-two(12px, 0, 1.2);\n font-weight: 700;\n color: #084B83;\n padding: 2px;\n}\n.icure-form h3 {\n font-size: add-two(12px, 0, 1.1);\n font-weight: 500;\n color: #084B83;\n padding: 6px;\n}\n.icure-form .group.bordered {\n background: #f6f6f6;\n border-radius: 12px;\n}\n\n.icure-form-field {\n display: grid;\n align-items: flex-start;\n}\n\n.error {\n color: red;\n font-size: 12px;\n margin-top: 4px;\n}\n\n.icure-text-field .icure-label-extra, .icure-button-group .icure-label-extra {\n display: flex;\n width: 100%;\n gap: 12px;\n}\n.icure-text-field .icure-label, .icure-button-group .icure-label {\n z-index: 1;\n pointer-events: none;\n line-height: 1.4em;\n cursor: text;\n font-size: 12px;\n left: add-two(8px, 1px);\n color: #084B83;\n align-items: center;\n text-wrap: auto;\n min-height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-text-field .icure-label.float, .icure-button-group .icure-label.float {\n display: flex;\n overflow: hidden;\n}\n\n.icure-text-field {\n position: relative;\n width: 100%;\n}\n.icure-text-field > .icure-label {\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n}\n.icure-text-field > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-text-field > .icure-label.side {\n position: relative;\n}\n.icure-text-field > .icure-label.side.left {\n order: -1;\n margin-right: 1em;\n}\n.icure-text-field > .icure-label.side.right {\n order: 1;\n margin-left: 1em;\n}\n.icure-text-field .icure-input,\n.icure-text-field .input-container {\n padding: 8px;\n width: 100%;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n border-color: #DDE3E7;\n border-radius: 2px;\n outline: 0;\n font: inherit;\n font-size: 14px;\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 color: #000000;\n}\n.icure-text-field .icure-input .reset-button,\n.icure-text-field .input-container .reset-button {\n position: absolute;\n right: 0;\n border: none;\n background: transparent;\n top: 0;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.icure-text-field .icure-input .reset-button svg,\n.icure-text-field .input-container .reset-button svg {\n width: 15px;\n height: 15px;\n}\n.icure-text-field .icure-input__validationError,\n.icure-text-field .input-container__validationError {\n border-color: red;\n}\n.icure-text-field .icure-input__withMetadata,\n.icure-text-field .input-container__withMetadata {\n border-radius: 6px 0 0 6px;\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 {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input:hover,\n.icure-text-field .input-container:hover {\n border-color: rgba(0, 0, 0, 0.15);\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 {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input .ProseMirror,\n.icure-text-field .input-container .ProseMirror {\n padding: 0;\n font-size: 14px;\n line-height: 1.4em;\n color: #000000;\n}\n.icure-text-field .icure-input .ProseMirror .date,\n.icure-text-field .input-container .ProseMirror .date {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror .time,\n.icure-text-field .input-container .ProseMirror .time {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror:focus .focused,\n.icure-text-field .input-container .ProseMirror:focus .focused {\n background-color: rgba(0, 0, 0, 0.05);\n border-radius: 3px;\n border-color: rgba(0, 0, 0, 0.1);\n}\n.icure-text-field .icure-input > svg,\n.icure-text-field .input-container > svg {\n opacity: 0.5;\n}\n.icure-text-field .icure-input > svg path,\n.icure-text-field .input-container > svg path {\n fill: #656565;\n}\n.icure-text-field .icure-input .extra,\n.icure-text-field .input-container .extra {\n height: 20px;\n}\n.icure-text-field .icure-input .extra > .info,\n.icure-text-field .input-container .extra > .info {\n color: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path,\n.icure-text-field .input-container .extra .btn svg path {\n fill: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path:hover,\n.icure-text-field .input-container .extra .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:checked {\n accent-color: #06a070;\n}\n\n.icure-button {\n display: flex;\n height: 32px;\n padding: 0 16px;\n background-color: #084B83;\n color: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: normal;\n}\n.icure-button:hover {\n background-color: #3D87C5;\n}\n\n.icure-button-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.icure-button-group > div {\n display: grid;\n}\n.icure-button-group > div > div {\n display: flex;\n align-items: center;\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: 12px;\n top: add-three(1.4em, 1px, 0);\n left: add-two(8px, 1px);\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n color: #084B83;\n display: flex;\n align-items: center;\n height: 28px;\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.icure-button-group > .icure-label {\n transform: translate(0, 0) scale(1);\n}\n.icure-button-group > .icure-label.above, .icure-button-group.has-content > .icure-label, .icure-button-group:focus > .icure-label, .icure-button-group:focus-within > .icure-label {\n font-weight: 500;\n height: 1.4em;\n}` \nimport { anyDateToDate } from '../../utils/dates'\nimport { icureFormLogging } from '../../index'\nimport { FieldMetadata } from '../model'\n\nexport class IcureDatePickerField extends Field {\n\t//TODO: support different date formats\n\t@property() placeholder = ''\n\n\t@state() protected displayDatePicker = false\n\n\tstatic get styles(): CSSResultGroup[] {\n\t\treturn [baseCss]\n\t}\n\n\t_handleClickOutside(event: MouseEvent): void {\n\t\tif (!event.composedPath().includes(this)) {\n\t\t\tthis.displayDatePicker = false\n\t\t\tevent.stopPropagation()\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tdocument.addEventListener('click', this._handleClickOutside.bind(this))\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tdocument.removeEventListener('click', this._handleClickOutside.bind(this))\n\t}\n\n\tgetValueFromProvider(): string | undefined {\n\t\tconst [, versions] = extractSingleValue(this.valueProvider?.())\n\t\tif (versions) {\n\t\t\tconst content = versions[0]?.value?.content\n\t\t\tconst valueForLanguage = content?.[this.language()] ?? content?.[this.defaultLanguage] ?? content?.['*'] ?? content?.[Object.keys(content)[0]]\n\t\t\tif (valueForLanguage && (valueForLanguage.type === 'timestamp' || valueForLanguage.type === 'datetime') && valueForLanguage.value) {\n\t\t\t\tconst date = anyDateToDate(valueForLanguage.value)\n\t\t\t\treturn date ? format(date, 'dd/MM/yyyy') : ''\n\t\t\t}\n\t\t}\n\t\treturn undefined\n\t}\n\n\toverride renderSync({ validationErrors }: { validationErrors: [FieldMetadata, string][] }): TemplateResult {\n\t\tif (!this.visible) {\n\t\t\treturn html``\n\t\t}\n\n\t\tif (icureFormLogging) {\n\t\t\tconsole.log(`Rendering dat epicker ${this.label}`)\n\t\t}\n\n\t\tconst value = this.getValueFromProvider()\n\t\tconst validationError = validationErrors.length\n\n\t\treturn html` <div id=\"root\" class=\"icure-text-field ${value && value != '' ? 'has-content' : ''}\" data-placeholder=\"${this.placeholder}\">\n\t\t\t${this.displayedLabels ? generateLabels(this.displayedLabels, this.language(), this.translate ? this.translationProvider : undefined) : nothing}\n\t\t\t<div class=\"icure-input ${validationError && 'icure-input__validationError'}\" @click=\"${this.togglePopup}\" id=\"test\">\n\t\t\t\t<div id=\"editor\">${value}</div>\n\t\t\t\t<div id=\"extra\" class=${'extra forced'}>\n\t\t\t\t\t<button class=\"btn select-arrow\">${datePicto}</button>\n\t\t\t\t\t${this.displayDatePicker\n\t\t\t\t\t\t? html`<div id=\"menu\" class=\"date-picker\" @click=\"${(event: Event) => event.stopPropagation()}\">\n\t\t\t\t\t\t\t\t<app-date-picker\n\t\t\t\t\t\t\t\t\tlocale=\"${this.selectedLanguage ?? this.defaultLanguage ?? 'en'}\"\n\t\t\t\t\t\t\t\t\tstyle=\"\"\n\t\t\t\t\t\t\t\t\tmax=\"${MAX_DATE}\"\n\t\t\t\t\t\t\t\t\tmin=\"${toResolvedDate('1900-01-01')}\"\n\t\t\t\t\t\t\t\t\t@date-updated=\"${this.dateUpdated}\"\n\t\t\t\t\t\t\t\t></app-date-picker>\n\t\t\t\t\t\t </div>`\n\t\t\t\t\t\t: ''}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"error\">${validationErrors.map(([, error]) => html`<div>${this.translationProvider?.(this.language(), error)}</div>`)}</div>\n\t\t\t</div>\n\t\t</div>`\n\t}\n\n\tpublic dateUpdated(date: CustomEventDetail['date-updated']): void {\n\t\tconst parts = date.detail.value?.split('-')\n\t\tif (parts && parts.length === 3) {\n\t\t\tconst fuzzyDateValue = parseInt(parts[0]) * 10000 + parseInt(parts[1]) * 100 + parseInt(parts[2])\n\n\t\t\tconst [valueId] = this.getValueFromProvider() ?? ''\n\t\t\tthis.handleValueChanged?.(\n\t\t\t\tthis.label,\n\t\t\t\tthis.language(),\n\t\t\t\t{\n\t\t\t\t\tcontent: { [this.language()]: { type: 'datetime', value: fuzzyDateValue } },\n\t\t\t\t},\n\t\t\t\tvalueId,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic togglePopup(): void {\n\t\tif (this.readonly && !this.displayDatePicker) {\n\t\t\treturn\n\t\t}\n\t\tthis.displayDatePicker = !this.displayDatePicker\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../tmp/components/icure-date-picker/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup, html, nothing, TemplateResult } from 'lit'\nimport { generateLabels } from '../common/utils'\nimport { property, state } from 'lit/decorators.js'\nimport '@icure/motss-app-datepicker.js'\nimport { CustomEventDetail } from '@icure/motss-app-datepicker/dist/typings.js'\nimport { MAX_DATE } from '@icure/motss-app-datepicker/dist/constants.js'\nimport { toResolvedDate } from '@icure/motss-app-datepicker/dist/helpers/to-resolved-date.js'\nimport { Field } from '../common'\nimport { datePicto } from '../common/styles/paths'\nimport { extractSingleValue } from '../icure-form/fields/utils'\nimport { format } from 'date-fns'\n// @ts-ignore\nimport { css } from 'lit';\nconst baseCss = css`@charset \"UTF-8\";\n.tab-container .tab-bar li {\n display: inline-block;\n padding: 8px 16px;\n cursor: pointer;\n color: #000000;\n font-size: 14px;\n font-weight: 500;\n}\n.tab-container .tab-bar li.active {\n background-color: #656565;\n color: white;\n}\n.tab-container .tab-content .tab {\n display: none;\n}\n.tab-container .tab-content .tab.active {\n display: block;\n}\n\n:host {\n --bg-color-1: #f44336;\n}\n\n.ProseMirror {\n position: relative;\n width: 100%;\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n padding: 6px 8px 2px 8px;\n line-height: 1.2;\n color: #274768;\n font-size: 14px;\n font-weight: 400;\n outline: none;\n}\n.ProseMirror p:last-child,\n.ProseMirror h1:last-child,\n.ProseMirror h2:last-child,\n.ProseMirror h3:last-child,\n.ProseMirror h4:last-child,\n.ProseMirror h5:last-child,\n.ProseMirror h6:last-child {\n margin-bottom: 2px;\n}\n.ProseMirror p {\n margin-bottom: 1em;\n}\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n.ProseMirror li {\n position: relative;\n}\n.ProseMirror ul,\n.ProseMirror ol {\n padding-left: 30px;\n}\n.ProseMirror blockquote {\n padding-left: 1em;\n border-left: 3px solid #eee;\n margin-left: 0;\n margin-right: 0;\n}\n\n.ProseMirror-hideselection {\n caret-color: transparent;\n}\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf;\n}\n\n/* Make sure li selections wrap around markers */\nli.ProseMirror-selectednode {\n outline: none;\n}\nli.ProseMirror-selectednode :after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n/* Add space around the hr to make clicking it easier */\n.ProseMirror-example-setup-style hr {\n padding: 2px 10px;\n border: none;\n margin: 1em 0;\n}\n.ProseMirror-example-setup-style hr:after {\n content: \"\";\n display: block;\n height: 1px;\n background: silver;\n line-height: 2px;\n}\n\n.ProseMirror-example-setup-style img {\n cursor: default;\n}\n\n.ProseMirror-prompt {\n background: white;\n padding: 5px 10px 5px 15px;\n border: 1px solid silver;\n position: fixed;\n border-radius: 3px;\n z-index: 11;\n box-shadow: -0.5px 2px 5px rgba(0, 0, 0, 0.2);\n}\n.ProseMirror-prompt h5 {\n margin: 0;\n font-weight: normal;\n font-size: 100%;\n color: #444;\n}\n.ProseMirror-prompt input[type=text],\n.ProseMirror-prompt textarea {\n background: #eee;\n border: none;\n outline: none;\n}\n.ProseMirror-prompt input[type=text] {\n padding: 0 4px;\n}\n\n.ProseMirror-prompt-close {\n position: absolute;\n left: 2px;\n top: 1px;\n color: #666;\n border: none;\n background: transparent;\n padding: 0;\n}\n.ProseMirror-prompt-close:after {\n content: \"✕\";\n font-size: 12px;\n}\n\n.ProseMirror-invalid {\n background: #ffc;\n border: 1px solid #cc7;\n border-radius: 4px;\n padding: 5px 10px;\n position: absolute;\n min-width: 10em;\n}\n\n.ProseMirror-prompt-buttons {\n margin-top: 5px;\n display: none;\n}\n\n#editor,\n.editor {\n color: rgb(101, 101, 101);\n background-clip: padding-box;\n border-radius: 4px;\n border: 2px solid rgba(0, 0, 0, 0.2);\n padding: 5px 0;\n display: flex;\n align-items: flex-end;\n}\n\n.icure-input {\n background: #edf2f7;\n border-radius: 8px;\n border: none;\n min-height: 28px;\n height: auto;\n display: flex;\n flex-flow: row nowrap;\n align-items: flex-start;\n justify-content: space-between;\n}\n\n#editor {\n background: transparent;\n border: none;\n padding: 0;\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n#editor.tokens-list .ProseMirror, #editor.styled-tokens-list .ProseMirror {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n}\n#editor.tokens-list .ProseMirror li, #editor.styled-tokens-list .ProseMirror li {\n display: flex;\n flex-direction: row;\n border-radius: 8px;\n padding: 2px 4px;\n margin-right: 2px;\n background-color: #dadada;\n border-color: rgba(42, 61, 108, 0.44);\n min-height: 20px;\n}\n#editor.tokens-list .ProseMirror li span, #editor.styled-tokens-list .ProseMirror li span {\n display: inline-block;\n min-height: 18px;\n}\n#editor.tokens-list .ProseMirror li span br, #editor.styled-tokens-list .ProseMirror li span br {\n display: none;\n}\n#editor.items-list .ProseMirror {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: flex-start;\n gap: 6px;\n}\n#editor.items-list .ProseMirror li {\n list-style-type: none;\n width: 100%;\n padding-bottom: 4px;\n border-bottom: 1px dotted rgba(128, 128, 128, 0.5098039216);\n}\n#editor.items-list .ProseMirror li:last-child {\n border-bottom: none;\n}\n\n#content {\n position: relative;\n padding: 0;\n}\n\n* {\n font-family: \"Roboto\", Helvetica, sans-serif;\n}\n\np {\n margin-top: 0;\n}\n\nh3 {\n color: #274768;\n margin-top: 0;\n}\n\n.icure-input-metadata-container {\n display: flex;\n}\n.icure-input-metadata-container .icure-metadata-container {\n display: flex;\n flex-grow: 1;\n padding: 0 4px;\n border: 1px solid #DDE3E7;\n border-left: none;\n border-radius: 0 6px 6px 0;\n outline: 0;\n box-sizing: border-box;\n}\n.icure-input-metadata-container .icure-metadata-container__validationError {\n border-color: red;\n}\n\n.extra {\n min-width: 20px;\n width: auto;\n height: 20px;\n transition: all 0.24s cubic-bezier(0.42, 0.01, 1, 0.62);\n}\n.extra:hover .info {\n display: none;\n}\n.extra:hover .buttons-container .menu-container .btn {\n animation: slideIn 0.24s ease-in forwards;\n pointer-events: none;\n display: unset !important;\n}\n.extra.forced .info, .extra.forced .extra .info.hidden {\n opacity: 0 !important;\n z-index: 0 !important;\n display: none;\n}\n.extra.forced .buttons-container .btn {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra.forced:hover .buttons-container .menu-container .btn {\n animation: none;\n pointer-events: all;\n}\n.extra--metadataButtonsBar {\n height: 100%;\n display: flex;\n align-items: center;\n padding: 0 4px;\n}\n.extra .info {\n color: #809ab4;\n font-size: 15px;\n width: 100%;\n height: auto;\n overflow: hidden;\n pointer-events: none;\n text-align: center;\n}\n.extra .info span {\n font-weight: 700;\n}\n.extra .info.hidden {\n display: none;\n}\n.extra .buttons-container {\n display: flex;\n height: 20px;\n width: auto;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-end;\n transition: all 0.24s cubic-bezier(0.14, 0.69, 0.87, 0.54);\n z-index: 1000;\n}\n.extra .buttons-container .btn {\n border: none;\n background: transparent;\n position: relative;\n top: 0;\n display: none;\n opacity: 0;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.extra .buttons-container .btn svg {\n width: 15px;\n height: 15px;\n}\n.extra .buttons-container .btn svg path {\n fill: #809ab4;\n}\n.extra .buttons-container .btn.forced {\n opacity: 1 !important;\n display: unset !important;\n}\n.extra .buttons-container .btn.forced svg path {\n fill: crimson !important;\n}\n.extra .buttons-container .btn:focus, .extra .buttons-container .btn:focus-within {\n border: none;\n outline: none;\n}\n.extra .buttons-container .btn:hover svg path {\n fill: #274768;\n}\n.extra .buttons-container .menu-container .btn:hover::before {\n content: \"\";\n display: block;\n border-color: #274768 transparent transparent transparent;\n border-style: solid;\n border-width: 4px;\n position: absolute;\n top: -6px;\n}\n.extra .buttons-container .menu-container .btn:hover::after {\n content: attr(data-content);\n position: absolute;\n top: -21px;\n height: 16px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n background: #274768;\n color: white;\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n text-transform: capitalize;\n white-space: nowrap;\n padding: 0 12px;\n font-size: 12px;\n line-height: 0;\n}\n.extra .buttons-container .menu-container:last-child .btn {\n margin-right: 0;\n}\n\n@keyframes slideIn {\n 0% {\n top: 0;\n opacity: 0;\n pointer-events: none;\n }\n 100% {\n top: 0;\n opacity: 1;\n pointer-events: all;\n }\n}\n.menu-container {\n display: flex;\n align-items: center;\n height: fit-content;\n}\n.menu-container .item {\n height: 30px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #274768;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n}\n.menu-container .item.existing {\n background-color: #BFE8EA;\n}\n.menu-container .item.selected {\n color: white;\n background-color: #084B83;\n}\n.menu-container .item:hover {\n background: #DCE7F2;\n color: #274768;\n font-weight: 500;\n border-radius: 4px;\n}\n\n.value-date-menu {\n width: unset !important;\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n gap: 2px;\n position: absolute;\n top: 32px;\n right: -12px;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n border-radius: 8px;\n padding: 8px;\n width: 220px;\n min-height: 120px;\n max-height: 320px;\n overflow-y: scroll;\n}\n.menu .input-container {\n background: #edf2f7;\n border-radius: 4px;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n height: 32px;\n margin-bottom: 4px;\n padding: 0 4px;\n}\n.menu .input-container:hover {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2);\n}\n.menu .input-container:focus-within {\n box-shadow: 0 0 0 3px rgba(40, 151, 255, 0.2), 0 0 0 1px rgb(40, 151, 255);\n}\n.menu .input-container input {\n background: transparent;\n border: none;\n flex-grow: 1;\n height: 100%;\n}\n.menu .input-container input:focus {\n background: transparent;\n border: none;\n outline: none;\n}\n\n.menu-trigger:focus .menu {\n display: flex;\n}\n\nspan {\n position: relative;\n z-index: 1;\n}\nspan.date {\n margin-right: 1px;\n}\nspan.time {\n margin-left: 1px;\n}\nspan.measure {\n display: inline-block;\n margin-right: 1px;\n}\nspan.unit {\n margin-left: 1px;\n display: inline-block;\n}\nspan[data-content]:hover::after {\n position: absolute;\n content: attr(data-content);\n background: #274768;\n color: #ffffff;\n font-size: 9px;\n line-height: 12px;\n top: -12px;\n left: 0px;\n padding: 0px 2px;\n}\nspan[data-content]::before {\n position: absolute;\n content: \"\";\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n opacity: 0.3;\n}\n\n.masked {\n display: none;\n}\n\n.companion {\n position: absolute;\n width: 15px;\n background-color: hsl(194, 100%, 50%);\n color: white;\n z-index: 20;\n padding: 0;\n text-align: center;\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 0 2px 2px 0;\n}\n.companion:hover {\n font-weight: 700;\n background: hsl(202, 100%, 50%);\n}\n\n*::selection {\n background-color: hsla(194, 100%, 50%, 0.2);\n}\n\n.suggestion-palette {\n position: absolute;\n z-index: 20;\n max-width: 380px;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 4px;\n border: none;\n border-radius: 8px;\n background: white;\n box-shadow: 0 1.1px 1.1px rgba(0, 0, 0, 0.022), 0 2.7px 2.7px rgba(0, 0, 0, 0.032), 0 5px 5px rgba(0, 0, 0, 0.04), 0 8.9px 8.9px rgba(0, 0, 0, 0.048), 0 16.7px 16.7px rgba(0, 0, 0, 0.058), 0 40px 40px rgba(0, 0, 0, 0.08);\n}\n.suggestion-palette ul {\n white-space: nowrap;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.suggestion-palette ul li:not(:first-child) svg.tab-icn,\n.suggestion-palette ul li:not(.focused) svg.return-icn, .suggestion-palette ul.focused li:first-child svg.tab-icn {\n height: 0;\n width: 0;\n transform: scale(0);\n opacity: 0;\n}\n.suggestion-palette ul li {\n padding: 0 8px;\n font-size: 11px;\n height: 20px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 4px;\n color: rgb(39, 71, 104);\n}\n.suggestion-palette ul li.focused {\n background-color: rgb(237, 242, 247);\n}\n.suggestion-palette ul li.focused svg.return-icn {\n animation: growIn 0.24s ease-in forwards;\n}\n.suggestion-palette ul li svg {\n height: 12px;\n width: 12px;\n border-radius: 4px;\n transform-origin: center center;\n}\n.suggestion-palette ul li svg path {\n fill: rgb(128, 154, 180);\n}\n\n@keyframes growIn {\n 0% {\n transform: scale(0.5);\n }\n 90% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n }\n}\nspan.code-count-1::after,\nspan.code-count-1::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n}\n\nspan.code-count-2::after,\nspan.code-count-2::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n /*background: repeating-linear-gradient(*/\n /*\t45deg,*/\n /*\tvar(--bg-code-color-1),*/\n /*\tvar(--bg-code-color-1) 10px,*/\n /*\tvar(--bg-code-color-2) 10px,*/\n /*\tvar(--bg-code-color-2) 20px*/\n /*);*/\n /* PAS STRIPES */\n background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);\n}\n\nspan.code-count-3::after,\nspan.code-count-3::before {\n background: var(--bg-code-color-1);\n color: var(--text-code-color-1);\n /* STRIPES */\n background: repeating-linear-gradient(45deg, var(--bg-code-color-1), var(--bg-code-color-1) 10px, var(--bg-code-color-2) 10px, var(--bg-code-color-2) 20px);\n /* PAS STRIPES */\n /* background: linear-gradient(90deg, var(--bg-code-color-1) 0%, var(--bg-code-color-2) 100%);*/\n}\n\n.selected-option {\n padding: 2px;\n margin-right: 5px;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: auto;\n min-width: 100%;\n overflow-y: auto;\n padding: 2px;\n border-radius: 6px;\n}\n.options--subformView {\n top: 46px;\n min-width: unset;\n left: unset;\n right: 0;\n}\n\n.date-picker {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n z-index: 2;\n background: #fff;\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\n width: 260px;\n overflow-y: auto;\n max-height: 280px;\n}\n\napp-date-picker {\n --app-primary: #084B83;\n --app-hover: #5b7da2;\n --app-selected-hover: #5b7da2;\n}\n\n.option {\n height: 28px;\n min-height: 28px;\n width: 100%;\n background: transparent;\n border-radius: 4px;\n font-size: 14px;\n color: #545454;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n box-shadow: none;\n border: none;\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n padding: 4px 8px;\n -webkit-user-select: none; /* Safari */\n -ms-user-select: none; /* IE 10 and IE 11 */\n user-select: none; /* Standard syntax */\n cursor: pointer;\n}\n.option:hover {\n color: #656565;\n background-color: #ededed;\n}\n\n.select-arrow {\n border: none;\n background: 0px 0px;\n position: relative;\n top: 0px;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n width: 10px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0px;\n}\n\n.hidden {\n display: none;\n}\n\n.container {\n position: relative;\n}\n\n.group {\n align-items: end;\n display: grid;\n}\n\n.subform {\n display: grid;\n position: relative;\n padding: 8px;\n border-radius: 6px;\n background-color: #e7f0fd;\n gap: 12px;\n}\n.subform__heading {\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: auto;\n}\n.subform__heading__title {\n padding: 0;\n margin: 0;\n}\n.subform__addBtn, .subform__removeBtn {\n cursor: pointer;\n background-color: #084B83;\n color: white;\n height: 32px;\n padding: 0 16px;\n border-radius: 6px;\n border: none;\n outline: none;\n}\n.subform__addBtn:hover, .subform__removeBtn:hover {\n background-color: #3D87C5;\n}\n.subform__removeBtn {\n justify-self: end;\n border: 1px solid #DDE3E7;\n background-color: #FCFCFD;\n color: #084B83;\n}\n.subform__removeBtn:hover {\n background-color: #F2F2F2;\n}\n.subform__child {\n display: grid;\n grid-template-rows: auto;\n gap: 8px;\n padding: 8px;\n border-radius: 6px;\n background: white;\n border: 1px solid #3D87C5;\n}\n.subform__child__title {\n padding: 12px !important;\n border-radius: 6px;\n margin: 0;\n background-color: #BFE8EA;\n}\n.subform__child .subform {\n background: unset;\n margin: 0;\n padding: 0;\n}\n\n.icure-form {\n background-color: rgba(0, 0, 0, 0);\n display: grid;\n gap: 16px 6px;\n grid-template-columns: repeat(24, 1fr);\n}\n.icure-form hr {\n display: block;\n margin-top: 20px;\n border-top: 1px solid rgba(8, 75, 131, 0.13);\n margin-bottom: 20px;\n}\n.icure-form h2 {\n font-size: add-two(12px, 0, 1.2);\n font-weight: 700;\n color: #084B83;\n padding: 2px;\n}\n.icure-form h3 {\n font-size: add-two(12px, 0, 1.1);\n font-weight: 500;\n color: #084B83;\n padding: 6px;\n}\n.icure-form .group.bordered {\n background: #f6f6f6;\n border-radius: 12px;\n}\n\n.icure-form-field {\n display: grid;\n align-items: flex-start;\n}\n\n.error {\n color: red;\n font-size: 12px;\n margin-top: 4px;\n}\n\n.icure-text-field .icure-label-extra, .icure-button-group .icure-label-extra {\n display: flex;\n width: 100%;\n gap: 12px;\n}\n.icure-text-field .icure-label, .icure-button-group .icure-label {\n z-index: 1;\n pointer-events: none;\n line-height: 1.4em;\n cursor: text;\n font-size: 12px;\n left: add-two(8px, 1px);\n color: #084B83;\n align-items: center;\n text-wrap: auto;\n min-height: 28px;\n max-width: 85%;\n min-width: 0;\n}\n.icure-text-field .icure-label.float, .icure-button-group .icure-label.float {\n display: flex;\n overflow: hidden;\n}\n\n.icure-text-field {\n position: relative;\n width: 100%;\n}\n.icure-text-field > .icure-label {\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n}\n.icure-text-field > .icure-input {\n flex: 1 1 auto;\n width: auto;\n}\n.icure-text-field > .icure-label.side {\n position: relative;\n}\n.icure-text-field > .icure-label.side.left {\n order: -1;\n margin-right: 1em;\n}\n.icure-text-field > .icure-label.side.right {\n order: 1;\n margin-left: 1em;\n}\n.icure-text-field .icure-input,\n.icure-text-field .input-container {\n padding: 8px;\n width: 100%;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n border-color: #DDE3E7;\n border-radius: 2px;\n outline: 0;\n font: inherit;\n font-size: 14px;\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 color: #000000;\n}\n.icure-text-field .icure-input .reset-button,\n.icure-text-field .input-container .reset-button {\n position: absolute;\n right: 0;\n border: none;\n background: transparent;\n top: 0;\n opacity: 0.5;\n cursor: pointer;\n height: 20px;\n margin-left: 4px;\n margin-right: 4px;\n padding: 0;\n}\n.icure-text-field .icure-input .reset-button svg,\n.icure-text-field .input-container .reset-button svg {\n width: 15px;\n height: 15px;\n}\n.icure-text-field .icure-input__validationError,\n.icure-text-field .input-container__validationError {\n border-color: red;\n}\n.icure-text-field .icure-input__withMetadata,\n.icure-text-field .input-container__withMetadata {\n border-radius: 6px 0 0 6px;\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 {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input:hover,\n.icure-text-field .input-container:hover {\n border-color: rgba(0, 0, 0, 0.15);\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 {\n box-shadow: 0 2px 2px 1px rgba(0, 0, 0, 0.06);\n}\n.icure-text-field .icure-input .ProseMirror,\n.icure-text-field .input-container .ProseMirror {\n padding: 0;\n font-size: 14px;\n line-height: 1.4em;\n color: #000000;\n}\n.icure-text-field .icure-input .ProseMirror .date,\n.icure-text-field .input-container .ProseMirror .date {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror .time,\n.icure-text-field .input-container .ProseMirror .time {\n padding: 1px;\n}\n.icure-text-field .icure-input .ProseMirror:focus .focused,\n.icure-text-field .input-container .ProseMirror:focus .focused {\n background-color: rgba(0, 0, 0, 0.05);\n border-radius: 3px;\n border-color: rgba(0, 0, 0, 0.1);\n}\n.icure-text-field .icure-input > svg,\n.icure-text-field .input-container > svg {\n opacity: 0.5;\n}\n.icure-text-field .icure-input > svg path,\n.icure-text-field .input-container > svg path {\n fill: #656565;\n}\n.icure-text-field .icure-input .extra,\n.icure-text-field .input-container .extra {\n height: 20px;\n}\n.icure-text-field .icure-input .extra > .info,\n.icure-text-field .input-container .extra > .info {\n color: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path,\n.icure-text-field .input-container .extra .btn svg path {\n fill: #656565;\n opacity: 0.5;\n}\n.icure-text-field .icure-input .extra .btn svg path:hover,\n.icure-text-field .input-container .extra .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:checked {\n accent-color: #06a070;\n}\n\n.icure-button {\n display: flex;\n height: 32px;\n padding: 0 16px;\n background-color: #084B83;\n color: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: normal;\n}\n.icure-button:hover {\n background-color: #3D87C5;\n}\n\n.icure-button-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.icure-button-group > div {\n display: grid;\n}\n.icure-button-group > div > div {\n display: flex;\n align-items: center;\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: 12px;\n top: add-three(1.4em, 1px, 0);\n left: add-two(8px, 1px);\n transition: transform 0.2s ease-out, color 0.2s ease-out;\n color: #084B83;\n display: flex;\n align-items: center;\n height: 28px;\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.icure-button-group > .icure-label {\n transform: translate(0, 0) scale(1);\n}\n.icure-button-group > .icure-label.above, .icure-button-group.has-content > .icure-label, .icure-button-group:focus > .icure-label, .icure-button-group:focus-within > .icure-label {\n font-weight: 500;\n height: 1.4em;\n}` \nimport { anyDateToDate } from '../../utils/dates'\nimport { icureFormLogging } from '../../index'\nimport { FieldMetadata } from '../model'\n\nexport class IcureDatePickerField extends Field {\n\t//TODO: support different date formats\n\t@property() placeholder = ''\n\n\t@state() protected displayDatePicker = false\n\n\tstatic get styles(): CSSResultGroup[] {\n\t\treturn [baseCss]\n\t}\n\n\t_handleClickOutside(event: MouseEvent): void {\n\t\tif (!event.composedPath().includes(this)) {\n\t\t\tthis.displayDatePicker = false\n\t\t\tevent.stopPropagation()\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tdocument.addEventListener('click', this._handleClickOutside.bind(this))\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tdocument.removeEventListener('click', this._handleClickOutside.bind(this))\n\t}\n\n\tgetValueFromProvider(): string | undefined {\n\t\tconst [, versions] = extractSingleValue(this.valueProvider?.())\n\t\tif (versions) {\n\t\t\tconst content = versions[0]?.value?.content\n\t\t\tconst valueForLanguage = content?.[this.language()] ?? content?.[this.defaultLanguage] ?? content?.['*'] ?? content?.[Object.keys(content)[0]]\n\t\t\tif (valueForLanguage && (valueForLanguage.type === 'timestamp' || valueForLanguage.type === 'datetime') && valueForLanguage.value) {\n\t\t\t\tconst date = anyDateToDate(valueForLanguage.value)\n\t\t\t\treturn date ? format(date, 'dd/MM/yyyy') : ''\n\t\t\t}\n\t\t}\n\t\treturn undefined\n\t}\n\n\toverride renderSync({ validationErrors }: { validationErrors: [FieldMetadata, string][] }): TemplateResult {\n\t\tif (!this.visible) {\n\t\t\treturn html``\n\t\t}\n\n\t\tif (icureFormLogging) {\n\t\t\tconsole.log(`Rendering dat epicker ${this.label}`)\n\t\t}\n\n\t\tconst value = this.getValueFromProvider()\n\t\tconst validationError = validationErrors.length\n\n\t\treturn html` <div id=\"root\" class=\"icure-text-field ${value && value != '' ? 'has-content' : ''}\" data-placeholder=\"${this.placeholder}\">\n\t\t\t${this.displayedLabels ? generateLabels(this.displayedLabels, this.language(), this.translate ? this.translationProvider : undefined) : nothing}\n\t\t\t<div class=\"icure-input ${validationError && 'icure-input__validationError'}\" @click=\"${this.togglePopup}\" id=\"test\">\n\t\t\t\t<div id=\"editor\">${value}</div>\n\t\t\t\t<div id=\"extra\" class=${'extra forced'}>\n\t\t\t\t\t<button class=\"btn select-arrow\">${datePicto}</button>\n\t\t\t\t\t${this.displayDatePicker\n\t\t\t\t\t\t? html`<div id=\"menu\" class=\"date-picker\" @click=\"${(event: Event) => event.stopPropagation()}\">\n\t\t\t\t\t\t\t\t<app-date-picker\n\t\t\t\t\t\t\t\t\tlocale=\"${this.selectedLanguage ?? this.defaultLanguage ?? 'en'}\"\n\t\t\t\t\t\t\t\t\tstyle=\"\"\n\t\t\t\t\t\t\t\t\tmax=\"${MAX_DATE}\"\n\t\t\t\t\t\t\t\t\tmin=\"${toResolvedDate('1900-01-01')}\"\n\t\t\t\t\t\t\t\t\t@date-updated=\"${this.dateUpdated}\"\n\t\t\t\t\t\t\t\t></app-date-picker>\n\t\t\t\t\t\t </div>`\n\t\t\t\t\t\t: ''}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"error\">${validationErrors.map(([, error]) => html`<div>${this.translationProvider?.(this.language(), error)}</div>`)}</div>\n\t\t\t</div>\n\t\t</div>`\n\t}\n\n\tpublic dateUpdated(date: CustomEventDetail['date-updated']): void {\n\t\tconst parts = date.detail.value?.split('-')\n\t\tif (parts && parts.length === 3) {\n\t\t\tconst fuzzyDateValue = parseInt(parts[0]) * 10000 + parseInt(parts[1]) * 100 + parseInt(parts[2])\n\n\t\t\tconst [valueId] = this.getValueFromProvider() ?? ''\n\t\t\tthis.handleValueChanged?.(\n\t\t\t\tthis.label,\n\t\t\t\tthis.language(),\n\t\t\t\t{\n\t\t\t\t\tcontent: { [this.language()]: { type: 'datetime', value: fuzzyDateValue } },\n\t\t\t\t},\n\t\t\t\tvalueId,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic togglePopup(): void {\n\t\tif (this.readonly && !this.displayDatePicker) {\n\t\t\treturn\n\t\t}\n\t\tthis.displayDatePicker = !this.displayDatePicker\n\t}\n}\n"]}
|
|
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { CodeStub, DecryptedContact, DecryptedService, DecryptedSubContact } from '@icure/cardinal-sdk';
|
|
10
|
+
import { CodeStub, DecryptedContact, DecryptedService, DecryptedSubContact, ServiceLink } from '@icure/cardinal-sdk';
|
|
11
11
|
import { sortedBy } from '../utils/no-lodash';
|
|
12
12
|
import { areCodesEqual, codeStubToCode, contentToPrimitiveType, isContentEqual, primitiveTypeToContent } from './icure-utils';
|
|
13
13
|
import { parsePrimitive } from '../utils/primitive';
|
|
@@ -562,7 +562,7 @@ export class ContactFormValuesContainer {
|
|
|
562
562
|
meta.valueDate && (newService.valueDate = meta.valueDate);
|
|
563
563
|
meta.codes && (newService.codes = normalizeCodes(meta.codes));
|
|
564
564
|
meta.tags && (newService.tags = normalizeCodes(meta.tags));
|
|
565
|
-
const newFormValuesContainer = new ContactFormValuesContainer(this.rootForm, Object.assign(Object.assign({}, this.currentContact), { services: (_a = this.currentContact.services) === null || _a === void 0 ? void 0 : _a.map((s) => (s.id === service.id ? newService : s)) }), this.contactsHistory, this.serviceFactory, this.children, this.formFactory, this.formRecycler, this.changeListeners);
|
|
565
|
+
const newFormValuesContainer = new ContactFormValuesContainer(this.rootForm, new DecryptedContact(Object.assign(Object.assign({}, this.currentContact), { services: (_a = this.currentContact.services) === null || _a === void 0 ? void 0 : _a.map((s) => (s.id === service.id ? newService : s)) })), this.contactsHistory, this.serviceFactory, this.children, this.formFactory, this.formRecycler, this.changeListeners);
|
|
566
566
|
this.changeListeners.forEach((l) => notify(l, newFormValuesContainer));
|
|
567
567
|
}
|
|
568
568
|
}
|
|
@@ -584,11 +584,11 @@ export class ContactFormValuesContainer {
|
|
|
584
584
|
}
|
|
585
585
|
let newCurrentContact;
|
|
586
586
|
if (!Object.entries(newContents).filter(([, cnt]) => cnt !== undefined).length) {
|
|
587
|
-
newCurrentContact = Object.assign(Object.assign({}, this.currentContact), { subContacts: ((_f = this.currentContact.subContacts) !== null && _f !== void 0 ? _f : []).some((sc) => sc.formId === this.rootForm.id)
|
|
587
|
+
newCurrentContact = new DecryptedContact(Object.assign(Object.assign({}, this.currentContact), { subContacts: ((_f = this.currentContact.subContacts) !== null && _f !== void 0 ? _f : []).some((sc) => sc.formId === this.rootForm.id)
|
|
588
588
|
? ((_g = this.currentContact.subContacts) !== null && _g !== void 0 ? _g : []).map((sc) => {
|
|
589
589
|
var _a;
|
|
590
590
|
if (sc.formId === this.rootForm.id) {
|
|
591
|
-
return Object.assign(Object.assign({}, sc), { services: ((_a = sc.services) !== null && _a !== void 0 ? _a : []).filter((s) => s.serviceId !== service.id).concat([{ serviceId: service.id }]) });
|
|
591
|
+
return new DecryptedSubContact(Object.assign(Object.assign({}, sc), { services: ((_a = sc.services) !== null && _a !== void 0 ? _a : []).filter((s) => s.serviceId !== service.id).concat([new ServiceLink({ serviceId: service.id })]) }));
|
|
592
592
|
}
|
|
593
593
|
else {
|
|
594
594
|
return sc;
|
|
@@ -596,10 +596,10 @@ export class ContactFormValuesContainer {
|
|
|
596
596
|
})
|
|
597
597
|
: ((_h = this.currentContact.subContacts) !== null && _h !== void 0 ? _h : []).concat(new DecryptedSubContact({
|
|
598
598
|
formId: this.rootForm.id,
|
|
599
|
-
services: [{ serviceId: service.id }],
|
|
599
|
+
services: [new ServiceLink({ serviceId: service.id })],
|
|
600
600
|
})), services: ((_j = this.currentContact.services) !== null && _j !== void 0 ? _j : []).some((s) => s.id === service.id)
|
|
601
601
|
? ((_k = this.currentContact.services) !== null && _k !== void 0 ? _k : []).filter((s) => s.id !== service.id)
|
|
602
|
-
: [...((_l = this.currentContact.services) !== null && _l !== void 0 ? _l : [])] });
|
|
602
|
+
: [...((_l = this.currentContact.services) !== null && _l !== void 0 ? _l : [])] }));
|
|
603
603
|
}
|
|
604
604
|
else {
|
|
605
605
|
newService.content = newContents;
|
|
@@ -610,11 +610,11 @@ export class ContactFormValuesContainer {
|
|
|
610
610
|
newService.tags = metadata.tags ? normalizeCodes(metadata.tags) : newService.tags;
|
|
611
611
|
newService.label = (_p = metadata.label) !== null && _p !== void 0 ? _p : newService.label;
|
|
612
612
|
}
|
|
613
|
-
newCurrentContact = Object.assign(Object.assign({}, this.currentContact), { subContacts: ((_q = this.currentContact.subContacts) !== null && _q !== void 0 ? _q : []).some((sc) => sc.formId === this.rootForm.id)
|
|
613
|
+
newCurrentContact = new DecryptedContact(Object.assign(Object.assign({}, this.currentContact), { subContacts: ((_q = this.currentContact.subContacts) !== null && _q !== void 0 ? _q : []).some((sc) => sc.formId === this.rootForm.id)
|
|
614
614
|
? ((_r = this.currentContact.subContacts) !== null && _r !== void 0 ? _r : []).map((sc) => {
|
|
615
615
|
var _a;
|
|
616
616
|
if (sc.formId === this.rootForm.id) {
|
|
617
|
-
return Object.assign(Object.assign({}, sc), { services: ((_a = sc.services) !== null && _a !== void 0 ? _a : []).filter((s) => s.serviceId !== service.id).concat([{ serviceId: service.id }]) });
|
|
617
|
+
return new DecryptedSubContact(Object.assign(Object.assign({}, sc), { services: ((_a = sc.services) !== null && _a !== void 0 ? _a : []).filter((s) => s.serviceId !== service.id).concat([new ServiceLink({ serviceId: service.id })]) }));
|
|
618
618
|
}
|
|
619
619
|
else {
|
|
620
620
|
return sc;
|
|
@@ -622,10 +622,10 @@ export class ContactFormValuesContainer {
|
|
|
622
622
|
})
|
|
623
623
|
: ((_s = this.currentContact.subContacts) !== null && _s !== void 0 ? _s : []).concat(new DecryptedSubContact({
|
|
624
624
|
formId: this.rootForm.id,
|
|
625
|
-
services: [{ serviceId: service.id }],
|
|
625
|
+
services: [new ServiceLink({ serviceId: service.id })],
|
|
626
626
|
})), services: ((_t = this.currentContact.services) !== null && _t !== void 0 ? _t : []).some((s) => s.id === service.id)
|
|
627
627
|
? ((_u = this.currentContact.services) !== null && _u !== void 0 ? _u : []).map((s) => (s.id === service.id ? newService : s))
|
|
628
|
-
: [...((_v = this.currentContact.services) !== null && _v !== void 0 ? _v : []), newService] });
|
|
628
|
+
: [...((_v = this.currentContact.services) !== null && _v !== void 0 ? _v : []), newService] }));
|
|
629
629
|
}
|
|
630
630
|
const newFormValuesContainer = new ContactFormValuesContainer(this.rootForm, newCurrentContact, this.contactsHistory.map((c) => (c === this.currentContact ? newCurrentContact : c)), this.serviceFactory, this.children, this.formFactory, this.formRecycler, this.changeListeners);
|
|
631
631
|
changeListenersOverrider ? changeListenersOverrider(newFormValuesContainer) : this.changeListeners.forEach((l) => notify(l, newFormValuesContainer));
|
|
@@ -635,9 +635,9 @@ export class ContactFormValuesContainer {
|
|
|
635
635
|
var _a;
|
|
636
636
|
const service = this.getServiceInCurrentContact(serviceId);
|
|
637
637
|
if (service) {
|
|
638
|
-
const newFormValuesContainer = new ContactFormValuesContainer(this.rootForm, Object.assign(Object.assign({}, this.currentContact), { services: (_a = this.currentContact.services) === null || _a === void 0 ? void 0 : _a.map((s) => s.id === serviceId
|
|
638
|
+
const newFormValuesContainer = new ContactFormValuesContainer(this.rootForm, new DecryptedContact(Object.assign(Object.assign({}, this.currentContact), { services: (_a = this.currentContact.services) === null || _a === void 0 ? void 0 : _a.map((s) => s.id === serviceId
|
|
639
639
|
? new DecryptedService(Object.assign(Object.assign({}, service), { endOfLife: Date.now() }))
|
|
640
|
-
: s) }), this.contactsHistory, this.serviceFactory, this.children, this.formFactory, this.formRecycler, this.changeListeners);
|
|
640
|
+
: s) })), this.contactsHistory, this.serviceFactory, this.children, this.formFactory, this.formRecycler, this.changeListeners);
|
|
641
641
|
this.changeListeners.forEach((l) => notify(l, newFormValuesContainer));
|
|
642
642
|
}
|
|
643
643
|
}
|
|
@@ -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 { CodeStub, DecryptedContact, DecryptedForm as CardinalForm, DecryptedService, DecryptedSubContact } from '@icure/cardinal-sdk'\nimport { sortedBy } from '../utils/no-lodash'\nimport { FormValuesContainer, Version, VersionedData } from '../generic'\nimport { ServiceMetadata } from './model'\nimport { FieldMetadata, FieldValue, PrimitiveType, Validator } from '../components/model'\nimport { areCodesEqual, codeStubToCode, contentToPrimitiveType, isContentEqual, primitiveTypeToContent } from './icure-utils'\nimport { parsePrimitive } from '../utils/primitive'\nimport { anyDateToDate, dateToFuzzyDate } from '../utils/dates'\nimport { v4 as uuidv4 } from 'uuid'\nimport { normalizeCodes } from '../utils/code-utils'\n\nfunction notify<Value, Metadata>(l: (fvc: FormValuesContainer<Value, Metadata>) => void, fvc: FormValuesContainer<Value, Metadata>) {\n\tl(fvc)\n}\n\n/** This class is a bridge between the ICure API and the generic FormValuesContainer interface.\n * It wraps around a ContactFormValuesContainer and provides a series of services:\n * - It computes dependent values when the form is created\n * - It broadcasts changes from the wrapped ContactFormValuesContainer to its listeners\n * - It provides a way to compute formulas in a sandboxed environment\n * - It bridges the setValues and setMetadata methods with the wrapped ContactFormValuesContainer by\n * \t\t- converting the FieldValue to a Service\n * \t\t- converting the FieldMetadata to a ServiceMetadata\n * - It bridges the getValues and getMetadata methods with the wrapped ContactFormValuesContainer by\n * \t\t- converting the Service to a FieldValue\n * \t\t- converting the ServiceMetadata to a FieldMetadata\n * - It lazily creates bridges the children by\n * - lazily creating BridgedFormValuesContainer when the children of the wrapped ContactFormValuesContainer are accessed\n * - creating a new ContactFormValuesContainer and wrapping it in a BridgedFormValuesContainer when a child is added\n *\n * The icure-form typically accepts a BridgedFormValuesContainer as a prop and uses it to interact with the form.\n *\n * This class is fairly generic and can be used as an inspiration or subclassed for other bridges\n */\nexport class BridgedFormValuesContainer implements FormValuesContainer<FieldValue, FieldMetadata> {\n\tprivate contact: DecryptedContact\n\tprivate contactFormValuesContainer: ContactFormValuesContainer\n\tprivate _id: string = uuidv4()\n\tprivate readonly mutateAndNotify: (newContactFormValuesContainer: ContactFormValuesContainer) => Promise<BridgedFormValuesContainer>\n\n\ttoString(): string {\n\t\treturn `Bridged(${this.contactFormValuesContainer.rootForm.formTemplateId}[${this.contactFormValuesContainer.rootForm.id}]) - ${this._id}`\n\t}\n\n\t/**\n\t * Creates an instance of BridgedFormValuesContainer.\n\t * @param responsible The id of the data owner responsible for the creation of the values\n\t * @param contactFormValuesContainer The wrapped ContactFormValuesContainer\n\t * @param interpreter A function that can interpret formulas\n\t * @param contact The displayed contact (may be in the past). === to currentContact if the contact is the contact of the day\n\t * @param initialValuesProvider A lambda that provides the initial values of the form\n\t * @param dependentValuesProvider A function that provides the dependent values (computed on the basis of other values) for a given anchorId and templateId\n\t * @param validatorsProvider A function that provides the validators for a given anchorId and templateId\n\t * @param language The language in which the values are displayed\n\t * @param changeListeners The listeners that will be notified when the values change\n\t * @param interpreterContext A map with keys that are the names of the variables and values that are the functions that return the values of the variables\n\t */\n\tconstructor(\n\t\tprivate responsible: string,\n\t\tcontactFormValuesContainer: ContactFormValuesContainer,\n\t\tprivate interpreter?: <\n\t\t\tT,\n\t\t\tS extends {\n\t\t\t\t[key: string | symbol]: unknown\n\t\t\t},\n\t\t>(\n\t\t\tformula: string,\n\t\t\tsandbox: S,\n\t\t) => Promise<T | undefined>,\n\t\tcontact?: DecryptedContact,\n\t\tprivate initialValuesProvider: (\n\t\t\tanchorId?: string,\n\t\t\ttemplateId?: string,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\t\tformula: string\n\t\t}[] = () => [],\n\t\tprivate dependentValuesProvider: (\n\t\t\tanchorId: string | undefined,\n\t\t\ttemplateId: string | undefined,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\t\tformula: string\n\t\t}[] = () => [],\n\t\tprivate validatorsProvider: (\n\t\t\tanchorId: string | undefined,\n\t\t\ttemplateId: string,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\tvalidators: Validator[]\n\t\t}[] = () => [],\n\t\tprivate language = 'en',\n\t\tprivate changeListeners: ((newValue: BridgedFormValuesContainer) => void)[] = [],\n\t\tprivate interpreterContext: { [variable: string]: () => unknown } = {},\n\t) {\n\t\tconsole.log(`Creating bridge FVC (${contactFormValuesContainer.rootForm.formTemplateId}) with ${contactFormValuesContainer.children.length} children [${this._id}]`)\n\t\t//Before start to broadcast changes, we need to fill in the contactFormValuesContainer with the dependent values\n\t\tthis.contactFormValuesContainer = contactFormValuesContainer\n\t\tthis.mutateAndNotify = async (newContactFormValuesContainer: ContactFormValuesContainer) => {\n\t\t\tnewContactFormValuesContainer.unregisterChangeListener(this.mutateAndNotify)\n\t\t\tconst newBridgedFormValueContainer = await new BridgedFormValuesContainer(\n\t\t\t\tthis.responsible,\n\t\t\t\tnewContactFormValuesContainer,\n\t\t\t\tthis.interpreter,\n\t\t\t\tthis.contact === this.contactFormValuesContainer.currentContact ? newContactFormValuesContainer.currentContact : this.contact,\n\t\t\t\tthis.initialValuesProvider,\n\t\t\t\tthis.dependentValuesProvider,\n\t\t\t\tthis.validatorsProvider,\n\t\t\t\tthis.language,\n\t\t\t\tthis.changeListeners,\n\t\t\t\tthis.interpreterContext,\n\t\t\t).init()\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newBridgedFormValueContainer))\n\t\t\treturn newBridgedFormValueContainer\n\t\t}\n\t\tthis.contactFormValuesContainer.registerChangeListener(this.mutateAndNotify)\n\t\tthis.contact = contact ?? contactFormValuesContainer.currentContact\n\t}\n\n\tasync init() {\n\t\tif (this.contactFormValuesContainer.mustBeInitialised()) {\n\t\t\tawait this.computeInitialValues()\n\t\t}\n\t\tawait this.computeDependentValues()\n\n\t\treturn this\n\t}\n\n\tgetLabel(): string {\n\t\treturn this.contactFormValuesContainer.getLabel()\n\t}\n\n\tgetFormId(): string | undefined {\n\t\treturn this.contactFormValuesContainer.getFormId()\n\t}\n\n\tgetContactFormValuesContainer() {\n\t\treturn this.contactFormValuesContainer\n\t}\n\n\tregisterChangeListener(listener: (newValue: BridgedFormValuesContainer) => void): void {\n\t\tthis.changeListeners.push(listener)\n\t}\n\n\tunregisterChangeListener(listener: (newValue: BridgedFormValuesContainer) => void): void {\n\t\tthis.changeListeners = this.changeListeners.filter((l) => l !== listener)\n\t}\n\n\tasync getDefaultValue(label: string): Promise<FieldValue | undefined> {\n\t\tconst formula = this.initialValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).find(\n\t\t\t({ metadata }) => metadata.label === label,\n\t\t)?.formula\n\t\treturn formula ? this.convertRawValue(await this.compute(formula)) : undefined\n\t}\n\n\tgetValues(revisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]): VersionedData<FieldValue> {\n\t\treturn Object.entries(\n\t\t\tthis.contactFormValuesContainer.getValues((id, history) =>\n\t\t\t\trevisionsFilter(\n\t\t\t\t\tid,\n\t\t\t\t\thistory\n\t\t\t\t\t\t.filter(({ modified }) => !this.contact.created || !modified || modified <= this.contact.created)\n\t\t\t\t\t\t.map(({ revision, modified, value: sm }) => ({\n\t\t\t\t\t\t\trevision,\n\t\t\t\t\t\t\tmodified,\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tlabel: sm.label,\n\t\t\t\t\t\t\t\towner: sm.responsible,\n\t\t\t\t\t\t\t\ttags: sm.tags?.map(codeStubToCode),\n\t\t\t\t\t\t\t\tvalueDate: sm.valueDate,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t),\n\t\t).reduce((acc, [id, history]) => {\n\t\t\treturn {\n\t\t\t\t...acc,\n\t\t\t\t[id]: history.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\trevision,\n\t\t\t\t\tmodified,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tcontent: Object.entries(s.content ?? {}).reduce((acc, [lng, cnt]) => {\n\t\t\t\t\t\t\tconst converted = contentToPrimitiveType(lng, cnt)\n\t\t\t\t\t\t\treturn converted ? { ...acc, [lng]: converted } : acc\n\t\t\t\t\t\t}, {}),\n\t\t\t\t\t\tcodes: s.codes?.map(codeStubToCode),\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t}\n\t\t}, {} as VersionedData<FieldValue>)\n\t}\n\n\tgetMetadata(id: string, revisions: (string | null)[]): VersionedData<FieldMetadata> {\n\t\treturn Object.entries(this.contactFormValuesContainer.getMetadata(id, revisions)).reduce(\n\t\t\t(acc, [id, history]) => ({\n\t\t\t\t...acc,\n\t\t\t\t[id]: history.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\trevision,\n\t\t\t\t\tmodified,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tlabel: s.label,\n\t\t\t\t\t\towner: s.responsible,\n\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\tdiscordantMetadata: () => ({\n\t\t\t\t\t\t\t...(s.responsible !== this.responsible ? { owner: this.responsible } : {}),\n\t\t\t\t\t\t\t...(Math.abs(+(anyDateToDate(s.valueDate) ?? 0) - +(anyDateToDate(this.contact.created) ?? 0)) > 24 * 3600000 ? { valueDate: s.valueDate } : {}),\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t}),\n\t\t\t{},\n\t\t)\n\t}\n\n\tprivate convertRawValue(rawValue: unknown): FieldValue | undefined {\n\t\tif (rawValue && typeof rawValue === 'object' && 'content' in rawValue) {\n\t\t\treturn rawValue as FieldValue\n\t\t}\n\n\t\tif (Array.isArray(rawValue)) {\n\t\t\treturn rawValue.reduce(\n\t\t\t\t(acc: FieldValue, it, idx) => {\n\t\t\t\t\tconst fv = this.convertRawValue(it)\n\t\t\t\t\tif (fv === undefined) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\t\t\t\t\tacc.codes = [...(fv.codes ?? []), ...(acc.codes ?? [])]\n\t\t\t\t\tacc.content['*'] = fv.content['*']?.value\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...acc.content['*'],\n\t\t\t\t\t\t\t\t[(fv.codes ?? [])[0].id ?? idx.toString()]: fv.content['*'].value,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: acc.content['*']\n\t\t\t\t\treturn acc\n\t\t\t\t},\n\t\t\t\t{ content: { '*': { type: 'compound', value: {} } } },\n\t\t\t)\n\t\t}\n\n\t\tif (typeof rawValue === 'number') {\n\t\t\treturn { content: { '*': { type: 'number', value: rawValue } } }\n\t\t}\n\n\t\tif (typeof rawValue === 'string') {\n\t\t\treturn { content: { '*': { type: 'string', value: rawValue } } }\n\t\t}\n\n\t\tif (typeof rawValue === 'boolean') {\n\t\t\treturn { content: { '*': { type: 'boolean', value: rawValue } } }\n\t\t}\n\n\t\tif (rawValue instanceof Date) {\n\t\t\treturn { content: { '*': { type: 'timestamp', value: dateToFuzzyDate(rawValue) } } }\n\t\t}\n\n\t\tif (rawValue && typeof rawValue === 'object' && 'unit' in rawValue && 'value' in rawValue && typeof rawValue.value === 'number') {\n\t\t\treturn { content: { '*': { type: 'measure', value: rawValue.value, unit: rawValue.unit?.toString() ?? '' } } }\n\t\t}\n\n\t\treturn undefined\n\t}\n\n\t//This method mutates the BridgedFormValuesContainer but can only be called from the constructor\n\tprivate async computeInitialValues() {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\tawait Promise.all(\n\t\t\t\tthis.initialValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).map(async ({ metadata, revisionsFilter, formula }) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentValue = this.getValues(revisionsFilter)\n\t\t\t\t\t\tif (!currentValue || !Object.keys(currentValue).length) {\n\t\t\t\t\t\t\tconst newValue = this.convertRawValue((await this.compute(formula)) as unknown)\n\t\t\t\t\t\t\tif (newValue !== undefined) {\n\t\t\t\t\t\t\t\tconst lng = this.language ?? 'en'\n\t\t\t\t\t\t\t\tif (newValue && !newValue.content[lng] && newValue.content['*']) {\n\t\t\t\t\t\t\t\t\tnewValue.content[lng] = newValue.content['*']\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\t\tdelete newValue.content['*']\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsetValueOnContactFormValuesContainer(this.contactFormValuesContainer, metadata.label, lng, newValue, undefined, metadata, (fvc: ContactFormValuesContainer) => {\n\t\t\t\t\t\t\t\t\tconst currentContact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\t\t\t\tthis.contactFormValuesContainer = fvc\n\t\t\t\t\t\t\t\t\tif (this.contact === currentContact) {\n\t\t\t\t\t\t\t\t\t\tthis.contact = fvc.currentContact\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.log(`Error while computing formula : ${formula}`, e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\t//This method mutates the BridgedFormValuesContainer but can only be called from the constructor\n\tprivate async computeDependentValues() {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\tawait Promise.all(\n\t\t\t\tthis.dependentValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).map(async ({ metadata, revisionsFilter, formula }) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentValue = this.getValues(revisionsFilter)\n\t\t\t\t\t\tconst newValue = this.convertRawValue((await this.compute(formula)) as unknown)\n\n\t\t\t\t\t\tif (newValue !== undefined || currentValue != undefined) {\n\t\t\t\t\t\t\tconst lng = this.language ?? 'en'\n\t\t\t\t\t\t\tif (newValue && !newValue.content[lng] && newValue.content['*']) {\n\t\t\t\t\t\t\t\tnewValue.content[lng] = newValue.content['*']\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tdelete newValue.content['*']\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst interceptor = (fvc: ContactFormValuesContainer) => {\n\t\t\t\t\t\t\t\tconst currentContact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\t\t\tthis.contactFormValuesContainer = fvc\n\t\t\t\t\t\t\t\tif (this.contact === currentContact) {\n\t\t\t\t\t\t\t\t\tthis.contact = fvc.currentContact\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetValueOnContactFormValuesContainer(this.contactFormValuesContainer, metadata.label, lng, newValue, Object.keys(currentValue ?? {})[0], metadata, interceptor)\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.log(`Error while computing formula : ${formula}`, e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tsetValue(label: string, language: string, fv?: FieldValue, id?: string, metadata?: FieldMetadata): void {\n\t\tsetValueOnContactFormValuesContainer(this.contactFormValuesContainer, label, language, fv, id, metadata)\n\t}\n\n\tsetMetadata(meta: FieldMetadata, id?: string | undefined): void {\n\t\tthis.contactFormValuesContainer.setMetadata(\n\t\t\t{\n\t\t\t\tlabel: meta.label,\n\t\t\t\tresponsible: meta.owner,\n\t\t\t\tvalueDate: meta.valueDate,\n\t\t\t\ttags: meta.tags?.map((x) => new CodeStub(x)),\n\t\t\t},\n\t\t\tid,\n\t\t)\n\t}\n\n\tdelete(serviceId: string): void {\n\t\tthis.contactFormValuesContainer.delete(serviceId)\n\t}\n\n\tprivate getVersionedValuesForKey(key: string | symbol) {\n\t\treturn this.getValues((id, history) => (history?.[0]?.value?.label && key === history[0].value.label ? [history?.[0]?.revision] : []))\n\t}\n\n\tasync compute<\n\t\tT,\n\t\tS extends {\n\t\t\t[key: string | symbol]: unknown\n\t\t},\n\t>(formula: string, sandbox?: S): Promise<T | undefined> {\n\t\t// noinspection JSUnusedGlobalSymbols\n\t\tconst parseContent = (content?: { [key: string]: PrimitiveType }, toString = false) => {\n\t\t\tif (!content) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst primitive = content[this.language] ?? content['*'] ?? content[Object.keys(content)[0]]\n\t\t\treturn primitive && parsePrimitive(primitive, toString)\n\t\t}\n\t\tconst text = (item?: { content: { [key: string]: PrimitiveType } } | { content: { [key: string]: PrimitiveType } }[]) => {\n\t\t\tif (!item) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst items: { content: { [key: string]: PrimitiveType } }[] = Array.isArray(item) ? item : [item]\n\t\t\treturn items\n\t\t\t\t.map((it) => parseContent(it.content, true)?.toString())\n\t\t\t\t.filter((it) => !!it)\n\t\t\t\t.join(', ')\n\t\t}\n\t\tconst log = console.log\n\t\tconst native = {\n\t\t\tparseInt: parseInt,\n\t\t\tparseFloat: parseFloat,\n\t\t\tDate: Date,\n\t\t\tMath: Math,\n\t\t\tNumber: Number,\n\t\t\tString: String,\n\t\t\tBoolean: Boolean,\n\t\t\tArray: Array,\n\t\t\tObject: Object,\n\t\t\thasOption: (\n\t\t\t\tit: {\n\t\t\t\t\tcodes: CodeStub[]\n\t\t\t\t},\n\t\t\t\toption: string,\n\t\t\t) => it && it.codes?.some((c) => c.id === option || c.id?.split('|')?.[1] === option),\n\t\t\tscore: (it: { codes: CodeStub[] }) => {\n\t\t\t\treturn it\n\t\t\t\t\t? (it.codes ?? []).reduce((acc, c) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\treturn acc + parseInt(c.id?.split('|')?.[1] ?? '0')\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn acc\n\t\t\t\t\t\t\t}\n\t\t\t\t\t }, 0)\n\t\t\t\t\t: 0\n\t\t\t},\n\t\t\tparseContent,\n\t\t\tvalidate: {\n\t\t\t\tnotBlank: (self: any, label: string) => {\n\t\t\t\t\tconst value = parseContent((self[label as any] as any)?.[0]?.content)\n\t\t\t\t\treturn !!(value as any)?.trim()?.length\n\t\t\t\t},\n\t\t\t},\n\t\t\ttext,\n\t\t\tlog,\n\t\t\tPromise,\n\t\t} as { [key: string]: any }\n\t\tconst proxy: S = new Proxy({} as S, {\n\t\t\thas: (target: S, key: string | symbol) =>\n\t\t\t\t!!native[key as string] || key === 'self' || !!this.interpreterContext[key as string] || Object.keys(this.getVersionedValuesForKey(key) ?? {}).length > 0,\n\t\t\tget: (target: S, key: string | symbol) => {\n\t\t\t\tif (key === 'undefined') {\n\t\t\t\t\treturn undefined\n\t\t\t\t}\n\t\t\t\tconst nativeValue = native[key as string]\n\t\t\t\tif (!!nativeValue) {\n\t\t\t\t\treturn nativeValue\n\t\t\t\t}\n\t\t\t\treturn key === 'self' ? proxy : this.interpreterContext[key as string] ? this.interpreterContext[key as string]() : Object.values(this.getVersionedValuesForKey(key)).map((v) => v[0]?.value)\n\t\t\t},\n\t\t})\n\t\treturn this.interpreter?.(formula, sandbox ?? proxy)\n\t}\n\n\tasync getChildren(): Promise<FormValuesContainer<FieldValue, FieldMetadata>[]> {\n\t\tconst children = await Promise.all(\n\t\t\t(\n\t\t\t\tawait this.contactFormValuesContainer.getChildren()\n\t\t\t).map((fvc) =>\n\t\t\t\tnew BridgedFormValuesContainer(\n\t\t\t\t\tthis.responsible,\n\t\t\t\t\tfvc,\n\t\t\t\t\tthis.interpreter,\n\t\t\t\t\tthis.contact,\n\t\t\t\t\tthis.initialValuesProvider,\n\t\t\t\t\tthis.dependentValuesProvider,\n\t\t\t\t\tthis.validatorsProvider,\n\t\t\t\t\tthis.language,\n\t\t\t\t\t[],\n\t\t\t\t\tthis.interpreterContext,\n\t\t\t\t).init(),\n\t\t\t),\n\t\t)\n\t\tconsole.log(`${children.length} children found in ${this.contactFormValuesContainer.rootForm.formTemplateId} initialised with `, this.initialValuesProvider)\n\t\treturn children\n\t}\n\n\tasync getValidationErrors(): Promise<[FieldMetadata, string][]> {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\t// noinspection ES6MissingAwait\n\t\t\treturn await this.validatorsProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).reduce(\n\t\t\t\tasync (resPromise, { metadata, validators }) =>\n\t\t\t\t\tawait validators.reduce(async (resPromise, { validation, message }) => {\n\t\t\t\t\t\tconst res = await resPromise\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (!(await this.compute(validation))) {\n\t\t\t\t\t\t\t\tres.push([metadata, message])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.log(`Error while computing validation : ${validation}`, e)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn res\n\t\t\t\t\t}, resPromise),\n\t\t\t\tPromise.resolve([]) as Promise<[FieldMetadata, string][]>,\n\t\t\t)\n\t\t} else {\n\t\t\treturn []\n\t\t}\n\t}\n\n\tasync addChild(anchorId: string, templateId: string, label: string): Promise<void> {\n\t\tawait this.contactFormValuesContainer.addChild(anchorId, templateId, label)\n\t}\n\n\tasync removeChild(container: BridgedFormValuesContainer): Promise<void> {\n\t\tawait this.contactFormValuesContainer.removeChild(container.contactFormValuesContainer)\n\t}\n\n\tsynchronise() {\n\t\tthis.contactFormValuesContainer.synchronise()\n\t\treturn this\n\t}\n}\n\n/**\n * This class is a form values container that uses a hierarchy of forms as a data source. The actual values are extracted from the services of the contacts.\n * The `currentContact` is the contact that has been selected by the user, any later contact should be ignored.\n * The `contactsHistory` is used to provide the full history of the services.\n * The hierarchy of ContactFormValuesContainer has to be maintained by the manager of the instances of this class (typically the BridgedFormValuesContainer).\n * Each ContactFormValuesContainer has a reference to its `rootForm`.\n * The `serviceFactory` and `formFactory` are used to create new services and add sub-forms.\n */\nexport class ContactFormValuesContainer implements FormValuesContainer<DecryptedService, ServiceMetadata> {\n\trootForm: CardinalForm\n\tcurrentContact: DecryptedContact //The contact of the moment, used to record new modifications\n\tcontactsHistory: DecryptedContact[] //Must be sorted (most recent first), contains all the contacts linked to this form\n\tchildren: ContactFormValuesContainer[] //Direct children of the ContactFormValuesContainer\n\tserviceFactory: (label: string, serviceId?: string) => DecryptedService\n\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>\n\tformRecycler: (formId: string) => Promise<void>\n\n\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[]\n\tprivate _id: string = uuidv4()\n\tprivate _initialised = false\n\tprivate indexedServices: { [id: string]: Version<DecryptedService>[] }\n\n\ttoString(): string {\n\t\treturn `Contact(${this.rootForm.formTemplateId}[${this.rootForm.id}]) - ${this._id}`\n\t}\n\n\tmustBeInitialised() {\n\t\treturn !this._initialised\n\t}\n\n\t/**\n\t * Returns a contact that combines the content of the contact in this form with the content of all contents stored in the children\n\t */\n\tcoordinatedContact(): DecryptedContact {\n\t\tconst childrenContacts = this.children.map((c) => c.coordinatedContact())\n\t\tconst thisKeptServiceIds = (this.currentContact.subContacts ?? []).filter((sc) => sc.formId === this.rootForm.id).flatMap((sc) => (sc.services ?? []).map((s) => s.serviceId))\n\t\treturn new DecryptedContact({\n\t\t\t...this.currentContact,\n\t\t\tservices: childrenContacts\n\t\t\t\t.reduce((acc: DecryptedService[], c: DecryptedContact) => acc.concat(c.services ?? []), [])\n\t\t\t\t.concat((this.currentContact.services ?? []).filter((s) => thisKeptServiceIds.includes(s.id))),\n\t\t\tsubContacts: childrenContacts\n\t\t\t\t.reduce((acc: DecryptedSubContact[], c: DecryptedContact) => acc.concat(c.subContacts ?? []), [])\n\t\t\t\t.concat((this.currentContact.subContacts ?? []).filter((s) => s.formId === this.rootForm.id)),\n\t\t})\n\t}\n\n\t/**\n\t * Returns a contact that combines the content of the contact in this form with the content of all contents stored in the children\n\t */\n\tallForms(): CardinalForm[] {\n\t\treturn [this.rootForm].concat(this.children.flatMap((c) => c.allForms()))\n\t}\n\n\tconstructor(\n\t\trootForm: CardinalForm,\n\t\tcurrentContact: DecryptedContact,\n\t\tcontactsHistory: DecryptedContact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => DecryptedService,\n\t\tchildren: ContactFormValuesContainer[],\n\t\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>,\n\t\tformRecycler: (formId: string) => Promise<void>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[] = [],\n\t\tinitialised = true,\n\t) {\n\t\tconsole.log(`Creating contact FVC (${rootForm.formTemplateId}) with ${children.length} children [${this._id}]`)\n\n\t\tif (contactsHistory.includes(currentContact)) {\n\t\t\tthrow new Error('Illegal argument, the history must not contain the currentContact')\n\t\t}\n\t\tthis.rootForm = rootForm\n\t\tthis.currentContact = currentContact\n\t\tthis.contactsHistory = sortedBy(contactsHistory, 'created', 'desc')\n\t\tthis.children = children\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.formFactory = formFactory\n\t\tthis.formRecycler = formRecycler\n\t\tthis.changeListeners = changeListeners\n\t\tthis._initialised = initialised\n\n\t\tthis.indexedServices = [this.currentContact].concat(this.contactsHistory).reduce((acc, ctc) => {\n\t\t\tconst services =\n\t\t\t\tctc.services\n\t\t\t\t\t?.filter((s) => ctc.subContacts?.some((sc) => sc.formId === this.rootForm.id && sc.services?.some((sss) => sss.serviceId === s.id)))\n\t\t\t\t\t?.reduce(\n\t\t\t\t\t\t(acc, s) =>\n\t\t\t\t\t\t\ts.id\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t\t[s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({\n\t\t\t\t\t\t\t\t\t\t\trevision: ctc.rev ?? null,\n\t\t\t\t\t\t\t\t\t\t\tmodified: ctc.created,\n\t\t\t\t\t\t\t\t\t\t\tvalue: s,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t\tacc,\n\t\t\t\t\t) ?? acc\n\t\t\treturn services\n\t\t}, {} as VersionedData<DecryptedService>)\n\n\t\tthis.synchronise()\n\t}\n\n\tsynchronise() {\n\t\tthis.children.forEach((childFVC) => {\n\t\t\tthis.registerChildFormValuesContainer(childFVC.synchronise())\n\t\t})\n\t\treturn this\n\t}\n\n\t//Make sure that when a child is changed, a new version of this is created with the updated child\n\tregisterChildFormValuesContainer(childFormValueContainer: ContactFormValuesContainer) {\n\t\tchildFormValueContainer.changeListeners = [\n\t\t\t(newValue) => {\n\t\t\t\tconsole.log(`Child ${newValue._id} ${childFormValueContainer.rootForm.formTemplateId} changed, updating parent ${this._id} ${this.rootForm.formTemplateId}`)\n\t\t\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\t\tthis.rootForm,\n\t\t\t\t\tthis.currentContact,\n\t\t\t\t\tthis.contactsHistory,\n\t\t\t\t\tthis.serviceFactory,\n\t\t\t\t\tthis.children.map((c) => {\n\t\t\t\t\t\treturn c.rootForm.id === childFormValueContainer.rootForm.id ? newValue : c\n\t\t\t\t\t}),\n\t\t\t\t\tthis.formFactory,\n\t\t\t\t\tthis.formRecycler,\n\t\t\t\t)\n\t\t\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer))\n\t\t\t},\n\t\t]\n\t}\n\n\tstatic async fromFormsHierarchy(\n\t\trootForm: CardinalForm,\n\t\tcurrentContact: DecryptedContact,\n\t\tcontactsHistory: DecryptedContact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => DecryptedService,\n\t\tformChildrenProvider: (parentId: string | undefined) => Promise<CardinalForm[]>,\n\t\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>,\n\t\tformRecycler: (formId: string) => Promise<void>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[] = [],\n\t): Promise<ContactFormValuesContainer> {\n\t\tconst contactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\trootForm,\n\t\t\tcurrentContact,\n\t\t\tcontactsHistory,\n\t\t\tserviceFactory,\n\t\t\trootForm.id\n\t\t\t\t? await Promise.all(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tawait formChildrenProvider(rootForm.id)\n\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\tasync (f) =>\n\t\t\t\t\t\t\t\t// eslint-disable-next-line max-len\n\t\t\t\t\t\t\t\tawait ContactFormValuesContainer.fromFormsHierarchy(f, currentContact, contactsHistory, serviceFactory, formChildrenProvider, formFactory, formRecycler),\n\t\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: [],\n\t\t\tformFactory,\n\t\t\tformRecycler,\n\t\t\tchangeListeners,\n\t\t\tfalse,\n\t\t)\n\t\tcontactFormValuesContainer.children.forEach((childFVC) => contactFormValuesContainer.registerChildFormValuesContainer(childFVC))\n\n\t\treturn contactFormValuesContainer\n\t}\n\n\tgetLabel(): string {\n\t\treturn this.rootForm.descr ?? ''\n\t}\n\n\tgetFormId(): string | undefined {\n\t\treturn this.rootForm?.formTemplateId\n\t}\n\n\tregisterChangeListener(listener: (newValue: ContactFormValuesContainer) => void): void {\n\t\tthis.changeListeners.push(listener)\n\t}\n\n\tunregisterChangeListener(listener: (newValue: ContactFormValuesContainer) => void): void {\n\t\tthis.changeListeners = this.changeListeners.filter((l) => l !== listener)\n\t}\n\n\tasync getChildren(): Promise<ContactFormValuesContainer[]> {\n\t\treturn this.children\n\t}\n\n\tasync getValidationErrors(): Promise<[FieldMetadata, string][]> {\n\t\tthrow new Error('Validation not supported at contact level')\n\t}\n\n\tgetDefaultValue(): Promise<FieldValue | undefined> {\n\t\treturn Promise.resolve(undefined)\n\t}\n\n\tgetValues(revisionsFilter: (id: string, history: Version<ServiceMetadata>[]) => (string | null)[]): VersionedData<DecryptedService> {\n\t\treturn Object.entries(this.getServicesInHistory(revisionsFilter)).reduce(\n\t\t\t(acc, [id, history]) =>\n\t\t\t\thistory.length\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[id]: [...history].sort((a, b) => (b?.modified || +new Date()) - (a?.modified || +new Date())),\n\t\t\t\t\t }\n\t\t\t\t\t: acc,\n\t\t\t{},\n\t\t)\n\t}\n\n\tgetMetadata(id: string, revisions: (string | null)[]): VersionedData<ServiceMetadata> {\n\t\treturn [this.currentContact]\n\t\t\t.concat(this.contactsHistory)\n\t\t\t.filter((ctc) => ctc.rev !== undefined && revisions.includes(ctc.rev))\n\t\t\t.reduce(\n\t\t\t\t(acc, ctc) =>\n\t\t\t\t\t(ctc.services ?? [])\n\t\t\t\t\t\t.filter((s) => s.id === id)\n\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\t(acc, s) =>\n\t\t\t\t\t\t\t\ts.id\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t\t\t[s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({\n\t\t\t\t\t\t\t\t\t\t\t\trevision: ctc.rev ?? null,\n\t\t\t\t\t\t\t\t\t\t\t\tmodified: s.modified,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: s.label ?? s.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tresponsible: s.responsible,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t) ?? acc,\n\t\t\t\t{} as { [id: string]: Version<ServiceMetadata>[] },\n\t\t\t) //index services in history by id\n\t}\n\n\tsetMetadata(meta: ServiceMetadata, id?: string): void {\n\t\tconst service = (id && this.getServiceInCurrentContact(id)) || this.serviceFactory(meta.label, id)\n\t\tif (!service.id) {\n\t\t\tthrow new Error('Service id must be defined')\n\t\t}\n\t\tif (\n\t\t\t(meta.responsible && service.responsible !== meta.responsible) ||\n\t\t\t(meta.valueDate && service.valueDate !== meta.valueDate) ||\n\t\t\t(meta.codes && service.codes !== meta.codes) ||\n\t\t\t(meta.tags && service.tags !== meta.tags)\n\t\t) {\n\t\t\tconst newService = new DecryptedService({ ...service, modified: Date.now() })\n\t\t\tmeta.responsible && (newService.responsible = meta.responsible)\n\t\t\tmeta.valueDate && (newService.valueDate = meta.valueDate)\n\t\t\tmeta.codes && (newService.codes = normalizeCodes(meta.codes))\n\t\t\tmeta.tags && (newService.tags = normalizeCodes(meta.tags))\n\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\t{\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tservices: this.currentContact.services?.map((s) => (s.id === service.id ? newService : s)),\n\t\t\t\t},\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newFormValuesContainer))\n\t\t}\n\t}\n\n\tsetValue(label: string, language: string, value?: DecryptedService, id?: string, metadata?: ServiceMetadata, changeListenersOverrider?: (fvc: ContactFormValuesContainer) => void): void {\n\t\tconst service = (id && this.getServicesInHistory((sid: string, history) => (sid === id ? history.map((x) => x.revision) : []))[id]?.[0]?.value) || this.serviceFactory(label, id)\n\t\tif (!service.id) {\n\t\t\tthrow new Error('Service id must be defined')\n\t\t}\n\t\tconsole.log('Setting value of service', service.id, 'with', value, 'and metadata', metadata)\n\t\tconst newContent = value?.content?.[language]\n\t\tconst newCodes = value?.codes ? normalizeCodes(value.codes) : []\n\t\tif (!isContentEqual(service.content?.[language], newContent) || (newCodes && !areCodesEqual(newCodes, service.codes ?? []))) {\n\t\t\tconst newService = new DecryptedService({ ...service, modified: Date.now() })\n\t\t\tconst newContents = newContent\n\t\t\t\t? {\n\t\t\t\t\t\t...(service.content || {}),\n\t\t\t\t\t\t[language]: newContent,\n\t\t\t\t }\n\t\t\t\t: { ...(service.content || {}) }\n\t\t\tif (!newContent) {\n\t\t\t\tdelete newContents[language]\n\t\t\t}\n\n\t\t\tlet newCurrentContact: DecryptedContact\n\t\t\tif (!Object.entries(newContents).filter(([, cnt]) => cnt !== undefined).length) {\n\t\t\t\tnewCurrentContact = {\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tsubContacts: (this.currentContact.subContacts ?? []).some((sc) => sc.formId === this.rootForm.id)\n\t\t\t\t\t\t? (this.currentContact.subContacts ?? []).map((sc) => {\n\t\t\t\t\t\t\t\tif (sc.formId === this.rootForm.id) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...sc,\n\t\t\t\t\t\t\t\t\t\tservices: (sc.services ?? []).filter((s) => s.serviceId !== service.id).concat([{ serviceId: service.id }]),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn sc\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: (this.currentContact.subContacts ?? []).concat(\n\t\t\t\t\t\t\t\tnew DecryptedSubContact({\n\t\t\t\t\t\t\t\t\tformId: this.rootForm.id,\n\t\t\t\t\t\t\t\t\tservices: [{ serviceId: service.id }],\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t ),\n\t\t\t\t\tservices: (this.currentContact.services ?? []).some((s) => s.id === service.id)\n\t\t\t\t\t\t? (this.currentContact.services ?? []).filter((s) => s.id !== service.id)\n\t\t\t\t\t\t: [...(this.currentContact.services ?? [])],\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewService.content = newContents\n\t\t\t\tnewService.codes = newCodes\n\n\t\t\t\tif (metadata) {\n\t\t\t\t\tnewService.responsible = metadata.responsible ?? newService.responsible\n\t\t\t\t\tnewService.valueDate = metadata.valueDate ?? newService.valueDate\n\t\t\t\t\tnewService.tags = metadata.tags ? normalizeCodes(metadata.tags) : newService.tags\n\t\t\t\t\tnewService.label = metadata.label ?? newService.label\n\t\t\t\t}\n\n\t\t\t\tnewCurrentContact = {\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tsubContacts: (this.currentContact.subContacts ?? []).some((sc) => sc.formId === this.rootForm.id)\n\t\t\t\t\t\t? (this.currentContact.subContacts ?? []).map((sc) => {\n\t\t\t\t\t\t\t\tif (sc.formId === this.rootForm.id) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...sc,\n\t\t\t\t\t\t\t\t\t\tservices: (sc.services ?? []).filter((s) => s.serviceId !== service.id).concat([{ serviceId: service.id }]),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn sc\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: (this.currentContact.subContacts ?? []).concat(\n\t\t\t\t\t\t\t\tnew DecryptedSubContact({\n\t\t\t\t\t\t\t\t\tformId: this.rootForm.id,\n\t\t\t\t\t\t\t\t\tservices: [{ serviceId: service.id }],\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t ),\n\t\t\t\t\tservices: (this.currentContact.services ?? []).some((s) => s.id === service.id)\n\t\t\t\t\t\t? (this.currentContact.services ?? []).map((s) => (s.id === service.id ? newService : s))\n\t\t\t\t\t\t: [...(this.currentContact.services ?? []), newService],\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tnewCurrentContact,\n\t\t\t\tthis.contactsHistory.map((c) => (c === this.currentContact ? newCurrentContact : c)),\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tchangeListenersOverrider ? changeListenersOverrider(newFormValuesContainer) : this.changeListeners.forEach((l) => notify(l, newFormValuesContainer))\n\t\t}\n\t}\n\n\tdelete(serviceId: string): void {\n\t\tconst service = this.getServiceInCurrentContact(serviceId)\n\t\tif (service) {\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\t{\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tservices: this.currentContact.services?.map((s) =>\n\t\t\t\t\t\ts.id === serviceId\n\t\t\t\t\t\t\t? new DecryptedService({\n\t\t\t\t\t\t\t\t\t...service,\n\t\t\t\t\t\t\t\t\tendOfLife: Date.now(),\n\t\t\t\t\t\t\t })\n\t\t\t\t\t\t\t: s,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newFormValuesContainer))\n\t\t}\n\t}\n\n\tasync compute<T>(): Promise<T | undefined> {\n\t\tthrow new Error('Compute not supported at contact level')\n\t}\n\n\t/** returns all services in history that match a selector\n\t *\n\t * @private\n\t * @param revisionsFilter\n\t */\n\tprivate getServicesInHistory(revisionsFilter: (id: string, history: Version<ServiceMetadata>[]) => (string | null)[]): VersionedData<DecryptedService> {\n\t\t//index services in history by id\n\t\treturn Object.entries(this.indexedServices)\n\t\t\t.map(([id, history]) => {\n\t\t\t\tconst keptRevisions = revisionsFilter(\n\t\t\t\t\tid,\n\t\t\t\t\thistory.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\t\trevision,\n\t\t\t\t\t\tmodified,\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tlabel: s.label ?? s.id ?? '',\n\t\t\t\t\t\t\towner: s.responsible,\n\t\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\t\tcodes: s.codes,\n\t\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\t},\n\t\t\t\t\t})),\n\t\t\t\t)\n\t\t\t\treturn [id, history.filter(({ revision }) => keptRevisions.includes(revision))] as [string, Version<DecryptedService>[]]\n\t\t\t})\n\t\t\t.reduce((acc, [id, history]) => ({ ...acc, [id]: history }), {})\n\t}\n\n\tasync addChild(anchorId: string, templateId: string, label: string): Promise<void> {\n\t\tconst parentId = this.rootForm.id\n\t\tif (!parentId) return\n\n\t\tconst newForm = await this.formFactory(parentId, anchorId, templateId, label)\n\t\tconst childFVC = new ContactFormValuesContainer(newForm, this.currentContact, this.contactsHistory, this.serviceFactory, [], this.formFactory, this.formRecycler, [], false)\n\n\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\tthis.rootForm,\n\t\t\tthis.currentContact,\n\t\t\tthis.contactsHistory,\n\t\t\tthis.serviceFactory,\n\t\t\t[...this.children, childFVC],\n\t\t\tthis.formFactory,\n\t\t\tthis.formRecycler,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tnewContactFormValuesContainer.registerChildFormValuesContainer(childFVC)\n\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer))\n\t}\n\n\tprivate getServiceInCurrentContact(id: string): DecryptedService | undefined {\n\t\tconst service = (this.currentContact.services || [])?.find((s) => s.id === id)\n\t\treturn service ?? undefined\n\t}\n\n\tasync removeChild(container: ContactFormValuesContainer): Promise<void> {\n\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\tthis.rootForm,\n\t\t\tthis.currentContact,\n\t\t\tthis.contactsHistory,\n\t\t\tthis.serviceFactory,\n\t\t\tthis.children.filter((c) => c.rootForm.id !== container.rootForm.id),\n\t\t\tthis.formFactory,\n\t\t\tthis.formRecycler,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer))\n\t}\n}\n\nconst setValueOnContactFormValuesContainer = (\n\tcfvc: ContactFormValuesContainer,\n\tlabel: string,\n\tlanguage: string,\n\tfv?: FieldValue,\n\tid?: string,\n\tmetadata?: FieldMetadata,\n\tchangeListenersOverrider?: (fvc: ContactFormValuesContainer) => void,\n) => {\n\tconst value = fv?.content[language]\n\tcfvc.setValue(\n\t\tlabel,\n\t\tlanguage,\n\t\tnew DecryptedService({\n\t\t\tid: id,\n\t\t\tcodes: fv?.codes?.map((x) => new CodeStub(x)) ?? [],\n\t\t\tcontent: value\n\t\t\t\t? {\n\t\t\t\t\t\t[language]: primitiveTypeToContent(language, value),\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t}),\n\t\tid,\n\t\tmetadata\n\t\t\t? {\n\t\t\t\t\tlabel: metadata?.label ?? label,\n\t\t\t\t\tresponsible: metadata?.owner,\n\t\t\t\t\tvalueDate: metadata?.valueDate,\n\t\t\t\t\ttags: metadata?.tags?.map((x) => new CodeStub(x)),\n\t\t\t }\n\t\t\t: undefined,\n\t\tchangeListenersOverrider,\n\t)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"form-values-container.js","sourceRoot":"","sources":["../../tmp/icure/form-values-container.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAiC,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACnJ,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAI7C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,sBAAsB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC7H,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,SAAS,MAAM,CAAkB,CAAsD,EAAE,GAAyC;IACjI,CAAC,CAAC,GAAG,CAAC,CAAA;AACP,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,0BAA0B;IAMtC,QAAQ;QACP,OAAO,WAAW,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAA;IAC3I,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,YACS,WAAmB,EAC3B,0BAAsD,EAC9C,WAQmB,EAC3B,OAA0B,EAClB,wBAOF,GAAG,EAAE,CAAC,EAAE,EACN,0BAOF,GAAG,EAAE,CAAC,EAAE,EACN,qBAMF,GAAG,EAAE,CAAC,EAAE,EACN,WAAW,IAAI,EACf,kBAAsE,EAAE,EACxE,qBAA4D,EAAE;QArC9D,gBAAW,GAAX,WAAW,CAAQ;QAEnB,gBAAW,GAAX,WAAW,CAQQ;QAEnB,0BAAqB,GAArB,qBAAqB,CAOf;QACN,4BAAuB,GAAvB,uBAAuB,CAOjB;QACN,uBAAkB,GAAlB,kBAAkB,CAMZ;QACN,aAAQ,GAAR,QAAQ,CAAO;QACf,oBAAe,GAAf,eAAe,CAAyD;QACxE,uBAAkB,GAAlB,kBAAkB,CAA4C;QA1D/D,QAAG,GAAW,MAAM,EAAE,CAAA;QA4D7B,OAAO,CAAC,GAAG,CAAC,wBAAwB,0BAA0B,CAAC,QAAQ,CAAC,cAAc,UAAU,0BAA0B,CAAC,QAAQ,CAAC,MAAM,cAAc,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACpK,gHAAgH;QAChH,IAAI,CAAC,0BAA0B,GAAG,0BAA0B,CAAA;QAC5D,IAAI,CAAC,eAAe,GAAG,CAAO,6BAAyD,EAAE,EAAE;YAC1F,6BAA6B,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAC5E,MAAM,4BAA4B,GAAG,MAAM,IAAI,0BAA0B,CACxE,IAAI,CAAC,WAAW,EAChB,6BAA6B,EAC7B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC7H,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,kBAAkB,CACvB,CAAC,IAAI,EAAE,CAAA;YACR,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC,CAAA;YAC5E,OAAO,4BAA4B,CAAA;QACpC,CAAC,CAAA,CAAA;QACD,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC5E,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,0BAA0B,CAAC,cAAc,CAAA;IACpE,CAAC;IAEK,IAAI;;YACT,IAAI,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBACzD,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAClC,CAAC;YACD,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;YAEnC,OAAO,IAAI,CAAA;QACZ,CAAC;KAAA;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAA;IAClD,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,CAAA;IACnD,CAAC;IAED,6BAA6B;QAC5B,OAAO,IAAI,CAAC,0BAA0B,CAAA;IACvC,CAAC;IAED,sBAAsB,CAAC,QAAwD;QAC9E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,wBAAwB,CAAC,QAAwD;QAChF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC1E,CAAC;IAEK,eAAe,CAAC,KAAa;;;YAClC,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CACvJ,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,CAC1C,0CAAE,OAAO,CAAA;YACV,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC/E,CAAC;KAAA;IAED,SAAS,CAAC,eAAqF;QAC9F,OAAO,MAAM,CAAC,OAAO,CACpB,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CACzD,eAAe,CACd,EAAE,EACF,OAAO;aACL,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;aAChG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;;YAAC,OAAA,CAAC;gBAC5C,QAAQ;gBACR,QAAQ;gBACR,KAAK,EAAE;oBACN,KAAK,EAAE,EAAE,CAAC,KAAK;oBACf,KAAK,EAAE,EAAE,CAAC,WAAW;oBACrB,IAAI,EAAE,MAAA,EAAE,CAAC,IAAI,0CAAE,GAAG,CAAC,cAAc,CAAC;oBAClC,SAAS,EAAE,EAAE,CAAC,SAAS;iBACvB;aACD,CAAC,CAAA;SAAA,CAAC,CACJ,CACD,CACD,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;YAC/B,uCACI,GAAG,KACN,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;;oBAAC,OAAA,CAAC;wBACxD,QAAQ;wBACR,QAAQ;wBACR,KAAK,EAAE;4BACN,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAA,CAAC,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;gCACnE,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gCAClD,OAAO,SAAS,CAAC,CAAC,iCAAM,GAAG,KAAE,CAAC,GAAG,CAAC,EAAE,SAAS,IAAG,CAAC,CAAC,GAAG,CAAA;4BACtD,CAAC,EAAE,EAAE,CAAC;4BACN,KAAK,EAAE,MAAA,CAAC,CAAC,KAAK,0CAAE,GAAG,CAAC,cAAc,CAAC;yBACnC;qBACD,CAAC,CAAA;iBAAA,CAAC,IACH;QACF,CAAC,EAAE,EAA+B,CAAC,CAAA;IACpC,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,SAA4B;QACnD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CACvF,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,iCACpB,GAAG,KACN,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxD,QAAQ;gBACR,QAAQ;gBACR,KAAK,EAAE;oBACN,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,CAAC,CAAC,WAAW;oBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,kBAAkB,EAAE,GAAG,EAAE;;wBAAC,OAAA,iCACtB,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACvE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAA,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC/I,CAAA;qBAAA;iBACF;aACD,CAAC,CAAC,IACF,EACF,EAAE,CACF,CAAA;IACF,CAAC;IAEO,eAAe,CAAC,QAAiB;;QACxC,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YACvE,OAAO,QAAsB,CAAA;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC,MAAM,CACrB,CAAC,GAAe,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;;gBAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;gBACnC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;oBACtB,OAAO,GAAG,CAAA;gBACX,CAAC;gBACD,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,MAAA,EAAE,CAAC,KAAK,mCAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAA,GAAG,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,CAAA;gBACvD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAA,MAAA,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,0CAAE,KAAK;oBACxC,CAAC,iCACI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KACnB,CAAC,MAAA,CAAC,MAAA,EAAE,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mCAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,IAEnE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACnB,OAAO,GAAG,CAAA;YACX,CAAC,EACD,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CACrD,CAAA;QACF,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QACjE,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QACjE,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QAClE,CAAC;QAED,IAAI,QAAQ,YAAY,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;QACrF,CAAC;QAED,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACjI,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,QAAQ,EAAE,mCAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QAC/G,CAAC;QAED,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,gGAAgG;IAClF,oBAAoB;;YACjC,IAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC7D,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,KAA+C,EAAE,0CAA1C,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE;;oBACpL,IAAI,CAAC;wBACJ,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;wBACpD,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;4BACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAY,CAAC,CAAA;4BAC/E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gCAC5B,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,IAAI,CAAA;gCACjC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oCACjE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gCAC9C,CAAC;gCACD,IAAI,QAAQ,EAAE,CAAC;oCACd,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gCAC7B,CAAC;gCACD,oCAAoC,CAAC,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAA+B,EAAE,EAAE;oCAC7J,MAAM,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAA;oCACrE,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAA;oCACrC,IAAI,IAAI,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;wCACrC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,cAAc,CAAA;oCAClC,CAAC;gCACF,CAAC,CAAC,CAAA;4BACH,CAAC;wBACF,CAAC;oBACF,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACZ,OAAO,CAAC,GAAG,CAAC,mCAAmC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;oBAC7D,CAAC;gBACF,CAAC,CAAA,CAAC,CACF,CAAA;YACF,CAAC;QACF,CAAC;KAAA;IAED,gGAAgG;IAClF,sBAAsB;;YACnC,IAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC7D,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,KAA+C,EAAE,0CAA1C,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE;;oBACtL,IAAI,CAAC;wBACJ,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;wBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAY,CAAC,CAAA;wBAE/E,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;4BACzD,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,IAAI,CAAA;4BACjC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gCACjE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;4BAC9C,CAAC;4BACD,IAAI,QAAQ,EAAE,CAAC;gCACd,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;4BAC7B,CAAC;4BACD,MAAM,WAAW,GAAG,CAAC,GAA+B,EAAE,EAAE;gCACvD,MAAM,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAA;gCACrE,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAA;gCACrC,IAAI,IAAI,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;oCACrC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,cAAc,CAAA;gCAClC,CAAC;4BACF,CAAC,CAAA;4BACD,oCAAoC,CAAC,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;wBAChK,CAAC;oBACF,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACZ,OAAO,CAAC,GAAG,CAAC,mCAAmC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;oBAC7D,CAAC;gBACF,CAAC,CAAA,CAAC,CACF,CAAA;YACF,CAAC;QACF,CAAC;KAAA;IAED,QAAQ,CAAC,KAAa,EAAE,QAAgB,EAAE,EAAe,EAAE,EAAW,EAAE,QAAwB;QAC/F,oCAAoC,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;IACzG,CAAC;IAED,WAAW,CAAC,IAAmB,EAAE,EAAuB;;QACvD,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAC1C;YACC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;SAC5C,EACD,EAAE,CACF,CAAA;IACF,CAAC;IAED,MAAM,CAAC,SAAiB;QACvB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IAEO,wBAAwB,CAAC,GAAoB;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,mBAAC,OAAA,CAAC,CAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,0CAAE,KAAK,0CAAE,KAAK,KAAI,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,0CAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAA;IACvI,CAAC;IAEK,OAAO,CAKX,OAAe,EAAE,OAAW;;;YAC7B,qCAAqC;YACrC,MAAM,YAAY,GAAG,CAAC,OAA0C,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE;;gBACrF,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,OAAO,SAAS,CAAA;gBACjB,CAAC;gBACD,MAAM,SAAS,GAAG,MAAA,MAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC,mCAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5F,OAAO,SAAS,IAAI,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACxD,CAAC,CAAA;YACD,MAAM,IAAI,GAAG,CAAC,IAAsG,EAAE,EAAE;gBACvH,IAAI,CAAC,IAAI,EAAE,CAAC;oBACX,OAAO,SAAS,CAAA;gBACjB,CAAC;gBACD,MAAM,KAAK,GAAoD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAClG,OAAO,KAAK;qBACV,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,MAAA,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,0CAAE,QAAQ,EAAE,CAAA,EAAA,CAAC;qBACvD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACpB,IAAI,CAAC,IAAI,CAAC,CAAA;YACb,CAAC,CAAA;YACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;YACvB,MAAM,MAAM,GAAG;gBACd,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,CACV,EAEC,EACD,MAAc,EACb,EAAE,WAAC,OAAA,EAAE,KAAI,MAAA,EAAE,CAAC,KAAK,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,eAAC,OAAA,CAAC,CAAC,EAAE,KAAK,MAAM,IAAI,CAAA,MAAA,MAAA,CAAC,CAAC,EAAE,0CAAE,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,MAAK,MAAM,CAAA,EAAA,CAAC,CAAA,CAAA,EAAA;gBACrF,KAAK,EAAE,CAAC,EAAyB,EAAE,EAAE;;oBACpC,OAAO,EAAE;wBACR,CAAC,CAAC,CAAC,MAAA,EAAE,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;;4BACnC,IAAI,CAAC;gCACJ,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAA,MAAA,MAAA,CAAC,CAAC,EAAE,0CAAE,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,mCAAI,GAAG,CAAC,CAAA;4BACpD,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACZ,OAAO,GAAG,CAAA;4BACX,CAAC;wBACD,CAAC,EAAE,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC,CAAA;gBACL,CAAC;gBACD,YAAY;gBACZ,QAAQ,EAAE;oBACT,QAAQ,EAAE,CAAC,IAAS,EAAE,KAAa,EAAE,EAAE;;wBACtC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAA,MAAC,IAAI,CAAC,KAAY,CAAS,0CAAG,CAAC,CAAC,0CAAE,OAAO,CAAC,CAAA;wBACrE,OAAO,CAAC,CAAC,CAAA,MAAC,KAAa,aAAb,KAAK,uBAAL,KAAK,CAAU,IAAI,EAAE,0CAAE,MAAM,CAAA,CAAA;oBACxC,CAAC;iBACD;gBACD,IAAI;gBACJ,GAAG;gBACH,OAAO;aACmB,CAAA;YAC3B,MAAM,KAAK,GAAM,IAAI,KAAK,CAAC,EAAO,EAAE;gBACnC,GAAG,EAAE,CAAC,MAAS,EAAE,GAAoB,EAAE,EAAE,WACxC,OAAA,CAAC,CAAC,MAAM,CAAC,GAAa,CAAC,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAa,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA,EAAA;gBAC1J,GAAG,EAAE,CAAC,MAAS,EAAE,GAAoB,EAAE,EAAE;oBACxC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;wBACzB,OAAO,SAAS,CAAA;oBACjB,CAAC;oBACD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAa,CAAC,CAAA;oBACzC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;wBACnB,OAAO,WAAW,CAAA;oBACnB,CAAC;oBACD,OAAO,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAa,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAA,EAAA,CAAC,CAAA;gBAC9L,CAAC;aACD,CAAC,CAAA;YACF,OAAO,MAAA,IAAI,CAAC,WAAW,qDAAG,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,KAAK,CAAC,CAAA;QACrD,CAAC;KAAA;IAEK,WAAW;;YAChB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,CACC,MAAM,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CACnD,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACb,IAAI,0BAA0B,CAC7B,IAAI,CAAC,WAAW,EAChB,GAAG,EACH,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,QAAQ,EACb,EAAE,EACF,IAAI,CAAC,kBAAkB,CACvB,CAAC,IAAI,EAAE,CACR,CACD,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,sBAAsB,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;YAC5J,OAAO,QAAQ,CAAA;QAChB,CAAC;KAAA;IAEK,mBAAmB;;YACxB,IAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC7D,+BAA+B;gBAC/B,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CACnJ,mBAA6C,EAAE,wDAAxC,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;oBAC1C,OAAA,MAAM,UAAU,CAAC,MAAM,CAAC,mBAA4C,EAAE,wDAAvC,UAAU,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;wBACjE,MAAM,GAAG,GAAG,MAAM,UAAU,CAAA;wBAC5B,IAAI,CAAC;4BACJ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gCACvC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;4BAC9B,CAAC;wBACF,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACZ,OAAO,CAAC,GAAG,CAAC,sCAAsC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAA;wBACnE,CAAC;wBACD,OAAO,GAAG,CAAA;oBACX,CAAC,CAAA,EAAE,UAAU,CAAC,CAAA;kBAAA,EACf,OAAO,CAAC,OAAO,CAAC,EAAE,CAAuC,CACzD,CAAA;YACF,CAAC;iBAAM,CAAC;gBACP,OAAO,EAAE,CAAA;YACV,CAAC;QACF,CAAC;KAAA;IAEK,QAAQ,CAAC,QAAgB,EAAE,UAAkB,EAAE,KAAa;;YACjE,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;QAC5E,CAAC;KAAA;IAEK,WAAW,CAAC,SAAqC;;YACtD,MAAM,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAA;QACxF,CAAC;KAAA;IAED,WAAW;QACV,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAA;QAC7C,OAAO,IAAI,CAAA;IACZ,CAAC;CACD;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,0BAA0B;IActC,QAAQ;QACP,OAAO,WAAW,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAA;IACrF,CAAC;IAED,iBAAiB;QAChB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,kBAAkB;;QACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAA;QACzE,MAAM,kBAAkB,GAAG,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,CAAC,MAAA,EAAE,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,EAAA,CAAC,CAAA;QAC9K,OAAO,IAAI,gBAAgB,iCACvB,IAAI,CAAC,cAAc,KACtB,QAAQ,EAAE,gBAAgB;iBACxB,MAAM,CAAC,CAAC,GAAuB,EAAE,CAAmB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,MAAM,CAAC,MAAA,CAAC,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAA,EAAA,EAAE,EAAE,CAAC;iBAC1F,MAAM,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC/F,WAAW,EAAE,gBAAgB;iBAC3B,MAAM,CAAC,CAAC,GAA0B,EAAE,CAAmB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,MAAM,CAAC,MAAA,CAAC,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAA,EAAA,EAAE,EAAE,CAAC;iBAChG,MAAM,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAC7F,CAAA;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACP,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,YACC,QAAsB,EACtB,cAAgC,EAChC,eAAmC,EACnC,cAAuE,EACvE,QAAsC,EACtC,WAAiH,EACjH,YAA+C,EAC/C,kBAAsE,EAAE,EACxE,WAAW,GAAG,IAAI;QA7CX,QAAG,GAAW,MAAM,EAAE,CAAA;QACtB,iBAAY,GAAG,KAAK,CAAA;QA8C3B,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,CAAC,cAAc,UAAU,QAAQ,CAAC,MAAM,cAAc,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QAE/G,IAAI,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;QACrF,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QACnE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;QAE/B,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;YAC7F,MAAM,QAAQ,GACb,MAAA,MAAA,MAAA,GAAG,CAAC,QAAQ,0CACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,GAAG,CAAC,WAAW,0CAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAI,MAAA,EAAE,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA,CAAA,EAAA,CAAC,CAAA,EAAA,CAAC,0CAClI,MAAM,CACP,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;;gBACV,OAAA,CAAC,CAAC,EAAE;oBACH,CAAC,iCACI,GAAG,KACN,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mCAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;4BAC9C,QAAQ,EAAE,MAAA,GAAG,CAAC,GAAG,mCAAI,IAAI;4BACzB,QAAQ,EAAE,GAAG,CAAC,OAAO;4BACrB,KAAK,EAAE,CAAC;yBACR,CAAC,IAEJ,CAAC,CAAC,GAAG,CAAA;aAAA,EACP,GAAG,CACH,mCAAI,GAAG,CAAA;YACV,OAAO,QAAQ,CAAA;QAChB,CAAC,EAAE,EAAqC,CAAC,CAAA;QAEzC,IAAI,CAAC,WAAW,EAAE,CAAA;IACnB,CAAC;IAED,WAAW;QACV,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,iGAAiG;IACjG,gCAAgC,CAAC,uBAAmD;QACnF,uBAAuB,CAAC,eAAe,GAAG;YACzC,CAAC,QAAQ,EAAE,EAAE;gBACZ,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,IAAI,uBAAuB,CAAC,QAAQ,CAAC,cAAc,6BAA6B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAA;gBAC5J,MAAM,6BAA6B,GAAG,IAAI,0BAA0B,CACnE,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACvB,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5E,CAAC,CAAC,EACF,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,CACjB,CAAA;gBACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAA;YAC9E,CAAC;SACD,CAAA;IACF,CAAC;IAED,MAAM,CAAO,kBAAkB;6DAC9B,QAAsB,EACtB,cAAgC,EAChC,eAAmC,EACnC,cAAuE,EACvE,oBAA+E,EAC/E,WAAiH,EACjH,YAA+C,EAC/C,kBAAsE,EAAE;YAExE,MAAM,0BAA0B,GAAG,IAAI,0BAA0B,CAChE,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,QAAQ,CAAC,EAAE;gBACV,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CACjB,CACC,MAAM,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CACvC,CAAC,GAAG,CACJ,CAAO,CAAC,EAAE,EAAE;gBACX,mCAAmC;gBACnC,OAAA,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA,GAAA,CACzJ,CACA;gBACH,CAAC,CAAC,EAAE,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,KAAK,CACL,CAAA;YACD,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,0BAA0B,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAA;YAEhI,OAAO,0BAA0B,CAAA;QAClC,CAAC;KAAA;IAED,QAAQ;;QACP,OAAO,MAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,mCAAI,EAAE,CAAA;IACjC,CAAC;IAED,SAAS;;QACR,OAAO,MAAA,IAAI,CAAC,QAAQ,0CAAE,cAAc,CAAA;IACrC,CAAC;IAED,sBAAsB,CAAC,QAAwD;QAC9E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,wBAAwB,CAAC,QAAwD;QAChF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC1E,CAAC;IAEK,WAAW;;YAChB,OAAO,IAAI,CAAC,QAAQ,CAAA;QACrB,CAAC;KAAA;IAEK,mBAAmB;;YACxB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC7D,CAAC;KAAA;IAED,eAAe;QACd,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAClC,CAAC;IAED,SAAS,CAAC,eAAuF;QAChG,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CACvE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CACtB,OAAO,CAAC,MAAM;YACb,CAAC,iCACI,GAAG,KACN,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,KAAI,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,KAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAEhG,CAAC,CAAC,GAAG,EACP,EAAE,CACF,CAAA;IACF,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,SAA4B;QACnD,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;aAC1B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;aAC5B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACrE,MAAM,CACN,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;YACZ,OAAA,MAAA,CAAC,MAAA,GAAG,CAAC,QAAQ,mCAAI,EAAE,CAAC;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;iBAC1B,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;;gBACV,OAAA,CAAC,CAAC,EAAE;oBACH,CAAC,iCACI,GAAG,KACN,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mCAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;4BAC9C,QAAQ,EAAE,MAAA,GAAG,CAAC,GAAG,mCAAI,IAAI;4BACzB,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,KAAK,EAAE;gCACN,KAAK,EAAE,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,EAAE;gCACtB,WAAW,EAAE,CAAC,CAAC,WAAW;gCAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;gCACtB,IAAI,EAAE,CAAC,CAAC,IAAI;6BACZ;yBACD,CAAC,IAEJ,CAAC,CAAC,GAAG,CAAA;aAAA,EACP,GAAG,CACH,mCAAI,GAAG,CAAA;SAAA,EACV,EAAkD,CAClD,CAAA,CAAC,iCAAiC;IACrC,CAAC;IAED,WAAW,CAAC,IAAqB,EAAE,EAAW;;QAC7C,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAClG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC9C,CAAC;QACD,IACC,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC;YAC9D,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;YACxD,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;YAC5C,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EACxC,CAAC;YACF,MAAM,UAAU,GAAG,IAAI,gBAAgB,iCAAM,OAAO,KAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAG,CAAA;YAC7E,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;YAC/D,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;YACzD,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAE1D,MAAM,sBAAsB,GAAG,IAAI,0BAA0B,CAC5D,IAAI,CAAC,QAAQ,EACb,IAAI,gBAAgB,iCAChB,IAAI,CAAC,cAAc,KACtB,QAAQ,EAAE,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IACzF,EACF,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAA;QACvE,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAwB,EAAE,EAAW,EAAE,QAA0B,EAAE,wBAAoE;;QAChL,MAAM,OAAO,GAAG,CAAC,EAAE,KAAI,MAAA,MAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,0CAAG,CAAC,CAAC,0CAAE,KAAK,CAAA,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACjL,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAA;QAC5F,MAAM,UAAU,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAG,QAAQ,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAChE,IAAI,CAAC,cAAc,CAAC,MAAA,OAAO,CAAC,OAAO,0CAAG,QAAQ,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7H,MAAM,UAAU,GAAG,IAAI,gBAAgB,iCAAM,OAAO,KAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAG,CAAA;YAC7E,MAAM,WAAW,GAAG,UAAU;gBAC7B,CAAC,iCACI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,KAC1B,CAAC,QAAQ,CAAC,EAAE,UAAU,IAExB,CAAC,mBAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAE,CAAA;YACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAA;YAC7B,CAAC;YAED,IAAI,iBAAmC,CAAA;YACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;gBAChF,iBAAiB,GAAG,IAAI,gBAAgB,iCACpC,IAAI,CAAC,cAAc,KACtB,WAAW,EAAE,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChG,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;;4BACnD,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gCACpC,OAAO,IAAI,mBAAmB,iCAC1B,EAAE,KACL,QAAQ,EAAE,CAAC,MAAA,EAAE,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAC3H,CAAA;4BACH,CAAC;iCAAM,CAAC;gCACP,OAAO,EAAE,CAAA;4BACV,CAAC;wBACD,CAAC,CAAC;wBACJ,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,MAAM,CAC9C,IAAI,mBAAmB,CAAC;4BACvB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;4BACxB,QAAQ,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;yBACtD,CAAC,CACD,EACJ,QAAQ,EAAE,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;wBAC9E,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;wBACzE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,IAC3C,CAAA;YACH,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,OAAO,GAAG,WAAW,CAAA;gBAChC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAA;gBAE3B,IAAI,QAAQ,EAAE,CAAC;oBACd,UAAU,CAAC,WAAW,GAAG,MAAA,QAAQ,CAAC,WAAW,mCAAI,UAAU,CAAC,WAAW,CAAA;oBACvE,UAAU,CAAC,SAAS,GAAG,MAAA,QAAQ,CAAC,SAAS,mCAAI,UAAU,CAAC,SAAS,CAAA;oBACjE,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAA;oBACjF,UAAU,CAAC,KAAK,GAAG,MAAA,QAAQ,CAAC,KAAK,mCAAI,UAAU,CAAC,KAAK,CAAA;gBACtD,CAAC;gBAED,iBAAiB,GAAG,IAAI,gBAAgB,iCACpC,IAAI,CAAC,cAAc,KACtB,WAAW,EAAE,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChG,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;;4BACnD,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gCACpC,OAAO,IAAI,mBAAmB,iCAC1B,EAAE,KACL,QAAQ,EAAE,CAAC,MAAA,EAAE,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAC3H,CAAA;4BACH,CAAC;iCAAM,CAAC;gCACP,OAAO,EAAE,CAAA;4BACV,CAAC;wBACD,CAAC,CAAC;wBACJ,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,MAAM,CAC9C,IAAI,mBAAmB,CAAC;4BACvB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;4BACxB,QAAQ,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;yBACtD,CAAC,CACD,EACJ,QAAQ,EAAE,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;wBAC9E,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACzF,CAAC,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,EAAE,UAAU,CAAC,IACvD,CAAA;YACH,CAAC;YACD,MAAM,sBAAsB,GAAG,IAAI,0BAA0B,CAC5D,IAAI,CAAC,QAAQ,EACb,iBAAiB,EACjB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpF,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YAED,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAA;QACrJ,CAAC;IACF,CAAC;IAED,MAAM,CAAC,SAAiB;;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,sBAAsB,GAAG,IAAI,0BAA0B,CAC5D,IAAI,CAAC,QAAQ,EACb,IAAI,gBAAgB,iCAChB,IAAI,CAAC,cAAc,KACtB,QAAQ,EAAE,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,CAAC,CAAC,EAAE,KAAK,SAAS;oBACjB,CAAC,CAAC,IAAI,gBAAgB,iCACjB,OAAO,KACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,IACnB;oBACJ,CAAC,CAAC,CAAC,CACJ,IACA,EACF,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAA;QACvE,CAAC;IACF,CAAC;IAEK,OAAO;;YACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAC1D,CAAC;KAAA;IAED;;;;OAIG;IACK,oBAAoB,CAAC,eAAuF;QACnH,iCAAiC;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;YACtB,MAAM,aAAa,GAAG,eAAe,CACpC,EAAE,EACF,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;;gBAAC,OAAA,CAAC;oBAClD,QAAQ;oBACR,QAAQ;oBACR,KAAK,EAAE;wBACN,KAAK,EAAE,MAAA,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,EAAE,mCAAI,EAAE;wBAC5B,KAAK,EAAE,CAAC,CAAC,WAAW;wBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;wBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,IAAI;qBACZ;iBACD,CAAC,CAAA;aAAA,CAAC,CACH,CAAA;YACD,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAA0C,CAAA;QACzH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,iCAAM,GAAG,KAAE,CAAC,EAAE,CAAC,EAAE,OAAO,IAAG,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC;IAEK,QAAQ,CAAC,QAAgB,EAAE,UAAkB,EAAE,KAAa;;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;YACjC,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAErB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;YAC7E,MAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;YAE5K,MAAM,6BAA6B,GAAG,IAAI,0BAA0B,CACnE,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC5B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YACD,6BAA6B,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAA;YACxE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAA;QAC9E,CAAC;KAAA;IAEO,0BAA0B,CAAC,EAAU;;QAC5C,MAAM,OAAO,GAAG,MAAA,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9E,OAAO,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,SAAS,CAAA;IAC5B,CAAC;IAEK,WAAW,CAAC,SAAqC;;YACtD,MAAM,6BAA6B,GAAG,IAAI,0BAA0B,CACnE,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EACpE,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CAAA;YACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAA;QAC9E,CAAC;KAAA;CACD;AAED,MAAM,oCAAoC,GAAG,CAC5C,IAAgC,EAChC,KAAa,EACb,QAAgB,EAChB,EAAe,EACf,EAAW,EACX,QAAwB,EACxB,wBAAoE,EACnE,EAAE;;IACH,MAAM,KAAK,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACnC,IAAI,CAAC,QAAQ,CACZ,KAAK,EACL,QAAQ,EACR,IAAI,gBAAgB,CAAC;QACpB,EAAE,EAAE,EAAE;QACN,KAAK,EAAE,MAAA,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,KAAK,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,mCAAI,EAAE;QACnD,OAAO,EAAE,KAAK;YACb,CAAC,CAAC;gBACA,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC;aAClD;YACH,CAAC,CAAC,SAAS;KACZ,CAAC,EACF,EAAE,EACF,QAAQ;QACP,CAAC,CAAC;YACA,KAAK,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,mCAAI,KAAK;YAC/B,WAAW,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK;YAC5B,SAAS,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS;YAC9B,IAAI,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;SAChD;QACH,CAAC,CAAC,SAAS,EACZ,wBAAwB,CACxB,CAAA;AACF,CAAC,CAAA","sourcesContent":["import { CodeStub, DecryptedContact, DecryptedForm as CardinalForm, DecryptedService, DecryptedSubContact, ServiceLink } from '@icure/cardinal-sdk'\nimport { sortedBy } from '../utils/no-lodash'\nimport { FormValuesContainer, Version, VersionedData } from '../generic'\nimport { ServiceMetadata } from './model'\nimport { FieldMetadata, FieldValue, PrimitiveType, Validator } from '../components/model'\nimport { areCodesEqual, codeStubToCode, contentToPrimitiveType, isContentEqual, primitiveTypeToContent } from './icure-utils'\nimport { parsePrimitive } from '../utils/primitive'\nimport { anyDateToDate, dateToFuzzyDate } from '../utils/dates'\nimport { v4 as uuidv4 } from 'uuid'\nimport { normalizeCodes } from '../utils/code-utils'\n\nfunction notify<Value, Metadata>(l: (fvc: FormValuesContainer<Value, Metadata>) => void, fvc: FormValuesContainer<Value, Metadata>) {\n\tl(fvc)\n}\n\n/** This class is a bridge between the ICure API and the generic FormValuesContainer interface.\n * It wraps around a ContactFormValuesContainer and provides a series of services:\n * - It computes dependent values when the form is created\n * - It broadcasts changes from the wrapped ContactFormValuesContainer to its listeners\n * - It provides a way to compute formulas in a sandboxed environment\n * - It bridges the setValues and setMetadata methods with the wrapped ContactFormValuesContainer by\n * \t\t- converting the FieldValue to a Service\n * \t\t- converting the FieldMetadata to a ServiceMetadata\n * - It bridges the getValues and getMetadata methods with the wrapped ContactFormValuesContainer by\n * \t\t- converting the Service to a FieldValue\n * \t\t- converting the ServiceMetadata to a FieldMetadata\n * - It lazily creates bridges the children by\n * - lazily creating BridgedFormValuesContainer when the children of the wrapped ContactFormValuesContainer are accessed\n * - creating a new ContactFormValuesContainer and wrapping it in a BridgedFormValuesContainer when a child is added\n *\n * The icure-form typically accepts a BridgedFormValuesContainer as a prop and uses it to interact with the form.\n *\n * This class is fairly generic and can be used as an inspiration or subclassed for other bridges\n */\nexport class BridgedFormValuesContainer implements FormValuesContainer<FieldValue, FieldMetadata> {\n\tprivate contact: DecryptedContact\n\tprivate contactFormValuesContainer: ContactFormValuesContainer\n\tprivate _id: string = uuidv4()\n\tprivate readonly mutateAndNotify: (newContactFormValuesContainer: ContactFormValuesContainer) => Promise<BridgedFormValuesContainer>\n\n\ttoString(): string {\n\t\treturn `Bridged(${this.contactFormValuesContainer.rootForm.formTemplateId}[${this.contactFormValuesContainer.rootForm.id}]) - ${this._id}`\n\t}\n\n\t/**\n\t * Creates an instance of BridgedFormValuesContainer.\n\t * @param responsible The id of the data owner responsible for the creation of the values\n\t * @param contactFormValuesContainer The wrapped ContactFormValuesContainer\n\t * @param interpreter A function that can interpret formulas\n\t * @param contact The displayed contact (may be in the past). === to currentContact if the contact is the contact of the day\n\t * @param initialValuesProvider A lambda that provides the initial values of the form\n\t * @param dependentValuesProvider A function that provides the dependent values (computed on the basis of other values) for a given anchorId and templateId\n\t * @param validatorsProvider A function that provides the validators for a given anchorId and templateId\n\t * @param language The language in which the values are displayed\n\t * @param changeListeners The listeners that will be notified when the values change\n\t * @param interpreterContext A map with keys that are the names of the variables and values that are the functions that return the values of the variables\n\t */\n\tconstructor(\n\t\tprivate responsible: string,\n\t\tcontactFormValuesContainer: ContactFormValuesContainer,\n\t\tprivate interpreter?: <\n\t\t\tT,\n\t\t\tS extends {\n\t\t\t\t[key: string | symbol]: unknown\n\t\t\t},\n\t\t>(\n\t\t\tformula: string,\n\t\t\tsandbox: S,\n\t\t) => Promise<T | undefined>,\n\t\tcontact?: DecryptedContact,\n\t\tprivate initialValuesProvider: (\n\t\t\tanchorId?: string,\n\t\t\ttemplateId?: string,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\t\tformula: string\n\t\t}[] = () => [],\n\t\tprivate dependentValuesProvider: (\n\t\t\tanchorId: string | undefined,\n\t\t\ttemplateId: string | undefined,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\trevisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]\n\t\t\tformula: string\n\t\t}[] = () => [],\n\t\tprivate validatorsProvider: (\n\t\t\tanchorId: string | undefined,\n\t\t\ttemplateId: string,\n\t\t) => {\n\t\t\tmetadata: FieldMetadata\n\t\t\tvalidators: Validator[]\n\t\t}[] = () => [],\n\t\tprivate language = 'en',\n\t\tprivate changeListeners: ((newValue: BridgedFormValuesContainer) => void)[] = [],\n\t\tprivate interpreterContext: { [variable: string]: () => unknown } = {},\n\t) {\n\t\tconsole.log(`Creating bridge FVC (${contactFormValuesContainer.rootForm.formTemplateId}) with ${contactFormValuesContainer.children.length} children [${this._id}]`)\n\t\t//Before start to broadcast changes, we need to fill in the contactFormValuesContainer with the dependent values\n\t\tthis.contactFormValuesContainer = contactFormValuesContainer\n\t\tthis.mutateAndNotify = async (newContactFormValuesContainer: ContactFormValuesContainer) => {\n\t\t\tnewContactFormValuesContainer.unregisterChangeListener(this.mutateAndNotify)\n\t\t\tconst newBridgedFormValueContainer = await new BridgedFormValuesContainer(\n\t\t\t\tthis.responsible,\n\t\t\t\tnewContactFormValuesContainer,\n\t\t\t\tthis.interpreter,\n\t\t\t\tthis.contact === this.contactFormValuesContainer.currentContact ? newContactFormValuesContainer.currentContact : this.contact,\n\t\t\t\tthis.initialValuesProvider,\n\t\t\t\tthis.dependentValuesProvider,\n\t\t\t\tthis.validatorsProvider,\n\t\t\t\tthis.language,\n\t\t\t\tthis.changeListeners,\n\t\t\t\tthis.interpreterContext,\n\t\t\t).init()\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newBridgedFormValueContainer))\n\t\t\treturn newBridgedFormValueContainer\n\t\t}\n\t\tthis.contactFormValuesContainer.registerChangeListener(this.mutateAndNotify)\n\t\tthis.contact = contact ?? contactFormValuesContainer.currentContact\n\t}\n\n\tasync init() {\n\t\tif (this.contactFormValuesContainer.mustBeInitialised()) {\n\t\t\tawait this.computeInitialValues()\n\t\t}\n\t\tawait this.computeDependentValues()\n\n\t\treturn this\n\t}\n\n\tgetLabel(): string {\n\t\treturn this.contactFormValuesContainer.getLabel()\n\t}\n\n\tgetFormId(): string | undefined {\n\t\treturn this.contactFormValuesContainer.getFormId()\n\t}\n\n\tgetContactFormValuesContainer() {\n\t\treturn this.contactFormValuesContainer\n\t}\n\n\tregisterChangeListener(listener: (newValue: BridgedFormValuesContainer) => void): void {\n\t\tthis.changeListeners.push(listener)\n\t}\n\n\tunregisterChangeListener(listener: (newValue: BridgedFormValuesContainer) => void): void {\n\t\tthis.changeListeners = this.changeListeners.filter((l) => l !== listener)\n\t}\n\n\tasync getDefaultValue(label: string): Promise<FieldValue | undefined> {\n\t\tconst formula = this.initialValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).find(\n\t\t\t({ metadata }) => metadata.label === label,\n\t\t)?.formula\n\t\treturn formula ? this.convertRawValue(await this.compute(formula)) : undefined\n\t}\n\n\tgetValues(revisionsFilter: (id: string, history: Version<FieldMetadata>[]) => (string | null)[]): VersionedData<FieldValue> {\n\t\treturn Object.entries(\n\t\t\tthis.contactFormValuesContainer.getValues((id, history) =>\n\t\t\t\trevisionsFilter(\n\t\t\t\t\tid,\n\t\t\t\t\thistory\n\t\t\t\t\t\t.filter(({ modified }) => !this.contact.created || !modified || modified <= this.contact.created)\n\t\t\t\t\t\t.map(({ revision, modified, value: sm }) => ({\n\t\t\t\t\t\t\trevision,\n\t\t\t\t\t\t\tmodified,\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tlabel: sm.label,\n\t\t\t\t\t\t\t\towner: sm.responsible,\n\t\t\t\t\t\t\t\ttags: sm.tags?.map(codeStubToCode),\n\t\t\t\t\t\t\t\tvalueDate: sm.valueDate,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t),\n\t\t).reduce((acc, [id, history]) => {\n\t\t\treturn {\n\t\t\t\t...acc,\n\t\t\t\t[id]: history.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\trevision,\n\t\t\t\t\tmodified,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tcontent: Object.entries(s.content ?? {}).reduce((acc, [lng, cnt]) => {\n\t\t\t\t\t\t\tconst converted = contentToPrimitiveType(lng, cnt)\n\t\t\t\t\t\t\treturn converted ? { ...acc, [lng]: converted } : acc\n\t\t\t\t\t\t}, {}),\n\t\t\t\t\t\tcodes: s.codes?.map(codeStubToCode),\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t}\n\t\t}, {} as VersionedData<FieldValue>)\n\t}\n\n\tgetMetadata(id: string, revisions: (string | null)[]): VersionedData<FieldMetadata> {\n\t\treturn Object.entries(this.contactFormValuesContainer.getMetadata(id, revisions)).reduce(\n\t\t\t(acc, [id, history]) => ({\n\t\t\t\t...acc,\n\t\t\t\t[id]: history.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\trevision,\n\t\t\t\t\tmodified,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tlabel: s.label,\n\t\t\t\t\t\towner: s.responsible,\n\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\tdiscordantMetadata: () => ({\n\t\t\t\t\t\t\t...(s.responsible !== this.responsible ? { owner: this.responsible } : {}),\n\t\t\t\t\t\t\t...(Math.abs(+(anyDateToDate(s.valueDate) ?? 0) - +(anyDateToDate(this.contact.created) ?? 0)) > 24 * 3600000 ? { valueDate: s.valueDate } : {}),\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t}),\n\t\t\t{},\n\t\t)\n\t}\n\n\tprivate convertRawValue(rawValue: unknown): FieldValue | undefined {\n\t\tif (rawValue && typeof rawValue === 'object' && 'content' in rawValue) {\n\t\t\treturn rawValue as FieldValue\n\t\t}\n\n\t\tif (Array.isArray(rawValue)) {\n\t\t\treturn rawValue.reduce(\n\t\t\t\t(acc: FieldValue, it, idx) => {\n\t\t\t\t\tconst fv = this.convertRawValue(it)\n\t\t\t\t\tif (fv === undefined) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\t\t\t\t\tacc.codes = [...(fv.codes ?? []), ...(acc.codes ?? [])]\n\t\t\t\t\tacc.content['*'] = fv.content['*']?.value\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...acc.content['*'],\n\t\t\t\t\t\t\t\t[(fv.codes ?? [])[0].id ?? idx.toString()]: fv.content['*'].value,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: acc.content['*']\n\t\t\t\t\treturn acc\n\t\t\t\t},\n\t\t\t\t{ content: { '*': { type: 'compound', value: {} } } },\n\t\t\t)\n\t\t}\n\n\t\tif (typeof rawValue === 'number') {\n\t\t\treturn { content: { '*': { type: 'number', value: rawValue } } }\n\t\t}\n\n\t\tif (typeof rawValue === 'string') {\n\t\t\treturn { content: { '*': { type: 'string', value: rawValue } } }\n\t\t}\n\n\t\tif (typeof rawValue === 'boolean') {\n\t\t\treturn { content: { '*': { type: 'boolean', value: rawValue } } }\n\t\t}\n\n\t\tif (rawValue instanceof Date) {\n\t\t\treturn { content: { '*': { type: 'timestamp', value: dateToFuzzyDate(rawValue) } } }\n\t\t}\n\n\t\tif (rawValue && typeof rawValue === 'object' && 'unit' in rawValue && 'value' in rawValue && typeof rawValue.value === 'number') {\n\t\t\treturn { content: { '*': { type: 'measure', value: rawValue.value, unit: rawValue.unit?.toString() ?? '' } } }\n\t\t}\n\n\t\treturn undefined\n\t}\n\n\t//This method mutates the BridgedFormValuesContainer but can only be called from the constructor\n\tprivate async computeInitialValues() {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\tawait Promise.all(\n\t\t\t\tthis.initialValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).map(async ({ metadata, revisionsFilter, formula }) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentValue = this.getValues(revisionsFilter)\n\t\t\t\t\t\tif (!currentValue || !Object.keys(currentValue).length) {\n\t\t\t\t\t\t\tconst newValue = this.convertRawValue((await this.compute(formula)) as unknown)\n\t\t\t\t\t\t\tif (newValue !== undefined) {\n\t\t\t\t\t\t\t\tconst lng = this.language ?? 'en'\n\t\t\t\t\t\t\t\tif (newValue && !newValue.content[lng] && newValue.content['*']) {\n\t\t\t\t\t\t\t\t\tnewValue.content[lng] = newValue.content['*']\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\t\tdelete newValue.content['*']\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsetValueOnContactFormValuesContainer(this.contactFormValuesContainer, metadata.label, lng, newValue, undefined, metadata, (fvc: ContactFormValuesContainer) => {\n\t\t\t\t\t\t\t\t\tconst currentContact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\t\t\t\tthis.contactFormValuesContainer = fvc\n\t\t\t\t\t\t\t\t\tif (this.contact === currentContact) {\n\t\t\t\t\t\t\t\t\t\tthis.contact = fvc.currentContact\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.log(`Error while computing formula : ${formula}`, e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\t//This method mutates the BridgedFormValuesContainer but can only be called from the constructor\n\tprivate async computeDependentValues() {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\tawait Promise.all(\n\t\t\t\tthis.dependentValuesProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).map(async ({ metadata, revisionsFilter, formula }) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentValue = this.getValues(revisionsFilter)\n\t\t\t\t\t\tconst newValue = this.convertRawValue((await this.compute(formula)) as unknown)\n\n\t\t\t\t\t\tif (newValue !== undefined || currentValue != undefined) {\n\t\t\t\t\t\t\tconst lng = this.language ?? 'en'\n\t\t\t\t\t\t\tif (newValue && !newValue.content[lng] && newValue.content['*']) {\n\t\t\t\t\t\t\t\tnewValue.content[lng] = newValue.content['*']\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tdelete newValue.content['*']\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst interceptor = (fvc: ContactFormValuesContainer) => {\n\t\t\t\t\t\t\t\tconst currentContact = this.contactFormValuesContainer.currentContact\n\t\t\t\t\t\t\t\tthis.contactFormValuesContainer = fvc\n\t\t\t\t\t\t\t\tif (this.contact === currentContact) {\n\t\t\t\t\t\t\t\t\tthis.contact = fvc.currentContact\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetValueOnContactFormValuesContainer(this.contactFormValuesContainer, metadata.label, lng, newValue, Object.keys(currentValue ?? {})[0], metadata, interceptor)\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.log(`Error while computing formula : ${formula}`, e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tsetValue(label: string, language: string, fv?: FieldValue, id?: string, metadata?: FieldMetadata): void {\n\t\tsetValueOnContactFormValuesContainer(this.contactFormValuesContainer, label, language, fv, id, metadata)\n\t}\n\n\tsetMetadata(meta: FieldMetadata, id?: string | undefined): void {\n\t\tthis.contactFormValuesContainer.setMetadata(\n\t\t\t{\n\t\t\t\tlabel: meta.label,\n\t\t\t\tresponsible: meta.owner,\n\t\t\t\tvalueDate: meta.valueDate,\n\t\t\t\ttags: meta.tags?.map((x) => new CodeStub(x)),\n\t\t\t},\n\t\t\tid,\n\t\t)\n\t}\n\n\tdelete(serviceId: string): void {\n\t\tthis.contactFormValuesContainer.delete(serviceId)\n\t}\n\n\tprivate getVersionedValuesForKey(key: string | symbol) {\n\t\treturn this.getValues((id, history) => (history?.[0]?.value?.label && key === history[0].value.label ? [history?.[0]?.revision] : []))\n\t}\n\n\tasync compute<\n\t\tT,\n\t\tS extends {\n\t\t\t[key: string | symbol]: unknown\n\t\t},\n\t>(formula: string, sandbox?: S): Promise<T | undefined> {\n\t\t// noinspection JSUnusedGlobalSymbols\n\t\tconst parseContent = (content?: { [key: string]: PrimitiveType }, toString = false) => {\n\t\t\tif (!content) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst primitive = content[this.language] ?? content['*'] ?? content[Object.keys(content)[0]]\n\t\t\treturn primitive && parsePrimitive(primitive, toString)\n\t\t}\n\t\tconst text = (item?: { content: { [key: string]: PrimitiveType } } | { content: { [key: string]: PrimitiveType } }[]) => {\n\t\t\tif (!item) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst items: { content: { [key: string]: PrimitiveType } }[] = Array.isArray(item) ? item : [item]\n\t\t\treturn items\n\t\t\t\t.map((it) => parseContent(it.content, true)?.toString())\n\t\t\t\t.filter((it) => !!it)\n\t\t\t\t.join(', ')\n\t\t}\n\t\tconst log = console.log\n\t\tconst native = {\n\t\t\tparseInt: parseInt,\n\t\t\tparseFloat: parseFloat,\n\t\t\tDate: Date,\n\t\t\tMath: Math,\n\t\t\tNumber: Number,\n\t\t\tString: String,\n\t\t\tBoolean: Boolean,\n\t\t\tArray: Array,\n\t\t\tObject: Object,\n\t\t\thasOption: (\n\t\t\t\tit: {\n\t\t\t\t\tcodes: CodeStub[]\n\t\t\t\t},\n\t\t\t\toption: string,\n\t\t\t) => it && it.codes?.some((c) => c.id === option || c.id?.split('|')?.[1] === option),\n\t\t\tscore: (it: { codes: CodeStub[] }) => {\n\t\t\t\treturn it\n\t\t\t\t\t? (it.codes ?? []).reduce((acc, c) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\treturn acc + parseInt(c.id?.split('|')?.[1] ?? '0')\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn acc\n\t\t\t\t\t\t\t}\n\t\t\t\t\t }, 0)\n\t\t\t\t\t: 0\n\t\t\t},\n\t\t\tparseContent,\n\t\t\tvalidate: {\n\t\t\t\tnotBlank: (self: any, label: string) => {\n\t\t\t\t\tconst value = parseContent((self[label as any] as any)?.[0]?.content)\n\t\t\t\t\treturn !!(value as any)?.trim()?.length\n\t\t\t\t},\n\t\t\t},\n\t\t\ttext,\n\t\t\tlog,\n\t\t\tPromise,\n\t\t} as { [key: string]: any }\n\t\tconst proxy: S = new Proxy({} as S, {\n\t\t\thas: (target: S, key: string | symbol) =>\n\t\t\t\t!!native[key as string] || key === 'self' || !!this.interpreterContext[key as string] || Object.keys(this.getVersionedValuesForKey(key) ?? {}).length > 0,\n\t\t\tget: (target: S, key: string | symbol) => {\n\t\t\t\tif (key === 'undefined') {\n\t\t\t\t\treturn undefined\n\t\t\t\t}\n\t\t\t\tconst nativeValue = native[key as string]\n\t\t\t\tif (!!nativeValue) {\n\t\t\t\t\treturn nativeValue\n\t\t\t\t}\n\t\t\t\treturn key === 'self' ? proxy : this.interpreterContext[key as string] ? this.interpreterContext[key as string]() : Object.values(this.getVersionedValuesForKey(key)).map((v) => v[0]?.value)\n\t\t\t},\n\t\t})\n\t\treturn this.interpreter?.(formula, sandbox ?? proxy)\n\t}\n\n\tasync getChildren(): Promise<FormValuesContainer<FieldValue, FieldMetadata>[]> {\n\t\tconst children = await Promise.all(\n\t\t\t(\n\t\t\t\tawait this.contactFormValuesContainer.getChildren()\n\t\t\t).map((fvc) =>\n\t\t\t\tnew BridgedFormValuesContainer(\n\t\t\t\t\tthis.responsible,\n\t\t\t\t\tfvc,\n\t\t\t\t\tthis.interpreter,\n\t\t\t\t\tthis.contact,\n\t\t\t\t\tthis.initialValuesProvider,\n\t\t\t\t\tthis.dependentValuesProvider,\n\t\t\t\t\tthis.validatorsProvider,\n\t\t\t\t\tthis.language,\n\t\t\t\t\t[],\n\t\t\t\t\tthis.interpreterContext,\n\t\t\t\t).init(),\n\t\t\t),\n\t\t)\n\t\tconsole.log(`${children.length} children found in ${this.contactFormValuesContainer.rootForm.formTemplateId} initialised with `, this.initialValuesProvider)\n\t\treturn children\n\t}\n\n\tasync getValidationErrors(): Promise<[FieldMetadata, string][]> {\n\t\tif (this.contactFormValuesContainer.rootForm.formTemplateId) {\n\t\t\t// noinspection ES6MissingAwait\n\t\t\treturn await this.validatorsProvider(this.contactFormValuesContainer.rootForm.descr, this.contactFormValuesContainer.rootForm.formTemplateId).reduce(\n\t\t\t\tasync (resPromise, { metadata, validators }) =>\n\t\t\t\t\tawait validators.reduce(async (resPromise, { validation, message }) => {\n\t\t\t\t\t\tconst res = await resPromise\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (!(await this.compute(validation))) {\n\t\t\t\t\t\t\t\tres.push([metadata, message])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.log(`Error while computing validation : ${validation}`, e)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn res\n\t\t\t\t\t}, resPromise),\n\t\t\t\tPromise.resolve([]) as Promise<[FieldMetadata, string][]>,\n\t\t\t)\n\t\t} else {\n\t\t\treturn []\n\t\t}\n\t}\n\n\tasync addChild(anchorId: string, templateId: string, label: string): Promise<void> {\n\t\tawait this.contactFormValuesContainer.addChild(anchorId, templateId, label)\n\t}\n\n\tasync removeChild(container: BridgedFormValuesContainer): Promise<void> {\n\t\tawait this.contactFormValuesContainer.removeChild(container.contactFormValuesContainer)\n\t}\n\n\tsynchronise() {\n\t\tthis.contactFormValuesContainer.synchronise()\n\t\treturn this\n\t}\n}\n\n/**\n * This class is a form values container that uses a hierarchy of forms as a data source. The actual values are extracted from the services of the contacts.\n * The `currentContact` is the contact that has been selected by the user, any later contact should be ignored.\n * The `contactsHistory` is used to provide the full history of the services.\n * The hierarchy of ContactFormValuesContainer has to be maintained by the manager of the instances of this class (typically the BridgedFormValuesContainer).\n * Each ContactFormValuesContainer has a reference to its `rootForm`.\n * The `serviceFactory` and `formFactory` are used to create new services and add sub-forms.\n */\nexport class ContactFormValuesContainer implements FormValuesContainer<DecryptedService, ServiceMetadata> {\n\trootForm: CardinalForm\n\tcurrentContact: DecryptedContact //The contact of the moment, used to record new modifications\n\tcontactsHistory: DecryptedContact[] //Must be sorted (most recent first), contains all the contacts linked to this form\n\tchildren: ContactFormValuesContainer[] //Direct children of the ContactFormValuesContainer\n\tserviceFactory: (label: string, serviceId?: string) => DecryptedService\n\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>\n\tformRecycler: (formId: string) => Promise<void>\n\n\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[]\n\tprivate _id: string = uuidv4()\n\tprivate _initialised = false\n\tprivate indexedServices: { [id: string]: Version<DecryptedService>[] }\n\n\ttoString(): string {\n\t\treturn `Contact(${this.rootForm.formTemplateId}[${this.rootForm.id}]) - ${this._id}`\n\t}\n\n\tmustBeInitialised() {\n\t\treturn !this._initialised\n\t}\n\n\t/**\n\t * Returns a contact that combines the content of the contact in this form with the content of all contents stored in the children\n\t */\n\tcoordinatedContact(): DecryptedContact {\n\t\tconst childrenContacts = this.children.map((c) => c.coordinatedContact())\n\t\tconst thisKeptServiceIds = (this.currentContact.subContacts ?? []).filter((sc) => sc.formId === this.rootForm.id).flatMap((sc) => (sc.services ?? []).map((s) => s.serviceId))\n\t\treturn new DecryptedContact({\n\t\t\t...this.currentContact,\n\t\t\tservices: childrenContacts\n\t\t\t\t.reduce((acc: DecryptedService[], c: DecryptedContact) => acc.concat(c.services ?? []), [])\n\t\t\t\t.concat((this.currentContact.services ?? []).filter((s) => thisKeptServiceIds.includes(s.id))),\n\t\t\tsubContacts: childrenContacts\n\t\t\t\t.reduce((acc: DecryptedSubContact[], c: DecryptedContact) => acc.concat(c.subContacts ?? []), [])\n\t\t\t\t.concat((this.currentContact.subContacts ?? []).filter((s) => s.formId === this.rootForm.id)),\n\t\t})\n\t}\n\n\t/**\n\t * Returns a contact that combines the content of the contact in this form with the content of all contents stored in the children\n\t */\n\tallForms(): CardinalForm[] {\n\t\treturn [this.rootForm].concat(this.children.flatMap((c) => c.allForms()))\n\t}\n\n\tconstructor(\n\t\trootForm: CardinalForm,\n\t\tcurrentContact: DecryptedContact,\n\t\tcontactsHistory: DecryptedContact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => DecryptedService,\n\t\tchildren: ContactFormValuesContainer[],\n\t\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>,\n\t\tformRecycler: (formId: string) => Promise<void>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[] = [],\n\t\tinitialised = true,\n\t) {\n\t\tconsole.log(`Creating contact FVC (${rootForm.formTemplateId}) with ${children.length} children [${this._id}]`)\n\n\t\tif (contactsHistory.includes(currentContact)) {\n\t\t\tthrow new Error('Illegal argument, the history must not contain the currentContact')\n\t\t}\n\t\tthis.rootForm = rootForm\n\t\tthis.currentContact = currentContact\n\t\tthis.contactsHistory = sortedBy(contactsHistory, 'created', 'desc')\n\t\tthis.children = children\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.formFactory = formFactory\n\t\tthis.formRecycler = formRecycler\n\t\tthis.changeListeners = changeListeners\n\t\tthis._initialised = initialised\n\n\t\tthis.indexedServices = [this.currentContact].concat(this.contactsHistory).reduce((acc, ctc) => {\n\t\t\tconst services =\n\t\t\t\tctc.services\n\t\t\t\t\t?.filter((s) => ctc.subContacts?.some((sc) => sc.formId === this.rootForm.id && sc.services?.some((sss) => sss.serviceId === s.id)))\n\t\t\t\t\t?.reduce(\n\t\t\t\t\t\t(acc, s) =>\n\t\t\t\t\t\t\ts.id\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t\t[s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({\n\t\t\t\t\t\t\t\t\t\t\trevision: ctc.rev ?? null,\n\t\t\t\t\t\t\t\t\t\t\tmodified: ctc.created,\n\t\t\t\t\t\t\t\t\t\t\tvalue: s,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t\tacc,\n\t\t\t\t\t) ?? acc\n\t\t\treturn services\n\t\t}, {} as VersionedData<DecryptedService>)\n\n\t\tthis.synchronise()\n\t}\n\n\tsynchronise() {\n\t\tthis.children.forEach((childFVC) => {\n\t\t\tthis.registerChildFormValuesContainer(childFVC.synchronise())\n\t\t})\n\t\treturn this\n\t}\n\n\t//Make sure that when a child is changed, a new version of this is created with the updated child\n\tregisterChildFormValuesContainer(childFormValueContainer: ContactFormValuesContainer) {\n\t\tchildFormValueContainer.changeListeners = [\n\t\t\t(newValue) => {\n\t\t\t\tconsole.log(`Child ${newValue._id} ${childFormValueContainer.rootForm.formTemplateId} changed, updating parent ${this._id} ${this.rootForm.formTemplateId}`)\n\t\t\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\t\tthis.rootForm,\n\t\t\t\t\tthis.currentContact,\n\t\t\t\t\tthis.contactsHistory,\n\t\t\t\t\tthis.serviceFactory,\n\t\t\t\t\tthis.children.map((c) => {\n\t\t\t\t\t\treturn c.rootForm.id === childFormValueContainer.rootForm.id ? newValue : c\n\t\t\t\t\t}),\n\t\t\t\t\tthis.formFactory,\n\t\t\t\t\tthis.formRecycler,\n\t\t\t\t)\n\t\t\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer))\n\t\t\t},\n\t\t]\n\t}\n\n\tstatic async fromFormsHierarchy(\n\t\trootForm: CardinalForm,\n\t\tcurrentContact: DecryptedContact,\n\t\tcontactsHistory: DecryptedContact[],\n\t\tserviceFactory: (label: string, serviceId?: string) => DecryptedService,\n\t\tformChildrenProvider: (parentId: string | undefined) => Promise<CardinalForm[]>,\n\t\tformFactory: (parentId: string, anchorId: string, formTemplateId: string, label: string) => Promise<CardinalForm>,\n\t\tformRecycler: (formId: string) => Promise<void>,\n\t\tchangeListeners: ((newValue: ContactFormValuesContainer) => void)[] = [],\n\t): Promise<ContactFormValuesContainer> {\n\t\tconst contactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\trootForm,\n\t\t\tcurrentContact,\n\t\t\tcontactsHistory,\n\t\t\tserviceFactory,\n\t\t\trootForm.id\n\t\t\t\t? await Promise.all(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tawait formChildrenProvider(rootForm.id)\n\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\tasync (f) =>\n\t\t\t\t\t\t\t\t// eslint-disable-next-line max-len\n\t\t\t\t\t\t\t\tawait ContactFormValuesContainer.fromFormsHierarchy(f, currentContact, contactsHistory, serviceFactory, formChildrenProvider, formFactory, formRecycler),\n\t\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: [],\n\t\t\tformFactory,\n\t\t\tformRecycler,\n\t\t\tchangeListeners,\n\t\t\tfalse,\n\t\t)\n\t\tcontactFormValuesContainer.children.forEach((childFVC) => contactFormValuesContainer.registerChildFormValuesContainer(childFVC))\n\n\t\treturn contactFormValuesContainer\n\t}\n\n\tgetLabel(): string {\n\t\treturn this.rootForm.descr ?? ''\n\t}\n\n\tgetFormId(): string | undefined {\n\t\treturn this.rootForm?.formTemplateId\n\t}\n\n\tregisterChangeListener(listener: (newValue: ContactFormValuesContainer) => void): void {\n\t\tthis.changeListeners.push(listener)\n\t}\n\n\tunregisterChangeListener(listener: (newValue: ContactFormValuesContainer) => void): void {\n\t\tthis.changeListeners = this.changeListeners.filter((l) => l !== listener)\n\t}\n\n\tasync getChildren(): Promise<ContactFormValuesContainer[]> {\n\t\treturn this.children\n\t}\n\n\tasync getValidationErrors(): Promise<[FieldMetadata, string][]> {\n\t\tthrow new Error('Validation not supported at contact level')\n\t}\n\n\tgetDefaultValue(): Promise<FieldValue | undefined> {\n\t\treturn Promise.resolve(undefined)\n\t}\n\n\tgetValues(revisionsFilter: (id: string, history: Version<ServiceMetadata>[]) => (string | null)[]): VersionedData<DecryptedService> {\n\t\treturn Object.entries(this.getServicesInHistory(revisionsFilter)).reduce(\n\t\t\t(acc, [id, history]) =>\n\t\t\t\thistory.length\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[id]: [...history].sort((a, b) => (b?.modified || +new Date()) - (a?.modified || +new Date())),\n\t\t\t\t\t }\n\t\t\t\t\t: acc,\n\t\t\t{},\n\t\t)\n\t}\n\n\tgetMetadata(id: string, revisions: (string | null)[]): VersionedData<ServiceMetadata> {\n\t\treturn [this.currentContact]\n\t\t\t.concat(this.contactsHistory)\n\t\t\t.filter((ctc) => ctc.rev !== undefined && revisions.includes(ctc.rev))\n\t\t\t.reduce(\n\t\t\t\t(acc, ctc) =>\n\t\t\t\t\t(ctc.services ?? [])\n\t\t\t\t\t\t.filter((s) => s.id === id)\n\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\t(acc, s) =>\n\t\t\t\t\t\t\t\ts.id\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t\t\t[s.id]: (acc[s.id] ?? (acc[s.id] = [])).concat({\n\t\t\t\t\t\t\t\t\t\t\t\trevision: ctc.rev ?? null,\n\t\t\t\t\t\t\t\t\t\t\t\tmodified: s.modified,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: s.label ?? s.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tresponsible: s.responsible,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t) ?? acc,\n\t\t\t\t{} as { [id: string]: Version<ServiceMetadata>[] },\n\t\t\t) //index services in history by id\n\t}\n\n\tsetMetadata(meta: ServiceMetadata, id?: string): void {\n\t\tconst service = (id && this.getServiceInCurrentContact(id)) || this.serviceFactory(meta.label, id)\n\t\tif (!service.id) {\n\t\t\tthrow new Error('Service id must be defined')\n\t\t}\n\t\tif (\n\t\t\t(meta.responsible && service.responsible !== meta.responsible) ||\n\t\t\t(meta.valueDate && service.valueDate !== meta.valueDate) ||\n\t\t\t(meta.codes && service.codes !== meta.codes) ||\n\t\t\t(meta.tags && service.tags !== meta.tags)\n\t\t) {\n\t\t\tconst newService = new DecryptedService({ ...service, modified: Date.now() })\n\t\t\tmeta.responsible && (newService.responsible = meta.responsible)\n\t\t\tmeta.valueDate && (newService.valueDate = meta.valueDate)\n\t\t\tmeta.codes && (newService.codes = normalizeCodes(meta.codes))\n\t\t\tmeta.tags && (newService.tags = normalizeCodes(meta.tags))\n\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tnew DecryptedContact({\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tservices: this.currentContact.services?.map((s) => (s.id === service.id ? newService : s)),\n\t\t\t\t}),\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newFormValuesContainer))\n\t\t}\n\t}\n\n\tsetValue(label: string, language: string, value?: DecryptedService, id?: string, metadata?: ServiceMetadata, changeListenersOverrider?: (fvc: ContactFormValuesContainer) => void): void {\n\t\tconst service = (id && this.getServicesInHistory((sid: string, history) => (sid === id ? history.map((x) => x.revision) : []))[id]?.[0]?.value) || this.serviceFactory(label, id)\n\t\tif (!service.id) {\n\t\t\tthrow new Error('Service id must be defined')\n\t\t}\n\t\tconsole.log('Setting value of service', service.id, 'with', value, 'and metadata', metadata)\n\t\tconst newContent = value?.content?.[language]\n\t\tconst newCodes = value?.codes ? normalizeCodes(value.codes) : []\n\t\tif (!isContentEqual(service.content?.[language], newContent) || (newCodes && !areCodesEqual(newCodes, service.codes ?? []))) {\n\t\t\tconst newService = new DecryptedService({ ...service, modified: Date.now() })\n\t\t\tconst newContents = newContent\n\t\t\t\t? {\n\t\t\t\t\t\t...(service.content || {}),\n\t\t\t\t\t\t[language]: newContent,\n\t\t\t\t }\n\t\t\t\t: { ...(service.content || {}) }\n\t\t\tif (!newContent) {\n\t\t\t\tdelete newContents[language]\n\t\t\t}\n\n\t\t\tlet newCurrentContact: DecryptedContact\n\t\t\tif (!Object.entries(newContents).filter(([, cnt]) => cnt !== undefined).length) {\n\t\t\t\tnewCurrentContact = new DecryptedContact({\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tsubContacts: (this.currentContact.subContacts ?? []).some((sc) => sc.formId === this.rootForm.id)\n\t\t\t\t\t\t? (this.currentContact.subContacts ?? []).map((sc) => {\n\t\t\t\t\t\t\t\tif (sc.formId === this.rootForm.id) {\n\t\t\t\t\t\t\t\t\treturn new DecryptedSubContact({\n\t\t\t\t\t\t\t\t\t\t...sc,\n\t\t\t\t\t\t\t\t\t\tservices: (sc.services ?? []).filter((s) => s.serviceId !== service.id).concat([new ServiceLink({ serviceId: service.id })]),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn sc\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: (this.currentContact.subContacts ?? []).concat(\n\t\t\t\t\t\t\t\tnew DecryptedSubContact({\n\t\t\t\t\t\t\t\t\tformId: this.rootForm.id,\n\t\t\t\t\t\t\t\t\tservices: [new ServiceLink({ serviceId: service.id })],\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t ),\n\t\t\t\t\tservices: (this.currentContact.services ?? []).some((s) => s.id === service.id)\n\t\t\t\t\t\t? (this.currentContact.services ?? []).filter((s) => s.id !== service.id)\n\t\t\t\t\t\t: [...(this.currentContact.services ?? [])],\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tnewService.content = newContents\n\t\t\t\tnewService.codes = newCodes\n\n\t\t\t\tif (metadata) {\n\t\t\t\t\tnewService.responsible = metadata.responsible ?? newService.responsible\n\t\t\t\t\tnewService.valueDate = metadata.valueDate ?? newService.valueDate\n\t\t\t\t\tnewService.tags = metadata.tags ? normalizeCodes(metadata.tags) : newService.tags\n\t\t\t\t\tnewService.label = metadata.label ?? newService.label\n\t\t\t\t}\n\n\t\t\t\tnewCurrentContact = new DecryptedContact({\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tsubContacts: (this.currentContact.subContacts ?? []).some((sc) => sc.formId === this.rootForm.id)\n\t\t\t\t\t\t? (this.currentContact.subContacts ?? []).map((sc) => {\n\t\t\t\t\t\t\t\tif (sc.formId === this.rootForm.id) {\n\t\t\t\t\t\t\t\t\treturn new DecryptedSubContact({\n\t\t\t\t\t\t\t\t\t\t...sc,\n\t\t\t\t\t\t\t\t\t\tservices: (sc.services ?? []).filter((s) => s.serviceId !== service.id).concat([new ServiceLink({ serviceId: service.id })]),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn sc\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: (this.currentContact.subContacts ?? []).concat(\n\t\t\t\t\t\t\t\tnew DecryptedSubContact({\n\t\t\t\t\t\t\t\t\tformId: this.rootForm.id,\n\t\t\t\t\t\t\t\t\tservices: [new ServiceLink({ serviceId: service.id })],\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t ),\n\t\t\t\t\tservices: (this.currentContact.services ?? []).some((s) => s.id === service.id)\n\t\t\t\t\t\t? (this.currentContact.services ?? []).map((s) => (s.id === service.id ? newService : s))\n\t\t\t\t\t\t: [...(this.currentContact.services ?? []), newService],\n\t\t\t\t})\n\t\t\t}\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tnewCurrentContact,\n\t\t\t\tthis.contactsHistory.map((c) => (c === this.currentContact ? newCurrentContact : c)),\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tchangeListenersOverrider ? changeListenersOverrider(newFormValuesContainer) : this.changeListeners.forEach((l) => notify(l, newFormValuesContainer))\n\t\t}\n\t}\n\n\tdelete(serviceId: string): void {\n\t\tconst service = this.getServiceInCurrentContact(serviceId)\n\t\tif (service) {\n\t\t\tconst newFormValuesContainer = new ContactFormValuesContainer(\n\t\t\t\tthis.rootForm,\n\t\t\t\tnew DecryptedContact({\n\t\t\t\t\t...this.currentContact,\n\t\t\t\t\tservices: this.currentContact.services?.map((s) =>\n\t\t\t\t\t\ts.id === serviceId\n\t\t\t\t\t\t\t? new DecryptedService({\n\t\t\t\t\t\t\t\t\t...service,\n\t\t\t\t\t\t\t\t\tendOfLife: Date.now(),\n\t\t\t\t\t\t\t })\n\t\t\t\t\t\t\t: s,\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t\tthis.contactsHistory,\n\t\t\t\tthis.serviceFactory,\n\t\t\t\tthis.children,\n\t\t\t\tthis.formFactory,\n\t\t\t\tthis.formRecycler,\n\t\t\t\tthis.changeListeners,\n\t\t\t)\n\n\t\t\tthis.changeListeners.forEach((l) => notify(l, newFormValuesContainer))\n\t\t}\n\t}\n\n\tasync compute<T>(): Promise<T | undefined> {\n\t\tthrow new Error('Compute not supported at contact level')\n\t}\n\n\t/** returns all services in history that match a selector\n\t *\n\t * @private\n\t * @param revisionsFilter\n\t */\n\tprivate getServicesInHistory(revisionsFilter: (id: string, history: Version<ServiceMetadata>[]) => (string | null)[]): VersionedData<DecryptedService> {\n\t\t//index services in history by id\n\t\treturn Object.entries(this.indexedServices)\n\t\t\t.map(([id, history]) => {\n\t\t\t\tconst keptRevisions = revisionsFilter(\n\t\t\t\t\tid,\n\t\t\t\t\thistory.map(({ revision, modified, value: s }) => ({\n\t\t\t\t\t\trevision,\n\t\t\t\t\t\tmodified,\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tlabel: s.label ?? s.id ?? '',\n\t\t\t\t\t\t\towner: s.responsible,\n\t\t\t\t\t\t\tvalueDate: s.valueDate,\n\t\t\t\t\t\t\tcodes: s.codes,\n\t\t\t\t\t\t\ttags: s.tags,\n\t\t\t\t\t\t},\n\t\t\t\t\t})),\n\t\t\t\t)\n\t\t\t\treturn [id, history.filter(({ revision }) => keptRevisions.includes(revision))] as [string, Version<DecryptedService>[]]\n\t\t\t})\n\t\t\t.reduce((acc, [id, history]) => ({ ...acc, [id]: history }), {})\n\t}\n\n\tasync addChild(anchorId: string, templateId: string, label: string): Promise<void> {\n\t\tconst parentId = this.rootForm.id\n\t\tif (!parentId) return\n\n\t\tconst newForm = await this.formFactory(parentId, anchorId, templateId, label)\n\t\tconst childFVC = new ContactFormValuesContainer(newForm, this.currentContact, this.contactsHistory, this.serviceFactory, [], this.formFactory, this.formRecycler, [], false)\n\n\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\tthis.rootForm,\n\t\t\tthis.currentContact,\n\t\t\tthis.contactsHistory,\n\t\t\tthis.serviceFactory,\n\t\t\t[...this.children, childFVC],\n\t\t\tthis.formFactory,\n\t\t\tthis.formRecycler,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tnewContactFormValuesContainer.registerChildFormValuesContainer(childFVC)\n\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer))\n\t}\n\n\tprivate getServiceInCurrentContact(id: string): DecryptedService | undefined {\n\t\tconst service = (this.currentContact.services || [])?.find((s) => s.id === id)\n\t\treturn service ?? undefined\n\t}\n\n\tasync removeChild(container: ContactFormValuesContainer): Promise<void> {\n\t\tconst newContactFormValuesContainer = new ContactFormValuesContainer(\n\t\t\tthis.rootForm,\n\t\t\tthis.currentContact,\n\t\t\tthis.contactsHistory,\n\t\t\tthis.serviceFactory,\n\t\t\tthis.children.filter((c) => c.rootForm.id !== container.rootForm.id),\n\t\t\tthis.formFactory,\n\t\t\tthis.formRecycler,\n\t\t\tthis.changeListeners,\n\t\t)\n\t\tthis.changeListeners.forEach((l) => notify(l, newContactFormValuesContainer))\n\t}\n}\n\nconst setValueOnContactFormValuesContainer = (\n\tcfvc: ContactFormValuesContainer,\n\tlabel: string,\n\tlanguage: string,\n\tfv?: FieldValue,\n\tid?: string,\n\tmetadata?: FieldMetadata,\n\tchangeListenersOverrider?: (fvc: ContactFormValuesContainer) => void,\n) => {\n\tconst value = fv?.content[language]\n\tcfvc.setValue(\n\t\tlabel,\n\t\tlanguage,\n\t\tnew DecryptedService({\n\t\t\tid: id,\n\t\t\tcodes: fv?.codes?.map((x) => new CodeStub(x)) ?? [],\n\t\t\tcontent: value\n\t\t\t\t? {\n\t\t\t\t\t\t[language]: primitiveTypeToContent(language, value),\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t}),\n\t\tid,\n\t\tmetadata\n\t\t\t? {\n\t\t\t\t\tlabel: metadata?.label ?? label,\n\t\t\t\t\tresponsible: metadata?.owner,\n\t\t\t\t\tvalueDate: metadata?.valueDate,\n\t\t\t\t\ttags: metadata?.tags?.map((x) => new CodeStub(x)),\n\t\t\t }\n\t\t\t: undefined,\n\t\tchangeListenersOverrider,\n\t)\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@icure/form",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.40",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@icure/cardinal-sdk": "^1.3.0-ts-2",
|
|
9
8
|
"@icure/motss-app-datepicker": "^6.0.0-rc.39",
|
|
10
9
|
"@lit/task": "^1.0.2",
|
|
11
10
|
"@webcomponents/webcomponentsjs": "^2.7.0",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { FieldMetadata, FieldValue, Form } from '../components/model';
|
|
2
|
-
import { FormValuesContainer } from '../generic';
|
|
3
|
-
export declare const computeFormDefaultValues: (formValuesContainer: FormValuesContainer<FieldValue, FieldMetadata>, form?: Form, language?: string, owner?: string) => [FieldValue, FieldMetadata][];
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { makeMetadata } from './fields-values-provider';
|
|
2
|
-
export const computeFormDefaultValues = (formValuesContainer, form, language, owner) => {
|
|
3
|
-
var _a;
|
|
4
|
-
const extractDefaultValues = (fgs, language) => fgs.reduce((acc, fg) => {
|
|
5
|
-
var _a, _b, _c;
|
|
6
|
-
if (fg.clazz === 'group' && ((_a = fg.fields) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
7
|
-
return [...acc, ...extractDefaultValues(fg.fields, language)];
|
|
8
|
-
}
|
|
9
|
-
else if (fg.clazz === 'field') {
|
|
10
|
-
if ((_b = fg.computedProperties) === null || _b === void 0 ? void 0 : _b.defaultValue) {
|
|
11
|
-
const value = formValuesContainer === null || formValuesContainer === void 0 ? void 0 : formValuesContainer.compute((_c = fg.computedProperties) === null || _c === void 0 ? void 0 : _c.defaultValue);
|
|
12
|
-
if (value !== undefined) {
|
|
13
|
-
const lng = language !== null && language !== void 0 ? language : 'en';
|
|
14
|
-
if (!value.content[lng] && value.content['*']) {
|
|
15
|
-
value.content[lng] = value.content['*'];
|
|
16
|
-
}
|
|
17
|
-
if (value.content[lng]) {
|
|
18
|
-
return [...acc, [value, makeMetadata(fg, owner)]];
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return acc;
|
|
24
|
-
}, []);
|
|
25
|
-
return ((_a = form === null || form === void 0 ? void 0 : form.sections.reduce((acc, section) => {
|
|
26
|
-
var _a;
|
|
27
|
-
return [...acc, ...extractDefaultValues((_a = section.fields) !== null && _a !== void 0 ? _a : [], language)];
|
|
28
|
-
}, [])) !== null && _a !== void 0 ? _a : []);
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=form-value-container.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-value-container.js","sourceRoot":"","sources":["../../tmp/utils/form-value-container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGvD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACvC,mBAAmE,EACnE,IAAW,EACX,QAAiB,EACjB,KAAc,EACkB,EAAE;;IAClC,MAAM,oBAAoB,GAAG,CAAC,GAAmC,EAAE,QAAiB,EAAiC,EAAE,CACtH,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;;QACtB,IAAI,EAAE,CAAC,KAAK,KAAK,OAAO,KAAI,MAAA,EAAE,CAAC,MAAM,0CAAE,MAAM,CAAA,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC9D,CAAC;aAAM,IAAI,EAAE,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,MAAA,EAAE,CAAC,kBAAkB,0CAAE,YAAY,EAAE,CAAC;gBACzC,MAAM,KAAK,GAA2B,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,OAAO,CAAC,MAAA,EAAE,CAAC,kBAAkB,0CAAE,YAAY,CAAC,CAAA;gBACvG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,GAAG,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI,CAAA;oBAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/C,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBACxC,CAAC;oBACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;wBACxB,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;oBAClD,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,GAAG,CAAA;IACX,CAAC,EAAE,EAAmC,CAAC,CAAA;IAExC,OAAO,CACN,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;;QACtC,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,oBAAoB,CAAC,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAA;IACzE,CAAC,EAAE,EAAmC,CAAC,mCAAI,EAAE,CAC7C,CAAA;AACF,CAAC,CAAA","sourcesContent":["import { Field, FieldMetadata, FieldValue, Form, Group, Subform } from '../components/model'\nimport { makeMetadata } from './fields-values-provider'\nimport { FormValuesContainer } from '../generic'\n\nexport const computeFormDefaultValues = (\n\tformValuesContainer: FormValuesContainer<FieldValue, FieldMetadata>,\n\tform?: Form,\n\tlanguage?: string,\n\towner?: string,\n): [FieldValue, FieldMetadata][] => {\n\tconst extractDefaultValues = (fgs: Array<Field | Group | Subform>, language?: string): [FieldValue, FieldMetadata][] =>\n\t\tfgs.reduce((acc, fg) => {\n\t\t\tif (fg.clazz === 'group' && fg.fields?.length) {\n\t\t\t\treturn [...acc, ...extractDefaultValues(fg.fields, language)]\n\t\t\t} else if (fg.clazz === 'field') {\n\t\t\t\tif (fg.computedProperties?.defaultValue) {\n\t\t\t\t\tconst value: FieldValue | undefined = formValuesContainer?.compute(fg.computedProperties?.defaultValue)\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\tconst lng = language ?? 'en'\n\t\t\t\t\t\tif (!value.content[lng] && value.content['*']) {\n\t\t\t\t\t\t\tvalue.content[lng] = value.content['*']\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value.content[lng]) {\n\t\t\t\t\t\t\treturn [...acc, [value, makeMetadata(fg, owner)]]\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\treturn acc\n\t\t}, [] as [FieldValue, FieldMetadata][])\n\n\treturn (\n\t\tform?.sections.reduce((acc, section) => {\n\t\t\treturn [...acc, ...extractDefaultValues(section.fields ?? [], language)]\n\t\t}, [] as [FieldValue, FieldMetadata][]) ?? []\n\t)\n}\n"]}
|