@ngneers/controls 0.0.1-pre5 → 0.0.1-pre6
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/fesm2022/ngneers-controls-accordion.mjs +32 -32
- package/fesm2022/ngneers-controls-accordion.mjs.map +1 -1
- package/fesm2022/ngneers-controls-api-ng.mjs +19 -19
- package/fesm2022/ngneers-controls-api-ng.mjs.map +1 -1
- package/fesm2022/ngneers-controls-api-resize.mjs +706 -0
- package/fesm2022/ngneers-controls-api-resize.mjs.map +1 -0
- package/fesm2022/ngneers-controls-avatar.mjs +13 -13
- package/fesm2022/ngneers-controls-avatar.mjs.map +1 -1
- package/fesm2022/ngneers-controls-base.mjs +89 -64
- package/fesm2022/ngneers-controls-base.mjs.map +1 -1
- package/fesm2022/ngneers-controls-breadcrumb.mjs +18 -18
- package/fesm2022/ngneers-controls-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngneers-controls-button-group.mjs +8 -8
- package/fesm2022/ngneers-controls-button-group.mjs.map +1 -1
- package/fesm2022/ngneers-controls-button.mjs +15 -10
- package/fesm2022/ngneers-controls-button.mjs.map +1 -1
- package/fesm2022/{ngneers-controls-calendar-time-BEeJIqIX.mjs → ngneers-controls-calendar-time-Bzlv9Vkn.mjs} +9 -9
- package/fesm2022/{ngneers-controls-calendar-time-BEeJIqIX.mjs.map → ngneers-controls-calendar-time-Bzlv9Vkn.mjs.map} +1 -1
- package/fesm2022/ngneers-controls-calendar.mjs +54 -54
- package/fesm2022/ngneers-controls-calendar.mjs.map +1 -1
- package/fesm2022/ngneers-controls-checkbox.mjs +9 -9
- package/fesm2022/ngneers-controls-checkbox.mjs.map +1 -1
- package/fesm2022/ngneers-controls-chip.mjs +6 -6
- package/fesm2022/ngneers-controls-chip.mjs.map +1 -1
- package/fesm2022/ngneers-controls-defer.mjs +10 -10
- package/fesm2022/ngneers-controls-defer.mjs.map +1 -1
- package/fesm2022/ngneers-controls-dialog.mjs +37 -39
- package/fesm2022/ngneers-controls-dialog.mjs.map +1 -1
- package/fesm2022/ngneers-controls-directives.mjs +45 -39
- package/fesm2022/ngneers-controls-directives.mjs.map +1 -1
- package/fesm2022/ngneers-controls-drawer.mjs +28 -28
- package/fesm2022/ngneers-controls-drawer.mjs.map +1 -1
- package/fesm2022/ngneers-controls-edit-inplace.mjs +15 -15
- package/fesm2022/ngneers-controls-edit-inplace.mjs.map +1 -1
- package/fesm2022/ngneers-controls-filter.mjs +192 -44
- package/fesm2022/ngneers-controls-filter.mjs.map +1 -1
- package/fesm2022/{ngneers-controls-i18n-de-CdTPeBiR.mjs → ngneers-controls-i18n-de-CF0xTWEX.mjs} +9 -5
- package/fesm2022/ngneers-controls-i18n-de-CF0xTWEX.mjs.map +1 -0
- package/fesm2022/{ngneers-controls-i18n-en-Cfp2pOLY.mjs → ngneers-controls-i18n-en-8B7xAjH2.mjs} +9 -5
- package/fesm2022/ngneers-controls-i18n-en-8B7xAjH2.mjs.map +1 -0
- package/fesm2022/ngneers-controls-i18n.mjs +5 -5
- package/fesm2022/ngneers-controls-i18n.mjs.map +1 -1
- package/fesm2022/ngneers-controls-icon.mjs +10 -10
- package/fesm2022/ngneers-controls-icon.mjs.map +1 -1
- package/fesm2022/ngneers-controls-inplace.mjs +18 -18
- package/fesm2022/ngneers-controls-inplace.mjs.map +1 -1
- package/fesm2022/ngneers-controls-input-field.mjs +14 -14
- package/fesm2022/ngneers-controls-input-field.mjs.map +1 -1
- package/fesm2022/ngneers-controls-input-mask.mjs +8 -8
- package/fesm2022/ngneers-controls-input-mask.mjs.map +1 -1
- package/fesm2022/ngneers-controls-input.mjs +6 -6
- package/fesm2022/ngneers-controls-input.mjs.map +1 -1
- package/fesm2022/ngneers-controls-item-view.mjs +33 -33
- package/fesm2022/ngneers-controls-item-view.mjs.map +1 -1
- package/fesm2022/ngneers-controls-list-box.mjs +31 -31
- package/fesm2022/ngneers-controls-list-box.mjs.map +1 -1
- package/fesm2022/ngneers-controls-menu.mjs +32 -32
- package/fesm2022/ngneers-controls-menu.mjs.map +1 -1
- package/fesm2022/ngneers-controls-message.mjs +4 -4
- package/fesm2022/ngneers-controls-message.mjs.map +1 -1
- package/fesm2022/ngneers-controls-paginator.mjs +12 -12
- package/fesm2022/ngneers-controls-paginator.mjs.map +1 -1
- package/fesm2022/ngneers-controls-popover.mjs +13 -13
- package/fesm2022/ngneers-controls-popover.mjs.map +1 -1
- package/fesm2022/ngneers-controls-progress.mjs +16 -16
- package/fesm2022/ngneers-controls-progress.mjs.map +1 -1
- package/fesm2022/ngneers-controls-scroller.mjs +74 -39
- package/fesm2022/ngneers-controls-scroller.mjs.map +1 -1
- package/fesm2022/ngneers-controls-select-button.mjs +6 -6
- package/fesm2022/ngneers-controls-select-button.mjs.map +1 -1
- package/fesm2022/ngneers-controls-select.mjs +46 -46
- package/fesm2022/ngneers-controls-select.mjs.map +1 -1
- package/fesm2022/ngneers-controls-slider.mjs +11 -11
- package/fesm2022/ngneers-controls-slider.mjs.map +1 -1
- package/fesm2022/ngneers-controls-spinner.mjs +7 -7
- package/fesm2022/ngneers-controls-spinner.mjs.map +1 -1
- package/fesm2022/ngneers-controls-splitter.mjs +141 -328
- package/fesm2022/ngneers-controls-splitter.mjs.map +1 -1
- package/fesm2022/ngneers-controls-switch.mjs +3 -3
- package/fesm2022/ngneers-controls-table.mjs +1520 -80
- package/fesm2022/ngneers-controls-table.mjs.map +1 -1
- package/fesm2022/ngneers-controls-tabs.mjs +40 -39
- package/fesm2022/ngneers-controls-tabs.mjs.map +1 -1
- package/fesm2022/ngneers-controls-tag.mjs +4 -4
- package/fesm2022/ngneers-controls-tag.mjs.map +1 -1
- package/fesm2022/ngneers-controls-toast.mjs +18 -18
- package/fesm2022/ngneers-controls-toast.mjs.map +1 -1
- package/fesm2022/ngneers-controls-toggle-button.mjs +9 -9
- package/fesm2022/ngneers-controls-toggle-button.mjs.map +1 -1
- package/fesm2022/ngneers-controls-tooltip.mjs +36 -36
- package/fesm2022/ngneers-controls-tooltip.mjs.map +1 -1
- package/fesm2022/ngneers-controls-utils-ng.mjs +9 -9
- package/fesm2022/ngneers-controls-utils-ng.mjs.map +1 -1
- package/package.json +14 -10
- package/types/ngneers-controls-api-ng.d.ts +2 -2
- package/types/ngneers-controls-api-resize.d.ts +318 -0
- package/types/ngneers-controls-base.d.ts +8 -0
- package/types/ngneers-controls-breadcrumb.d.ts +1 -1
- package/types/ngneers-controls-button.d.ts +13 -8
- package/types/ngneers-controls-calendar.d.ts +5 -1
- package/types/ngneers-controls-checkbox.d.ts +1 -1
- package/types/ngneers-controls-directives.d.ts +7 -1
- package/types/ngneers-controls-drawer.d.ts +4 -0
- package/types/ngneers-controls-edit-inplace.d.ts +4 -0
- package/types/ngneers-controls-filter.d.ts +53 -4
- package/types/ngneers-controls-i18n.d.ts +4 -0
- package/types/ngneers-controls-icon.d.ts +1 -1
- package/types/ngneers-controls-input-field.d.ts +4 -0
- package/types/ngneers-controls-list-box.d.ts +5 -1
- package/types/ngneers-controls-menu.d.ts +1 -1
- package/types/ngneers-controls-paginator.d.ts +4 -0
- package/types/ngneers-controls-popover.d.ts +1 -1
- package/types/ngneers-controls-scroller.d.ts +12 -2
- package/types/ngneers-controls-select.d.ts +6 -2
- package/types/ngneers-controls-spinner.d.ts +1 -1
- package/types/ngneers-controls-splitter.d.ts +29 -59
- package/types/ngneers-controls-table.d.ts +392 -24
- package/types/ngneers-controls-toast.d.ts +1 -1
- package/fesm2022/ngneers-controls-i18n-de-CdTPeBiR.mjs.map +0 -1
- package/fesm2022/ngneers-controls-i18n-en-Cfp2pOLY.mjs.map +0 -1
|
@@ -17,42 +17,42 @@ class NgnToggleButton extends ValueControlBase {
|
|
|
17
17
|
* Optional labels for on and off states.
|
|
18
18
|
* If not provided, the {@link label} input will be used.
|
|
19
19
|
*/
|
|
20
|
-
labelOn = input(...(ngDevMode ? [undefined, { debugName: "labelOn" }] : []));
|
|
20
|
+
labelOn = input(...(ngDevMode ? [undefined, { debugName: "labelOn" }] : /* istanbul ignore next */ []));
|
|
21
21
|
/**
|
|
22
22
|
* Optional labels for on and off states.
|
|
23
23
|
* If not provided, the {@link label} input will be used.
|
|
24
24
|
*/
|
|
25
|
-
labelOff = input(...(ngDevMode ? [undefined, { debugName: "labelOff" }] : []));
|
|
25
|
+
labelOff = input(...(ngDevMode ? [undefined, { debugName: "labelOff" }] : /* istanbul ignore next */ []));
|
|
26
26
|
/**
|
|
27
27
|
* Optional icon for the button. Can be used instead of the label or in combination with it.
|
|
28
28
|
* If {@link iconOn} and {@link iconOff} are provided, they will take precedence over this input for their respective states.
|
|
29
29
|
*/
|
|
30
|
-
icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
|
|
30
|
+
icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
31
31
|
/**
|
|
32
32
|
* Optional icons for on and off states.
|
|
33
33
|
* If not provided, the {@link icon} input will be used.
|
|
34
34
|
*/
|
|
35
|
-
iconOn = input(...(ngDevMode ? [undefined, { debugName: "iconOn" }] : []));
|
|
35
|
+
iconOn = input(...(ngDevMode ? [undefined, { debugName: "iconOn" }] : /* istanbul ignore next */ []));
|
|
36
36
|
/**
|
|
37
37
|
* Optional icons for on and off states.
|
|
38
38
|
* If not provided, the {@link icon} input will be used.
|
|
39
39
|
*/
|
|
40
|
-
iconOff = input(...(ngDevMode ? [undefined, { debugName: "iconOff" }] : []));
|
|
40
|
+
iconOff = input(...(ngDevMode ? [undefined, { debugName: "iconOff" }] : /* istanbul ignore next */ []));
|
|
41
41
|
/**
|
|
42
42
|
* If true, the button will always have the width of the longest possible content.
|
|
43
43
|
* @default false
|
|
44
44
|
*/
|
|
45
|
-
fixedWidth = input(false, ...(ngDevMode ? [{ debugName: "fixedWidth" }] : []));
|
|
45
|
+
fixedWidth = input(false, ...(ngDevMode ? [{ debugName: "fixedWidth" }] : /* istanbul ignore next */ []));
|
|
46
46
|
toggle() {
|
|
47
47
|
if (this.disabled() || this.readonly()) {
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
50
|
this.value.update(v => !v);
|
|
51
51
|
}
|
|
52
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
53
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
52
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnToggleButton, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: NgnToggleButton, isStandalone: true, selector: "ngn-toggle-button", inputs: { labelOn: { classPropertyName: "labelOn", publicName: "labelOn", isSignal: true, isRequired: false, transformFunction: null }, labelOff: { classPropertyName: "labelOff", publicName: "labelOff", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconOn: { classPropertyName: "iconOn", publicName: "iconOn", isSignal: true, isRequired: false, transformFunction: null }, iconOff: { classPropertyName: "iconOff", publicName: "iconOff", isSignal: true, isRequired: false, transformFunction: null }, fixedWidth: { classPropertyName: "fixedWidth", publicName: "fixedWidth", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideSelf(NgnToggleButton)], usesInheritance: true, ngImport: i0, template: "<button\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'button'\"\r\n (click)=\"toggle()\"\r\n [disabled]=\"disabled()\"\r\n [ariaReadOnly]=\"readonly()\"\r\n (blur)=\"touched.set(true)\"\r\n>\r\n <span [ptInt]=\"this\" [ptClass]=\"'label'\">\r\n @let renderedIcon = (value() ? iconOn() : iconOff()) ?? icon();\r\n @if (renderedIcon) {\r\n <ngn-icon [icon]=\"renderedIcon\" />\r\n }\r\n {{ (value() ? labelOn() : labelOff()) ?? label() }}\r\n </span>\r\n @if (fixedWidth()) {\r\n <span inert [ptInt]=\"this\" [ptClass]=\"'placeholder-active'\">\r\n @let renderedIconOn = iconOn() ?? icon();\r\n @if (renderedIconOn) {\r\n <ngn-icon [icon]=\"renderedIconOn\" />\r\n }\r\n {{ labelOn() ?? label() }}\r\n </span>\r\n <span inert [ptInt]=\"this\" [ptClass]=\"'placeholder'\">\r\n @let renderedIconOff = iconOff() ?? icon();\r\n @if (renderedIconOff) {\r\n <ngn-icon [icon]=\"renderedIconOff\" />\r\n }\r\n {{ labelOff() ?? label() }}\r\n </span>\r\n }\r\n</button>\r\n", dependencies: [{ kind: "directive", type: NgnPt, selector: "[ptInt]", inputs: ["ptInt", "ptClass"] }, { kind: "component", type: NgnIcon, selector: "ngn-icon", inputs: ["defaultIcon", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
54
54
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnToggleButton, decorators: [{
|
|
56
56
|
type: Component,
|
|
57
57
|
args: [{ selector: 'ngn-toggle-button', providers: [provideSelf(NgnToggleButton)], changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgnPt, NgnIcon], template: "<button\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'button'\"\r\n (click)=\"toggle()\"\r\n [disabled]=\"disabled()\"\r\n [ariaReadOnly]=\"readonly()\"\r\n (blur)=\"touched.set(true)\"\r\n>\r\n <span [ptInt]=\"this\" [ptClass]=\"'label'\">\r\n @let renderedIcon = (value() ? iconOn() : iconOff()) ?? icon();\r\n @if (renderedIcon) {\r\n <ngn-icon [icon]=\"renderedIcon\" />\r\n }\r\n {{ (value() ? labelOn() : labelOff()) ?? label() }}\r\n </span>\r\n @if (fixedWidth()) {\r\n <span inert [ptInt]=\"this\" [ptClass]=\"'placeholder-active'\">\r\n @let renderedIconOn = iconOn() ?? icon();\r\n @if (renderedIconOn) {\r\n <ngn-icon [icon]=\"renderedIconOn\" />\r\n }\r\n {{ labelOn() ?? label() }}\r\n </span>\r\n <span inert [ptInt]=\"this\" [ptClass]=\"'placeholder'\">\r\n @let renderedIconOff = iconOff() ?? icon();\r\n @if (renderedIconOff) {\r\n <ngn-icon [icon]=\"renderedIconOff\" />\r\n }\r\n {{ labelOff() ?? label() }}\r\n </span>\r\n }\r\n</button>\r\n" }]
|
|
58
58
|
}], propDecorators: { labelOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelOn", required: false }] }], labelOff: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelOff", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOn", required: false }] }], iconOff: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOff", required: false }] }], fixedWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fixedWidth", required: false }] }] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngneers-controls-toggle-button.mjs","sources":["../../src/toggle-button/toggle-button.ts","../../src/toggle-button/toggle-button.html","../../src/toggle-button/ngneers-controls-toggle-button.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { provideSelf, ValueControlBase, NgnPt } from '@ngneers/controls/base';\r\nimport { NgnIcon } from '@ngneers/controls/icon';\r\nimport { toggleButtonControlTemplate } from '@ngneers/controls-themes/templates/toggle-button';\r\n\r\nimport type { IconType } from '@ngneers/controls-custom-types';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Component({\r\n selector: 'ngn-toggle-button',\r\n providers: [provideSelf(NgnToggleButton)],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgnPt, NgnIcon],\r\n templateUrl: './toggle-button.html',\r\n})\r\nexport class NgnToggleButton extends ValueControlBase<'toggleButton', boolean> {\r\n protected readonly theme = this.injectThemeTemplate(toggleButtonControlTemplate, {\r\n root: true,\r\n active: () => this.value(),\r\n invalid: () => this.invalid(),\r\n });\r\n\r\n /**\r\n * Optional labels for on and off states.\r\n * If not provided, the {@link label} input will be used.\r\n */\r\n public readonly labelOn = input<string>();\r\n /**\r\n * Optional labels for on and off states.\r\n * If not provided, the {@link label} input will be used.\r\n */\r\n public readonly labelOff = input<string>();\r\n /**\r\n * Optional icon for the button. Can be used instead of the label or in combination with it.\r\n * If {@link iconOn} and {@link iconOff} are provided, they will take precedence over this input for their respective states.\r\n */\r\n public readonly icon = input<IconType>();\r\n /**\r\n * Optional icons for on and off states.\r\n * If not provided, the {@link icon} input will be used.\r\n */\r\n public readonly iconOn = input<IconType>();\r\n /**\r\n * Optional icons for on and off states.\r\n * If not provided, the {@link icon} input will be used.\r\n */\r\n public readonly iconOff = input<IconType>();\r\n /**\r\n * If true, the button will always have the width of the longest possible content.\r\n * @default false\r\n */\r\n public readonly fixedWidth = input<boolean>(false);\r\n\r\n public toggle() {\r\n if (this.disabled() || this.readonly()) {\r\n return;\r\n }\r\n this.value.update(v => !v);\r\n }\r\n}\r\n","<button\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'button'\"\r\n (click)=\"toggle()\"\r\n [disabled]=\"disabled()\"\r\n [ariaReadOnly]=\"readonly()\"\r\n (blur)=\"touched.set(true)\"\r\n>\r\n <span [ptInt]=\"this\" [ptClass]=\"'label'\">\r\n @let renderedIcon = (value() ? iconOn() : iconOff()) ?? icon();\r\n @if (renderedIcon) {\r\n <ngn-icon [icon]=\"renderedIcon\" />\r\n }\r\n {{ (value() ? labelOn() : labelOff()) ?? label() }}\r\n </span>\r\n @if (fixedWidth()) {\r\n <span inert [ptInt]=\"this\" [ptClass]=\"'placeholder-active'\">\r\n @let renderedIconOn = iconOn() ?? icon();\r\n @if (renderedIconOn) {\r\n <ngn-icon [icon]=\"renderedIconOn\" />\r\n }\r\n {{ labelOn() ?? label() }}\r\n </span>\r\n <span inert [ptInt]=\"this\" [ptClass]=\"'placeholder'\">\r\n @let renderedIconOff = iconOff() ?? icon();\r\n @if (renderedIconOff) {\r\n <ngn-icon [icon]=\"renderedIconOff\" />\r\n }\r\n {{ labelOff() ?? label() }}\r\n </span>\r\n }\r\n</button>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAOA;;AAEG;AAQG,MAAO,eAAgB,SAAQ,gBAAyC,CAAA;AACzD,IAAA,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,EAAE;AAC/E,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;AAC9B,KAAA,CAAC;AAEF;;;AAGG;IACa,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"ngneers-controls-toggle-button.mjs","sources":["../../src/toggle-button/toggle-button.ts","../../src/toggle-button/toggle-button.html","../../src/toggle-button/ngneers-controls-toggle-button.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { provideSelf, ValueControlBase, NgnPt } from '@ngneers/controls/base';\r\nimport { NgnIcon } from '@ngneers/controls/icon';\r\nimport { toggleButtonControlTemplate } from '@ngneers/controls-themes/templates/toggle-button';\r\n\r\nimport type { IconType } from '@ngneers/controls-custom-types';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Component({\r\n selector: 'ngn-toggle-button',\r\n providers: [provideSelf(NgnToggleButton)],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgnPt, NgnIcon],\r\n templateUrl: './toggle-button.html',\r\n})\r\nexport class NgnToggleButton extends ValueControlBase<'toggleButton', boolean> {\r\n protected readonly theme = this.injectThemeTemplate(toggleButtonControlTemplate, {\r\n root: true,\r\n active: () => this.value(),\r\n invalid: () => this.invalid(),\r\n });\r\n\r\n /**\r\n * Optional labels for on and off states.\r\n * If not provided, the {@link label} input will be used.\r\n */\r\n public readonly labelOn = input<string>();\r\n /**\r\n * Optional labels for on and off states.\r\n * If not provided, the {@link label} input will be used.\r\n */\r\n public readonly labelOff = input<string>();\r\n /**\r\n * Optional icon for the button. Can be used instead of the label or in combination with it.\r\n * If {@link iconOn} and {@link iconOff} are provided, they will take precedence over this input for their respective states.\r\n */\r\n public readonly icon = input<IconType>();\r\n /**\r\n * Optional icons for on and off states.\r\n * If not provided, the {@link icon} input will be used.\r\n */\r\n public readonly iconOn = input<IconType>();\r\n /**\r\n * Optional icons for on and off states.\r\n * If not provided, the {@link icon} input will be used.\r\n */\r\n public readonly iconOff = input<IconType>();\r\n /**\r\n * If true, the button will always have the width of the longest possible content.\r\n * @default false\r\n */\r\n public readonly fixedWidth = input<boolean>(false);\r\n\r\n public toggle() {\r\n if (this.disabled() || this.readonly()) {\r\n return;\r\n }\r\n this.value.update(v => !v);\r\n }\r\n}\r\n","<button\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'button'\"\r\n (click)=\"toggle()\"\r\n [disabled]=\"disabled()\"\r\n [ariaReadOnly]=\"readonly()\"\r\n (blur)=\"touched.set(true)\"\r\n>\r\n <span [ptInt]=\"this\" [ptClass]=\"'label'\">\r\n @let renderedIcon = (value() ? iconOn() : iconOff()) ?? icon();\r\n @if (renderedIcon) {\r\n <ngn-icon [icon]=\"renderedIcon\" />\r\n }\r\n {{ (value() ? labelOn() : labelOff()) ?? label() }}\r\n </span>\r\n @if (fixedWidth()) {\r\n <span inert [ptInt]=\"this\" [ptClass]=\"'placeholder-active'\">\r\n @let renderedIconOn = iconOn() ?? icon();\r\n @if (renderedIconOn) {\r\n <ngn-icon [icon]=\"renderedIconOn\" />\r\n }\r\n {{ labelOn() ?? label() }}\r\n </span>\r\n <span inert [ptInt]=\"this\" [ptClass]=\"'placeholder'\">\r\n @let renderedIconOff = iconOff() ?? icon();\r\n @if (renderedIconOff) {\r\n <ngn-icon [icon]=\"renderedIconOff\" />\r\n }\r\n {{ labelOff() ?? label() }}\r\n </span>\r\n }\r\n</button>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -42,87 +42,87 @@ class NgnTooltip extends NgnBase {
|
|
|
42
42
|
theme = null;
|
|
43
43
|
_viewContainerRef = inject(ViewContainerRef);
|
|
44
44
|
_config = inject(NGN_CONFIG);
|
|
45
|
-
_tooltip = signal(null, ...(ngDevMode ? [{ debugName: "_tooltip" }] : []));
|
|
45
|
+
_tooltip = signal(null, ...(ngDevMode ? [{ debugName: "_tooltip" }] : /* istanbul ignore next */ []));
|
|
46
46
|
/**
|
|
47
47
|
* The content of the tooltip, can be a string or a TemplateRef.
|
|
48
48
|
* If the value is falsy, the tooltip will not be shown.
|
|
49
49
|
* @alias ngnTooltip
|
|
50
50
|
*/
|
|
51
|
-
content = input(null, { ...(ngDevMode ? { debugName: "content" } : {}), alias: 'ngnTooltip' });
|
|
51
|
+
content = input(null, { ...(ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {}), alias: 'ngnTooltip' });
|
|
52
52
|
/**
|
|
53
53
|
* If set to `true`, the tooltip will only be shown if the anchor element is truncated. `""` is equivalent to `true`.
|
|
54
54
|
* @alias ngnTooltipShowOnlyIfTruncated
|
|
55
55
|
* @default false
|
|
56
56
|
*/
|
|
57
|
-
showOnlyIfTruncated = input(false, { ...(ngDevMode ? { debugName: "showOnlyIfTruncated" } : {}), alias: 'ngnTooltipShowOnlyIfTruncated' });
|
|
57
|
+
showOnlyIfTruncated = input(false, { ...(ngDevMode ? { debugName: "showOnlyIfTruncated" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipShowOnlyIfTruncated' });
|
|
58
58
|
/**
|
|
59
59
|
* The size constraints for the tooltip.
|
|
60
60
|
* This can be used to limit the width and height of the tooltip.
|
|
61
61
|
* If not provided, the tooltip is only constrained by the size of the screen.
|
|
62
62
|
* @alias ngnTooltipSize
|
|
63
63
|
*/
|
|
64
|
-
size = input(null, { ...(ngDevMode ? { debugName: "size" } : {}), alias: 'ngnTooltipSize' });
|
|
64
|
+
size = input(null, { ...(ngDevMode ? { debugName: "size" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipSize' });
|
|
65
65
|
/**
|
|
66
66
|
* The options for the tooltip.
|
|
67
67
|
* This is a shorthand for setting multiple options at once.
|
|
68
68
|
* The individual options take precedence over the options set here.
|
|
69
69
|
* @alias ngnTooltipOptions
|
|
70
70
|
*/
|
|
71
|
-
options = input(null, { ...(ngDevMode ? { debugName: "options" } : {}), alias: 'ngnTooltipOptions' });
|
|
71
|
+
options = input(null, { ...(ngDevMode ? { debugName: "options" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipOptions' });
|
|
72
72
|
/**
|
|
73
73
|
* The placement of the tooltip relative to the anchor element.
|
|
74
74
|
* @alias ngnTooltipPlacement
|
|
75
75
|
* @default 'bottom'
|
|
76
76
|
*/
|
|
77
|
-
placement = input(null, { ...(ngDevMode ? { debugName: "placement" } : {}), alias: 'ngnTooltipPlacement' });
|
|
77
|
+
placement = input(null, { ...(ngDevMode ? { debugName: "placement" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipPlacement' });
|
|
78
78
|
/**
|
|
79
79
|
* The offset in Pixels of the tooltip from the anchor element.
|
|
80
80
|
* @alias ngnTooltipOffset
|
|
81
81
|
* @default 4
|
|
82
82
|
*/
|
|
83
|
-
offset = input(null, { ...(ngDevMode ? { debugName: "offset" } : {}), alias: 'ngnTooltipOffset' });
|
|
83
|
+
offset = input(null, { ...(ngDevMode ? { debugName: "offset" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipOffset' });
|
|
84
84
|
/**
|
|
85
85
|
* The delay before the tooltip is shown. If a number is provided, it is interpreted as milliseconds.
|
|
86
86
|
* @alias ngnTooltipShowDelay
|
|
87
87
|
* @default '0.5s'
|
|
88
88
|
*/
|
|
89
|
-
showDelay = input(null, { ...(ngDevMode ? { debugName: "showDelay" } : {}), alias: 'ngnTooltipShowDelay' });
|
|
89
|
+
showDelay = input(null, { ...(ngDevMode ? { debugName: "showDelay" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipShowDelay' });
|
|
90
90
|
/**
|
|
91
91
|
* The delay before the tooltip is hidden. If a number is provided, it is interpreted as milliseconds.
|
|
92
92
|
* @alias ngnTooltipHideDelay
|
|
93
93
|
* @default '0.1s'
|
|
94
94
|
*/
|
|
95
|
-
hideDelay = input(null, { ...(ngDevMode ? { debugName: "hideDelay" } : {}), alias: 'ngnTooltipHideDelay' });
|
|
95
|
+
hideDelay = input(null, { ...(ngDevMode ? { debugName: "hideDelay" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipHideDelay' });
|
|
96
96
|
/**
|
|
97
97
|
* Whether to show an arrow pointing to the anchor element. `""` is equivalent to `true`.
|
|
98
98
|
* @alias ngnTooltipShowArrow
|
|
99
99
|
* @default true
|
|
100
100
|
*/
|
|
101
|
-
showArrow = input(null, { ...(ngDevMode ? { debugName: "showArrow" } : {}), alias: 'ngnTooltipShowArrow' });
|
|
101
|
+
showArrow = input(null, { ...(ngDevMode ? { debugName: "showArrow" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipShowArrow' });
|
|
102
102
|
/**
|
|
103
103
|
* Shows the tooltip on hover.
|
|
104
104
|
* @alias ngnTooltipShowOnHover
|
|
105
105
|
* @default true
|
|
106
106
|
*/
|
|
107
|
-
showOnHover = input(null, { ...(ngDevMode ? { debugName: "showOnHover" } : {}), alias: 'ngnTooltipShowOnHover' });
|
|
107
|
+
showOnHover = input(null, { ...(ngDevMode ? { debugName: "showOnHover" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipShowOnHover' });
|
|
108
108
|
/**
|
|
109
109
|
* Shows the tooltip on focus.
|
|
110
110
|
* @alias ngnTooltipShowOnFocus
|
|
111
111
|
* @default true
|
|
112
112
|
*/
|
|
113
|
-
showOnFocus = input(null, { ...(ngDevMode ? { debugName: "showOnFocus" } : {}), alias: 'ngnTooltipShowOnFocus' });
|
|
113
|
+
showOnFocus = input(null, { ...(ngDevMode ? { debugName: "showOnFocus" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipShowOnFocus' });
|
|
114
114
|
/**
|
|
115
115
|
* Hides the tooltip (without delay) when the mouse hovers over the tooltip.
|
|
116
116
|
* @alias ngnTooltipHideOnTooltipHover
|
|
117
117
|
* @default false
|
|
118
118
|
*/
|
|
119
|
-
hideOnTooltipHover = input(null, { ...(ngDevMode ? { debugName: "hideOnTooltipHover" } : {}), alias: 'ngnTooltipHideOnTooltipHover' });
|
|
119
|
+
hideOnTooltipHover = input(null, { ...(ngDevMode ? { debugName: "hideOnTooltipHover" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipHideOnTooltipHover' });
|
|
120
120
|
/**
|
|
121
121
|
* Hides the tooltip (without delay) when the user clicks on the tooltip.
|
|
122
122
|
* @alias ngnTooltipHideOnClick
|
|
123
123
|
* @default true
|
|
124
124
|
*/
|
|
125
|
-
hideOnClick = input(null, { ...(ngDevMode ? { debugName: "hideOnClick" } : {}), alias: 'ngnTooltipHideOnClick' });
|
|
125
|
+
hideOnClick = input(null, { ...(ngDevMode ? { debugName: "hideOnClick" } : /* istanbul ignore next */ {}), alias: 'ngnTooltipHideOnClick' });
|
|
126
126
|
effectiveOptions = computed(() => {
|
|
127
127
|
const defaults = this._config.defaults.tooltip;
|
|
128
128
|
return {
|
|
@@ -138,8 +138,8 @@ class NgnTooltip extends NgnBase {
|
|
|
138
138
|
defaults.hideOnTooltipHover) !== false,
|
|
139
139
|
hideOnClick: (this.hideOnClick() ?? this.options()?.hideOnClick ?? defaults.hideOnClick) !== false,
|
|
140
140
|
};
|
|
141
|
-
}, ...(ngDevMode ? [{ debugName: "effectiveOptions" }] : []));
|
|
142
|
-
tooltip = computed(() => this._tooltip()?.instance, ...(ngDevMode ? [{ debugName: "tooltip" }] : []));
|
|
141
|
+
}, ...(ngDevMode ? [{ debugName: "effectiveOptions" }] : /* istanbul ignore next */ []));
|
|
142
|
+
tooltip = computed(() => this._tooltip()?.instance, ...(ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []));
|
|
143
143
|
constructor() {
|
|
144
144
|
super();
|
|
145
145
|
const abortSignal = abortSignalOnDestroy();
|
|
@@ -227,10 +227,10 @@ class NgnTooltip extends NgnBase {
|
|
|
227
227
|
tooltip.setInput('content', null);
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
231
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
230
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnTooltip, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
231
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.2", type: NgnTooltip, isStandalone: true, selector: "[ngnTooltip]", inputs: { content: { classPropertyName: "content", publicName: "ngnTooltip", isSignal: true, isRequired: false, transformFunction: null }, showOnlyIfTruncated: { classPropertyName: "showOnlyIfTruncated", publicName: "ngnTooltipShowOnlyIfTruncated", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "ngnTooltipSize", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "ngnTooltipOptions", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "ngnTooltipPlacement", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "ngnTooltipOffset", isSignal: true, isRequired: false, transformFunction: null }, showDelay: { classPropertyName: "showDelay", publicName: "ngnTooltipShowDelay", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "ngnTooltipHideDelay", isSignal: true, isRequired: false, transformFunction: null }, showArrow: { classPropertyName: "showArrow", publicName: "ngnTooltipShowArrow", isSignal: true, isRequired: false, transformFunction: null }, showOnHover: { classPropertyName: "showOnHover", publicName: "ngnTooltipShowOnHover", isSignal: true, isRequired: false, transformFunction: null }, showOnFocus: { classPropertyName: "showOnFocus", publicName: "ngnTooltipShowOnFocus", isSignal: true, isRequired: false, transformFunction: null }, hideOnTooltipHover: { classPropertyName: "hideOnTooltipHover", publicName: "ngnTooltipHideOnTooltipHover", isSignal: true, isRequired: false, transformFunction: null }, hideOnClick: { classPropertyName: "hideOnClick", publicName: "ngnTooltipHideOnClick", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideSelf(NgnTooltip)], exportAs: ["ngnTooltip"], usesInheritance: true, ngImport: i0 });
|
|
232
232
|
}
|
|
233
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnTooltip, decorators: [{
|
|
234
234
|
type: Directive,
|
|
235
235
|
args: [{
|
|
236
236
|
selector: '[ngnTooltip]',
|
|
@@ -249,43 +249,43 @@ class TooltipComponent extends NgnBase {
|
|
|
249
249
|
/**
|
|
250
250
|
* The anchor element to which the tooltip is attached.
|
|
251
251
|
*/
|
|
252
|
-
anchor = input.required(...(ngDevMode ? [{ debugName: "anchor" }] : []));
|
|
252
|
+
anchor = input.required(...(ngDevMode ? [{ debugName: "anchor" }] : /* istanbul ignore next */ []));
|
|
253
253
|
/**
|
|
254
254
|
* The text content of the tooltip.
|
|
255
255
|
*/
|
|
256
|
-
text = input(...(ngDevMode ? [undefined, { debugName: "text" }] : []));
|
|
256
|
+
text = input(...(ngDevMode ? [undefined, { debugName: "text" }] : /* istanbul ignore next */ []));
|
|
257
257
|
/**
|
|
258
258
|
* The content template of the tooltip.
|
|
259
259
|
*/
|
|
260
|
-
content = input(...(ngDevMode ? [undefined, { debugName: "content" }] : []));
|
|
260
|
+
content = input(...(ngDevMode ? [undefined, { debugName: "content" }] : /* istanbul ignore next */ []));
|
|
261
261
|
/**
|
|
262
262
|
* If set to `true`, the tooltip will only be shown if the anchor element is truncated. `""` is equivalent to `true`.
|
|
263
263
|
* @default `false`
|
|
264
264
|
*/
|
|
265
|
-
showOnlyIfTruncated = input(false, ...(ngDevMode ? [{ debugName: "showOnlyIfTruncated" }] : []));
|
|
265
|
+
showOnlyIfTruncated = input(false, ...(ngDevMode ? [{ debugName: "showOnlyIfTruncated" }] : /* istanbul ignore next */ []));
|
|
266
266
|
/**
|
|
267
267
|
* The size constraints for the tooltip.
|
|
268
268
|
* This can be used to limit the width and height of the tooltip.
|
|
269
269
|
* If not provided, the tooltip is only constrained by the size of the screen.
|
|
270
270
|
*/
|
|
271
|
-
size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : []));
|
|
271
|
+
size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
|
|
272
272
|
/**
|
|
273
273
|
* The options for the tooltip.
|
|
274
274
|
*
|
|
275
275
|
*/
|
|
276
|
-
options = input(this._config.defaults.tooltip, ...(ngDevMode ? [{ debugName: "options" }] : []));
|
|
277
|
-
showDelayMs = computed(() => getTimeSpanMilliseconds(this.options().showDelay), ...(ngDevMode ? [{ debugName: "showDelayMs" }] : []));
|
|
278
|
-
hideDelayMs = computed(() => getTimeSpanMilliseconds(this.options().hideDelay), ...(ngDevMode ? [{ debugName: "hideDelayMs" }] : []));
|
|
279
|
-
position = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
280
|
-
positionClass = signal('', ...(ngDevMode ? [{ debugName: "positionClass" }] : []));
|
|
281
|
-
relativeAnchorElementPosition = signal(undefined, ...(ngDevMode ? [{ debugName: "relativeAnchorElementPosition" }] : []));
|
|
282
|
-
_isShown = signal(false, ...(ngDevMode ? [{ debugName: "_isShown" }] : []));
|
|
283
|
-
_isClosing = signal(false, ...(ngDevMode ? [{ debugName: "_isClosing" }] : []));
|
|
276
|
+
options = input(this._config.defaults.tooltip, ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
|
|
277
|
+
showDelayMs = computed(() => getTimeSpanMilliseconds(this.options().showDelay), ...(ngDevMode ? [{ debugName: "showDelayMs" }] : /* istanbul ignore next */ []));
|
|
278
|
+
hideDelayMs = computed(() => getTimeSpanMilliseconds(this.options().hideDelay), ...(ngDevMode ? [{ debugName: "hideDelayMs" }] : /* istanbul ignore next */ []));
|
|
279
|
+
position = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
|
|
280
|
+
positionClass = signal('', ...(ngDevMode ? [{ debugName: "positionClass" }] : /* istanbul ignore next */ []));
|
|
281
|
+
relativeAnchorElementPosition = signal(undefined, ...(ngDevMode ? [{ debugName: "relativeAnchorElementPosition" }] : /* istanbul ignore next */ []));
|
|
282
|
+
_isShown = signal(false, ...(ngDevMode ? [{ debugName: "_isShown" }] : /* istanbul ignore next */ []));
|
|
283
|
+
_isClosing = signal(false, ...(ngDevMode ? [{ debugName: "_isClosing" }] : /* istanbul ignore next */ []));
|
|
284
284
|
id = generateElementId();
|
|
285
285
|
isShown = this._isShown.asReadonly();
|
|
286
286
|
isClosing = this._isClosing.asReadonly();
|
|
287
287
|
_defaultContentTemplate = viewChild.required('defaultContentTemplate');
|
|
288
|
-
contentTemplate = computed(() => this.content() ?? this._defaultContentTemplate(), ...(ngDevMode ? [{ debugName: "contentTemplate" }] : []));
|
|
288
|
+
contentTemplate = computed(() => this.content() ?? this._defaultContentTemplate(), ...(ngDevMode ? [{ debugName: "contentTemplate" }] : /* istanbul ignore next */ []));
|
|
289
289
|
_autoPos = computedWithPrevious(prev => {
|
|
290
290
|
prev?.stop();
|
|
291
291
|
const element = this.element.nativeElement;
|
|
@@ -409,10 +409,10 @@ class TooltipComponent extends NgnBase {
|
|
|
409
409
|
toPixels(value) {
|
|
410
410
|
return value !== undefined ? `${value}px` : undefined;
|
|
411
411
|
}
|
|
412
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
413
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.
|
|
412
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
413
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.2", type: TooltipComponent, isStandalone: true, selector: "ngn-tooltip", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: true, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, showOnlyIfTruncated: { classPropertyName: "showOnlyIfTruncated", publicName: "showOnlyIfTruncated", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "toggle": "onToggle($event)", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "click": "onClick($event)" }, properties: { "class": "positionClass()", "style.--anchor-start": "toPixels(relativeAnchorElementPosition()?.start)", "style.--anchor-center": "toPixels(relativeAnchorElementPosition()?.center)", "style.--anchor-end": "toPixels(relativeAnchorElementPosition()?.end)", "style.left": "toPixels(position().x)", "style.top": "toPixels(position().y)", "attr.popover": "'hint'", "attr.id": "id", "attr.role": "'tooltip'" } }, providers: [provideSelf(TooltipComponent)], viewQueries: [{ propertyName: "_defaultContentTemplate", first: true, predicate: ["defaultContentTemplate"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div [ptInt]=\"this\" [ptClass]=\"'content'\">\r\n <ngn-defer [lazyContent]=\"contentTemplate()\" [open]=\"isShown()\" [cache]=\"false\"></ngn-defer>\r\n</div>\r\n\r\n<ng-template #defaultContentTemplate>\r\n <span [ptInt]=\"this\" [ptClass]=\"'text'\">{{ text() }}</span>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgnPt, selector: "[ptInt]", inputs: ["ptInt", "ptClass"] }, { kind: "component", type: NgnDefer, selector: "ngn-defer", inputs: ["lazyContent", "lazyContentContext", "open", "lazy", "cache", "hiddenOnClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
414
414
|
}
|
|
415
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
415
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
416
416
|
type: Component,
|
|
417
417
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ngn-tooltip', imports: [NgnPt, NgnDefer], providers: [provideSelf(TooltipComponent)], host: {
|
|
418
418
|
'[class]': `positionClass()`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngneers-controls-tooltip.mjs","sources":["../../src/tooltip/relative-anchor-element-position.ts","../../src/tooltip/tooltip.ts","../../src/tooltip/tooltip.html","../../src/tooltip/ngneers-controls-tooltip.ts"],"sourcesContent":["import type { Middleware, Placement } from '@floating-ui/dom';\r\n\r\nexport type RelativeAnchorElementPositionData = {\r\n start: number;\r\n center: number;\r\n end: number;\r\n};\r\n\r\nexport const relativeAnchorElementPosition: Middleware = {\r\n name: 'relativeAnchorElementPosition',\r\n async fn(state) {\r\n const { placement, rects } = state;\r\n\r\n const axis = getAxis(placement);\r\n const axisSize = axis === 'x' ? 'width' : 'height';\r\n\r\n return {\r\n data: {\r\n start: rects.reference[axis] - state[axis],\r\n center: rects.reference[axis] + rects.reference[axisSize] / 2 - state[axis],\r\n end: rects.reference[axis] + rects.reference[axisSize] - state[axis],\r\n } satisfies RelativeAnchorElementPositionData,\r\n };\r\n },\r\n};\r\n\r\nfunction getAxis(placement: Placement): 'x' | 'y' {\r\n switch (placement.split('-')[0]) {\r\n case 'top':\r\n case 'bottom':\r\n return 'x';\r\n case 'left':\r\n case 'right':\r\n return 'y';\r\n default:\r\n throw new Error(`Unknown placement: ${placement}`);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ComponentRef,\r\n computed,\r\n Directive,\r\n DOCUMENT,\r\n effect,\r\n inject,\r\n input,\r\n type OnDestroy,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n ViewContainerRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport {\r\n abortSignalOnDestroy,\r\n autoPositionElement,\r\n type AutoPositioningHandle,\r\n NGN_CONFIG,\r\n type PositioningSizeConstraints,\r\n splitPlacement,\r\n type TooltipOptions,\r\n} from '@ngneers/controls/api/ng';\r\nimport { NgnBase, provideSelf, NgnPt } from '@ngneers/controls/base';\r\nimport { NgnDefer } from '@ngneers/controls/defer';\r\nimport { getTimeSpanMilliseconds, notNullish, type TimeSpan } from '@ngneers/controls/utils';\r\nimport { computedWithPrevious, generateElementId } from '@ngneers/controls/utils-ng';\r\nimport { tooltipControlTemplate } from '@ngneers/controls-themes/templates/tooltip';\r\n\r\nimport {\r\n relativeAnchorElementPosition,\r\n type RelativeAnchorElementPositionData,\r\n} from './relative-anchor-element-position';\r\n\r\nimport type { Placement } from '@floating-ui/dom';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Directive({\r\n selector: '[ngnTooltip]',\r\n exportAs: 'ngnTooltip',\r\n providers: [provideSelf(NgnTooltip)],\r\n})\r\nexport class NgnTooltip extends NgnBase<'tooltip'> implements OnDestroy {\r\n protected readonly theme = null;\r\n private readonly _viewContainerRef = inject(ViewContainerRef);\r\n private readonly _config = inject(NGN_CONFIG);\r\n private readonly _tooltip = signal<ComponentRef<TooltipComponent> | null>(null);\r\n\r\n /**\r\n * The content of the tooltip, can be a string or a TemplateRef.\r\n * If the value is falsy, the tooltip will not be shown.\r\n * @alias ngnTooltip\r\n */\r\n public readonly content = input<TemplateRef<unknown> | string | null | undefined>(null, {\r\n alias: 'ngnTooltip',\r\n });\r\n /**\r\n * If set to `true`, the tooltip will only be shown if the anchor element is truncated. `\"\"` is equivalent to `true`.\r\n * @alias ngnTooltipShowOnlyIfTruncated\r\n * @default false\r\n */\r\n public readonly showOnlyIfTruncated = input<boolean | ''>(false, {\r\n alias: 'ngnTooltipShowOnlyIfTruncated',\r\n });\r\n /**\r\n * The size constraints for the tooltip.\r\n * This can be used to limit the width and height of the tooltip.\r\n * If not provided, the tooltip is only constrained by the size of the screen.\r\n * @alias ngnTooltipSize\r\n */\r\n public readonly size = input<PositioningSizeConstraints | null | undefined>(null, {\r\n alias: 'ngnTooltipSize',\r\n });\r\n\r\n /**\r\n * The options for the tooltip.\r\n * This is a shorthand for setting multiple options at once.\r\n * The individual options take precedence over the options set here.\r\n * @alias ngnTooltipOptions\r\n */\r\n public readonly options = input<Partial<TooltipOptions> | null | undefined>(null, {\r\n alias: 'ngnTooltipOptions',\r\n });\r\n /**\r\n * The placement of the tooltip relative to the anchor element.\r\n * @alias ngnTooltipPlacement\r\n * @default 'bottom'\r\n */\r\n public readonly placement = input<Placement | null | undefined>(null, {\r\n alias: 'ngnTooltipPlacement',\r\n });\r\n /**\r\n * The offset in Pixels of the tooltip from the anchor element.\r\n * @alias ngnTooltipOffset\r\n * @default 4\r\n */\r\n public readonly offset = input<number | null | undefined>(null, {\r\n alias: 'ngnTooltipOffset',\r\n });\r\n /**\r\n * The delay before the tooltip is shown. If a number is provided, it is interpreted as milliseconds.\r\n * @alias ngnTooltipShowDelay\r\n * @default '0.5s'\r\n */\r\n public readonly showDelay = input<TimeSpan | null | undefined>(null, {\r\n alias: 'ngnTooltipShowDelay',\r\n });\r\n /**\r\n * The delay before the tooltip is hidden. If a number is provided, it is interpreted as milliseconds.\r\n * @alias ngnTooltipHideDelay\r\n * @default '0.1s'\r\n */\r\n public readonly hideDelay = input<TimeSpan | null | undefined>(null, {\r\n alias: 'ngnTooltipHideDelay',\r\n });\r\n /**\r\n * Whether to show an arrow pointing to the anchor element. `\"\"` is equivalent to `true`.\r\n * @alias ngnTooltipShowArrow\r\n * @default true\r\n */\r\n public readonly showArrow = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipShowArrow',\r\n });\r\n /**\r\n * Shows the tooltip on hover.\r\n * @alias ngnTooltipShowOnHover\r\n * @default true\r\n */\r\n public readonly showOnHover = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipShowOnHover',\r\n });\r\n /**\r\n * Shows the tooltip on focus.\r\n * @alias ngnTooltipShowOnFocus\r\n * @default true\r\n */\r\n public readonly showOnFocus = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipShowOnFocus',\r\n });\r\n /**\r\n * Hides the tooltip (without delay) when the mouse hovers over the tooltip.\r\n * @alias ngnTooltipHideOnTooltipHover\r\n * @default false\r\n */\r\n public readonly hideOnTooltipHover = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipHideOnTooltipHover',\r\n });\r\n /**\r\n * Hides the tooltip (without delay) when the user clicks on the tooltip.\r\n * @alias ngnTooltipHideOnClick\r\n * @default true\r\n */\r\n public readonly hideOnClick = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipHideOnClick',\r\n });\r\n\r\n public readonly effectiveOptions = computed<TooltipOptions>(() => {\r\n const defaults = this._config.defaults.tooltip;\r\n return {\r\n placement: this.placement() ?? this.options()?.placement ?? defaults.placement,\r\n offset: this.offset() ?? this.options()?.offset ?? defaults.offset,\r\n showDelay: this.showDelay() ?? this.options()?.showDelay ?? defaults.showDelay,\r\n hideDelay: this.hideDelay() ?? this.options()?.hideDelay ?? defaults.hideDelay,\r\n showArrow: (this.showArrow() ?? this.options()?.showArrow ?? defaults.showArrow) !== false,\r\n showOnHover:\r\n (this.showOnHover() ?? this.options()?.showOnHover ?? defaults.showOnHover) !== false,\r\n showOnFocus:\r\n (this.showOnFocus() ?? this.options()?.showOnFocus ?? defaults.showOnFocus) !== false,\r\n hideOnTooltipHover:\r\n (this.hideOnTooltipHover() ??\r\n this.options()?.hideOnTooltipHover ??\r\n defaults.hideOnTooltipHover) !== false,\r\n hideOnClick:\r\n (this.hideOnClick() ?? this.options()?.hideOnClick ?? defaults.hideOnClick) !== false,\r\n };\r\n });\r\n\r\n public readonly tooltip = computed(() => this._tooltip()?.instance);\r\n\r\n constructor() {\r\n super();\r\n\r\n const abortSignal = abortSignalOnDestroy();\r\n this.element.nativeElement.addEventListener('mouseenter', this.onMouseEnter.bind(this), {\r\n signal: abortSignal,\r\n });\r\n this.element.nativeElement.addEventListener('mouseleave', this.onMouseLeave.bind(this), {\r\n signal: abortSignal,\r\n });\r\n this.element.nativeElement.addEventListener('focus', this.onFocus.bind(this), {\r\n signal: abortSignal,\r\n });\r\n this.element.nativeElement.addEventListener('blur', this.onBlur.bind(this), {\r\n signal: abortSignal,\r\n });\r\n\r\n effect(() => {\r\n const tooltip = this._tooltip();\r\n if (tooltip) this.updateContent(tooltip);\r\n });\r\n effect(() => this._tooltip()?.setInput('showOnlyIfTruncated', this.showOnlyIfTruncated()));\r\n effect(() => this._tooltip()?.setInput('size', this.size()));\r\n effect(() => this._tooltip()?.setInput('options', this.effectiveOptions()));\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._tooltip()?.destroy();\r\n this._tooltip.set(null);\r\n }\r\n\r\n public show(): void {\r\n const tooltip = this._tooltip();\r\n if (tooltip) {\r\n tooltip.instance.show();\r\n } else {\r\n const tooltip = this.getTooltip();\r\n if (tooltip) {\r\n requestAnimationFrame(() => tooltip.show());\r\n }\r\n }\r\n }\r\n\r\n public hide(): void {\r\n this._tooltip()?.instance.hide();\r\n }\r\n\r\n protected onMouseEnter() {\r\n if (this.effectiveOptions().showOnHover) {\r\n this.show();\r\n }\r\n }\r\n\r\n protected onMouseLeave() {\r\n if (this.effectiveOptions().showOnHover) {\r\n this.hide();\r\n }\r\n }\r\n\r\n protected onFocus() {\r\n if (this.effectiveOptions().showOnFocus) {\r\n this.show();\r\n }\r\n }\r\n\r\n protected onBlur() {\r\n if (this.effectiveOptions().showOnFocus) {\r\n this.hide();\r\n }\r\n }\r\n\r\n private getTooltip(): TooltipComponent | undefined {\r\n let tooltip = this._tooltip();\r\n if (!tooltip && this.content()) {\r\n tooltip = this._viewContainerRef.createComponent(TooltipComponent);\r\n tooltip.setInput('anchor', this.element.nativeElement);\r\n this.updateContent(tooltip);\r\n tooltip.setInput('showOnlyIfTruncated', this.showOnlyIfTruncated());\r\n tooltip.setInput('size', this.size());\r\n tooltip.setInput('options', this.effectiveOptions());\r\n this._tooltip.set(tooltip);\r\n }\r\n return tooltip?.instance;\r\n }\r\n\r\n private updateContent(tooltip: ComponentRef<TooltipComponent>) {\r\n const content = this.content();\r\n if (content instanceof TemplateRef) {\r\n tooltip.setInput('text', null);\r\n tooltip.setInput('content', content);\r\n } else {\r\n tooltip.setInput('text', content);\r\n tooltip.setInput('content', null);\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'ngn-tooltip',\r\n templateUrl: './tooltip.html',\r\n imports: [NgnPt, NgnDefer],\r\n providers: [provideSelf(TooltipComponent)],\r\n host: {\r\n '[class]': `positionClass()`,\r\n '[style.--anchor-start]': `toPixels(relativeAnchorElementPosition()?.start)`,\r\n '[style.--anchor-center]': `toPixels(relativeAnchorElementPosition()?.center)`,\r\n '[style.--anchor-end]': `toPixels(relativeAnchorElementPosition()?.end)`,\r\n '[style.left]': `toPixels(position().x)`,\r\n '[style.top]': `toPixels(position().y)`,\r\n '[attr.popover]': `'hint'`,\r\n '[attr.id]': `id`,\r\n '[attr.role]': `'tooltip'`,\r\n '(toggle)': 'onToggle($event)',\r\n '(mouseenter)': 'onMouseEnter()',\r\n '(mouseleave)': 'onMouseLeave()',\r\n '(click)': 'onClick($event)',\r\n },\r\n})\r\nexport class TooltipComponent extends NgnBase<'tooltip'> {\r\n private _showHideTimeout?: ReturnType<typeof setTimeout>;\r\n protected readonly theme = this.injectThemeTemplate(tooltipControlTemplate, {\r\n root: true,\r\n closing: () => this.isClosing(),\r\n 'with-arrow': () => this.options().showArrow !== false,\r\n });\r\n private readonly _config = inject(NGN_CONFIG);\r\n\r\n /**\r\n * The anchor element to which the tooltip is attached.\r\n */\r\n public readonly anchor = input.required<HTMLElement>();\r\n /**\r\n * The text content of the tooltip.\r\n */\r\n public readonly text = input<string | null>();\r\n /**\r\n * The content template of the tooltip.\r\n */\r\n public readonly content = input<TemplateRef<unknown>>();\r\n /**\r\n * If set to `true`, the tooltip will only be shown if the anchor element is truncated. `\"\"` is equivalent to `true`.\r\n * @default `false`\r\n */\r\n public readonly showOnlyIfTruncated = input<boolean | ''>(false);\r\n /**\r\n * The size constraints for the tooltip.\r\n * This can be used to limit the width and height of the tooltip.\r\n * If not provided, the tooltip is only constrained by the size of the screen.\r\n */\r\n public readonly size = input<PositioningSizeConstraints | null>();\r\n /**\r\n * The options for the tooltip.\r\n *\r\n */\r\n public readonly options = input<TooltipOptions>(this._config.defaults.tooltip);\r\n\r\n protected readonly showDelayMs = computed(() =>\r\n getTimeSpanMilliseconds(this.options().showDelay)\r\n );\r\n protected readonly hideDelayMs = computed(() =>\r\n getTimeSpanMilliseconds(this.options().hideDelay)\r\n );\r\n\r\n protected readonly position = signal<{ x: number; y: number }>({ x: 0, y: 0 });\r\n protected readonly positionClass = signal<string>('');\r\n protected readonly relativeAnchorElementPosition = signal<\r\n RelativeAnchorElementPositionData | undefined\r\n >(undefined);\r\n\r\n private readonly _isShown = signal(false);\r\n private readonly _isClosing = signal(false);\r\n\r\n public readonly id = generateElementId();\r\n public readonly isShown = this._isShown.asReadonly();\r\n public readonly isClosing = this._isClosing.asReadonly();\r\n\r\n private readonly _defaultContentTemplate =\r\n viewChild.required<TemplateRef<unknown>>('defaultContentTemplate');\r\n protected readonly contentTemplate = computed(\r\n () => this.content() ?? this._defaultContentTemplate()\r\n );\r\n\r\n private readonly _autoPos = computedWithPrevious<AutoPositioningHandle | undefined>(prev => {\r\n prev?.stop();\r\n const element = this.element.nativeElement;\r\n if (!element) {\r\n return undefined;\r\n }\r\n return autoPositionElement(this.anchor(), element, {\r\n injector: this.injector,\r\n stopped: true,\r\n resize: false,\r\n sizeConstraints: this.size() ?? undefined,\r\n placement: this.options().placement,\r\n offset: this.options().offset,\r\n middleware: [relativeAnchorElementPosition],\r\n disableSettingStyles: true,\r\n strategy: 'fixed',\r\n onPositionChange: ({ x, y, placement, middlewareData }) => {\r\n this.relativeAnchorElementPosition.set(middlewareData[relativeAnchorElementPosition.name]);\r\n this.position.set({ x, y });\r\n this.positionClass.set(\r\n splitPlacement(placement)\r\n .filter(notNullish)\r\n .map(x => this.theme.class(x))\r\n .join(' ')\r\n );\r\n },\r\n });\r\n });\r\n\r\n constructor() {\r\n super();\r\n const document = inject(DOCUMENT);\r\n const destroyAbortSignal = abortSignalOnDestroy();\r\n effect(() => {\r\n if (this.isShown() && !this.isClosing()) {\r\n document.addEventListener('keydown', this.onDocumentKeyDown.bind(this), {\r\n signal: destroyAbortSignal,\r\n });\r\n } else {\r\n document.removeEventListener('keydown', this.onDocumentKeyDown.bind(this));\r\n }\r\n });\r\n effect(() => {\r\n if (this.isShown()) {\r\n this._autoPos()?.start();\r\n } else {\r\n this._autoPos()?.stop();\r\n }\r\n });\r\n }\r\n\r\n public show(skipDelay = false) {\r\n clearTimeout(this._showHideTimeout);\r\n\r\n const delay = skipDelay ? 0 : this.showDelayMs();\r\n if (delay <= 0) {\r\n this.onShow();\r\n } else {\r\n this._showHideTimeout = setTimeout(() => this.onShow(), delay);\r\n }\r\n }\r\n\r\n public hide(skipDelay = false) {\r\n clearTimeout(this._showHideTimeout);\r\n\r\n const delay = skipDelay ? 0 : this.hideDelayMs();\r\n if (delay <= 0) {\r\n this.onHide();\r\n } else {\r\n this._showHideTimeout = setTimeout(() => this.onHide(), delay);\r\n }\r\n }\r\n\r\n protected onMouseEnter() {\r\n if (this.options().hideOnTooltipHover) {\r\n this.hide(true);\r\n } else {\r\n this.show(true);\r\n }\r\n }\r\n\r\n protected onMouseLeave() {\r\n this.hide();\r\n }\r\n\r\n protected onClick(event: PointerEvent) {\r\n if (this.options().hideOnClick) {\r\n this.hide(true);\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n protected onDocumentKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.hide(true);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n protected onShow() {\r\n if (!this.content() && !this.text()) {\r\n return;\r\n }\r\n if (this.showOnlyIfTruncated() !== false && !isElementTruncated(this.anchor())) {\r\n return;\r\n }\r\n\r\n this._isShown.set(true);\r\n this.element.nativeElement.showPopover();\r\n }\r\n\r\n protected onHide() {\r\n this._isClosing.set(true);\r\n requestAnimationFrame(() => {\r\n Promise.all(this.element.nativeElement.getAnimations().map(a => a.finished))\r\n .then(() => this.element.nativeElement.hidePopover())\r\n .catch(() => {})\r\n .finally(() => this._isClosing.set(false));\r\n });\r\n }\r\n\r\n protected onToggle(event: Event) {\r\n const evt = event as ToggleEvent;\r\n if (evt.newState === 'closed') {\r\n this._isShown.set(false);\r\n } else {\r\n this._isShown.set(true);\r\n }\r\n }\r\n\r\n protected toPixels(value: number | undefined): string | undefined {\r\n return value !== undefined ? `${value}px` : undefined;\r\n }\r\n}\r\n\r\nfunction isElementTruncated(element: HTMLElement): boolean {\r\n return (\r\n element.clientWidth < element.scrollWidth || // horizontal overflow\r\n element.clientHeight < element.scrollHeight || // vertical overflow\r\n element.offsetWidth < element.scrollWidth || // single-line ellipsis\r\n element.offsetHeight < element.scrollHeight // multi-line ellipsis (line-clamp)\r\n );\r\n}\r\n","<div [ptInt]=\"this\" [ptClass]=\"'content'\">\r\n <ngn-defer [lazyContent]=\"contentTemplate()\" [open]=\"isShown()\" [cache]=\"false\"></ngn-defer>\r\n</div>\r\n\r\n<ng-template #defaultContentTemplate>\r\n <span [ptInt]=\"this\" [ptClass]=\"'text'\">{{ text() }}</span>\r\n</ng-template>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngneers-controls-tooltip.mjs","sources":["../../src/tooltip/relative-anchor-element-position.ts","../../src/tooltip/tooltip.ts","../../src/tooltip/tooltip.html","../../src/tooltip/ngneers-controls-tooltip.ts"],"sourcesContent":["import type { Middleware, Placement } from '@floating-ui/dom';\r\n\r\nexport type RelativeAnchorElementPositionData = {\r\n start: number;\r\n center: number;\r\n end: number;\r\n};\r\n\r\nexport const relativeAnchorElementPosition: Middleware = {\r\n name: 'relativeAnchorElementPosition',\r\n async fn(state) {\r\n const { placement, rects } = state;\r\n\r\n const axis = getAxis(placement);\r\n const axisSize = axis === 'x' ? 'width' : 'height';\r\n\r\n return {\r\n data: {\r\n start: rects.reference[axis] - state[axis],\r\n center: rects.reference[axis] + rects.reference[axisSize] / 2 - state[axis],\r\n end: rects.reference[axis] + rects.reference[axisSize] - state[axis],\r\n } satisfies RelativeAnchorElementPositionData,\r\n };\r\n },\r\n};\r\n\r\nfunction getAxis(placement: Placement): 'x' | 'y' {\r\n switch (placement.split('-')[0]) {\r\n case 'top':\r\n case 'bottom':\r\n return 'x';\r\n case 'left':\r\n case 'right':\r\n return 'y';\r\n default:\r\n throw new Error(`Unknown placement: ${placement}`);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ComponentRef,\r\n computed,\r\n Directive,\r\n DOCUMENT,\r\n effect,\r\n inject,\r\n input,\r\n type OnDestroy,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n ViewContainerRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport {\r\n abortSignalOnDestroy,\r\n autoPositionElement,\r\n type AutoPositioningHandle,\r\n NGN_CONFIG,\r\n type PositioningSizeConstraints,\r\n splitPlacement,\r\n type TooltipOptions,\r\n} from '@ngneers/controls/api/ng';\r\nimport { NgnBase, provideSelf, NgnPt } from '@ngneers/controls/base';\r\nimport { NgnDefer } from '@ngneers/controls/defer';\r\nimport { getTimeSpanMilliseconds, notNullish, type TimeSpan } from '@ngneers/controls/utils';\r\nimport { computedWithPrevious, generateElementId } from '@ngneers/controls/utils-ng';\r\nimport { tooltipControlTemplate } from '@ngneers/controls-themes/templates/tooltip';\r\n\r\nimport {\r\n relativeAnchorElementPosition,\r\n type RelativeAnchorElementPositionData,\r\n} from './relative-anchor-element-position';\r\n\r\nimport type { Placement } from '@floating-ui/dom';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Directive({\r\n selector: '[ngnTooltip]',\r\n exportAs: 'ngnTooltip',\r\n providers: [provideSelf(NgnTooltip)],\r\n})\r\nexport class NgnTooltip extends NgnBase<'tooltip'> implements OnDestroy {\r\n protected readonly theme = null;\r\n private readonly _viewContainerRef = inject(ViewContainerRef);\r\n private readonly _config = inject(NGN_CONFIG);\r\n private readonly _tooltip = signal<ComponentRef<TooltipComponent> | null>(null);\r\n\r\n /**\r\n * The content of the tooltip, can be a string or a TemplateRef.\r\n * If the value is falsy, the tooltip will not be shown.\r\n * @alias ngnTooltip\r\n */\r\n public readonly content = input<TemplateRef<unknown> | string | null | undefined>(null, {\r\n alias: 'ngnTooltip',\r\n });\r\n /**\r\n * If set to `true`, the tooltip will only be shown if the anchor element is truncated. `\"\"` is equivalent to `true`.\r\n * @alias ngnTooltipShowOnlyIfTruncated\r\n * @default false\r\n */\r\n public readonly showOnlyIfTruncated = input<boolean | ''>(false, {\r\n alias: 'ngnTooltipShowOnlyIfTruncated',\r\n });\r\n /**\r\n * The size constraints for the tooltip.\r\n * This can be used to limit the width and height of the tooltip.\r\n * If not provided, the tooltip is only constrained by the size of the screen.\r\n * @alias ngnTooltipSize\r\n */\r\n public readonly size = input<PositioningSizeConstraints | null | undefined>(null, {\r\n alias: 'ngnTooltipSize',\r\n });\r\n\r\n /**\r\n * The options for the tooltip.\r\n * This is a shorthand for setting multiple options at once.\r\n * The individual options take precedence over the options set here.\r\n * @alias ngnTooltipOptions\r\n */\r\n public readonly options = input<Partial<TooltipOptions> | null | undefined>(null, {\r\n alias: 'ngnTooltipOptions',\r\n });\r\n /**\r\n * The placement of the tooltip relative to the anchor element.\r\n * @alias ngnTooltipPlacement\r\n * @default 'bottom'\r\n */\r\n public readonly placement = input<Placement | null | undefined>(null, {\r\n alias: 'ngnTooltipPlacement',\r\n });\r\n /**\r\n * The offset in Pixels of the tooltip from the anchor element.\r\n * @alias ngnTooltipOffset\r\n * @default 4\r\n */\r\n public readonly offset = input<number | null | undefined>(null, {\r\n alias: 'ngnTooltipOffset',\r\n });\r\n /**\r\n * The delay before the tooltip is shown. If a number is provided, it is interpreted as milliseconds.\r\n * @alias ngnTooltipShowDelay\r\n * @default '0.5s'\r\n */\r\n public readonly showDelay = input<TimeSpan | null | undefined>(null, {\r\n alias: 'ngnTooltipShowDelay',\r\n });\r\n /**\r\n * The delay before the tooltip is hidden. If a number is provided, it is interpreted as milliseconds.\r\n * @alias ngnTooltipHideDelay\r\n * @default '0.1s'\r\n */\r\n public readonly hideDelay = input<TimeSpan | null | undefined>(null, {\r\n alias: 'ngnTooltipHideDelay',\r\n });\r\n /**\r\n * Whether to show an arrow pointing to the anchor element. `\"\"` is equivalent to `true`.\r\n * @alias ngnTooltipShowArrow\r\n * @default true\r\n */\r\n public readonly showArrow = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipShowArrow',\r\n });\r\n /**\r\n * Shows the tooltip on hover.\r\n * @alias ngnTooltipShowOnHover\r\n * @default true\r\n */\r\n public readonly showOnHover = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipShowOnHover',\r\n });\r\n /**\r\n * Shows the tooltip on focus.\r\n * @alias ngnTooltipShowOnFocus\r\n * @default true\r\n */\r\n public readonly showOnFocus = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipShowOnFocus',\r\n });\r\n /**\r\n * Hides the tooltip (without delay) when the mouse hovers over the tooltip.\r\n * @alias ngnTooltipHideOnTooltipHover\r\n * @default false\r\n */\r\n public readonly hideOnTooltipHover = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipHideOnTooltipHover',\r\n });\r\n /**\r\n * Hides the tooltip (without delay) when the user clicks on the tooltip.\r\n * @alias ngnTooltipHideOnClick\r\n * @default true\r\n */\r\n public readonly hideOnClick = input<boolean | '' | null | undefined>(null, {\r\n alias: 'ngnTooltipHideOnClick',\r\n });\r\n\r\n public readonly effectiveOptions = computed<TooltipOptions>(() => {\r\n const defaults = this._config.defaults.tooltip;\r\n return {\r\n placement: this.placement() ?? this.options()?.placement ?? defaults.placement,\r\n offset: this.offset() ?? this.options()?.offset ?? defaults.offset,\r\n showDelay: this.showDelay() ?? this.options()?.showDelay ?? defaults.showDelay,\r\n hideDelay: this.hideDelay() ?? this.options()?.hideDelay ?? defaults.hideDelay,\r\n showArrow: (this.showArrow() ?? this.options()?.showArrow ?? defaults.showArrow) !== false,\r\n showOnHover:\r\n (this.showOnHover() ?? this.options()?.showOnHover ?? defaults.showOnHover) !== false,\r\n showOnFocus:\r\n (this.showOnFocus() ?? this.options()?.showOnFocus ?? defaults.showOnFocus) !== false,\r\n hideOnTooltipHover:\r\n (this.hideOnTooltipHover() ??\r\n this.options()?.hideOnTooltipHover ??\r\n defaults.hideOnTooltipHover) !== false,\r\n hideOnClick:\r\n (this.hideOnClick() ?? this.options()?.hideOnClick ?? defaults.hideOnClick) !== false,\r\n };\r\n });\r\n\r\n public readonly tooltip = computed(() => this._tooltip()?.instance);\r\n\r\n constructor() {\r\n super();\r\n\r\n const abortSignal = abortSignalOnDestroy();\r\n this.element.nativeElement.addEventListener('mouseenter', this.onMouseEnter.bind(this), {\r\n signal: abortSignal,\r\n });\r\n this.element.nativeElement.addEventListener('mouseleave', this.onMouseLeave.bind(this), {\r\n signal: abortSignal,\r\n });\r\n this.element.nativeElement.addEventListener('focus', this.onFocus.bind(this), {\r\n signal: abortSignal,\r\n });\r\n this.element.nativeElement.addEventListener('blur', this.onBlur.bind(this), {\r\n signal: abortSignal,\r\n });\r\n\r\n effect(() => {\r\n const tooltip = this._tooltip();\r\n if (tooltip) this.updateContent(tooltip);\r\n });\r\n effect(() => this._tooltip()?.setInput('showOnlyIfTruncated', this.showOnlyIfTruncated()));\r\n effect(() => this._tooltip()?.setInput('size', this.size()));\r\n effect(() => this._tooltip()?.setInput('options', this.effectiveOptions()));\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._tooltip()?.destroy();\r\n this._tooltip.set(null);\r\n }\r\n\r\n public show(): void {\r\n const tooltip = this._tooltip();\r\n if (tooltip) {\r\n tooltip.instance.show();\r\n } else {\r\n const tooltip = this.getTooltip();\r\n if (tooltip) {\r\n requestAnimationFrame(() => tooltip.show());\r\n }\r\n }\r\n }\r\n\r\n public hide(): void {\r\n this._tooltip()?.instance.hide();\r\n }\r\n\r\n protected onMouseEnter() {\r\n if (this.effectiveOptions().showOnHover) {\r\n this.show();\r\n }\r\n }\r\n\r\n protected onMouseLeave() {\r\n if (this.effectiveOptions().showOnHover) {\r\n this.hide();\r\n }\r\n }\r\n\r\n protected onFocus() {\r\n if (this.effectiveOptions().showOnFocus) {\r\n this.show();\r\n }\r\n }\r\n\r\n protected onBlur() {\r\n if (this.effectiveOptions().showOnFocus) {\r\n this.hide();\r\n }\r\n }\r\n\r\n private getTooltip(): TooltipComponent | undefined {\r\n let tooltip = this._tooltip();\r\n if (!tooltip && this.content()) {\r\n tooltip = this._viewContainerRef.createComponent(TooltipComponent);\r\n tooltip.setInput('anchor', this.element.nativeElement);\r\n this.updateContent(tooltip);\r\n tooltip.setInput('showOnlyIfTruncated', this.showOnlyIfTruncated());\r\n tooltip.setInput('size', this.size());\r\n tooltip.setInput('options', this.effectiveOptions());\r\n this._tooltip.set(tooltip);\r\n }\r\n return tooltip?.instance;\r\n }\r\n\r\n private updateContent(tooltip: ComponentRef<TooltipComponent>) {\r\n const content = this.content();\r\n if (content instanceof TemplateRef) {\r\n tooltip.setInput('text', null);\r\n tooltip.setInput('content', content);\r\n } else {\r\n tooltip.setInput('text', content);\r\n tooltip.setInput('content', null);\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'ngn-tooltip',\r\n templateUrl: './tooltip.html',\r\n imports: [NgnPt, NgnDefer],\r\n providers: [provideSelf(TooltipComponent)],\r\n host: {\r\n '[class]': `positionClass()`,\r\n '[style.--anchor-start]': `toPixels(relativeAnchorElementPosition()?.start)`,\r\n '[style.--anchor-center]': `toPixels(relativeAnchorElementPosition()?.center)`,\r\n '[style.--anchor-end]': `toPixels(relativeAnchorElementPosition()?.end)`,\r\n '[style.left]': `toPixels(position().x)`,\r\n '[style.top]': `toPixels(position().y)`,\r\n '[attr.popover]': `'hint'`,\r\n '[attr.id]': `id`,\r\n '[attr.role]': `'tooltip'`,\r\n '(toggle)': 'onToggle($event)',\r\n '(mouseenter)': 'onMouseEnter()',\r\n '(mouseleave)': 'onMouseLeave()',\r\n '(click)': 'onClick($event)',\r\n },\r\n})\r\nexport class TooltipComponent extends NgnBase<'tooltip'> {\r\n private _showHideTimeout?: ReturnType<typeof setTimeout>;\r\n protected readonly theme = this.injectThemeTemplate(tooltipControlTemplate, {\r\n root: true,\r\n closing: () => this.isClosing(),\r\n 'with-arrow': () => this.options().showArrow !== false,\r\n });\r\n private readonly _config = inject(NGN_CONFIG);\r\n\r\n /**\r\n * The anchor element to which the tooltip is attached.\r\n */\r\n public readonly anchor = input.required<HTMLElement>();\r\n /**\r\n * The text content of the tooltip.\r\n */\r\n public readonly text = input<string | null>();\r\n /**\r\n * The content template of the tooltip.\r\n */\r\n public readonly content = input<TemplateRef<unknown>>();\r\n /**\r\n * If set to `true`, the tooltip will only be shown if the anchor element is truncated. `\"\"` is equivalent to `true`.\r\n * @default `false`\r\n */\r\n public readonly showOnlyIfTruncated = input<boolean | ''>(false);\r\n /**\r\n * The size constraints for the tooltip.\r\n * This can be used to limit the width and height of the tooltip.\r\n * If not provided, the tooltip is only constrained by the size of the screen.\r\n */\r\n public readonly size = input<PositioningSizeConstraints | null>();\r\n /**\r\n * The options for the tooltip.\r\n *\r\n */\r\n public readonly options = input<TooltipOptions>(this._config.defaults.tooltip);\r\n\r\n protected readonly showDelayMs = computed(() =>\r\n getTimeSpanMilliseconds(this.options().showDelay)\r\n );\r\n protected readonly hideDelayMs = computed(() =>\r\n getTimeSpanMilliseconds(this.options().hideDelay)\r\n );\r\n\r\n protected readonly position = signal<{ x: number; y: number }>({ x: 0, y: 0 });\r\n protected readonly positionClass = signal<string>('');\r\n protected readonly relativeAnchorElementPosition = signal<\r\n RelativeAnchorElementPositionData | undefined\r\n >(undefined);\r\n\r\n private readonly _isShown = signal(false);\r\n private readonly _isClosing = signal(false);\r\n\r\n public readonly id = generateElementId();\r\n public readonly isShown = this._isShown.asReadonly();\r\n public readonly isClosing = this._isClosing.asReadonly();\r\n\r\n private readonly _defaultContentTemplate =\r\n viewChild.required<TemplateRef<unknown>>('defaultContentTemplate');\r\n protected readonly contentTemplate = computed(\r\n () => this.content() ?? this._defaultContentTemplate()\r\n );\r\n\r\n private readonly _autoPos = computedWithPrevious<AutoPositioningHandle | undefined>(prev => {\r\n prev?.stop();\r\n const element = this.element.nativeElement;\r\n if (!element) {\r\n return undefined;\r\n }\r\n return autoPositionElement(this.anchor(), element, {\r\n injector: this.injector,\r\n stopped: true,\r\n resize: false,\r\n sizeConstraints: this.size() ?? undefined,\r\n placement: this.options().placement,\r\n offset: this.options().offset,\r\n middleware: [relativeAnchorElementPosition],\r\n disableSettingStyles: true,\r\n strategy: 'fixed',\r\n onPositionChange: ({ x, y, placement, middlewareData }) => {\r\n this.relativeAnchorElementPosition.set(middlewareData[relativeAnchorElementPosition.name]);\r\n this.position.set({ x, y });\r\n this.positionClass.set(\r\n splitPlacement(placement)\r\n .filter(notNullish)\r\n .map(x => this.theme.class(x))\r\n .join(' ')\r\n );\r\n },\r\n });\r\n });\r\n\r\n constructor() {\r\n super();\r\n const document = inject(DOCUMENT);\r\n const destroyAbortSignal = abortSignalOnDestroy();\r\n effect(() => {\r\n if (this.isShown() && !this.isClosing()) {\r\n document.addEventListener('keydown', this.onDocumentKeyDown.bind(this), {\r\n signal: destroyAbortSignal,\r\n });\r\n } else {\r\n document.removeEventListener('keydown', this.onDocumentKeyDown.bind(this));\r\n }\r\n });\r\n effect(() => {\r\n if (this.isShown()) {\r\n this._autoPos()?.start();\r\n } else {\r\n this._autoPos()?.stop();\r\n }\r\n });\r\n }\r\n\r\n public show(skipDelay = false) {\r\n clearTimeout(this._showHideTimeout);\r\n\r\n const delay = skipDelay ? 0 : this.showDelayMs();\r\n if (delay <= 0) {\r\n this.onShow();\r\n } else {\r\n this._showHideTimeout = setTimeout(() => this.onShow(), delay);\r\n }\r\n }\r\n\r\n public hide(skipDelay = false) {\r\n clearTimeout(this._showHideTimeout);\r\n\r\n const delay = skipDelay ? 0 : this.hideDelayMs();\r\n if (delay <= 0) {\r\n this.onHide();\r\n } else {\r\n this._showHideTimeout = setTimeout(() => this.onHide(), delay);\r\n }\r\n }\r\n\r\n protected onMouseEnter() {\r\n if (this.options().hideOnTooltipHover) {\r\n this.hide(true);\r\n } else {\r\n this.show(true);\r\n }\r\n }\r\n\r\n protected onMouseLeave() {\r\n this.hide();\r\n }\r\n\r\n protected onClick(event: PointerEvent) {\r\n if (this.options().hideOnClick) {\r\n this.hide(true);\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n protected onDocumentKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.hide(true);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n protected onShow() {\r\n if (!this.content() && !this.text()) {\r\n return;\r\n }\r\n if (this.showOnlyIfTruncated() !== false && !isElementTruncated(this.anchor())) {\r\n return;\r\n }\r\n\r\n this._isShown.set(true);\r\n this.element.nativeElement.showPopover();\r\n }\r\n\r\n protected onHide() {\r\n this._isClosing.set(true);\r\n requestAnimationFrame(() => {\r\n Promise.all(this.element.nativeElement.getAnimations().map(a => a.finished))\r\n .then(() => this.element.nativeElement.hidePopover())\r\n .catch(() => {})\r\n .finally(() => this._isClosing.set(false));\r\n });\r\n }\r\n\r\n protected onToggle(event: Event) {\r\n const evt = event as ToggleEvent;\r\n if (evt.newState === 'closed') {\r\n this._isShown.set(false);\r\n } else {\r\n this._isShown.set(true);\r\n }\r\n }\r\n\r\n protected toPixels(value: number | undefined): string | undefined {\r\n return value !== undefined ? `${value}px` : undefined;\r\n }\r\n}\r\n\r\nfunction isElementTruncated(element: HTMLElement): boolean {\r\n return (\r\n element.clientWidth < element.scrollWidth || // horizontal overflow\r\n element.clientHeight < element.scrollHeight || // vertical overflow\r\n element.offsetWidth < element.scrollWidth || // single-line ellipsis\r\n element.offsetHeight < element.scrollHeight // multi-line ellipsis (line-clamp)\r\n );\r\n}\r\n","<div [ptInt]=\"this\" [ptClass]=\"'content'\">\r\n <ngn-defer [lazyContent]=\"contentTemplate()\" [open]=\"isShown()\" [cache]=\"false\"></ngn-defer>\r\n</div>\r\n\r\n<ng-template #defaultContentTemplate>\r\n <span [ptInt]=\"this\" [ptClass]=\"'text'\">{{ text() }}</span>\r\n</ng-template>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAQO,MAAM,6BAA6B,GAAe;AACvD,IAAA,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,CAAC,KAAK,EAAA;AACZ,QAAA,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK;AAElC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AAC/B,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,GAAG,OAAO,GAAG,QAAQ;QAElD,OAAO;AACL,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC1C,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;AAC3E,gBAAA,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;AACzB,aAAA;SAC9C;IACH,CAAC;CACF;AAED,SAAS,OAAO,CAAC,SAAoB,EAAA;IACnC,QAAQ,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,GAAG;AACZ,QAAA,KAAK,MAAM;AACX,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,GAAG;AACZ,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,CAAA,CAAE,CAAC;;AAExD;;ACCA;;AAEG;AAMG,MAAO,UAAW,SAAQ,OAAkB,CAAA;IAC7B,KAAK,GAAG,IAAI;AACd,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,IAAA,QAAQ,GAAG,MAAM,CAAwC,IAAI,+EAAC;AAE/E;;;;AAIG;IACa,OAAO,GAAG,KAAK,CAAmD,IAAI,+EACpF,KAAK,EAAE,YAAY,EAAA,CACnB;AACF;;;;AAIG;IACa,mBAAmB,GAAG,KAAK,CAAe,KAAK,2FAC7D,KAAK,EAAE,+BAA+B,EAAA,CACtC;AACF;;;;;AAKG;IACa,IAAI,GAAG,KAAK,CAAgD,IAAI,4EAC9E,KAAK,EAAE,gBAAgB,EAAA,CACvB;AAEF;;;;;AAKG;IACa,OAAO,GAAG,KAAK,CAA6C,IAAI,+EAC9E,KAAK,EAAE,mBAAmB,EAAA,CAC1B;AACF;;;;AAIG;IACa,SAAS,GAAG,KAAK,CAA+B,IAAI,iFAClE,KAAK,EAAE,qBAAqB,EAAA,CAC5B;AACF;;;;AAIG;IACa,MAAM,GAAG,KAAK,CAA4B,IAAI,8EAC5D,KAAK,EAAE,kBAAkB,EAAA,CACzB;AACF;;;;AAIG;IACa,SAAS,GAAG,KAAK,CAA8B,IAAI,iFACjE,KAAK,EAAE,qBAAqB,EAAA,CAC5B;AACF;;;;AAIG;IACa,SAAS,GAAG,KAAK,CAA8B,IAAI,iFACjE,KAAK,EAAE,qBAAqB,EAAA,CAC5B;AACF;;;;AAIG;IACa,SAAS,GAAG,KAAK,CAAkC,IAAI,iFACrE,KAAK,EAAE,qBAAqB,EAAA,CAC5B;AACF;;;;AAIG;IACa,WAAW,GAAG,KAAK,CAAkC,IAAI,mFACvE,KAAK,EAAE,uBAAuB,EAAA,CAC9B;AACF;;;;AAIG;IACa,WAAW,GAAG,KAAK,CAAkC,IAAI,mFACvE,KAAK,EAAE,uBAAuB,EAAA,CAC9B;AACF;;;;AAIG;IACa,kBAAkB,GAAG,KAAK,CAAkC,IAAI,0FAC9E,KAAK,EAAE,8BAA8B,EAAA,CACrC;AACF;;;;AAIG;IACa,WAAW,GAAG,KAAK,CAAkC,IAAI,mFACvE,KAAK,EAAE,uBAAuB,EAAA,CAC9B;AAEc,IAAA,gBAAgB,GAAG,QAAQ,CAAiB,MAAK;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO;QAC9C,OAAO;AACL,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS;AAC9E,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM;AAClE,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS;AAC9E,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS;AAC9E,YAAA,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS,MAAM,KAAK;AAC1F,YAAA,WAAW,EACT,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,IAAI,QAAQ,CAAC,WAAW,MAAM,KAAK;AACvF,YAAA,WAAW,EACT,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,IAAI,QAAQ,CAAC,WAAW,MAAM,KAAK;AACvF,YAAA,kBAAkB,EAChB,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACxB,gBAAA,IAAI,CAAC,OAAO,EAAE,EAAE,kBAAkB;AAClC,gBAAA,QAAQ,CAAC,kBAAkB,MAAM,KAAK;AAC1C,YAAA,WAAW,EACT,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,IAAI,QAAQ,CAAC,WAAW,MAAM,KAAK;SACxF;AACH,IAAA,CAAC,uFAAC;AAEc,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,8EAAC;AAEnE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAEP,QAAA,MAAM,WAAW,GAAG,oBAAoB,EAAE;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtF,YAAA,MAAM,EAAE,WAAW;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtF,YAAA,MAAM,EAAE,WAAW;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5E,YAAA,MAAM,EAAE,WAAW;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1E,YAAA,MAAM,EAAE,WAAW;AACpB,SAAA,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,IAAI,OAAO;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAC1C,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1F,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7E;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;IAEO,IAAI,GAAA;AACT,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC/B,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;QACzB;aAAO;AACL,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;YACjC,IAAI,OAAO,EAAE;gBACX,qBAAqB,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7C;QACF;IACF;IAEO,IAAI,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE;IAClC;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAC9B,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,gBAAgB,CAAC;YAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AACtD,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QAC5B;QACA,OAAO,OAAO,EAAE,QAAQ;IAC1B;AAEQ,IAAA,aAAa,CAAC,OAAuC,EAAA;AAC3D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,YAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;AAC9B,YAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;QACtC;aAAO;AACL,YAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;AACjC,YAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;QACnC;IACF;uGAvOW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,65DAFV,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEzB,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,SAAS,EAAE,CAAC,WAAW,CAAA,UAAA,CAAY,CAAC;AACrC,iBAAA;;AAiQK,MAAO,gBAAiB,SAAQ,OAAkB,CAAA;AAC9C,IAAA,gBAAgB;AACL,IAAA,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE;AAC1E,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,OAAO,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;QAC/B,YAAY,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,KAAK;AACvD,KAAA,CAAC;AACe,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAE7C;;AAEG;AACa,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAe;AACtD;;AAEG;IACa,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AAC7C;;AAEG;IACa,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAwB;AACvD;;;AAGG;AACa,IAAA,mBAAmB,GAAG,KAAK,CAAe,KAAK,0FAAC;AAChE;;;;AAIG;IACa,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAqC;AACjE;;;AAGG;IACa,OAAO,GAAG,KAAK,CAAiB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3D,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,kFAClD;AACkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,kFAClD;AAEkB,IAAA,QAAQ,GAAG,MAAM,CAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,+EAAC;AAC3D,IAAA,aAAa,GAAG,MAAM,CAAS,EAAE,oFAAC;AAClC,IAAA,6BAA6B,GAAG,MAAM,CAEvD,SAAS,oGAAC;AAEK,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;AACxB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;IAE3B,EAAE,GAAG,iBAAiB,EAAE;AACxB,IAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AACpC,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAEvC,IAAA,uBAAuB,GACtC,SAAS,CAAC,QAAQ,CAAuB,wBAAwB,CAAC;AACjD,IAAA,eAAe,GAAG,QAAQ,CAC3C,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE,sFACvD;AAEgB,IAAA,QAAQ,GAAG,oBAAoB,CAAoC,IAAI,IAAG;QACzF,IAAI,EAAE,IAAI,EAAE;AACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;QAC1C,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,SAAS;QAClB;QACA,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE;YACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,SAAS;AACzC,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS;AACnC,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;YAC7B,UAAU,EAAE,CAAC,6BAA6B,CAAC;AAC3C,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,KAAI;AACxD,gBAAA,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,cAAc,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;gBAC1F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,cAAc,CAAC,SAAS;qBACrB,MAAM,CAAC,UAAU;AACjB,qBAAA,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5B,qBAAA,IAAI,CAAC,GAAG,CAAC,CACb;YACH,CAAC;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,MAAM,kBAAkB,GAAG,oBAAoB,EAAE;QACjD,MAAM,CAAC,MAAK;YACV,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACvC,gBAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtE,oBAAA,MAAM,EAAE,kBAAkB;AAC3B,iBAAA,CAAC;YACJ;iBAAO;AACL,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5E;AACF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE;YAC1B;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;YACzB;AACF,QAAA,CAAC,CAAC;IACJ;IAEO,IAAI,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAEnC,QAAA,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AAChD,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,MAAM,EAAE;QACf;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;QAChE;IACF;IAEO,IAAI,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAEnC,QAAA,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AAChD,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,MAAM,EAAE;QACf;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;QAChE;IACF;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,kBAAkB,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB;IACF;IAEU,YAAY,GAAA;QACpB,IAAI,CAAC,IAAI,EAAE;IACb;AAEU,IAAA,OAAO,CAAC,KAAmB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB;QACA,KAAK,CAAC,eAAe,EAAE;IACzB;AAEU,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AAC9C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACnC;QACF;AACA,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,KAAK,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9E;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE;IAC1C;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,qBAAqB,CAAC,MAAK;YACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;AACxE,iBAAA,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE;AACnD,iBAAA,KAAK,CAAC,MAAK,EAAE,CAAC;AACd,iBAAA,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;QAC7B,MAAM,GAAG,GAAG,KAAoB;AAChC,QAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB;IACF;AAEU,IAAA,QAAQ,CAAC,KAAyB,EAAA;AAC1C,QAAA,OAAO,KAAK,KAAK,SAAS,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,SAAS;IACvD;uGApMW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,kDAAA,EAAA,uBAAA,EAAA,mDAAA,EAAA,oBAAA,EAAA,gDAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAjBhB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7R5C,0SAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDqRY,KAAK,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAkBd,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAtB5B,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,aAAa,WAEd,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAA,SAAA,EACf,CAAC,WAAW,CAAA,gBAAA,CAAkB,CAAC,EAAA,IAAA,EACpC;AACJ,wBAAA,SAAS,EAAE,CAAA,eAAA,CAAiB;AAC5B,wBAAA,wBAAwB,EAAE,CAAA,gDAAA,CAAkD;AAC5E,wBAAA,yBAAyB,EAAE,CAAA,iDAAA,CAAmD;AAC9E,wBAAA,sBAAsB,EAAE,CAAA,8CAAA,CAAgD;AACxE,wBAAA,cAAc,EAAE,CAAA,sBAAA,CAAwB;AACxC,wBAAA,aAAa,EAAE,CAAA,sBAAA,CAAwB;AACvC,wBAAA,gBAAgB,EAAE,CAAA,MAAA,CAAQ;AAC1B,wBAAA,WAAW,EAAE,CAAA,EAAA,CAAI;AACjB,wBAAA,aAAa,EAAE,CAAA,SAAA,CAAW;AAC1B,wBAAA,UAAU,EAAE,kBAAkB;AAC9B,wBAAA,cAAc,EAAE,gBAAgB;AAChC,wBAAA,cAAc,EAAE,gBAAgB;AAChC,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA,EAAA,QAAA,EAAA,0SAAA,EAAA;4qBA6D0C,wBAAwB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AA4IrE,SAAS,kBAAkB,CAAC,OAAoB,EAAA;IAC9C,QACE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;AACzC,QAAA,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;AAC3C,QAAA,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;AACzC,QAAA,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;;AAE/C;;AE5fA;;AAEG;;;;"}
|
|
@@ -43,9 +43,9 @@ function explicitAfterRenderEffect(signals, effectFn) {
|
|
|
43
43
|
function asyncComputed(computeFn, initial) {
|
|
44
44
|
let latestId = 0;
|
|
45
45
|
let latestCompletedId = 0;
|
|
46
|
-
const isRunningSignal = signal(false, ...(ngDevMode ? [{ debugName: "isRunningSignal" }] : []));
|
|
47
|
-
const firstRunCompleted = signal(false, ...(ngDevMode ? [{ debugName: "firstRunCompleted" }] : []));
|
|
48
|
-
const returnSignal = signal(initial, ...(ngDevMode ? [{ debugName: "returnSignal" }] : []));
|
|
46
|
+
const isRunningSignal = signal(false, ...(ngDevMode ? [{ debugName: "isRunningSignal" }] : /* istanbul ignore next */ []));
|
|
47
|
+
const firstRunCompleted = signal(false, ...(ngDevMode ? [{ debugName: "firstRunCompleted" }] : /* istanbul ignore next */ []));
|
|
48
|
+
const returnSignal = signal(initial, ...(ngDevMode ? [{ debugName: "returnSignal" }] : /* istanbul ignore next */ []));
|
|
49
49
|
effect(() => {
|
|
50
50
|
const currentId = ++latestId;
|
|
51
51
|
isRunningSignal.set(true);
|
|
@@ -81,7 +81,7 @@ function setInputSignalValue(input, value) {
|
|
|
81
81
|
input[SIGNAL].applyValueToInputSignal(input[SIGNAL], value);
|
|
82
82
|
}
|
|
83
83
|
function afterRenderComputed(computeFn, defaultValue) {
|
|
84
|
-
const value = signal(defaultValue, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
84
|
+
const value = signal(defaultValue, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
85
85
|
afterRenderEffect(() => {
|
|
86
86
|
value.set(computeFn());
|
|
87
87
|
});
|
|
@@ -89,7 +89,7 @@ function afterRenderComputed(computeFn, defaultValue) {
|
|
|
89
89
|
}
|
|
90
90
|
function debounceSignal(input, delayMs) {
|
|
91
91
|
const delayFn = typeof delayMs === 'function' ? delayMs : () => delayMs;
|
|
92
|
-
const debounced = signal(input(), ...(ngDevMode ? [{ debugName: "debounced" }] : []));
|
|
92
|
+
const debounced = signal(input(), ...(ngDevMode ? [{ debugName: "debounced" }] : /* istanbul ignore next */ []));
|
|
93
93
|
let timeoutId;
|
|
94
94
|
effect(onCleanup => {
|
|
95
95
|
const value = input();
|
|
@@ -145,10 +145,10 @@ class NgnGlobal {
|
|
|
145
145
|
set fancyLogging(value) {
|
|
146
146
|
this._window[globalPropertyName].fancyLogging = value;
|
|
147
147
|
}
|
|
148
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
149
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
148
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnGlobal, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
149
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnGlobal });
|
|
150
150
|
}
|
|
151
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnGlobal, decorators: [{
|
|
152
152
|
type: Injectable
|
|
153
153
|
}], ctorParameters: () => [] });
|
|
154
154
|
|
|
@@ -182,7 +182,7 @@ function registerState(options) {
|
|
|
182
182
|
const k = key();
|
|
183
183
|
return k ? loadState(storage(), k) : null;
|
|
184
184
|
};
|
|
185
|
-
const stateSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "stateSignal" }] : []));
|
|
185
|
+
const stateSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "stateSignal" }] : /* istanbul ignore next */ []));
|
|
186
186
|
let timer = undefined;
|
|
187
187
|
const save = () => {
|
|
188
188
|
const k = key();
|