@progressive-development/pd-contact 1.0.2 → 1.0.4

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 (33) hide show
  1. package/dist/index.d.ts +6 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +6 -0
  4. package/dist/pd-bg-image-form/PdBgImageForm.d.ts +65 -0
  5. package/dist/pd-bg-image-form/PdBgImageForm.d.ts.map +1 -0
  6. package/dist/pd-bg-image-form/PdBgImageForm.js +394 -0
  7. package/dist/pd-bg-image-form/pd-bg-image-form.d.ts +4 -0
  8. package/dist/pd-bg-image-form/pd-bg-image-form.d.ts.map +1 -0
  9. package/dist/pd-bg-image-form.d.ts +2 -0
  10. package/dist/pd-bg-image-form.js +8 -0
  11. package/dist/pd-bg-select-form/PdBgSelectForm.d.ts +73 -0
  12. package/dist/pd-bg-select-form/PdBgSelectForm.d.ts.map +1 -0
  13. package/dist/pd-bg-select-form/PdBgSelectForm.js +338 -0
  14. package/dist/pd-bg-select-form/pd-bg-select-form.d.ts +4 -0
  15. package/dist/pd-bg-select-form/pd-bg-select-form.d.ts.map +1 -0
  16. package/dist/pd-bg-select-form.d.ts +2 -0
  17. package/dist/pd-bg-select-form.js +8 -0
  18. package/dist/pd-contact/PdContact.d.ts +7 -0
  19. package/dist/pd-contact/PdContact.d.ts.map +1 -1
  20. package/dist/pd-contact/PdContact.js +45 -8
  21. package/dist/pd-gradient-form/PdGradientForm.d.ts +49 -0
  22. package/dist/pd-gradient-form/PdGradientForm.d.ts.map +1 -0
  23. package/dist/pd-gradient-form/PdGradientForm.js +259 -0
  24. package/dist/pd-gradient-form/pd-gradient-form.d.ts +4 -0
  25. package/dist/pd-gradient-form/pd-gradient-form.d.ts.map +1 -0
  26. package/dist/pd-gradient-form.d.ts +2 -0
  27. package/dist/pd-gradient-form.js +8 -0
  28. package/dist/types.js +3 -1
  29. package/package.json +6 -3
  30. package/dist/pd-contact/pd-contact-edit.stories.d.ts +0 -53
  31. package/dist/pd-contact/pd-contact-edit.stories.d.ts.map +0 -1
  32. package/dist/pd-contact/pd-contact-view.stories.d.ts +0 -55
  33. package/dist/pd-contact/pd-contact-view.stories.d.ts.map +0 -1
