@nldd/design-system 0.8.77 → 0.8.78
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/custom-elements.json +1094 -186
- package/dist/components/actions/menu/menu.js +1 -1
- package/dist/components/actions/menu/menu.js.map +1 -1
- package/dist/components/actions/menu/menu.styles.d.ts.map +1 -1
- package/dist/components/actions/menu/menu.styles.js +1 -0
- package/dist/components/actions/menu/menu.styles.js.map +1 -1
- package/dist/components/actions/menu/menu.template.js +1 -1
- package/dist/components/actions/menu/menu.template.js.map +1 -1
- package/dist/components/components.js +16 -14
- package/dist/components/content/avatar/avatar.d.ts +9 -9
- package/dist/components/content/avatar/avatar.d.ts.map +1 -1
- package/dist/components/content/avatar/avatar.js +15 -15
- package/dist/components/content/avatar/avatar.js.map +1 -1
- package/dist/components/content/code-viewer/code-viewer.styles.js +2 -2
- package/dist/components/content/icon/icon-registry.js +1 -1
- package/dist/components/content/icon/icon-registry.js.map +1 -1
- package/dist/components/content/image/image.styles.d.ts.map +1 -1
- package/dist/components/content/image/image.styles.js +4 -1
- package/dist/components/content/image/image.styles.js.map +1 -1
- package/dist/components/content/tag/tag.js +6 -6
- package/dist/components/content/tag/tag.js.map +1 -1
- package/dist/components/forms/form/form.js +1 -1
- package/dist/components/forms/form-actions/form-actions.d.ts +3 -3
- package/dist/components/forms/form-actions/form-actions.js +3 -3
- package/dist/components/forms/form-section/form-section.d.ts.map +1 -1
- package/dist/components/forms/form-section/form-section.js +11 -10
- package/dist/components/forms/form-section/form-section.js.map +1 -1
- package/dist/components/{index-DVj2pCTH.js → index-BNg_kPou.js} +1 -1
- package/dist/components/{index-FhXfLApr.js → index-BmVf8Da6.js} +1 -1
- package/dist/components/{index-9C4reCh_.js → index-CU-wlUnI.js} +3141 -1752
- package/dist/components/{index-Cor-Ak4F.js → index-CcCKQ3Dj.js} +1 -1
- package/dist/components/{index-g0CP5dPz.js → index-D03jbAoU.js} +1 -1
- package/dist/components/{index-B5S5gihT.js → index-D68oJ-Le.js} +1 -1
- package/dist/components/{index-CB4c2A6P.js → index-v6dIt9IT.js} +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/inputs/date-field/date-field.d.ts +3 -3
- package/dist/components/inputs/date-field/date-field.d.ts.map +1 -1
- package/dist/components/inputs/date-field/date-field.i18n.js +7 -7
- package/dist/components/inputs/date-field/date-field.i18n.js.map +1 -1
- package/dist/components/inputs/date-field/date-field.js +3 -3
- package/dist/components/inputs/date-field/date-field.js.map +1 -1
- package/dist/components/inputs/date-field/date-field.styles.d.ts.map +1 -1
- package/dist/components/inputs/date-field/date-field.styles.js +31 -29
- package/dist/components/inputs/date-field/date-field.styles.js.map +1 -1
- package/dist/components/inputs/date-picker/date-picker.d.ts +5 -5
- package/dist/components/inputs/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/inputs/date-picker/date-picker.i18n.js +18 -18
- package/dist/components/inputs/date-picker/date-picker.i18n.js.map +1 -1
- package/dist/components/inputs/date-picker/date-picker.js +6 -6
- package/dist/components/inputs/date-picker/date-picker.js.map +1 -1
- package/dist/components/inputs/date-picker/date-picker.styles.js +1 -1
- package/dist/components/inputs/number-field/number-field.d.ts +1 -1
- package/dist/components/inputs/number-field/number-field.js +1 -1
- package/dist/components/inputs/search-field/search-field.d.ts.map +1 -1
- package/dist/components/inputs/search-field/search-field.js +9 -0
- package/dist/components/inputs/search-field/search-field.js.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.markdown.js +3 -3
- package/dist/components/inputs/text-editor/text-editor.markdown.js.map +1 -1
- package/dist/components/inputs/time-field/time-field.d.ts +242 -0
- package/dist/components/inputs/time-field/time-field.d.ts.map +1 -0
- package/dist/components/inputs/time-field/time-field.i18n.d.ts +8 -0
- package/dist/components/inputs/time-field/time-field.i18n.d.ts.map +1 -0
- package/dist/components/inputs/time-field/time-field.i18n.js +14 -0
- package/dist/components/inputs/time-field/time-field.i18n.js.map +1 -0
- package/dist/components/inputs/time-field/time-field.js +641 -0
- package/dist/components/inputs/time-field/time-field.js.map +1 -0
- package/dist/components/inputs/time-field/time-field.styles.d.ts +2 -0
- package/dist/components/inputs/time-field/time-field.styles.d.ts.map +1 -0
- package/dist/components/inputs/time-field/time-field.styles.js +192 -0
- package/dist/components/inputs/time-field/time-field.styles.js.map +1 -0
- package/dist/components/inputs/time-field/time-field.template.d.ts +20 -0
- package/dist/components/inputs/time-field/time-field.template.d.ts.map +1 -0
- package/dist/components/inputs/time-field/time-field.template.js +126 -0
- package/dist/components/inputs/time-field/time-field.template.js.map +1 -0
- package/dist/components/inputs/time-picker/time-picker.d.ts +135 -0
- package/dist/components/inputs/time-picker/time-picker.d.ts.map +1 -0
- package/dist/components/inputs/time-picker/time-picker.i18n.d.ts +7 -0
- package/dist/components/inputs/time-picker/time-picker.i18n.d.ts.map +1 -0
- package/dist/components/inputs/time-picker/time-picker.i18n.js +10 -0
- package/dist/components/inputs/time-picker/time-picker.i18n.js.map +1 -0
- package/dist/components/inputs/time-picker/time-picker.js +386 -0
- package/dist/components/inputs/time-picker/time-picker.js.map +1 -0
- package/dist/components/inputs/time-picker/time-picker.styles.d.ts +2 -0
- package/dist/components/inputs/time-picker/time-picker.styles.d.ts.map +1 -0
- package/dist/components/inputs/time-picker/time-picker.styles.js +183 -0
- package/dist/components/inputs/time-picker/time-picker.styles.js.map +1 -0
- package/dist/components/inputs/time-picker/time-picker.template.d.ts +4 -0
- package/dist/components/inputs/time-picker/time-picker.template.d.ts.map +1 -0
- package/dist/components/inputs/time-picker/time-picker.template.js +87 -0
- package/dist/components/inputs/time-picker/time-picker.template.js.map +1 -0
- package/dist/components/layout/box/box.styles.js +1 -1
- package/dist/components/layout/page/page.styles.d.ts.map +1 -1
- package/dist/components/layout/page/page.styles.js +6 -0
- package/dist/components/layout/page/page.styles.js.map +1 -1
- package/dist/components/layout/popover/popover.d.ts +2 -2
- package/dist/components/layout/popover/popover.d.ts.map +1 -1
- package/dist/components/layout/popover/popover.js +67 -71
- package/dist/components/layout/popover/popover.js.map +1 -1
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.d.ts.map +1 -1
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.js +14 -0
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.js.map +1 -1
- package/dist/components/layout/window/window.js +6 -6
- package/dist/components/layout/window/window.js.map +1 -1
- package/dist/components/lists-and-tables/list/list.d.ts +1 -1
- package/dist/components/lists-and-tables/list/list.js +1 -1
- package/dist/components/lists-and-tables/list/list.styles.js +1 -1
- package/dist/components/lists-and-tables/list-item/list-item.d.ts +1 -1
- package/dist/components/lists-and-tables/list-item/list-item.js +1 -1
- package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.js +3 -3
- package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js +1 -1
- package/dist/components/status-and-feedback/banner/banner.d.ts +3 -0
- package/dist/components/status-and-feedback/banner/banner.d.ts.map +1 -1
- package/dist/components/status-and-feedback/banner/banner.i18n.js +1 -1
- package/dist/components/status-and-feedback/banner/banner.i18n.js.map +1 -1
- package/dist/components/status-and-feedback/banner/banner.js +5 -0
- package/dist/components/status-and-feedback/banner/banner.js.map +1 -1
- package/dist/components/status-and-feedback/banner/banner.styles.d.ts.map +1 -1
- package/dist/components/status-and-feedback/banner/banner.styles.js +27 -10
- package/dist/components/status-and-feedback/banner/banner.styles.js.map +1 -1
- package/dist/components/status-and-feedback/banner/banner.template.js +1 -1
- package/dist/components/status-and-feedback/banner/banner.template.js.map +1 -1
- package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.js +1 -1
- package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.js.map +1 -1
- package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.d.ts.map +1 -1
- package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js +8 -2
- package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js.map +1 -1
- package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.d.ts.map +1 -1
- package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js +4 -1
- package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js.map +1 -1
- package/dist/css/variables.css +4 -1
- package/dist/nldd.min.js +22269 -0
- package/dist/palettes.html +245 -0
- package/dist/sample-images/butterfly-1200.jpg +0 -0
- package/dist/sample-images/butterfly-1600.jpg +0 -0
- package/dist/sample-images/butterfly-480.jpg +0 -0
- package/dist/sample-images/butterfly-960.jpg +0 -0
- package/dist/types/vue.d.ts +90 -3
- package/package.json +16 -4
|
@@ -0,0 +1,641 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NLDD Design System Time Field Component (Lit + TypeScript)
|
|
3
|
+
*
|
|
4
|
+
* Een tekstveld voor een tijd. De waarde is altijd 24-uurs `HH:mm`; dat is in
|
|
5
|
+
* het Nederlands ook de weergave, dus anders dan bij nldd-date-field valt er
|
|
6
|
+
* niets om te rekenen. Er wordt niet gemaskeerd tijdens het typen: invoer wordt
|
|
7
|
+
* royaal geaccepteerd en pas bij het verlaten van het veld genormaliseerd.
|
|
8
|
+
* Foutmeldingen horen bij nldd-form-field, niet hier. Dit veld reflecteert
|
|
9
|
+
* alleen `invalid` / `valid`, net als nldd-text-field.
|
|
10
|
+
*
|
|
11
|
+
* Wat je in de picker doet is een voorbeeld tot je hem verlaat: het veld toont
|
|
12
|
+
* de tijd meteen, maar legt hem pas vast bij het sluiten. "Klaar" en Enter
|
|
13
|
+
* houden de keuze, een klik ernaast ook zodra je iets gekozen hebt, en Annuleer
|
|
14
|
+
* en Escape zetten de oude tijd terug. Op een leeg veld openen de wielen op `min`, of
|
|
15
|
+
* anders op de huidige tijd afgerond op `step`; dat vult het veld nog niet in.
|
|
16
|
+
*
|
|
17
|
+
* @element nldd-time-field
|
|
18
|
+
*
|
|
19
|
+
* @attr {string} value - De tijd als `HH:mm` (24-uurs). Leeg wanneer er geen geldige tijd staat.
|
|
20
|
+
* @attr {string} min - Vroegst toegestane tijd als `HH:mm`. Is tevens de basis waarvandaan `step` telt.
|
|
21
|
+
* @attr {string} max - Laatst toegestane tijd als `HH:mm`.
|
|
22
|
+
* @attr {number} step - Minutenstap (standaard 1). Bepaalt welke tijden geldig zijn, waarop wordt afgerond en hoe ver de pijltjestoetsen verspringen.
|
|
23
|
+
* @attr {boolean} no-picker - Verbergt de picker-knop. Standaard staat die knop er wel.
|
|
24
|
+
* @attr {string} placeholder - Placeholdertekst. Zet hier geen formaat in; gebruik daarvoor de supporting-label van nldd-form-field.
|
|
25
|
+
* @attr {string} input-id - Zet het id op de interne input. Wordt automatisch gezet door nldd-form-field.
|
|
26
|
+
* @attr {string} size - 'md' (standaard) | 'sm'. Wordt automatisch gezet door nldd-form-field.
|
|
27
|
+
* @attr {boolean} invalid - Markeert het veld als ongeldig.
|
|
28
|
+
* @attr {boolean} valid - Markeert het veld als geldig.
|
|
29
|
+
* @attr {boolean} disabled - Uitgeschakelde staat.
|
|
30
|
+
* @attr {boolean} readonly - Alleen-lezen staat.
|
|
31
|
+
* @attr {boolean} required - Verplichte staat.
|
|
32
|
+
* @attr {string} name - Naam voor formulierverzending.
|
|
33
|
+
* @attr {string} autocomplete - Autocomplete-hint.
|
|
34
|
+
* @attr {string} accessible-label - Toegankelijk label voor de interne input. Wordt automatisch gezet door nldd-form-field.
|
|
35
|
+
* @attr {string} error-message-ids - Ids voor aria-describedby. Wordt automatisch gezet door nldd-form-field.
|
|
36
|
+
* @attr {string} width - Breedte. Standaard precies breed genoeg voor een tijd plus het validatie-icoon; 'full' vult de container, of geef een eigen CSS-lengte.
|
|
37
|
+
* @attr {object} translations - Vertalingen; niet opgegeven sleutels vallen terug op het Nederlands.
|
|
38
|
+
*
|
|
39
|
+
* @slot picker - Een eigen nldd-time-picker, in plaats van de standaardpicker. Het veld blijft `value`, `min`, `max` en `step` zetten; gebruik de slot voor wat alleen een picker weet, zoals eigen vertalingen.
|
|
40
|
+
*
|
|
41
|
+
* @fires input - Bij elke wijziging. detail: { value } met `HH:mm`, of '' zolang er geen geldige tijd staat.
|
|
42
|
+
* @fires change - Wanneer de waarde is vastgelegd: bij het verlaten van het veld, en bij het sluiten van de picker op een manier die de keuze houdt. detail: { value } met `HH:mm`, of ''.
|
|
43
|
+
*/
|
|
44
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
45
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
46
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
47
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
48
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
49
|
+
};
|
|
50
|
+
var NLDDTimeField_1;
|
|
51
|
+
import { LitElement } from 'lit';
|
|
52
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
53
|
+
import { FormAssociated } from '../../../utilities/form-associated-mixin.js';
|
|
54
|
+
import { reflectNonDefault } from '../../../utilities/reflect-non-default.js';
|
|
55
|
+
import { timeFieldStyles } from './time-field.styles.js';
|
|
56
|
+
import { timeFieldTemplate } from './time-field.template.js';
|
|
57
|
+
import { nlddTimeFieldTranslations } from './time-field.i18n.js';
|
|
58
|
+
/** Minutes since midnight of the last time on a day. */
|
|
59
|
+
const LAST_MINUTE_OF_DAY = 23 * 60 + 59;
|
|
60
|
+
function toMinutes(time) {
|
|
61
|
+
const [hours, minutes] = time.split(':');
|
|
62
|
+
return Number(hours) * 60 + Number(minutes);
|
|
63
|
+
}
|
|
64
|
+
function fromMinutes(total) {
|
|
65
|
+
const hours = Math.floor(total / 60);
|
|
66
|
+
const minutes = total % 60;
|
|
67
|
+
return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;
|
|
68
|
+
}
|
|
69
|
+
function toTime(hours, minutes) {
|
|
70
|
+
if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59)
|
|
71
|
+
return null;
|
|
72
|
+
return fromMinutes(hours * 60 + minutes);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Read a typed time generously. Deliberately not a mask: reformatting per
|
|
76
|
+
* keystroke moves the caret, breaks backspace mid-value and confuses screen
|
|
77
|
+
* readers, so we accept what people type and normalize once on commit.
|
|
78
|
+
*
|
|
79
|
+
* Accepts 9, 09, 9:30, 9.30, 9,30, 9u30, 930 and 0930. After a letter the
|
|
80
|
+
* minutes may be left off ("9u" is a finished thought), after punctuation they
|
|
81
|
+
* may not: "9:" is halfway through typing and should not produce a value yet.
|
|
82
|
+
*/
|
|
83
|
+
export function parseTime(raw) {
|
|
84
|
+
const trimmed = raw.trim();
|
|
85
|
+
if (trimmed === '')
|
|
86
|
+
return null;
|
|
87
|
+
const withLetter = /^(\d{1,2})\s*[uh]\s*(\d{1,2})?$/i.exec(trimmed);
|
|
88
|
+
if (withLetter)
|
|
89
|
+
return toTime(Number(withLetter[1]), Number(withLetter[2] ?? 0));
|
|
90
|
+
const withPunctuation = /^(\d{1,2})\s*[:.,]\s*(\d{1,2})$/.exec(trimmed);
|
|
91
|
+
if (withPunctuation)
|
|
92
|
+
return toTime(Number(withPunctuation[1]), Number(withPunctuation[2]));
|
|
93
|
+
const bare = /^\d{1,4}$/.exec(trimmed);
|
|
94
|
+
if (bare) {
|
|
95
|
+
const digits = bare[0];
|
|
96
|
+
if (digits.length <= 2)
|
|
97
|
+
return toTime(Number(digits), 0);
|
|
98
|
+
const split = digits.length === 3 ? 1 : 2;
|
|
99
|
+
return toTime(Number(digits.slice(0, split)), Number(digits.slice(split)));
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The nearest time that falls on the step, counted from `base`. Input exactly
|
|
105
|
+
* in between rounds up.
|
|
106
|
+
*
|
|
107
|
+
* Never rolls over the edge of the day: if rounding up would pass 23:59, step
|
|
108
|
+
* back instead. Rolling over to 00:00 silently shifts the day, and a consumer
|
|
109
|
+
* who puts this field next to a date field then has a bug nobody sees
|
|
110
|
+
* coming.
|
|
111
|
+
*/
|
|
112
|
+
export function roundToStep(time, step, base = '00:00') {
|
|
113
|
+
if (step <= 1)
|
|
114
|
+
return time;
|
|
115
|
+
const baseMinutes = toMinutes(base);
|
|
116
|
+
const steps = Math.floor((toMinutes(time) - baseMinutes) / step + 0.5);
|
|
117
|
+
let rounded = baseMinutes + steps * step;
|
|
118
|
+
while (rounded > LAST_MINUTE_OF_DAY)
|
|
119
|
+
rounded -= step;
|
|
120
|
+
while (rounded < 0)
|
|
121
|
+
rounded += step;
|
|
122
|
+
return fromMinutes(rounded);
|
|
123
|
+
}
|
|
124
|
+
let NLDDTimeField = NLDDTimeField_1 = class NLDDTimeField extends FormAssociated(LitElement) {
|
|
125
|
+
constructor() {
|
|
126
|
+
super(...arguments);
|
|
127
|
+
this._initialValue = '';
|
|
128
|
+
this.size = 'md';
|
|
129
|
+
this.value = '';
|
|
130
|
+
this.min = '';
|
|
131
|
+
this.max = '';
|
|
132
|
+
this.step = 1;
|
|
133
|
+
this.noPicker = false;
|
|
134
|
+
this.inputId = '';
|
|
135
|
+
this.placeholder = '';
|
|
136
|
+
this.invalid = false;
|
|
137
|
+
this.valid = false;
|
|
138
|
+
this.disabled = false;
|
|
139
|
+
this.readonly = false;
|
|
140
|
+
this.required = false;
|
|
141
|
+
this.name = '';
|
|
142
|
+
this.autocomplete = '';
|
|
143
|
+
/** Accessible label for the inner input. Set automatically by nldd-form-field. */
|
|
144
|
+
this.accessibleLabel = '';
|
|
145
|
+
this.errorMessageIds = '';
|
|
146
|
+
/** Optional fixed width. Without a value the field is exactly wide enough. */
|
|
147
|
+
this.width = '';
|
|
148
|
+
/** Override one or more translation keys. Keys left out fall back to Dutch. */
|
|
149
|
+
this.translations = {};
|
|
150
|
+
this._finePointer = false;
|
|
151
|
+
this._handlePointerChange = () => {
|
|
152
|
+
this._finePointer = NLDDTimeField_1._getFinePointerQuery().matches;
|
|
153
|
+
};
|
|
154
|
+
/** What the user sees and types. Kept apart from `value`, which only ever
|
|
155
|
+
* carries a valid time or nothing. */
|
|
156
|
+
this._display = '';
|
|
157
|
+
/**
|
|
158
|
+
* Whether a consumer put their own picker in the slot. As state, not read
|
|
159
|
+
* during render: the built-in picker has to disappear the moment something is
|
|
160
|
+
* slotted, otherwise both sit in the popover.
|
|
161
|
+
*/
|
|
162
|
+
this._hasSlottedPicker = false;
|
|
163
|
+
this._pickerOpen = false;
|
|
164
|
+
/** Where focus goes once the popover is closed. The popover restores focus to
|
|
165
|
+
* the element from before it opened, and Safari does not focus a button on
|
|
166
|
+
* click, so there it lands on the input instead of the button. We take over,
|
|
167
|
+
* but only after that restore, otherwise ours gets overwritten. */
|
|
168
|
+
this._focusTriggerOnClose = false;
|
|
169
|
+
/** The value from before opening, plus how the picker was left. Together they
|
|
170
|
+
* decide on close whether what stands in the selection stays or falls back. */
|
|
171
|
+
this._valueBeforePicker = '';
|
|
172
|
+
this._pickerTouched = false;
|
|
173
|
+
this._pickerConfirmed = false;
|
|
174
|
+
this._pickerCancelled = false;
|
|
175
|
+
/**
|
|
176
|
+
* Where the wheels open while the field is empty: `min` if there is one, and
|
|
177
|
+
* otherwise the current time rounded to the step. The same starting point the
|
|
178
|
+
* arrow keys use. An empty picker would show two columns on 00 with a colon
|
|
179
|
+
* between them, and then you scroll up from midnight to a time you already
|
|
180
|
+
* know.
|
|
181
|
+
*
|
|
182
|
+
* This does not set `value`: the field stays empty until you scroll or pick
|
|
183
|
+
* "Klaar".
|
|
184
|
+
*/
|
|
185
|
+
this._pickerSeed = '';
|
|
186
|
+
/** Escape is canceling, a click beside it is not. The popover only reports
|
|
187
|
+
* that it closed, so we catch the key ourselves, before the browser acts. */
|
|
188
|
+
this._handlePickerEscape = (e) => {
|
|
189
|
+
if (e.key === 'Escape')
|
|
190
|
+
this._pickerCancelled = true;
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
static _getFinePointerQuery() {
|
|
194
|
+
NLDDTimeField_1._finePointerQuery ?? (NLDDTimeField_1._finePointerQuery = matchMedia('(pointer: fine)'));
|
|
195
|
+
return NLDDTimeField_1._finePointerQuery;
|
|
196
|
+
}
|
|
197
|
+
/** Size of the buttons in the popover: a finger needs the full control size,
|
|
198
|
+
* a mouse does not. Same split as the rows of the picker. */
|
|
199
|
+
get _pickerButtonSize() {
|
|
200
|
+
return this._finePointer ? 'sm' : 'md';
|
|
201
|
+
}
|
|
202
|
+
connectedCallback() {
|
|
203
|
+
super.connectedCallback();
|
|
204
|
+
const query = NLDDTimeField_1._getFinePointerQuery();
|
|
205
|
+
this._finePointer = query.matches;
|
|
206
|
+
query.addEventListener('change', this._handlePointerChange);
|
|
207
|
+
}
|
|
208
|
+
disconnectedCallback() {
|
|
209
|
+
NLDDTimeField_1._getFinePointerQuery().removeEventListener('change', this._handlePointerChange);
|
|
210
|
+
// Normally _settlePicker takes this one off, but that runs on the popover's
|
|
211
|
+
// toggle event. Disappear from the DOM with the picker open and no toggle
|
|
212
|
+
// arrives, leaving a listener on document that holds on to a detached field
|
|
213
|
+
// and keeps swallowing Escape for the rest of the session.
|
|
214
|
+
document.removeEventListener('keydown', this._handlePickerEscape, true);
|
|
215
|
+
super.disconnectedCallback();
|
|
216
|
+
}
|
|
217
|
+
_t(key) {
|
|
218
|
+
return this.translations[key] ?? nlddTimeFieldTranslations[key];
|
|
219
|
+
}
|
|
220
|
+
get _fieldLabel() {
|
|
221
|
+
return this.accessibleLabel || this._t('components.time-field.default-label');
|
|
222
|
+
}
|
|
223
|
+
get _displayValue() {
|
|
224
|
+
return this._display;
|
|
225
|
+
}
|
|
226
|
+
/** The base the step counts from. `min` when there is one, so a series that
|
|
227
|
+
* starts at :07 also works with a step of 15, otherwise midnight. Taken from
|
|
228
|
+
* `<input type="time">`, which uses `min` the same way. */
|
|
229
|
+
get _stepBase() {
|
|
230
|
+
return parseTime(this.min) ?? '00:00';
|
|
231
|
+
}
|
|
232
|
+
_withinBounds(time) {
|
|
233
|
+
const min = parseTime(this.min);
|
|
234
|
+
const max = parseTime(this.max);
|
|
235
|
+
// `HH:mm` compares lexically in the same order as it reads on the clock.
|
|
236
|
+
if (min && time < min)
|
|
237
|
+
return false;
|
|
238
|
+
if (max && time > max)
|
|
239
|
+
return false;
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
/** The parsed time, or '' when it is unreadable or out of bounds. In both
|
|
243
|
+
* cases the raw text stays put, so the user sees and can repair what they
|
|
244
|
+
* wrote. */
|
|
245
|
+
_commit(parsed) {
|
|
246
|
+
return parsed && this._withinBounds(parsed) ? parsed : '';
|
|
247
|
+
}
|
|
248
|
+
/** Rounding happens on commit, not on input: otherwise "09:1" jumps to 09:00
|
|
249
|
+
* before anyone can type the 5. */
|
|
250
|
+
_rounded(parsed) {
|
|
251
|
+
return parsed === null ? null : roundToStep(parsed, this.step, this._stepBase);
|
|
252
|
+
}
|
|
253
|
+
_handleInput(e) {
|
|
254
|
+
e.stopPropagation();
|
|
255
|
+
const text = e.target.value;
|
|
256
|
+
this._display = text;
|
|
257
|
+
this.value = this._commit(parseTime(text));
|
|
258
|
+
this._emit('input');
|
|
259
|
+
}
|
|
260
|
+
_handleChange(e) {
|
|
261
|
+
e.stopPropagation();
|
|
262
|
+
const input = e.target;
|
|
263
|
+
const committed = this._commit(this._rounded(parseTime(input.value)));
|
|
264
|
+
// Normalize on commit: 9u30 ends up as 09:30. Text that is unreadable or
|
|
265
|
+
// out of bounds stays put so it can be repaired.
|
|
266
|
+
const shown = committed || input.value;
|
|
267
|
+
this._display = shown;
|
|
268
|
+
// We write the input ourselves. Lit skips a DOM write as soon as the new
|
|
269
|
+
// text equals what it last rendered, and that is exactly the case when
|
|
270
|
+
// someone retypes an already normalized value differently: 09:30 becomes
|
|
271
|
+
// 930, which rounds back to 09:30. Without this line 930 stayed on screen
|
|
272
|
+
// while `value` had long been 09:30.
|
|
273
|
+
input.value = shown;
|
|
274
|
+
this.value = committed;
|
|
275
|
+
this._emit('change');
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Arrow up and down move by `step`. With nothing there yet, the first press is
|
|
279
|
+
* the current time rounded to the step, or `min` when there is one. Starting
|
|
280
|
+
* at midnight would be a long climb from any realistic goal, and the calendar
|
|
281
|
+
* does the same: it opens on today as long as there is no date.
|
|
282
|
+
*/
|
|
283
|
+
_handleInputKeydown(e) {
|
|
284
|
+
if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown')
|
|
285
|
+
return;
|
|
286
|
+
if (this.disabled || this.readonly)
|
|
287
|
+
return;
|
|
288
|
+
e.preventDefault();
|
|
289
|
+
const current = this.value || parseTime(this._display);
|
|
290
|
+
const next = current
|
|
291
|
+
? this._shift(current, e.key === 'ArrowUp' ? 1 : -1)
|
|
292
|
+
: this._startingPoint();
|
|
293
|
+
this._display = next;
|
|
294
|
+
this.value = this._withinBounds(next) ? next : '';
|
|
295
|
+
this._emit('input');
|
|
296
|
+
this._emit('change');
|
|
297
|
+
}
|
|
298
|
+
_startingPoint() {
|
|
299
|
+
const min = parseTime(this.min);
|
|
300
|
+
if (min)
|
|
301
|
+
return min;
|
|
302
|
+
const now = new Date();
|
|
303
|
+
const rounded = roundToStep(fromMinutes(now.getHours() * 60 + now.getMinutes()), this.step, this._stepBase);
|
|
304
|
+
const max = parseTime(this.max);
|
|
305
|
+
if (!max || toMinutes(rounded) <= toMinutes(max))
|
|
306
|
+
return rounded;
|
|
307
|
+
// Past `max` we land on the last step at or before it, not on `max` itself:
|
|
308
|
+
// a max that does not fall on the step is not in the wheel, and a value the
|
|
309
|
+
// wheel does not hold shows up as an empty selection.
|
|
310
|
+
const step = Math.max(1, Math.round(this.step));
|
|
311
|
+
const base = toMinutes(this._stepBase);
|
|
312
|
+
return fromMinutes(base + Math.max(0, Math.floor((toMinutes(max) - base) / step)) * step);
|
|
313
|
+
}
|
|
314
|
+
_shift(from, direction) {
|
|
315
|
+
const step = Math.max(1, Math.round(this.step));
|
|
316
|
+
const base = toMinutes(this._stepBase);
|
|
317
|
+
// From a time that does not fall on the step, move onto the grid first, so
|
|
318
|
+
// a second press does not land between two valid values again.
|
|
319
|
+
const aligned = toMinutes(roundToStep(from, step, this._stepBase));
|
|
320
|
+
const moved = aligned === toMinutes(from) || step === 1
|
|
321
|
+
? aligned + direction * step
|
|
322
|
+
: aligned;
|
|
323
|
+
const clamped = Math.min(Math.max(moved, base % step), LAST_MINUTE_OF_DAY);
|
|
324
|
+
const minMinutes = parseTime(this.min) ? toMinutes(parseTime(this.min)) : 0;
|
|
325
|
+
const maxMinutes = parseTime(this.max) ? toMinutes(parseTime(this.max)) : LAST_MINUTE_OF_DAY;
|
|
326
|
+
return fromMinutes(Math.min(Math.max(clamped, minMinutes), maxMinutes));
|
|
327
|
+
}
|
|
328
|
+
get _slottedPicker() {
|
|
329
|
+
const slot = this.shadowRoot?.querySelector('slot[name="picker"]');
|
|
330
|
+
const found = slot?.assignedElements({ flatten: true })
|
|
331
|
+
.find((el) => el.localName === 'nldd-time-picker');
|
|
332
|
+
return found ?? null;
|
|
333
|
+
}
|
|
334
|
+
_handlePickerSlotChange() {
|
|
335
|
+
this._hasSlottedPicker = this._slottedPicker !== null;
|
|
336
|
+
}
|
|
337
|
+
get _pickerTrigger() {
|
|
338
|
+
return this.shadowRoot?.querySelector('.time-field__picker-button nldd-icon-button') ?? null;
|
|
339
|
+
}
|
|
340
|
+
get _popover() {
|
|
341
|
+
return this.shadowRoot?.querySelector('nldd-popover') ?? null;
|
|
342
|
+
}
|
|
343
|
+
/** One name for the dialog, both as the accessible name and as the visible
|
|
344
|
+
* title of the sheet. The field's own label says more than "Tijd kiezen" ever
|
|
345
|
+
* can: a sheet headed "Starttijd" tells you what you are filling in. */
|
|
346
|
+
get _pickerLabel() {
|
|
347
|
+
return this.accessibleLabel || this._t('components.time-field.to-pick-time-action');
|
|
348
|
+
}
|
|
349
|
+
_handlePickerClick() {
|
|
350
|
+
if (this._pickerOpen)
|
|
351
|
+
this._popover?.hide();
|
|
352
|
+
else
|
|
353
|
+
this._popover?.show();
|
|
354
|
+
}
|
|
355
|
+
get _pickerValue() {
|
|
356
|
+
return this.value || this._pickerSeed;
|
|
357
|
+
}
|
|
358
|
+
_handlePopoverToggle(e) {
|
|
359
|
+
this._pickerOpen = e.newState === 'open';
|
|
360
|
+
if (this._pickerOpen)
|
|
361
|
+
this._openPicker();
|
|
362
|
+
else
|
|
363
|
+
this._settlePicker();
|
|
364
|
+
if (this._pickerOpen || !this._focusTriggerOnClose)
|
|
365
|
+
return;
|
|
366
|
+
this._focusTriggerOnClose = false;
|
|
367
|
+
// Microtask, not rAF: this beats that same restore but does not get
|
|
368
|
+
// throttled while the tab has no focus.
|
|
369
|
+
queueMicrotask(() => this._pickerTrigger?.focus());
|
|
370
|
+
}
|
|
371
|
+
_openPicker() {
|
|
372
|
+
this._valueBeforePicker = this.value;
|
|
373
|
+
this._pickerTouched = false;
|
|
374
|
+
this._pickerConfirmed = false;
|
|
375
|
+
this._pickerCancelled = false;
|
|
376
|
+
this._pickerSeed = this.value || this._startingPoint();
|
|
377
|
+
document.addEventListener('keydown', this._handlePickerEscape, true);
|
|
378
|
+
// Only now does the picker have dimensions: while the popover was closed it
|
|
379
|
+
// could not scroll the chosen value into view and the column sat at the top.
|
|
380
|
+
// Wait for both renders, because the picker is only handed its starting
|
|
381
|
+
// point above.
|
|
382
|
+
void this.updateComplete.then(async () => {
|
|
383
|
+
const picker = this._slottedPicker ?? this.shadowRoot?.querySelector('nldd-time-picker');
|
|
384
|
+
if (!picker)
|
|
385
|
+
return;
|
|
386
|
+
await picker.updateComplete;
|
|
387
|
+
picker.scrollSelectedIntoView();
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* What happened while scrolling is a proposal, not an answer: the field shows
|
|
392
|
+
* it already, but only records it once you leave the picker in a way that
|
|
393
|
+
* keeps the choice. "Klaar" always does, a click beside it only when something
|
|
394
|
+
* has been chosen. Annuleer and Escape put the old value back.
|
|
395
|
+
*
|
|
396
|
+
* That way a picker opened by accident costs you nothing, and "Annuleer" is
|
|
397
|
+
* not a button that merely closes.
|
|
398
|
+
*/
|
|
399
|
+
_settlePicker() {
|
|
400
|
+
document.removeEventListener('keydown', this._handlePickerEscape, true);
|
|
401
|
+
// Confirming beats an earlier Escape: that Escape need not have closed the
|
|
402
|
+
// popover, and then the last action is what counts.
|
|
403
|
+
if (!this._pickerConfirmed && (this._pickerCancelled || !this._pickerTouched)) {
|
|
404
|
+
if (this.value === this._valueBeforePicker)
|
|
405
|
+
return;
|
|
406
|
+
this.value = this._valueBeforePicker;
|
|
407
|
+
this._display = this._valueBeforePicker;
|
|
408
|
+
this._emit('input');
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
// "Klaar" without touching anything: the starting point is what stands in
|
|
412
|
+
// the selection, and that is exactly what you are confirming.
|
|
413
|
+
if (!this.value && this._pickerSeed) {
|
|
414
|
+
this.value = this._pickerSeed;
|
|
415
|
+
this._display = this._pickerSeed;
|
|
416
|
+
this._emit('input');
|
|
417
|
+
}
|
|
418
|
+
if (this.value !== this._valueBeforePicker)
|
|
419
|
+
this._emit('change');
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* The picker reports every change as `input` and only a confirmation as
|
|
423
|
+
* `change`. Scrolling therefore hands over the new time but does not close the
|
|
424
|
+
* popover: otherwise it snaps shut the moment you stop scrolling and you never
|
|
425
|
+
* saw the second column.
|
|
426
|
+
*/
|
|
427
|
+
_handlePickerInput(e) {
|
|
428
|
+
e.stopPropagation();
|
|
429
|
+
const detail = e.detail;
|
|
430
|
+
if (typeof detail?.value !== 'string')
|
|
431
|
+
return;
|
|
432
|
+
this._pickerTouched = true;
|
|
433
|
+
// An Escape that did not close the popover no longer counts: you are busy
|
|
434
|
+
// again.
|
|
435
|
+
this._pickerCancelled = false;
|
|
436
|
+
this.value = detail.value;
|
|
437
|
+
this._display = detail.value;
|
|
438
|
+
this._emit('input');
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Recording a value does not close the popover. A time has two parts, so
|
|
442
|
+
* setting the hour is half an answer. Closing on that and you would never
|
|
443
|
+
* reach the minutes. The calendar is different, because there one day is the
|
|
444
|
+
* whole answer. The field therefore reports its own `change` only on close.
|
|
445
|
+
*/
|
|
446
|
+
_handlePickerChange(e) {
|
|
447
|
+
e.stopPropagation();
|
|
448
|
+
const detail = e.detail;
|
|
449
|
+
if (typeof detail?.value !== 'string')
|
|
450
|
+
return;
|
|
451
|
+
this._pickerTouched = true;
|
|
452
|
+
this.value = detail.value;
|
|
453
|
+
this._display = detail.value;
|
|
454
|
+
}
|
|
455
|
+
_handlePickerConfirm(e) {
|
|
456
|
+
e.stopPropagation();
|
|
457
|
+
this._pickerConfirmed = true;
|
|
458
|
+
this._closePicker();
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Enter on a value in the selection does what Enter in a dialog always does: the
|
|
462
|
+
* default action, and here that is "Klaar". With the arrow keys you are still
|
|
463
|
+
* adjusting, so this is the key that says you are done.
|
|
464
|
+
*
|
|
465
|
+
* We skip the button underneath, because the browser already gives it a click
|
|
466
|
+
* on Enter.
|
|
467
|
+
*/
|
|
468
|
+
_handlePickerKeydown(e) {
|
|
469
|
+
if (e.key !== 'Enter')
|
|
470
|
+
return;
|
|
471
|
+
if (e.target?.closest('nldd-button'))
|
|
472
|
+
return;
|
|
473
|
+
e.preventDefault();
|
|
474
|
+
this._pickerConfirmed = true;
|
|
475
|
+
this._closePicker();
|
|
476
|
+
}
|
|
477
|
+
_closePicker() {
|
|
478
|
+
this._focusTriggerOnClose = true;
|
|
479
|
+
this._popover?.hide();
|
|
480
|
+
}
|
|
481
|
+
_handlePickerDismiss(e) {
|
|
482
|
+
e.stopPropagation();
|
|
483
|
+
this._pickerCancelled = true;
|
|
484
|
+
// Same as after a choice: focus back on the button. Without this, Annuleer,
|
|
485
|
+
// Escape and a click beside it leave focus on the input.
|
|
486
|
+
this._focusTriggerOnClose = true;
|
|
487
|
+
this._popover?.hide();
|
|
488
|
+
}
|
|
489
|
+
formValue() {
|
|
490
|
+
return this.value;
|
|
491
|
+
}
|
|
492
|
+
formResetCallback() {
|
|
493
|
+
this.value = this._initialValue;
|
|
494
|
+
this._display = this._initialValue;
|
|
495
|
+
this.commitFormValue();
|
|
496
|
+
}
|
|
497
|
+
formStateRestoreCallback(state) {
|
|
498
|
+
if (typeof state === 'string') {
|
|
499
|
+
this.value = state;
|
|
500
|
+
this._display = state;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
_emit(type) {
|
|
504
|
+
this.commitFormValue();
|
|
505
|
+
this.dispatchEvent(new CustomEvent(type, {
|
|
506
|
+
detail: { value: this.value },
|
|
507
|
+
bubbles: true,
|
|
508
|
+
composed: true,
|
|
509
|
+
}));
|
|
510
|
+
}
|
|
511
|
+
firstUpdated() {
|
|
512
|
+
this._initialValue = this.value;
|
|
513
|
+
if (this.value)
|
|
514
|
+
this._display = this.value;
|
|
515
|
+
this.commitFormValue();
|
|
516
|
+
}
|
|
517
|
+
willUpdate(changed) {
|
|
518
|
+
// A value set from outside (property, reset, form) has to show up in the
|
|
519
|
+
// field. Not while typing: there `_display` is the source and this would
|
|
520
|
+
// overwrite the half-typed text.
|
|
521
|
+
if (changed.has('value') && (parseTime(this._display) ?? '') !== this.value) {
|
|
522
|
+
this._display = this.value;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
updated(changed) {
|
|
526
|
+
const popover = this._popover;
|
|
527
|
+
const trigger = this._pickerTrigger;
|
|
528
|
+
if (popover && trigger && popover.anchorElement !== trigger) {
|
|
529
|
+
popover.anchorElement = trigger;
|
|
530
|
+
}
|
|
531
|
+
if (changed.has('width')) {
|
|
532
|
+
const w = this.width;
|
|
533
|
+
// Unlike a text field the default here is an intrinsic width that fits a
|
|
534
|
+
// time plus the icon, so 'full' has to say 100% explicitly instead of
|
|
535
|
+
// falling back on that default.
|
|
536
|
+
if (w === 'full') {
|
|
537
|
+
this.style.setProperty('--_width', '100%');
|
|
538
|
+
}
|
|
539
|
+
else if (w && CSS.supports('width', w)) {
|
|
540
|
+
this.style.setProperty('--_width', w);
|
|
541
|
+
}
|
|
542
|
+
else {
|
|
543
|
+
this.style.removeProperty('--_width');
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
render() {
|
|
548
|
+
return timeFieldTemplate(this);
|
|
549
|
+
}
|
|
550
|
+
};
|
|
551
|
+
NLDDTimeField.shadowRootOptions = {
|
|
552
|
+
...LitElement.shadowRootOptions,
|
|
553
|
+
delegatesFocus: true,
|
|
554
|
+
};
|
|
555
|
+
NLDDTimeField.styles = timeFieldStyles;
|
|
556
|
+
/**
|
|
557
|
+
* Whether a fine pointer is in use. The picker already sets its row height
|
|
558
|
+
* with a media query, but a button's size is an attribute and so cannot be
|
|
559
|
+
* chosen in CSS. Hence the same question once more here, in JS.
|
|
560
|
+
*
|
|
561
|
+
* Created lazily and shared between all fields: calling matchMedia while the
|
|
562
|
+
* module loads breaks in an environment without window.
|
|
563
|
+
*/
|
|
564
|
+
NLDDTimeField._finePointerQuery = null;
|
|
565
|
+
__decorate([
|
|
566
|
+
property({ reflect: true, converter: reflectNonDefault('md') })
|
|
567
|
+
], NLDDTimeField.prototype, "size", void 0);
|
|
568
|
+
__decorate([
|
|
569
|
+
property({ type: String })
|
|
570
|
+
], NLDDTimeField.prototype, "value", void 0);
|
|
571
|
+
__decorate([
|
|
572
|
+
property({ type: String })
|
|
573
|
+
], NLDDTimeField.prototype, "min", void 0);
|
|
574
|
+
__decorate([
|
|
575
|
+
property({ type: String })
|
|
576
|
+
], NLDDTimeField.prototype, "max", void 0);
|
|
577
|
+
__decorate([
|
|
578
|
+
property({ type: Number })
|
|
579
|
+
], NLDDTimeField.prototype, "step", void 0);
|
|
580
|
+
__decorate([
|
|
581
|
+
property({ type: Boolean, reflect: true, attribute: 'no-picker' })
|
|
582
|
+
], NLDDTimeField.prototype, "noPicker", void 0);
|
|
583
|
+
__decorate([
|
|
584
|
+
property({ type: String, attribute: 'input-id' })
|
|
585
|
+
], NLDDTimeField.prototype, "inputId", void 0);
|
|
586
|
+
__decorate([
|
|
587
|
+
property({ reflect: true, converter: reflectNonDefault('') })
|
|
588
|
+
], NLDDTimeField.prototype, "placeholder", void 0);
|
|
589
|
+
__decorate([
|
|
590
|
+
property({ type: Boolean, reflect: true })
|
|
591
|
+
], NLDDTimeField.prototype, "invalid", void 0);
|
|
592
|
+
__decorate([
|
|
593
|
+
property({ type: Boolean, reflect: true })
|
|
594
|
+
], NLDDTimeField.prototype, "valid", void 0);
|
|
595
|
+
__decorate([
|
|
596
|
+
property({ type: Boolean, reflect: true })
|
|
597
|
+
], NLDDTimeField.prototype, "disabled", void 0);
|
|
598
|
+
__decorate([
|
|
599
|
+
property({ type: Boolean, reflect: true })
|
|
600
|
+
], NLDDTimeField.prototype, "readonly", void 0);
|
|
601
|
+
__decorate([
|
|
602
|
+
property({ type: Boolean, reflect: true })
|
|
603
|
+
], NLDDTimeField.prototype, "required", void 0);
|
|
604
|
+
__decorate([
|
|
605
|
+
property({ type: String, reflect: true })
|
|
606
|
+
], NLDDTimeField.prototype, "name", void 0);
|
|
607
|
+
__decorate([
|
|
608
|
+
property({ type: String })
|
|
609
|
+
], NLDDTimeField.prototype, "autocomplete", void 0);
|
|
610
|
+
__decorate([
|
|
611
|
+
property({ type: String, attribute: 'accessible-label' })
|
|
612
|
+
], NLDDTimeField.prototype, "accessibleLabel", void 0);
|
|
613
|
+
__decorate([
|
|
614
|
+
property({ type: String, attribute: 'error-message-ids' })
|
|
615
|
+
], NLDDTimeField.prototype, "errorMessageIds", void 0);
|
|
616
|
+
__decorate([
|
|
617
|
+
property({ type: String, reflect: true })
|
|
618
|
+
], NLDDTimeField.prototype, "width", void 0);
|
|
619
|
+
__decorate([
|
|
620
|
+
property({ type: Object })
|
|
621
|
+
], NLDDTimeField.prototype, "translations", void 0);
|
|
622
|
+
__decorate([
|
|
623
|
+
state()
|
|
624
|
+
], NLDDTimeField.prototype, "_finePointer", void 0);
|
|
625
|
+
__decorate([
|
|
626
|
+
state()
|
|
627
|
+
], NLDDTimeField.prototype, "_display", void 0);
|
|
628
|
+
__decorate([
|
|
629
|
+
state()
|
|
630
|
+
], NLDDTimeField.prototype, "_hasSlottedPicker", void 0);
|
|
631
|
+
__decorate([
|
|
632
|
+
state()
|
|
633
|
+
], NLDDTimeField.prototype, "_pickerOpen", void 0);
|
|
634
|
+
__decorate([
|
|
635
|
+
state()
|
|
636
|
+
], NLDDTimeField.prototype, "_pickerSeed", void 0);
|
|
637
|
+
NLDDTimeField = NLDDTimeField_1 = __decorate([
|
|
638
|
+
customElement('nldd-time-field')
|
|
639
|
+
], NLDDTimeField);
|
|
640
|
+
export { NLDDTimeField };
|
|
641
|
+
//# sourceMappingURL=time-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-field.js","sourceRoot":"","sources":["../../../../src/components/inputs/time-field/time-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;;;;;;;;AAEH,OAAO,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAkB,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAkC,MAAM,sBAAsB,CAAC;AAEjG,wDAAwD;AACxD,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAExC,SAAS,SAAS,CAAC,IAAY;IAC9B,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;IAC3B,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,OAAe;IAC7C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACxE,OAAO,WAAW,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACpC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,UAAU,GAAG,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,UAAU;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,eAAe,GAAG,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxE,IAAI,eAAe;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,IAAI,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,IAAY,EAAE,IAAI,GAAG,OAAO;IACrE,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;IACvE,IAAI,OAAO,GAAG,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;IACzC,OAAO,OAAO,GAAG,kBAAkB;QAAE,OAAO,IAAI,IAAI,CAAC;IACrD,OAAO,OAAO,GAAG,CAAC;QAAE,OAAO,IAAI,IAAI,CAAC;IACpC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAGM,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,cAAc,CAAC,UAAU,CAAC;IAAtD;;QASE,kBAAa,GAAG,EAAE,CAAC;QAG3B,SAAI,GAAgB,IAAI,CAAC;QAGzB,UAAK,GAAG,EAAE,CAAC;QAGX,QAAG,GAAG,EAAE,CAAC;QAGT,QAAG,GAAG,EAAE,CAAC;QAGT,SAAI,GAAG,CAAC,CAAC;QAGT,aAAQ,GAAG,KAAK,CAAC;QAGjB,YAAO,GAAG,EAAE,CAAC;QAGb,gBAAW,GAAG,EAAE,CAAC;QAGjB,YAAO,GAAG,KAAK,CAAC;QAGhB,UAAK,GAAG,KAAK,CAAC;QAGd,aAAQ,GAAG,KAAK,CAAC;QAGjB,aAAQ,GAAG,KAAK,CAAC;QAGjB,aAAQ,GAAG,KAAK,CAAC;QAGjB,SAAI,GAAG,EAAE,CAAC;QAGV,iBAAY,GAAG,EAAE,CAAC;QAElB,kFAAkF;QAElF,oBAAe,GAAG,EAAE,CAAC;QAGrB,oBAAe,GAAG,EAAE,CAAC;QAErB,8EAA8E;QAE9E,UAAK,GAAG,EAAE,CAAC;QAEX,+EAA+E;QAE/E,iBAAY,GAAuC,EAAE,CAAC;QAkB9C,iBAAY,GAAG,KAAK,CAAC;QAErB,yBAAoB,GAAG,GAAS,EAAE;YACzC,IAAI,CAAC,YAAY,GAAG,eAAa,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC;QAClE,CAAC,CAAC;QAyBF;+CACuC;QAEvC,aAAQ,GAAG,EAAE,CAAC;QAuHd;;;;WAIG;QAEH,sBAAiB,GAAG,KAAK,CAAC;QAc1B,gBAAW,GAAG,KAAK,CAAC;QAsBpB;;;4EAGoE;QAC5D,yBAAoB,GAAG,KAAK,CAAC;QAErC;wFACgF;QACxE,uBAAkB,GAAG,EAAE,CAAC;QACxB,mBAAc,GAAG,KAAK,CAAC;QACvB,qBAAgB,GAAG,KAAK,CAAC;QACzB,qBAAgB,GAAG,KAAK,CAAC;QAEjC;;;;;;;;;WASG;QAEK,gBAAW,GAAG,EAAE,CAAC;QAMzB;sFAC8E;QACtE,wBAAmB,GAAG,CAAC,CAAgB,EAAQ,EAAE;YACxD,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACtD,CAAC,CAAC;IAqMH,CAAC;IA9aQ,MAAM,CAAC,oBAAoB;QAClC,eAAa,CAAC,iBAAiB,KAA/B,eAAa,CAAC,iBAAiB,GAAK,UAAU,CAAC,iBAAiB,CAAC,EAAC;QAClE,OAAO,eAAa,CAAC,iBAAiB,CAAC;IACxC,CAAC;IASD;kEAC8D;IAC9D,IAAW,iBAAiB;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAEQ,iBAAiB;QACzB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,eAAa,CAAC,oBAAoB,EAAE,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;QAClC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC7D,CAAC;IAEQ,oBAAoB;QAC5B,eAAa,CAAC,oBAAoB,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9F,4EAA4E;QAC5E,0EAA0E;QAC1E,4EAA4E;QAC5E,2DAA2D;QAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACxE,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAOM,EAAE,CAAC,GAAoC;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,yBAAyB,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,IAAW,WAAW;QACrB,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,EAAE,CAAC,qCAAqC,CAAC,CAAC;IAC/E,CAAC;IAED,IAAW,aAAa;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED;;gEAE4D;IAC5D,IAAY,SAAS;QACpB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC;IACvC,CAAC;IAEO,aAAa,CAAC,IAAY;QACjC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,yEAAyE;QACzE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC;QACpC,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC;QACpC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;iBAEa;IACL,OAAO,CAAC,MAAqB;QACpC,OAAO,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IAED;wCACoC;IAC5B,QAAQ,CAAC,MAAqB;QACrC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChF,CAAC;IAEM,YAAY,CAAC,CAAQ;QAC3B,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,MAAM,IAAI,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEM,aAAa,CAAC,CAAQ;QAC5B,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,CAAC,MAA0B,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtE,yEAAyE;QACzE,iDAAiD;QACjD,MAAM,KAAK,GAAG,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,yEAAyE;QACzE,uEAAuE;QACvE,yEAAyE;QACzE,0EAA0E;QAC1E,qCAAqC;QACrC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,CAAgB;QAC1C,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW;YAAE,OAAO;QACzD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,OAAO;YACnB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAEO,cAAc;QACrB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5G,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;QACjE,4EAA4E;QAC5E,4EAA4E;QAC5E,sDAAsD;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3F,CAAC;IAEO,MAAM,CAAC,IAAY,EAAE,SAAiB;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,2EAA2E;QAC3E,+DAA+D;QAC/D,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;YACtD,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI;YAC5B,CAAC,CAAC,OAAO,CAAC;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAW,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACvG,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACzE,CAAC;IAUD,IAAY,cAAc;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,qBAAqB,CAA2B,CAAC;QAC7F,MAAM,KAAK,GAAG,IAAI,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aACrD,IAAI,CAAC,CAAC,EAAE,EAAwB,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAC;QAC1E,OAAO,KAAK,IAAI,IAAI,CAAC;IACtB,CAAC;IAEM,uBAAuB;QAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;IACvD,CAAC;IAKD,IAAY,cAAc;QACzB,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,6CAA6C,CAAC,IAAI,IAAI,CAAC;IAC9F,CAAC;IAED,IAAY,QAAQ;QACnB,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IAC/D,CAAC;IAED;;6EAEyE;IACzE,IAAW,YAAY;QACtB,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,EAAE,CAAC,2CAA2C,CAAC,CAAC;IACrF,CAAC;IAEM,kBAAkB;QACxB,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;;YACvC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IA4BD,IAAW,YAAY;QACtB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC;IACvC,CAAC;IAQM,oBAAoB,CAAC,CAAQ;QACnC,IAAI,CAAC,WAAW,GAAI,CAAiB,CAAC,QAAQ,KAAK,MAAM,CAAC;QAC1D,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO;QAC3D,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,oEAAoE;QACpE,wCAAwC;QACxC,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAEO,WAAW;QAClB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACvD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACrE,4EAA4E;QAC5E,6EAA6E;QAC7E,wEAAwE;QACxE,eAAe;QACf,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACzF,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,MAAM,CAAC,cAAc,CAAC;YAC5B,MAAM,CAAC,sBAAsB,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACK,aAAa;QACpB,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACxE,2EAA2E;QAC3E,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/E,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,kBAAkB;gBAAE,OAAO;YACnD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,OAAO;QACR,CAAC;QACD,0EAA0E;QAC1E,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,kBAAkB;YAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACI,kBAAkB,CAAC,CAAQ;QACjC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,MAAM,MAAM,GAAI,CAAiB,CAAC,MAA4B,CAAC;QAC/D,IAAI,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ;YAAE,OAAO;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,0EAA0E;QAC1E,SAAS;QACT,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,CAAQ;QAClC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,MAAM,MAAM,GAAI,CAAiB,CAAC,MAA4B,CAAC;QAC/D,IAAI,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ;YAAE,OAAO;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9B,CAAC;IAEM,oBAAoB,CAAC,CAAQ;QACnC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACI,oBAAoB,CAAC,CAAgB;QAC3C,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO;YAAE,OAAO;QAC9B,IAAK,CAAC,CAAC,MAA6B,EAAE,OAAO,CAAC,aAAa,CAAC;YAAE,OAAO;QACrE,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAEO,YAAY;QACnB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,oBAAoB,CAAC,CAAQ;QACnC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,4EAA4E;QAC5E,yDAAyD;QACzD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvB,CAAC;IAEQ,SAAS;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED,wBAAwB,CAAC,KAAsC;QAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvB,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,IAAwB;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE;YACxC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAC7B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IACL,CAAC;IAEQ,YAAY;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAEQ,UAAU,CAAC,OAAuB;QAC1C,yEAAyE;QACzE,yEAAyE;QACzE,iCAAiC;QACjC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,CAAC;IACF,CAAC;IAEQ,OAAO,CAAC,OAAuB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QACpC,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;YAC7D,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC;QACjC,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACrB,yEAAyE;YACzE,sEAAsE;YACtE,gCAAgC;YAChC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;QACF,CAAC;IACF,CAAC;IAEQ,MAAM;QACd,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;;AA5fe,+BAAiB,GAAG;IACnC,GAAG,UAAU,CAAC,iBAAiB;IAC/B,cAAc,EAAE,IAAI;CACpB,AAHgC,CAG/B;AAEc,oBAAM,GAAG,eAAe,AAAlB,CAAmB;AAgEzC;;;;;;;GAOG;AACY,+BAAiB,GAA0B,IAAI,AAA9B,CAA+B;AAnE/D;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAc,IAAI,CAAC,EAAE,CAAC;2CACpD;AAGzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAChB;AAGX;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAClB;AAGT;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAClB;AAGT;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CAClB;AAGT;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;+CAClD;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;8CACrC;AAGb;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAS,EAAE,CAAC,EAAE,CAAC;kDACrD;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAC3B;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4CAC7B;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;+CAC1B;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;+CAC1B;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;+CAC1B;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAChC;AAGV;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDACT;AAIlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;sDACrC;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;sDACtC;AAIrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4CAC/B;AAIX;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAC2B;AAkB9C;IADP,KAAK,EAAE;mDACqB;AAgC7B;IADC,KAAK,EAAE;+CACM;AA6Hd;IADC,KAAK,EAAE;wDACkB;AAc1B;IADC,KAAK,EAAE;kDACY;AA8CZ;IADP,KAAK,EAAE;kDACiB;AAhTb,aAAa;IADzB,aAAa,CAAC,iBAAiB,CAAC;GACpB,aAAa,CA+fzB"}
|