@raqm/ui 0.0.0-stage → 0.1.1
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/CHANGELOG.md +22 -0
- package/LICENSE +21 -0
- package/NOTICE.md +28 -0
- package/README.md +126 -3
- package/combobox/README.md +17 -0
- package/fesm2022/raqm-ui-accordion.mjs +414 -0
- package/fesm2022/raqm-ui-accordion.mjs.map +1 -0
- package/fesm2022/raqm-ui-alert-dialog.mjs +457 -0
- package/fesm2022/raqm-ui-alert-dialog.mjs.map +1 -0
- package/fesm2022/raqm-ui-alert.mjs +195 -0
- package/fesm2022/raqm-ui-alert.mjs.map +1 -0
- package/fesm2022/raqm-ui-aspect-ratio.mjs +66 -0
- package/fesm2022/raqm-ui-aspect-ratio.mjs.map +1 -0
- package/fesm2022/raqm-ui-attachment.mjs +435 -0
- package/fesm2022/raqm-ui-attachment.mjs.map +1 -0
- package/fesm2022/raqm-ui-avatar.mjs +337 -0
- package/fesm2022/raqm-ui-avatar.mjs.map +1 -0
- package/fesm2022/raqm-ui-badge.mjs +68 -0
- package/fesm2022/raqm-ui-badge.mjs.map +1 -0
- package/fesm2022/raqm-ui-breadcrumb.mjs +309 -0
- package/fesm2022/raqm-ui-breadcrumb.mjs.map +1 -0
- package/fesm2022/raqm-ui-button-group.mjs +138 -0
- package/fesm2022/raqm-ui-button-group.mjs.map +1 -0
- package/fesm2022/raqm-ui-button.mjs +295 -0
- package/fesm2022/raqm-ui-button.mjs.map +1 -0
- package/fesm2022/raqm-ui-calendar.mjs +1394 -0
- package/fesm2022/raqm-ui-calendar.mjs.map +1 -0
- package/fesm2022/raqm-ui-card.mjs +331 -0
- package/fesm2022/raqm-ui-card.mjs.map +1 -0
- package/fesm2022/raqm-ui-carousel.mjs +410 -0
- package/fesm2022/raqm-ui-carousel.mjs.map +1 -0
- package/fesm2022/raqm-ui-checkbox.mjs +86 -0
- package/fesm2022/raqm-ui-checkbox.mjs.map +1 -0
- package/fesm2022/raqm-ui-collapsible.mjs +266 -0
- package/fesm2022/raqm-ui-collapsible.mjs.map +1 -0
- package/fesm2022/raqm-ui-combobox.mjs +1584 -0
- package/fesm2022/raqm-ui-combobox.mjs.map +1 -0
- package/fesm2022/raqm-ui-command.mjs +1210 -0
- package/fesm2022/raqm-ui-command.mjs.map +1 -0
- package/fesm2022/raqm-ui-context-menu.mjs +723 -0
- package/fesm2022/raqm-ui-context-menu.mjs.map +1 -0
- package/fesm2022/raqm-ui-dialog.mjs +1214 -0
- package/fesm2022/raqm-ui-dialog.mjs.map +1 -0
- package/fesm2022/raqm-ui-drawer.mjs +687 -0
- package/fesm2022/raqm-ui-drawer.mjs.map +1 -0
- package/fesm2022/raqm-ui-dropdown-menu.mjs +1168 -0
- package/fesm2022/raqm-ui-dropdown-menu.mjs.map +1 -0
- package/fesm2022/raqm-ui-empty.mjs +272 -0
- package/fesm2022/raqm-ui-empty.mjs.map +1 -0
- package/fesm2022/raqm-ui-field.mjs +517 -0
- package/fesm2022/raqm-ui-field.mjs.map +1 -0
- package/fesm2022/raqm-ui-hover-card.mjs +828 -0
- package/fesm2022/raqm-ui-hover-card.mjs.map +1 -0
- package/fesm2022/raqm-ui-input-group.mjs +270 -0
- package/fesm2022/raqm-ui-input-group.mjs.map +1 -0
- package/fesm2022/raqm-ui-input-otp.mjs +788 -0
- package/fesm2022/raqm-ui-input-otp.mjs.map +1 -0
- package/fesm2022/raqm-ui-input.mjs +73 -0
- package/fesm2022/raqm-ui-input.mjs.map +1 -0
- package/fesm2022/raqm-ui-item.mjs +495 -0
- package/fesm2022/raqm-ui-item.mjs.map +1 -0
- package/fesm2022/raqm-ui-kbd.mjs +80 -0
- package/fesm2022/raqm-ui-kbd.mjs.map +1 -0
- package/fesm2022/raqm-ui-label.mjs +44 -0
- package/fesm2022/raqm-ui-label.mjs.map +1 -0
- package/fesm2022/raqm-ui-menubar.mjs +536 -0
- package/fesm2022/raqm-ui-menubar.mjs.map +1 -0
- package/fesm2022/raqm-ui-native-select.mjs +131 -0
- package/fesm2022/raqm-ui-native-select.mjs.map +1 -0
- package/fesm2022/raqm-ui-navigation-menu.mjs +1399 -0
- package/fesm2022/raqm-ui-navigation-menu.mjs.map +1 -0
- package/fesm2022/raqm-ui-overlay-internal.mjs +185 -0
- package/fesm2022/raqm-ui-overlay-internal.mjs.map +1 -0
- package/fesm2022/raqm-ui-pagination.mjs +440 -0
- package/fesm2022/raqm-ui-pagination.mjs.map +1 -0
- package/fesm2022/raqm-ui-popover.mjs +1495 -0
- package/fesm2022/raqm-ui-popover.mjs.map +1 -0
- package/fesm2022/raqm-ui-progress.mjs +369 -0
- package/fesm2022/raqm-ui-progress.mjs.map +1 -0
- package/fesm2022/raqm-ui-questionnaire.mjs +1005 -0
- package/fesm2022/raqm-ui-questionnaire.mjs.map +1 -0
- package/fesm2022/raqm-ui-radio-group.mjs +151 -0
- package/fesm2022/raqm-ui-radio-group.mjs.map +1 -0
- package/fesm2022/raqm-ui-resizable.mjs +439 -0
- package/fesm2022/raqm-ui-resizable.mjs.map +1 -0
- package/fesm2022/raqm-ui-scroll-area.mjs +510 -0
- package/fesm2022/raqm-ui-scroll-area.mjs.map +1 -0
- package/fesm2022/raqm-ui-select.mjs +1073 -0
- package/fesm2022/raqm-ui-select.mjs.map +1 -0
- package/fesm2022/raqm-ui-separator.mjs +103 -0
- package/fesm2022/raqm-ui-separator.mjs.map +1 -0
- package/fesm2022/raqm-ui-sheet.mjs +411 -0
- package/fesm2022/raqm-ui-sheet.mjs.map +1 -0
- package/fesm2022/raqm-ui-sidebar.mjs +1784 -0
- package/fesm2022/raqm-ui-sidebar.mjs.map +1 -0
- package/fesm2022/raqm-ui-skeleton.mjs +50 -0
- package/fesm2022/raqm-ui-skeleton.mjs.map +1 -0
- package/fesm2022/raqm-ui-slider.mjs +609 -0
- package/fesm2022/raqm-ui-slider.mjs.map +1 -0
- package/fesm2022/raqm-ui-spinner.mjs +137 -0
- package/fesm2022/raqm-ui-spinner.mjs.map +1 -0
- package/fesm2022/raqm-ui-switch.mjs +109 -0
- package/fesm2022/raqm-ui-switch.mjs.map +1 -0
- package/fesm2022/raqm-ui-table.mjs +271 -0
- package/fesm2022/raqm-ui-table.mjs.map +1 -0
- package/fesm2022/raqm-ui-tabs.mjs +536 -0
- package/fesm2022/raqm-ui-tabs.mjs.map +1 -0
- package/fesm2022/raqm-ui-textarea.mjs +37 -0
- package/fesm2022/raqm-ui-textarea.mjs.map +1 -0
- package/fesm2022/raqm-ui-toast.mjs +918 -0
- package/fesm2022/raqm-ui-toast.mjs.map +1 -0
- package/fesm2022/raqm-ui-toggle-group.mjs +462 -0
- package/fesm2022/raqm-ui-toggle-group.mjs.map +1 -0
- package/fesm2022/raqm-ui-toggle.mjs +158 -0
- package/fesm2022/raqm-ui-toggle.mjs.map +1 -0
- package/fesm2022/raqm-ui-tooltip.mjs +1226 -0
- package/fesm2022/raqm-ui-tooltip.mjs.map +1 -0
- package/fesm2022/raqm-ui.mjs +50 -0
- package/input-otp/README.md +12 -0
- package/package.json +275 -3
- package/styles/theme.css +4324 -0
- package/types/raqm-ui-accordion.d.ts +124 -0
- package/types/raqm-ui-alert-dialog.d.ts +81 -0
- package/types/raqm-ui-alert.d.ts +29 -0
- package/types/raqm-ui-aspect-ratio.d.ts +13 -0
- package/types/raqm-ui-attachment.d.ts +72 -0
- package/types/raqm-ui-avatar.d.ts +67 -0
- package/types/raqm-ui-badge.d.ts +20 -0
- package/types/raqm-ui-breadcrumb.d.ts +35 -0
- package/types/raqm-ui-button-group.d.ts +27 -0
- package/types/raqm-ui-button.d.ts +80 -0
- package/types/raqm-ui-calendar.d.ts +359 -0
- package/types/raqm-ui-card.d.ts +34 -0
- package/types/raqm-ui-carousel.d.ts +81 -0
- package/types/raqm-ui-checkbox.d.ts +24 -0
- package/types/raqm-ui-collapsible.d.ts +72 -0
- package/types/raqm-ui-combobox.d.ts +405 -0
- package/types/raqm-ui-command.d.ts +256 -0
- package/types/raqm-ui-context-menu.d.ts +196 -0
- package/types/raqm-ui-dialog.d.ts +232 -0
- package/types/raqm-ui-drawer.d.ts +121 -0
- package/types/raqm-ui-dropdown-menu.d.ts +319 -0
- package/types/raqm-ui-empty.d.ts +35 -0
- package/types/raqm-ui-field.d.ts +88 -0
- package/types/raqm-ui-hover-card.d.ts +139 -0
- package/types/raqm-ui-input-group.d.ts +45 -0
- package/types/raqm-ui-input-otp.d.ts +197 -0
- package/types/raqm-ui-input.d.ts +16 -0
- package/types/raqm-ui-item.d.ts +71 -0
- package/types/raqm-ui-kbd.d.ts +12 -0
- package/types/raqm-ui-label.d.ts +6 -0
- package/types/raqm-ui-menubar.d.ts +159 -0
- package/types/raqm-ui-native-select.d.ts +23 -0
- package/types/raqm-ui-navigation-menu.d.ts +230 -0
- package/types/raqm-ui-overlay-internal.d.ts +5 -0
- package/types/raqm-ui-pagination.d.ts +84 -0
- package/types/raqm-ui-popover.d.ts +235 -0
- package/types/raqm-ui-progress.d.ts +79 -0
- package/types/raqm-ui-questionnaire.d.ts +217 -0
- package/types/raqm-ui-radio-group.d.ts +48 -0
- package/types/raqm-ui-resizable.d.ts +98 -0
- package/types/raqm-ui-scroll-area.d.ts +132 -0
- package/types/raqm-ui-select.d.ts +205 -0
- package/types/raqm-ui-separator.d.ts +21 -0
- package/types/raqm-ui-sheet.d.ts +79 -0
- package/types/raqm-ui-sidebar.d.ts +285 -0
- package/types/raqm-ui-skeleton.d.ts +6 -0
- package/types/raqm-ui-slider.d.ts +129 -0
- package/types/raqm-ui-spinner.d.ts +32 -0
- package/types/raqm-ui-switch.d.ts +32 -0
- package/types/raqm-ui-table.d.ts +36 -0
- package/types/raqm-ui-tabs.d.ts +154 -0
- package/types/raqm-ui-textarea.d.ts +6 -0
- package/types/raqm-ui-toast.d.ts +190 -0
- package/types/raqm-ui-toggle-group.d.ts +167 -0
- package/types/raqm-ui-toggle.d.ts +42 -0
- package/types/raqm-ui-tooltip.d.ts +207 -0
- package/types/raqm-ui.d.ts +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raqm-ui-questionnaire.mjs","names":[],"sources":["../../../projects/ui/questionnaire/questionnaire.ts","../../../projects/ui/questionnaire/questionnaire.html","../../../projects/ui/questionnaire/questionnaire-parts.ts","../../../projects/ui/questionnaire/public-api.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ChangeDetectorRef,\r\n afterRenderEffect,\r\n booleanAttribute,\r\n ElementRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n isDevMode,\r\n model,\r\n linkedSignal,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { _IdGenerator } from '@angular/cdk/a11y';\r\n\r\nexport interface RaqmQuestionnaireChoice {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n}\r\nexport interface RaqmQuestionnaireItem {\r\n name: string;\r\n title: string;\r\n description?: string;\r\n required?: boolean;\r\n multiple?: boolean;\r\n choices: readonly RaqmQuestionnaireChoice[];\r\n input?: { label: string; placeholder?: string };\r\n visible?: (answers: RaqmQuestionnaireAnswers) => boolean;\r\n validate?: (\r\n answers: readonly string[],\r\n allAnswers: RaqmQuestionnaireAnswers,\r\n ) => string | undefined;\r\n}\r\nexport type RaqmQuestionnaireAnswers = Record<string, string[]>;\r\n\r\n@Component({\r\n selector: 'raqm-questionnaire',\r\n templateUrl: './questionnaire.html',\r\n styleUrl: './questionnaire.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'raqm-questionnaire' },\r\n})\r\nexport class RaqmQuestionnaireComponent {\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly changeDetector = inject(ChangeDetectorRef);\r\n private readonly pendingFocus = signal<'item' | 'invalid' | null>(null);\r\n constructor() {\r\n afterRenderEffect(() => {\r\n const target = this.pendingFocus();\r\n if (!target) return;\r\n this.host.nativeElement\r\n .querySelector<HTMLElement>(\r\n target === 'invalid'\r\n ? '.raqm-questionnaire-item:not([hidden]) input:not(:disabled)'\r\n : '.raqm-questionnaire-item:not([hidden])',\r\n )\r\n ?.focus();\r\n this.pendingFocus.set(null);\r\n });\r\n effect(() => {\r\n if (isDevMode() && !this.composed() && this.current() && !this.progressLabel()) {\r\n console.error(\r\n '[raqm-questionnaire] The progressbar has no accessible name. Provide `progressLabel`.',\r\n );\r\n }\r\n });\r\n }\r\n readonly id = inject(_IdGenerator).getId('raqm-questionnaire-');\r\n readonly items = input.required<readonly RaqmQuestionnaireItem[]>();\r\n readonly submitted = output<RaqmQuestionnaireAnswers>();\r\n readonly answers = model<RaqmQuestionnaireAnswers>({});\r\n readonly currentItem = model<string | undefined>(undefined);\r\n readonly shortcuts = input<'none' | 'letters' | 'numbers'>('none');\r\n readonly composed = input(false, { transform: booleanAttribute });\r\n /** Copy for the built-in navigation; application-supplied. */\r\n readonly labels = input.required<{\r\n previous: string;\r\n skip: string;\r\n next: string;\r\n submit: string;\r\n }>();\r\n /** Required-item error message; application-supplied. */\r\n readonly requiredMessage = input<string | undefined>(undefined);\r\n /** Accessible name of the default mode's progressbar. */\r\n readonly progressLabel = input<string | undefined>(undefined);\r\n protected readonly index = signal(0);\r\n readonly freeformValues = linkedSignal(() => {\r\n const values: Record<string, string> = {};\r\n for (const item of this.items()) {\r\n if (!item.input) continue;\r\n const choices = new Set(item.choices.map((choice) => choice.value));\r\n values[item.name] = this.answers()[item.name]?.find((answer) => !choices.has(answer)) ?? '';\r\n }\r\n return values;\r\n });\r\n readonly error = signal('');\r\n /** Whether the current item failed validation, including a required item with no message. */\r\n readonly invalid = signal(false);\r\n readonly visibleItems = computed(() =>\r\n this.items().filter((item) => item.visible?.(this.answers()) !== false),\r\n );\r\n readonly current = computed(\r\n () =>\r\n this.visibleItems().find((item) => item.name === this.currentItem()) ??\r\n this.visibleItems()[this.index()] ??\r\n this.visibleItems()[0],\r\n );\r\n readonly position = computed(() => Math.max(0, this.visibleItems().indexOf(this.current())));\r\n descriptionId(name: string): string {\r\n return `${this.id}-${this.items().findIndex((item) => item.name === name)}-description`;\r\n }\r\n errorId(name: string): string {\r\n return `${this.id}-${this.items().findIndex((item) => item.name === name)}-error`;\r\n }\r\n describedBy(name: string, hasDescription: boolean, hasError = false): string | null {\r\n const ids = [\r\n hasDescription ? this.descriptionId(name) : '',\r\n hasError ? this.errorId(name) : '',\r\n ].filter(Boolean);\r\n return ids.length ? ids.join(' ') : null;\r\n }\r\n selected(value: string): boolean {\r\n return this.answers()[this.current().name]?.includes(value) ?? false;\r\n }\r\n shortcut(index: number): string {\r\n return this.shortcuts() === 'letters' ? String.fromCharCode(65 + index) : String(index + 1);\r\n }\r\n onKey(event: KeyboardEvent): void {\r\n if (!this.current()) return;\r\n if (\r\n this.shortcuts() === 'none' ||\r\n event.altKey ||\r\n event.ctrlKey ||\r\n event.metaKey ||\r\n event.isComposing\r\n )\r\n return;\r\n const target = event.target as HTMLElement;\r\n if (target.isContentEditable || (target instanceof HTMLInputElement && target.type === 'text'))\r\n return;\r\n const index = this.current().choices.findIndex(\r\n (_, i) => this.shortcut(i).toLowerCase() === event.key.toLowerCase(),\r\n );\r\n if (index < 0) return;\r\n event.preventDefault();\r\n const choice = this.current().choices[index];\r\n this.choose(choice.value, this.current().multiple ? !this.selected(choice.value) : true);\r\n this.host.nativeElement\r\n .querySelectorAll<HTMLInputElement>(\r\n '.raqm-questionnaire-item:not([hidden]) .raqm-questionnaire-choices input[type=radio], .raqm-questionnaire-item:not([hidden]) .raqm-questionnaire-choices input[type=checkbox]',\r\n )\r\n [index]?.focus();\r\n }\r\n choose(value: string, checked: boolean): void {\r\n const item = this.current();\r\n const current = this.answers()[item.name] ?? [];\r\n const next = item.multiple\r\n ? checked\r\n ? [...current, value]\r\n : current.filter((v) => v !== value)\r\n : [value];\r\n this.answers.update((a) => ({ ...a, [item.name]: next }));\r\n if (!item.multiple) this.freeformValues.update((values) => ({ ...values, [item.name]: '' }));\r\n this.error.set('');\r\n this.invalid.set(false);\r\n }\r\n freeform(value: string): void {\r\n const item = this.current();\r\n const previous = this.freeformValues()[item.name];\r\n this.freeformValues.update((values) => ({ ...values, [item.name]: value }));\r\n this.answers.update((answers) => {\r\n const choices = item.multiple\r\n ? (answers[item.name] ?? []).filter((answer) => answer !== previous)\r\n : [];\r\n return { ...answers, [item.name]: value.trim() ? [...choices, value] : choices };\r\n });\r\n this.error.set('');\r\n this.invalid.set(false);\r\n }\r\n previous(): void {\r\n if (!this.visibleItems().length) return;\r\n const index = Math.max(0, this.position() - 1);\r\n this.index.set(index);\r\n this.currentItem.set(this.visibleItems()[index]?.name);\r\n this.error.set('');\r\n this.invalid.set(false);\r\n this.focusCurrent();\r\n }\r\n private focusCurrent(validation = false): void {\r\n this.changeDetector.detectChanges();\r\n if (!validation) {\r\n this.host.nativeElement\r\n .querySelector<HTMLElement>('.raqm-questionnaire-item:not([hidden])')\r\n ?.focus();\r\n }\r\n this.pendingFocus.set(validation ? 'invalid' : 'item');\r\n }\r\n next(skip = false): void {\r\n const item = this.current();\r\n if (!item) return;\r\n const answer = this.answers()[item.name] ?? [];\r\n const required = !!item.required && !answer.length;\r\n let message: string | undefined;\r\n if (!skip || item.required) {\r\n if (required) {\r\n message = this.requiredMessage();\r\n if (!message && isDevMode()) {\r\n console.error(\r\n '[raqm-questionnaire] The required item has no error message. Provide `requiredMessage`.',\r\n );\r\n }\r\n } else {\r\n message = item.validate?.(answer, this.answers());\r\n }\r\n }\r\n if (required || message) {\r\n this.error.set(message ?? '');\r\n this.invalid.set(true);\r\n this.focusCurrent(true);\r\n return;\r\n }\r\n const remaining = this.visibleItems()\r\n .slice(this.position() + 1)\r\n .map((entry) => entry.name);\r\n if (skip && !item.required) {\r\n this.answers.update((a) => ({ ...a, [item.name]: [] }));\r\n this.freeformValues.update((values) => ({ ...values, [item.name]: '' }));\r\n }\r\n const visible = this.visibleItems();\r\n const nextName = remaining.find((name) => visible.some((entry) => entry.name === name));\r\n const index = nextName ? visible.findIndex((entry) => entry.name === nextName) : -1;\r\n if (index < 0) this.submitted.emit(this.answers());\r\n else {\r\n this.index.set(index);\r\n this.currentItem.set(this.visibleItems()[index]?.name);\r\n this.focusCurrent();\r\n }\r\n this.error.set('');\r\n this.invalid.set(false);\r\n }\r\n}\r\n","@if (composed()) {\r\n <ng-content />\r\n} @else if (current(); as item) {\r\n <p\r\n class=\"raqm-questionnaire-progress\"\r\n role=\"progressbar\"\r\n [attr.aria-label]=\"progressLabel()\"\r\n aria-valuemin=\"0\"\r\n [attr.aria-valuemax]=\"visibleItems().length || null\"\r\n [attr.aria-valuenow]=\"visibleItems().length ? position() + 1 : 0\"\r\n >\r\n {{ visibleItems().length ? position() + 1 : 0 }} / {{ visibleItems().length }}\r\n </p>\r\n <fieldset\r\n class=\"raqm-questionnaire-item\"\r\n tabindex=\"-1\"\r\n [attr.aria-describedby]=\"describedBy(item.name, !!item.description, !!error())\"\r\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\r\n (keydown)=\"onKey($event)\"\r\n >\r\n <legend>{{ item.title }}</legend>\r\n @if (item.description) {\r\n <p [id]=\"descriptionId(item.name)\">{{ item.description }}</p>\r\n }\r\n <div class=\"raqm-questionnaire-choices\">\r\n @for (choice of item.choices; track choice.value; let index = $index) {\r\n <label\r\n ><input\r\n [type]=\"item.multiple ? 'checkbox' : 'radio'\"\r\n [name]=\"item.name\"\r\n [checked]=\"selected(choice.value)\"\r\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\r\n (change)=\"choose(choice.value, $any($event.target).checked)\"\r\n /><span\r\n >{{ choice.label }}\r\n @if (choice.description) {\r\n <small>{{ choice.description }}</small>\r\n }\r\n </span>\r\n @if (shortcuts() !== 'none') {\r\n <kbd aria-hidden=\"true\">{{ shortcut(index) }}</kbd>\r\n }\r\n </label>\r\n }\r\n @if (item.input; as field) {\r\n <input\r\n type=\"text\"\r\n [attr.aria-label]=\"field.label\"\r\n [placeholder]=\"field.placeholder ?? ''\"\r\n [value]=\"freeformValues()[item.name] ?? ''\"\r\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\r\n (input)=\"freeform($any($event.target).value)\"\r\n />\r\n }\r\n </div>\r\n @if (error()) {\r\n <p [id]=\"errorId(item.name)\" role=\"alert\">{{ error() }}</p>\r\n }\r\n </fieldset>\r\n <div class=\"raqm-questionnaire-actions\">\r\n <button\r\n type=\"button\"\r\n class=\"raqm-questionnaire-actions__previous\"\r\n (click)=\"previous()\"\r\n [disabled]=\"position() === 0\"\r\n >\r\n {{ labels().previous }}\r\n </button>\r\n @if (!item.required && position() < visibleItems().length - 1) {\r\n <button type=\"button\" (click)=\"next(true)\">{{ labels().skip }}</button>\r\n }\r\n <button type=\"button\" (click)=\"next()\">\r\n {{ position() === visibleItems().length - 1 ? labels().submit : labels().next }}\r\n </button>\r\n </div>\r\n}\r\n","import {\r\n Component,\r\n Directive,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n contentChild,\r\n} from '@angular/core';\r\nimport { RaqmQuestionnaireComponent } from './questionnaire';\r\n\r\n/** Progress part; the application names it with `aria-label` on the host. */\r\n@Component({\r\n selector: 'raqm-questionnaire-progress',\r\n template:\r\n '{{ root.visibleItems().length ? root.position() + 1 : 0 }} / {{ root.visibleItems().length }}',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-questionnaire-progress',\r\n role: 'progressbar',\r\n 'aria-valuemin': '0',\r\n '[attr.aria-valuemax]': 'root.visibleItems().length || null',\r\n '[attr.aria-valuenow]': 'root.visibleItems().length ? root.position() + 1 : 0',\r\n },\r\n})\r\nexport class RaqmQuestionnaireProgressComponent {\r\n protected readonly root = inject(RaqmQuestionnaireComponent);\r\n}\r\n\r\n@Directive({\r\n selector: 'fieldset[raqm-questionnaire-item]',\r\n host: {\r\n class: 'raqm-questionnaire-item',\r\n tabindex: '-1',\r\n '[hidden]': '!active()',\r\n '[attr.inert]': 'active() ? null : \"\"',\r\n '[attr.aria-invalid]': 'active() && (invalid() || root.invalid()) ? \"true\" : null',\r\n '[attr.aria-describedby]':\r\n 'root.describedBy(name(), !!description(), active() && !!errorMessage())',\r\n '(keydown)': 'onKey($event)',\r\n },\r\n})\r\nexport class RaqmQuestionnaireItemDirective {\r\n readonly root = inject(RaqmQuestionnaireComponent);\r\n readonly name = input.required<string>();\r\n /** External cross-field validation state, combined with the root's per-item check. */\r\n readonly invalid = input(false, { transform: booleanAttribute });\r\n readonly active = computed(() => this.root.current()?.name === this.name());\r\n readonly description = contentChild(RaqmQuestionnaireDescriptionDirective, { descendants: true });\r\n readonly errorPart = contentChild(RaqmQuestionnaireErrorComponent);\r\n readonly errorMessage = computed(() => this.root.error() || this.errorPart()?.message());\r\n protected onKey(event: KeyboardEvent): void {\r\n if (this.active()) this.root.onKey(event);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[raqm-questionnaire-title]',\r\n host: { class: 'raqm-questionnaire-title' },\r\n})\r\nexport class RaqmQuestionnaireTitleDirective {}\r\n@Directive({\r\n selector: '[raqm-questionnaire-description]',\r\n host: { '[id]': 'item.root.descriptionId(item.name())' },\r\n})\r\nexport class RaqmQuestionnaireDescriptionDirective {\r\n protected readonly item = inject(RaqmQuestionnaireItemDirective);\r\n}\r\n@Directive({\r\n selector: '[raqm-questionnaire-choices]',\r\n host: { class: 'raqm-questionnaire-choices' },\r\n})\r\nexport class RaqmQuestionnaireChoicesDirective {}\r\n@Directive({\r\n selector: 'input[raqm-questionnaire-choice]',\r\n host: {\r\n '[attr.name]': 'item.name()',\r\n '[attr.type]': 'definition()?.multiple ? \"checkbox\" : \"radio\"',\r\n '[checked]': 'item.root.answers()[item.name()]?.includes(value()) ?? false',\r\n '[attr.aria-invalid]': 'item.active() && item.root.invalid() ? \"true\" : null',\r\n '(change)': 'onChange($event)',\r\n },\r\n})\r\nexport class RaqmQuestionnaireChoiceDirective {\r\n protected readonly item = inject(RaqmQuestionnaireItemDirective);\r\n protected readonly definition = computed(() =>\r\n this.item.root.items().find((entry) => entry.name === this.item.name()),\r\n );\r\n readonly value = input.required<string>();\r\n protected onChange(event: Event): void {\r\n this.item.root.choose(this.value(), (event.target as HTMLInputElement).checked);\r\n }\r\n}\r\n@Directive({\r\n selector: 'input[raqm-questionnaire-input]',\r\n host: {\r\n '[value]': 'item.root.freeformValues()[item.name()] ?? \"\"',\r\n '[attr.aria-invalid]': 'item.active() && item.root.invalid() ? \"true\" : null',\r\n '(input)': 'onInput($event)',\r\n },\r\n})\r\nexport class RaqmQuestionnaireInputDirective {\r\n protected readonly item = inject(RaqmQuestionnaireItemDirective);\r\n protected onInput(event: Event): void {\r\n this.item.root.freeform((event.target as HTMLInputElement).value);\r\n }\r\n}\r\n@Component({\r\n selector: 'raqm-questionnaire-error',\r\n template:\r\n '@if (item.active() && (message() || item.root.error())) { <p [id]=\"item.root.errorId(item.name())\" role=\"alert\">{{ message() || item.root.error() }}</p> }',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class RaqmQuestionnaireErrorComponent {\r\n protected readonly item = inject(RaqmQuestionnaireItemDirective);\r\n /** External validation message; falls back to the root's own item error. */\r\n readonly message = input<string>();\r\n}\r\n@Directive({\r\n selector: '[raqm-questionnaire-actions]',\r\n host: { class: 'raqm-questionnaire-actions' },\r\n})\r\nexport class RaqmQuestionnaireActionsDirective {}\r\n@Directive({\r\n selector: 'button[raqm-questionnaire-previous]',\r\n host: { '[disabled]': 'root.position() === 0', '(click)': 'root.previous()' },\r\n})\r\nexport class RaqmQuestionnairePreviousDirective {\r\n protected readonly root = inject(RaqmQuestionnaireComponent);\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n }\r\n}\r\n@Directive({\r\n selector: 'button[raqm-questionnaire-skip]',\r\n host: {\r\n '[hidden]': 'root.current()?.required || root.position() === root.visibleItems().length - 1',\r\n '(click)': 'root.next(true)',\r\n },\r\n})\r\nexport class RaqmQuestionnaireSkipDirective {\r\n protected readonly root = inject(RaqmQuestionnaireComponent);\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n }\r\n}\r\n@Directive({\r\n selector: 'button[raqm-questionnaire-next]',\r\n host: {\r\n '[hidden]': 'root.position() === root.visibleItems().length - 1',\r\n '(click)': 'root.next()',\r\n },\r\n})\r\nexport class RaqmQuestionnaireNextDirective {\r\n protected readonly root = inject(RaqmQuestionnaireComponent);\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n }\r\n}\r\n@Directive({\r\n selector: 'button[raqm-questionnaire-submit]',\r\n host: {\r\n '[hidden]': 'root.position() !== root.visibleItems().length - 1',\r\n '(click)': 'root.next()',\r\n },\r\n})\r\nexport class RaqmQuestionnaireSubmitDirective {\r\n protected readonly root = inject(RaqmQuestionnaireComponent);\r\n constructor() {\r\n const host = inject<ElementRef<HTMLButtonElement>>(ElementRef).nativeElement;\r\n if (!host.hasAttribute('type')) host.setAttribute('type', 'button');\r\n }\r\n}\r\n","import { RaqmQuestionnaireComponent } from './questionnaire';\r\nimport {\r\n RaqmQuestionnaireProgressComponent,\r\n RaqmQuestionnaireItemDirective,\r\n RaqmQuestionnaireTitleDirective,\r\n RaqmQuestionnaireDescriptionDirective,\r\n RaqmQuestionnaireChoicesDirective,\r\n RaqmQuestionnaireChoiceDirective,\r\n RaqmQuestionnaireInputDirective,\r\n RaqmQuestionnaireErrorComponent,\r\n RaqmQuestionnaireActionsDirective,\r\n RaqmQuestionnairePreviousDirective,\r\n RaqmQuestionnaireSkipDirective,\r\n RaqmQuestionnaireNextDirective,\r\n RaqmQuestionnaireSubmitDirective,\r\n} from './questionnaire-parts';\r\n\r\nexport { RaqmQuestionnaireComponent };\r\nexport * from './questionnaire-parts';\r\nexport type {\r\n RaqmQuestionnaireChoice,\r\n RaqmQuestionnaireItem,\r\n RaqmQuestionnaireAnswers,\r\n} from './questionnaire';\r\n\r\nexport const RaqmQuestionnaire = [\r\n RaqmQuestionnaireComponent,\r\n RaqmQuestionnaireProgressComponent,\r\n RaqmQuestionnaireItemDirective,\r\n RaqmQuestionnaireTitleDirective,\r\n RaqmQuestionnaireDescriptionDirective,\r\n RaqmQuestionnaireChoicesDirective,\r\n RaqmQuestionnaireChoiceDirective,\r\n RaqmQuestionnaireInputDirective,\r\n RaqmQuestionnaireErrorComponent,\r\n RaqmQuestionnaireActionsDirective,\r\n RaqmQuestionnairePreviousDirective,\r\n RaqmQuestionnaireSkipDirective,\r\n RaqmQuestionnaireNextDirective,\r\n RaqmQuestionnaireSubmitDirective,\r\n] as const;\r\n"],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { Directive, ElementRef, effect, forwardRef, inject, input } from "@angular/core";
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
4
|
+
var RaqmRadioDirective = class RaqmRadioDirective {
|
|
5
|
+
host = inject(ElementRef);
|
|
6
|
+
onChange = () => {};
|
|
7
|
+
onTouched = () => {};
|
|
8
|
+
model = void 0;
|
|
9
|
+
hasModel = false;
|
|
10
|
+
disabledStateFired = false;
|
|
11
|
+
value = input("on", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
12
|
+
constructor() {
|
|
13
|
+
const element = this.host.nativeElement;
|
|
14
|
+
if (!element.hasAttribute("type")) element.setAttribute("type", "radio");
|
|
15
|
+
effect(() => {
|
|
16
|
+
const value = this.value();
|
|
17
|
+
if (this.hasModel) element.checked = this.model === value;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
writeValue(value) {
|
|
21
|
+
this.model = value;
|
|
22
|
+
this.hasModel = true;
|
|
23
|
+
this.host.nativeElement.checked = value === this.value();
|
|
24
|
+
}
|
|
25
|
+
registerOnChange(fn) {
|
|
26
|
+
this.onChange = fn;
|
|
27
|
+
}
|
|
28
|
+
registerOnTouched(fn) {
|
|
29
|
+
this.onTouched = fn;
|
|
30
|
+
}
|
|
31
|
+
setDisabledState(isDisabled) {
|
|
32
|
+
if (this.disabledStateFired || isDisabled) this.host.nativeElement.disabled = isDisabled;
|
|
33
|
+
this.disabledStateFired = true;
|
|
34
|
+
}
|
|
35
|
+
handleChange() {
|
|
36
|
+
this.onChange(this.value());
|
|
37
|
+
}
|
|
38
|
+
handleBlur() {
|
|
39
|
+
this.onTouched();
|
|
40
|
+
}
|
|
41
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
42
|
+
minVersion: "12.0.0",
|
|
43
|
+
version: "22.2.2",
|
|
44
|
+
ngImport: i0,
|
|
45
|
+
type: RaqmRadioDirective,
|
|
46
|
+
deps: [],
|
|
47
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
48
|
+
});
|
|
49
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
50
|
+
minVersion: "17.1.0",
|
|
51
|
+
version: "22.2.2",
|
|
52
|
+
type: RaqmRadioDirective,
|
|
53
|
+
isStandalone: true,
|
|
54
|
+
selector: "input[raqm-radio]",
|
|
55
|
+
inputs: { value: {
|
|
56
|
+
classPropertyName: "value",
|
|
57
|
+
publicName: "value",
|
|
58
|
+
isSignal: true,
|
|
59
|
+
isRequired: false,
|
|
60
|
+
transformFunction: null
|
|
61
|
+
} },
|
|
62
|
+
host: {
|
|
63
|
+
listeners: {
|
|
64
|
+
"change": "handleChange()",
|
|
65
|
+
"blur": "handleBlur()"
|
|
66
|
+
},
|
|
67
|
+
classAttribute: "raqm-radio"
|
|
68
|
+
},
|
|
69
|
+
providers: [{
|
|
70
|
+
provide: NG_VALUE_ACCESSOR,
|
|
71
|
+
useExisting: forwardRef(() => RaqmRadioDirective),
|
|
72
|
+
multi: true
|
|
73
|
+
}],
|
|
74
|
+
ngImport: i0
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
78
|
+
minVersion: "12.0.0",
|
|
79
|
+
version: "22.2.2",
|
|
80
|
+
ngImport: i0,
|
|
81
|
+
type: RaqmRadioDirective,
|
|
82
|
+
decorators: [{
|
|
83
|
+
type: Directive,
|
|
84
|
+
args: [{
|
|
85
|
+
selector: "input[raqm-radio]",
|
|
86
|
+
host: {
|
|
87
|
+
class: "raqm-radio",
|
|
88
|
+
"(change)": "handleChange()",
|
|
89
|
+
"(blur)": "handleBlur()"
|
|
90
|
+
},
|
|
91
|
+
providers: [{
|
|
92
|
+
provide: NG_VALUE_ACCESSOR,
|
|
93
|
+
useExisting: forwardRef(() => RaqmRadioDirective),
|
|
94
|
+
multi: true
|
|
95
|
+
}]
|
|
96
|
+
}]
|
|
97
|
+
}],
|
|
98
|
+
ctorParameters: () => [],
|
|
99
|
+
propDecorators: { value: [{
|
|
100
|
+
type: i0.Input,
|
|
101
|
+
args: [{
|
|
102
|
+
isSignal: true,
|
|
103
|
+
alias: "value",
|
|
104
|
+
required: false
|
|
105
|
+
}]
|
|
106
|
+
}] }
|
|
107
|
+
});
|
|
108
|
+
var RaqmRadioGroupDirective = class RaqmRadioGroupDirective {
|
|
109
|
+
host = inject(ElementRef);
|
|
110
|
+
role = this.host.nativeElement.tagName === "FIELDSET" ? null : "radiogroup";
|
|
111
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
112
|
+
minVersion: "12.0.0",
|
|
113
|
+
version: "22.2.2",
|
|
114
|
+
ngImport: i0,
|
|
115
|
+
type: RaqmRadioGroupDirective,
|
|
116
|
+
deps: [],
|
|
117
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
118
|
+
});
|
|
119
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
120
|
+
minVersion: "14.0.0",
|
|
121
|
+
version: "22.2.2",
|
|
122
|
+
type: RaqmRadioGroupDirective,
|
|
123
|
+
isStandalone: true,
|
|
124
|
+
selector: "[raqm-radio-group]",
|
|
125
|
+
host: {
|
|
126
|
+
properties: { "attr.role": "role" },
|
|
127
|
+
classAttribute: "raqm-radio-group"
|
|
128
|
+
},
|
|
129
|
+
ngImport: i0
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
133
|
+
minVersion: "12.0.0",
|
|
134
|
+
version: "22.2.2",
|
|
135
|
+
ngImport: i0,
|
|
136
|
+
type: RaqmRadioGroupDirective,
|
|
137
|
+
decorators: [{
|
|
138
|
+
type: Directive,
|
|
139
|
+
args: [{
|
|
140
|
+
selector: "[raqm-radio-group]",
|
|
141
|
+
host: {
|
|
142
|
+
class: "raqm-radio-group",
|
|
143
|
+
"[attr.role]": "role"
|
|
144
|
+
}
|
|
145
|
+
}]
|
|
146
|
+
}]
|
|
147
|
+
});
|
|
148
|
+
const RaqmRadioGroup = [RaqmRadioGroupDirective, RaqmRadioDirective];
|
|
149
|
+
export { RaqmRadioDirective, RaqmRadioGroup, RaqmRadioGroupDirective };
|
|
150
|
+
|
|
151
|
+
//# sourceMappingURL=raqm-ui-radio-group.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raqm-ui-radio-group.mjs","names":[],"sources":["../../../projects/ui/radio-group/radio-group.ts","../../../projects/ui/radio-group/public-api.ts"],"sourcesContent":["import { Directive, ElementRef, effect, forwardRef, inject, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n/**\r\n * Attaches the `raqm-radio` class to a native `<input>` and sets `type=\"radio\"` when absent.\r\n *\r\n * @remarks\r\n * `(change)` emits the directive's `value`, so non-string bindings keep working as with Angular's\r\n * built-in radio accessor; native `name` grouping and `required` stay authoritative.\r\n */\r\n@Directive({\r\n selector: 'input[raqm-radio]',\r\n host: {\r\n class: 'raqm-radio',\r\n '(change)': 'handleChange()',\r\n '(blur)': 'handleBlur()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RaqmRadioDirective),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RaqmRadioDirective implements ControlValueAccessor {\r\n private readonly host = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n private onChange: (value: unknown) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n private model: unknown = undefined;\r\n private hasModel = false;\r\n private disabledStateFired = false;\r\n\r\n /** The value this radio contributes to the group; the native default is `on`. */\r\n readonly value = input<unknown>('on');\r\n\r\n constructor() {\r\n const element = this.host.nativeElement;\r\n if (!element.hasAttribute('type')) {\r\n element.setAttribute('type', 'radio');\r\n }\r\n // Mirrors Angular's radio accessor: a changed `value` re-applies the checked state immediately.\r\n effect(() => {\r\n const value = this.value();\r\n if (this.hasModel) {\r\n element.checked = this.model === value;\r\n }\r\n });\r\n }\r\n\r\n writeValue(value: unknown): void {\r\n this.model = value;\r\n this.hasModel = true;\r\n this.host.nativeElement.checked = value === this.value();\r\n }\r\n\r\n registerOnChange(fn: (value: unknown) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n // The first Forms pass always reports `false`; a static `disabled` attribute is only erased\r\n // once the control actually becomes disabled.\r\n if (this.disabledStateFired || isDisabled) {\r\n this.host.nativeElement.disabled = isDisabled;\r\n }\r\n this.disabledStateFired = true;\r\n }\r\n\r\n protected handleChange(): void {\r\n this.onChange(this.value());\r\n }\r\n\r\n protected handleBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n\r\n/**\r\n * Attaches `raqm-radio-group` and gives non-fieldset hosts `role=\"radiogroup\"`.\r\n *\r\n * @remarks\r\n * A `fieldset` keeps its native grouping and gets no role; grouping, focus and keyboard stay\r\n * browser-owned, and the accessible name is application-owned.\r\n */\r\n@Directive({\r\n selector: '[raqm-radio-group]',\r\n host: {\r\n class: 'raqm-radio-group',\r\n // A fieldset already carries native grouping semantics.\r\n '[attr.role]': 'role',\r\n },\r\n})\r\nexport class RaqmRadioGroupDirective {\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n // Read once from the host tag: a native fieldset needs no `role` imitation.\r\n protected readonly role = this.host.nativeElement.tagName === 'FIELDSET' ? null : 'radiogroup';\r\n}\r\n","// Public API for `@raqm/ui/radio-group`.\r\nimport { RaqmRadioDirective, RaqmRadioGroupDirective } from './radio-group';\r\n\r\nexport { RaqmRadioDirective, RaqmRadioGroupDirective };\r\n\r\n// The family imports as `imports: [RaqmRadioGroup]`.\r\nexport const RaqmRadioGroup = [RaqmRadioGroupDirective, RaqmRadioDirective] as const;\r\n"],"mappings":";;;AAyBA,IAAa,qBAAb,MAAa,mBAAkB;CACZ,OAAO,OAAqC,UAAU;CAC/D,iBAA0C,CAAE;CAC5C,kBAA6B,CAAE;CAC/B,QAAiB;CACjB,WAAW;CACX,qBAAqB;CAGpB,QAAQ,MAAe,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAErC,cAAA;EACE,MAAM,UAAU,KAAK,KAAK;EAC1B,IAAI,CAAC,QAAQ,aAAa,MAAM,GAC9B,QAAQ,aAAa,QAAQ,OAAO;EAGtC,aAAY;GACV,MAAM,QAAQ,KAAK,MAAK;GACxB,IAAI,KAAK,UACP,QAAQ,UAAU,KAAK,UAAU;EAErC,CAAC;CACH;CAEA,WAAW,OAAc;EACvB,KAAK,QAAQ;EACb,KAAK,WAAW;EAChB,KAAK,KAAK,cAAc,UAAU,UAAU,KAAK,MAAK;CACxD;CAEA,iBAAiB,IAA4B;EAC3C,KAAK,WAAW;CAClB;CAEA,kBAAkB,IAAc;EAC9B,KAAK,YAAY;CACnB;CAEA,iBAAiB,YAAmB;EAGlC,IAAI,KAAK,sBAAsB,YAC7B,KAAK,KAAK,cAAc,WAAW;EAErC,KAAK,qBAAqB;CAC5B;CAEU,eAAY;EACpB,KAAK,SAAS,KAAK,MAAK,CAAE;CAC5B;CAEU,aAAU;EAClB,KAAK,UAAS;CAChB;CAtDW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAkB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAlB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAkB,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,OAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,MAAA;GAAA,WAAA;IAAA,UAAA;IAAA,QAAA;GAAA;GAAA,gBAAA;EAAA;EAAA,WARlB,CACT;GACE,SAAS;GACT,aAAa,iBAAiB,kBAAkB;GAChD,OAAO;EACR,CACF;EAAA,UAAA;CAAA,CAAA;;AAEU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAkB,YAAA,CAAA;EAf9B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM;IACJ,OAAO;IACP,YAAY;IACZ,UAAU;GACX;GACD,WAAW,CACT;IACE,SAAS;IACT,aAAa,iBAAgB,kBAAmB;IAChD,OAAO;GACR,CACF;EACF,CAAA;;;;;;;;;;;;AAyED,IAAa,0BAAb,MAAa,wBAAuB;CACjB,OAAO,OAAgC,UAAU;CAG/C,OAAO,KAAK,KAAK,cAAc,YAAY,aAAa,OAAO;CAJvE,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAuB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAvB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAuB,cAAA;EAAA,UAAA;EAAA,MAAA;GAAA,YAAA,EAAA,aAAA,OAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;CAAA,CAAA;;AAAvB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAuB,YAAA,CAAA;EARnC,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM;IACJ,OAAO;IAEP,eAAe;GAChB;EACF,CAAA;;;AC1FD,MAAa,iBAAiB,CAAC,yBAAyB,kBAAkB"}
|