@@ -0,0 +1,259 @@
1
+ import { css, nothing, html } from 'lit';
2
+ import { property, state } from 'lit/decorators.js';
3
+ import { styleMap } from 'lit/directives/style-map.js';
4
+ import { PdBaseUIInput } from '@progressive-development/pd-forms';
5
+ import '@progressive-development/pd-forms/pd-form-row';
6
+ import '@progressive-development/pd-forms/pd-color-picker';
7
+ import '@progressive-development/pd-forms/pd-range';
8
+
9
+ var __defProp = Object.defineProperty;
10
+ var __decorateClass = (decorators, target, key, kind) => {
11
+ var result = void 0 ;
12
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
13
+ if (decorator = decorators[i])
14
+ result = (decorator(target, key, result) ) || result;
15
+ if (result) __defProp(target, key, result);
16
+ return result;
17
+ };
18
+ const DEFAULT_ANGLE = 135;
19
+ const DEFAULT_STOP1 = 0;
20
+ const DEFAULT_STOP2 = 100;
21
+ class PdGradientForm extends PdBaseUIInput {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.color1Label = "Farbe 1";
25
+ this.color2Label = "Farbe 2";
26
+ this.angleLabel = "Winkel";
27
+ this.defaultAngle = DEFAULT_ANGLE;
28
+ this.hidePreview = false;
29
+ this._color1 = "#333333";
30
+ this._color2 = "#666666";
31
+ this._angle = DEFAULT_ANGLE;
32
+ this._stop1 = DEFAULT_STOP1;
33
+ this._stop2 = DEFAULT_STOP2;
34
+ }
35
+ static {
36
+ this.styles = [
37
+ PdBaseUIInput.styles,
38
+ css`
39
+ :host {
40
+ display: block;
41
+ }
42
+
43
+ .form-fields {
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: var(--pd-form-container-row-gap, var(--pd-spacing-md));
47
+ }
48
+
49
+ .gradient-preview {
50
+ height: var(--pd-gradient-form-preview-height, 2rem);
51
+ border-radius: var(--pd-radius-md, 0.375rem);
52
+ border: 1px solid var(--pd-default-light-col, #cbd5e1);
53
+ margin-bottom: var(--pd-spacing-sm, 0.5rem);
54
+ }
55
+ `
56
+ ];
57
+ }
58
+ // ── Lifecycle ──────────────────────────────────────────────────────────────
59
+ update(changedProps) {
60
+ if (changedProps.has("initValue") && this.initValue) {
61
+ this._applyInitValue(this.initValue);
62
+ if (this.handleChangeForInitVal) {
63
+ this._handleChangedValue(this.initValue, void 0, true);
64
+ } else {
65
+ this._value = this.initValue;
66
+ }
67
+ changedProps.delete("initValue");
68
+ }
69
+ super.update(changedProps);
70
+ }
71
+ // ── Rendering ──────────────────────────────────────────────────────────────
72
+ render() {
73
+ const inputId = `${this.id}GradientForm`;
74
+ const errorId = `${this.id}Error`;
75
+ const previewStyle = {
76
+ background: `linear-gradient(${this._angle}deg, ${this._color1} ${this._stop1}%, ${this._color2} ${this._stop2}%)`
77
+ };
78
+ return html`
79
+ ${this._renderLabel(inputId)}
80
+ ${this.hidePreview ? nothing : html`
81
+ <div
82
+ class="gradient-preview"
83
+ style="${styleMap(previewStyle)}"
84
+ ></div>
85
+ `}
86
+
87
+ <div class="form-fields">
88
+ <pd-form-row>
89
+ <pd-color-picker
90
+ span="half"
91
+ label="${this.color1Label}"
92
+ .initValue="${this._color1}"
93
+ .handleChangeForInitVal="${true}"
94
+ ?disabled="${this.disabled}"
95
+ @pd-form-element-change="${this._onColor1Change}"
96
+ @pd-form-element-register="${this._innerStop}"
97
+ @validate-form="${this._innerStop}"
98
+ @field-change="${this._innerStop}"
99
+ ></pd-color-picker>
100
+ <pd-color-picker
101
+ span="half"
102
+ label="${this.color2Label}"
103
+ .initValue="${this._color2}"
104
+ .handleChangeForInitVal="${true}"
105
+ ?disabled="${this.disabled}"
106
+ @pd-form-element-change="${this._onColor2Change}"
107
+ @pd-form-element-register="${this._innerStop}"
108
+ @validate-form="${this._innerStop}"
109
+ @field-change="${this._innerStop}"
110
+ ></pd-color-picker>
111
+ </pd-form-row>
112
+
113
+ <pd-form-row>
114
+ <pd-range
115
+ span="half"
116
+ no-ticks
117
+ label="Position ${this.color1Label}"
118
+ min="0"
119
+ max="100"
120
+ step="1"
121
+ .initValue="${String(this._stop1)}"
122
+ .handleChangeForInitVal="${true}"
123
+ ?disabled="${this.disabled}"
124
+ @pd-form-element-change="${this._onStop1Change}"
125
+ @pd-form-element-register="${this._innerStop}"
126
+ @validate-form="${this._innerStop}"
127
+ @field-change="${this._innerStop}"
128
+ ></pd-range>
129
+ <pd-range
130
+ span="half"
131
+ no-ticks
132
+ label="Position ${this.color2Label}"
133
+ min="0"
134
+ max="100"
135
+ step="1"
136
+ .initValue="${String(this._stop2)}"
137
+ .handleChangeForInitVal="${true}"
138
+ ?disabled="${this.disabled}"
139
+ @pd-form-element-change="${this._onStop2Change}"
140
+ @pd-form-element-register="${this._innerStop}"
141
+ @validate-form="${this._innerStop}"
142
+ @field-change="${this._innerStop}"
143
+ ></pd-range>
144
+ </pd-form-row>
145
+
146
+ <pd-form-row>
147
+ <pd-range
148
+ no-ticks
149
+ label="${this.angleLabel}"
150
+ min="0"
151
+ max="360"
152
+ step="5"
153
+ .initValue="${String(this._angle)}"
154
+ .handleChangeForInitVal="${true}"
155
+ ?disabled="${this.disabled}"
156
+ @pd-form-element-change="${this._onAngleChange}"
157
+ @pd-form-element-register="${this._innerStop}"
158
+ @validate-form="${this._innerStop}"
159
+ @field-change="${this._innerStop}"
160
+ ></pd-range>
161
+ </pd-form-row>
162
+ </div>
163
+
164
+ ${this._renderErrorMsg(errorId)}
165
+ `;
166
+ }
167
+ // ── Value Parsing ──────────────────────────────────────────────────────────
168
+ _applyInitValue(raw) {
169
+ try {
170
+ const parsed = JSON.parse(raw);
171
+ this._color1 = parsed.color1 || "#333333";
172
+ this._color2 = parsed.color2 || "#666666";
173
+ this._angle = parsed.angle ?? this.defaultAngle;
174
+ this._stop1 = parsed.stop1 ?? DEFAULT_STOP1;
175
+ this._stop2 = parsed.stop2 ?? DEFAULT_STOP2;
176
+ } catch {
177
+ }
178
+ }
179
+ _getParsedValue() {
180
+ return {
181
+ color1: this._color1,
182
+ color2: this._color2,
183
+ angle: this._angle,
184
+ stop1: this._stop1,
185
+ stop2: this._stop2
186
+ };
187
+ }
188
+ // ── Inner Element Events (prevent leaking into parent pd-form-container) ─
189
+ _innerStop(e) {
190
+ e.stopPropagation();
191
+ }
192
+ _onColor1Change(e) {
193
+ e.stopPropagation();
194
+ this._color1 = e.detail?.value ?? this._color1;
195
+ this._emitGradientValue();
196
+ }
197
+ _onColor2Change(e) {
198
+ e.stopPropagation();
199
+ this._color2 = e.detail?.value ?? this._color2;
200
+ this._emitGradientValue();
201
+ }
202
+ _onStop1Change(e) {
203
+ e.stopPropagation();
204
+ this._stop1 = parseInt(e.detail?.value ?? "", 10) || DEFAULT_STOP1;
205
+ this._emitGradientValue();
206
+ }
207
+ _onStop2Change(e) {
208
+ e.stopPropagation();
209
+ this._stop2 = parseInt(e.detail?.value ?? "", 10) || DEFAULT_STOP2;
210
+ this._emitGradientValue();
211
+ }
212
+ _onAngleChange(e) {
213
+ e.stopPropagation();
214
+ this._angle = parseInt(e.detail?.value ?? "", 10) || this.defaultAngle;
215
+ this._emitGradientValue();
216
+ }
217
+ _emitGradientValue() {
218
+ const val = {
219
+ color1: this._color1,
220
+ color2: this._color2,
221
+ angle: this._angle,
222
+ stop1: this._stop1,
223
+ stop2: this._stop2
224
+ };
225
+ this._handleChangedValue(JSON.stringify(val), void 0, true);
226
+ }
227
+ }
228
+ __decorateClass([
229
+ property({ type: String })
230
+ ], PdGradientForm.prototype, "color1Label");
231
+ __decorateClass([
232
+ property({ type: String })
233
+ ], PdGradientForm.prototype, "color2Label");
234
+ __decorateClass([
235
+ property({ type: String })
236
+ ], PdGradientForm.prototype, "angleLabel");
237
+ __decorateClass([
238
+ property({ type: Number })
239
+ ], PdGradientForm.prototype, "defaultAngle");
240
+ __decorateClass([
241
+ property({ type: Boolean, attribute: "hide-preview" })
242
+ ], PdGradientForm.prototype, "hidePreview");
243
+ __decorateClass([
244
+ state()
245
+ ], PdGradientForm.prototype, "_color1");
246
+ __decorateClass([
247
+ state()
248
+ ], PdGradientForm.prototype, "_color2");
249
+ __decorateClass([
250
+ state()
251
+ ], PdGradientForm.prototype, "_angle");
252
+ __decorateClass([
253
+ state()
254
+ ], PdGradientForm.prototype, "_stop1");
255
+ __decorateClass([
256
+ state()
257
+ ], PdGradientForm.prototype, "_stop2");
258
+
259
+ export { PdGradientForm };
@@ -0,0 +1,4 @@
1
+ import { PdGradientForm } from './PdGradientForm.js';
2
+ export { PdGradientForm };
3
+ export type { GradientValue } from './PdGradientForm.js';
4
+ //# sourceMappingURL=pd-gradient-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-gradient-form.d.ts","sourceRoot":"","sources":["../../src/pd-gradient-form/pd-gradient-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAOrD,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './pd-gradient-form/pd-gradient-form'
2
+ export {}
@@ -0,0 +1,8 @@
1
+ import { PdGradientForm } from './pd-gradient-form/PdGradientForm.js';
2
+
3
+ const tag = "pd-gradient-form";
4
+ if (!customElements.get(tag)) {
5
+ customElements.define(tag, PdGradientForm);
6
+ }
7
+
8
+ export { PdGradientForm };
package/dist/types.js CHANGED
@@ -10,5 +10,7 @@ const C_ADDITIONAL = "additionalHint";
10
10
  const C_PROPERTY_DATE = "propertyDate";
