@radix-ng/primitives 0.18.2 → 0.20.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/avatar/index.d.ts +1 -2
- package/avatar/src/avatar-fallback.directive.d.ts +11 -23
- package/avatar/src/avatar-image.directive.d.ts +10 -14
- package/avatar/src/avatar-root.directive.d.ts +5 -15
- package/checkbox/index.d.ts +11 -0
- package/checkbox/src/checkbox-button.directive.d.ts +1 -1
- package/checkbox/src/checkbox-indicator.directive.d.ts +1 -1
- package/checkbox/src/checkbox-input.directive.d.ts +1 -1
- package/checkbox/src/checkbox.directive.d.ts +1 -1
- package/compodoc/documentation.json +9385 -4858
- package/core/index.d.ts +2 -0
- package/core/src/control-value-accessor/index.d.ts +75 -0
- package/core/src/create-inject-context/assert-injector.d.ts +51 -0
- package/core/src/create-inject-context/index.d.ts +68 -0
- package/core/src/types.d.ts +23 -0
- package/esm2022/avatar/index.mjs +1 -1
- package/esm2022/avatar/src/avatar-fallback.directive.mjs +38 -40
- package/esm2022/avatar/src/avatar-image.directive.mjs +25 -26
- package/esm2022/avatar/src/avatar-root.directive.mjs +13 -25
- package/esm2022/checkbox/index.mjs +31 -1
- package/esm2022/checkbox/src/checkbox-button.directive.mjs +3 -3
- package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +3 -3
- package/esm2022/checkbox/src/checkbox-input.directive.mjs +3 -3
- package/esm2022/checkbox/src/checkbox.directive.mjs +3 -3
- package/esm2022/core/index.mjs +3 -1
- package/esm2022/core/src/control-value-accessor/index.mjs +103 -0
- package/esm2022/core/src/create-inject-context/assert-injector.mjs +15 -0
- package/esm2022/core/src/create-inject-context/index.mjs +116 -0
- package/esm2022/core/src/types.mjs +2 -0
- package/esm2022/popover/index.mjs +41 -0
- package/esm2022/popover/radix-ng-primitives-popover.mjs +5 -0
- package/esm2022/popover/src/popover-arrow.directive.mjs +112 -0
- package/esm2022/popover/src/popover-arrow.token.mjs +3 -0
- package/esm2022/popover/src/popover-close.directive.mjs +37 -0
- package/esm2022/popover/src/popover-content.directive.mjs +227 -0
- package/esm2022/popover/src/popover-root.directive.mjs +142 -0
- package/esm2022/popover/src/popover-root.inject.mjs +7 -0
- package/esm2022/popover/src/popover-root.token.mjs +3 -0
- package/esm2022/popover/src/popover-trigger.directive.mjs +42 -0
- package/esm2022/popover/src/popover.constants.mjs +90 -0
- package/esm2022/popover/src/popover.types.mjs +14 -0
- package/esm2022/popover/src/popover.utils.mjs +115 -0
- package/esm2022/radio/index.mjs +2 -1
- package/esm2022/radio/src/radio-item-input.directive.mjs +37 -0
- package/esm2022/radio/src/radio-item.directive.mjs +55 -39
- package/esm2022/radio/src/radio-root.directive.mjs +30 -120
- package/esm2022/radio/src/radio-tokens.mjs +1 -1
- package/esm2022/roving-focus/index.mjs +3 -0
- package/esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs +5 -0
- package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +138 -0
- package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +133 -0
- package/esm2022/roving-focus/src/utils.mjs +47 -0
- package/esm2022/select/src/select-item.directive.mjs +8 -2
- package/esm2022/toggle/src/toggle-input.directive.mjs +4 -3
- package/fesm2022/radix-ng-primitives-avatar.mjs +70 -85
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +35 -10
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +230 -3
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +796 -0
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-radio.mjs +145 -186
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +320 -0
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-select.mjs +7 -1
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +3 -2
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/package.json +18 -6
- package/popover/README.md +3 -0
- package/popover/index.d.ts +17 -0
- package/popover/src/popover-arrow.directive.d.ts +37 -0
- package/popover/src/popover-arrow.token.d.ts +3 -0
- package/popover/src/popover-close.directive.d.ts +15 -0
- package/popover/src/popover-content.directive.d.ts +84 -0
- package/popover/src/popover-root.directive.d.ts +58 -0
- package/popover/src/popover-root.inject.d.ts +2 -0
- package/popover/src/popover-root.token.d.ts +3 -0
- package/popover/src/popover-trigger.directive.d.ts +18 -0
- package/popover/src/popover.constants.d.ts +8 -0
- package/popover/src/popover.types.d.ts +34 -0
- package/popover/src/popover.utils.d.ts +12 -0
- package/radio/index.d.ts +1 -0
- package/radio/src/radio-item-input.directive.d.ts +12 -0
- package/radio/src/radio-item.directive.d.ts +23 -14
- package/radio/src/radio-root.directive.d.ts +19 -34
- package/radio/src/radio-tokens.d.ts +6 -4
- package/roving-focus/README.md +3 -0
- package/roving-focus/index.d.ts +3 -0
- package/roving-focus/src/roving-focus-group.directive.d.ts +50 -0
- package/roving-focus/src/roving-focus-item.directive.d.ts +50 -0
- package/roving-focus/src/utils.d.ts +19 -0
- package/select/src/select-item.directive.d.ts +7 -1
- package/toggle/src/toggle-input.directive.d.ts +1 -1
@@ -0,0 +1,42 @@
|
|
1
|
+
import { CdkOverlayOrigin } from '@angular/cdk/overlay';
|
2
|
+
import { computed, Directive, ElementRef, inject, input } from '@angular/core';
|
3
|
+
import { injectPopoverRoot } from './popover-root.inject';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "@angular/cdk/overlay";
|
6
|
+
let nextId = 0;
|
7
|
+
export class RdxPopoverTriggerDirective {
|
8
|
+
constructor() {
|
9
|
+
this.id = input(`rdx-popover-root-${nextId++}`);
|
10
|
+
this.popoverId = computed(() => `rdx-popover-${this.id()}`);
|
11
|
+
/** @ignore */
|
12
|
+
this.popoverRoot = injectPopoverRoot();
|
13
|
+
/** @ignore */
|
14
|
+
this.elementRef = inject((ElementRef));
|
15
|
+
/** @ignore */
|
16
|
+
this.overlayOrigin = inject(CdkOverlayOrigin);
|
17
|
+
}
|
18
|
+
/** @ignore */
|
19
|
+
onClick() {
|
20
|
+
this.popoverRoot.handleToggle();
|
21
|
+
}
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxPopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
23
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxPopoverTriggerDirective, isStandalone: true, selector: "[rdxPopoverTrigger]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button" }, listeners: { "click": "onClick()" }, properties: { "attr.id": "id()", "attr.aria-haspopup": "\"dialog\"", "attr.aria-expanded": "popoverRoot.isOpen()", "attr.aria-controls": "popoverId()", "attr.data-state": "popoverRoot.state()" } }, hostDirectives: [{ directive: i1.CdkOverlayOrigin }], ngImport: i0 }); }
|
24
|
+
}
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxPopoverTriggerDirective, decorators: [{
|
26
|
+
type: Directive,
|
27
|
+
args: [{
|
28
|
+
selector: '[rdxPopoverTrigger]',
|
29
|
+
standalone: true,
|
30
|
+
hostDirectives: [CdkOverlayOrigin],
|
31
|
+
host: {
|
32
|
+
type: 'button',
|
33
|
+
'[attr.id]': 'id()',
|
34
|
+
'[attr.aria-haspopup]': '"dialog"',
|
35
|
+
'[attr.aria-expanded]': 'popoverRoot.isOpen()',
|
36
|
+
'[attr.aria-controls]': 'popoverId()',
|
37
|
+
'[attr.data-state]': 'popoverRoot.state()',
|
38
|
+
'(click)': 'onClick()'
|
39
|
+
}
|
40
|
+
}]
|
41
|
+
}] });
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRTFELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQWdCZixNQUFNLE9BQU8sMEJBQTBCO0lBZHZDO1FBZWEsT0FBRSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLGNBQWM7UUFDTCxnQkFBVyxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDM0MsY0FBYztRQUNMLGVBQVUsR0FBRyxNQUFNLENBQTBCLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFDL0UsY0FBYztRQUNMLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FNckQ7SUFKRyxjQUFjO0lBQ2QsT0FBTztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQzsrR0FkUSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFkdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsY0FBYyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2xDLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsTUFBTTt3QkFDbkIsc0JBQXNCLEVBQUUsVUFBVTt3QkFDbEMsc0JBQXNCLEVBQUUsc0JBQXNCO3dCQUM5QyxzQkFBc0IsRUFBRSxhQUFhO3dCQUNyQyxtQkFBbUIsRUFBRSxxQkFBcUI7d0JBQzFDLFNBQVMsRUFBRSxXQUFXO3FCQUN6QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka092ZXJsYXlPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBjb21wdXRlZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RQb3BvdmVyUm9vdCB9IGZyb20gJy4vcG9wb3Zlci1yb290LmluamVjdCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhQb3BvdmVyVHJpZ2dlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtDZGtPdmVybGF5T3JpZ2luXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkKCknLFxuICAgICAgICAnW2F0dHIuYXJpYS1oYXNwb3B1cF0nOiAnXCJkaWFsb2dcIicsXG4gICAgICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdwb3BvdmVyUm9vdC5pc09wZW4oKScsXG4gICAgICAgICdbYXR0ci5hcmlhLWNvbnRyb2xzXSc6ICdwb3BvdmVySWQoKScsXG4gICAgICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdwb3BvdmVyUm9vdC5zdGF0ZSgpJyxcbiAgICAgICAgJyhjbGljayknOiAnb25DbGljaygpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUge1xuICAgIHJlYWRvbmx5IGlkID0gaW5wdXQoYHJkeC1wb3BvdmVyLXJvb3QtJHtuZXh0SWQrK31gKTtcbiAgICByZWFkb25seSBwb3BvdmVySWQgPSBjb21wdXRlZCgoKSA9PiBgcmR4LXBvcG92ZXItJHt0aGlzLmlkKCl9YCk7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IHBvcG92ZXJSb290ID0gaW5qZWN0UG9wb3ZlclJvb3QoKTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHJlYWRvbmx5IG92ZXJsYXlPcmlnaW4gPSBpbmplY3QoQ2RrT3ZlcmxheU9yaWdpbik7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wb3ZlclJvb3QuaGFuZGxlVG9nZ2xlKCk7XG4gICAgfVxufVxuIl19
|
@@ -0,0 +1,90 @@
|
|
1
|
+
import { RdxPopoverAlign, RdxPopoverSide } from './popover.types';
|
2
|
+
export const POPOVER_POSITIONS = {
|
3
|
+
[RdxPopoverSide.Top]: {
|
4
|
+
[RdxPopoverAlign.Center]: {
|
5
|
+
originX: 'center',
|
6
|
+
originY: 'top',
|
7
|
+
overlayX: 'center',
|
8
|
+
overlayY: 'bottom'
|
9
|
+
},
|
10
|
+
[RdxPopoverAlign.Start]: {
|
11
|
+
originX: 'start',
|
12
|
+
originY: 'top',
|
13
|
+
overlayX: 'start',
|
14
|
+
overlayY: 'bottom'
|
15
|
+
},
|
16
|
+
[RdxPopoverAlign.End]: {
|
17
|
+
originX: 'end',
|
18
|
+
originY: 'top',
|
19
|
+
overlayX: 'end',
|
20
|
+
overlayY: 'bottom'
|
21
|
+
}
|
22
|
+
},
|
23
|
+
[RdxPopoverSide.Right]: {
|
24
|
+
[RdxPopoverAlign.Center]: {
|
25
|
+
originX: 'end',
|
26
|
+
originY: 'center',
|
27
|
+
overlayX: 'start',
|
28
|
+
overlayY: 'center'
|
29
|
+
},
|
30
|
+
[RdxPopoverAlign.Start]: {
|
31
|
+
originX: 'end',
|
32
|
+
originY: 'top',
|
33
|
+
overlayX: 'start',
|
34
|
+
overlayY: 'top'
|
35
|
+
},
|
36
|
+
[RdxPopoverAlign.End]: {
|
37
|
+
originX: 'end',
|
38
|
+
originY: 'bottom',
|
39
|
+
overlayX: 'start',
|
40
|
+
overlayY: 'bottom'
|
41
|
+
}
|
42
|
+
},
|
43
|
+
[RdxPopoverSide.Bottom]: {
|
44
|
+
[RdxPopoverAlign.Center]: {
|
45
|
+
originX: 'center',
|
46
|
+
originY: 'bottom',
|
47
|
+
overlayX: 'center',
|
48
|
+
overlayY: 'top'
|
49
|
+
},
|
50
|
+
[RdxPopoverAlign.Start]: {
|
51
|
+
originX: 'start',
|
52
|
+
originY: 'bottom',
|
53
|
+
overlayX: 'start',
|
54
|
+
overlayY: 'top'
|
55
|
+
},
|
56
|
+
[RdxPopoverAlign.End]: {
|
57
|
+
originX: 'end',
|
58
|
+
originY: 'bottom',
|
59
|
+
overlayX: 'end',
|
60
|
+
overlayY: 'top'
|
61
|
+
}
|
62
|
+
},
|
63
|
+
[RdxPopoverSide.Left]: {
|
64
|
+
[RdxPopoverAlign.Center]: {
|
65
|
+
originX: 'start',
|
66
|
+
originY: 'center',
|
67
|
+
overlayX: 'end',
|
68
|
+
overlayY: 'center'
|
69
|
+
},
|
70
|
+
[RdxPopoverAlign.Start]: {
|
71
|
+
originX: 'start',
|
72
|
+
originY: 'top',
|
73
|
+
overlayX: 'end',
|
74
|
+
overlayY: 'top'
|
75
|
+
},
|
76
|
+
[RdxPopoverAlign.End]: {
|
77
|
+
originX: 'start',
|
78
|
+
originY: 'bottom',
|
79
|
+
overlayX: 'end',
|
80
|
+
overlayY: 'bottom'
|
81
|
+
}
|
82
|
+
}
|
83
|
+
};
|
84
|
+
export const DEFAULTS = {
|
85
|
+
offsets: {
|
86
|
+
side: 10,
|
87
|
+
align: 10
|
88
|
+
}
|
89
|
+
};
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3BvcG92ZXIvc3JjL3BvcG92ZXIuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXVCLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXZGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUF3QjtJQUNsRCxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNsQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0QixPQUFPLEVBQUUsUUFBUTtZQUNqQixPQUFPLEVBQUUsS0FBSztZQUNkLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxRQUFRO1NBQ3JCO1FBQ0QsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckIsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsUUFBUTtTQUNyQjtRQUNELENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxRQUFRO1NBQ3JCO0tBQ0o7SUFDRCxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNwQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0QixPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFFBQVEsRUFBRSxRQUFRO1NBQ3JCO1FBQ0QsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckIsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsS0FBSztZQUNkLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFFBQVEsRUFBRSxLQUFLO1NBQ2xCO1FBQ0QsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsUUFBUTtZQUNqQixRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsUUFBUTtTQUNyQjtLQUNKO0lBQ0QsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDckIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEIsT0FBTyxFQUFFLFFBQVE7WUFDakIsT0FBTyxFQUFFLFFBQVE7WUFDakIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEtBQUs7U0FDbEI7UUFDRCxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQixPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsUUFBUTtZQUNqQixRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsS0FBSztTQUNsQjtRQUNELENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUFFLFFBQVE7WUFDakIsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsS0FBSztTQUNsQjtLQUNKO0lBQ0QsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbkIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLFFBQVE7WUFDakIsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsUUFBUTtTQUNyQjtRQUNELENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsS0FBSztTQUNsQjtRQUNELENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsUUFBUSxFQUFFLFFBQVE7U0FDckI7S0FDSjtDQUNLLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDcEIsT0FBTyxFQUFFO1FBQ0wsSUFBSSxFQUFFLEVBQUU7UUFDUixLQUFLLEVBQUUsRUFBRTtLQUNaO0NBQ0ssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJkeFBvcG92ZXJBbGlnbiwgUmR4UG9wb3ZlclBvc2l0aW9ucywgUmR4UG9wb3ZlclNpZGUgfSBmcm9tICcuL3BvcG92ZXIudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgUE9QT1ZFUl9QT1NJVElPTlM6IFJkeFBvcG92ZXJQb3NpdGlvbnMgPSB7XG4gICAgW1JkeFBvcG92ZXJTaWRlLlRvcF06IHtcbiAgICAgICAgW1JkeFBvcG92ZXJBbGlnbi5DZW50ZXJdOiB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nXG4gICAgICAgIH0sXG4gICAgICAgIFtSZHhQb3BvdmVyQWxpZ24uU3RhcnRdOiB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgICB9LFxuICAgICAgICBbUmR4UG9wb3ZlckFsaWduLkVuZF06IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgW1JkeFBvcG92ZXJTaWRlLlJpZ2h0XToge1xuICAgICAgICBbUmR4UG9wb3ZlckFsaWduLkNlbnRlcl06IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2NlbnRlcicsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJ1xuICAgICAgICB9LFxuICAgICAgICBbUmR4UG9wb3ZlckFsaWduLlN0YXJ0XToge1xuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgIH0sXG4gICAgICAgIFtSZHhQb3BvdmVyQWxpZ24uRW5kXToge1xuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFtSZHhQb3BvdmVyU2lkZS5Cb3R0b21dOiB7XG4gICAgICAgIFtSZHhQb3BvdmVyQWxpZ24uQ2VudGVyXToge1xuICAgICAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICB9LFxuICAgICAgICBbUmR4UG9wb3ZlckFsaWduLlN0YXJ0XToge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgICAgfSxcbiAgICAgICAgW1JkeFBvcG92ZXJBbGlnbi5FbmRdOiB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFtSZHhQb3BvdmVyU2lkZS5MZWZ0XToge1xuICAgICAgICBbUmR4UG9wb3ZlckFsaWduLkNlbnRlcl06IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAnY2VudGVyJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJ1xuICAgICAgICB9LFxuICAgICAgICBbUmR4UG9wb3ZlckFsaWduLlN0YXJ0XToge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgIH0sXG4gICAgICAgIFtSZHhQb3BvdmVyQWxpZ24uRW5kXToge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nXG4gICAgICAgIH1cbiAgICB9XG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVFMgPSB7XG4gICAgb2Zmc2V0czoge1xuICAgICAgICBzaWRlOiAxMCxcbiAgICAgICAgYWxpZ246IDEwXG4gICAgfVxufSBhcyBjb25zdDtcbiJdfQ==
|
@@ -0,0 +1,14 @@
|
|
1
|
+
export var RdxPopoverSide;
|
2
|
+
(function (RdxPopoverSide) {
|
3
|
+
RdxPopoverSide["Top"] = "top";
|
4
|
+
RdxPopoverSide["Right"] = "right";
|
5
|
+
RdxPopoverSide["Bottom"] = "bottom";
|
6
|
+
RdxPopoverSide["Left"] = "left";
|
7
|
+
})(RdxPopoverSide || (RdxPopoverSide = {}));
|
8
|
+
export var RdxPopoverAlign;
|
9
|
+
(function (RdxPopoverAlign) {
|
10
|
+
RdxPopoverAlign["Start"] = "start";
|
11
|
+
RdxPopoverAlign["Center"] = "center";
|
12
|
+
RdxPopoverAlign["End"] = "end";
|
13
|
+
})(RdxPopoverAlign || (RdxPopoverAlign = {}));
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3RCLDZCQUFXLENBQUE7SUFDWCxpQ0FBZSxDQUFBO0lBQ2YsbUNBQWlCLENBQUE7SUFDakIsK0JBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3ZCLGtDQUFlLENBQUE7SUFDZixvQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGlvblBvc2l0aW9uUGFpciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuZXhwb3J0IGVudW0gUmR4UG9wb3ZlclNpZGUge1xuICAgIFRvcCA9ICd0b3AnLFxuICAgIFJpZ2h0ID0gJ3JpZ2h0JyxcbiAgICBCb3R0b20gPSAnYm90dG9tJyxcbiAgICBMZWZ0ID0gJ2xlZnQnXG59XG5cbmV4cG9ydCBlbnVtIFJkeFBvcG92ZXJBbGlnbiB7XG4gICAgU3RhcnQgPSAnc3RhcnQnLFxuICAgIENlbnRlciA9ICdjZW50ZXInLFxuICAgIEVuZCA9ICdlbmQnXG59XG5cbmV4cG9ydCB0eXBlIFJkeFBvcG92ZXJTdGF0ZSA9ICdvcGVuJyB8ICdjbG9zZWQnO1xuXG5leHBvcnQgdHlwZSBSZHhTaWRlQW5kQWxpZ24gPSB7IHNpZGU6IFJkeFBvcG92ZXJTaWRlOyBhbGlnbjogUmR4UG9wb3ZlckFsaWduIH07XG5leHBvcnQgdHlwZSBSZHhTaWRlQW5kQWxpZ25PZmZzZXRzID0geyBzaWRlT2Zmc2V0OiBudW1iZXI7IGFsaWduT2Zmc2V0OiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgUmR4UG9wb3ZlclBvc2l0aW9ucyA9IHtcbiAgICBba2V5IGluIFJkeFBvcG92ZXJTaWRlXToge1xuICAgICAgICBba2V5IGluIFJkeFBvcG92ZXJBbGlnbl06IENvbm5lY3Rpb25Qb3NpdGlvblBhaXI7XG4gICAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFJkeEFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zID0gUmVhZG9ubHlNYXA8XG4gICAgYCR7UmR4UG9wb3ZlclNpZGV9fCR7UmR4UG9wb3ZlckFsaWdufWAsXG4gICAgQ29ubmVjdGlvblBvc2l0aW9uUGFpclxuPjtcblxuZXhwb3J0IHR5cGUgUmR4QXJyb3dQb3NpdGlvblBhcmFtcyA9IHtcbiAgICB0b3A6IHN0cmluZztcbiAgICBib3R0b206IHN0cmluZztcbiAgICBsZWZ0OiBzdHJpbmc7XG4gICAgcmlnaHQ6IHN0cmluZztcbiAgICB0cmFuc2Zvcm06IHN0cmluZztcbn07XG4iXX0=
|
@@ -0,0 +1,115 @@
|
|
1
|
+
import { POPOVER_POSITIONS } from './popover.constants';
|
2
|
+
import { RdxPopoverAlign, RdxPopoverSide } from './popover.types';
|
3
|
+
let allPossibleConnectedPositions;
|
4
|
+
export function getAllPossibleConnectedPositions() {
|
5
|
+
if (!allPossibleConnectedPositions) {
|
6
|
+
allPossibleConnectedPositions = new Map();
|
7
|
+
}
|
8
|
+
if (allPossibleConnectedPositions.size < 1) {
|
9
|
+
Object.keys(POPOVER_POSITIONS).forEach((side) => {
|
10
|
+
Object.keys(POPOVER_POSITIONS[side] ?? {}).forEach((align) => {
|
11
|
+
allPossibleConnectedPositions.set(`${side}|${align}`, POPOVER_POSITIONS[side][align]);
|
12
|
+
});
|
13
|
+
});
|
14
|
+
}
|
15
|
+
return allPossibleConnectedPositions;
|
16
|
+
}
|
17
|
+
export function getSideAndAlignFromAllPossibleConnectedPositions(position) {
|
18
|
+
const allPossibleConnectedPositions = getAllPossibleConnectedPositions();
|
19
|
+
let sideAndAlign;
|
20
|
+
allPossibleConnectedPositions.forEach((value, key) => {
|
21
|
+
if (position.originX === value.originX &&
|
22
|
+
position.originY === value.originY &&
|
23
|
+
position.overlayX === value.overlayX &&
|
24
|
+
position.overlayY === value.overlayY) {
|
25
|
+
const sideAndAlignArray = key.split('|');
|
26
|
+
sideAndAlign = {
|
27
|
+
side: sideAndAlignArray[0],
|
28
|
+
align: sideAndAlignArray[1]
|
29
|
+
};
|
30
|
+
}
|
31
|
+
});
|
32
|
+
if (!sideAndAlign) {
|
33
|
+
throw Error(`[RdxPopover] cannot infer both side and align from the given position (${JSON.stringify(position)})`);
|
34
|
+
}
|
35
|
+
return sideAndAlign;
|
36
|
+
}
|
37
|
+
export function getContentPosition(sideAndAlignWithOffsets) {
|
38
|
+
const { side, align, sideOffset, alignOffset } = sideAndAlignWithOffsets;
|
39
|
+
const position = {
|
40
|
+
...(POPOVER_POSITIONS[side]?.[align] ?? POPOVER_POSITIONS[RdxPopoverSide.Top][RdxPopoverAlign.Center])
|
41
|
+
};
|
42
|
+
if (sideOffset > 0) {
|
43
|
+
let xFactor = 0;
|
44
|
+
let yFactor = 0;
|
45
|
+
switch (side) {
|
46
|
+
case RdxPopoverSide.Top:
|
47
|
+
yFactor = -1;
|
48
|
+
break;
|
49
|
+
case RdxPopoverSide.Bottom:
|
50
|
+
yFactor = 1;
|
51
|
+
break;
|
52
|
+
case RdxPopoverSide.Left:
|
53
|
+
xFactor = -1;
|
54
|
+
break;
|
55
|
+
case RdxPopoverSide.Right:
|
56
|
+
xFactor = 1;
|
57
|
+
break;
|
58
|
+
}
|
59
|
+
position.offsetX = xFactor * sideOffset;
|
60
|
+
position.offsetY = yFactor * sideOffset;
|
61
|
+
}
|
62
|
+
if ([RdxPopoverAlign.Start, RdxPopoverAlign.End].includes(align) && alignOffset) {
|
63
|
+
const alignOffsetFactor = align === RdxPopoverAlign.End ? -1 : 1;
|
64
|
+
position.offsetX = alignOffsetFactor * alignOffset;
|
65
|
+
}
|
66
|
+
return position;
|
67
|
+
}
|
68
|
+
export function getArrowPositionParams(sideAndAlign, arrowWidthAndHeight, triggerWidthAndHeight) {
|
69
|
+
const posParams = {
|
70
|
+
top: '',
|
71
|
+
bottom: '',
|
72
|
+
left: '',
|
73
|
+
right: '',
|
74
|
+
transform: ''
|
75
|
+
};
|
76
|
+
if ([RdxPopoverSide.Top, RdxPopoverSide.Bottom].includes(sideAndAlign.side)) {
|
77
|
+
if (sideAndAlign.side === RdxPopoverSide.Top) {
|
78
|
+
posParams.top = '100%';
|
79
|
+
}
|
80
|
+
else {
|
81
|
+
posParams.top = `-${arrowWidthAndHeight.height}px`;
|
82
|
+
posParams.transform = `rotate(180deg)`;
|
83
|
+
}
|
84
|
+
if (sideAndAlign.align === RdxPopoverAlign.Start) {
|
85
|
+
posParams.left = `${(triggerWidthAndHeight.width - arrowWidthAndHeight.width) / 2}px`;
|
86
|
+
}
|
87
|
+
else if (sideAndAlign.align === RdxPopoverAlign.Center) {
|
88
|
+
posParams.left = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;
|
89
|
+
}
|
90
|
+
else if (sideAndAlign.align === RdxPopoverAlign.End) {
|
91
|
+
posParams.right = `${(triggerWidthAndHeight.width - arrowWidthAndHeight.width) / 2}px`;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
else if ([RdxPopoverSide.Left, RdxPopoverSide.Right].includes(sideAndAlign.side)) {
|
95
|
+
if (sideAndAlign.side === RdxPopoverSide.Left) {
|
96
|
+
posParams.right = `-${arrowWidthAndHeight.width}px`;
|
97
|
+
posParams.transform = `rotate(-90deg) translate(0, -50%)`;
|
98
|
+
}
|
99
|
+
else {
|
100
|
+
posParams.left = `-${arrowWidthAndHeight.width}px`;
|
101
|
+
posParams.transform = `rotate(90deg) translate(0, -50%)`;
|
102
|
+
}
|
103
|
+
if (sideAndAlign.align === RdxPopoverAlign.Start) {
|
104
|
+
posParams.top = `${(triggerWidthAndHeight.height - arrowWidthAndHeight.height) / 2}px`;
|
105
|
+
}
|
106
|
+
else if (sideAndAlign.align === RdxPopoverAlign.Center) {
|
107
|
+
posParams.top = `calc(50% - ${arrowWidthAndHeight.height / 2}px)`;
|
108
|
+
}
|
109
|
+
else if (sideAndAlign.align === RdxPopoverAlign.End) {
|
110
|
+
posParams.bottom = `${(triggerWidthAndHeight.height - arrowWidthAndHeight.height) / 2}px`;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
return posParams;
|
114
|
+
}
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcG9wb3Zlci9zcmMvcG9wb3Zlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBR0gsZUFBZSxFQUNmLGNBQWMsRUFHakIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixJQUFJLDZCQUErRCxDQUFDO0FBQ3BFLE1BQU0sVUFBVSxnQ0FBZ0M7SUFDNUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDakMsNkJBQTZCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMxRSw2QkFBK0MsQ0FBQyxHQUFHLENBQ2hELEdBQUcsSUFBc0IsSUFBSSxLQUF3QixFQUFFLEVBQ3ZELGlCQUFpQixDQUFDLElBQXNCLENBQUMsQ0FBQyxLQUF3QixDQUFDLENBQ3RFLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sNkJBQTZCLENBQUM7QUFDekMsQ0FBQztBQUVELE1BQU0sVUFBVSxnREFBZ0QsQ0FBQyxRQUFnQztJQUM3RixNQUFNLDZCQUE2QixHQUFHLGdDQUFnQyxFQUFFLENBQUM7SUFDekUsSUFBSSxZQUF5QyxDQUFDO0lBQzlDLDZC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QUFDO1FBQ2pGLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLG1CQUFtQixDQUFDLEtBQUssSUFBSSxDQUFDO1lBQ3BELFNBQVMsQ0FBQyxTQUFTLEdBQUcsbUNBQW1DLENBQUM7UUFDOUQsQ0FBQzthQUFNLENBQUM7WUFDSixTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksbUJBQW1CLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDbkQsU0FBUyxDQUFDLFNBQVMsR0FBRyxrQ0FBa0MsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvQyxTQUFTLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDM0YsQ0FBQzthQUFNLElBQUksWUFBWSxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkQsU0FBUyxDQUFDLEdBQUcsR0FBRyxjQUFjLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN0RSxDQUFDO2FBQU0sSUFBSSxZQUFZLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwRCxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDOUYsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQT1BPVkVSX1BPU0lUSU9OUyB9IGZyb20gJy4vcG9wb3Zlci5jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBSZHhBbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyxcbiAgICBSZHhBcnJvd1Bvc2l0aW9uUGFyYW1zLFxuICAgIFJkeFBvcG92ZXJBbGlnbixcbiAgICBSZHhQb3BvdmVyU2lkZSxcbiAgICBSZHhTaWRlQW5kQWxpZ24sXG4gICAgUmR4U2lkZUFuZEFsaWduT2Zmc2V0c1xufSBmcm9tICcuL3BvcG92ZXIudHlwZXMnO1xuXG5sZXQgYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnM6IFJkeEFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zKCkge1xuICAgIGlmICghYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMpIHtcbiAgICAgICAgYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGlmIChhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucy5zaXplIDwgMSkge1xuICAgICAgICBPYmplY3Qua2V5cyhQT1BPVkVSX1BPU0lUSU9OUykuZm9yRWFjaCgoc2lkZSkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoUE9QT1ZFUl9QT1NJVElPTlNbc2lkZSBhcyBSZHhQb3BvdmVyU2lkZV0gPz8ge30pLmZvckVhY2goKGFsaWduKSA9PiB7XG4gICAgICAgICAgICAgICAgKGFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zIGFzIE1hcDxhbnksIGFueT4pLnNldChcbiAgICAgICAgICAgICAgICAgICAgYCR7c2lkZSBhcyBSZHhQb3BvdmVyU2lkZX18JHthbGlnbiBhcyBSZHhQb3BvdmVyQWxpZ259YCxcbiAgICAgICAgICAgICAgICAgICAgUE9QT1ZFUl9QT1NJVElPTlNbc2lkZSBhcyBSZHhQb3BvdmVyU2lkZV1bYWxpZ24gYXMgUmR4UG9wb3ZlckFsaWduXVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpZGVBbmRBbGlnbkZyb21BbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyhwb3NpdGlvbjogQ29ubmVjdGlvblBvc2l0aW9uUGFpcik6IFJkeFNpZGVBbmRBbGlnbiB7XG4gICAgY29uc3QgYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMgPSBnZXRBbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucygpO1xuICAgIGxldCBzaWRlQW5kQWxpZ246IFJkeFNpZGVBbmRBbGlnbiB8IHVuZGVmaW5lZDtcbiAgICBhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBvc2l0aW9uLm9yaWdpblggPT09IHZhbHVlLm9yaWdpblggJiZcbiAgICAgICAgICAgIHBvc2l0aW9uLm9yaWdpblkgPT09IHZhbHVlLm9yaWdpblkgJiZcbiAgICAgICAgICAgIHBvc2l0aW9uLm92ZXJsYXlYID09PSB2YWx1ZS5vdmVybGF5WCAmJlxuICAgICAgICAgICAgcG9zaXRpb24ub3ZlcmxheVkgPT09IHZhbHVlLm92ZXJsYXlZXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc2lkZUFuZEFsaWduQXJyYXkgPSBrZXkuc3BsaXQoJ3wnKTtcbiAgICAgICAgICAgIHNpZGVBbmRBbGlnbiA9IHtcbiAgICAgICAgICAgICAgICBzaWRlOiBzaWRlQW5kQWxpZ25BcnJheVswXSBhcyBSZHhQb3BvdmVyU2lkZSxcbiAgICAgICAgICAgICAgICBhbGlnbjogc2lkZUFuZEFsaWduQXJyYXlbMV0gYXMgUmR4UG9wb3ZlckFsaWduXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFzaWRlQW5kQWxpZ24pIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBgW1JkeFBvcG92ZXJdIGNhbm5vdCBpbmZlciBib3RoIHNpZGUgYW5kIGFsaWduIGZyb20gdGhlIGdpdmVuIHBvc2l0aW9uICgke0pTT04uc3RyaW5naWZ5KHBvc2l0aW9uKX0pYFxuICAgICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gc2lkZUFuZEFsaWduO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udGVudFBvc2l0aW9uKFxuICAgIHNpZGVBbmRBbGlnbldpdGhPZmZzZXRzOiBSZHhTaWRlQW5kQWxpZ24gJiBSZHhTaWRlQW5kQWxpZ25PZmZzZXRzXG4pOiBDb25uZWN0ZWRQb3NpdGlvbiB7XG4gICAgY29uc3QgeyBzaWRlLCBhbGlnbiwgc2lkZU9mZnNldCwgYWxpZ25PZmZzZXQgfSA9IHNpZGVBbmRBbGlnbldpdGhPZmZzZXRzO1xuXG4gICAgY29uc3QgcG9zaXRpb24gPSB7XG4gICAgICAgIC4uLihQT1BPVkVSX1BPU0lUSU9OU1tzaWRlXT8uW2FsaWduXSA/PyBQT1BPVkVSX1BPU0lUSU9OU1tSZHhQb3BvdmVyU2lkZS5Ub3BdW1JkeFBvcG92ZXJBbGlnbi5DZW50ZXJdKVxuICAgIH07XG5cbiAgICBpZiAoc2lkZU9mZnNldCA+IDApIHtcbiAgICAgICAgbGV0IHhGYWN0b3IgPSAwO1xuICAgICAgICBsZXQgeUZhY3RvciA9IDA7XG5cbiAgICAgICAgc3dpdGNoIChzaWRlKSB7XG4gICAgICAgICAgICBjYXNlIFJkeFBvcG92ZXJTaWRlLlRvcDpcbiAgICAgICAgICAgICAgICB5RmFjdG9yID0gLTE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJkeFBvcG92ZXJTaWRlLkJvdHRvbTpcbiAgICAgICAgICAgICAgICB5RmFjdG9yID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUmR4UG9wb3ZlclNpZGUuTGVmdDpcbiAgICAgICAgICAgICAgICB4RmFjdG9yID0gLTE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJkeFBvcG92ZXJTaWRlLlJpZ2h0OlxuICAgICAgICAgICAgICAgIHhGYWN0b3IgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zaXRpb24ub2Zmc2V0WCA9IHhGYWN0b3IgKiBzaWRlT2Zmc2V0O1xuICAgICAgICBwb3NpdGlvbi5vZmZzZXRZID0geUZhY3RvciAqIHNpZGVPZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKFtSZHhQb3BvdmVyQWxpZ24uU3RhcnQsIFJkeFBvcG92ZXJBbGlnbi5FbmRdLmluY2x1ZGVzKGFsaWduKSAmJiBhbGlnbk9mZnNldCkge1xuICAgICAgICBjb25zdCBhbGlnbk9mZnNldEZhY3RvciA9IGFsaWduID09PSBSZHhQb3BvdmVyQWxpZ24uRW5kID8gLTEgOiAxO1xuXG4gICAgICAgIHBvc2l0aW9uLm9mZnNldFggPSBhbGlnbk9mZnNldEZhY3RvciAqIGFsaWduT2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFycm93UG9zaXRpb25QYXJhbXMoXG4gICAgc2lkZUFuZEFsaWduOiBSZHhTaWRlQW5kQWxpZ24sXG4gICAgYXJyb3dXaWR0aEFuZEhlaWdodDogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9LFxuICAgIHRyaWdnZXJXaWR0aEFuZEhlaWdodDogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9XG4pOiBSZHhBcnJvd1Bvc2l0aW9uUGFyYW1zIHtcbiAgICBjb25zdCBwb3NQYXJhbXMgPSB7XG4gICAgICAgIHRvcDogJycsXG4gICAgICAgIGJvdHRvbTogJycsXG4gICAgICAgIGxlZnQ6ICcnLFxuICAgICAgICByaWdodDogJycsXG4gICAgICAgIHRyYW5zZm9ybTogJydcbiAgICB9O1xuXG4gICAgaWYgKFtSZHhQb3BvdmVyU2lkZS5Ub3AsIFJkeFBvcG92ZXJTaWRlLkJvdHRvbV0uaW5jbHVkZXMoc2lkZUFuZEFsaWduLnNpZGUpKSB7XG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uc2lkZSA9PT0gUmR4UG9wb3ZlclNpZGUuVG9wKSB7XG4gICAgICAgICAgICBwb3NQYXJhbXMudG9wID0gJzEwMCUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRvcCA9IGAtJHthcnJvd1dpZHRoQW5kSGVpZ2h0LmhlaWdodH1weGA7XG4gICAgICAgICAgICBwb3NQYXJhbXMudHJhbnNmb3JtID0gYHJvdGF0ZSgxODBkZWcpYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5TdGFydCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLmxlZnQgPSBgJHsodHJpZ2dlcldpZHRoQW5kSGVpZ2h0LndpZHRoIC0gYXJyb3dXaWR0aEFuZEhlaWdodC53aWR0aCkgLyAyfXB4YDtcbiAgICAgICAgfSBlbHNlIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5DZW50ZXIpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy5sZWZ0ID0gYGNhbGMoNTAlIC0gJHthcnJvd1dpZHRoQW5kSGVpZ2h0LndpZHRoIC8gMn1weClgO1xuICAgICAgICB9IGVsc2UgaWYgKHNpZGVBbmRBbGlnbi5hbGlnbiA9PT0gUmR4UG9wb3ZlckFsaWduLkVuZCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnJpZ2h0ID0gYCR7KHRyaWdnZXJXaWR0aEFuZEhlaWdodC53aWR0aCAtIGFycm93V2lkdGhBbmRIZWlnaHQud2lkdGgpIC8gMn1weGA7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFtSZHhQb3BvdmVyU2lkZS5MZWZ0LCBSZHhQb3BvdmVyU2lkZS5SaWdodF0uaW5jbHVkZXMoc2lkZUFuZEFsaWduLnNpZGUpKSB7XG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uc2lkZSA9PT0gUmR4UG9wb3ZlclNpZGUuTGVmdCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnJpZ2h0ID0gYC0ke2Fycm93V2lkdGhBbmRIZWlnaHQud2lkdGh9cHhgO1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRyYW5zZm9ybSA9IGByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGUoMCwgLTUwJSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zUGFyYW1zLmxlZnQgPSBgLSR7YXJyb3dXaWR0aEFuZEhlaWdodC53aWR0aH1weGA7XG4gICAgICAgICAgICBwb3NQYXJhbXMudHJhbnNmb3JtID0gYHJvdGF0ZSg5MGRlZykgdHJhbnNsYXRlKDAsIC01MCUpYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5TdGFydCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRvcCA9IGAkeyh0cmlnZ2VyV2lkdGhBbmRIZWlnaHQuaGVpZ2h0IC0gYXJyb3dXaWR0aEFuZEhlaWdodC5oZWlnaHQpIC8gMn1weGA7XG4gICAgICAgIH0gZWxzZSBpZiAoc2lkZUFuZEFsaWduLmFsaWduID09PSBSZHhQb3BvdmVyQWxpZ24uQ2VudGVyKSB7XG4gICAgICAgICAgICBwb3NQYXJhbXMudG9wID0gYGNhbGMoNTAlIC0gJHthcnJvd1dpZHRoQW5kSGVpZ2h0LmhlaWdodCAvIDJ9cHgpYDtcbiAgICAgICAgfSBlbHNlIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvcG92ZXJBbGlnbi5FbmQpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy5ib3R0b20gPSBgJHsodHJpZ2dlcldpZHRoQW5kSGVpZ2h0LmhlaWdodCAtIGFycm93V2lkdGhBbmRIZWlnaHQuaGVpZ2h0KSAvIDJ9cHhgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc1BhcmFtcztcbn1cbiJdfQ==
|
package/esm2022/radio/index.mjs
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
export * from './src/radio-root.directive';
|
2
2
|
export * from './src/radio-indicator.directive';
|
3
|
+
export * from './src/radio-item-input.directive';
|
3
4
|
export * from './src/radio-item.directive';
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9yYWRpby1yb290LmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vc3JjL3JhZGlvLWluZGljYXRvci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvcmFkaW8taXRlbS1pbnB1dC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvcmFkaW8taXRlbS5kaXJlY3RpdmUnO1xuIl19
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import { computed, Directive, input } from '@angular/core';
|
2
|
+
import { RdxVisuallyHiddenDirective } from '@radix-ng/primitives/visually-hidden';
|
3
|
+
import { injectRadioItem } from './radio-item.directive';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "@radix-ng/primitives/visually-hidden";
|
6
|
+
export class RdxRadioItemInputDirective {
|
7
|
+
constructor() {
|
8
|
+
this.radioItem = injectRadioItem();
|
9
|
+
this.name = input();
|
10
|
+
this.value = computed(() => this.radioItem.value() || undefined);
|
11
|
+
this.checked = computed(() => this.radioItem.checkedState() || undefined);
|
12
|
+
this.required = input(this.radioItem.required());
|
13
|
+
this.disabled = input(this.radioItem.disabled());
|
14
|
+
}
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
16
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioItemInputDirective, isStandalone: true, selector: "[rdxRadioItemInput]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "radio" }, properties: { "attr.name": "name()", "attr.required": "required()", "attr.disabled": "disabled() ? disabled() : undefined", "attr.checked": "checked()", "value": "value()" } }, exportAs: ["rdxRadioItemInput"], hostDirectives: [{ directive: i1.RdxVisuallyHiddenDirective, inputs: ["feature", "feature"] }], ngImport: i0 }); }
|
17
|
+
}
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemInputDirective, decorators: [{
|
19
|
+
type: Directive,
|
20
|
+
args: [{
|
21
|
+
selector: '[rdxRadioItemInput]',
|
22
|
+
exportAs: 'rdxRadioItemInput',
|
23
|
+
standalone: true,
|
24
|
+
hostDirectives: [
|
25
|
+
{ directive: RdxVisuallyHiddenDirective, inputs: ['feature'] }
|
26
|
+
],
|
27
|
+
host: {
|
28
|
+
type: 'radio',
|
29
|
+
'[attr.name]': 'name()',
|
30
|
+
'[attr.required]': 'required()',
|
31
|
+
'[attr.disabled]': 'disabled() ? disabled() : undefined',
|
32
|
+
'[attr.checked]': 'checked()',
|
33
|
+
'[value]': 'value()'
|
34
|
+
}
|
35
|
+
}]
|
36
|
+
}] });
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS1pbnB1dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFpQnpELE1BQU0sT0FBTywwQkFBMEI7SUFmdkM7UUFnQnFCLGNBQVMsR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUV0QyxTQUFJLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdkIsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQzVELFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUNyRSxhQUFRLEdBQUcsS0FBSyxDQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakUsYUFBUSxHQUFHLEtBQUssQ0FBc0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQzdFOytHQVJZLDBCQUEwQjttR0FBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQWZ0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUU7d0JBQ1osRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUU7cUJBQUM7b0JBQ25FLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsT0FBTzt3QkFDYixhQUFhLEVBQUUsUUFBUTt3QkFDdkIsaUJBQWlCLEVBQUUsWUFBWTt3QkFDL0IsaUJBQWlCLEVBQUUscUNBQXFDO3dCQUN4RCxnQkFBZ0IsRUFBRSxXQUFXO3dCQUM3QixTQUFTLEVBQUUsU0FBUztxQkFDdkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgRGlyZWN0aXZlLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4VmlzdWFsbHlIaWRkZW5EaXJlY3RpdmUgfSBmcm9tICdAcmFkaXgtbmcvcHJpbWl0aXZlcy92aXN1YWxseS1oaWRkZW4nO1xuaW1wb3J0IHsgaW5qZWN0UmFkaW9JdGVtIH0gZnJvbSAnLi9yYWRpby1pdGVtLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFJhZGlvSXRlbUlucHV0XScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb0l0ZW1JbnB1dCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7IGRpcmVjdGl2ZTogUmR4VmlzdWFsbHlIaWRkZW5EaXJlY3RpdmUsIGlucHV0czogWydmZWF0dXJlJ10gfV0sXG4gICAgaG9zdDoge1xuICAgICAgICB0eXBlOiAncmFkaW8nLFxuICAgICAgICAnW2F0dHIubmFtZV0nOiAnbmFtZSgpJyxcbiAgICAgICAgJ1thdHRyLnJlcXVpcmVkXSc6ICdyZXF1aXJlZCgpJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCgpID8gZGlzYWJsZWQoKSA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbYXR0ci5jaGVja2VkXSc6ICdjaGVja2VkKCknLFxuICAgICAgICAnW3ZhbHVlXSc6ICd2YWx1ZSgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UmFkaW9JdGVtSW5wdXREaXJlY3RpdmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmFkaW9JdGVtID0gaW5qZWN0UmFkaW9JdGVtKCk7XG5cbiAgICByZWFkb25seSBuYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yYWRpb0l0ZW0udmFsdWUoKSB8fCB1bmRlZmluZWQpO1xuICAgIHJlYWRvbmx5IGNoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJhZGlvSXRlbS5jaGVja2VkU3RhdGUoKSB8fCB1bmRlZmluZWQpO1xuICAgIHJlYWRvbmx5IHJlcXVpcmVkID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odGhpcy5yYWRpb0l0ZW0ucmVxdWlyZWQoKSk7XG4gICAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih0aGlzLnJhZGlvSXRlbS5kaXNhYmxlZCgpKTtcbn1cbiJdfQ==
|
@@ -1,43 +1,63 @@
|
|
1
|
-
import { booleanAttribute, Directive, ElementRef, inject, InjectionToken,
|
1
|
+
import { booleanAttribute, computed, Directive, ElementRef, inject, InjectionToken, input, signal } from '@angular/core';
|
2
|
+
import { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';
|
2
3
|
import { RDX_RADIO_GROUP } from './radio-tokens';
|
3
4
|
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "@radix-ng/primitives/roving-focus";
|
4
6
|
export const RdxRadioItemToken = new InjectionToken('RadioItemToken');
|
5
7
|
export function injectRadioItem() {
|
6
8
|
return inject(RdxRadioItemToken);
|
7
9
|
}
|
8
|
-
// Increasing integer for generating unique ids for radio components.
|
9
|
-
let nextUniqueId = 0;
|
10
10
|
export class RdxRadioItemDirective {
|
11
11
|
constructor() {
|
12
12
|
this.radioGroup = inject(RDX_RADIO_GROUP);
|
13
|
-
this.
|
14
|
-
this.
|
15
|
-
this.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
13
|
+
this.elementRef = inject(ElementRef);
|
14
|
+
this.value = input.required();
|
15
|
+
this.id = input();
|
16
|
+
this.required = input();
|
17
|
+
this.disabled = input(false, { transform: booleanAttribute });
|
18
|
+
this.disabledState = computed(() => this.radioGroup.disableState() || this.disabled());
|
19
|
+
this.checkedState = computed(() => this.radioGroup.value() === this.value());
|
20
|
+
this.ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
|
21
|
+
this.isArrowKeyPressedSignal = signal(false);
|
22
22
|
}
|
23
|
+
/** @ignore */
|
23
24
|
ngOnInit() {
|
24
|
-
if (this.radioGroup.defaultValue === this.value) {
|
25
|
-
this.radioGroup.select(this.value);
|
25
|
+
if (this.radioGroup.defaultValue === this.value()) {
|
26
|
+
this.radioGroup.select(this.value());
|
26
27
|
}
|
27
28
|
}
|
28
|
-
|
29
|
-
|
29
|
+
/** @ignore */
|
30
|
+
onClick() {
|
31
|
+
if (!this.disabledState()) {
|
32
|
+
this.radioGroup.select(this.value());
|
33
|
+
this.isArrowKeyPressedSignal.set(true);
|
34
|
+
}
|
30
35
|
}
|
31
|
-
|
32
|
-
|
33
|
-
|
36
|
+
/** @ignore */
|
37
|
+
onKeyDown(event) {
|
38
|
+
if (this.ARROW_KEYS.includes(event.key)) {
|
39
|
+
this.isArrowKeyPressedSignal.set(true);
|
34
40
|
}
|
35
41
|
}
|
36
|
-
|
37
|
-
|
42
|
+
/** @ignore */
|
43
|
+
onKeyUp() {
|
44
|
+
this.isArrowKeyPressedSignal.set(false);
|
45
|
+
}
|
46
|
+
/** @ignore */
|
47
|
+
onFocus() {
|
48
|
+
this.radioGroup.select(this.value());
|
49
|
+
setTimeout(() => {
|
50
|
+
/**
|
51
|
+
* When navigating with arrow keys, focus triggers on the radio item.
|
52
|
+
* To "check" the radio, we programmatically trigger a click event.
|
53
|
+
*/
|
54
|
+
if (this.isArrowKeyPressedSignal()) {
|
55
|
+
this.elementRef.nativeElement.click();
|
56
|
+
}
|
57
|
+
}, 0);
|
38
58
|
}
|
39
59
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
40
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
60
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioItemDirective, isStandalone: true, selector: "[rdxRadioItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "role": "radio" }, listeners: { "click": "onClick()", "keydown": "onKeyDown($event)", "keyup": "onKeyUp()", "focus": "onFocus()" }, properties: { "attr.aria-checked": "checkedState()", "attr.data-disabled": "disabledState() ? \"\" : null", "attr.data-state": "checkedState() ? \"checked\" : \"unchecked\"", "disabled": "disabledState()" } }, providers: [{ provide: RdxRadioItemToken, useExisting: RdxRadioItemDirective }], exportAs: ["rdxRadioItem"], hostDirectives: [{ directive: i1.RdxRovingFocusItemDirective, inputs: ["tabStopId", "id", "focusable", "focusable", "active", "active", "allowShiftKey", "allowShiftKey"] }], ngImport: i0 }); }
|
41
61
|
}
|
42
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemDirective, decorators: [{
|
43
63
|
type: Directive,
|
@@ -46,25 +66,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
46
66
|
exportAs: 'rdxRadioItem',
|
47
67
|
standalone: true,
|
48
68
|
providers: [{ provide: RdxRadioItemToken, useExisting: RdxRadioItemDirective }],
|
69
|
+
hostDirectives: [
|
70
|
+
{ directive: RdxRovingFocusItemDirective, inputs: ['tabStopId: id', 'focusable', 'active', 'allowShiftKey'] }
|
71
|
+
],
|
49
72
|
host: {
|
50
73
|
type: 'button',
|
51
74
|
role: 'radio',
|
52
|
-
'[attr.
|
53
|
-
'[attr.
|
54
|
-
'[attr.data-
|
55
|
-
'[
|
56
|
-
'
|
57
|
-
'(
|
58
|
-
'(
|
75
|
+
'[attr.aria-checked]': 'checkedState()',
|
76
|
+
'[attr.data-disabled]': 'disabledState() ? "" : null',
|
77
|
+
'[attr.data-state]': 'checkedState() ? "checked" : "unchecked"',
|
78
|
+
'[disabled]': 'disabledState()',
|
79
|
+
'(click)': 'onClick()',
|
80
|
+
'(keydown)': 'onKeyDown($event)',
|
81
|
+
'(keyup)': 'onKeyUp()',
|
82
|
+
'(focus)': 'onFocus()'
|
59
83
|
}
|
60
84
|
}]
|
61
|
-
}]
|
62
|
-
|
63
|
-
}], value: [{
|
64
|
-
type: Input,
|
65
|
-
args: [{ required: true }]
|
66
|
-
}], disabled: [{
|
67
|
-
type: Input,
|
68
|
-
args: [{ transform: booleanAttribute }]
|
69
|
-
}] } });
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWpELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUF3QixnQkFBZ0IsQ0FBQyxDQUFDO0FBRTdGLE1BQU0sVUFBVSxlQUFlO0lBQzNCLE9BQU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELHFFQUFxRTtBQUNyRSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFtQnJCLE1BQU0sT0FBTyxxQkFBcUI7SUFqQmxDO1FBa0JxQixlQUFVLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLFlBQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0IsT0FBRSxHQUFHLGFBQWEsRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUlKLGFBQVEsR0FBRyxLQUFLLENBQUM7S0E2QjVEO0lBM0JHLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztJQUNsQyxDQUFDOytHQXBDUSxxQkFBcUI7bUdBQXJCLHFCQUFxQix5SEFRVixnQkFBZ0Isa1ZBckJ6QixDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDOzs0RkFhdEUscUJBQXFCO2tCQWpCakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsdUJBQXVCLEVBQUUsQ0FBQztvQkFDL0UsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxRQUFRO3dCQUNkLElBQUksRUFBRSxPQUFPO3dCQUNiLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixxQkFBcUIsRUFBRSxTQUFTO3dCQUNoQyxzQkFBc0IsRUFBRSxzQkFBc0I7d0JBQzlDLG1CQUFtQixFQUFFLG1DQUFtQzt3QkFDeEQsaUJBQWlCLEVBQUUsVUFBVTt3QkFDN0IsU0FBUyxFQUFFLFlBQVk7d0JBQ3ZCLFFBQVEsRUFBRSxXQUFXO3FCQUN4QjtpQkFDSjs4QkFLWSxFQUFFO3NCQUFWLEtBQUs7Z0JBRXFCLEtBQUs7c0JBQS9CLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUVlLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c2FibGVPcHRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJEWF9SQURJT19HUk9VUCB9IGZyb20gJy4vcmFkaW8tdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IFJkeFJhZGlvSXRlbVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeFJhZGlvSXRlbURpcmVjdGl2ZT4oJ1JhZGlvSXRlbVRva2VuJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSYWRpb0l0ZW0oKTogUmR4UmFkaW9JdGVtRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gaW5qZWN0KFJkeFJhZGlvSXRlbVRva2VuKTtcbn1cblxuLy8gSW5jcmVhc2luZyBpbnRlZ2VyIGZvciBnZW5lcmF0aW5nIHVuaXF1ZSBpZHMgZm9yIHJhZGlvIGNvbXBvbmVudHMuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4UmFkaW9JdGVtXScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb0l0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSZHhSYWRpb0l0ZW1Ub2tlbiwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvSXRlbURpcmVjdGl2ZSB9XSxcbiAgICBob3N0OiB7XG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICByb2xlOiAncmFkaW8nLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdkaXNhYmxlZCA/IFwiXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ2NoZWNrZWQgPyBcImNoZWNrZWRcIiA6IFwidW5jaGVja2VkXCInLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYkluZGV4JyxcbiAgICAgICAgJyhjbGljayknOiAnX29uQ2xpY2soKScsXG4gICAgICAgICcoYmx1ciknOiAnX29uQmx1cigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UmFkaW9JdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uLCBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmFkaW9Hcm91cCA9IGluamVjdChSRFhfUkFESU9fR1JPVVApO1xuICAgIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICBASW5wdXQoKSBpZCA9IGByZHgtcmFkaW8tJHsrK25leHRVbmlxdWVJZH1gO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdmFsdWUhOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGdldCB0YWJJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogdGhpcy5yYWRpb0dyb3VwLnZhbHVlID09PSB0aGlzLnZhbHVlID8gMCA6IC0xO1xuICAgIH1cblxuICAgIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yYWRpb0dyb3VwLnZhbHVlID09PSB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yYWRpb0dyb3VwLmRlZmF1bHRWYWx1ZSA9PT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIF9vbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmFkaW9Hcm91cC5zZWxlY3QodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfb25CbHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJhZGlvR3JvdXAub25Ub3VjaGVkPy4oKTtcbiAgICB9XG59XG4iXX0=
|
85
|
+
}] });
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUVMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUVqRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsZ0JBQWdCLENBQUMsQ0FBQztBQUU3RixNQUFNLFVBQVUsZUFBZTtJQUMzQixPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUF1QkQsTUFBTSxPQUFPLHFCQUFxQjtJQXJCbEM7UUFzQnFCLGVBQVUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4QyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRWpDLE9BQUUsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUVyQixhQUFRLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFFNUIsYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUV0RSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxD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dCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBpbnB1dCxcbiAgICBPbkluaXQsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcbmltcG9ydCB7IFJEWF9SQURJT19HUk9VUCB9IGZyb20gJy4vcmFkaW8tdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IFJkeFJhZGlvSXRlbVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeFJhZGlvSXRlbURpcmVjdGl2ZT4oJ1JhZGlvSXRlbVRva2VuJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSYWRpb0l0ZW0oKTogUmR4UmFkaW9JdGVtRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gaW5qZWN0KFJkeFJhZGlvSXRlbVRva2VuKTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4UmFkaW9JdGVtXScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb0l0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSZHhSYWRpb0l0ZW1Ub2tlbiwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvSXRlbURpcmVjdGl2ZSB9XSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7IGRpcmVjdGl2ZTogUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlLCBpbnB1dHM6IFsndGFiU3RvcElkOiBpZCcsICdmb2N1c2FibGUnLCAnYWN0aXZlJywgJ2FsbG93U2hpZnRLZXknXSB9XSxcblxuICAgIGhvc3Q6IHtcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHJvbGU6ICdyYWRpbycsXG4gICAgICAgICdbYXR0ci5hcmlhLWNoZWNrZWRdJzogJ2NoZWNrZWRTdGF0ZSgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkU3RhdGUoKSA/IFwiXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ2NoZWNrZWRTdGF0ZSgpID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwiJyxcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWRTdGF0ZSgpJyxcbiAgICAgICAgJyhjbGljayknOiAnb25DbGljaygpJyxcbiAgICAgICAgJyhrZXlkb3duKSc6ICdvbktleURvd24oJGV2ZW50KScsXG4gICAgICAgICcoa2V5dXApJzogJ29uS2V5VXAoKScsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeFJhZGlvSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSByYWRpb0dyb3VwID0gaW5qZWN0KFJEWF9SQURJT19HUk9VUCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgcmVhZG9ubHkgdmFsdWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgICByZWFkb25seSBpZCA9IGlucHV0PHN0cmluZz4oKTtcblxuICAgIHJlYWRvbmx5IHJlcXVpcmVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICAgIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZWRTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmFkaW9Hcm91cC5kaXNhYmxlU3RhdGUoKSB8fCB0aGlzLmRpc2FibGVkKCkpO1xuXG4gICAgcmVhZG9ubHkgY2hlY2tlZFN0YXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yYWRpb0dyb3VwLnZhbHVlKCkgPT09IHRoaXMudmFsdWUoKSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IEFSUk9XX0tFWVMgPSBbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0J107XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0Fycm93S2V5UHJlc3NlZFNpZ25hbCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yYWRpb0dyb3VwLmRlZmF1bHRWYWx1ZSA9PT0gdGhpcy52YWx1ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnJhZGlvR3JvdXAuc2VsZWN0KHRoaXMudmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uQ2xpY2soKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZFN0YXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmFkaW9Hcm91cC5zZWxlY3QodGhpcy52YWx1ZSgpKTtcbiAgICAgICAgICAgIHRoaXMuaXNBcnJvd0tleVByZXNzZWRTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuQVJST1dfS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICB0aGlzLmlzQXJyb3dLZXlQcmVzc2VkU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgb25LZXlVcCgpIHtcbiAgICAgICAgdGhpcy5pc0Fycm93S2V5UHJlc3NlZFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdCh0aGlzLnZhbHVlKCkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hlbiBuYXZpZ2F0aW5nIHdpdGggYXJyb3cga2V5cywgZm9jdXMgdHJpZ2dlcnMgb24gdGhlIHJhZGlvIGl0ZW0uXG4gICAgICAgICAgICAgKiBUbyBcImNoZWNrXCIgdGhlIHJhZGlvLCB3ZSBwcm9ncmFtbWF0aWNhbGx5IHRyaWdnZXIgYSBjbGljayBldmVudC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNBcnJvd0tleVByZXNzZWRTaWduYWwoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgIH1cbn1cbiJdfQ==
|