@raintonic/formaui 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +145 -0
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs +806 -0
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs +86 -0
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs +1757 -0
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs +287 -0
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-accordion.mjs +217 -0
- package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-alert.mjs +161 -0
- package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs +726 -0
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-avatar.mjs +92 -0
- package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-badge.mjs +107 -0
- package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-big-menu.mjs +68 -0
- package/fesm2022/raintonic-formaui-components-big-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs +55 -0
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-button-group.mjs +103 -0
- package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-button.mjs +241 -0
- package/fesm2022/raintonic-formaui-components-button.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-card.mjs +270 -0
- package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-checkbox.mjs +295 -0
- package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-data-table.mjs +631 -0
- package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-date-picker.mjs +1331 -0
- package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-divider.mjs +41 -0
- package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-drawer.mjs +190 -0
- package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-dynamic-form.mjs +266 -0
- package/fesm2022/raintonic-formaui-components-dynamic-form.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-empty-state.mjs +33 -0
- package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-file-upload.mjs +246 -0
- package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-form-field.mjs +482 -0
- package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-icon.mjs +117 -0
- package/fesm2022/raintonic-formaui-components-icon.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-input.mjs +327 -0
- package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-list.mjs +149 -0
- package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-menu.mjs +896 -0
- package/fesm2022/raintonic-formaui-components-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-number-input.mjs +345 -0
- package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-paginator.mjs +139 -0
- package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-password-input.mjs +306 -0
- package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-popover.mjs +451 -0
- package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-progressbar.mjs +148 -0
- package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-radio.mjs +260 -0
- package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-select.mjs +1011 -0
- package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-side-panel.mjs +150 -0
- package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-sidebar.mjs +257 -0
- package/fesm2022/raintonic-formaui-components-sidebar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-skeleton.mjs +50 -0
- package/fesm2022/raintonic-formaui-components-skeleton.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-slider.mjs +347 -0
- package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-spinner.mjs +63 -0
- package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-stepper.mjs +317 -0
- package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tab.mjs +197 -0
- package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tag.mjs +78 -0
- package/fesm2022/raintonic-formaui-components-tag.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-time-picker.mjs +644 -0
- package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-toggle.mjs +171 -0
- package/fesm2022/raintonic-formaui-components-toggle.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-toolbar.mjs +140 -0
- package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tooltip.mjs +555 -0
- package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree-select.mjs +314 -0
- package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree-table.mjs +103 -0
- package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree.mjs +430 -0
- package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-core.mjs +62 -0
- package/fesm2022/raintonic-formaui-core.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-dialog.mjs +798 -0
- package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-notification.mjs +391 -0
- package/fesm2022/raintonic-formaui-services-notification.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-theme.mjs +248 -0
- package/fesm2022/raintonic-formaui-services-theme.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-test-utils.mjs +66 -0
- package/fesm2022/raintonic-formaui-test-utils.mjs.map +1 -0
- package/fesm2022/raintonic-formaui.mjs +15 -0
- package/fesm2022/raintonic-formaui.mjs.map +1 -0
- package/llms-full.txt +1627 -0
- package/llms.txt +60 -0
- package/package.json +251 -0
- package/styles/_fonts-entry.scss +3 -0
- package/styles/fonts/dm-mono-400-latin.woff2 +0 -0
- package/styles/fonts/inter-tight-latin-italic.woff2 +0 -0
- package/styles/fonts/inter-tight-latin.woff2 +0 -0
- package/styles/index.scss +127 -0
- package/styles/partials/_constants.scss +29 -0
- package/styles/partials/_fonts.scss +36 -0
- package/styles/partials/_grid.scss +171 -0
- package/styles/partials/_mixins.scss +145 -0
- package/styles/partials/_motion.scss +252 -0
- package/styles/partials/_theme.scss +275 -0
- package/styles/partials/_typography.scss +112 -0
- package/styles/partials/_utilities.scss +480 -0
- package/styles/partials/themes/_dark.scss +254 -0
- package/styles/partials/themes/_light.scss +254 -0
- package/types/raintonic-formaui-cdk-drag-drop.d.ts +196 -0
- package/types/raintonic-formaui-cdk-drag-drop.d.ts.map +1 -0
- package/types/raintonic-formaui-cdk-form-field.d.ts +62 -0
- package/types/raintonic-formaui-cdk-form-field.d.ts.map +1 -0
- package/types/raintonic-formaui-cdk-overlay.d.ts +843 -0
- package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -0
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts +112 -0
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts.map +1 -0
- package/types/raintonic-formaui-components-accordion.d.ts +124 -0
- package/types/raintonic-formaui-components-accordion.d.ts.map +1 -0
- package/types/raintonic-formaui-components-alert.d.ts +143 -0
- package/types/raintonic-formaui-components-alert.d.ts.map +1 -0
- package/types/raintonic-formaui-components-autocomplete.d.ts +193 -0
- package/types/raintonic-formaui-components-autocomplete.d.ts.map +1 -0
- package/types/raintonic-formaui-components-avatar.d.ts +52 -0
- package/types/raintonic-formaui-components-avatar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-badge.d.ts +47 -0
- package/types/raintonic-formaui-components-badge.d.ts.map +1 -0
- package/types/raintonic-formaui-components-big-menu.d.ts +62 -0
- package/types/raintonic-formaui-components-big-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-breadcrumb.d.ts +26 -0
- package/types/raintonic-formaui-components-breadcrumb.d.ts.map +1 -0
- package/types/raintonic-formaui-components-button-group.d.ts +61 -0
- package/types/raintonic-formaui-components-button-group.d.ts.map +1 -0
- package/types/raintonic-formaui-components-button.d.ts +116 -0
- package/types/raintonic-formaui-components-button.d.ts.map +1 -0
- package/types/raintonic-formaui-components-card.d.ts +191 -0
- package/types/raintonic-formaui-components-card.d.ts.map +1 -0
- package/types/raintonic-formaui-components-checkbox.d.ts +132 -0
- package/types/raintonic-formaui-components-checkbox.d.ts.map +1 -0
- package/types/raintonic-formaui-components-data-table.d.ts +368 -0
- package/types/raintonic-formaui-components-data-table.d.ts.map +1 -0
- package/types/raintonic-formaui-components-date-picker.d.ts +341 -0
- package/types/raintonic-formaui-components-date-picker.d.ts.map +1 -0
- package/types/raintonic-formaui-components-divider.d.ts +21 -0
- package/types/raintonic-formaui-components-divider.d.ts.map +1 -0
- package/types/raintonic-formaui-components-drawer.d.ts +48 -0
- package/types/raintonic-formaui-components-drawer.d.ts.map +1 -0
- package/types/raintonic-formaui-components-dynamic-form.d.ts +412 -0
- package/types/raintonic-formaui-components-dynamic-form.d.ts.map +1 -0
- package/types/raintonic-formaui-components-empty-state.d.ts +14 -0
- package/types/raintonic-formaui-components-empty-state.d.ts.map +1 -0
- package/types/raintonic-formaui-components-file-upload.d.ts +77 -0
- package/types/raintonic-formaui-components-file-upload.d.ts.map +1 -0
- package/types/raintonic-formaui-components-form-field.d.ts +271 -0
- package/types/raintonic-formaui-components-form-field.d.ts.map +1 -0
- package/types/raintonic-formaui-components-icon.d.ts +61 -0
- package/types/raintonic-formaui-components-icon.d.ts.map +1 -0
- package/types/raintonic-formaui-components-input.d.ts +149 -0
- package/types/raintonic-formaui-components-input.d.ts.map +1 -0
- package/types/raintonic-formaui-components-list.d.ts +48 -0
- package/types/raintonic-formaui-components-list.d.ts.map +1 -0
- package/types/raintonic-formaui-components-menu.d.ts +403 -0
- package/types/raintonic-formaui-components-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-number-input.d.ts +127 -0
- package/types/raintonic-formaui-components-number-input.d.ts.map +1 -0
- package/types/raintonic-formaui-components-paginator.d.ts +37 -0
- package/types/raintonic-formaui-components-paginator.d.ts.map +1 -0
- package/types/raintonic-formaui-components-password-input.d.ts +111 -0
- package/types/raintonic-formaui-components-password-input.d.ts.map +1 -0
- package/types/raintonic-formaui-components-popover.d.ts +131 -0
- package/types/raintonic-formaui-components-popover.d.ts.map +1 -0
- package/types/raintonic-formaui-components-progressbar.d.ts +111 -0
- package/types/raintonic-formaui-components-progressbar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-radio.d.ts +95 -0
- package/types/raintonic-formaui-components-radio.d.ts.map +1 -0
- package/types/raintonic-formaui-components-select.d.ts +307 -0
- package/types/raintonic-formaui-components-select.d.ts.map +1 -0
- package/types/raintonic-formaui-components-side-panel.d.ts +51 -0
- package/types/raintonic-formaui-components-side-panel.d.ts.map +1 -0
- package/types/raintonic-formaui-components-sidebar.d.ts +174 -0
- package/types/raintonic-formaui-components-sidebar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-skeleton.d.ts +20 -0
- package/types/raintonic-formaui-components-skeleton.d.ts.map +1 -0
- package/types/raintonic-formaui-components-slider.d.ts +108 -0
- package/types/raintonic-formaui-components-slider.d.ts.map +1 -0
- package/types/raintonic-formaui-components-spinner.d.ts +42 -0
- package/types/raintonic-formaui-components-spinner.d.ts.map +1 -0
- package/types/raintonic-formaui-components-stepper.d.ts +126 -0
- package/types/raintonic-formaui-components-stepper.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tab.d.ts +96 -0
- package/types/raintonic-formaui-components-tab.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tag.d.ts +34 -0
- package/types/raintonic-formaui-components-tag.d.ts.map +1 -0
- package/types/raintonic-formaui-components-time-picker.d.ts +172 -0
- package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -0
- package/types/raintonic-formaui-components-toggle.d.ts +70 -0
- package/types/raintonic-formaui-components-toggle.d.ts.map +1 -0
- package/types/raintonic-formaui-components-toolbar.d.ts +128 -0
- package/types/raintonic-formaui-components-toolbar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tooltip.d.ts +268 -0
- package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree-select.d.ts +80 -0
- package/types/raintonic-formaui-components-tree-select.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree-table.d.ts +90 -0
- package/types/raintonic-formaui-components-tree-table.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree.d.ts +104 -0
- package/types/raintonic-formaui-components-tree.d.ts.map +1 -0
- package/types/raintonic-formaui-core.d.ts +115 -0
- package/types/raintonic-formaui-core.d.ts.map +1 -0
- package/types/raintonic-formaui-services-dialog.d.ts +451 -0
- package/types/raintonic-formaui-services-dialog.d.ts.map +1 -0
- package/types/raintonic-formaui-services-notification.d.ts +221 -0
- package/types/raintonic-formaui-services-notification.d.ts.map +1 -0
- package/types/raintonic-formaui-services-theme.d.ts +126 -0
- package/types/raintonic-formaui-services-theme.d.ts.map +1 -0
- package/types/raintonic-formaui-test-utils.d.ts +24 -0
- package/types/raintonic-formaui-test-utils.d.ts.map +1 -0
- package/types/raintonic-formaui.d.ts +4 -0
- package/types/raintonic-formaui.d.ts.map +1 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { OnDestroy, WritableSignal, Signal, ElementRef } from '@angular/core';
|
|
3
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
4
|
+
|
|
5
|
+
type SliderValue = number | [number, number];
|
|
6
|
+
interface SliderChange {
|
|
7
|
+
source: unknown;
|
|
8
|
+
value: SliderValue;
|
|
9
|
+
}
|
|
10
|
+
type SliderFormatLabelFn = (value: number) => string;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* # FuiSliderComponent
|
|
14
|
+
*
|
|
15
|
+
* A slider (range input) component with single and dual-thumb (range) support.
|
|
16
|
+
* Integrates with Angular Reactive Forms via ControlValueAccessor.
|
|
17
|
+
*
|
|
18
|
+
* ## Features
|
|
19
|
+
* - Single value and range (dual-thumb) modes
|
|
20
|
+
* - Configurable min/max/step
|
|
21
|
+
* - Optional tick marks and tooltips
|
|
22
|
+
* - Custom label formatting
|
|
23
|
+
* - Keyboard navigation (Arrow keys, Home, End, PageUp/Down)
|
|
24
|
+
* - Drag and click-to-move interaction
|
|
25
|
+
* - Full accessibility (ARIA slider role)
|
|
26
|
+
*
|
|
27
|
+
* ## Usage
|
|
28
|
+
*
|
|
29
|
+
* ### Basic Slider
|
|
30
|
+
* ```html
|
|
31
|
+
* <fui-slider [formControl]="volumeControl"></fui-slider>
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* ### Range Slider
|
|
35
|
+
* ```html
|
|
36
|
+
* <fui-slider [range]="true" [formControl]="priceRange"></fui-slider>
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* ### With Ticks and Custom Label
|
|
40
|
+
* ```html
|
|
41
|
+
* <fui-slider [showTicks]="true" [formatLabel]="formatCurrency" [min]="0" [max]="1000" [step]="100"></fui-slider>
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
declare class FuiSliderComponent implements ControlValueAccessor, OnDestroy {
|
|
45
|
+
private readonly _document;
|
|
46
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
47
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
48
|
+
readonly step: _angular_core.InputSignal<number>;
|
|
49
|
+
readonly range: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
50
|
+
readonly showTicks: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
51
|
+
readonly showTooltip: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
52
|
+
readonly formatLabel: _angular_core.InputSignal<SliderFormatLabelFn>;
|
|
53
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
54
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
55
|
+
readonly ariaLabelLow: _angular_core.InputSignal<string | null>;
|
|
56
|
+
readonly ariaLabelHigh: _angular_core.InputSignal<string | null>;
|
|
57
|
+
readonly valueChange: _angular_core.OutputEmitterRef<SliderValue>;
|
|
58
|
+
readonly dragStart: _angular_core.OutputEmitterRef<void>;
|
|
59
|
+
readonly dragEnd: _angular_core.OutputEmitterRef<void>;
|
|
60
|
+
readonly _value: WritableSignal<number>;
|
|
61
|
+
readonly _valueLow: WritableSignal<number>;
|
|
62
|
+
readonly _valueHigh: WritableSignal<number>;
|
|
63
|
+
readonly _dragging: WritableSignal<'low' | 'high' | null>;
|
|
64
|
+
readonly _hovered: WritableSignal<'low' | 'high' | null>;
|
|
65
|
+
readonly _sliderContainer: Signal<ElementRef<HTMLElement> | undefined>;
|
|
66
|
+
readonly _percentage: Signal<number>;
|
|
67
|
+
readonly _percentageLow: Signal<number>;
|
|
68
|
+
readonly _percentageHigh: Signal<number>;
|
|
69
|
+
readonly _tickValues: Signal<number[]>;
|
|
70
|
+
private _onChange;
|
|
71
|
+
private _onTouched;
|
|
72
|
+
private _boundOnMouseMove;
|
|
73
|
+
private _boundOnMouseUp;
|
|
74
|
+
private _boundOnTouchMove;
|
|
75
|
+
private _boundOnTouchEnd;
|
|
76
|
+
writeValue(value: SliderValue): void;
|
|
77
|
+
registerOnChange(fn: (value: SliderValue) => void): void;
|
|
78
|
+
registerOnTouched(fn: () => void): void;
|
|
79
|
+
setDisabledState(_isDisabled: boolean): void;
|
|
80
|
+
ngOnDestroy(): void;
|
|
81
|
+
_valueToPercent(value: number): number;
|
|
82
|
+
_isTickActive(tick: number): boolean;
|
|
83
|
+
_snapToStep(value: number): number;
|
|
84
|
+
_clamp(value: number, min: number, max: number): number;
|
|
85
|
+
_onTrackClick(event: MouseEvent): void;
|
|
86
|
+
_onThumbMouseDown(event: MouseEvent, thumb: 'low' | 'high'): void;
|
|
87
|
+
_onThumbTouchStart(event: TouchEvent, thumb: 'low' | 'high'): void;
|
|
88
|
+
_onThumbKeydown(event: KeyboardEvent, thumb: 'low' | 'high'): void;
|
|
89
|
+
private _onMouseMove;
|
|
90
|
+
private _onMouseUp;
|
|
91
|
+
private _onTouchMove;
|
|
92
|
+
private _onTouchEnd;
|
|
93
|
+
private _endDrag;
|
|
94
|
+
private _removeDocumentListeners;
|
|
95
|
+
private _getValueFromEvent;
|
|
96
|
+
private _getValueFromClientX;
|
|
97
|
+
private _updateDraggingThumb;
|
|
98
|
+
private _getThumbValue;
|
|
99
|
+
private _setThumbValue;
|
|
100
|
+
private _setNearestThumb;
|
|
101
|
+
private _emitChange;
|
|
102
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiSliderComponent, never>;
|
|
103
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiSliderComponent, "fui-slider", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "range": { "alias": "range"; "required": false; "isSignal": true; }; "showTicks": { "alias": "showTicks"; "required": false; "isSignal": true; }; "showTooltip": { "alias": "showTooltip"; "required": false; "isSignal": true; }; "formatLabel": { "alias": "formatLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelLow": { "alias": "ariaLabelLow"; "required": false; "isSignal": true; }; "ariaLabelHigh": { "alias": "ariaLabelHigh"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "dragStart": "dragStart"; "dragEnd": "dragEnd"; }, never, never, true, never>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export { FuiSliderComponent };
|
|
107
|
+
export type { SliderChange, SliderFormatLabelFn, SliderValue };
|
|
108
|
+
//# sourceMappingURL=raintonic-formaui-components-slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-slider.d.ts","sources":["../../../lib/components/slider/slider.types.ts","../../../lib/components/slider/slider.component.ts"],"mappings":";;;;AAAM,KAAM,WAAW;UAEN,YAAY;;WAEpB,WAAW;AACnB;AAEK,KAAM,mBAAmB;;ACa/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AACH,cAsBa,kBAAmB,YAAW,oBAAoB,EAAE,SAAS;AACxE;kBAGY,aAAA,CAAA,WAAA;kBACA,aAAA,CAAA,WAAA;mBACC,aAAA,CAAA,WAAA;oBACC,aAAA,CAAA,wBAAA;wBACI,aAAA,CAAA,wBAAA;0BACE,aAAA,CAAA,wBAAA;0BACA,aAAA,CAAA,WAAA,CAAA,mBAAA;uBACH,aAAA,CAAA,wBAAA;wBACC,aAAA,CAAA,WAAA;2BACG,aAAA,CAAA,WAAA;4BACC,aAAA,CAAA,WAAA;0BAGF,aAAA,CAAA,gBAAA,CAAA,WAAA;wBACF,aAAA,CAAA,gBAAA;sBACF,aAAA,CAAA,gBAAA;AAGhB,qBAAiB,cAAc;AAC/B,wBAAoB,cAAc;AAClC,yBAAqB,cAAc;wBACf,cAAc;uBACf,cAAc;AAGjC,+BAA2B,MAAM,CAAC,UAAU,CAAC,WAAW;AAIxD,0BAAsB,MAAM;AAE5B,6BAAyB,MAAM;AAE/B,8BAA0B,MAAM;0BAGV,MAAM;;;;;;;AA8B5B,sBAAkB,WAAW;iCAWA,WAAW;AAIxC;AAIA;AAIA;AAMA;AAOA;AAOA;AAQA;AAMA,yBAAqB,UAAU;6BAcN,UAAU;8BAYT,UAAU;2BAYb,aAAa;AA6CpC;AAMA;AAMA;AASA;AAMA;AAQA;AAOA;AAIA;AAUA;AAOA;AAOA;AAcA;AAcA;oDApTW,kBAAkB;sDAAlB,kBAAkB;AAyT9B;;;;","names":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
type FuiSpinnerMode = 'indeterminate' | 'determinate';
|
|
4
|
+
type FuiSpinnerSize = 'sm' | 'md' | 'lg';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @component FuiSpinnerComponent
|
|
8
|
+
* @selector fui-spinner
|
|
9
|
+
* @description A circular loading spinner with determinate and indeterminate modes.
|
|
10
|
+
* Supports an overlay mode that covers its parent container.
|
|
11
|
+
*
|
|
12
|
+
* @input mode - Spinner mode: 'determinate' | 'indeterminate'. Default 'indeterminate'.
|
|
13
|
+
* @input value - Progress value (0-100) for determinate mode. Default 0.
|
|
14
|
+
* @input size - Spinner size: 'sm' | 'md' | 'lg'. Default 'md'.
|
|
15
|
+
* @input color - Optional custom CSS color for the spinner stroke.
|
|
16
|
+
* @input overlay - Whether to render as a full-area overlay. Default false.
|
|
17
|
+
* @input ariaLabel - Accessible label. Default 'Loading'.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <fui-spinner></fui-spinner>
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* <fui-spinner mode="determinate" [value]="progress" size="lg"></fui-spinner>
|
|
24
|
+
*/
|
|
25
|
+
declare class FuiSpinnerComponent {
|
|
26
|
+
readonly mode: _angular_core.InputSignal<FuiSpinnerMode>;
|
|
27
|
+
readonly value: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
28
|
+
readonly size: _angular_core.InputSignal<FuiSpinnerSize>;
|
|
29
|
+
readonly color: _angular_core.InputSignal<string | null>;
|
|
30
|
+
readonly overlay: _angular_core.InputSignal<boolean>;
|
|
31
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
32
|
+
private readonly RADIUS;
|
|
33
|
+
readonly circumference: number;
|
|
34
|
+
readonly clampedValue: _angular_core.Signal<number>;
|
|
35
|
+
readonly strokeDashoffset: _angular_core.Signal<number>;
|
|
36
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiSpinnerComponent, never>;
|
|
37
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiSpinnerComponent, "fui-spinner", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "overlay": { "alias": "overlay"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { FuiSpinnerComponent };
|
|
41
|
+
export type { FuiSpinnerMode, FuiSpinnerSize };
|
|
42
|
+
//# sourceMappingURL=raintonic-formaui-components-spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-spinner.d.ts","sources":["../../../lib/components/spinner/spinner.types.ts","../../../lib/components/spinner/spinner.component.ts"],"mappings":";;KAAY,cAAc;AACpB,KAAM,cAAc;;ACE1B;;;;;;;;;;;;;;;;;;AAkBG;AACH,cAwBa,mBAAmB;mBACjB,aAAA,CAAA,WAAA,CAAA,cAAA;oBACC,aAAA,CAAA,wBAAA;mBACD,aAAA,CAAA,WAAA,CAAA,cAAA;oBACC,aAAA,CAAA,WAAA;sBACE,aAAA,CAAA,WAAA;wBACE,aAAA,CAAA,WAAA;AAElB;;2BAGqB,aAAA,CAAA,MAAA;+BACI,aAAA,CAAA,MAAA;oDAZd,mBAAmB;sDAAnB,mBAAmB;AAe/B;;;;","names":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken, WritableSignal, Signal, TemplateRef } from '@angular/core';
|
|
3
|
+
import { AbstractControl } from '@angular/forms';
|
|
4
|
+
|
|
5
|
+
type StepperOrientation = 'horizontal' | 'vertical';
|
|
6
|
+
type StepState = 'active' | 'completed' | 'error' | 'disabled' | 'default';
|
|
7
|
+
interface StepSelectionChange {
|
|
8
|
+
selectedIndex: number;
|
|
9
|
+
previousIndex: number;
|
|
10
|
+
selectedStep: unknown;
|
|
11
|
+
previousStep: unknown;
|
|
12
|
+
}
|
|
13
|
+
declare const FORMAUI_STEPPER: InjectionToken<unknown>;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* # FuiStepComponent
|
|
17
|
+
*
|
|
18
|
+
* Represents a single step within an `fui-stepper`.
|
|
19
|
+
* Each step has a label, optional description/icon, and content that is lazily rendered.
|
|
20
|
+
*
|
|
21
|
+
* ## Usage
|
|
22
|
+
*
|
|
23
|
+
* ```html
|
|
24
|
+
* <fui-stepper>
|
|
25
|
+
* <fui-step label="Account" description="Create your account">
|
|
26
|
+
* <p>Account creation form here...</p>
|
|
27
|
+
* </fui-step>
|
|
28
|
+
* <fui-step label="Profile" icon="user">
|
|
29
|
+
* <p>Profile setup here...</p>
|
|
30
|
+
* </fui-step>
|
|
31
|
+
* </fui-stepper>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
declare class FuiStepComponent {
|
|
35
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
36
|
+
readonly description: _angular_core.InputSignal<string>;
|
|
37
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
38
|
+
readonly completed: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
39
|
+
readonly editable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
40
|
+
readonly errorMessage: _angular_core.InputSignal<string>;
|
|
41
|
+
readonly stepControl: _angular_core.InputSignal<AbstractControl<any, any, any> | null>;
|
|
42
|
+
readonly optional: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
43
|
+
readonly _interacted: WritableSignal<boolean>;
|
|
44
|
+
readonly contentTemplate: Signal<TemplateRef<unknown> | undefined>;
|
|
45
|
+
readonly hasError: Signal<boolean>;
|
|
46
|
+
readonly state: Signal<StepState>;
|
|
47
|
+
/** Mark this step as interacted and select it via the parent stepper. */
|
|
48
|
+
select(): void;
|
|
49
|
+
/** Reset the step to its initial state. */
|
|
50
|
+
reset(): void;
|
|
51
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiStepComponent, never>;
|
|
52
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiStepComponent, "fui-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "completed": { "alias": "completed"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "stepControl": { "alias": "stepControl"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* # FuiStepperComponent
|
|
57
|
+
*
|
|
58
|
+
* A stepper component that guides users through a sequence of steps.
|
|
59
|
+
* Supports horizontal and vertical orientations, linear and non-linear navigation,
|
|
60
|
+
* step validation, and lazy content rendering.
|
|
61
|
+
*
|
|
62
|
+
* ## Usage
|
|
63
|
+
*
|
|
64
|
+
* ### Basic horizontal stepper
|
|
65
|
+
* ```html
|
|
66
|
+
* <fui-stepper>
|
|
67
|
+
* <fui-step label="Step 1">Content 1</fui-step>
|
|
68
|
+
* <fui-step label="Step 2">Content 2</fui-step>
|
|
69
|
+
* <fui-step label="Step 3">Content 3</fui-step>
|
|
70
|
+
* </fui-stepper>
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* ### Vertical stepper
|
|
74
|
+
* ```html
|
|
75
|
+
* <fui-stepper orientation="vertical">
|
|
76
|
+
* <fui-step label="Step 1">Content 1</fui-step>
|
|
77
|
+
* <fui-step label="Step 2">Content 2</fui-step>
|
|
78
|
+
* </fui-stepper>
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* ### Linear stepper with form validation
|
|
82
|
+
* ```html
|
|
83
|
+
* <fui-stepper [linear]="true">
|
|
84
|
+
* <fui-step label="Account" [stepControl]="accountForm">
|
|
85
|
+
* <form [formGroup]="accountForm">...</form>
|
|
86
|
+
* </fui-step>
|
|
87
|
+
* <fui-step label="Address" [stepControl]="addressForm">
|
|
88
|
+
* <form [formGroup]="addressForm">...</form>
|
|
89
|
+
* </fui-step>
|
|
90
|
+
* </fui-stepper>
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
declare class FuiStepperComponent {
|
|
94
|
+
readonly orientation: _angular_core.InputSignal<StepperOrientation>;
|
|
95
|
+
readonly linear: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
96
|
+
readonly selectedIndex: _angular_core.InputSignal<number>;
|
|
97
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<StepSelectionChange>;
|
|
98
|
+
readonly animationDone: _angular_core.OutputEmitterRef<void>;
|
|
99
|
+
readonly steps: _angular_core.Signal<readonly FuiStepComponent[]>;
|
|
100
|
+
readonly _selectedIndex: WritableSignal<number>;
|
|
101
|
+
readonly _uniqueId: number;
|
|
102
|
+
readonly _selectedStep: _angular_core.Signal<FuiStepComponent>;
|
|
103
|
+
constructor();
|
|
104
|
+
/** Navigate to the next step. In linear mode, validates the current step first. */
|
|
105
|
+
next(): void;
|
|
106
|
+
/** Navigate to the previous step. */
|
|
107
|
+
previous(): void;
|
|
108
|
+
/** Navigate directly to a specific step by index. */
|
|
109
|
+
goToStep(index: number): void;
|
|
110
|
+
/** Reset all steps and return to the first step. */
|
|
111
|
+
reset(): void;
|
|
112
|
+
/** @internal Handle step header click */
|
|
113
|
+
_onStepHeaderClick(index: number): void;
|
|
114
|
+
/** @internal Check if a step is disabled for navigation */
|
|
115
|
+
_isStepDisabled(index: number): boolean;
|
|
116
|
+
/** @internal Handle keyboard navigation on step headers */
|
|
117
|
+
_onHeaderKeydown(event: KeyboardEvent, currentIndex: number): void;
|
|
118
|
+
/** @internal Set the selected index and emit selection change */
|
|
119
|
+
private _setSelectedIndex;
|
|
120
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiStepperComponent, never>;
|
|
121
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiStepperComponent, "fui-stepper", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "animationDone": "animationDone"; }, ["steps"], never, true, never>;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export { FORMAUI_STEPPER, FuiStepComponent, FuiStepperComponent };
|
|
125
|
+
export type { StepSelectionChange, StepState, StepperOrientation };
|
|
126
|
+
//# sourceMappingURL=raintonic-formaui-components-stepper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-stepper.d.ts","sources":["../../../lib/components/stepper/stepper.types.ts","../../../lib/components/stepper/step.component.ts","../../../lib/components/stepper/stepper.component.ts"],"mappings":";;;;KAEY,kBAAkB;AACxB,KAAM,SAAS;UAEJ,mBAAmB;;;;;AAKnC;AAED,cAAa,eAAe,EAAA,cAAA;;ACI5B;;;;;;;;;;;;;;;;;;AAkBG;AACH,cAOa,gBAAgB;oBAEb,aAAA,CAAA,WAAA;0BACM,aAAA,CAAA,WAAA;mBACP,aAAA,CAAA,WAAA;wBACK,aAAA,CAAA,wBAAA;uBACD,aAAA,CAAA,wBAAA;2BACI,aAAA,CAAA,WAAA;0BACD,aAAA,CAAA,WAAA,CAAA,eAAA;uBACH,aAAA,CAAA,wBAAA;AAGjB,0BAAsB,cAAc;AAGpC,8BAA0B,MAAM,CAAC,WAAW;AAG5C,uBAAmB,MAAM;AASzB,oBAAgB,MAAM,CAAC,SAAS;;AAWhC;;AAKA;oDA3CW,gBAAgB;sDAAhB,gBAAgB;AAkD5B;;ACxED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;AACH,cAgBa,mBAAmB;0BAEV,aAAA,CAAA,WAAA,CAAA,kBAAA;qBACL,aAAA,CAAA,wBAAA;4BACO,aAAA,CAAA,WAAA;8BAGE,aAAA,CAAA,gBAAA,CAAA,mBAAA;4BACF,aAAA,CAAA,gBAAA;oBAGR,aAAA,CAAA,MAAA,UAAA,gBAAA;AAGd,6BAAyB,cAAc;;4BAMjB,aAAA,CAAA,MAAA,CAAA,gBAAA;;;AAetB;;AAuBA;;AAQA;;AAwBA;;AAQA;;AAKA;;4BA+BwB,aAAa;;AA8CrC;oDApLW,mBAAmB;sDAAnB,mBAAmB;AA6M/B;;;;","names":[]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InputSignal, TemplateRef, AfterContentInit, ModelSignal, OutputEmitterRef, QueryList, ElementRef, WritableSignal } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @component FuiTabComponent
|
|
6
|
+
* @selector fui-tab
|
|
7
|
+
* @description Individual tab definition used inside `fui-tab-group`. Provides a label
|
|
8
|
+
* for the tab header and wraps its content in an `ng-template` for lazy rendering.
|
|
9
|
+
*
|
|
10
|
+
* @input label - (required) Text displayed in the tab header button
|
|
11
|
+
* @input disabled - Whether the tab is disabled and cannot be selected (default: false)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* <fui-tab label="Settings" [disabled]="!canEdit">
|
|
15
|
+
* <p>Settings panel content here.</p>
|
|
16
|
+
* </fui-tab>
|
|
17
|
+
*/
|
|
18
|
+
declare class FuiTabComponent {
|
|
19
|
+
/**
|
|
20
|
+
* The label for the tab
|
|
21
|
+
*/
|
|
22
|
+
readonly label: InputSignal<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Whether the tab is disabled
|
|
25
|
+
*/
|
|
26
|
+
readonly disabled: InputSignal<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Template reference for the tab content
|
|
29
|
+
*/
|
|
30
|
+
content: TemplateRef<unknown>;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FuiTabComponent, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FuiTabComponent, "fui-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @component FuiTabGroupComponent
|
|
37
|
+
* @selector fui-tab-group
|
|
38
|
+
* @description Container for `fui-tab` components. Manages tab selection, keyboard navigation
|
|
39
|
+
* (ArrowLeft/Right, Home, End, Enter, Space), and roving tabindex for accessibility.
|
|
40
|
+
* Uses content projection to collect tab definitions and renders their content lazily.
|
|
41
|
+
*
|
|
42
|
+
* @input selectedIndex - Two-way model signal for the active tab index (default: 0)
|
|
43
|
+
*
|
|
44
|
+
* @output selectedTabChange - Emits the FuiTabComponent instance when a new tab is selected
|
|
45
|
+
*
|
|
46
|
+
* @cssvar --fui-tab-label-font-size - Font size of tab labels
|
|
47
|
+
* @cssvar --fui-tab-label-min-height - Minimum height of tab header buttons
|
|
48
|
+
* @cssvar --fui-tab-label-padding-x - Horizontal padding of tab labels
|
|
49
|
+
* @cssvar --fui-tab-label-padding-y - Vertical padding of tab labels
|
|
50
|
+
* @cssvar --fui-tab-panel-padding - Padding of the tab content panel
|
|
51
|
+
* @cssvar --fui-tab-indicator-height - Height of the active-tab underline indicator
|
|
52
|
+
* @cssvar --fui-tab-active-color - Color of the active tab label and indicator
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* <fui-tab-group [(selectedIndex)]="activeTab">
|
|
56
|
+
* <fui-tab label="Overview">Overview content</fui-tab>
|
|
57
|
+
* <fui-tab label="Details">Details content</fui-tab>
|
|
58
|
+
* <fui-tab label="History" [disabled]="true">History content</fui-tab>
|
|
59
|
+
* </fui-tab-group>
|
|
60
|
+
*/
|
|
61
|
+
declare class FuiTabGroupComponent implements AfterContentInit {
|
|
62
|
+
/** Unique ID prefix for this tab group instance to avoid collisions */
|
|
63
|
+
readonly tabGroupId: string;
|
|
64
|
+
/**
|
|
65
|
+
* The index of the selected tab
|
|
66
|
+
*/
|
|
67
|
+
readonly selectedIndex: ModelSignal<number>;
|
|
68
|
+
/**
|
|
69
|
+
* Event emitted when a tab is selected
|
|
70
|
+
*/
|
|
71
|
+
readonly selectedTabChange: OutputEmitterRef<FuiTabComponent>;
|
|
72
|
+
/**
|
|
73
|
+
* Query for all tab components
|
|
74
|
+
*/
|
|
75
|
+
tabComponents: QueryList<FuiTabComponent>;
|
|
76
|
+
/**
|
|
77
|
+
* Query for tab header buttons for focus management
|
|
78
|
+
*/
|
|
79
|
+
tabButtons: QueryList<ElementRef<HTMLButtonElement>>;
|
|
80
|
+
/**
|
|
81
|
+
* Signal containing all tabs
|
|
82
|
+
*/
|
|
83
|
+
readonly tabs: WritableSignal<FuiTabComponent[]>;
|
|
84
|
+
constructor();
|
|
85
|
+
ngAfterContentInit(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Select a tab by index
|
|
88
|
+
*/
|
|
89
|
+
selectTab(index: number): void;
|
|
90
|
+
onKeydown(event: KeyboardEvent, index: number): void;
|
|
91
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FuiTabGroupComponent, never>;
|
|
92
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FuiTabGroupComponent, "fui-tab-group", never, { "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; }, { "selectedIndex": "selectedIndexChange"; "selectedTabChange": "selectedTabChange"; }, ["tabComponents"], never, true, never>;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { FuiTabComponent, FuiTabGroupComponent };
|
|
96
|
+
//# sourceMappingURL=raintonic-formaui-components-tab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-tab.d.ts","sources":["../../../lib/components/tab/tab.component.ts","../../../lib/components/tab/tab-group.component.ts"],"mappings":";;;AAEA;;;;;;;;;;;;;AAaG;AACH,cASa,eAAe;AAC1B;;AAEG;AACH,oBAAgB,WAAW;AAE3B;;AAEG;AACH,uBAAmB,WAAW;AAE9B;;AAEG;AACuC,aAAU,WAAW;yCAdpD,eAAe;2CAAf,eAAe;AAe3B;;AClBD;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACH,cAYa,oBAAqB,YAAW,gBAAgB;;;AAI3D;;AAEG;AACH,4BAAwB,WAAW;AAEnC;;AAEG;AACH,gCAA4B,gBAAgB,CAAC,eAAe;AAE5D;;AAEG;AAC+B,mBAAgB,SAAS,CAAC,eAAe;AAE3E;;AAEG;gBACqC,SAAS,CAAC,UAAU,CAAC,iBAAiB;AAE9E;;AAEG;mBACY,cAAc,CAAC,eAAe;;AAiB7C;AASA;;AAEG;AACH;qBAQiB,aAAa;yCAhEnB,oBAAoB;2CAApB,oBAAoB;AAoGhC;;;;","names":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
type FuiTagVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info';
|
|
4
|
+
type FuiTagSize = 'sm' | 'md';
|
|
5
|
+
declare const FUI_TAG_VARIANTS: readonly FuiTagVariant[];
|
|
6
|
+
declare const FUI_TAG_SIZES: readonly FuiTagSize[];
|
|
7
|
+
interface FuiTagRemoveEvent {
|
|
8
|
+
tag: unknown;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare class FuiTagComponent {
|
|
12
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
13
|
+
readonly variant: _angular_core.InputSignalWithTransform<FuiTagVariant, string>;
|
|
14
|
+
readonly size: _angular_core.InputSignal<FuiTagSize>;
|
|
15
|
+
readonly icon: _angular_core.InputSignal<string | null>;
|
|
16
|
+
readonly removable: _angular_core.InputSignal<boolean>;
|
|
17
|
+
readonly selectable: _angular_core.InputSignal<boolean>;
|
|
18
|
+
readonly selected: _angular_core.InputSignal<boolean>;
|
|
19
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
20
|
+
readonly removed: _angular_core.OutputEmitterRef<FuiTagRemoveEvent>;
|
|
21
|
+
readonly selectedChange: _angular_core.OutputEmitterRef<boolean>;
|
|
22
|
+
readonly _selected: _angular_core.WritableSignal<boolean>;
|
|
23
|
+
readonly computedClasses: _angular_core.Signal<string>;
|
|
24
|
+
constructor();
|
|
25
|
+
onClick(): void;
|
|
26
|
+
onSpace(event: Event): void;
|
|
27
|
+
onRemove(event: Event): void;
|
|
28
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiTagComponent, never>;
|
|
29
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiTagComponent, "fui-tag", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "removed": "removed"; "selectedChange": "selectedChange"; }, never, never, true, never>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { FUI_TAG_SIZES, FUI_TAG_VARIANTS, FuiTagComponent };
|
|
33
|
+
export type { FuiTagRemoveEvent, FuiTagSize, FuiTagVariant };
|
|
34
|
+
//# sourceMappingURL=raintonic-formaui-components-tag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-tag.d.ts","sources":["../../../lib/components/tag/tag.types.ts","../../../lib/components/tag/tag.component.ts"],"mappings":";;AAAM,KAAM,aAAa;KACb,UAAU;AAEtB,cAAa,gBAAgB,WAAW,aAAa;AAQrD,cAAa,aAAa,WAAW,UAAU;UAE9B,iBAAiB;;AAEjC;;ACDD,cAsBa,eAAe;oBACZ,aAAA,CAAA,WAAA;sBACE,aAAA,CAAA,wBAAA,CAAA,aAAA;mBAGH,aAAA,CAAA,WAAA,CAAA,UAAA;mBACA,aAAA,CAAA,WAAA;wBACK,aAAA,CAAA,WAAA;yBACC,aAAA,CAAA,WAAA;uBACF,aAAA,CAAA,WAAA;uBACA,aAAA,CAAA,wBAAA;sBAED,aAAA,CAAA,gBAAA,CAAA,iBAAA;6BACO,aAAA,CAAA,gBAAA;wBAEL,aAAA,CAAA,cAAA;8BAEM,aAAA,CAAA,MAAA;;AAUxB;AAQA,mBAAe,KAAK;AAKpB,oBAAgB,KAAK;oDAxCV,eAAe;sDAAf,eAAe;AA8C3B;;;;","names":[]}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { DoCheck, OnDestroy, InputSignal, InputSignalWithTransform, OutputEmitterRef, WritableSignal, ElementRef, AfterViewInit } from '@angular/core';
|
|
3
|
+
import { ControlValueAccessor, NgControl } from '@angular/forms';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { FuiFormFieldControl, ErrorStateMatcher } from '@raintonic/formaui/core';
|
|
6
|
+
|
|
7
|
+
type TimeFormat = '12h' | '24h';
|
|
8
|
+
interface TimeValue {
|
|
9
|
+
hours: number;
|
|
10
|
+
minutes: number;
|
|
11
|
+
seconds?: number;
|
|
12
|
+
}
|
|
13
|
+
interface TimeOption {
|
|
14
|
+
label: string;
|
|
15
|
+
value: TimeValue;
|
|
16
|
+
disabled: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare class FuiTimePickerComponent implements ControlValueAccessor, FuiFormFieldControl<string>, DoCheck, OnDestroy {
|
|
20
|
+
static nextId: number;
|
|
21
|
+
readonly controlType = "fui-time-picker";
|
|
22
|
+
readonly formatInput: InputSignal<TimeFormat>;
|
|
23
|
+
readonly showSeconds: InputSignalWithTransform<boolean, unknown>;
|
|
24
|
+
readonly minuteStep: InputSignal<number>;
|
|
25
|
+
readonly min: InputSignal<string>;
|
|
26
|
+
readonly max: InputSignal<string>;
|
|
27
|
+
readonly placeholderInput: InputSignal<string>;
|
|
28
|
+
readonly disabledInput: InputSignalWithTransform<boolean, unknown>;
|
|
29
|
+
readonly readonly: InputSignalWithTransform<boolean, unknown>;
|
|
30
|
+
readonly errorStateMatcher: InputSignal<ErrorStateMatcher | null>;
|
|
31
|
+
readonly timeChange: OutputEmitterRef<string>;
|
|
32
|
+
/** @internal */ readonly _value: WritableSignal<TimeValue | null>;
|
|
33
|
+
private readonly _focused;
|
|
34
|
+
private readonly _disabled;
|
|
35
|
+
private readonly _ngControlDisabled;
|
|
36
|
+
private readonly _required;
|
|
37
|
+
private readonly _errorState;
|
|
38
|
+
readonly _readOnly: WritableSignal<boolean>;
|
|
39
|
+
readonly _panelOpen: WritableSignal<boolean>;
|
|
40
|
+
readonly stateChanges: Subject<void>;
|
|
41
|
+
private _uid;
|
|
42
|
+
_ariaDescribedby: string | null;
|
|
43
|
+
private _parentForm;
|
|
44
|
+
private _parentFormGroup;
|
|
45
|
+
private _defaultErrorStateMatcher;
|
|
46
|
+
private readonly _ngControlRef;
|
|
47
|
+
get ngControl(): NgControl | null;
|
|
48
|
+
readonly placeholder: _angular_core.Signal<string>;
|
|
49
|
+
readonly required: WritableSignal<boolean>;
|
|
50
|
+
readonly value: _angular_core.Signal<string | null>;
|
|
51
|
+
readonly focused: WritableSignal<boolean>;
|
|
52
|
+
readonly disabled: _angular_core.Signal<boolean>;
|
|
53
|
+
readonly errorState: WritableSignal<boolean>;
|
|
54
|
+
readonly id: string;
|
|
55
|
+
readonly empty: _angular_core.Signal<boolean>;
|
|
56
|
+
readonly _displayValue: _angular_core.Signal<string>;
|
|
57
|
+
readonly displayValue: _angular_core.Signal<string>;
|
|
58
|
+
readonly _timeOptions: _angular_core.Signal<TimeOption[]>;
|
|
59
|
+
inputElement?: ElementRef<HTMLInputElement>;
|
|
60
|
+
timeListPanel?: ElementRef<HTMLDivElement>;
|
|
61
|
+
private _overlayRef;
|
|
62
|
+
private _overlaySubscriptions;
|
|
63
|
+
private readonly _overlayService;
|
|
64
|
+
private readonly _elementRef;
|
|
65
|
+
private readonly _document;
|
|
66
|
+
private readonly _ngZone;
|
|
67
|
+
private _outsideClickSub?;
|
|
68
|
+
private _onChange;
|
|
69
|
+
private _onTouched;
|
|
70
|
+
constructor();
|
|
71
|
+
ngDoCheck(): void;
|
|
72
|
+
ngOnDestroy(): void;
|
|
73
|
+
writeValue(value: string | null): void;
|
|
74
|
+
registerOnChange(fn: (value: string | null) => void): void;
|
|
75
|
+
registerOnTouched(fn: () => void): void;
|
|
76
|
+
setDisabledState(isDisabled: boolean): void;
|
|
77
|
+
onContainerClick(_event: MouseEvent): void;
|
|
78
|
+
setDescribedByIds(ids: string[]): void;
|
|
79
|
+
setReadOnly(readOnly: boolean): void;
|
|
80
|
+
open(): void;
|
|
81
|
+
close(): void;
|
|
82
|
+
_togglePanel(): void;
|
|
83
|
+
_onManualInput(_event: Event): void;
|
|
84
|
+
_onKeydown(event: KeyboardEvent): void;
|
|
85
|
+
_onFocus(): void;
|
|
86
|
+
_onBlur(): void;
|
|
87
|
+
/** Called when user selects an option from the time list dropdown. */
|
|
88
|
+
_onOptionSelected(value: TimeValue): void;
|
|
89
|
+
private _listenForOutsideClicks;
|
|
90
|
+
private _setValue;
|
|
91
|
+
private _createOverlay;
|
|
92
|
+
private _disposeOverlay;
|
|
93
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiTimePickerComponent, never>;
|
|
94
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiTimePickerComponent, "fui-time-picker", never, { "formatInput": { "alias": "format"; "required": false; "isSignal": true; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; }, { "timeChange": "timeChange"; }, never, never, true, never>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Convert a TimeValue to total minutes for comparison purposes.
|
|
99
|
+
*/
|
|
100
|
+
declare function timeToMinutes(time: TimeValue): number;
|
|
101
|
+
/**
|
|
102
|
+
* Compare two TimeValue objects.
|
|
103
|
+
* Returns -1 if a < b, 0 if equal, 1 if a > b.
|
|
104
|
+
*/
|
|
105
|
+
declare function compareTime(a: TimeValue, b: TimeValue): number;
|
|
106
|
+
/**
|
|
107
|
+
* Check if a time is within an optional min/max range (inclusive).
|
|
108
|
+
*/
|
|
109
|
+
declare function isTimeInRange(time: TimeValue, min?: TimeValue, max?: TimeValue): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Format a TimeValue for display.
|
|
112
|
+
* - 24h: "14:30" or "14:30:00"
|
|
113
|
+
* - 12h: "2:30 PM" or "2:30:00 PM"
|
|
114
|
+
*/
|
|
115
|
+
declare function formatTime(value: TimeValue | null, format: TimeFormat, showSeconds: boolean): string;
|
|
116
|
+
/**
|
|
117
|
+
* Parse a time string into a TimeValue.
|
|
118
|
+
* Supports formats: "HH:mm", "HH:mm:ss", "h:mm AM/PM", "h:mm:ss AM/PM"
|
|
119
|
+
* Returns null if the string cannot be parsed.
|
|
120
|
+
*/
|
|
121
|
+
declare function parseTimeString(str: string, format: TimeFormat): TimeValue | null;
|
|
122
|
+
/**
|
|
123
|
+
* Generate time options for the dropdown list.
|
|
124
|
+
*/
|
|
125
|
+
declare function generateTimeOptions(format: TimeFormat, minuteStep: number, showSeconds: boolean, min?: TimeValue, max?: TimeValue): TimeOption[];
|
|
126
|
+
/**
|
|
127
|
+
* Convert a TimeValue to an ISO-like string "HH:mm" or "HH:mm:ss".
|
|
128
|
+
*/
|
|
129
|
+
declare function timeValueToString(value: TimeValue | null, showSeconds: boolean): string;
|
|
130
|
+
/**
|
|
131
|
+
* Parse an ISO-like time string "HH:mm" or "HH:mm:ss" into a TimeValue.
|
|
132
|
+
* This always parses in 24h format regardless of display format.
|
|
133
|
+
*/
|
|
134
|
+
declare function parseISOTimeString(str: string): TimeValue | null;
|
|
135
|
+
|
|
136
|
+
declare class FuiTimeListComponent implements AfterViewInit {
|
|
137
|
+
/** The list of time options to display. */
|
|
138
|
+
readonly options: _angular_core.InputSignal<TimeOption[]>;
|
|
139
|
+
/** Currently selected time value. */
|
|
140
|
+
readonly selectedValue: _angular_core.InputSignal<TimeValue | null>;
|
|
141
|
+
/** Time format for display. */
|
|
142
|
+
readonly format: _angular_core.InputSignal<TimeFormat>;
|
|
143
|
+
/** Emitted when an option is selected. */
|
|
144
|
+
readonly optionSelected: _angular_core.OutputEmitterRef<TimeValue>;
|
|
145
|
+
/** Index of the currently focused option for keyboard navigation. */
|
|
146
|
+
readonly _focusedIndex: _angular_core.WritableSignal<number>;
|
|
147
|
+
listContainer?: ElementRef<HTMLDivElement>;
|
|
148
|
+
constructor();
|
|
149
|
+
ngAfterViewInit(): void;
|
|
150
|
+
/** Check if an option matches the selected value. */
|
|
151
|
+
_isSelected(option: TimeOption): boolean;
|
|
152
|
+
/** Handle option click. */
|
|
153
|
+
_selectOption(option: TimeOption): void;
|
|
154
|
+
/** Handle keyboard navigation. */
|
|
155
|
+
onKeydown(event: KeyboardEvent): void;
|
|
156
|
+
/** Move focus by delta, skipping disabled options. */
|
|
157
|
+
private _moveFocus;
|
|
158
|
+
/** Set focused index and scroll into view. */
|
|
159
|
+
private _setFocusedIndex;
|
|
160
|
+
/** Select the currently focused option. */
|
|
161
|
+
private _selectFocused;
|
|
162
|
+
/** Scroll to a specific index in the list. */
|
|
163
|
+
private _scrollToIndex;
|
|
164
|
+
/** Scroll to the selected option. */
|
|
165
|
+
private _scrollToSelected;
|
|
166
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiTimeListComponent, never>;
|
|
167
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiTimeListComponent, "fui-time-list", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "selectedValue": { "alias": "selectedValue"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; }, { "optionSelected": "optionSelected"; }, never, never, true, never>;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export { FuiTimeListComponent, FuiTimePickerComponent, compareTime, formatTime, generateTimeOptions, isTimeInRange, parseISOTimeString, parseTimeString, timeToMinutes, timeValueToString };
|
|
171
|
+
export type { TimeFormat, TimeOption, TimeValue };
|
|
172
|
+
//# sourceMappingURL=raintonic-formaui-components-time-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-time-picker.d.ts","sources":["../../../lib/components/time-picker/time-picker.types.ts","../../../lib/components/time-picker/time-picker.component.ts","../../../lib/components/time-picker/time-picker.utils.ts","../../../lib/components/time-picker/time-list.component.ts"],"mappings":";;;;;;KAAY,UAAU;UAEL,SAAS;;;;AAIzB;UAEgB,UAAU;;WAElB,SAAS;;AAEjB;;AC4BD,cA6Ba,sBAAuB,YAAW,oBAAoB,EAAE,mBAAmB,UAAU,OAAO,EAAE,SAAS;;;AAKlH,0BAAsB,WAAW,CAAC,UAAU;0BACtB,wBAAwB;AAG9C,yBAAqB,WAAW;AAChC,kBAAc,WAAW;AACzB,kBAAc,WAAW;AACzB,+BAA2B,WAAW;4BACd,wBAAwB;uBAI7B,wBAAwB;gCAGf,WAAW,CAAC,iBAAiB;AAGzD,yBAAqB,gBAAgB;sCAGH,cAAc,CAAC,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA,wBAAoB,cAAc;yBACf,cAAA;2BAGE,OAAA;;AAErB;;;;AAMA;AACA,qBAAiB,SAAS;0BAKN,aAAA,CAAA,MAAA;uBACH,cAAA;oBACH,aAAA,CAAA,MAAA;sBAIE,cAAA;uBACC,aAAA,CAAA,MAAA;yBACE,cAAA;;oBAGL,aAAA,CAAA,MAAA;4BAKQ,aAAA,CAAA,MAAA;2BAKD,aAAA,CAAA,MAAA;2BAGA,aAAA,CAAA,MAAA,CAAA,UAAA;AAayB,mBAAe,UAAU,CAAC,gBAAgB;AACzC,oBAAgB,UAAU,CAAC,cAAc;;;AAKxF;AACA;AACA;AACA;;;;;AAwCA;AAgBA;AAQA;AAUA;AAIA;AAIA;AAOA,6BAAyB,UAAU;AASnC;AAIA;AAMA;AAcA;AAcA;AAWA,2BAAuB,KAAK;AAI5B,sBAAkB,aAAa;AAa/B;AAIA;;AAwBA,6BAAyB,SAAS;AAMlC;AA0BA;AAQA;AAiDA;oDAzXW,sBAAsB;sDAAtB,sBAAsB;AAgYlC;;ACncD;;AAEG;AACH,iBAAgB,aAAa,OAAO,SAAS;AAI7C;;;AAGG;AACH,iBAAgB,WAAW,IAAI,SAAS,KAAK,SAAS;AAQtD;;AAEG;AACH,iBAAgB,aAAa,OAAO,SAAS,QAAQ,SAAS,QAAQ,SAAS;AAM/E;;;;AAIG;AACH,iBAAgB,UAAU,QAAQ,SAAS,iBAAiB,UAAU;AAuBtE;;;;AAIG;AACH,iBAAgB,eAAe,sBAAsB,UAAU,GAAG,SAAS;AAsC3E;;AAEG;AACH,iBAAgB,mBAAmB,SACzB,UAAU,kDAGZ,SAAS,QACT,SAAS,GACd,UAAU;AAgBb;;AAEG;AACH,iBAAgB,iBAAiB,QAAQ,SAAS;AAOlD;;;AAGG;AACH,iBAAgB,kBAAkB,eAAe,SAAS;;AC7H1D,cAWa,oBAAqB,YAAW,aAAa;;sBAExC,aAAA,CAAA,WAAA,CAAA,UAAA;;4BAGM,aAAA,CAAA,WAAA,CAAA,SAAA;;qBAGP,aAAA,CAAA,WAAA,CAAA,UAAA;;6BAGQ,aAAA,CAAA,gBAAA,CAAA,SAAA;;4BAGD,aAAA,CAAA,cAAA;AAEyB,oBAAgB,UAAU,CAAC,cAAc;;AAcxF;;AAKA,wBAAoB,UAAU;;AAO9B,0BAAsB,UAAU;;AAMhC,qBAAiB,aAAa;;AA6B9B;;AAmBA;;AAMA;;AASA;;AAqBA;oDApIW,oBAAoB;sDAApB,oBAAoB;AAkJhC;;;;","names":[]}
|