11
11
  const C_PHONE1 = "phone1";
12
12
  const C_EMAIL = "email";
13
+ const C_WEBSITE = "website";
14
+ const C_SOCIAL_MEDIA = "socialMedia";
13
15
 
14
- export { C_ADDITIONAL, C_BTWNR, C_CITY, C_COMPANY, C_EMAIL, C_FIRSTNAME, C_LASTNAME, C_PHONE1, C_PROPERTY_DATE, C_STREET, C_TYPE, C_ZIP };
16
+ export { C_ADDITIONAL, C_BTWNR, C_CITY, C_COMPANY, C_EMAIL, C_FIRSTNAME, C_LASTNAME, C_PHONE1, C_PROPERTY_DATE, C_SOCIAL_MEDIA, C_STREET, C_TYPE, C_WEBSITE, C_ZIP };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progressive-development/pd-contact",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Progressive Development Contact component",
5
5
  "author": "PD Progressive Development",
6
6
  "license": "MIT",
@@ -14,6 +14,9 @@
14
14
  "exports": {
15
15
  ".": "./dist/index.js",
16
16
  "./pd-contact": "./dist/pd-contact.js",
17
+ "./pd-gradient-form": "./dist/pd-gradient-form.js",
18
+ "./pd-bg-image-form": "./dist/pd-bg-image-form.js",
19
+ "./pd-bg-select-form": "./dist/pd-bg-select-form.js",
17
20
  "./locales/be": "./dist/locales/be.js",
18
21
  "./locales/de": "./dist/locales/de.js",
19
22
  "./locales/en": "./dist/locales/en.js"
@@ -29,8 +32,8 @@
29
32
  "@lit/localize": "^0.12.2",
30
33
  "tslib": "^2.8.1",
31
34
  "@progressive-development/pd-shared-styles": "0.3.2",
32
- "@progressive-development/pd-icon": "1.0.1",
33
- "@progressive-development/pd-forms": "1.0.1"
35
+ "@progressive-development/pd-icon": "1.0.2",
36
+ "@progressive-development/pd-forms": "1.0.3"
34
37
  },
