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.
Files changed (243) hide show
  1. package/README.md +7 -0
  2. package/a11y/README.md +3 -0
  3. package/a11y/index.d.ts +8 -0
  4. package/a11y/visually-hidden/visually-hidden.directive.d.ts +5 -0
  5. package/accordion/README.md +3 -0
  6. package/accordion/accordion/accordion.directive.d.ts +45 -0
  7. package/accordion/accordion/accordion.token.d.ts +15 -0
  8. package/accordion/accordion-content/accordion-content.directive.d.ts +25 -0
  9. package/accordion/accordion-content/accordion-content.token.d.ts +15 -0
  10. package/accordion/accordion-item/accordion-item.directive.d.ts +45 -0
  11. package/accordion/accordion-item/accordion-item.token.d.ts +15 -0
  12. package/accordion/accordion-trigger/accordion-trigger.directive.d.ts +21 -0
  13. package/accordion/accordion-trigger/accordion-trigger.token.d.ts +15 -0
  14. package/accordion/config/accordion.config.d.ts +39 -0
  15. package/accordion/index.d.ts +16 -0
  16. package/avatar/README.md +3 -0
  17. package/avatar/avatar/avatar.directive.d.ts +22 -0
  18. package/avatar/avatar/avatar.token.d.ts +15 -0
  19. package/avatar/avatar-fallback/avatar-fallback.directive.d.ts +45 -0
  20. package/avatar/avatar-image/avatar-image.directive.d.ts +28 -0
  21. package/avatar/config/avatar.config.d.ts +28 -0
  22. package/avatar/index.d.ts +12 -0
  23. package/checkbox/README.md +3 -0
  24. package/checkbox/checkbox/checkbox.directive.d.ts +89 -0
  25. package/checkbox/checkbox/checkbox.token.d.ts +15 -0
  26. package/checkbox/checkbox-indicator/checkbox-indicator.directive.d.ts +19 -0
  27. package/checkbox/checkbox-indicator/checkbox-indicator.token.d.ts +15 -0
  28. package/checkbox/checkbox-input/checkbox-input.directive.d.ts +10 -0
  29. package/checkbox/checkbox-label/checkbox-label.directive.d.ts +9 -0
  30. package/checkbox/index.d.ts +13 -0
  31. package/esm2022/a11y/index.mjs +9 -0
  32. package/esm2022/a11y/ng-primitives-a11y.mjs +5 -0
  33. package/esm2022/a11y/visually-hidden/visually-hidden.directive.mjs +25 -0
  34. package/esm2022/accordion/accordion/accordion.directive.mjs +90 -0
  35. package/esm2022/accordion/accordion/accordion.token.mjs +17 -0
  36. package/esm2022/accordion/accordion-content/accordion-content.directive.mjs +55 -0
  37. package/esm2022/accordion/accordion-content/accordion-content.token.mjs +17 -0
  38. package/esm2022/accordion/accordion-item/accordion-item.directive.mjs +64 -0
  39. package/esm2022/accordion/accordion-item/accordion-item.token.mjs +17 -0
  40. package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +58 -0
  41. package/esm2022/accordion/accordion-trigger/accordion-trigger.token.mjs +17 -0
  42. package/esm2022/accordion/config/accordion.config.mjs +35 -0
  43. package/esm2022/accordion/index.mjs +17 -0
  44. package/esm2022/accordion/ng-primitives-accordion.mjs +5 -0
  45. package/esm2022/avatar/avatar/avatar.directive.mjs +45 -0
  46. package/esm2022/avatar/avatar/avatar.token.mjs +17 -0
  47. package/esm2022/avatar/avatar-fallback/avatar-fallback.directive.mjs +61 -0
  48. package/esm2022/avatar/avatar-image/avatar-image.directive.mjs +64 -0
  49. package/esm2022/avatar/config/avatar.config.mjs +33 -0
  50. package/esm2022/avatar/index.mjs +13 -0
  51. package/esm2022/avatar/ng-primitives-avatar.mjs +5 -0
  52. package/esm2022/checkbox/checkbox/checkbox.directive.mjs +141 -0
  53. package/esm2022/checkbox/checkbox/checkbox.token.mjs +17 -0
  54. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.directive.mjs +51 -0
  55. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.token.mjs +17 -0
  56. package/esm2022/checkbox/checkbox-input/checkbox-input.directive.mjs +40 -0
  57. package/esm2022/checkbox/checkbox-label/checkbox-label.directive.mjs +32 -0
  58. package/esm2022/checkbox/index.mjs +14 -0
  59. package/esm2022/checkbox/ng-primitives-checkbox.mjs +5 -0
  60. package/esm2022/index.mjs +10 -0
  61. package/esm2022/ng-primitives.mjs +5 -0
  62. package/esm2022/progress/index.mjs +10 -0
  63. package/esm2022/progress/ng-primitives-progress.mjs +5 -0
  64. package/esm2022/progress/progress/progress.directive.mjs +60 -0
  65. package/esm2022/progress/progress/progress.token.mjs +16 -0
  66. package/esm2022/progress/progress-indicator/progress-indicator.directive.mjs +33 -0
  67. package/esm2022/radio/index.mjs +13 -0
  68. package/esm2022/radio/ng-primitives-radio.mjs +5 -0
  69. package/esm2022/radio/radio-group/radio-group.directive.mjs +100 -0
  70. package/esm2022/radio/radio-group/radio-group.token.mjs +17 -0
  71. package/esm2022/radio/radio-indicator/radio-indicator.directive.mjs +41 -0
  72. package/esm2022/radio/radio-item/radio-item.directive.mjs +68 -0
  73. package/esm2022/radio/radio-item/radio-item.token.mjs +17 -0
  74. package/esm2022/resize/index.mjs +10 -0
  75. package/esm2022/resize/ng-primitives-resize.mjs +5 -0
  76. package/esm2022/resize/resize/resize.directive.mjs +49 -0
  77. package/esm2022/resize/utils/resize.mjs +41 -0
  78. package/esm2022/roving-focus/index.mjs +12 -0
  79. package/esm2022/roving-focus/ng-primitives-roving-focus.mjs +5 -0
  80. package/esm2022/roving-focus/roving-focus-group/roving-focus-group.directive.mjs +244 -0
  81. package/esm2022/roving-focus/roving-focus-group/roving-focus-group.token.mjs +17 -0
  82. package/esm2022/roving-focus/roving-focus-item/roving-focus-item.directive.mjs +98 -0
  83. package/esm2022/roving-focus/roving-focus-item/roving-focus-item.token.mjs +17 -0
  84. package/esm2022/select/index.mjs +16 -0
  85. package/esm2022/select/ng-primitives-select.mjs +5 -0
  86. package/esm2022/select/select/select.directive.mjs +54 -0
  87. package/esm2022/select/select/select.token.mjs +16 -0
  88. package/esm2022/select/select-button/select-button.directive.mjs +84 -0
  89. package/esm2022/select/select-button/select-button.token.mjs +16 -0
  90. package/esm2022/select/select-option/select-option.directive.mjs +90 -0
  91. package/esm2022/select/select-option/select-option.token.mjs +16 -0
  92. package/esm2022/select/select-options/select-options.directive.mjs +157 -0
  93. package/esm2022/select/select-options/select-options.token.mjs +16 -0
  94. package/esm2022/slider/index.mjs +16 -0
  95. package/esm2022/slider/ng-primitives-slider.mjs +5 -0
  96. package/esm2022/slider/slider/slider.directive.mjs +68 -0
  97. package/esm2022/slider/slider/slider.token.mjs +16 -0
  98. package/esm2022/slider/slider-range/slider-range.directive.mjs +36 -0
  99. package/esm2022/slider/slider-range/slider-range.token.mjs +16 -0
  100. package/esm2022/slider/slider-thumb/slider-thumb.directive.mjs +109 -0
  101. package/esm2022/slider/slider-thumb/slider-thumb.token.mjs +16 -0
  102. package/esm2022/slider/slider-track/slider-track.directive.mjs +54 -0
  103. package/esm2022/slider/slider-track/slider-track.token.mjs +16 -0
  104. package/esm2022/switch/index.mjs +11 -0
  105. package/esm2022/switch/ng-primitives-switch.mjs +5 -0
  106. package/esm2022/switch/switch/switch.directive.mjs +126 -0
  107. package/esm2022/switch/switch/switch.token.mjs +17 -0
  108. package/esm2022/switch/switch-thumb/switch-thumb.directive.mjs +32 -0
  109. package/esm2022/tabs/config/tabs.config.mjs +35 -0
  110. package/esm2022/tabs/index.mjs +15 -0
  111. package/esm2022/tabs/ng-primitives-tabs.mjs +5 -0
  112. package/esm2022/tabs/tab-button/tab-button.directive.mjs +84 -0
  113. package/esm2022/tabs/tab-list/tab-list.directive.mjs +34 -0
  114. package/esm2022/tabs/tab-panel/tab-panel.directive.mjs +62 -0
  115. package/esm2022/tabs/tab-panel/tab-panel.token.mjs +17 -0
  116. package/esm2022/tabs/tabset/tabset.directive.mjs +91 -0
  117. package/esm2022/tabs/tabset/tabset.token.mjs +17 -0
  118. package/esm2022/toggle/index.mjs +9 -0
  119. package/esm2022/toggle/ng-primitives-toggle.mjs +5 -0
  120. package/esm2022/toggle/toggle/toggle.directive.mjs +48 -0
  121. package/esm2022/tooltip/config/tooltip.config.mjs +38 -0
  122. package/esm2022/tooltip/index.mjs +13 -0
  123. package/esm2022/tooltip/ng-primitives-tooltip.mjs +5 -0
  124. package/esm2022/tooltip/tooltip/tooltip.directive.mjs +57 -0
  125. package/esm2022/tooltip/tooltip/tooltip.token.mjs +16 -0
  126. package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.directive.mjs +190 -0
  127. package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.token.mjs +23 -0
  128. package/esm2022/utils/helpers/disposables.mjs +72 -0
  129. package/esm2022/utils/helpers/focus-manager.mjs +28 -0
  130. package/esm2022/utils/helpers/unique-id.mjs +22 -0
  131. package/esm2022/utils/hover/hover.directive.mjs +183 -0
  132. package/esm2022/utils/hover/hover.token.mjs +16 -0
  133. package/esm2022/utils/index.mjs +14 -0
  134. package/esm2022/utils/ng-primitives-utils.mjs +5 -0
  135. package/esm2022/utils/ui/dimensions.mjs +40 -0
  136. package/fesm2022/ng-primitives-a11y.mjs +40 -0
  137. package/fesm2022/ng-primitives-a11y.mjs.map +1 -0
  138. package/fesm2022/ng-primitives-accordion.mjs +361 -0
  139. package/fesm2022/ng-primitives-accordion.mjs.map +1 -0
  140. package/fesm2022/ng-primitives-avatar.mjs +223 -0
  141. package/fesm2022/ng-primitives-avatar.mjs.map +1 -0
  142. package/fesm2022/ng-primitives-checkbox.mjs +299 -0
  143. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -0
  144. package/fesm2022/ng-primitives-progress.mjs +119 -0
  145. package/fesm2022/ng-primitives-progress.mjs.map +1 -0
  146. package/fesm2022/ng-primitives-radio.mjs +245 -0
  147. package/fesm2022/ng-primitives-radio.mjs.map +1 -0
  148. package/fesm2022/ng-primitives-resize.mjs +104 -0
  149. package/fesm2022/ng-primitives-resize.mjs.map +1 -0
  150. package/fesm2022/ng-primitives-roving-focus.mjs +384 -0
  151. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -0
  152. package/fesm2022/ng-primitives-select.mjs +442 -0
  153. package/fesm2022/ng-primitives-select.mjs.map +1 -0
  154. package/fesm2022/ng-primitives-slider.mjs +328 -0
  155. package/fesm2022/ng-primitives-slider.mjs.map +1 -0
  156. package/fesm2022/ng-primitives-switch.mjs +185 -0
  157. package/fesm2022/ng-primitives-switch.mjs.map +1 -0
  158. package/fesm2022/ng-primitives-tabs.mjs +337 -0
  159. package/fesm2022/ng-primitives-tabs.mjs.map +1 -0
  160. package/fesm2022/ng-primitives-toggle.mjs +63 -0
  161. package/fesm2022/ng-primitives-toggle.mjs.map +1 -0
  162. package/fesm2022/ng-primitives-tooltip.mjs +330 -0
  163. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -0
  164. package/fesm2022/ng-primitives-utils.mjs +370 -0
  165. package/fesm2022/ng-primitives-utils.mjs.map +1 -0
  166. package/fesm2022/ng-primitives.mjs +14 -0
  167. package/fesm2022/ng-primitives.mjs.map +1 -0
  168. package/index.d.ts +9 -0
  169. package/package.json +120 -0
  170. package/progress/README.md +3 -0
  171. package/progress/index.d.ts +9 -0
  172. package/progress/progress/progress.directive.d.ts +40 -0
  173. package/progress/progress/progress.token.d.ts +14 -0
  174. package/progress/progress-indicator/progress-indicator.directive.d.ts +9 -0
  175. package/radio/README.md +3 -0
  176. package/radio/index.d.ts +12 -0
  177. package/radio/radio-group/radio-group.directive.d.ts +71 -0
  178. package/radio/radio-group/radio-group.token.d.ts +15 -0
  179. package/radio/radio-indicator/radio-indicator.directive.d.ts +17 -0
  180. package/radio/radio-item/radio-item.directive.d.ts +41 -0
  181. package/radio/radio-item/radio-item.token.d.ts +15 -0
  182. package/resize/README.md +3 -0
  183. package/resize/index.d.ts +9 -0
  184. package/resize/resize/resize.directive.d.ts +31 -0
  185. package/resize/utils/resize.d.ts +18 -0
  186. package/roving-focus/README.md +3 -0
  187. package/roving-focus/index.d.ts +11 -0
  188. package/roving-focus/roving-focus-group/roving-focus-group.directive.d.ts +94 -0
  189. package/roving-focus/roving-focus-group/roving-focus-group.token.d.ts +15 -0
  190. package/roving-focus/roving-focus-item/roving-focus-item.directive.d.ts +57 -0
  191. package/roving-focus/roving-focus-item/roving-focus-item.token.d.ts +15 -0
  192. package/select/README.md +3 -0
  193. package/select/index.d.ts +15 -0
  194. package/select/select/select.directive.d.ts +35 -0
  195. package/select/select/select.token.d.ts +14 -0
  196. package/select/select-button/select-button.directive.d.ts +51 -0
  197. package/select/select-button/select-button.token.d.ts +14 -0
  198. package/select/select-option/select-option.directive.d.ts +57 -0
  199. package/select/select-option/select-option.token.d.ts +14 -0
  200. package/select/select-options/select-options.directive.d.ts +65 -0
  201. package/select/select-options/select-options.token.d.ts +14 -0
  202. package/slider/README.md +3 -0
  203. package/slider/index.d.ts +15 -0
  204. package/slider/slider/slider.directive.d.ts +45 -0
  205. package/slider/slider/slider.token.d.ts +14 -0
  206. package/slider/slider-range/slider-range.directive.d.ts +9 -0
  207. package/slider/slider-range/slider-range.token.d.ts +14 -0
  208. package/slider/slider-thumb/slider-thumb.directive.d.ts +21 -0
  209. package/slider/slider-thumb/slider-thumb.token.d.ts +14 -0
  210. package/slider/slider-track/slider-track.directive.d.ts +26 -0
  211. package/slider/slider-track/slider-track.token.d.ts +14 -0
  212. package/switch/README.md +3 -0
  213. package/switch/index.d.ts +10 -0
  214. package/switch/switch/switch.directive.d.ts +82 -0
  215. package/switch/switch/switch.token.d.ts +15 -0
  216. package/switch/switch-thumb/switch-thumb.directive.d.ts +9 -0
  217. package/tabs/README.md +3 -0
  218. package/tabs/config/tabs.config.d.ts +38 -0
  219. package/tabs/index.d.ts +14 -0
  220. package/tabs/tab-button/tab-button.directive.d.ts +54 -0
  221. package/tabs/tab-list/tab-list.directive.d.ts +9 -0
  222. package/tabs/tab-panel/tab-panel.directive.d.ts +32 -0
  223. package/tabs/tab-panel/tab-panel.token.d.ts +15 -0
  224. package/tabs/tabset/tabset.directive.d.ts +53 -0
  225. package/tabs/tabset/tabset.token.d.ts +15 -0
  226. package/toggle/README.md +3 -0
  227. package/toggle/index.d.ts +8 -0
  228. package/toggle/toggle/toggle.directive.d.ts +27 -0
  229. package/tooltip/README.md +3 -0
  230. package/tooltip/config/tooltip.config.d.ts +54 -0
  231. package/tooltip/index.d.ts +12 -0
  232. package/tooltip/tooltip/tooltip.directive.d.ts +30 -0
  233. package/tooltip/tooltip/tooltip.token.d.ts +14 -0
  234. package/tooltip/tooltip-trigger/tooltip-trigger.directive.d.ts +111 -0
  235. package/tooltip/tooltip-trigger/tooltip-trigger.token.d.ts +22 -0
  236. package/utils/README.md +3 -0
  237. package/utils/helpers/disposables.d.ts +40 -0
  238. package/utils/helpers/focus-manager.d.ts +19 -0
  239. package/utils/helpers/unique-id.d.ts +13 -0
  240. package/utils/hover/hover.directive.d.ts +62 -0
  241. package/utils/hover/hover.token.d.ts +14 -0
  242. package/utils/index.d.ts +13 -0
  243. 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=