@fristil/designsystem 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/README.md +22 -9
  3. package/dist/components/frittstaende/connection-status/connection-status.d.ts +28 -0
  4. package/dist/components/frittstaende/connection-status/connection-status.d.ts.map +1 -0
  5. package/dist/components/frittstaende/connection-status/connection-status.js +22 -0
  6. package/dist/components/frittstaende/connection-status/connection-status.js.map +1 -0
  7. package/dist/components/frittstaende/connection-status/fs-connection-status.d.ts +54 -0
  8. package/dist/components/frittstaende/connection-status/fs-connection-status.d.ts.map +1 -0
  9. package/dist/components/frittstaende/connection-status/fs-connection-status.js +123 -0
  10. package/dist/components/frittstaende/connection-status/fs-connection-status.js.map +1 -0
  11. package/dist/components/frittstaende/session-timeout/fs-session-timeout.d.ts +56 -0
  12. package/dist/components/frittstaende/session-timeout/fs-session-timeout.d.ts.map +1 -0
  13. package/dist/components/frittstaende/session-timeout/fs-session-timeout.js +179 -0
  14. package/dist/components/frittstaende/session-timeout/fs-session-timeout.js.map +1 -0
  15. package/dist/components/frittstaende/session-timeout/session-timeout.d.ts +28 -0
  16. package/dist/components/frittstaende/session-timeout/session-timeout.d.ts.map +1 -0
  17. package/dist/components/frittstaende/session-timeout/session-timeout.js +22 -0
  18. package/dist/components/frittstaende/session-timeout/session-timeout.js.map +1 -0
  19. package/dist/components/frittstaende/toast/fs-toast.d.ts +16 -22
  20. package/dist/components/frittstaende/toast/fs-toast.d.ts.map +1 -1
  21. package/dist/components/frittstaende/toast/fs-toast.js +38 -27
  22. package/dist/components/frittstaende/toast/fs-toast.js.map +1 -1
  23. package/dist/components/frittstaende/toast/toast.d.ts +34 -0
  24. package/dist/components/frittstaende/toast/toast.d.ts.map +1 -0
  25. package/dist/components/frittstaende/toast/toast.js +26 -0
  26. package/dist/components/frittstaende/toast/toast.js.map +1 -0
  27. package/dist/components/ramme/error-summary/error-summary.d.ts +39 -0
  28. package/dist/components/ramme/error-summary/error-summary.d.ts.map +1 -0
  29. package/dist/components/ramme/error-summary/error-summary.js +31 -0
  30. package/dist/components/ramme/error-summary/error-summary.js.map +1 -0
  31. package/dist/components/ramme/error-summary/fs-error-summary.d.ts +16 -42
  32. package/dist/components/ramme/error-summary/fs-error-summary.d.ts.map +1 -1
  33. package/dist/components/ramme/error-summary/fs-error-summary.js +57 -92
  34. package/dist/components/ramme/error-summary/fs-error-summary.js.map +1 -1
  35. package/dist/components/ramme/field/field-core.d.ts +31 -0
  36. package/dist/components/ramme/field/field-core.d.ts.map +1 -1
  37. package/dist/components/ramme/field/field-core.js +31 -0
  38. package/dist/components/ramme/field/field-core.js.map +1 -1
  39. package/dist/components/ramme/field/fs-field.d.ts +38 -40
  40. package/dist/components/ramme/field/fs-field.d.ts.map +1 -1
  41. package/dist/components/ramme/field/fs-field.js +127 -54
  42. package/dist/components/ramme/field/fs-field.js.map +1 -1
  43. package/dist/components/ramme/popover/fs-popover.d.ts +20 -27
  44. package/dist/components/ramme/popover/fs-popover.d.ts.map +1 -1
  45. package/dist/components/ramme/popover/fs-popover.js +68 -54
  46. package/dist/components/ramme/popover/fs-popover.js.map +1 -1
  47. package/dist/components/ramme/popover/popover.d.ts +43 -0
  48. package/dist/components/ramme/popover/popover.d.ts.map +1 -0
  49. package/dist/components/ramme/popover/popover.js +49 -0
  50. package/dist/components/ramme/popover/popover.js.map +1 -0
  51. package/dist/components/ramme/suggestion/fs-suggestion.d.ts +75 -0
  52. package/dist/components/ramme/suggestion/fs-suggestion.d.ts.map +1 -0
  53. package/dist/components/ramme/suggestion/fs-suggestion.js +232 -0
  54. package/dist/components/ramme/suggestion/fs-suggestion.js.map +1 -0
  55. package/dist/components/ramme/suggestion/suggestion.d.ts +97 -0
  56. package/dist/components/ramme/suggestion/suggestion.d.ts.map +1 -0
  57. package/dist/components/ramme/suggestion/suggestion.js +79 -0
  58. package/dist/components/ramme/suggestion/suggestion.js.map +1 -0
  59. package/dist/components/ramme/tabs/fs-tabs.d.ts +31 -36
  60. package/dist/components/ramme/tabs/fs-tabs.d.ts.map +1 -1
  61. package/dist/components/ramme/tabs/fs-tabs.js +62 -84
  62. package/dist/components/ramme/tabs/fs-tabs.js.map +1 -1
  63. package/dist/components/ramme/tabs/tabs.d.ts +50 -0
  64. package/dist/components/ramme/tabs/tabs.d.ts.map +1 -0
  65. package/dist/components/ramme/tabs/tabs.js +54 -0
  66. package/dist/components/ramme/tabs/tabs.js.map +1 -0
  67. package/dist/fs.d.ts +94 -0
  68. package/dist/fs.d.ts.map +1 -1
  69. package/dist/fs.js +42 -0
  70. package/dist/fs.js.map +1 -1
  71. package/dist/index.d.ts +10 -3
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +10 -3
  74. package/dist/index.js.map +1 -1
  75. package/dist/jsx/react.d.ts +35 -50
  76. package/dist/jsx/react.d.ts.map +1 -1
  77. package/dist/react.d.ts +142 -1
  78. package/dist/react.d.ts.map +1 -1
  79. package/dist/react.js +71 -2
  80. package/dist/react.js.map +1 -1
  81. package/package.json +16 -25
  82. package/src/components/frittstaende/connection-status/connection-status.css +33 -0
  83. package/src/components/frittstaende/connection-status/connection-status.ts +41 -0
  84. package/src/components/frittstaende/connection-status/fs-connection-status.ts +144 -0
  85. package/src/components/frittstaende/session-timeout/fs-session-timeout.ts +212 -0
  86. package/src/components/frittstaende/session-timeout/session-timeout.css +43 -0
  87. package/src/components/frittstaende/session-timeout/session-timeout.ts +42 -0
  88. package/src/components/frittstaende/toast/fs-toast.ts +39 -30
  89. package/src/components/frittstaende/toast/toast.ts +45 -0
  90. package/src/components/ramme/error-summary/error-summary.ts +55 -0
  91. package/src/components/ramme/error-summary/fs-error-summary.ts +62 -119
  92. package/src/components/ramme/field/field-core.ts +32 -0
  93. package/src/components/ramme/field/fs-field.ts +144 -61
  94. package/src/components/ramme/popover/fs-popover.ts +78 -72
  95. package/src/components/ramme/popover/popover.ts +79 -0
  96. package/src/components/ramme/suggestion/fs-suggestion.ts +265 -0
  97. package/src/components/ramme/suggestion/suggestion.ts +105 -0
  98. package/src/components/ramme/tabs/fs-tabs.ts +67 -98
  99. package/src/components/ramme/tabs/tabs.ts +104 -0
  100. package/dist/components/frittstaende/calendar/fs-calendar.d.ts +0 -52
  101. package/dist/components/frittstaende/calendar/fs-calendar.d.ts.map +0 -1
  102. package/dist/components/frittstaende/calendar/fs-calendar.js +0 -462
  103. package/dist/components/frittstaende/calendar/fs-calendar.js.map +0 -1
  104. package/dist/components/frittstaende/date-field/fs-date-field.d.ts +0 -110
  105. package/dist/components/frittstaende/date-field/fs-date-field.d.ts.map +0 -1
  106. package/dist/components/frittstaende/date-field/fs-date-field.js +0 -264
  107. package/dist/components/frittstaende/date-field/fs-date-field.js.map +0 -1
  108. package/dist/components/frittstaende/suggestion/fs-suggestion.d.ts +0 -133
  109. package/dist/components/frittstaende/suggestion/fs-suggestion.d.ts.map +0 -1
  110. package/dist/components/frittstaende/suggestion/fs-suggestion.js +0 -280
  111. package/dist/components/frittstaende/suggestion/fs-suggestion.js.map +0 -1
  112. package/src/components/frittstaende/calendar/fs-calendar.ts +0 -525
  113. package/src/components/frittstaende/date-field/date-field.css +0 -54
  114. package/src/components/frittstaende/date-field/fs-date-field.ts +0 -309
  115. package/src/components/frittstaende/suggestion/fs-suggestion.ts +0 -333
  116. /package/src/components/{frittstaende → ramme}/suggestion/suggestion.css +0 -0