35
38
  "customElements": "custom-elements.json",
36
39
  "keywords": [
@@ -1,53 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/web-components-vite';
2
- import { PdContactData } from '../types.js';
3
- /**
4
- * Story arguments interface for pd-contact (edit mode).
5
- * Maps to the component's public API when used as an editable form.
6
- */
7
- interface PdContactEditArgs {
8
- /** List of input fields to display (empty = all fields) */
9
- inputFields: string[];
10
- /** List of required field keys for validation */
11
- requiredFields: string[];
12
- /** Show property date selection field */
13
- withPropertyDate: boolean;
14
- /** Pre-populated contact data */
15
- contact?: PdContactData;
16
- }
17
- /**
18
- * ## pd-contact (Edit Mode)
19
- *
20
- * Contact form component for creating and editing contact information with
21
- * built-in validation support.
22
- *
23
- * ### Features
24
- * - Private/Business contact type toggle via radio group
25
- * - Configurable visible fields via `inputFields` array
26
- * - Required field validation via `requiredFields` array
27
- * - Optional property/building year selection
28
- * - Auto-complete hints for browser autofill
29
- * - Integration with pd-form-container for validation lifecycle
30
- *
31
- * ### Form Methods
32
- * - `triggerValidate()` — triggers validation and returns Promise<boolean>
33
- * - `getValues()` — returns current form data as PdContactData
34
- * - `valid` — getter for current validation state
35
- */
36
- declare const meta: Meta<PdContactEditArgs>;
37
- export default meta;
38
- type Story = StoryObj<PdContactEditArgs>;
39
- /** Default empty contact form with all fields visible. Interactive via Controls panel. */
40
- export declare const Default: Story;
41
- /** Contact form pre-filled with private person data (first name, last name, address). */
42
- export declare const PrepopulatedPrivate: Story;
43
- /** Contact form pre-filled with company data (company name, VAT number). */
44
- export declare const PrepopulatedCompany: Story;
45
- /** Form with all fields marked as required — shows validation indicators. */
46
- export declare const AllFieldsRequired: Story;
47
- /** Demonstrates showing only a subset of fields using the inputFields array. */
48
- export declare const CustomFieldSelection: Story;
49
- /** Form with the optional property/building year selection field enabled. */
50
- export declare const WithPropertyDate: Story;
51
- /** CSS Custom Properties — Branded and Redesigned variants. */
52
- export declare const CustomStyling: Story;
53
- //# sourceMappingURL=pd-contact-edit.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pd-contact-edit.stories.d.ts","sourceRoot":"","sources":["../../src/pd-contact/pd-contact-edit.stories.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,EAWL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,OAAO,iBAAiB,CAAC;AACzB,OAAO,6CAA6C,CAAC;AAMrD;;;GAGG;AACH,UAAU,iBAAiB;IACzB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iDAAiD;IACjD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,yCAAyC;IACzC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iCAAiC;IACjC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAuED;;;;;;;;;;;;;;;;;;GAkBG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAmFjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAMzC,0FAA0F;AAC1F,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAMjC,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,EAAE,KAIjC,CAAC;AAMF,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,EAAE,KAIjC,CAAC;AAMF,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,KAI/B,CAAC;AAMF,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,EAAE,KAoClC,CAAC;AAMF,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,EAAE,KAQ9B,CAAC;AAMF,+DAA+D;AAC/D,eAAO,MAAM,aAAa,EAAE,KAuE3B,CAAC"}
@@ -1,55 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/web-components-vite';
2
- import { PdContactData } from '../types.js';
3
- /**
4
- * Story arguments interface for pd-contact (view mode).
5
- * Maps to the component's public API when used as a read-only display.
6
- */
7
- interface PdContactViewArgs {
8
- /** Show summary view (read-only display) */
9
- summary: boolean;
10
- /** Render phone and email as clickable links */
11
- phoneMailLink: boolean;
12
- /** View type: 'detail' or 'card' (business card) */
13
- viewType: "detail" | "card";
14
- /** Card layout mode: 'auto', 'horizontal', or 'vertical' */
15
- cardLayout: "auto" | "horizontal" | "vertical";
16
- /** Contact data to display */
17
- contact: PdContactData;
18
- }
19
- /**
20
- * ## pd-contact (View Mode)
21
- *
22
- * Contact display component for showing contact information in read-only mode.
23
- * Supports two view types: detail (structured list) and card (business card layout).
24
- *
25
- * ### Features
26
- * - Detail view with structured address, phone, email, and social media display
27
- * - Business card view with logo, responsive layout, and social media integration
28
- * - Private and business contact support (company name, VAT number)
29
- * - Clickable phone/email links with icons
30
- * - Card view with container-query-based responsive layout (auto/horizontal/vertical)
31
- * - CSS custom properties for full visual customization
32
- * - CSS part `card-wrapper` for external card styling
33
- *
34
- * ### View Types
35
- * - `detail` — Traditional structured contact display (default)
36
- * - `card` — Business card layout with logo and social media
37
- */
38
- declare const meta: Meta<PdContactViewArgs>;
39
- export default meta;
40
- type Story = StoryObj<PdContactViewArgs>;
41
- /** Default contact view showing a private person. Interactive via Controls panel. */
42
- export declare const Default: Story;
43
- /** All detail view variants at a glance: private, company, with title/social media. */
44
- export declare const AllDetailVariants: Story;
45
- /** Detail view with titleName as header, website link, and social media integration. */
46
- export declare const DetailWithTitleAndSocialMedia: Story;
47
- /** Business card with auto-responsive layout — switches between horizontal (>500px) and vertical (<500px). */
48
- export declare const CardDefault: Story;
49
- /** Card view with all three layout modes side by side. */
50
- export declare const CardLayouts: Story;
51
- /** Card view with different content configurations: without logo, without social media, minimal. */
52
- export declare const CardContentVariations: Story;
53
- /** CSS Custom Properties — Branded and Redesigned card variants. */
54
- export declare const CustomStyling: Story;
55
- //# sourceMappingURL=pd-contact-view.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pd-contact-view.stories.d.ts","sourceRoot":"","sources":["../../src/pd-contact/pd-contact-view.stories.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,iBAAiB,CAAC;AAMzB;;;GAGG;AACH,UAAU,iBAAiB;IACzB,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,aAAa,EAAE,OAAO,CAAC;IACvB,oDAAoD;IACpD,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;IAC/C,8BAA8B;IAC9B,OAAO,EAAE,aAAa,CAAC;CACxB;AAyED;;;;;;;;;;;;;;;;;;GAkBG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAgFjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAMzC,qFAAqF;AACrF,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAMjC,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,EAAE,KA0C/B,CAAC;AAMF,wFAAwF;AACxF,eAAO,MAAM,6BAA6B,EAAE,KAY3C,CAAC;AAMF,8GAA8G;AAC9G,eAAO,MAAM,WAAW,EAAE,KAazB,CAAC;AAMF,0DAA0D;AAC1D,eAAO,MAAM,WAAW,EAAE,KAwCzB,CAAC;AAMF,oGAAoG;AACpG,eAAO,MAAM,qBAAqB,EAAE,KA+CnC,CAAC;AAMF,oEAAoE;AACpE,eAAO,MAAM,aAAa,EAAE,KAuF3B,CAAC"}