@ngxsmk/cdk 1.3.1 → 2.0.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/README.md +1 -1
- package/cva-base/cva-base.d.ts +34 -0
- package/cva-base/cva-base.d.ts.map +1 -0
- package/cva-base/index.d.ts +2 -0
- package/cva-base/index.d.ts.map +1 -0
- package/cva-base/ngxsmk-cdk-cva-base.d.ts.map +1 -0
- package/esm2022/cva-base/cva-base.mjs +45 -0
- package/esm2022/cva-base/index.mjs +2 -0
- package/esm2022/cva-base/ngxsmk-cdk-cva-base.mjs +5 -0
- package/esm2022/input-group/index.mjs +3 -0
- package/esm2022/input-group/input-group-engine.mjs +219 -0
- package/esm2022/input-group/models/index.mjs +2 -0
- package/esm2022/input-group/models/input-group.model.mjs +2 -0
- package/esm2022/input-group/ngxsmk-cdk-input-group.mjs +5 -0
- package/esm2022/listbox-keyboard/index.mjs +2 -0
- package/esm2022/listbox-keyboard/listbox-keyboard.mjs +145 -0
- package/esm2022/listbox-keyboard/ngxsmk-cdk-listbox-keyboard.mjs +5 -0
- package/esm2022/public-api.mjs +10 -1
- package/esm2022/scheduler/index.mjs +5 -0
- package/esm2022/scheduler/models/date-range.mjs +2 -0
- package/esm2022/scheduler/models/event.model.mjs +2 -0
- package/esm2022/scheduler/models/index.mjs +6 -0
- package/esm2022/scheduler/models/resource.model.mjs +5 -0
- package/esm2022/scheduler/models/selection.model.mjs +7 -0
- package/esm2022/scheduler/models/view.model.mjs +7 -0
- package/esm2022/scheduler/ngxsmk-cdk-scheduler.mjs +5 -0
- package/esm2022/scheduler/plugin/drag-plugin.mjs +82 -0
- package/esm2022/scheduler/plugin/index.mjs +8 -0
- package/esm2022/scheduler/plugin/keyboard-plugin.mjs +150 -0
- package/esm2022/scheduler/plugin/plugin-host.mjs +48 -0
- package/esm2022/scheduler/plugin/plugin.types.mjs +2 -0
- package/esm2022/scheduler/plugin/resize-plugin.mjs +74 -0
- package/esm2022/scheduler/plugin/selection-plugin.mjs +84 -0
- package/esm2022/scheduler/plugin/tooltip-plugin.mjs +103 -0
- package/esm2022/scheduler/scheduler-engine.mjs +316 -0
- package/esm2022/scheduler/utils/date-utils.mjs +131 -0
- package/esm2022/scheduler/utils/index.mjs +3 -0
- package/esm2022/scheduler/utils/snap.mjs +24 -0
- package/esm2022/spreadsheet/index.mjs +5 -0
- package/esm2022/spreadsheet/models/cell.model.mjs +2 -0
- package/esm2022/spreadsheet/models/column.model.mjs +2 -0
- package/esm2022/spreadsheet/models/filter.model.mjs +2 -0
- package/esm2022/spreadsheet/models/formula.model.mjs +2 -0
- package/esm2022/spreadsheet/models/index.mjs +8 -0
- package/esm2022/spreadsheet/models/row.model.mjs +2 -0
- package/esm2022/spreadsheet/models/selection.model.mjs +2 -0
- package/esm2022/spreadsheet/models/sort.model.mjs +2 -0
- package/esm2022/spreadsheet/ngxsmk-cdk-spreadsheet.mjs +5 -0
- package/esm2022/spreadsheet/plugin/clipboard-plugin.mjs +171 -0
- package/esm2022/spreadsheet/plugin/filter-plugin.mjs +87 -0
- package/esm2022/spreadsheet/plugin/formula-plugin.mjs +456 -0
- package/esm2022/spreadsheet/plugin/index.mjs +10 -0
- package/esm2022/spreadsheet/plugin/plugin-host.mjs +188 -0
- package/esm2022/spreadsheet/plugin/plugin.types.mjs +2 -0
- package/esm2022/spreadsheet/plugin/selection-plugin.mjs +114 -0
- package/esm2022/spreadsheet/plugin/sort-plugin.mjs +63 -0
- package/esm2022/spreadsheet/plugin/undo-plugin.mjs +138 -0
- package/esm2022/spreadsheet/plugin/validation-plugin.mjs +71 -0
- package/esm2022/spreadsheet/spreadsheet-engine.mjs +547 -0
- package/esm2022/spreadsheet/utils/cell-utils.mjs +129 -0
- package/esm2022/spreadsheet/utils/index.mjs +2 -0
- package/esm2022/testing/a11y.mjs +6 -3
- package/fesm2022/ngxsmk-cdk-cva-base.mjs +52 -0
- package/fesm2022/ngxsmk-cdk-cva-base.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-input-group.mjs +226 -0
- package/fesm2022/ngxsmk-cdk-input-group.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-listbox-keyboard.mjs +152 -0
- package/fesm2022/ngxsmk-cdk-listbox-keyboard.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-scheduler.mjs +1035 -0
- package/fesm2022/ngxsmk-cdk-scheduler.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-spreadsheet.mjs +1969 -0
- package/fesm2022/ngxsmk-cdk-spreadsheet.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-testing.mjs +5 -2
- package/fesm2022/ngxsmk-cdk-testing.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk.mjs +5 -0
- package/fesm2022/ngxsmk-cdk.mjs.map +1 -1
- package/input-group/index.d.ts +3 -0
- package/input-group/index.d.ts.map +1 -0
- package/input-group/input-group-engine.d.ts +88 -0
- package/input-group/input-group-engine.d.ts.map +1 -0
- package/input-group/models/index.d.ts +2 -0
- package/input-group/models/index.d.ts.map +1 -0
- package/input-group/models/input-group.model.d.ts +114 -0
- package/input-group/models/input-group.model.d.ts.map +1 -0
- package/input-group/ngxsmk-cdk-input-group.d.ts.map +1 -0
- package/listbox-keyboard/index.d.ts +2 -0
- package/listbox-keyboard/index.d.ts.map +1 -0
- package/listbox-keyboard/listbox-keyboard.d.ts +60 -0
- package/listbox-keyboard/listbox-keyboard.d.ts.map +1 -0
- package/listbox-keyboard/ngxsmk-cdk-listbox-keyboard.d.ts.map +1 -0
- package/package.json +40 -1
- package/public-api.d.ts +8 -0
- package/public-api.d.ts.map +1 -1
- package/scheduler/index.d.ts +5 -0
- package/scheduler/index.d.ts.map +1 -0
- package/scheduler/models/date-range.d.ts +6 -0
- package/scheduler/models/date-range.d.ts.map +1 -0
- package/scheduler/models/event.model.d.ts +50 -0
- package/scheduler/models/event.model.d.ts.map +1 -0
- package/scheduler/models/index.d.ts +6 -0
- package/scheduler/models/index.d.ts.map +1 -0
- package/scheduler/models/resource.model.d.ts +16 -0
- package/scheduler/models/resource.model.d.ts.map +1 -0
- package/scheduler/models/selection.model.d.ts +12 -0
- package/scheduler/models/selection.model.d.ts.map +1 -0
- package/scheduler/models/view.model.d.ts +21 -0
- package/scheduler/models/view.model.d.ts.map +1 -0
- package/scheduler/ngxsmk-cdk-scheduler.d.ts.map +1 -0
- package/scheduler/plugin/drag-plugin.d.ts +28 -0
- package/scheduler/plugin/drag-plugin.d.ts.map +1 -0
- package/scheduler/plugin/index.d.ts +8 -0
- package/scheduler/plugin/index.d.ts.map +1 -0
- package/scheduler/plugin/keyboard-plugin.d.ts +24 -0
- package/scheduler/plugin/keyboard-plugin.d.ts.map +1 -0
- package/scheduler/plugin/plugin-host.d.ts +16 -0
- package/scheduler/plugin/plugin-host.d.ts.map +1 -0
- package/scheduler/plugin/plugin.types.d.ts +9 -0
- package/scheduler/plugin/plugin.types.d.ts.map +1 -0
- package/scheduler/plugin/resize-plugin.d.ts +26 -0
- package/scheduler/plugin/resize-plugin.d.ts.map +1 -0
- package/scheduler/plugin/selection-plugin.d.ts +40 -0
- package/scheduler/plugin/selection-plugin.d.ts.map +1 -0
- package/scheduler/plugin/tooltip-plugin.d.ts +41 -0
- package/scheduler/plugin/tooltip-plugin.d.ts.map +1 -0
- package/scheduler/scheduler-engine.d.ts +95 -0
- package/scheduler/scheduler-engine.d.ts.map +1 -0
- package/scheduler/utils/date-utils.d.ts +26 -0
- package/scheduler/utils/date-utils.d.ts.map +1 -0
- package/scheduler/utils/index.d.ts +3 -0
- package/scheduler/utils/index.d.ts.map +1 -0
- package/scheduler/utils/snap.d.ts +7 -0
- package/scheduler/utils/snap.d.ts.map +1 -0
- package/spreadsheet/index.d.ts +5 -0
- package/spreadsheet/index.d.ts.map +1 -0
- package/spreadsheet/models/cell.model.d.ts +44 -0
- package/spreadsheet/models/cell.model.d.ts.map +1 -0
- package/spreadsheet/models/column.model.d.ts +77 -0
- package/spreadsheet/models/column.model.d.ts.map +1 -0
- package/spreadsheet/models/filter.model.d.ts +15 -0
- package/spreadsheet/models/filter.model.d.ts.map +1 -0
- package/spreadsheet/models/formula.model.d.ts +65 -0
- package/spreadsheet/models/formula.model.d.ts.map +1 -0
- package/spreadsheet/models/index.d.ts +8 -0
- package/spreadsheet/models/index.d.ts.map +1 -0
- package/spreadsheet/models/row.model.d.ts +33 -0
- package/spreadsheet/models/row.model.d.ts.map +1 -0
- package/spreadsheet/models/selection.model.d.ts +18 -0
- package/spreadsheet/models/selection.model.d.ts.map +1 -0
- package/spreadsheet/models/sort.model.d.ts +14 -0
- package/spreadsheet/models/sort.model.d.ts.map +1 -0
- package/spreadsheet/ngxsmk-cdk-spreadsheet.d.ts.map +1 -0
- package/spreadsheet/plugin/clipboard-plugin.d.ts +24 -0
- package/spreadsheet/plugin/clipboard-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/filter-plugin.d.ts +21 -0
- package/spreadsheet/plugin/filter-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/formula-plugin.d.ts +39 -0
- package/spreadsheet/plugin/formula-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/index.d.ts +10 -0
- package/spreadsheet/plugin/index.d.ts.map +1 -0
- package/spreadsheet/plugin/plugin-host.d.ts +66 -0
- package/spreadsheet/plugin/plugin-host.d.ts.map +1 -0
- package/spreadsheet/plugin/plugin.types.d.ts +58 -0
- package/spreadsheet/plugin/plugin.types.d.ts.map +1 -0
- package/spreadsheet/plugin/selection-plugin.d.ts +28 -0
- package/spreadsheet/plugin/selection-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/sort-plugin.d.ts +18 -0
- package/spreadsheet/plugin/sort-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/undo-plugin.d.ts +40 -0
- package/spreadsheet/plugin/undo-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/validation-plugin.d.ts +29 -0
- package/spreadsheet/plugin/validation-plugin.d.ts.map +1 -0
- package/spreadsheet/spreadsheet-engine.d.ts +194 -0
- package/spreadsheet/spreadsheet-engine.d.ts.map +1 -0
- package/spreadsheet/utils/cell-utils.d.ts +26 -0
- package/spreadsheet/utils/cell-utils.d.ts.map +1 -0
- package/spreadsheet/utils/index.d.ts +2 -0
- package/spreadsheet/utils/index.d.ts.map +1 -0
- package/testing/a11y.d.ts +5 -1
- package/testing/a11y.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Low-level, zoneless-friendly Angular behaviors that power NGXSMK components. Each behavior is its own secondary entry point, so you only bundle what you import.
|
|
4
4
|
|
|
5
|
-
Part of the [NGXSMK UI kit](https://github.
|
|
5
|
+
Part of the [NGXSMK UI kit](https://ngxsmk.github.io/ngxsmk-ui-kit).
|
|
6
6
|
|
|
7
7
|
## Compatibility
|
|
8
8
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base providing the CVA plumbing shared by every form component:
|
|
4
|
+
* `onChange` / `onTouched` storage, `formDisabled` signal, and the composite
|
|
5
|
+
* `isDisabled` computed. Sub-classes implement only `inputDisabled()` (the
|
|
6
|
+
* component's own `input()` signal value) and `writeValue()` (type-specific
|
|
7
|
+
* coercion).
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* export class NgxsmkCheckbox extends CvaBase<boolean> {
|
|
11
|
+
* readonly disabled = input(false, { transform: booleanAttribute });
|
|
12
|
+
* protected inputDisabled() { return this.disabled(); }
|
|
13
|
+
* writeValue(value: unknown) { this.checked.set(!!value); }
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare abstract class CvaBase<T = unknown> implements ControlValueAccessor {
|
|
18
|
+
private _onChange;
|
|
19
|
+
private _onTouched;
|
|
20
|
+
private readonly _formDisabled;
|
|
21
|
+
/** Composite disabled state: component's own input OR form-driven disable. */
|
|
22
|
+
readonly isDisabled: import("@angular/core").Signal<boolean>;
|
|
23
|
+
/** Return the component's own `disabled` input signal value. */
|
|
24
|
+
protected abstract inputDisabled(): boolean;
|
|
25
|
+
abstract writeValue(value: unknown): void;
|
|
26
|
+
registerOnChange(fn: (value: T) => void): void;
|
|
27
|
+
registerOnTouched(fn: () => void): void;
|
|
28
|
+
setDisabledState(isDisabled: boolean): void;
|
|
29
|
+
/** Fire the registered onChange callback. */
|
|
30
|
+
protected emitChange(value: T): void;
|
|
31
|
+
/** Fire the registered onTouched callback. */
|
|
32
|
+
protected emitTouched(): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=cva-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cva-base.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/cva-base/cva-base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,8BAAsB,OAAO,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,oBAAoB;IAExE,OAAO,CAAC,SAAS,CAAgC;IAEjD,OAAO,CAAC,UAAU,CAAwB;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAE/C,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,0CAAgE;IAEnF,gEAAgE;IAChE,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,OAAO;IAE3C,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAEzC,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAI9C,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAI3C,6CAA6C;IAC7C,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAIpC,8CAA8C;IAC9C,SAAS,CAAC,WAAW,IAAI,IAAI;CAG9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/cva-base/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngxsmk-cdk-cva-base.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/cva-base/ngxsmk-cdk-cva-base.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { computed, signal } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base providing the CVA plumbing shared by every form component:
|
|
4
|
+
* `onChange` / `onTouched` storage, `formDisabled` signal, and the composite
|
|
5
|
+
* `isDisabled` computed. Sub-classes implement only `inputDisabled()` (the
|
|
6
|
+
* component's own `input()` signal value) and `writeValue()` (type-specific
|
|
7
|
+
* coercion).
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* export class NgxsmkCheckbox extends CvaBase<boolean> {
|
|
11
|
+
* readonly disabled = input(false, { transform: booleanAttribute });
|
|
12
|
+
* protected inputDisabled() { return this.disabled(); }
|
|
13
|
+
* writeValue(value: unknown) { this.checked.set(!!value); }
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class CvaBase {
|
|
18
|
+
constructor() {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
20
|
+
this._onChange = () => { };
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
22
|
+
this._onTouched = () => { };
|
|
23
|
+
this._formDisabled = signal(false);
|
|
24
|
+
/** Composite disabled state: component's own input OR form-driven disable. */
|
|
25
|
+
this.isDisabled = computed(() => this.inputDisabled() || this._formDisabled());
|
|
26
|
+
}
|
|
27
|
+
registerOnChange(fn) {
|
|
28
|
+
this._onChange = fn;
|
|
29
|
+
}
|
|
30
|
+
registerOnTouched(fn) {
|
|
31
|
+
this._onTouched = fn;
|
|
32
|
+
}
|
|
33
|
+
setDisabledState(isDisabled) {
|
|
34
|
+
this._formDisabled.set(isDisabled);
|
|
35
|
+
}
|
|
36
|
+
/** Fire the registered onChange callback. */
|
|
37
|
+
emitChange(value) {
|
|
38
|
+
this._onChange(value);
|
|
39
|
+
}
|
|
40
|
+
/** Fire the registered onTouched callback. */
|
|
41
|
+
emitTouched() {
|
|
42
|
+
this._onTouched();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ZhLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY3ZhLWJhc2UvY3ZhLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQWdCLE9BQU87SUFBN0I7UUFDRSxnRUFBZ0U7UUFDeEQsY0FBUyxHQUF1QixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDakQsZ0VBQWdFO1FBQ3hELGVBQVUsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFekIsa0JBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsOEVBQThFO1FBQ3JFLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBNEJyRixDQUFDO0lBckJDLGdCQUFnQixDQUFDLEVBQXNCO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsNkNBQTZDO0lBQ25DLFVBQVUsQ0FBQyxLQUFRO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELDhDQUE4QztJQUNwQyxXQUFXO1FBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBBYnN0cmFjdCBiYXNlIHByb3ZpZGluZyB0aGUgQ1ZBIHBsdW1iaW5nIHNoYXJlZCBieSBldmVyeSBmb3JtIGNvbXBvbmVudDpcbiAqIGBvbkNoYW5nZWAgLyBgb25Ub3VjaGVkYCBzdG9yYWdlLCBgZm9ybURpc2FibGVkYCBzaWduYWwsIGFuZCB0aGUgY29tcG9zaXRlXG4gKiBgaXNEaXNhYmxlZGAgY29tcHV0ZWQuIFN1Yi1jbGFzc2VzIGltcGxlbWVudCBvbmx5IGBpbnB1dERpc2FibGVkKClgICh0aGVcbiAqIGNvbXBvbmVudCdzIG93biBgaW5wdXQoKWAgc2lnbmFsIHZhbHVlKSBhbmQgYHdyaXRlVmFsdWUoKWAgKHR5cGUtc3BlY2lmaWNcbiAqIGNvZXJjaW9uKS5cbiAqXG4gKiBgYGB0c1xuICogZXhwb3J0IGNsYXNzIE5neHNta0NoZWNrYm94IGV4dGVuZHMgQ3ZhQmFzZTxib29sZWFuPiB7XG4gKiAgIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICogICBwcm90ZWN0ZWQgaW5wdXREaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQoKTsgfVxuICogICB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKSB7IHRoaXMuY2hlY2tlZC5zZXQoISF2YWx1ZSk7IH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3ZhQmFzZTxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogVCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHByaXZhdGUgX29uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1EaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqIENvbXBvc2l0ZSBkaXNhYmxlZCBzdGF0ZTogY29tcG9uZW50J3Mgb3duIGlucHV0IE9SIGZvcm0tZHJpdmVuIGRpc2FibGUuICovXG4gIHJlYWRvbmx5IGlzRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlucHV0RGlzYWJsZWQoKSB8fCB0aGlzLl9mb3JtRGlzYWJsZWQoKSk7XG5cbiAgLyoqIFJldHVybiB0aGUgY29tcG9uZW50J3Mgb3duIGBkaXNhYmxlZGAgaW5wdXQgc2lnbmFsIHZhbHVlLiAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5wdXREaXNhYmxlZCgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IHdyaXRlVmFsdWUodmFsdWU6IHVua25vd24pOiB2b2lkO1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogVCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybURpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcbiAgfVxuXG4gIC8qKiBGaXJlIHRoZSByZWdpc3RlcmVkIG9uQ2hhbmdlIGNhbGxiYWNrLiAqL1xuICBwcm90ZWN0ZWQgZW1pdENoYW5nZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBGaXJlIHRoZSByZWdpc3RlcmVkIG9uVG91Y2hlZCBjYWxsYmFjay4gKi9cbiAgcHJvdGVjdGVkIGVtaXRUb3VjaGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './cva-base';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY3ZhLWJhc2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2N2YS1iYXNlJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1jdmEtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jdmEtYmFzZS9uZ3hzbWstY2RrLWN2YS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './input-group-engine';
|
|
2
|
+
export * from './models';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvaW5wdXQtZ3JvdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW5wdXQtZ3JvdXAtZW5naW5lJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbiJdfQ==
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { computed, signal } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* InputGroupEngine — headless, signal-based state machine for input group behaviour.
|
|
4
|
+
* Zero DOM, zero Angular template dependencies.
|
|
5
|
+
*/
|
|
6
|
+
export class InputGroupEngine {
|
|
7
|
+
constructor(config = {}) {
|
|
8
|
+
this.focused = signal(false);
|
|
9
|
+
this.hovered = signal(false);
|
|
10
|
+
this.touched = signal(false);
|
|
11
|
+
this.dirty = signal(false);
|
|
12
|
+
this.status = signal('none');
|
|
13
|
+
this.message = signal('');
|
|
14
|
+
this.disabled = signal(false);
|
|
15
|
+
this.readonly = signal(false);
|
|
16
|
+
this.passwordVisible = signal(false);
|
|
17
|
+
this.loading = signal(false);
|
|
18
|
+
this.addons = signal([]);
|
|
19
|
+
this.placeholder = signal('');
|
|
20
|
+
this.label = signal('');
|
|
21
|
+
this.hint = signal('');
|
|
22
|
+
this.required = signal(false);
|
|
23
|
+
this.maxLength = signal(undefined);
|
|
24
|
+
this.minLength = signal(undefined);
|
|
25
|
+
this.showClear = signal(false);
|
|
26
|
+
this.showCounter = signal(false);
|
|
27
|
+
this.fullWidth = signal(true);
|
|
28
|
+
this.floatingLabel = signal(false);
|
|
29
|
+
this._asyncTimer = null;
|
|
30
|
+
this._config = config;
|
|
31
|
+
// Initialize config signals
|
|
32
|
+
this.value = signal(config.initialValue ?? '');
|
|
33
|
+
this.type = signal(config.type ?? 'text');
|
|
34
|
+
this.variant = signal(config.variant ?? 'outlined');
|
|
35
|
+
this.size = signal(config.size ?? 'md');
|
|
36
|
+
this.radius = signal(config.radius ?? 'md');
|
|
37
|
+
this.density = signal(config.density ?? 'comfortable');
|
|
38
|
+
this.disabled.set(config.disabled ?? false);
|
|
39
|
+
this.readonly.set(config.readonly ?? false);
|
|
40
|
+
this.placeholder.set(config.placeholder ?? '');
|
|
41
|
+
this.label.set(config.label ?? '');
|
|
42
|
+
this.hint.set(config.hint ?? '');
|
|
43
|
+
this.required.set(config.required ?? false);
|
|
44
|
+
this.maxLength.set(config.maxLength);
|
|
45
|
+
this.minLength.set(config.minLength);
|
|
46
|
+
this.showClear.set(config.showClear ?? false);
|
|
47
|
+
this.showCounter.set(config.showCounter ?? false);
|
|
48
|
+
this.fullWidth.set(config.fullWidth ?? true);
|
|
49
|
+
this.floatingLabel.set(config.floatingLabel ?? false);
|
|
50
|
+
if (config.initialValue) {
|
|
51
|
+
this.dirty.set(true);
|
|
52
|
+
this.touched.set(true);
|
|
53
|
+
}
|
|
54
|
+
// Lifecycle hooks
|
|
55
|
+
this.onFocus = signal(() => {
|
|
56
|
+
/* noop */
|
|
57
|
+
});
|
|
58
|
+
this.onBlur = signal(() => {
|
|
59
|
+
/* noop */
|
|
60
|
+
});
|
|
61
|
+
this.onChange = signal(() => {
|
|
62
|
+
/* noop */
|
|
63
|
+
});
|
|
64
|
+
this.onClear = signal(() => {
|
|
65
|
+
/* noop */
|
|
66
|
+
});
|
|
67
|
+
this.onValidationChange = signal(() => {
|
|
68
|
+
/* noop */
|
|
69
|
+
});
|
|
70
|
+
// ── Computed ──
|
|
71
|
+
this.charCount = computed(() => this.value().length);
|
|
72
|
+
this.hasContent = computed(() => this.value().length > 0);
|
|
73
|
+
this.isActive = computed(() => this.focused() || this.hasContent());
|
|
74
|
+
this.isOverLength = computed(() => {
|
|
75
|
+
const max = this.maxLength();
|
|
76
|
+
return max != null ? this.value().length > max : false;
|
|
77
|
+
});
|
|
78
|
+
this.isUnderLength = computed(() => {
|
|
79
|
+
const min = this.minLength();
|
|
80
|
+
return min != null && this.touched() ? this.value().length < min : false;
|
|
81
|
+
});
|
|
82
|
+
this.hasError = computed(() => this.status() === 'error');
|
|
83
|
+
this.hasSuccess = computed(() => this.status() === 'success');
|
|
84
|
+
this.hasWarning = computed(() => this.status() === 'warning');
|
|
85
|
+
this.isInvalid = computed(() => this.hasError() || this.isOverLength() || this.isUnderLength());
|
|
86
|
+
this.showPlaceholder = computed(() => {
|
|
87
|
+
return !this.hasContent() && !this.focused();
|
|
88
|
+
});
|
|
89
|
+
this.shouldFloat = computed(() => {
|
|
90
|
+
if (this.floatingLabel())
|
|
91
|
+
return this.isActive() || this.hasContent();
|
|
92
|
+
return false;
|
|
93
|
+
});
|
|
94
|
+
this.leadingAddons = computed(() => this.addons().filter((a) => a.position === 'leading'));
|
|
95
|
+
this.trailingAddons = computed(() => this.addons().filter((a) => a.position === 'trailing'));
|
|
96
|
+
this.hasLeading = computed(() => this.leadingAddons().length > 0);
|
|
97
|
+
this.hasTrailing = computed(() => this.trailingAddons().length > 0);
|
|
98
|
+
this.inputType = computed(() => {
|
|
99
|
+
if (this.type() === 'password') {
|
|
100
|
+
return this.passwordVisible() ? 'text' : 'password';
|
|
101
|
+
}
|
|
102
|
+
return this.type();
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// ── Value Operations ──
|
|
106
|
+
setValue(value) {
|
|
107
|
+
this.value.set(value);
|
|
108
|
+
this.dirty.set(true);
|
|
109
|
+
this._runValidation(value);
|
|
110
|
+
this.onChange()(value);
|
|
111
|
+
}
|
|
112
|
+
clear() {
|
|
113
|
+
this.setValue('');
|
|
114
|
+
this.onClear()();
|
|
115
|
+
}
|
|
116
|
+
getValue() {
|
|
117
|
+
return this.value();
|
|
118
|
+
}
|
|
119
|
+
// ── Focus Operations ──
|
|
120
|
+
focus() {
|
|
121
|
+
this.focused.set(true);
|
|
122
|
+
this.onFocus()();
|
|
123
|
+
}
|
|
124
|
+
blur() {
|
|
125
|
+
this.focused.set(false);
|
|
126
|
+
this.touched.set(true);
|
|
127
|
+
this._runValidation(this.value());
|
|
128
|
+
this.onBlur()();
|
|
129
|
+
}
|
|
130
|
+
// ── Password ──
|
|
131
|
+
togglePasswordVisibility() {
|
|
132
|
+
this.passwordVisible.update((v) => !v);
|
|
133
|
+
}
|
|
134
|
+
// ── Loading ──
|
|
135
|
+
showLoading() {
|
|
136
|
+
this.loading.set(true);
|
|
137
|
+
}
|
|
138
|
+
hideLoading() {
|
|
139
|
+
this.loading.set(false);
|
|
140
|
+
}
|
|
141
|
+
// ── Add-ons ──
|
|
142
|
+
addAddon(addon) {
|
|
143
|
+
this.addons.update((list) => [...list, addon]);
|
|
144
|
+
}
|
|
145
|
+
removeAddon(id) {
|
|
146
|
+
this.addons.update((list) => list.filter((a) => a.id !== id));
|
|
147
|
+
}
|
|
148
|
+
// ── Validation ──
|
|
149
|
+
setStatus(status, message = '') {
|
|
150
|
+
this.status.set(status);
|
|
151
|
+
this.message.set(message);
|
|
152
|
+
this.onValidationChange()(status, message);
|
|
153
|
+
}
|
|
154
|
+
_runValidation(value) {
|
|
155
|
+
const validator = this._config.validator;
|
|
156
|
+
if (validator) {
|
|
157
|
+
const result = validator(value);
|
|
158
|
+
this.status.set(result.status);
|
|
159
|
+
this.message.set(result.message);
|
|
160
|
+
this.onValidationChange()(result.status, result.message);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
// Built-in validations
|
|
164
|
+
if (this.required() && !value) {
|
|
165
|
+
this.status.set('error');
|
|
166
|
+
this.message.set('This field is required');
|
|
167
|
+
this.onValidationChange()('error', 'This field is required');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (this.isOverLength()) {
|
|
171
|
+
this.status.set('error');
|
|
172
|
+
this.message.set(`Maximum ${this.maxLength()} characters`);
|
|
173
|
+
this.onValidationChange()('error', `Maximum ${this.maxLength()} characters`);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (this.isUnderLength()) {
|
|
177
|
+
this.status.set('error');
|
|
178
|
+
this.message.set(`Minimum ${this.minLength()} characters`);
|
|
179
|
+
this.onValidationChange()('error', `Minimum ${this.minLength()} characters`);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
this.status.set('none');
|
|
183
|
+
this.message.set('');
|
|
184
|
+
this.onValidationChange()('none', '');
|
|
185
|
+
// Async validation
|
|
186
|
+
const asyncValidator = this._config.asyncValidator;
|
|
187
|
+
if (asyncValidator && value) {
|
|
188
|
+
if (this._asyncTimer)
|
|
189
|
+
clearTimeout(this._asyncTimer);
|
|
190
|
+
this.status.set('pending');
|
|
191
|
+
this.message.set('');
|
|
192
|
+
this._asyncTimer = setTimeout(async () => {
|
|
193
|
+
const result = await asyncValidator(value);
|
|
194
|
+
if (this.value() === value) {
|
|
195
|
+
this.status.set(result);
|
|
196
|
+
this.onValidationChange()(result, '');
|
|
197
|
+
}
|
|
198
|
+
}, this._config.asyncDebounce ?? 300);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// ── Reset ──
|
|
202
|
+
reset() {
|
|
203
|
+
this.value.set(this._config.initialValue ?? '');
|
|
204
|
+
this.focused.set(false);
|
|
205
|
+
this.touched.set(false);
|
|
206
|
+
this.dirty.set(false);
|
|
207
|
+
this.status.set('none');
|
|
208
|
+
this.message.set('');
|
|
209
|
+
this.passwordVisible.set(false);
|
|
210
|
+
}
|
|
211
|
+
// ── Enable/Disable ──
|
|
212
|
+
enable() {
|
|
213
|
+
this.disabled.set(false);
|
|
214
|
+
}
|
|
215
|
+
disable() {
|
|
216
|
+
this.disabled.set(true);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAtZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLWVuZ2luZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBb0MsTUFBTSxlQUFlLENBQUM7QUF1Qm5GOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUE0RDNCLFlBQVksU0FBaUMsRUFBRTtRQXpEdEMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixXQUFNLEdBQUcsTUFBTSxDQUFtQixNQUFNLENBQUMsQ0FBQztRQUMxQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLGFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLFdBQU0sR0FBRyxNQUFNLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBUXZDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFVBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLGNBQVMs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QztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsdUJBQXVCO0lBRXZCLE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBzaWduYWwsIHR5cGUgV3JpdGFibGVTaWduYWwsIHR5cGUgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIElucHV0R3JvdXBDb25maWcsXG4gIElucHV0R3JvdXBBZGRvbixcbiAgSW5wdXRHcm91cElucHV0VHlwZSxcbiAgSW5wdXRHcm91cFZhcmlhbnQsXG4gIElucHV0R3JvdXBTaXplLFxuICBJbnB1dEdyb3VwUmFkaXVzLFxuICBJbnB1dEdyb3VwRGVuc2l0eSxcbiAgVmFsaWRhdGlvblN0YXR1cyxcbn0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0R3JvdXBFbmdpbmVDb25maWcgZXh0ZW5kcyBJbnB1dEdyb3VwQ29uZmlnIHtcbiAgLyoqIEluaXRpYWwgdmFsdWUuICovXG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbiAgLyoqIEFzeW5jIHZhbGlkYXRvciBmdW5jdGlvbi4gKi9cbiAgYXN5bmNWYWxpZGF0b3I/OiAodmFsdWU6IHN0cmluZykgPT4gUHJvbWlzZTxWYWxpZGF0aW9uU3RhdHVzPjtcbiAgLyoqIFN5bmMgdmFsaWRhdG9yIGZ1bmN0aW9uLiAqL1xuICB2YWxpZGF0b3I/OiAodmFsdWU6IHN0cmluZykgPT4geyBzdGF0dXM6IFZhbGlkYXRpb25TdGF0dXM7IG1lc3NhZ2U6IHN0cmluZyB9O1xuICAvKiogRGVib3VuY2UgZm9yIGFzeW5jIHZhbGlkYXRpb24gaW4gbXMuICovXG4gIGFzeW5jRGVib3VuY2U/OiBudW1iZXI7XG59XG5cbi8qKlxuICogSW5wdXRHcm91cEVuZ2luZSDigJQgaGVhZGxlc3MsIHNpZ25hbC1iYXNlZCBzdGF0ZSBtYWNoaW5lIGZvciBpbnB1dCBncm91cCBiZWhhdmlvdXIuXG4gKiBaZXJvIERPTSwgemVybyBBbmd1bGFyIHRlbXBsYXRlIGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGNsYXNzIElucHV0R3JvdXBFbmdpbmUge1xuICAvLyDilIDilIAgQ29yZSBTdGF0ZSDilIDilIBcbiAgcmVhZG9ubHkgdmFsdWU6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gIHJlYWRvbmx5IGZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBob3ZlcmVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgdG91Y2hlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGRpcnR5ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc3RhdHVzID0gc2lnbmFsPFZhbGlkYXRpb25TdGF0dXM+KCdub25lJyk7XG4gIHJlYWRvbmx5IG1lc3NhZ2UgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBkaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHJlYWRvbmx5ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgcGFzc3dvcmRWaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGFkZG9ucyA9IHNpZ25hbDxJbnB1dEdyb3VwQWRkb25bXT4oW10pO1xuXG4gIC8vIOKUgOKUgCBDb25maWcg4pSA4pSAXG4gIHJlYWRvbmx5IHR5cGU6IFdyaXRhYmxlU2lnbmFsPElucHV0R3JvdXBJbnB1dFR5cGU+O1xuICByZWFkb25seSB2YXJpYW50OiBXcml0YWJsZVNpZ25hbDxJbnB1dEdyb3VwVmFyaWFudD47XG4gIHJlYWRvbmx5IHNpemU6IFdyaXRhYmxlU2lnbmFsPElucHV0R3JvdXBTaXplPjtcbiAgcmVhZG9ubHkgcmFkaXVzOiBXcml0YWJsZVNpZ25hbDxJbnB1dEdyb3VwUmFkaXVzPjtcbiAgcmVhZG9ubHkgZGVuc2l0eTogV3JpdGFibGVTaWduYWw8SW5wdXRHcm91cERlbnNpdHk+O1xuICByZWFkb25seSBwbGFjZWhvbGRlciA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IGxhYmVsID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgaGludCA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHJlcXVpcmVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbWF4TGVuZ3RoID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbWluTGVuZ3RoID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2hvd0NsZWFyID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0NvdW50ZXIgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBmdWxsV2lkdGggPSBzaWduYWwodHJ1ZSk7XG4gIHJlYWRvbmx5IGZsb2F0aW5nTGFiZWwgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8vIOKUgOKUgCBDb21wdXRlZCDilIDilIBcbiAgcmVhZG9ubHkgY2hhckNvdW50OiBTaWduYWw8bnVtYmVyPjtcbiAgcmVhZG9ubHkgaGFzQ29udGVudDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBpc0FjdGl2ZTogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBpc092ZXJMZW5ndGg6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaXNVbmRlckxlbmd0aDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNFcnJvcjogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNTdWNjZXNzOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc1dhcm5pbmc6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaXNJbnZhbGlkOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHNob3dQbGFjZWhvbGRlcjogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBzaG91bGRGbG9hdDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBsZWFkaW5nQWRkb25zOiBTaWduYWw8SW5wdXRHcm91cEFkZG9uW10+O1xuICByZWFkb25seSB0cmFpbGluZ0FkZG9uczogU2lnbmFsPElucHV0R3JvdXBBZGRvbltdPjtcbiAgcmVhZG9ubHkgaGFzTGVhZGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNUcmFpbGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBpbnB1dFR5cGU6IFNpZ25hbDxJbnB1dEdyb3VwSW5wdXRUeXBlPjtcblxuICAvLyDilIDilIAgTGlmZWN5Y2xlIEhvb2tzIOKUgOKUgFxuICByZWFkb25seSBvbkZvY3VzOiBXcml0YWJsZVNpZ25hbDwoKSA9PiB2b2lkPjtcbiAgcmVhZG9ubHkgb25CbHVyOiBXcml0YWJsZVNpZ25hbDwoKSA9PiB2b2lkPjtcbiAgcmVhZG9ubHkgb25DaGFuZ2U6IFdyaXRhYmxlU2lnbmFsPCh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkPjtcbiAgcmVhZG9ubHkgb25DbGVhcjogV3JpdGFibGVTaWduYWw8KCkgPT4gdm9pZD47XG4gIHJlYWRvbmx5IG9uVmFsaWRhdGlvbkNoYW5nZTogV3JpdGFibGVTaWduYWw8KHN0YXR1czogVmFsaWRhdGlvblN0YXR1cywgbWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkPjtcblxuICBwcml2YXRlIF9jb25maWc6IElucHV0R3JvdXBFbmdpbmVDb25maWc7XG4gIHByaXZhdGUgX2FzeW5jVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBJbnB1dEdyb3VwRW5naW5lQ29uZmlnID0ge30pIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG5cbiAgICAvLyBJbml0aWFsaXplIGNvbmZpZyBzaWduYWxzXG4gICAgdGhpcy52YWx1ZSA9IHNpZ25hbChjb25maWcuaW5pdGlhbFZhbHVlID8/ICcnKTtcbiAgICB0aGlzLnR5cGUgPSBzaWduYWwoY29uZmlnLnR5cGUgPz8gJ3RleHQnKTtcbiAgICB0aGlzLnZhcmlhbnQgPSBzaWduYWwoY29uZmlnLnZhcmlhbnQgPz8gJ291dGxpbmVkJyk7XG4gICAgdGhpcy5zaXplID0gc2lnbmFsKGNvbmZpZy5zaXplID8/ICdtZCcpO1xuICAgIHRoaXMucmFkaXVzID0gc2lnbmFsKGNvbmZpZy5yYWRpdXMgPz8gJ21kJyk7XG4gICAgdGhpcy5kZW5zaXR5ID0gc2lnbmFsKGNvbmZpZy5kZW5zaXR5ID8/ICdjb21mb3J0YWJsZScpO1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGNvbmZpZy5kaXNhYmxlZCA/PyBmYWxzZSk7XG4gICAgdGhpcy5yZWFkb25seS5zZXQoY29uZmlnLnJlYWRvbmx5ID8/IGZhbHNlKTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyLnNldChjb25maWcucGxhY2Vob2xkZXIgPz8gJycpO1xuICAgIHRoaXMubGFiZWwuc2V0KGNvbmZpZy5sYWJlbCA/PyAnJyk7XG4gICAgdGhpcy5oaW50LnNldChjb25maWcuaGludCA/PyAnJyk7XG4gICAgdGhpcy5yZXF1aXJlZC5zZXQoY29uZmlnLnJlcXVpcmVkID8/IGZhbHNlKTtcbiAgICB0aGlzLm1heExlbmd0aC5zZXQoY29uZmlnLm1heExlbmd0aCk7XG4gICAgdGhpcy5taW5MZW5ndGguc2V0KGNvbmZpZy5taW5MZW5ndGgpO1xuICAgIHRoaXMuc2hvd0NsZWFyLnNldChjb25maWcuc2hvd0NsZWFyID8/IGZhbHNlKTtcbiAgICB0aGlzLnNob3dDb3VudGVyLnNldChjb25maWcuc2hvd0NvdW50ZXIgPz8gZmFsc2UpO1xuICAgIHRoaXMuZnVsbFdpZHRoLnNldChjb25maWcuZnVsbFdpZHRoID8/IHRydWUpO1xuICAgIHRoaXMuZmxvYXRpbmdMYWJlbC5zZXQoY29uZmlnLmZsb2F0aW5nTGFiZWwgPz8gZmFsc2UpO1xuXG4gICAgaWYgKGNvbmZpZy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMuZGlydHkuc2V0KHRydWUpO1xuICAgICAgdGhpcy50b3VjaGVkLnNldCh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBMaWZlY3ljbGUgaG9va3NcbiAgICB0aGlzLm9uRm9jdXMgPSBzaWduYWwoKCkgPT4ge1xuICAgICAgLyogbm9vcCAqL1xuICAgIH0pO1xuICAgIHRoaXMub25CbHVyID0gc2lnbmFsKCgpID0+IHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2hhbmdlID0gc2lnbmFsKCgpID0+IHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2xlYXIgPSBzaWduYWwoKCkgPT4ge1xuICAgICAgLyogbm9vcCAqL1xuICAgIH0pO1xuICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlID0gc2lnbmFsKCgpID0+IHtcbiAgICAgIC8qIG5vb3AgKi9cbiAgICB9KTtcblxuICAgIC8vIOKUgOKUgCBDb21wdXRlZCDilIDilIBcblxuICAgIHRoaXMuY2hhckNvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZSgpLmxlbmd0aCk7XG5cbiAgICB0aGlzLmhhc0NvbnRlbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZhbHVlKCkubGVuZ3RoID4gMCk7XG5cbiAgICB0aGlzLmlzQWN0aXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb2N1c2VkKCkgfHwgdGhpcy5oYXNDb250ZW50KCkpO1xuXG4gICAgdGhpcy5pc092ZXJMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBtYXggPSB0aGlzLm1heExlbmd0aCgpO1xuICAgICAgcmV0dXJuIG1heCAhPSBudWxsID8gdGhpcy52YWx1ZSgpLmxlbmd0aCA+IG1heCA6IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc1VuZGVyTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgbWluID0gdGhpcy5taW5MZW5ndGgoKTtcbiAgICAgIHJldHVybiBtaW4gIT0gbnVsbCAmJiB0aGlzLnRvdWNoZWQoKSA/IHRoaXMudmFsdWUoKS5sZW5ndGggPCBtaW4gOiBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1cygpID09PSAnZXJyb3InKTtcbiAgICB0aGlzLmhhc1N1Y2Nlc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1cygpID09PSAnc3VjY2VzcycpO1xuICAgIHRoaXMuaGFzV2FybmluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdHVzKCkgPT09ICd3YXJuaW5nJyk7XG4gICAgdGhpcy5pc0ludmFsaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhhc0Vycm9yKCkgfHwgdGhpcy5pc092ZXJMZW5ndGgoKSB8fCB0aGlzLmlzVW5kZXJMZW5ndGgoKSk7XG5cbiAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiAhdGhpcy5oYXNDb250ZW50KCkgJiYgIXRoaXMuZm9jdXNlZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zaG91bGRGbG9hdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZsb2F0aW5nTGFiZWwoKSkgcmV0dXJuIHRoaXMuaXNBY3RpdmUoKSB8fCB0aGlzLmhhc0NvbnRlbnQoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMubGVhZGluZ0FkZG9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWRkb25zKCkuZmlsdGVyKChhKSA9PiBhLnBvc2l0aW9uID09PSAnbGVhZGluZycpKTtcblxuICAgIHRoaXMudHJhaWxpbmdBZGRvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFkZG9ucygpLmZpbHRlcigoYSkgPT4gYS5wb3NpdGlvbiA9PT0gJ3RyYWlsaW5nJykpO1xuXG4gICAgdGhpcy5oYXNMZWFkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sZWFkaW5nQWRkb25zKCkubGVuZ3RoID4gMCk7XG4gICAgdGhpcy5oYXNUcmFpbGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhaWxpbmdBZGRvbnMoKS5sZW5ndGggPiAwKTtcblxuICAgIHRoaXMuaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAncGFzc3dvcmQnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhc3N3b3JkVmlzaWJsZSgpID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnR5cGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBWYWx1ZSBPcGVyYXRpb25zIOKUgOKUgFxuXG4gIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XG4gICAgdGhpcy5kaXJ0eS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5fcnVuVmFsaWRhdGlvbih2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSgpKHZhbHVlKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMub25DbGVhcigpKCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlKCk7XG4gIH1cblxuICAvLyDilIDilIAgRm9jdXMgT3BlcmF0aW9ucyDilIDilIBcblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWQuc2V0KHRydWUpO1xuICAgIHRoaXMub25Gb2N1cygpKCk7XG4gIH1cblxuICBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMudG91Y2hlZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5fcnVuVmFsaWRhdGlvbih0aGlzLnZhbHVlKCkpO1xuICAgIHRoaXMub25CbHVyKCkoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBQYXNzd29yZCDilIDilIBcblxuICB0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgdGhpcy5wYXNzd29yZFZpc2libGUudXBkYXRlKCh2KSA9PiAhdik7XG4gIH1cblxuICAvLyDilIDilIAgTG9hZGluZyDilIDilIBcblxuICBzaG93TG9hZGluZygpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICB9XG5cbiAgaGlkZUxvYWRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICAvLyDilIDilIAgQWRkLW9ucyDilIDilIBcblxuICBhZGRBZGRvbihhZGRvbjogSW5wdXRHcm91cEFkZG9uKTogdm9pZCB7XG4gICAgdGhpcy5hZGRvbnMudXBkYXRlKChsaXN0KSA9PiBbLi4ubGlzdCwgYWRkb25dKTtcbiAgfVxuXG4gIHJlbW92ZUFkZG9uKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFkZG9ucy51cGRhdGUoKGxpc3QpID0+IGxpc3QuZmlsdGVyKChhKSA9PiBhLmlkICE9PSBpZCkpO1xuICB9XG5cbiAgLy8g4pSA4pSAIFZhbGlkYXRpb24g4pSA4pSAXG5cbiAgc2V0U3RhdHVzKHN0YXR1czogVmFsaWRhdGlvblN0YXR1cywgbWVzc2FnZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHN0YXR1cyk7XG4gICAgdGhpcy5tZXNzYWdlLnNldChtZXNzYWdlKTtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpKHN0YXR1cywgbWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIF9ydW5WYWxpZGF0aW9uKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLl9jb25maWcudmFsaWRhdG9yO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgICB0aGlzLnN0YXR1cy5zZXQocmVzdWx0LnN0YXR1cyk7XG4gICAgICB0aGlzLm1lc3NhZ2Uuc2V0KHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCkocmVzdWx0LnN0YXR1cywgcmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEJ1aWx0LWluIHZhbGlkYXRpb25zXG4gICAgaWYgKHRoaXMucmVxdWlyZWQoKSAmJiAhdmFsdWUpIHtcbiAgICAgIHRoaXMuc3RhdHVzLnNldCgnZXJyb3InKTtcbiAgICAgIHRoaXMubWVzc2FnZS5zZXQoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCkoJ2Vycm9yJywgJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc092ZXJMZW5ndGgoKSkge1xuICAgICAgdGhpcy5zdGF0dXMuc2V0KCdlcnJvcicpO1xuICAgICAgdGhpcy5tZXNzYWdlLnNldChgTWF4aW11bSAke3RoaXMubWF4TGVuZ3RoKCl9IGNoYXJhY3RlcnNgKTtcbiAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCkoJ2Vycm9yJywgYE1heGltdW0gJHt0aGlzLm1heExlbmd0aCgpfSBjaGFyYWN0ZXJzYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNVbmRlckxlbmd0aCgpKSB7XG4gICAgICB0aGlzLnN0YXR1cy5zZXQoJ2Vycm9yJyk7XG4gICAgICB0aGlzLm1lc3NhZ2Uuc2V0KGBNaW5pbXVtICR7dGhpcy5taW5MZW5ndGgoKX0gY2hhcmFjdGVyc2ApO1xuICAgICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKSgnZXJyb3InLCBgTWluaW11bSAke3RoaXMubWluTGVuZ3RoKCl9IGNoYXJhY3RlcnNgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXR1cy5zZXQoJ25vbmUnKTtcbiAgICB0aGlzLm1lc3NhZ2Uuc2V0KCcnKTtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpKCdub25lJywgJycpO1xuXG4gICAgLy8gQXN5bmMgdmFsaWRhdGlvblxuICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9yID0gdGhpcy5fY29uZmlnLmFzeW5jVmFsaWRhdG9yO1xuICAgIGlmIChhc3luY1ZhbGlkYXRvciAmJiB2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuX2FzeW5jVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLl9hc3luY1RpbWVyKTtcbiAgICAgIHRoaXMuc3RhdHVzLnNldCgncGVuZGluZycpO1xuICAgICAgdGhpcy5tZXNzYWdlLnNldCgnJyk7XG4gICAgICB0aGlzLl9hc3luY1RpbWVyID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFzeW5jVmFsaWRhdG9yKHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUoKSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnN0YXR1cy5zZXQocmVzdWx0KTtcbiAgICAgICAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpKHJlc3VsdCwgJycpO1xuICAgICAgICB9XG4gICAgICB9LCB0aGlzLl9jb25maWcuYXN5bmNEZWJvdW5jZSA/PyAzMDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIOKUgOKUgCBSZXNldCDilIDilIBcblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldCh0aGlzLl9jb25maWcuaW5pdGlhbFZhbHVlID8/ICcnKTtcbiAgICB0aGlzLmZvY3VzZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnRvdWNoZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmRpcnR5LnNldChmYWxzZSk7XG4gICAgdGhpcy5zdGF0dXMuc2V0KCdub25lJyk7XG4gICAgdGhpcy5tZXNzYWdlLnNldCgnJyk7XG4gICAgdGhpcy5wYXNzd29yZFZpc2libGUuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBFbmFibGUvRGlzYWJsZSDilIDilIBcblxuICBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldCh0cnVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './input-group.model';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvaW5wdXQtZ3JvdXAvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lucHV0LWdyb3VwLm1vZGVsJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvaW5wdXQtZ3JvdXAvbW9kZWxzL2lucHV0LWdyb3VwLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU3VwcG9ydGVkIEhUTUwgaW5wdXQgdHlwZXMgdGhhdCB0aGUgZ3JvdXAgY2FuIHdyYXAuICovXG5leHBvcnQgdHlwZSBJbnB1dEdyb3VwSW5wdXRUeXBlID1cbiAgfCAndGV4dCdcbiAgfCAncGFzc3dvcmQnXG4gIHwgJ2VtYWlsJ1xuICB8ICdudW1iZXInXG4gIHwgJ3NlYXJjaCdcbiAgfCAndGVsJ1xuICB8ICd1cmwnXG4gIHwgJ2RhdGUnXG4gIHwgJ3RpbWUnXG4gIHwgJ2RhdGV0aW1lLWxvY2FsJ1xuICB8ICdjb2xvcidcbiAgfCAnZmlsZSc7XG5cbi8qKiBWaXN1YWwgdmFyaWFudCBvZiB0aGUgaW5wdXQgZ3JvdXAgY29udGFpbmVyLiAqL1xuZXhwb3J0IHR5cGUgSW5wdXRHcm91cFZhcmlhbnQgPSAnb3V0bGluZWQnIHwgJ2ZpbGxlZCcgfCAnc29mdCcgfCAnZ2hvc3QnIHwgJ3VuZGVybGluZSc7XG5cbi8qKiBTaXplIHByZXNldCBjb250cm9sbGluZyBoZWlnaHQsIHBhZGRpbmcsIGFuZCBmb250IHNpemUuICovXG5leHBvcnQgdHlwZSBJbnB1dEdyb3VwU2l6ZSA9ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCc7XG5cbi8qKiBDb3JuZXIgcmFkaXVzIHByZXNldC4gKi9cbmV4cG9ydCB0eXBlIElucHV0R3JvdXBSYWRpdXMgPSAnbm9uZScgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnIHwgJ3BpbGwnO1xuXG4vKiogRGVuc2l0eSBwcmVzZXQgY29udHJvbGxpbmcgc3BhY2luZy4gKi9cbmV4cG9ydCB0eXBlIElucHV0R3JvdXBEZW5zaXR5ID0gJ2NvbXBhY3QnIHwgJ2NvbWZvcnRhYmxlJyB8ICdzcGFjaW91cyc7XG5cbi8qKiBWYWxpZGF0aW9uIHN0YXR1cyBkaXNwbGF5ZWQgb24gdGhlIGdyb3VwLiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblN0YXR1cyA9ICdlcnJvcicgfCAnd2FybmluZycgfCAnc3VjY2VzcycgfCAnaW5mbycgfCAncGVuZGluZycgfCAnbm9uZSc7XG5cbi8qKiBQb3NpdGlvbiBvZiBhbiBhZGQtb24gZWxlbWVudC4gKi9cbmV4cG9ydCB0eXBlIEFkZG9uUG9zaXRpb24gPSAnbGVhZGluZycgfCAndHJhaWxpbmcnO1xuXG4vKiogQ29udGVudCB0eXBlIGZvciBhbiBhZGQtb24gc2xvdC4gKi9cbmV4cG9ydCB0eXBlIEFkZG9uQ29udGVudFR5cGUgPVxuICAndGV4dCcgfCAnaWNvbicgfCAnYnV0dG9uJyB8ICdhdmF0YXInIHwgJ2JhZGdlJyB8ICdjaGlwJyB8ICd0b2dnbGUnIHwgJ3NwaW5uZXInIHwgJ2N1c3RvbSc7XG5cbi8qKiBDb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSBhZGQtb24gZWxlbWVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRHcm91cEFkZG9uIHtcbiAgLyoqIFVuaXF1ZSBrZXkgZm9yIHRyYWNraW5nLiAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICAvKiogUG9zaXRpb246IGxlYWRpbmcgb3IgdHJhaWxpbmcuICovXG4gIHJlYWRvbmx5IHBvc2l0aW9uOiBBZGRvblBvc2l0aW9uO1xuICAvKiogV2hhdCBraW5kIG9mIGNvbnRlbnQgdGhpcyBhZGQtb24gaG9sZHMuICovXG4gIHJlYWRvbmx5IGNvbnRlbnRUeXBlOiBBZGRvbkNvbnRlbnRUeXBlO1xuICAvKiogVGV4dCBjb250ZW50ICh3aGVuIGNvbnRlbnRUeXBlIGlzICd0ZXh0JykuICovXG4gIHJlYWRvbmx5IHRleHQ/OiBzdHJpbmc7XG4gIC8qKiBJY29uIG5hbWUgb3IgU1ZHIHBhdGggKHdoZW4gY29udGVudFR5cGUgaXMgJ2ljb24nKS4gKi9cbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhpcyBhZGQtb24gaXMgaW50ZXJhY3RpdmUgKGNsaWNrYWJsZSkuICovXG4gIHJlYWRvbmx5IGludGVyYWN0aXZlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhpcyBhZGQtb24gaXMgZGlzYWJsZWQuICovXG4gIHJlYWRvbmx5IGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3MgYXBwbGllZCB0byB0aGUgYWRkLW9uIGVsZW1lbnQuICovXG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcbiAgLyoqIEFSSUEgbGFiZWwgZm9yIHRoZSBhZGQtb24uICovXG4gIHJlYWRvbmx5IGFyaWFMYWJlbD86IHN0cmluZztcbiAgLyoqIFRvb2x0aXAgdGV4dCBmb3IgdGhlIGFkZC1vbi4gKi9cbiAgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgLyoqIFRlbXBsYXRlIGtleSBmb3IgY3VzdG9tIHJlbmRlcmluZy4gKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVLZXk/OiBzdHJpbmc7XG59XG5cbi8qKiBGdWxsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnB1dCBncm91cC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRHcm91cENvbmZpZyB7XG4gIC8qKiBIVE1MIGlucHV0IHR5cGUuICovXG4gIHR5cGU/OiBJbnB1dEdyb3VwSW5wdXRUeXBlO1xuICAvKiogVmlzdWFsIHZhcmlhbnQuICovXG4gIHZhcmlhbnQ/OiBJbnB1dEdyb3VwVmFyaWFudDtcbiAgLyoqIFNpemUuICovXG4gIHNpemU/OiBJbnB1dEdyb3VwU2l6ZTtcbiAgLyoqIENvcm5lciByYWRpdXMuICovXG4gIHJhZGl1cz86IElucHV0R3JvdXBSYWRpdXM7XG4gIC8qKiBEZW5zaXR5LiAqL1xuICBkZW5zaXR5PzogSW5wdXRHcm91cERlbnNpdHk7XG4gIC8qKiBXaGV0aGVyIHRoZSBlbnRpcmUgZ3JvdXAgaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGlzIHJlYWQtb25seS4gKi9cbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuICAvKiogUGxhY2Vob2xkZXIgdGV4dC4gKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBMYWJlbCB0ZXh0IChjYW4gYWxzbyBiZSBwcm92aWRlZCB2aWEgdGVtcGxhdGUpLiAqL1xuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIEhpbnQgdGV4dCBiZWxvdyB0aGUgaW5wdXQuICovXG4gIGhpbnQ/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZC4gKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAvKiogTWF4aW11bSBjaGFyYWN0ZXIgbGVuZ3RoLiAqL1xuICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIC8qKiBNaW5pbXVtIGNoYXJhY3RlciBsZW5ndGguICovXG4gIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyBhIGNsZWFyIGJ1dHRvbi4gKi9cbiAgc2hvd0NsZWFyPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyBhIGNoYXJhY3RlciBjb3VudGVyLiAqL1xuICBzaG93Q291bnRlcj86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCB0YWtlcyBmdWxsIHdpZHRoLiAqL1xuICBmdWxsV2lkdGg/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgbG9hZGluZy4gKi9cbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCBncm91cCBzdXBwb3J0cyBSVEwuICovXG4gIHJ0bD86IGJvb2xlYW47XG4gIC8qKiBGbG9hdGluZyBsYWJlbCBtb2RlLiAqL1xuICBmbG9hdGluZ0xhYmVsPzogYm9vbGVhbjtcbn1cblxuLyoqIFJ1bnRpbWUgc3RhdGUgdHJhY2tlZCBieSB0aGUgZW5naW5lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dEdyb3VwU3RhdGUge1xuICAvKiogQ3VycmVudCB2YWx1ZS4gKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGhhcyBmb2N1cy4gKi9cbiAgcmVhZG9ubHkgZm9jdXNlZDogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIG1vdXNlIGlzIGhvdmVyaW5nLiAqL1xuICByZWFkb25seSBob3ZlcmVkOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgdmFsdWUgaGFzIGJlZW4gdG91Y2hlZCAoYmx1cnJlZCBhdCBsZWFzdCBvbmNlKS4gKi9cbiAgcmVhZG9ubHkgdG91Y2hlZDogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIHZhbHVlIGhhcyBiZWVuIG1vZGlmaWVkIGZyb20gaW5pdGlhbC4gKi9cbiAgcmVhZG9ubHkgZGlydHk6IGJvb2xlYW47XG4gIC8qKiBDdXJyZW50IHZhbGlkYXRpb24gc3RhdHVzLiAqL1xuICByZWFkb25seSBzdGF0dXM6IFZhbGlkYXRpb25TdGF0dXM7XG4gIC8qKiBWYWxpZGF0aW9uIG1lc3NhZ2UgdGV4dC4gKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgZGlzYWJsZWQuICovXG4gIHJlYWRvbmx5IGRpc2FibGVkOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgcmVhZC1vbmx5LiAqL1xuICByZWFkb25seSByZWFkb25seTogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIHBhc3N3b3JkIGlzIGN1cnJlbnRseSB2aXNpYmxlIChyZXZlYWwgdG9nZ2xlKS4gKi9cbiAgcmVhZG9ubHkgcGFzc3dvcmRWaXNpYmxlOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgbG9hZGluZyBpbmRpY2F0b3IgaXMgc2hvd2luZy4gKi9cbiAgcmVhZG9ubHkgbG9hZGluZzogYm9vbGVhbjtcbiAgLyoqIEN1cnJlbnQgY2hhcmFjdGVyIGNvdW50LiAqL1xuICByZWFkb25seSBjaGFyQ291bnQ6IG51bWJlcjtcbiAgLyoqIFJlZ2lzdGVyZWQgYWRkLW9ucy4gKi9cbiAgcmVhZG9ubHkgYWRkb25zOiByZWFkb25seSBJbnB1dEdyb3VwQWRkb25bXTtcbiAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGhhcyBjb250ZW50IChmb3IgZmxvYXRpbmcgbGFiZWwgcG9zaXRpb25pbmcpLiAqL1xuICByZWFkb25seSBoYXNDb250ZW50OiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1pbnB1dC1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9pbnB1dC1ncm91cC9uZ3hzbWstY2RrLWlucHV0LWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './listbox-keyboard';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbGlzdGJveC1rZXlib2FyZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saXN0Ym94LWtleWJvYXJkJztcbiJdfQ==
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { signal } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Shared arrow-key navigation for dropdown listboxes.
|
|
4
|
+
*
|
|
5
|
+
* Encapsulates `activeIndex`, `move(delta)`, `scrollActiveIntoView()`, and the
|
|
6
|
+
* full `onKeydown()` handler. Components provide only their option list and
|
|
7
|
+
* CSS selector.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* private readonly kb = new ListboxKeyboard({
|
|
11
|
+
* optionSelector: '.ngxsmk-combobox__option',
|
|
12
|
+
* options: () => this.filtered(),
|
|
13
|
+
* host: this.host,
|
|
14
|
+
* });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class ListboxKeyboard {
|
|
18
|
+
constructor(config) {
|
|
19
|
+
this.activeIndex = signal(-1);
|
|
20
|
+
this.config = config;
|
|
21
|
+
}
|
|
22
|
+
/** Override the host element used for scroll queries (e.g. for portals). */
|
|
23
|
+
setHost(host) {
|
|
24
|
+
this.config.host = host;
|
|
25
|
+
}
|
|
26
|
+
/** Move the active index by `delta` positions, wrapping around. */
|
|
27
|
+
move(delta) {
|
|
28
|
+
const opts = this.config.options();
|
|
29
|
+
if (!opts.length)
|
|
30
|
+
return;
|
|
31
|
+
let next = this.activeIndex() + delta;
|
|
32
|
+
const min = this.config.placeholderIndex ?? 0;
|
|
33
|
+
for (let guard = 0; guard <= opts.length; guard++) {
|
|
34
|
+
if (next < min) {
|
|
35
|
+
next = opts.length - 1;
|
|
36
|
+
}
|
|
37
|
+
else if (next > opts.length - 1) {
|
|
38
|
+
next = min;
|
|
39
|
+
}
|
|
40
|
+
if (!this.config.skipDisabled || next === min || !opts[next]?.disabled) {
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
next += delta;
|
|
44
|
+
}
|
|
45
|
+
this.activeIndex.set(next);
|
|
46
|
+
this.scrollActiveIntoView();
|
|
47
|
+
}
|
|
48
|
+
/** Scroll the active option into view within the host element. */
|
|
49
|
+
scrollActiveIntoView() {
|
|
50
|
+
requestAnimationFrame(() => {
|
|
51
|
+
const host = this.config.host?.nativeElement;
|
|
52
|
+
if (!host)
|
|
53
|
+
return;
|
|
54
|
+
const items = host.querySelectorAll(this.config.optionSelector);
|
|
55
|
+
let idx = this.activeIndex();
|
|
56
|
+
// Offset by 1 if there's a placeholder before the options
|
|
57
|
+
if (this.config.placeholderIndex !== undefined && idx >= 0) {
|
|
58
|
+
idx += 1;
|
|
59
|
+
}
|
|
60
|
+
items[idx]?.scrollIntoView({ block: 'nearest' });
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/** Jump to the first enabled option. */
|
|
64
|
+
home() {
|
|
65
|
+
const opts = this.config.options();
|
|
66
|
+
if (!opts.length)
|
|
67
|
+
return;
|
|
68
|
+
const min = this.config.placeholderIndex ?? 0;
|
|
69
|
+
if (this.config.skipDisabled) {
|
|
70
|
+
const first = opts.findIndex((o) => !o.disabled);
|
|
71
|
+
this.activeIndex.set(first >= 0 ? first : min);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.activeIndex.set(min);
|
|
75
|
+
}
|
|
76
|
+
this.scrollActiveIntoView();
|
|
77
|
+
}
|
|
78
|
+
/** Jump to the last option. */
|
|
79
|
+
end() {
|
|
80
|
+
const opts = this.config.options();
|
|
81
|
+
if (!opts.length)
|
|
82
|
+
return;
|
|
83
|
+
this.activeIndex.set(opts.length - 1);
|
|
84
|
+
this.scrollActiveIntoView();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Handle a keyboard event for listbox navigation.
|
|
88
|
+
*
|
|
89
|
+
* @returns `true` if the event was handled, `false` if the caller should
|
|
90
|
+
* handle it (e.g. for typeahead or open/close toggling).
|
|
91
|
+
*/
|
|
92
|
+
handleKeydown(event, callbacks = {}) {
|
|
93
|
+
const opts = this.config.options();
|
|
94
|
+
const isOpen = callbacks.isOpen?.() ?? true;
|
|
95
|
+
switch (event.key) {
|
|
96
|
+
case 'ArrowDown':
|
|
97
|
+
event.preventDefault();
|
|
98
|
+
if (!isOpen) {
|
|
99
|
+
callbacks.onOpen?.();
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.move(1);
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
case 'ArrowUp':
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
if (isOpen) {
|
|
108
|
+
this.move(-1);
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
case 'Home':
|
|
112
|
+
if (isOpen && opts.length) {
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
this.home();
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
117
|
+
case 'End':
|
|
118
|
+
if (isOpen && opts.length) {
|
|
119
|
+
event.preventDefault();
|
|
120
|
+
this.end();
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
case 'Enter':
|
|
124
|
+
case ' ':
|
|
125
|
+
case 'Spacebar':
|
|
126
|
+
if (isOpen) {
|
|
127
|
+
event.preventDefault();
|
|
128
|
+
const idx = this.activeIndex();
|
|
129
|
+
if (idx >= 0 && opts[idx]) {
|
|
130
|
+
callbacks.onSelect?.(idx);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return true;
|
|
134
|
+
case 'Escape':
|
|
135
|
+
if (isOpen) {
|
|
136
|
+
event.preventDefault();
|
|
137
|
+
callbacks.onClose?.();
|
|
138
|
+
}
|
|
139
|
+
return true;
|
|
140
|
+
default:
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC1rZXlib2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9saXN0Ym94LWtleWJvYXJkL2xpc3Rib3gta2V5Ym9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQW9CbkQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUFZLE1BQTZCO1FBSmhDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFLaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELDRFQUE0RTtJQUM1RSxPQUFPLENBQUMsSUFBNkI7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsSUFBSSxDQUFDLEtBQWE7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXpCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUM7UUFFOUMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNsRCxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDZixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQztpQkFBTSxJQUFJLElBQUksR0FBRyxJQUFJ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QUFHLENBQUMsRUFBRSxDQUFDO3dCQUMxQixTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzVCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQztZQUVkLEtBQUssUUFBUTtnQkFDWCxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ3hCLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFFZDtnQkFDRSxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgbGlzdGJveCBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICpcbiAqIEBwcm9wZXJ0eSBvcHRpb25TZWxlY3RvciAtIENTUyBzZWxlY3RvciBmb3Igb3B0aW9uIGVsZW1lbnRzXG4gKiBAcHJvcGVydHkgb3B0aW9ucyAtIEZ1bmN0aW9uIHJldHVybmluZyB0aGUgY3VycmVudCBvcHRpb24gbGlzdFxuICogQHByb3BlcnR5IGhvc3QgLSBPcHRpb25hbCBob3N0IGVsZW1lbnQgZm9yIHNjcm9sbCBxdWVyaWVzIChkZWZhdWx0cyB0byBpbmplY3QoRWxlbWVudFJlZikpXG4gKiBAcHJvcGVydHkgcGxhY2Vob2xkZXJJbmRleCAtIEluZGV4IGZvciB0aGUgcGxhY2Vob2xkZXIgaXRlbSAoLTEgaWYgbm9uZSlcbiAqIEBwcm9wZXJ0eSBza2lwRGlzYWJsZWQgLSBXaGV0aGVyIHRvIHNraXAgZGlzYWJsZWQgb3B0aW9ucyBkdXJpbmcgbmF2aWdhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3Rib3hLZXlib2FyZENvbmZpZyB7XG4gIG9wdGlvblNlbGVjdG9yOiBzdHJpbmc7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIG9wdGlvbnM6ICgpID0+IGFueVtdO1xuICBob3N0PzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHBsYWNlaG9sZGVySW5kZXg/OiBudW1iZXI7XG4gIHNraXBEaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU2hhcmVkIGFycm93LWtleSBuYXZpZ2F0aW9uIGZvciBkcm9wZG93biBsaXN0Ym94ZXMuXG4gKlxuICogRW5jYXBzdWxhdGVzIGBhY3RpdmVJbmRleGAsIGBtb3ZlKGRlbHRhKWAsIGBzY3JvbGxBY3RpdmVJbnRvVmlldygpYCwgYW5kIHRoZVxuICogZnVsbCBgb25LZXlkb3duKClgIGhhbmRsZXIuIENvbXBvbmVudHMgcHJvdmlkZSBvbmx5IHRoZWlyIG9wdGlvbiBsaXN0IGFuZFxuICogQ1NTIHNlbGVjdG9yLlxuICpcbiAqIGBgYHRzXG4gKiBwcml2YXRlIHJlYWRvbmx5IGtiID0gbmV3IExpc3Rib3hLZXlib2FyZCh7XG4gKiAgIG9wdGlvblNlbGVjdG9yOiAnLm5neHNtay1jb21ib2JveF9fb3B0aW9uJyxcbiAqICAgb3B0aW9uczogKCkgPT4gdGhpcy5maWx0ZXJlZCgpLFxuICogICBob3N0OiB0aGlzLmhvc3QsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgTGlzdGJveEtleWJvYXJkIHtcbiAgcmVhZG9ubHkgYWN0aXZlSW5kZXggPSBzaWduYWwoLTEpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBMaXN0Ym94S2V5Ym9hcmRDb25maWc7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBMaXN0Ym94S2V5Ym9hcmRDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIC8qKiBPdmVycmlkZSB0aGUgaG9zdCBlbGVtZW50IHVzZWQgZm9yIHNjcm9sbCBxdWVyaWVzIChlLmcuIGZvciBwb3J0YWxzKS4gKi9cbiAgc2V0SG9zdChob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnLmhvc3QgPSBob3N0O1xuICB9XG5cbiAgLyoqIE1vdmUgdGhlIGFjdGl2ZSBpbmRleCBieSBgZGVsdGFgIHBvc2l0aW9ucywgd3JhcHBpbmcgYXJvdW5kLiAqL1xuICBtb3ZlKGRlbHRhOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRzID0gdGhpcy5jb25maWcub3B0aW9ucygpO1xuICAgIGlmICghb3B0cy5sZW5ndGgpIHJldHVybjtcblxuICAgIGxldCBuZXh0ID0gdGhpcy5hY3RpdmVJbmRleCgpICsgZGVsdGE7XG4gICAgY29uc3QgbWluID0gdGhpcy5jb25maWcucGxhY2Vob2xkZXJJbmRleCA/PyAwO1xuXG4gICAgZm9yIChsZXQgZ3VhcmQgPSAwOyBndWFyZCA8PSBvcHRzLmxlbmd0aDsgZ3VhcmQrKykge1xuICAgICAgaWYgKG5leHQgPCBtaW4pIHtcbiAgICAgICAgbmV4dCA9IG9wdHMubGVuZ3RoIC0gMTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dCA+IG9wdHMubGVuZ3RoIC0gMSkge1xuICAgICAgICBuZXh0ID0gbWluO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5za2lwRGlzYWJsZWQgfHwgbmV4dCA9PT0gbWluIHx8ICFvcHRzW25leHRdPy5kaXNhYmxlZCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5leHQgKz0gZGVsdGE7XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVJbmRleC5zZXQobmV4dCk7XG4gICAgdGhpcy5zY3JvbGxBY3RpdmVJbnRvVmlldygpO1xuICB9XG5cbiAgLyoqIFNjcm9sbCB0aGUgYWN0aXZlIG9wdGlvbiBpbnRvIHZpZXcgd2l0aGluIHRoZSBob3N0IGVsZW1lbnQuICovXG4gIHNjcm9sbEFjdGl2ZUludG9WaWV3KCk6IHZvaWQge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBjb25zdCBob3N0ID0gdGhpcy5jb25maWcuaG9zdD8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmICghaG9zdCkgcmV0dXJuO1xuICAgICAgY29uc3QgaXRlbXMgPSBob3N0LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KHRoaXMuY29uZmlnLm9wdGlvblNlbGVjdG9yKTtcbiAgICAgIGxldCBpZHggPSB0aGlzLmFjdGl2ZUluZGV4KCk7XG4gICAgICAvLyBPZmZzZXQgYnkgMSBpZiB0aGVyZSdzIGEgcGxhY2Vob2xkZXIgYmVmb3JlIHRoZSBvcHRpb25zXG4gICAgICBpZiAodGhpcy5jb25maWcucGxhY2Vob2xkZXJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGlkeCA+PSAwKSB7XG4gICAgICAgIGlkeCArPSAxO1xuICAgICAgfVxuICAgICAgaXRlbXNbaWR4XT8uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEp1bXAgdG8gdGhlIGZpcnN0IGVuYWJsZWQgb3B0aW9uLiAqL1xuICBob21lKCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdHMgPSB0aGlzLmNvbmZpZy5vcHRpb25zKCk7XG4gICAgaWYgKCFvcHRzLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IG1pbiA9IHRoaXMuY29uZmlnLnBsYWNlaG9sZGVySW5kZXggPz8gMDtcbiAgICBpZiAodGhpcy5jb25maWcuc2tpcERpc2FibGVkKSB7XG4gICAgICBjb25zdCBmaXJzdCA9IG9wdHMuZmluZEluZGV4KChvKSA9PiAhby5kaXNhYmxlZCk7XG4gICAgICB0aGlzLmFjdGl2ZUluZGV4LnNldChmaXJzdCA+PSAwID8gZmlyc3QgOiBtaW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2ZUluZGV4LnNldChtaW4pO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbEFjdGl2ZUludG9WaWV3KCk7XG4gIH1cblxuICAvKiogSnVtcCB0byB0aGUgbGFzdCBvcHRpb24uICovXG4gIGVuZCgpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRzID0gdGhpcy5jb25maWcub3B0aW9ucygpO1xuICAgIGlmICghb3B0cy5sZW5ndGgpIHJldHVybjtcbiAgICB0aGlzLmFjdGl2ZUluZGV4LnNldChvcHRzLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMuc2Nyb2xsQWN0aXZlSW50b1ZpZXcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYSBrZXlib2FyZCBldmVudCBmb3IgbGlzdGJveCBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGV2ZW50IHdhcyBoYW5kbGVkLCBgZmFsc2VgIGlmIHRoZSBjYWxsZXIgc2hvdWxkXG4gICAqICAgaGFuZGxlIGl0IChlLmcuIGZvciB0eXBlYWhlYWQgb3Igb3Blbi9jbG9zZSB0b2dnbGluZykuXG4gICAqL1xuICBoYW5kbGVLZXlkb3duKFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgIGNhbGxiYWNrczoge1xuICAgICAgb25TZWxlY3Q/OiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgICAgIG9uT3Blbj86ICgpID0+IHZvaWQ7XG4gICAgICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAgICAgIGlzT3Blbj86ICgpID0+IGJvb2xlYW47XG4gICAgfSA9IHt9LFxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCBvcHRzID0gdGhpcy5jb25maWcub3B0aW9ucygpO1xuICAgIGNvbnN0IGlzT3BlbiA9IGNhbGxiYWNrcy5pc09wZW4/LigpID8/IHRydWU7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCFpc09wZW4pIHtcbiAgICAgICAgICBjYWxsYmFja3Mub25PcGVuPy4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1vdmUoMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5tb3ZlKC0xKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgIGlmIChpc09wZW4gJiYgb3B0cy5sZW5ndGgpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuaG9tZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICBpZiAoaXNPcGVuICYmIG9wdHMubGVuZ3RoKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLmVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgIGNhc2UgJ1NwYWNlYmFyJzpcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5hY3RpdmVJbmRleCgpO1xuICAgICAgICAgIGlmIChpZHggPj0gMCAmJiBvcHRzW2lkeF0pIHtcbiAgICAgICAgICAgIGNhbGxiYWNrcy5vblNlbGVjdD8uKGlkeCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjYWxsYmFja3Mub25DbG9zZT8uKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1saXN0Ym94LWtleWJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2xpc3Rib3gta2V5Ym9hcmQvbmd4c21rLWNkay1saXN0Ym94LWtleWJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|