@@ -1,264 +0,0 @@
1
- import { html, LitElement } from "lit";
2
- import { ifDefined } from "lit/directives/if-defined.js";
3
- import { live } from "lit/directives/live.js";
4
- import { computeFieldAttributes } from "../../ramme/field/field-core.js";
5
- import { defineFsCalendar } from "../calendar/fs-calendar.js";
6
- export const FS_DATE_FIELD_TAG = "fs-date-field";
7
- function uniqueId(prefix) {
8
- return `${prefix}-${Math.random().toString(36).slice(2, 9)}`;
9
- }
10
- function isoToDisplay(iso) {
11
- const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(iso);
12
- if (!match)
13
- return iso;
14
- return `${match[3]}-${match[2]}-${match[1]}`;
15
- }
16
- /** ISO-streng, eller null om teksten ikke er en dato som finnes. */
17
- function displayToIso(display) {
18
- const match = /^(\d{2})-(\d{2})-(\d{4})$/.exec(display);
19
- if (!match)
20
- return null;
21
- const day = Number(match[1]);
22
- const month = Number(match[2]);
23
- const year = Number(match[3]);
24
- // Date.UTC ruller over ved ugyldige datoer: 32-06-2026 blir 2026-07-02
25
- const date = new Date(Date.UTC(year, month - 1, day));
26
- if (date.getUTCFullYear() !== year ||
27
- date.getUTCMonth() !== month - 1 ||
28
- date.getUTCDate() !== day) {
29
- return null;
30
- }
31
- return `${year}-${String(month).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
32
- }
33
- export class FsDateField extends LitElement {
34
- /** Det feltet skal vise: brukerens egen tekst, ellers `value`. */
35
- get displayValue() {
36
- return this._typed ?? isoToDisplay(this.value);
37
- }
38
- /**
39
- * Settes `value` utenfra, er brukerens tekst ikke lenger gyldig.
40
- *
41
- * Det gjelder også når komponenten setter `value` selv etter at teksten
42
- * ble en fullstendig dato, og det er riktig: da viser `value` det samme.
43
- */
44
- willUpdate(changed) {
45
- if (changed.has("value"))
46
- this._typed = null;
47
- }
48
- constructor() {
49
- super();
50
- this.label = "Dato";
51
- this.value = "";
52
- this.placeholder = "DD-MM-YYYY";
53
- this.required = false;
54
- this.optional = false;
55
- this.disabled = false;
56
- this.readonly = false;
57
- this.invalid = false;
58
- /** Sann når brukeren har skrevet en dato som ikke finnes. */
59
- this._inputInvalid = false;
60
- /**
61
- * Teksten brukeren har skrevet, når den ikke er en gyldig dato.
62
- *
63
- * Halvskrevet tekst som «01-01-20» kan ikke bli til en ISO-dato, så
64
- * `value` står stille mens den skrives. Uten at teksten er en del av
65
- * tilstanden her, ville malen tegnet feltet tomt igjen ved neste
66
- * oppdatering, og brukeren mistet det de holdt på med.
67
- */
68
- this._typed = null;
69
- this.uid = uniqueId("fs-date-field");
70
- this.handleIconClick = (event) => {
71
- event.stopPropagation();
72
- const calendar = this.calendarElement;
73
- if (!calendar)
74
- return;
75
- if (calendar.open) {
76
- calendar.closePopup?.();
77
- }
78
- else {
79
- calendar.openPopup?.();
80
- }
81
- };
82
- this.handleInputKeydown = (event) => {
83
- if (event.key === " " || event.key === "ArrowDown") {
84
- event.preventDefault();
85
- const calendar = this.calendarElement;
86
- calendar?.openPopup?.();
87
- }
88
- };
89
- this.handleInput = (event) => {
90
- const target = event.currentTarget;
91
- const iso = displayToIso(target.value);
92
- if (iso !== null) {
93
- this._inputInvalid = false;
94
- this._typed = null;
95
- this.value = iso;
96
- this.requestUpdate();
97
- }
98
- else {
99
- this._typed = target.value;
100
- this.requestUpdate();
101
- }
102
- // Ugyldig inndata skal ikke endre this.value. Behold siste gyldige ISO.
103
- this.dispatchEvent(new Event("input", { bubbles: true, composed: true }));
104
- this.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
105
- };
106
- this.handleInputBlur = (event) => {
107
- const target = event.currentTarget;
108
- const raw = target.value;
109
- if (raw === "") {
110
- this._inputInvalid = false;
111
- }
112
- else {
113
- this._inputInvalid = displayToIso(raw) === null;
114
- }
115
- this.requestUpdate();
116
- };
117
- this.handleCalendarSelect = (event) => {
118
- const custom = event;
119
- const selected = custom.detail?.value;
120
- if (!selected)
121
- return;
122
- this._inputInvalid = false;
123
- this._typed = null;
124
- this.value = selected;
125
- this.requestUpdate();
126
- this.dispatchEvent(new Event("input", { bubbles: true, composed: true }));
127
- this.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
128
- queueMicrotask(() => {
129
- this.inputElement?.focus();
130
- });
131
- };
132
- defineFsCalendar();
133
- }
134
- createRenderRoot() {
135
- return this;
136
- }
137
- render() {
138
- const invalid = this.invalid || this._inputInvalid;
139
- // Tilgjengelighetskontrakten regnes ut ett sted, det samme som
140
- // `<fs-field>` og `fs.field()` bruker. Komponenten hadde tidligere sin
141
- // egen utgave av den samme logikken, og de to kunne gå fra hverandre.
142
- const field = computeFieldAttributes({
143
- id: this.inputId,
144
- help: Boolean(this.helpText),
145
- error: Boolean(this.errorText),
146
- required: this.required ? "symbol" : undefined,
147
- optional: this.optional,
148
- invalid,
149
- disabled: this.disabled,
150
- describedBy: this.describedBy ? [this.describedBy] : [],
151
- helpId: this.helpId,
152
- errorId: this.errorId,
153
- });
154
- return html `
155
- <div class="fs-date-field">
156
- <label
157
- class="fs-label"
158
- for=${field.label.for}
159
- data-required=${ifDefined(field.label["data-required"])}
160
- data-optional=${ifDefined(field.label["data-optional"])}
161
- aria-disabled=${ifDefined(field.label["aria-disabled"])}
162
- >${this.label}</label
163
- >
164
- <div class="fs-date-field__field">
165
- <input
166
- id=${field.control.id}
167
- class="fs-input"
168
- type="text"
169
- aria-describedby=${ifDefined(field.control["aria-describedby"])}
170
- aria-invalid=${ifDefined(field.control["aria-invalid"])}
171
- data-state=${ifDefined(field.control["data-state"])}
172
- .value=${live(this.displayValue)}
173
- name=${this.name ?? ""}
174
- placeholder=${this.placeholder}
175
- ?required=${this.required}
176
- ?disabled=${this.disabled}
177
- ?readonly=${this.readonly}
178
- @input=${this.handleInput}
179
- @blur=${this.handleInputBlur}
180
- @keydown=${this.handleInputKeydown}
181
- />
182
- <button
183
- type="button"
184
- class="fs-date-field__icon-btn"
185
- aria-label="Åpne kalender"
186
- tabindex="-1"
187
- ?disabled=${this.disabled}
188
- @click=${this.handleIconClick}
189
- >
190
- <svg
191
- xmlns="http://www.w3.org/2000/svg"
192
- viewBox="0 0 24 24"
193
- fill="none"
194
- stroke="currentColor"
195
- stroke-width="2"
196
- stroke-linecap="round"
197
- stroke-linejoin="round"
198
- width="1rem"
199
- height="1rem"
200
- aria-hidden="true"
201
- >
202
- <rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect>
203
- <line x1="16" y1="2" x2="16" y2="6"></line>
204
- <line x1="8" y1="2" x2="8" y2="6"></line>
205
- <line x1="3" y1="10" x2="21" y2="10"></line>
206
- </svg>
207
- </button>
208
- <fs-calendar
209
- id=${this.calendarId}
210
- .value=${this.value}
211
- ?disabled=${this.disabled}
212
- trigger-hidden
213
- class="fs-date-field__calendar"
214
- @date-select=${this.handleCalendarSelect}
215
- ></fs-calendar>
216
- </div>
217
-
218
- ${this.helpText ? html `<p class="fs-help-text" id=${this.helpId}>${this.helpText}</p>` : null}
219
- ${this.errorText
220
- ? html `<p class="fs-error-text" id=${field.error.id} ?hidden=${Boolean(field.error.hidden)}>${this.errorText}</p>`
221
- : null}
222
- </div>
223
- `;
224
- }
225
- get inputId() {
226
- return this.controlId || `${this.uid}-input`;
227
- }
228
- get calendarId() {
229
- return `${this.uid}-calendar`;
230
- }
231
- get helpId() {
232
- return `${this.uid}-help`;
233
- }
234
- get errorId() {
235
- return `${this.uid}-error`;
236
- }
237
- get inputElement() {
238
- return this.querySelector(`#${this.inputId}`);
239
- }
240
- get calendarElement() {
241
- return this.querySelector(`#${this.calendarId}`);
242
- }
243
- }
244
- FsDateField.properties = {
245
- label: { type: String },
246
- value: { type: String, reflect: true },
247
- name: { type: String },
248
- placeholder: { type: String },
249
- helpText: { type: String, attribute: "help-text" },
250
- errorText: { type: String, attribute: "error-text" },
251
- required: { type: Boolean, reflect: true },
252
- optional: { type: Boolean, reflect: true },
253
- disabled: { type: Boolean, reflect: true },
254
- readonly: { type: Boolean, reflect: true },
255
- invalid: { type: Boolean, reflect: true },
256
- controlId: { type: String, attribute: "control-id" },
257
- describedBy: { type: String, attribute: "described-by" },
258
- };
259
- export function defineFsDateField(tagName = FS_DATE_FIELD_TAG) {
260
- if (!customElements.get(tagName)) {
261
- customElements.define(tagName, FsDateField);
262
- }
263
- }
264
- //# sourceMappingURL=fs-date-field.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-date-field.js","sourceRoot":"","sources":["../../../../src/components/frittstaende/date-field/fs-date-field.ts"],"names":[],"mappings":"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"}
@@ -1,133 +0,0 @@
1
- import { LitElement } from "lit";
2
- export declare const FS_SUGGESTION_TAG: "fs-suggestion";
3
- type Option = {
4
- value: string;
5
- label: string;
6
- };
7
- /**
8
- * Et tekstfelt med forslag som snevres inn mens brukeren skriver.
9
- *
10
- * Alternativene skrives som `<option>`-barn, slik de ville stått i en
11
- * `<datalist>`. Komponenten leser dem én gang og bygger lista selv, fordi
12
- * nettleserens egen `<datalist>` ikke kan styles, oppfører seg ulikt i hver
13
- * nettleser, og ikke melder antall treff til skjermlesere.
14
- *
15
- * Feltet er et fritekstfelt, ikke en nedtrekksliste. Brukeren kan skrive noe
16
- * som ikke står i lista. Skal bare gitte verdier godtas, er
17
- * [Select](../../css/select/select.js) riktig.
18
- *
19
- * ```html
20
- * <fs-suggestion label="Kommune" name="kommune">
21
- * <option>Bergen</option>
22
- * <option>Oslo</option>
23
- * </fs-suggestion>
24
- * ```
25
- */
26
- export declare class FsSuggestion extends LitElement {
27
- static properties: {
28
- label: {
29
- type: StringConstructor;
30
- };
31
- value: {
32
- type: StringConstructor;
33
- reflect: boolean;
34
- };
35
- name: {
36
- type: StringConstructor;
37
- };
38
- placeholder: {
39
- type: StringConstructor;
40
- };
41
- helpText: {
42
- type: StringConstructor;
43
- attribute: string;
44
- };
45
- errorText: {
46
- type: StringConstructor;
47
- attribute: string;
48
- };
49
- invalid: {
50
- type: BooleanConstructor;
51
- reflect: boolean;
52
- };
53
- required: {
54
- type: BooleanConstructor;
55
- reflect: boolean;
56
- };
57
- optional: {
58
- type: BooleanConstructor;
59
- reflect: boolean;
60
- };
61
- disabled: {
62
- type: BooleanConstructor;
63
- reflect: boolean;
64
- };
65
- controlId: {
66
- type: StringConstructor;
67
- attribute: string;
68
- };
69
- describedBy: {
70
- type: StringConstructor;
71
- attribute: string;
72
- };
73
- noResultsText: {
74
- type: StringConstructor;
75
- attribute: string;
76
- };
77
- open: {
78
- type: BooleanConstructor;
79
- reflect: boolean;
80
- };
81
- };
82
- label: string;
83
- value: string;
84
- name?: string;
85
- placeholder?: string;
86
- helpText?: string;
87
- errorText?: string;
88
- invalid: boolean;
89
- required: boolean;
90
- optional: boolean;
91
- disabled: boolean;
92
- controlId?: string;
93
- describedBy?: string;
94
- noResultsText: string;
95
- open: boolean;
96
- /** Alternativet som er markert med piltastene. */
97
- private activeIndex;
98
- private options;
99
- private readonly uid;
100
- createRenderRoot(): this;
101
- private observer?;
102
- connectedCallback(): void;
103
- disconnectedCallback(): void;
104
- /** Leser `<option>`-barna og fjerner dem fra visningen. */
105
- private readOptions;
106
- /** Alternativene som passer med det som står i feltet. */
107
- private get filteredOptions();
108
- private get inputId();
109
- private get listId();
110
- private get statusId();
111
- render(): import("lit").TemplateResult<1>;
112
- /** Antall treff, som tekst skjermleseren leser opp. */
113
- private statusText;
114
- private handleFocus;
115
- private handleInput;
116
- private handleKeydown;
117
- private handleOptionClick;
118
- private handleOutsideClick;
119
- /** Velger et alternativ og melder fra. */
120
- select(option: Option): void;
121
- /** Åpner forslagslista. */
122
- show(): void;
123
- /** Lukker forslagslista. */
124
- hide(): void;
125
- }
126
- declare global {
127
- interface HTMLElementTagNameMap {
128
- "fs-suggestion": FsSuggestion;
129
- }
130
- }
131
- export declare function defineFsSuggestion(tagName?: "fs-suggestion"): void;
132
- export {};
133
- //# sourceMappingURL=fs-suggestion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-suggestion.d.ts","sourceRoot":"","sources":["../../../../src/components/frittstaende/suggestion/fs-suggestion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAA;AAMtC,eAAO,MAAM,iBAAiB,EAAG,eAAwB,CAAA;AAEzD,KAAK,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAehB;IAED,KAAK,SAAK;IACV,KAAK,SAAK;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,UAAQ;IACf,QAAQ,UAAQ;IAChB,QAAQ,UAAQ;IAChB,QAAQ,UAAQ;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,SAAgB;IAC7B,IAAI,UAAQ;IAEZ,kDAAkD;IAClD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CACuC;IAE3D,gBAAgB;IAIhB,OAAO,CAAC,QAAQ,CAAC,CAAkB;IAEnC,iBAAiB;IAgBjB,oBAAoB;IAOpB,2DAA2D;IAC3D,OAAO,CAAC,WAAW;IAYnB,0DAA0D;IAC1D,OAAO,KAAK,eAAe,GAM1B;IAED,OAAO,KAAK,OAAO,GAElB;IAED,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED,MAAM;IAsGN,uDAAuD;IACvD,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW,CAElB;IAED,OAAO,CAAC,WAAW,CAKlB;IAED,OAAO,CAAC,aAAa,CA2BpB;IAED,OAAO,CAAC,iBAAiB,CAKxB;IAED,OAAO,CAAC,kBAAkB,CAIzB;IAED,0CAA0C;IAC1C,MAAM,CAAC,MAAM,EAAE,MAAM;IAiBrB,2BAA2B;IAC3B,IAAI;IAIJ,4BAA4B;IAC5B,IAAI;CAIL;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,YAAY,CAAA;KAC9B;CACF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,kBAAoB,GAAG,IAAI,CAIpE"}