ng-primitives 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/a11y/README.md +3 -0
- package/a11y/index.d.ts +8 -0
- package/a11y/visually-hidden/visually-hidden.directive.d.ts +5 -0
- package/accordion/README.md +3 -0
- package/accordion/accordion/accordion.directive.d.ts +45 -0
- package/accordion/accordion/accordion.token.d.ts +15 -0
- package/accordion/accordion-content/accordion-content.directive.d.ts +25 -0
- package/accordion/accordion-content/accordion-content.token.d.ts +15 -0
- package/accordion/accordion-item/accordion-item.directive.d.ts +45 -0
- package/accordion/accordion-item/accordion-item.token.d.ts +15 -0
- package/accordion/accordion-trigger/accordion-trigger.directive.d.ts +21 -0
- package/accordion/accordion-trigger/accordion-trigger.token.d.ts +15 -0
- package/accordion/config/accordion.config.d.ts +39 -0
- package/accordion/index.d.ts +16 -0
- package/avatar/README.md +3 -0
- package/avatar/avatar/avatar.directive.d.ts +22 -0
- package/avatar/avatar/avatar.token.d.ts +15 -0
- package/avatar/avatar-fallback/avatar-fallback.directive.d.ts +45 -0
- package/avatar/avatar-image/avatar-image.directive.d.ts +28 -0
- package/avatar/config/avatar.config.d.ts +28 -0
- package/avatar/index.d.ts +12 -0
- package/checkbox/README.md +3 -0
- package/checkbox/checkbox/checkbox.directive.d.ts +89 -0
- package/checkbox/checkbox/checkbox.token.d.ts +15 -0
- package/checkbox/checkbox-indicator/checkbox-indicator.directive.d.ts +19 -0
- package/checkbox/checkbox-indicator/checkbox-indicator.token.d.ts +15 -0
- package/checkbox/checkbox-input/checkbox-input.directive.d.ts +10 -0
- package/checkbox/checkbox-label/checkbox-label.directive.d.ts +9 -0
- package/checkbox/index.d.ts +13 -0
- package/esm2022/a11y/index.mjs +9 -0
- package/esm2022/a11y/ng-primitives-a11y.mjs +5 -0
- package/esm2022/a11y/visually-hidden/visually-hidden.directive.mjs +25 -0
- package/esm2022/accordion/accordion/accordion.directive.mjs +90 -0
- package/esm2022/accordion/accordion/accordion.token.mjs +17 -0
- package/esm2022/accordion/accordion-content/accordion-content.directive.mjs +55 -0
- package/esm2022/accordion/accordion-content/accordion-content.token.mjs +17 -0
- package/esm2022/accordion/accordion-item/accordion-item.directive.mjs +64 -0
- package/esm2022/accordion/accordion-item/accordion-item.token.mjs +17 -0
- package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +58 -0
- package/esm2022/accordion/accordion-trigger/accordion-trigger.token.mjs +17 -0
- package/esm2022/accordion/config/accordion.config.mjs +35 -0
- package/esm2022/accordion/index.mjs +17 -0
- package/esm2022/accordion/ng-primitives-accordion.mjs +5 -0
- package/esm2022/avatar/avatar/avatar.directive.mjs +45 -0
- package/esm2022/avatar/avatar/avatar.token.mjs +17 -0
- package/esm2022/avatar/avatar-fallback/avatar-fallback.directive.mjs +61 -0
- package/esm2022/avatar/avatar-image/avatar-image.directive.mjs +64 -0
- package/esm2022/avatar/config/avatar.config.mjs +33 -0
- package/esm2022/avatar/index.mjs +13 -0
- package/esm2022/avatar/ng-primitives-avatar.mjs +5 -0
- package/esm2022/checkbox/checkbox/checkbox.directive.mjs +141 -0
- package/esm2022/checkbox/checkbox/checkbox.token.mjs +17 -0
- package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.directive.mjs +51 -0
- package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.token.mjs +17 -0
- package/esm2022/checkbox/checkbox-input/checkbox-input.directive.mjs +40 -0
- package/esm2022/checkbox/checkbox-label/checkbox-label.directive.mjs +32 -0
- package/esm2022/checkbox/index.mjs +14 -0
- package/esm2022/checkbox/ng-primitives-checkbox.mjs +5 -0
- package/esm2022/index.mjs +10 -0
- package/esm2022/ng-primitives.mjs +5 -0
- package/esm2022/progress/index.mjs +10 -0
- package/esm2022/progress/ng-primitives-progress.mjs +5 -0
- package/esm2022/progress/progress/progress.directive.mjs +60 -0
- package/esm2022/progress/progress/progress.token.mjs +16 -0
- package/esm2022/progress/progress-indicator/progress-indicator.directive.mjs +33 -0
- package/esm2022/radio/index.mjs +13 -0
- package/esm2022/radio/ng-primitives-radio.mjs +5 -0
- package/esm2022/radio/radio-group/radio-group.directive.mjs +100 -0
- package/esm2022/radio/radio-group/radio-group.token.mjs +17 -0
- package/esm2022/radio/radio-indicator/radio-indicator.directive.mjs +41 -0
- package/esm2022/radio/radio-item/radio-item.directive.mjs +68 -0
- package/esm2022/radio/radio-item/radio-item.token.mjs +17 -0
- package/esm2022/resize/index.mjs +10 -0
- package/esm2022/resize/ng-primitives-resize.mjs +5 -0
- package/esm2022/resize/resize/resize.directive.mjs +49 -0
- package/esm2022/resize/utils/resize.mjs +41 -0
- package/esm2022/roving-focus/index.mjs +12 -0
- package/esm2022/roving-focus/ng-primitives-roving-focus.mjs +5 -0
- package/esm2022/roving-focus/roving-focus-group/roving-focus-group.directive.mjs +244 -0
- package/esm2022/roving-focus/roving-focus-group/roving-focus-group.token.mjs +17 -0
- package/esm2022/roving-focus/roving-focus-item/roving-focus-item.directive.mjs +98 -0
- package/esm2022/roving-focus/roving-focus-item/roving-focus-item.token.mjs +17 -0
- package/esm2022/select/index.mjs +16 -0
- package/esm2022/select/ng-primitives-select.mjs +5 -0
- package/esm2022/select/select/select.directive.mjs +54 -0
- package/esm2022/select/select/select.token.mjs +16 -0
- package/esm2022/select/select-button/select-button.directive.mjs +84 -0
- package/esm2022/select/select-button/select-button.token.mjs +16 -0
- package/esm2022/select/select-option/select-option.directive.mjs +90 -0
- package/esm2022/select/select-option/select-option.token.mjs +16 -0
- package/esm2022/select/select-options/select-options.directive.mjs +157 -0
- package/esm2022/select/select-options/select-options.token.mjs +16 -0
- package/esm2022/slider/index.mjs +16 -0
- package/esm2022/slider/ng-primitives-slider.mjs +5 -0
- package/esm2022/slider/slider/slider.directive.mjs +68 -0
- package/esm2022/slider/slider/slider.token.mjs +16 -0
- package/esm2022/slider/slider-range/slider-range.directive.mjs +36 -0
- package/esm2022/slider/slider-range/slider-range.token.mjs +16 -0
- package/esm2022/slider/slider-thumb/slider-thumb.directive.mjs +109 -0
- package/esm2022/slider/slider-thumb/slider-thumb.token.mjs +16 -0
- package/esm2022/slider/slider-track/slider-track.directive.mjs +54 -0
- package/esm2022/slider/slider-track/slider-track.token.mjs +16 -0
- package/esm2022/switch/index.mjs +11 -0
- package/esm2022/switch/ng-primitives-switch.mjs +5 -0
- package/esm2022/switch/switch/switch.directive.mjs +126 -0
- package/esm2022/switch/switch/switch.token.mjs +17 -0
- package/esm2022/switch/switch-thumb/switch-thumb.directive.mjs +32 -0
- package/esm2022/tabs/config/tabs.config.mjs +35 -0
- package/esm2022/tabs/index.mjs +15 -0
- package/esm2022/tabs/ng-primitives-tabs.mjs +5 -0
- package/esm2022/tabs/tab-button/tab-button.directive.mjs +84 -0
- package/esm2022/tabs/tab-list/tab-list.directive.mjs +34 -0
- package/esm2022/tabs/tab-panel/tab-panel.directive.mjs +62 -0
- package/esm2022/tabs/tab-panel/tab-panel.token.mjs +17 -0
- package/esm2022/tabs/tabset/tabset.directive.mjs +91 -0
- package/esm2022/tabs/tabset/tabset.token.mjs +17 -0
- package/esm2022/toggle/index.mjs +9 -0
- package/esm2022/toggle/ng-primitives-toggle.mjs +5 -0
- package/esm2022/toggle/toggle/toggle.directive.mjs +48 -0
- package/esm2022/tooltip/config/tooltip.config.mjs +38 -0
- package/esm2022/tooltip/index.mjs +13 -0
- package/esm2022/tooltip/ng-primitives-tooltip.mjs +5 -0
- package/esm2022/tooltip/tooltip/tooltip.directive.mjs +57 -0
- package/esm2022/tooltip/tooltip/tooltip.token.mjs +16 -0
- package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.directive.mjs +190 -0
- package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.token.mjs +23 -0
- package/esm2022/utils/helpers/disposables.mjs +72 -0
- package/esm2022/utils/helpers/focus-manager.mjs +28 -0
- package/esm2022/utils/helpers/unique-id.mjs +22 -0
- package/esm2022/utils/hover/hover.directive.mjs +183 -0
- package/esm2022/utils/hover/hover.token.mjs +16 -0
- package/esm2022/utils/index.mjs +14 -0
- package/esm2022/utils/ng-primitives-utils.mjs +5 -0
- package/esm2022/utils/ui/dimensions.mjs +40 -0
- package/fesm2022/ng-primitives-a11y.mjs +40 -0
- package/fesm2022/ng-primitives-a11y.mjs.map +1 -0
- package/fesm2022/ng-primitives-accordion.mjs +361 -0
- package/fesm2022/ng-primitives-accordion.mjs.map +1 -0
- package/fesm2022/ng-primitives-avatar.mjs +223 -0
- package/fesm2022/ng-primitives-avatar.mjs.map +1 -0
- package/fesm2022/ng-primitives-checkbox.mjs +299 -0
- package/fesm2022/ng-primitives-checkbox.mjs.map +1 -0
- package/fesm2022/ng-primitives-progress.mjs +119 -0
- package/fesm2022/ng-primitives-progress.mjs.map +1 -0
- package/fesm2022/ng-primitives-radio.mjs +245 -0
- package/fesm2022/ng-primitives-radio.mjs.map +1 -0
- package/fesm2022/ng-primitives-resize.mjs +104 -0
- package/fesm2022/ng-primitives-resize.mjs.map +1 -0
- package/fesm2022/ng-primitives-roving-focus.mjs +384 -0
- package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -0
- package/fesm2022/ng-primitives-select.mjs +442 -0
- package/fesm2022/ng-primitives-select.mjs.map +1 -0
- package/fesm2022/ng-primitives-slider.mjs +328 -0
- package/fesm2022/ng-primitives-slider.mjs.map +1 -0
- package/fesm2022/ng-primitives-switch.mjs +185 -0
- package/fesm2022/ng-primitives-switch.mjs.map +1 -0
- package/fesm2022/ng-primitives-tabs.mjs +337 -0
- package/fesm2022/ng-primitives-tabs.mjs.map +1 -0
- package/fesm2022/ng-primitives-toggle.mjs +63 -0
- package/fesm2022/ng-primitives-toggle.mjs.map +1 -0
- package/fesm2022/ng-primitives-tooltip.mjs +330 -0
- package/fesm2022/ng-primitives-tooltip.mjs.map +1 -0
- package/fesm2022/ng-primitives-utils.mjs +370 -0
- package/fesm2022/ng-primitives-utils.mjs.map +1 -0
- package/fesm2022/ng-primitives.mjs +14 -0
- package/fesm2022/ng-primitives.mjs.map +1 -0
- package/index.d.ts +9 -0
- package/package.json +120 -0
- package/progress/README.md +3 -0
- package/progress/index.d.ts +9 -0
- package/progress/progress/progress.directive.d.ts +40 -0
- package/progress/progress/progress.token.d.ts +14 -0
- package/progress/progress-indicator/progress-indicator.directive.d.ts +9 -0
- package/radio/README.md +3 -0
- package/radio/index.d.ts +12 -0
- package/radio/radio-group/radio-group.directive.d.ts +71 -0
- package/radio/radio-group/radio-group.token.d.ts +15 -0
- package/radio/radio-indicator/radio-indicator.directive.d.ts +17 -0
- package/radio/radio-item/radio-item.directive.d.ts +41 -0
- package/radio/radio-item/radio-item.token.d.ts +15 -0
- package/resize/README.md +3 -0
- package/resize/index.d.ts +9 -0
- package/resize/resize/resize.directive.d.ts +31 -0
- package/resize/utils/resize.d.ts +18 -0
- package/roving-focus/README.md +3 -0
- package/roving-focus/index.d.ts +11 -0
- package/roving-focus/roving-focus-group/roving-focus-group.directive.d.ts +94 -0
- package/roving-focus/roving-focus-group/roving-focus-group.token.d.ts +15 -0
- package/roving-focus/roving-focus-item/roving-focus-item.directive.d.ts +57 -0
- package/roving-focus/roving-focus-item/roving-focus-item.token.d.ts +15 -0
- package/select/README.md +3 -0
- package/select/index.d.ts +15 -0
- package/select/select/select.directive.d.ts +35 -0
- package/select/select/select.token.d.ts +14 -0
- package/select/select-button/select-button.directive.d.ts +51 -0
- package/select/select-button/select-button.token.d.ts +14 -0
- package/select/select-option/select-option.directive.d.ts +57 -0
- package/select/select-option/select-option.token.d.ts +14 -0
- package/select/select-options/select-options.directive.d.ts +65 -0
- package/select/select-options/select-options.token.d.ts +14 -0
- package/slider/README.md +3 -0
- package/slider/index.d.ts +15 -0
- package/slider/slider/slider.directive.d.ts +45 -0
- package/slider/slider/slider.token.d.ts +14 -0
- package/slider/slider-range/slider-range.directive.d.ts +9 -0
- package/slider/slider-range/slider-range.token.d.ts +14 -0
- package/slider/slider-thumb/slider-thumb.directive.d.ts +21 -0
- package/slider/slider-thumb/slider-thumb.token.d.ts +14 -0
- package/slider/slider-track/slider-track.directive.d.ts +26 -0
- package/slider/slider-track/slider-track.token.d.ts +14 -0
- package/switch/README.md +3 -0
- package/switch/index.d.ts +10 -0
- package/switch/switch/switch.directive.d.ts +82 -0
- package/switch/switch/switch.token.d.ts +15 -0
- package/switch/switch-thumb/switch-thumb.directive.d.ts +9 -0
- package/tabs/README.md +3 -0
- package/tabs/config/tabs.config.d.ts +38 -0
- package/tabs/index.d.ts +14 -0
- package/tabs/tab-button/tab-button.directive.d.ts +54 -0
- package/tabs/tab-list/tab-list.directive.d.ts +9 -0
- package/tabs/tab-panel/tab-panel.directive.d.ts +32 -0
- package/tabs/tab-panel/tab-panel.token.d.ts +15 -0
- package/tabs/tabset/tabset.directive.d.ts +53 -0
- package/tabs/tabset/tabset.token.d.ts +15 -0
- package/toggle/README.md +3 -0
- package/toggle/index.d.ts +8 -0
- package/toggle/toggle/toggle.directive.d.ts +27 -0
- package/tooltip/README.md +3 -0
- package/tooltip/config/tooltip.config.d.ts +54 -0
- package/tooltip/index.d.ts +12 -0
- package/tooltip/tooltip/tooltip.directive.d.ts +30 -0
- package/tooltip/tooltip/tooltip.token.d.ts +14 -0
- package/tooltip/tooltip-trigger/tooltip-trigger.directive.d.ts +111 -0
- package/tooltip/tooltip-trigger/tooltip-trigger.token.d.ts +22 -0
- package/utils/README.md +3 -0
- package/utils/helpers/disposables.d.ts +40 -0
- package/utils/helpers/focus-manager.d.ts +19 -0
- package/utils/helpers/unique-id.d.ts +13 -0
- package/utils/hover/hover.directive.d.ts +62 -0
- package/utils/hover/hover.token.d.ts +14 -0
- package/utils/index.d.ts +13 -0
- package/utils/ui/dimensions.d.ts +9 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';
|
|
2
|
+
import { Directive, ElementRef, Injector, ViewContainerRef, booleanAttribute, computed, effect, inject, input, model, numberAttribute, signal, } from '@angular/core';
|
|
3
|
+
import { autoUpdate, computePosition, flip, offset, shift, } from '@floating-ui/dom';
|
|
4
|
+
import { injectDisposables } from 'ng-primitives/utils';
|
|
5
|
+
import { injectTooltipConfig } from '../config/tooltip.config';
|
|
6
|
+
import { NgpTooltipTriggerToken, provideTooltipTrigger } from './tooltip-trigger.token';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class NgpTooltipTrigger {
|
|
9
|
+
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* Access the trigger element
|
|
12
|
+
*/
|
|
13
|
+
this.trigger = inject((ElementRef));
|
|
14
|
+
/**
|
|
15
|
+
* Access the view container ref.
|
|
16
|
+
*/
|
|
17
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
18
|
+
/**
|
|
19
|
+
* Access the injector.
|
|
20
|
+
*/
|
|
21
|
+
this.injector = inject(Injector);
|
|
22
|
+
/**
|
|
23
|
+
* Access the global tooltip configuration.
|
|
24
|
+
*/
|
|
25
|
+
this.config = injectTooltipConfig();
|
|
26
|
+
/**
|
|
27
|
+
* Access the disposable utilities
|
|
28
|
+
*/
|
|
29
|
+
this.disposables = injectDisposables();
|
|
30
|
+
/**
|
|
31
|
+
* Access the tooltip template ref.
|
|
32
|
+
*/
|
|
33
|
+
this.tooltip = input.required({
|
|
34
|
+
alias: 'ngpTooltipTrigger',
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* The open state of the tooltip.
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
40
|
+
this.open = model(false, {
|
|
41
|
+
alias: 'ngpTooltipTriggerOpen',
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* Define if the trigger should be disabled.
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
this.disabled = input(false, {
|
|
48
|
+
alias: 'ngpTooltipTriggerDisabled',
|
|
49
|
+
transform: booleanAttribute,
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Define the placement of the tooltip relative to the trigger.
|
|
53
|
+
* @default 'top'
|
|
54
|
+
*/
|
|
55
|
+
this.placement = input(this.config.placement, {
|
|
56
|
+
alias: 'ngpTooltipTriggerPlacement',
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Define the offset of the tooltip relative to the trigger.
|
|
60
|
+
* @default 0
|
|
61
|
+
*/
|
|
62
|
+
this.offset = input(this.config.offset, {
|
|
63
|
+
alias: 'ngpTooltipTriggerOffset',
|
|
64
|
+
transform: numberAttribute,
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* Define the delay before the tooltip is displayed.
|
|
68
|
+
* @default 0
|
|
69
|
+
*/
|
|
70
|
+
this.showDelay = input(this.config.showDelay, {
|
|
71
|
+
alias: 'ngpTooltipTriggerShowDelay',
|
|
72
|
+
transform: numberAttribute,
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* Define the delay before the tooltip is hidden.
|
|
76
|
+
* @default 0
|
|
77
|
+
*/
|
|
78
|
+
this.hideDelay = input(this.config.hideDelay, {
|
|
79
|
+
alias: 'ngpTooltipTriggerHideDelay',
|
|
80
|
+
transform: numberAttribute,
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* Define whether the tooltip should flip when there is not enough space for the tooltip.
|
|
84
|
+
* @default true
|
|
85
|
+
*/
|
|
86
|
+
this.flip = input(this.config.flip, {
|
|
87
|
+
alias: 'ngpTooltipTriggerFlip',
|
|
88
|
+
transform: booleanAttribute,
|
|
89
|
+
});
|
|
90
|
+
/**
|
|
91
|
+
* Define the container in which the tooltip should be attached.
|
|
92
|
+
* @default document.body
|
|
93
|
+
*/
|
|
94
|
+
this.container = input(this.config.container, {
|
|
95
|
+
alias: 'ngpTooltipTriggerContainer',
|
|
96
|
+
});
|
|
97
|
+
/**
|
|
98
|
+
* Store the tooltip view ref.
|
|
99
|
+
*/
|
|
100
|
+
this.viewRef = null;
|
|
101
|
+
/**
|
|
102
|
+
* Derive the tooltip middleware from the provided configuration.
|
|
103
|
+
*/
|
|
104
|
+
this.middleware = computed(() => {
|
|
105
|
+
const middleware = [offset(this.offset()), shift()];
|
|
106
|
+
if (this.flip()) {
|
|
107
|
+
middleware.push(flip());
|
|
108
|
+
}
|
|
109
|
+
return middleware;
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* Store the computed position of the tooltip.
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
this.position = signal({
|
|
116
|
+
x: 0,
|
|
117
|
+
y: 0,
|
|
118
|
+
});
|
|
119
|
+
/**
|
|
120
|
+
* Store the state of the tooltip.
|
|
121
|
+
* @internal
|
|
122
|
+
*/
|
|
123
|
+
this.state = signal('closed');
|
|
124
|
+
// any time the open state changes then show or hide the tooltip
|
|
125
|
+
effect(() => (this.open() ? this.show() : this.hide()), { allowSignalWrites: true });
|
|
126
|
+
}
|
|
127
|
+
ngOnDestroy() {
|
|
128
|
+
this.destroyTooltip();
|
|
129
|
+
}
|
|
130
|
+
show() {
|
|
131
|
+
// if the trigger is disabled or the tooltip is already open then do not show the tooltip
|
|
132
|
+
if (this.disabled() || this.state() === 'open' || this.state() === 'opening') {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
this.state.set('opening');
|
|
136
|
+
this.disposables.setTimeout(() => this.createTooltip(), this.showDelay());
|
|
137
|
+
}
|
|
138
|
+
hide() {
|
|
139
|
+
// if the trigger is disabled or the tooltip is already closed then do not hide the tooltip
|
|
140
|
+
if (this.disabled() || this.state() === 'closed' || this.state() === 'closing') {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
this.state.set('closing');
|
|
144
|
+
this.disposables.setTimeout(() => this.destroyTooltip(), this.hideDelay());
|
|
145
|
+
}
|
|
146
|
+
createTooltip() {
|
|
147
|
+
const portal = new TemplatePortal(this.tooltip(), this.viewContainerRef, undefined, this.injector);
|
|
148
|
+
const domOutlet = new DomPortalOutlet(this.container(), undefined, undefined, Injector.create({
|
|
149
|
+
parent: this.injector,
|
|
150
|
+
providers: [provideTooltipTrigger(this)],
|
|
151
|
+
}));
|
|
152
|
+
this.viewRef = domOutlet.attach(portal);
|
|
153
|
+
this.viewRef.detectChanges();
|
|
154
|
+
const outletElement = this.viewRef.rootNodes[0];
|
|
155
|
+
this.dispose = autoUpdate(this.trigger.nativeElement, outletElement, async () => {
|
|
156
|
+
const position = await computePosition(this.trigger.nativeElement, outletElement, {
|
|
157
|
+
placement: this.placement(),
|
|
158
|
+
middleware: this.middleware(),
|
|
159
|
+
});
|
|
160
|
+
this.position.set({ x: position.x, y: position.y });
|
|
161
|
+
});
|
|
162
|
+
this.state.set('open');
|
|
163
|
+
}
|
|
164
|
+
destroyTooltip() {
|
|
165
|
+
this.viewRef?.destroy();
|
|
166
|
+
this.viewRef = null;
|
|
167
|
+
this.dispose?.();
|
|
168
|
+
this.state.set('closed');
|
|
169
|
+
}
|
|
170
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpTooltipTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
171
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpTooltipTrigger, isStandalone: true, selector: "[ngpTooltipTrigger]", inputs: { tooltip: { classPropertyName: "tooltip", publicName: "ngpTooltipTrigger", isSignal: true, isRequired: true, transformFunction: null }, open: { classPropertyName: "open", publicName: "ngpTooltipTriggerOpen", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpTooltipTriggerDisabled", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "ngpTooltipTriggerPlacement", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "ngpTooltipTriggerOffset", isSignal: true, isRequired: false, transformFunction: null }, showDelay: { classPropertyName: "showDelay", publicName: "ngpTooltipTriggerShowDelay", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "ngpTooltipTriggerHideDelay", isSignal: true, isRequired: false, transformFunction: null }, flip: { classPropertyName: "flip", publicName: "ngpTooltipTriggerFlip", isSignal: true, isRequired: false, transformFunction: null }, container: { classPropertyName: "container", publicName: "ngpTooltipTriggerContainer", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "ngpTooltipTriggerOpenChange" }, host: { listeners: { "mouseenter": "open.set(true)", "mouseleave": "open.set(false)", "focus": "open.set(true)", "blur": "open.set(false)" }, properties: { "attr.data-state": "state()", "attr.data-disabled": "disabled()" } }, providers: [{ provide: NgpTooltipTriggerToken, useExisting: NgpTooltipTrigger }], exportAs: ["ngpTooltipTrigger"], ngImport: i0 }); }
|
|
172
|
+
}
|
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpTooltipTrigger, decorators: [{
|
|
174
|
+
type: Directive,
|
|
175
|
+
args: [{
|
|
176
|
+
standalone: true,
|
|
177
|
+
selector: '[ngpTooltipTrigger]',
|
|
178
|
+
exportAs: 'ngpTooltipTrigger',
|
|
179
|
+
providers: [{ provide: NgpTooltipTriggerToken, useExisting: NgpTooltipTrigger }],
|
|
180
|
+
host: {
|
|
181
|
+
'[attr.data-state]': 'state()',
|
|
182
|
+
'[attr.data-disabled]': 'disabled()',
|
|
183
|
+
'(mouseenter)': 'open.set(true)',
|
|
184
|
+
'(mouseleave)': 'open.set(false)',
|
|
185
|
+
'(focus)': 'open.set(true)',
|
|
186
|
+
'(blur)': 'open.set(false)',
|
|
187
|
+
},
|
|
188
|
+
}]
|
|
189
|
+
}], ctorParameters: () => [] });
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvdG9vbHRpcC9zcmMvdG9vbHRpcC10cmlnZ2VyL3Rvb2x0aXAtdHJpZ2dlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFFVixRQUFRLEVBR1IsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLGVBQWUsRUFDZixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFVBQVUsRUFDVixlQUFlLEVBQ2YsSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFnQnhGLE1BQU0sT0FBTyxpQkFBaUI7SUE0STVCO1FBM0lBOztXQUVHO1FBQ2MsWUFBTyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBRTNEOztXQUVHO1FBQ2MscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0Q7O1dBRUc7UUFDYyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdDOztXQUVHO1FBQ2MsV0FBTSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFFaEQ7O1dBRUc7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QkFBaUIsRUFBRSxDQUFDOzsyRkFVckUsaUJBQWlCO2tCQWQ3QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLG1CQUFtQixFQUFFLENBQUM7b0JBQ2hGLElBQUksRUFBRTt3QkFDSixtQkFBbUIsRUFBRSxTQUFTO3dCQUM5QixzQkFBc0IsRUFBRSxZQUFZO3dCQUNwQyxjQUFjLEVBQUUsZ0JBQWdCO3dCQUNoQyxjQUFjLEVBQUUsaUJBQWlCO3dCQUNqQyxTQUFTLEVBQUUsZ0JBQWdCO3dCQUMzQixRQUFRLEVBQUUsaUJBQWlCO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERvbVBvcnRhbE91dGxldCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1pZGRsZXdhcmUsXG4gIFBsYWNlbWVudCxcbiAgYXV0b1VwZGF0ZSxcbiAgY29tcHV0ZVBvc2l0aW9uLFxuICBmbGlwLFxuICBvZmZzZXQsXG4gIHNoaWZ0LFxufSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IGluamVjdERpc3Bvc2FibGVzIH0gZnJvbSAnbmctcHJpbWl0aXZlcy91dGlscyc7XG5pbXBvcnQgeyBpbmplY3RUb29sdGlwQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL3Rvb2x0aXAuY29uZmlnJztcbmltcG9ydCB7IE5ncFRvb2x0aXBUcmlnZ2VyVG9rZW4sIHByb3ZpZGVUb29sdGlwVHJpZ2dlciB9IGZyb20gJy4vdG9vbHRpcC10cmlnZ2VyLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25ncFRvb2x0aXBUcmlnZ2VyXScsXG4gIGV4cG9ydEFzOiAnbmdwVG9vbHRpcFRyaWdnZXInLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncFRvb2x0aXBUcmlnZ2VyVG9rZW4sIHVzZUV4aXN0aW5nOiBOZ3BUb29sdGlwVHJpZ2dlciB9XSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdzdGF0ZSgpJyxcbiAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgJyhtb3VzZWVudGVyKSc6ICdvcGVuLnNldCh0cnVlKScsXG4gICAgJyhtb3VzZWxlYXZlKSc6ICdvcGVuLnNldChmYWxzZSknLFxuICAgICcoZm9jdXMpJzogJ29wZW4uc2V0KHRydWUpJyxcbiAgICAnKGJsdXIpJzogJ29wZW4uc2V0KGZhbHNlKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncFRvb2x0aXBUcmlnZ2VyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgdHJpZ2dlciBlbGVtZW50XG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRyaWdnZXIgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIHZpZXcgY29udGFpbmVyIHJlZi5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSBpbmplY3Rvci5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGdsb2JhbCB0b29sdGlwIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdFRvb2x0aXBDb25maWcoKTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSBkaXNwb3NhYmxlIHV0aWxpdGllc1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwb3NhYmxlcyA9IGluamVjdERpc3Bvc2FibGVzKCk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgdG9vbHRpcCB0ZW1wbGF0ZSByZWYuXG4gICAqL1xuICByZWFkb25seSB0b29sdGlwID0gaW5wdXQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8dm9pZD4+KHtcbiAgICBhbGlhczogJ25ncFRvb2x0aXBUcmlnZ2VyJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVuIHN0YXRlIG9mIHRoZSB0b29sdGlwLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgb3BlbiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlLCB7XG4gICAgYWxpYXM6ICduZ3BUb29sdGlwVHJpZ2dlck9wZW4nLFxuICB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIGlmIHRoZSB0cmlnZ2VyIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuICAgIGFsaWFzOiAnbmdwVG9vbHRpcFRyaWdnZXJEaXNhYmxlZCcsXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHRvb2x0aXAgcmVsYXRpdmUgdG8gdGhlIHRyaWdnZXIuXG4gICAqIEBkZWZhdWx0ICd0b3AnXG4gICAqL1xuICByZWFkb25seSBwbGFjZW1lbnQgPSBpbnB1dDxQbGFjZW1lbnQ+KHRoaXMuY29uZmlnLnBsYWNlbWVudCwge1xuICAgIGFsaWFzOiAnbmdwVG9vbHRpcFRyaWdnZXJQbGFjZW1lbnQnLFxuICB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBvZmZzZXQgb2YgdGhlIHRvb2x0aXAgcmVsYXRpdmUgdG8gdGhlIHRyaWdnZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG9mZnNldCA9IGlucHV0PG51bWJlciwgTnVtYmVySW5wdXQ+KHRoaXMuY29uZmlnLm9mZnNldCwge1xuICAgIGFsaWFzOiAnbmdwVG9vbHRpcFRyaWdnZXJPZmZzZXQnLFxuICAgIHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlLFxuICB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBkZWxheSBiZWZvcmUgdGhlIHRvb2x0aXAgaXMgZGlzcGxheWVkLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBzaG93RGVsYXkgPSBpbnB1dDxudW1iZXIsIE51bWJlcklucHV0Pih0aGlzLmNvbmZpZy5zaG93RGVsYXksIHtcbiAgICBhbGlhczogJ25ncFRvb2x0aXBUcmlnZ2VyU2hvd0RlbGF5JyxcbiAgICB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgZGVsYXkgYmVmb3JlIHRoZSB0b29sdGlwIGlzIGhpZGRlbi5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgaGlkZURlbGF5ID0gaW5wdXQ8bnVtYmVyLCBOdW1iZXJJbnB1dD4odGhpcy5jb25maWcuaGlkZURlbGF5LCB7XG4gICAgYWxpYXM6ICduZ3BUb29sdGlwVHJpZ2dlckhpZGVEZWxheScsXG4gICAgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgd2hldGhlciB0aGUgdG9vbHRpcCBzaG91bGQgZmxpcCB3aGVuIHRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgZm9yIHRoZSB0b29sdGlwLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmbGlwID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0Pih0aGlzLmNvbmZpZy5mbGlwLCB7XG4gICAgYWxpYXM6ICduZ3BUb29sdGlwVHJpZ2dlckZsaXAnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgY29udGFpbmVyIGluIHdoaWNoIHRoZSB0b29sdGlwIHNob3VsZCBiZSBhdHRhY2hlZC5cbiAgICogQGRlZmF1bHQgZG9jdW1lbnQuYm9keVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyID0gaW5wdXQ8SFRNTEVsZW1lbnQ+KHRoaXMuY29uZmlnLmNvbnRhaW5lciwge1xuICAgIGFsaWFzOiAnbmdwVG9vbHRpcFRyaWdnZXJDb250YWluZXInLFxuICB9KTtcblxuICAvKipcbiAgICogU3RvcmUgdGhlIHRvb2x0aXAgdmlldyByZWYuXG4gICAqL1xuICBwcml2YXRlIHZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjx2b2lkPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBEZXJpdmUgdGhlIHRvb2x0aXAgbWlkZGxld2FyZSBmcm9tIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBtaWRkbGV3YXJlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1pZGRsZXdhcmU6IE1pZGRsZXdhcmVbXSA9IFtvZmZzZXQodGhpcy5vZmZzZXQoKSksIHNoaWZ0KCldO1xuXG4gICAgaWYgKHRoaXMuZmxpcCgpKSB7XG4gICAgICBtaWRkbGV3YXJlLnB1c2goZmxpcCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWlkZGxld2FyZTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFN0b3JlIHRoZSBjb21wdXRlZCBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWFkb25seSBwb3NpdGlvbiA9IHNpZ25hbDx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0+KHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBTdG9yZSB0aGUgc3RhdGUgb2YgdGhlIHRvb2x0aXAuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGUgPSBzaWduYWw8VG9vbHRpcFN0YXRlPignY2xvc2VkJyk7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwb3NlIGZ1bmN0aW9uIHRvIHN0b3AgY29tcHV0aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC5cbiAgICovXG4gIHByaXZhdGUgZGlzcG9zZT86ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gYW55IHRpbWUgdGhlIG9wZW4gc3RhdGUgY2hhbmdlcyB0aGVuIHNob3cgb3IgaGlkZSB0aGUgdG9vbHRpcFxuICAgIGVmZmVjdCgoKSA9PiAodGhpcy5vcGVuKCkgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpKSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVRvb2x0aXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdygpOiB2b2lkIHtcbiAgICAvLyBpZiB0aGUgdHJpZ2dlciBpcyBkaXNhYmxlZCBvciB0aGUgdG9vbHRpcCBpcyBhbHJlYWR5IG9wZW4gdGhlbiBkbyBub3Qgc2hvdyB0aGUgdG9vbHRpcFxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5zdGF0ZSgpID09PSAnb3BlbicgfHwgdGhpcy5zdGF0ZSgpID09PSAnb3BlbmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlLnNldCgnb3BlbmluZycpO1xuICAgIHRoaXMuZGlzcG9zYWJsZXMuc2V0VGltZW91dCgoKSA9PiB0aGlzLmNyZWF0ZVRvb2x0aXAoKSwgdGhpcy5zaG93RGVsYXkoKSk7XG4gIH1cblxuICBwcml2YXRlIGhpZGUoKTogdm9pZCB7XG4gICAgLy8gaWYgdGhlIHRyaWdnZXIgaXMgZGlzYWJsZWQgb3IgdGhlIHRvb2x0aXAgaXMgYWxyZWFkeSBjbG9zZWQgdGhlbiBkbyBub3QgaGlkZSB0aGUgdG9vbHRpcFxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5zdGF0ZSgpID09PSAnY2xvc2VkJyB8fCB0aGlzLnN0YXRlKCkgPT09ICdjbG9zaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUuc2V0KCdjbG9zaW5nJyk7XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5zZXRUaW1lb3V0KCgpID0+IHRoaXMuZGVzdHJveVRvb2x0aXAoKSwgdGhpcy5oaWRlRGVsYXkoKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRvb2x0aXAoKTogdm9pZCB7XG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKFxuICAgICAgdGhpcy50b29sdGlwKCksXG4gICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLmluamVjdG9yLFxuICAgICk7XG5cbiAgICBjb25zdCBkb21PdXRsZXQgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxuICAgICAgdGhpcy5jb250YWluZXIoKSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgICAgcHJvdmlkZXJzOiBbcHJvdmlkZVRvb2x0aXBUcmlnZ2VyKHRoaXMpXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLnZpZXdSZWYgPSBkb21PdXRsZXQuYXR0YWNoKHBvcnRhbCk7XG4gICAgdGhpcy52aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGNvbnN0IG91dGxldEVsZW1lbnQgPSB0aGlzLnZpZXdSZWYucm9vdE5vZGVzWzBdO1xuXG4gICAgdGhpcy5kaXNwb3NlID0gYXV0b1VwZGF0ZSh0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudCwgb3V0bGV0RWxlbWVudCwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSBhd2FpdCBjb21wdXRlUG9zaXRpb24odGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQsIG91dGxldEVsZW1lbnQsIHtcbiAgICAgICAgcGxhY2VtZW50OiB0aGlzLnBsYWNlbWVudCgpLFxuICAgICAgICBtaWRkbGV3YXJlOiB0aGlzLm1pZGRsZXdhcmUoKSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnBvc2l0aW9uLnNldCh7IHg6IHBvc2l0aW9uLngsIHk6IHBvc2l0aW9uLnkgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXRlLnNldCgnb3BlbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95VG9vbHRpcCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdSZWY/LmRlc3Ryb3koKTtcbiAgICB0aGlzLnZpZXdSZWYgPSBudWxsO1xuICAgIHRoaXMuZGlzcG9zZT8uKCk7XG4gICAgdGhpcy5zdGF0ZS5zZXQoJ2Nsb3NlZCcpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFRvb2x0aXBTdGF0ZSA9ICdjbG9zZWQnIHwgJ29wZW5pbmcnIHwgJ29wZW4nIHwgJ2Nsb3NpbmcnO1xuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2024 Angular Primitives.
|
|
3
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import { InjectionToken, inject } from '@angular/core';
|
|
9
|
+
export const NgpTooltipTriggerToken = new InjectionToken('NgpTooltipTriggerToken');
|
|
10
|
+
/**
|
|
11
|
+
* Inject the TooltipTrigger directive instance
|
|
12
|
+
*/
|
|
13
|
+
export function injectTooltipTrigger() {
|
|
14
|
+
return inject(NgpTooltipTriggerToken);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Provides the TooltipTrigger directive instance
|
|
18
|
+
* @param trigger
|
|
19
|
+
*/
|
|
20
|
+
export function provideTooltipTrigger(trigger) {
|
|
21
|
+
return { provide: NgpTooltipTriggerToken, useValue: trigger };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10cmlnZ2VyLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy90b29sdGlwL3NyYy90b29sdGlwLXRyaWdnZXIvdG9vbHRpcC10cmlnZ2VyLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsQ0FDekIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsT0FBMEI7SUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDaEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE5ncFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnLi90b29sdGlwLXRyaWdnZXIuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IE5ncFRvb2x0aXBUcmlnZ2VyVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdwVG9vbHRpcFRyaWdnZXI+KFxuICAnTmdwVG9vbHRpcFRyaWdnZXJUb2tlbicsXG4pO1xuXG4vKipcbiAqIEluamVjdCB0aGUgVG9vbHRpcFRyaWdnZXIgZGlyZWN0aXZlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RUb29sdGlwVHJpZ2dlcigpOiBOZ3BUb29sdGlwVHJpZ2dlciB7XG4gIHJldHVybiBpbmplY3QoTmdwVG9vbHRpcFRyaWdnZXJUb2tlbik7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIFRvb2x0aXBUcmlnZ2VyIGRpcmVjdGl2ZSBpbnN0YW5jZVxuICogQHBhcmFtIHRyaWdnZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUb29sdGlwVHJpZ2dlcih0cmlnZ2VyOiBOZ3BUb29sdGlwVHJpZ2dlcikge1xuICByZXR1cm4geyBwcm92aWRlOiBOZ3BUb29sdGlwVHJpZ2dlclRva2VuLCB1c2VWYWx1ZTogdHJpZ2dlciB9O1xufVxuIl19
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2024 Angular Primitives.
|
|
3
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import { DestroyRef, inject } from '@angular/core';
|
|
9
|
+
/**
|
|
10
|
+
* Disposable functions are a way to manage timers, intervals, and event listeners
|
|
11
|
+
* that should be cleared when a component is destroyed.
|
|
12
|
+
*
|
|
13
|
+
* This is heavily inspired by Headless UI disposables:
|
|
14
|
+
* https://github.com/tailwindlabs/headlessui/blob/main/packages/%40headlessui-react/src/utils/disposables.ts
|
|
15
|
+
*/
|
|
16
|
+
export function injectDisposables() {
|
|
17
|
+
const destroyRef = inject(DestroyRef);
|
|
18
|
+
return {
|
|
19
|
+
/**
|
|
20
|
+
* Set a timeout that will be cleared when the component is destroyed.
|
|
21
|
+
* @param callback The callback to execute
|
|
22
|
+
* @param delay The delay before the callback is executed
|
|
23
|
+
* @returns A function to clear the timeout
|
|
24
|
+
*/
|
|
25
|
+
setTimeout: (callback, delay) => {
|
|
26
|
+
const id = setTimeout(callback, delay);
|
|
27
|
+
const cleanup = () => clearTimeout(id);
|
|
28
|
+
destroyRef.onDestroy(cleanup);
|
|
29
|
+
return cleanup;
|
|
30
|
+
},
|
|
31
|
+
/**
|
|
32
|
+
* Set an interval that will be cleared when the component is destroyed.
|
|
33
|
+
* @param callback The callback to execute
|
|
34
|
+
* @param delay The delay before the callback is executed
|
|
35
|
+
* @param target
|
|
36
|
+
* @param type
|
|
37
|
+
* @param listener
|
|
38
|
+
* @param options
|
|
39
|
+
* @returns A function to clear the interval
|
|
40
|
+
*/
|
|
41
|
+
addEventListener: (target, type, listener, options) => {
|
|
42
|
+
target.addEventListener(type, listener, options);
|
|
43
|
+
const cleanup = () => target.removeEventListener(type, listener, options);
|
|
44
|
+
destroyRef.onDestroy(cleanup);
|
|
45
|
+
return cleanup;
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* Set an interval that will be cleared when the component is destroyed.
|
|
49
|
+
* @param callback The callback to execute
|
|
50
|
+
* @param delay The delay before the callback is executed
|
|
51
|
+
* @returns A function to clear the interval
|
|
52
|
+
*/
|
|
53
|
+
setInterval: (callback, delay) => {
|
|
54
|
+
const id = setInterval(callback, delay);
|
|
55
|
+
const cleanup = () => clearInterval(id);
|
|
56
|
+
destroyRef.onDestroy(cleanup);
|
|
57
|
+
return cleanup;
|
|
58
|
+
},
|
|
59
|
+
/**
|
|
60
|
+
* Set a requestAnimationFrame that will be cleared when the component is destroyed.
|
|
61
|
+
* @param callback The callback to execute
|
|
62
|
+
* @returns A function to clear the requestAnimationFrame
|
|
63
|
+
*/
|
|
64
|
+
requestAnimationFrame: (callback) => {
|
|
65
|
+
const id = requestAnimationFrame(callback);
|
|
66
|
+
const cleanup = () => cancelAnimationFrame(id);
|
|
67
|
+
destroyRef.onDestroy(cleanup);
|
|
68
|
+
return cleanup;
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcG9zYWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3V0aWxzL3NyYy9oZWxwZXJzL2Rpc3Bvc2FibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5EOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLE9BQU87UUFDTDs7Ozs7V0FLRztRQUNILFVBQVUsRUFBRSxDQUFDLFFBQW9CLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDbEQsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2QyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQ0Q7Ozs7Ozs7OztXQVNHO1FBQ0gsZ0JBQWdCLEVBQUUsQ0FDaEIsTUFBbUIsRUFDbkIsSUFBWSxFQUNaLFFBQTRDLEVBQzVDLE9BQTJDLEVBQzNDLEVBQUU7WUFDRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqRCxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMxRSxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFDRDs7Ozs7V0FLRztRQUNILFdBQVcsRUFBRSxDQUFDLFFBQW9CLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQ0Q7Ozs7V0FJRztRQUNILHFCQUFxQixFQUFFLENBQUMsUUFBOEIsRUFBRSxFQUFFO1lBQ3hELE1BQU0sRUFBRSxHQUFHLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IERlc3Ryb3lSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERpc3Bvc2FibGUgZnVuY3Rpb25zIGFyZSBhIHdheSB0byBtYW5hZ2UgdGltZXJzLCBpbnRlcnZhbHMsIGFuZCBldmVudCBsaXN0ZW5lcnNcbiAqIHRoYXQgc2hvdWxkIGJlIGNsZWFyZWQgd2hlbiBhIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gKlxuICogVGhpcyBpcyBoZWF2aWx5IGluc3BpcmVkIGJ5IEhlYWRsZXNzIFVJIGRpc3Bvc2FibGVzOlxuICogaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy9oZWFkbGVzc3VpL2Jsb2IvbWFpbi9wYWNrYWdlcy8lNDBoZWFkbGVzc3VpLXJlYWN0L3NyYy91dGlscy9kaXNwb3NhYmxlcy50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RGlzcG9zYWJsZXMoKSB7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcmV0dXJuIHtcbiAgICAvKipcbiAgICAgKiBTZXQgYSB0aW1lb3V0IHRoYXQgd2lsbCBiZSBjbGVhcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBleGVjdXRlXG4gICAgICogQHBhcmFtIGRlbGF5IFRoZSBkZWxheSBiZWZvcmUgdGhlIGNhbGxiYWNrIGlzIGV4ZWN1dGVkXG4gICAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0byBjbGVhciB0aGUgdGltZW91dFxuICAgICAqL1xuICAgIHNldFRpbWVvdXQ6IChjYWxsYmFjazogKCkgPT4gdm9pZCwgZGVsYXk6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgaWQgPSBzZXRUaW1lb3V0KGNhbGxiYWNrLCBkZWxheSk7XG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4gY2xlYXJUaW1lb3V0KGlkKTtcbiAgICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KGNsZWFudXApO1xuICAgICAgcmV0dXJuIGNsZWFudXA7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBTZXQgYW4gaW50ZXJ2YWwgdGhhdCB3aWxsIGJlIGNsZWFyZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGVcbiAgICAgKiBAcGFyYW0gZGVsYXkgVGhlIGRlbGF5IGJlZm9yZSB0aGUgY2FsbGJhY2sgaXMgZXhlY3V0ZWRcbiAgICAgKiBAcGFyYW0gdGFyZ2V0XG4gICAgICogQHBhcmFtIHR5cGVcbiAgICAgKiBAcGFyYW0gbGlzdGVuZXJcbiAgICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdG8gY2xlYXIgdGhlIGludGVydmFsXG4gICAgICovXG4gICAgYWRkRXZlbnRMaXN0ZW5lcjogKFxuICAgICAgdGFyZ2V0OiBFdmVudFRhcmdldCxcbiAgICAgIHR5cGU6IHN0cmluZyxcbiAgICAgIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LFxuICAgICAgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyxcbiAgICApID0+IHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gICAgICBkZXN0cm95UmVmLm9uRGVzdHJveShjbGVhbnVwKTtcbiAgICAgIHJldHVybiBjbGVhbnVwO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogU2V0IGFuIGludGVydmFsIHRoYXQgd2lsbCBiZSBjbGVhcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBleGVjdXRlXG4gICAgICogQHBhcmFtIGRlbGF5IFRoZSBkZWxheSBiZWZvcmUgdGhlIGNhbGxiYWNrIGlzIGV4ZWN1dGVkXG4gICAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0byBjbGVhciB0aGUgaW50ZXJ2YWxcbiAgICAgKi9cbiAgICBzZXRJbnRlcnZhbDogKGNhbGxiYWNrOiAoKSA9PiB2b2lkLCBkZWxheTogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHNldEludGVydmFsKGNhbGxiYWNrLCBkZWxheSk7XG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4gY2xlYXJJbnRlcnZhbChpZCk7XG4gICAgICBkZXN0cm95UmVmLm9uRGVzdHJveShjbGVhbnVwKTtcbiAgICAgIHJldHVybiBjbGVhbnVwO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogU2V0IGEgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHRoYXQgd2lsbCBiZSBjbGVhcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBleGVjdXRlXG4gICAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0byBjbGVhciB0aGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICovXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lOiAoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpO1xuICAgICAgZGVzdHJveVJlZi5vbkRlc3Ryb3koY2xlYW51cCk7XG4gICAgICByZXR1cm4gY2xlYW51cDtcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { coerceElement } from '@angular/cdk/coercion';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class FocusManager {
|
|
5
|
+
focus(element, origin = 'program') {
|
|
6
|
+
element = coerceElement(element);
|
|
7
|
+
switch (origin) {
|
|
8
|
+
case 'keyboard':
|
|
9
|
+
// trigger the focus-visible state for keyboard users
|
|
10
|
+
element.contentEditable = 'true';
|
|
11
|
+
element.focus({ preventScroll: true });
|
|
12
|
+
element.contentEditable = 'false';
|
|
13
|
+
break;
|
|
14
|
+
default:
|
|
15
|
+
element.focus();
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FocusManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FocusManager, providedIn: 'root' }); }
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FocusManager, decorators: [{
|
|
23
|
+
type: Injectable,
|
|
24
|
+
args: [{
|
|
25
|
+
providedIn: 'root',
|
|
26
|
+
}]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvdXRpbHMvc3JjL2hlbHBlcnMvZm9jdXMtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLFlBQVk7SUFNdkIsS0FBSyxDQUFDLE9BQThDLEVBQUUsU0FBc0IsU0FBUztRQUNuRixPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpDLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLFVBQVU7Z0JBQ2IscURBQXFEO2dCQUNyRCxPQUFPLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztnQkFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxPQUFPLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztnQkFDbEMsTUFBTTtZQUNSO2dCQUNFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDaEIsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDOzhHQXBCVSxZQUFZO2tIQUFaLFlBQVksY0FGWCxNQUFNOzsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNNYW5hZ2VyIHtcbiAgLyoqXG4gICAqIEZvY3VzIGFuIGVsZW1lbnQgd2l0aCBhbiBvcHRpb25hbCBvcmlnaW4uXG4gICAqL1xuICBmb2N1cyhlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Piwgb3JpZ2luPzogRm9jdXNPcmlnaW4pOiB2b2lkO1xuICBmb2N1cyhlbGVtZW50OiBIVE1MRWxlbWVudCwgb3JpZ2luPzogRm9jdXNPcmlnaW4pOiB2b2lkO1xuICBmb2N1cyhlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50LCBvcmlnaW46IEZvY3VzT3JpZ2luID0gJ3Byb2dyYW0nKTogdm9pZCB7XG4gICAgZWxlbWVudCA9IGNvZXJjZUVsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBzd2l0Y2ggKG9yaWdpbikge1xuICAgICAgY2FzZSAna2V5Ym9hcmQnOlxuICAgICAgICAvLyB0cmlnZ2VyIHRoZSBmb2N1cy12aXNpYmxlIHN0YXRlIGZvciBrZXlib2FyZCB1c2Vyc1xuICAgICAgICBlbGVtZW50LmNvbnRlbnRFZGl0YWJsZSA9ICd0cnVlJztcbiAgICAgICAgZWxlbWVudC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIGVsZW1lbnQuY29udGVudEVkaXRhYmxlID0gJ2ZhbHNlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2024 Angular Primitives.
|
|
3
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Store a map of unique ids for elements so that there are no collisions.
|
|
10
|
+
*/
|
|
11
|
+
const uniqueIdMap = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* Generate a unique id for an element
|
|
14
|
+
* @param prefix - The prefix to use for the id
|
|
15
|
+
* @returns The generated id
|
|
16
|
+
*/
|
|
17
|
+
export function uniqueId(prefix) {
|
|
18
|
+
const id = uniqueIdMap.get(prefix) ?? 0;
|
|
19
|
+
uniqueIdMap.set(prefix, id + 1);
|
|
20
|
+
return `${prefix}-${id}`;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy91dGlscy9zcmMvaGVscGVycy91bmlxdWUtaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUg7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztBQUU5Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxNQUFjO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoQyxPQUFPLEdBQUcsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4vKipcbiAqIFN0b3JlIGEgbWFwIG9mIHVuaXF1ZSBpZHMgZm9yIGVsZW1lbnRzIHNvIHRoYXQgdGhlcmUgYXJlIG5vIGNvbGxpc2lvbnMuXG4gKi9cbmNvbnN0IHVuaXF1ZUlkTWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHVuaXF1ZSBpZCBmb3IgYW4gZWxlbWVudFxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gdXNlIGZvciB0aGUgaWRcbiAqIEByZXR1cm5zIFRoZSBnZW5lcmF0ZWQgaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaWQgPSB1bmlxdWVJZE1hcC5nZXQocHJlZml4KSA/PyAwO1xuICB1bmlxdWVJZE1hcC5zZXQocHJlZml4LCBpZCArIDEpO1xuICByZXR1cm4gYCR7cHJlZml4fS0ke2lkfWA7XG59XG4iXX0=
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
|
|
2
|
+
import { Directive, HostListener, Injectable, PLATFORM_ID, booleanAttribute, inject, input, output, signal, } from '@angular/core';
|
|
3
|
+
import { NgpHoverToken } from './hover.token';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* We use a service here as this value is a singleton
|
|
7
|
+
* and allows us to register the dom events once.
|
|
8
|
+
*/
|
|
9
|
+
class GlobalPointerEvents {
|
|
10
|
+
constructor() {
|
|
11
|
+
/**
|
|
12
|
+
* Whether global mouse events should be ignored.
|
|
13
|
+
*/
|
|
14
|
+
this.ignoreEmulatedMouseEvents = false;
|
|
15
|
+
/**
|
|
16
|
+
* Access the document.
|
|
17
|
+
*/
|
|
18
|
+
this.document = inject(DOCUMENT);
|
|
19
|
+
/**
|
|
20
|
+
* Determine the platform id.
|
|
21
|
+
*/
|
|
22
|
+
this.platformId = inject(PLATFORM_ID);
|
|
23
|
+
// we only want to setup events on the client
|
|
24
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
25
|
+
this.setupGlobalTouchEvents();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
setupGlobalTouchEvents() {
|
|
29
|
+
this.document.addEventListener('pointerup', this.handleGlobalPointerEvent.bind(this));
|
|
30
|
+
this.document.addEventListener('touchend', this.setGlobalIgnoreEmulatedMouseEvents.bind(this));
|
|
31
|
+
}
|
|
32
|
+
setGlobalIgnoreEmulatedMouseEvents() {
|
|
33
|
+
this.ignoreEmulatedMouseEvents = true;
|
|
34
|
+
// Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter
|
|
35
|
+
// with pointerType="mouse" immediately after onPointerUp and before onFocus. On other
|
|
36
|
+
// devices that don't have this quirk, we don't want to ignore a mouse hover sometime in
|
|
37
|
+
// the distant future because a user previously touched the element.
|
|
38
|
+
setTimeout(() => (this.ignoreEmulatedMouseEvents = false), 50);
|
|
39
|
+
}
|
|
40
|
+
handleGlobalPointerEvent(event) {
|
|
41
|
+
if (event.pointerType === 'touch') {
|
|
42
|
+
this.setGlobalIgnoreEmulatedMouseEvents();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GlobalPointerEvents, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
46
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GlobalPointerEvents, providedIn: 'root' }); }
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GlobalPointerEvents, decorators: [{
|
|
49
|
+
type: Injectable,
|
|
50
|
+
args: [{
|
|
51
|
+
providedIn: 'root',
|
|
52
|
+
}]
|
|
53
|
+
}], ctorParameters: () => [] });
|
|
54
|
+
/**
|
|
55
|
+
* A directive for normalizing hover events across the different browsers and devices.
|
|
56
|
+
*
|
|
57
|
+
* This is an Angular port of the useHover hook from
|
|
58
|
+
* react-aria: https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/interactions/src/useHover.ts
|
|
59
|
+
*/
|
|
60
|
+
export class NgpHover {
|
|
61
|
+
constructor() {
|
|
62
|
+
/**
|
|
63
|
+
* Access the global pointer events handler.
|
|
64
|
+
*/
|
|
65
|
+
this.globalPointerEvents = inject(GlobalPointerEvents);
|
|
66
|
+
/**
|
|
67
|
+
* Whether hoving should be disabled.
|
|
68
|
+
*/
|
|
69
|
+
this.disabled = input(false, {
|
|
70
|
+
alias: 'ngpHoverDisabled',
|
|
71
|
+
transform: booleanAttribute,
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* Store the current hover state.
|
|
75
|
+
*/
|
|
76
|
+
this.hovered = signal(false);
|
|
77
|
+
/**
|
|
78
|
+
* Whether this element should ignore emulated mouse events.
|
|
79
|
+
*/
|
|
80
|
+
this.ignoreEmulatedMouseEvents = false;
|
|
81
|
+
/**
|
|
82
|
+
* Emit an event when hovering starts.
|
|
83
|
+
*/
|
|
84
|
+
this.hoverStart = output({ alias: 'ngpHoverStart' });
|
|
85
|
+
/**
|
|
86
|
+
* Emit an event when hovering ends.
|
|
87
|
+
*/
|
|
88
|
+
this.hoverEnd = output({ alias: 'ngpHoverEnd' });
|
|
89
|
+
/**
|
|
90
|
+
* Emit an event when the hover state changes.
|
|
91
|
+
*/
|
|
92
|
+
this.hoverChange = output({ alias: 'ngpHoverChange' });
|
|
93
|
+
}
|
|
94
|
+
ngOnChanges(changes) {
|
|
95
|
+
if ('disabled' in changes) {
|
|
96
|
+
// if the component is suddenly disabled and is currently hovered
|
|
97
|
+
// switch to the unhovered state.
|
|
98
|
+
if (changes['disabled'].currentValue === true) {
|
|
99
|
+
this.onHoverEnd('mouse');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Trigger the hover start events.
|
|
105
|
+
*/
|
|
106
|
+
onHoverStart(event, pointerType) {
|
|
107
|
+
if (this.disabled() ||
|
|
108
|
+
pointerType === 'touch' ||
|
|
109
|
+
this.hovered() ||
|
|
110
|
+
!event.currentTarget?.contains(event.target)) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.hovered.set(true);
|
|
114
|
+
this.hoverStart.emit();
|
|
115
|
+
this.hoverChange.emit(true);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Trigger the hover end events.
|
|
119
|
+
*/
|
|
120
|
+
onHoverEnd(pointerType) {
|
|
121
|
+
if (pointerType === 'touch' || !this.hovered()) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
this.hovered.set(false);
|
|
125
|
+
this.hoverEnd.emit();
|
|
126
|
+
this.hoverChange.emit(false);
|
|
127
|
+
}
|
|
128
|
+
onPointerEnter(event) {
|
|
129
|
+
if (this.globalPointerEvents.ignoreEmulatedMouseEvents && event.pointerType === 'mouse') {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.onHoverStart(event, event.pointerType);
|
|
133
|
+
}
|
|
134
|
+
onPointerLeave(event) {
|
|
135
|
+
if (!this.disabled() && event.currentTarget?.contains(event.target)) {
|
|
136
|
+
this.onHoverEnd(event.pointerType);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
onTouchStart() {
|
|
140
|
+
this.ignoreEmulatedMouseEvents = true;
|
|
141
|
+
}
|
|
142
|
+
onMouseEnter(event) {
|
|
143
|
+
if (!this.ignoreEmulatedMouseEvents && !this.globalPointerEvents.ignoreEmulatedMouseEvents) {
|
|
144
|
+
this.onHoverStart(event, 'mouse');
|
|
145
|
+
}
|
|
146
|
+
this.ignoreEmulatedMouseEvents = false;
|
|
147
|
+
}
|
|
148
|
+
onMouseLeave(event) {
|
|
149
|
+
if (!this.disabled() && event.currentTarget?.contains(event.target)) {
|
|
150
|
+
this.onHoverEnd('mouse');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
154
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpHover, isStandalone: true, selector: "[ngpHover]", inputs: { disabled: { classPropertyName: "disabled", publicName: "ngpHoverDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { hoverStart: "ngpHoverStart", hoverEnd: "ngpHoverEnd", hoverChange: "ngpHoverChange" }, host: { listeners: { "pointerenter": "onPointerEnter($event)", "pointerleave": "onPointerLeave($event)", "touchstart": "onTouchStart()", "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)" }, properties: { "attr.data-hover": "hovered()" } }, providers: [{ provide: NgpHoverToken, useExisting: NgpHover }], exportAs: ["ngpHover"], usesOnChanges: true, ngImport: i0 }); }
|
|
155
|
+
}
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpHover, decorators: [{
|
|
157
|
+
type: Directive,
|
|
158
|
+
args: [{
|
|
159
|
+
standalone: true,
|
|
160
|
+
selector: '[ngpHover]',
|
|
161
|
+
exportAs: 'ngpHover',
|
|
162
|
+
providers: [{ provide: NgpHoverToken, useExisting: NgpHover }],
|
|
163
|
+
host: {
|
|
164
|
+
'[attr.data-hover]': 'hovered()',
|
|
165
|
+
},
|
|
166
|
+
}]
|
|
167
|
+
}], propDecorators: { onPointerEnter: [{
|
|
168
|
+
type: HostListener,
|
|
169
|
+
args: ['pointerenter', ['$event']]
|
|
170
|
+
}], onPointerLeave: [{
|
|
171
|
+
type: HostListener,
|
|
172
|
+
args: ['pointerleave', ['$event']]
|
|
173
|
+
}], onTouchStart: [{
|
|
174
|
+
type: HostListener,
|
|
175
|
+
args: ['touchstart']
|
|
176
|
+
}], onMouseEnter: [{
|
|
177
|
+
type: HostListener,
|
|
178
|
+
args: ['mouseenter', ['$event']]
|
|
179
|
+
}], onMouseLeave: [{
|
|
180
|
+
type: HostListener,
|
|
181
|
+
args: ['mouseleave', ['$event']]
|
|
182
|
+
}] } });
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy91dGlscy9zcmMvaG92ZXIvaG92ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBRVYsV0FBVyxFQUVYLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFOUM7OztHQUdHO0FBQ0gsTUFHTSxtQkFBbUI7SUFnQnZCO1FBZkE7O1dBRUc7UUFDSCw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFFM0M7O1dBRUc7UUFDYyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdDOztXQUVHO1FBQ2MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUdoRCw2Q0FBNkM7UUFDN0MsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTyxrQ0FBa0M7UUFDeEMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztRQUN0Qyx3RkFBd0Y7UUFDeEYsc0ZBQXNGO1FBQ3RGLHdGQUF3RjtRQUN4RixvRUFBb0U7UUFDcEUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxLQUFtQjtRQUNsRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7OEdBekNHLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRlgsTUFBTTs7MkZBRWQsbUJBQW1CO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUE2Q0Q7Ozs7O0dBS0c7QUFVSCxNQUFNLE9BQU8sUUFBUTtJQVRyQjtRQVVFOztXQUVHO1FBQ2Msd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFbkU7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUF3QixLQUFLLEVBQUU7WUFDdEQsS0FBSyxFQUFFLGtCQUFrQjtZQUN6QixTQUFTLEVBQUUsZ0JBQWdCO1NBQzVCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ08sWUFBTyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUUzQzs7V0FFRztRQUNLLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQUVuRDs7V0FFRztRQUNNLGVBQVUsR0FBRyxNQUFNLENBQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUUvRDs7V0FFRztRQUNNLGFBQVEsR0FBRyxNQUFNLENBQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUUzRDs7V0FFRztRQUNNLGdCQUFXLEdBQUcsTUFBTSxDQUFVLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztLQStFckU7SUE3RUMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzFCLGlFQUFpRTtZQUNqRSxpQ0FBaUM7WUFDakMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWSxDQUFDLEtBQVksRUFBRSxXQUFtQjtRQUNwRCxJQUNFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixXQUFXLEtBQUssT0FBTztZQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsQ0FBRSxLQUFLLENBQUMsYUFBeUIsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWlCLENBQUMsRUFDcEUsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxVQUFVLENBQUMsV0FBbUI7UUFDcEMsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDL0MsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFHUyxjQUFjLENBQUMsS0FBbUI7UUFDMUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMseUJBQXlCLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN4RixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBR1MsY0FBYyxDQUFDLEtBQW1CO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUssS0FBSyxDQUFDLGFBQXlCLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFpQixDQUFDLEVBQUUsQ0FBQztZQUM1RixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUdTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztJQUN4QyxDQUFDO0lBR1MsWUFBWSxDQUFDLEtBQWlCO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUMzRixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBR1MsWUFBWSxDQUFDLEtBQWlCO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUssS0FBSyxDQUFDLGFBQXlCLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFpQixDQUFDLEVBQUUsQ0FBQztZQUM1RixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDOzhHQW5IVSxRQUFRO2tHQUFSLFFBQVEseWpCQUxSLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQzs7MkZBS25ELFFBQVE7a0JBVHBCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsVUFBVTtvQkFDcEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsVUFBVSxFQUFFLENBQUM7b0JBQzlELElBQUksRUFBRTt3QkFDSixtQkFBbUIsRUFBRSxXQUFXO3FCQUNqQztpQkFDRjs4QkFrRlcsY0FBYztzQkFEdkIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVTlCLGNBQWM7c0JBRHZCLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVE5QixZQUFZO3NCQURyQixZQUFZO3VCQUFDLFlBQVk7Z0JBTWhCLFlBQVk7c0JBRHJCLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVU1QixZQUFZO3NCQURyQixZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgdHlwZSB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdGFibGUsXG4gIE9uQ2hhbmdlcyxcbiAgUExBVEZPUk1fSUQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ncEhvdmVyVG9rZW4gfSBmcm9tICcuL2hvdmVyLnRva2VuJztcblxuLyoqXG4gKiBXZSB1c2UgYSBzZXJ2aWNlIGhlcmUgYXMgdGhpcyB2YWx1ZSBpcyBhIHNpbmdsZXRvblxuICogYW5kIGFsbG93cyB1cyB0byByZWdpc3RlciB0aGUgZG9tIGV2ZW50cyBvbmNlLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5jbGFzcyBHbG9iYWxQb2ludGVyRXZlbnRzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgZ2xvYmFsIG1vdXNlIGV2ZW50cyBzaG91bGQgYmUgaWdub3JlZC5cbiAgICovXG4gIGlnbm9yZUVtdWxhdGVkTW91c2VFdmVudHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIHBsYXRmb3JtIGlkLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyB3ZSBvbmx5IHdhbnQgdG8gc2V0dXAgZXZlbnRzIG9uIHRoZSBjbGllbnRcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5zZXR1cEdsb2JhbFRvdWNoRXZlbnRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEdsb2JhbFRvdWNoRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgdGhpcy5oYW5kbGVHbG9iYWxQb2ludGVyRXZlbnQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuc2V0R2xvYmFsSWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cy5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0R2xvYmFsSWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMgPSB0cnVlO1xuICAgIC8vIENsZWFyIGdsb2JhbElnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMgYWZ0ZXIgYSBzaG9ydCB0aW1lb3V0LiBpT1MgZmlyZXMgb25Qb2ludGVyRW50ZXJcbiAgICAvLyB3aXRoIHBvaW50ZXJUeXBlPVwibW91c2VcIiBpbW1lZGlhdGVseSBhZnRlciBvblBvaW50ZXJVcCBhbmQgYmVmb3JlIG9uRm9jdXMuIE9uIG90aGVyXG4gICAgLy8gZGV2aWNlcyB0aGF0IGRvbid0IGhhdmUgdGhpcyBxdWlyaywgd2UgZG9uJ3Qgd2FudCB0byBpZ25vcmUgYSBtb3VzZSBob3ZlciBzb21ldGltZSBpblxuICAgIC8vIHRoZSBkaXN0YW50IGZ1dHVyZSBiZWNhdXNlIGEgdXNlciBwcmV2aW91c2x5IHRvdWNoZWQgdGhlIGVsZW1lbnQuXG4gICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5pZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzID0gZmFsc2UpLCA1MCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUdsb2JhbFBvaW50ZXJFdmVudChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnBvaW50ZXJUeXBlID09PSAndG91Y2gnKSB7XG4gICAgICB0aGlzLnNldEdsb2JhbElnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSBmb3Igbm9ybWFsaXppbmcgaG92ZXIgZXZlbnRzIGFjcm9zcyB0aGUgZGlmZmVyZW50IGJyb3dzZXJzIGFuZCBkZXZpY2VzLlxuICpcbiAqIFRoaXMgaXMgYW4gQW5ndWxhciBwb3J0IG9mIHRoZSB1c2VIb3ZlciBob29rIGZyb21cbiAqIHJlYWN0LWFyaWE6IGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iL21haW4vcGFja2FnZXMvJTQwcmVhY3QtYXJpYS9pbnRlcmFjdGlvbnMvc3JjL3VzZUhvdmVyLnRzXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BIb3Zlcl0nLFxuICBleHBvcnRBczogJ25ncEhvdmVyJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOZ3BIb3ZlclRva2VuLCB1c2VFeGlzdGluZzogTmdwSG92ZXIgfV0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuZGF0YS1ob3Zlcl0nOiAnaG92ZXJlZCgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwSG92ZXIgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogQWNjZXNzIHRoZSBnbG9iYWwgcG9pbnRlciBldmVudHMgaGFuZGxlci5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsUG9pbnRlckV2ZW50cyA9IGluamVjdChHbG9iYWxQb2ludGVyRXZlbnRzKTtcblxuICAvKipcbiAgICogV2hldGhlciBob3Zpbmcgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7XG4gICAgYWxpYXM6ICduZ3BIb3ZlckRpc2FibGVkJyxcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBTdG9yZSB0aGUgY3VycmVudCBob3ZlciBzdGF0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBob3ZlcmVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGVsZW1lbnQgc2hvdWxkIGlnbm9yZSBlbXVsYXRlZCBtb3VzZSBldmVudHMuXG4gICAqL1xuICBwcml2YXRlIGlnbm9yZUVtdWxhdGVkTW91c2VFdmVudHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdCBhbiBldmVudCB3aGVuIGhvdmVyaW5nIHN0YXJ0cy5cbiAgICovXG4gIHJlYWRvbmx5IGhvdmVyU3RhcnQgPSBvdXRwdXQ8dm9pZD4oeyBhbGlhczogJ25ncEhvdmVyU3RhcnQnIH0pO1xuXG4gIC8qKlxuICAgKiBFbWl0IGFuIGV2ZW50IHdoZW4gaG92ZXJpbmcgZW5kcy5cbiAgICovXG4gIHJlYWRvbmx5IGhvdmVyRW5kID0gb3V0cHV0PHZvaWQ+KHsgYWxpYXM6ICduZ3BIb3ZlckVuZCcgfSk7XG5cbiAgLyoqXG4gICAqIEVtaXQgYW4gZXZlbnQgd2hlbiB0aGUgaG92ZXIgc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIHJlYWRvbmx5IGhvdmVyQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KHsgYWxpYXM6ICduZ3BIb3ZlckNoYW5nZScgfSk7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICgnZGlzYWJsZWQnIGluIGNoYW5nZXMpIHtcbiAgICAgIC8vIGlmIHRoZSBjb21wb25lbnQgaXMgc3VkZGVubHkgZGlzYWJsZWQgYW5kIGlzIGN1cnJlbnRseSBob3ZlcmVkXG4gICAgICAvLyBzd2l0Y2ggdG8gdGhlIHVuaG92ZXJlZCBzdGF0ZS5cbiAgICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddLmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLm9uSG92ZXJFbmQoJ21vdXNlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgdGhlIGhvdmVyIHN0YXJ0IGV2ZW50cy5cbiAgICovXG4gIHByaXZhdGUgb25Ib3ZlclN0YXJ0KGV2ZW50OiBFdmVudCwgcG9pbnRlclR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZGlzYWJsZWQoKSB8fFxuICAgICAgcG9pbnRlclR5cGUgPT09ICd0b3VjaCcgfHxcbiAgICAgIHRoaXMuaG92ZXJlZCgpIHx8XG4gICAgICAhKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudCk/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaG92ZXJlZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5ob3ZlclN0YXJ0LmVtaXQoKTtcbiAgICB0aGlzLmhvdmVyQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciB0aGUgaG92ZXIgZW5kIGV2ZW50cy5cbiAgICovXG4gIHByaXZhdGUgb25Ib3ZlckVuZChwb2ludGVyVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHBvaW50ZXJUeXBlID09PSAndG91Y2gnIHx8ICF0aGlzLmhvdmVyZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaG92ZXJlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaG92ZXJFbmQuZW1pdCgpO1xuICAgIHRoaXMuaG92ZXJDaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdwb2ludGVyZW50ZXInLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Qb2ludGVyRW50ZXIoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdsb2JhbFBvaW50ZXJFdmVudHMuaWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cyAmJiBldmVudC5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub25Ib3ZlclN0YXJ0KGV2ZW50LCBldmVudC5wb2ludGVyVHlwZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Qb2ludGVyTGVhdmUoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpICYmIChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEVsZW1lbnQpPy5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkpIHtcbiAgICAgIHRoaXMub25Ib3ZlckVuZChldmVudC5wb2ludGVyVHlwZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcpXG4gIHByb3RlY3RlZCBvblRvdWNoU3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Nb3VzZUVudGVyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMgJiYgIXRoaXMuZ2xvYmFsUG9pbnRlckV2ZW50cy5pZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzKSB7XG4gICAgICB0aGlzLm9uSG92ZXJTdGFydChldmVudCwgJ21vdXNlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5pZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIG9uTW91c2VMZWF2ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpICYmIChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEVsZW1lbnQpPy5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkpIHtcbiAgICAgIHRoaXMub25Ib3ZlckVuZCgnbW91c2UnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2024 Angular Primitives.
|
|
3
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import { InjectionToken, inject } from '@angular/core';
|
|
9
|
+
export const NgpHoverToken = new InjectionToken('NgpHoverToken');
|
|
10
|
+
/**
|
|
11
|
+
* Inject the Hover directive instance
|
|
12
|
+
*/
|
|
13
|
+
export function injectHover() {
|
|
14
|
+
return inject(NgpHoverToken);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXIudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3V0aWxzL3NyYy9ob3Zlci9ob3Zlci50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQVcsZUFBZSxDQUFDLENBQUM7QUFFM0U7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgTmdwSG92ZXIgfSBmcm9tICcuL2hvdmVyLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBOZ3BIb3ZlclRva2VuID0gbmV3IEluamVjdGlvblRva2VuPE5ncEhvdmVyPignTmdwSG92ZXJUb2tlbicpO1xuXG4vKipcbiAqIEluamVjdCB0aGUgSG92ZXIgZGlyZWN0aXZlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RIb3ZlcigpOiBOZ3BIb3ZlciB7XG4gIHJldHVybiBpbmplY3QoTmdwSG92ZXJUb2tlbik7XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2024 Angular Primitives.
|
|
3
|
+
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
export { injectDisposables } from './helpers/disposables';
|
|
9
|
+
export { FocusManager } from './helpers/focus-manager';
|
|
10
|
+
export { uniqueId } from './helpers/unique-id';
|
|
11
|
+
export { NgpHover } from './hover/hover.directive';
|
|
12
|
+
export { NgpHoverToken } from './hover/hover.token';
|
|
13
|
+
export { injectDimensions } from './ui/dimensions';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3V0aWxzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5leHBvcnQgeyBpbmplY3REaXNwb3NhYmxlcyB9IGZyb20gJy4vaGVscGVycy9kaXNwb3NhYmxlcyc7XG5leHBvcnQgeyBGb2N1c01hbmFnZXIgfSBmcm9tICcuL2hlbHBlcnMvZm9jdXMtbWFuYWdlcic7XG5leHBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJy4vaGVscGVycy91bmlxdWUtaWQnO1xuZXhwb3J0IHsgTmdwSG92ZXIgfSBmcm9tICcuL2hvdmVyL2hvdmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBOZ3BIb3ZlclRva2VuIH0gZnJvbSAnLi9ob3Zlci9ob3Zlci50b2tlbic7XG5leHBvcnQgeyBpbmplY3REaW1lbnNpb25zIH0gZnJvbSAnLi91aS9kaW1lbnNpb25zJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJpbWl0aXZlcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvdXRpbHMvc3JjL25nLXByaW1pdGl2ZXMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|