ng-primitives 0.0.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/README.md +14 -4
  2. package/accordion/accordion-trigger/accordion-trigger.directive.d.ts +2 -1
  3. package/autofill/README.md +3 -0
  4. package/autofill/autofill/autofill.directive.d.ts +19 -0
  5. package/{select/select-button/select-button.token.d.ts → autofill/autofill/autofill.token.d.ts} +4 -4
  6. package/autofill/index.d.ts +9 -0
  7. package/avatar/avatar/avatar.directive.d.ts +2 -1
  8. package/button/README.md +3 -0
  9. package/button/button/button.directive.d.ts +27 -0
  10. package/{select/select-option/select-option.token.d.ts → button/button/button.token.d.ts} +4 -4
  11. package/button/index.d.ts +9 -0
  12. package/checkbox/checkbox/checkbox.directive.d.ts +11 -61
  13. package/checkbox/index.d.ts +0 -4
  14. package/esm2022/a11y/visually-hidden/visually-hidden.directive.mjs +3 -3
  15. package/esm2022/accordion/accordion/accordion.directive.mjs +5 -4
  16. package/esm2022/accordion/accordion-content/accordion-content.directive.mjs +5 -6
  17. package/esm2022/accordion/accordion-item/accordion-item.directive.mjs +5 -5
  18. package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +8 -5
  19. package/esm2022/autofill/autofill/autofill.directive.mjs +71 -0
  20. package/esm2022/autofill/autofill/autofill.token.mjs +16 -0
  21. package/esm2022/autofill/index.mjs +10 -0
  22. package/esm2022/autofill/ng-primitives-autofill.mjs +5 -0
  23. package/esm2022/avatar/avatar/avatar.directive.mjs +7 -4
  24. package/esm2022/avatar/avatar-fallback/avatar-fallback.directive.mjs +3 -3
  25. package/esm2022/avatar/avatar-image/avatar-image.directive.mjs +3 -3
  26. package/esm2022/button/button/button.directive.mjs +47 -0
  27. package/esm2022/button/button/button.token.mjs +16 -0
  28. package/esm2022/button/index.mjs +10 -0
  29. package/esm2022/button/ng-primitives-button.mjs +5 -0
  30. package/esm2022/checkbox/checkbox/checkbox.directive.mjs +29 -79
  31. package/esm2022/checkbox/index.mjs +1 -5
  32. package/esm2022/file-upload/file-upload/file-upload.directive.mjs +7 -4
  33. package/esm2022/focus-trap/focus-trap/focus-trap.directive.mjs +262 -0
  34. package/esm2022/focus-trap/focus-trap/focus-trap.token.mjs +16 -0
  35. package/esm2022/focus-trap/index.mjs +10 -0
  36. package/esm2022/focus-trap/ng-primitives-focus-trap.mjs +5 -0
  37. package/esm2022/form-field/description/description.directive.mjs +14 -14
  38. package/esm2022/form-field/error/error.directive.mjs +27 -29
  39. package/esm2022/form-field/form-control/form-control.directive.mjs +22 -16
  40. package/esm2022/form-field/form-field/form-field.directive.mjs +3 -3
  41. package/esm2022/form-field/form-field/form-field.token.mjs +3 -7
  42. package/esm2022/form-field/label/label.directive.mjs +56 -17
  43. package/esm2022/input/index.mjs +10 -0
  44. package/esm2022/input/input/input.directive.mjs +55 -0
  45. package/esm2022/input/input/input.token.mjs +16 -0
  46. package/esm2022/input/ng-primitives-input.mjs +5 -0
  47. package/esm2022/interactions/focus/focus.directive.mjs +15 -10
  48. package/esm2022/interactions/focus-visible/focus-visible.directive.mjs +12 -7
  49. package/esm2022/interactions/hover/hover.directive.mjs +16 -11
  50. package/esm2022/interactions/index.mjs +5 -1
  51. package/esm2022/interactions/move/move.directive.mjs +216 -0
  52. package/esm2022/interactions/move/move.token.mjs +16 -0
  53. package/esm2022/interactions/press/press.directive.mjs +118 -0
  54. package/esm2022/interactions/press/press.token.mjs +16 -0
  55. package/esm2022/internal/disabled/disabled.mjs +19 -0
  56. package/esm2022/internal/index.mjs +11 -0
  57. package/esm2022/internal/ng-primitives-internal.mjs +5 -0
  58. package/esm2022/internal/orientation/orientation.mjs +19 -0
  59. package/esm2022/internal/style-injector/style-injector.mjs +81 -0
  60. package/esm2022/progress/progress/progress.directive.mjs +3 -3
  61. package/esm2022/progress/progress-indicator/progress-indicator.directive.mjs +3 -3
  62. package/esm2022/radio/radio-group/radio-group.directive.mjs +14 -54
  63. package/esm2022/radio/radio-indicator/radio-indicator.directive.mjs +8 -5
  64. package/esm2022/radio/radio-item/radio-item.directive.mjs +8 -6
  65. package/esm2022/resize/resize/resize.directive.mjs +3 -3
  66. package/esm2022/roving-focus/roving-focus-group/roving-focus-group.directive.mjs +14 -9
  67. package/esm2022/roving-focus/roving-focus-item/roving-focus-item.directive.mjs +3 -3
  68. package/esm2022/search/index.mjs +10 -0
  69. package/esm2022/search/ng-primitives-search.mjs +5 -0
  70. package/esm2022/search/search-field/search-field.directive.mjs +47 -0
  71. package/esm2022/search/search-field/search-field.token.mjs +16 -0
  72. package/esm2022/select/index.mjs +1 -7
  73. package/esm2022/select/select/select.directive.mjs +23 -36
  74. package/esm2022/select/select/select.token.mjs +1 -1
  75. package/esm2022/slider/slider/slider.directive.mjs +18 -5
  76. package/esm2022/slider/slider-range/slider-range.directive.mjs +6 -5
  77. package/esm2022/slider/slider-thumb/slider-thumb.directive.mjs +7 -4
  78. package/esm2022/slider/slider-track/slider-track.directive.mjs +8 -4
  79. package/esm2022/switch/switch/switch.directive.mjs +18 -58
  80. package/esm2022/switch/switch-thumb/switch-thumb.directive.mjs +9 -6
  81. package/esm2022/tabs/tab-button/tab-button.directive.mjs +8 -6
  82. package/esm2022/tabs/tab-list/tab-list.directive.mjs +3 -3
  83. package/esm2022/tabs/tab-panel/tab-panel.directive.mjs +5 -6
  84. package/esm2022/tabs/tabset/tabset.directive.mjs +14 -18
  85. package/esm2022/textarea/index.mjs +10 -0
  86. package/esm2022/textarea/ng-primitives-textarea.mjs +5 -0
  87. package/esm2022/textarea/textarea/textarea.directive.mjs +37 -0
  88. package/esm2022/textarea/textarea/textarea.token.mjs +16 -0
  89. package/esm2022/toggle/toggle/toggle.directive.mjs +33 -13
  90. package/esm2022/tooltip/tooltip/tooltip.directive.mjs +3 -3
  91. package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.directive.mjs +7 -7
  92. package/esm2022/utils/helpers/focus-manager.mjs +3 -3
  93. package/esm2022/utils/index.mjs +2 -2
  94. package/esm2022/utils/signals/async.mjs +11 -17
  95. package/fesm2022/ng-primitives-a11y.mjs +3 -3
  96. package/fesm2022/ng-primitives-accordion.mjs +19 -16
  97. package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
  98. package/fesm2022/ng-primitives-autofill.mjs +100 -0
  99. package/fesm2022/ng-primitives-autofill.mjs.map +1 -0
  100. package/fesm2022/ng-primitives-avatar.mjs +13 -10
  101. package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
  102. package/fesm2022/ng-primitives-button.mjs +76 -0
  103. package/fesm2022/ng-primitives-button.mjs.map +1 -0
  104. package/fesm2022/ng-primitives-checkbox.mjs +25 -203
  105. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
  106. package/fesm2022/ng-primitives-file-upload.mjs +6 -3
  107. package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
  108. package/fesm2022/ng-primitives-focus-trap.mjs +291 -0
  109. package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -0
  110. package/fesm2022/ng-primitives-form-field.mjs +119 -80
  111. package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
  112. package/fesm2022/ng-primitives-input.mjs +84 -0
  113. package/fesm2022/ng-primitives-input.mjs.map +1 -0
  114. package/fesm2022/ng-primitives-interactions.mjs +394 -26
  115. package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
  116. package/fesm2022/ng-primitives-internal.mjs +132 -0
  117. package/fesm2022/ng-primitives-internal.mjs.map +1 -0
  118. package/fesm2022/ng-primitives-progress.mjs +6 -6
  119. package/fesm2022/ng-primitives-radio.mjs +25 -62
  120. package/fesm2022/ng-primitives-radio.mjs.map +1 -1
  121. package/fesm2022/ng-primitives-resize.mjs +3 -3
  122. package/fesm2022/ng-primitives-roving-focus.mjs +15 -10
  123. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
  124. package/fesm2022/ng-primitives-search.mjs +76 -0
  125. package/fesm2022/ng-primitives-search.mjs.map +1 -0
  126. package/fesm2022/ng-primitives-select.mjs +23 -395
  127. package/fesm2022/ng-primitives-select.mjs.map +1 -1
  128. package/fesm2022/ng-primitives-slider.mjs +35 -14
  129. package/fesm2022/ng-primitives-slider.mjs.map +1 -1
  130. package/fesm2022/ng-primitives-switch.mjs +23 -62
  131. package/fesm2022/ng-primitives-switch.mjs.map +1 -1
  132. package/fesm2022/ng-primitives-tabs.mjs +27 -30
  133. package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
  134. package/fesm2022/ng-primitives-textarea.mjs +66 -0
  135. package/fesm2022/ng-primitives-textarea.mjs.map +1 -0
  136. package/fesm2022/ng-primitives-toggle.mjs +32 -12
  137. package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
  138. package/fesm2022/ng-primitives-tooltip.mjs +9 -9
  139. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
  140. package/fesm2022/ng-primitives-utils.mjs +14 -20
  141. package/fesm2022/ng-primitives-utils.mjs.map +1 -1
  142. package/file-upload/file-upload/file-upload.directive.d.ts +2 -1
  143. package/focus-trap/README.md +3 -0
  144. package/focus-trap/focus-trap/focus-trap.directive.d.ts +64 -0
  145. package/{select/select-options/select-options.token.d.ts → focus-trap/focus-trap/focus-trap.token.d.ts} +4 -4
  146. package/focus-trap/index.d.ts +9 -0
  147. package/form-field/description/description.directive.d.ts +1 -1
  148. package/form-field/error/error.directive.d.ts +9 -5
  149. package/form-field/form-control/form-control.directive.d.ts +7 -3
  150. package/form-field/form-field/form-field.token.d.ts +1 -1
  151. package/form-field/label/label.directive.d.ts +3 -2
  152. package/input/README.md +3 -0
  153. package/input/index.d.ts +9 -0
  154. package/input/input/input.directive.d.ts +33 -0
  155. package/input/input/input.token.d.ts +14 -0
  156. package/interactions/focus/focus.directive.d.ts +6 -2
  157. package/interactions/focus-visible/focus-visible.directive.d.ts +5 -1
  158. package/interactions/hover/hover.directive.d.ts +5 -1
  159. package/interactions/index.d.ts +4 -0
  160. package/interactions/move/move.directive.d.ts +126 -0
  161. package/interactions/move/move.token.d.ts +14 -0
  162. package/interactions/press/press.directive.d.ts +59 -0
  163. package/interactions/press/press.token.d.ts +14 -0
  164. package/internal/README.md +3 -0
  165. package/internal/disabled/disabled.d.ts +21 -0
  166. package/internal/index.d.ts +10 -0
  167. package/internal/orientation/orientation.d.ts +22 -0
  168. package/internal/style-injector/style-injector.d.ts +36 -0
  169. package/package.json +49 -7
  170. package/radio/radio-group/radio-group.directive.d.ts +4 -41
  171. package/radio/radio-indicator/radio-indicator.directive.d.ts +2 -1
  172. package/radio/radio-item/radio-item.directive.d.ts +2 -1
  173. package/roving-focus/roving-focus-group/roving-focus-group.directive.d.ts +7 -2
  174. package/search/README.md +3 -0
  175. package/search/index.d.ts +9 -0
  176. package/search/search-field/search-field.directive.d.ts +15 -0
  177. package/search/search-field/search-field.token.d.ts +14 -0
  178. package/select/index.d.ts +0 -6
  179. package/select/select/select.directive.d.ts +7 -22
  180. package/select/select/select.token.d.ts +2 -2
  181. package/slider/slider/slider.directive.d.ts +4 -2
  182. package/slider/slider-thumb/slider-thumb.directive.d.ts +2 -1
  183. package/slider/slider-track/slider-track.directive.d.ts +1 -1
  184. package/switch/switch/switch.directive.d.ts +5 -45
  185. package/switch/switch-thumb/switch-thumb.directive.d.ts +2 -1
  186. package/tabs/tab-button/tab-button.directive.d.ts +2 -1
  187. package/tabs/tabset/tabset.directive.d.ts +3 -9
  188. package/textarea/README.md +3 -0
  189. package/textarea/index.d.ts +9 -0
  190. package/textarea/textarea/textarea.directive.d.ts +20 -0
  191. package/textarea/textarea/textarea.token.d.ts +14 -0
  192. package/toggle/toggle/toggle.directive.d.ts +16 -4
  193. package/utils/index.d.ts +1 -1
  194. package/utils/signals/async.d.ts +10 -12
  195. package/checkbox/checkbox-indicator/checkbox-indicator.directive.d.ts +0 -19
  196. package/checkbox/checkbox-indicator/checkbox-indicator.token.d.ts +0 -15
  197. package/checkbox/checkbox-input/checkbox-input.directive.d.ts +0 -10
  198. package/checkbox/checkbox-label/checkbox-label.directive.d.ts +0 -9
  199. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.directive.mjs +0 -51
  200. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.token.mjs +0 -17
  201. package/esm2022/checkbox/checkbox-input/checkbox-input.directive.mjs +0 -40
  202. package/esm2022/checkbox/checkbox-label/checkbox-label.directive.mjs +0 -32
  203. package/esm2022/select/select-button/select-button.directive.mjs +0 -84
  204. package/esm2022/select/select-button/select-button.token.mjs +0 -16
  205. package/esm2022/select/select-option/select-option.directive.mjs +0 -90
  206. package/esm2022/select/select-option/select-option.token.mjs +0 -16
  207. package/esm2022/select/select-options/select-options.directive.mjs +0 -157
  208. package/esm2022/select/select-options/select-options.token.mjs +0 -16
  209. package/select/select-button/select-button.directive.d.ts +0 -51
  210. package/select/select-option/select-option.directive.d.ts +0 -57
  211. package/select/select-options/select-options.directive.d.ts +0 -65
@@ -1,5 +1,6 @@
1
1
  import { DOCUMENT, isPlatformBrowser } from '@angular/common';
2
2
  import { Directive, HostListener, Injectable, PLATFORM_ID, booleanAttribute, inject, input, output, signal, } from '@angular/core';
3
+ import { injectDisabled } from 'ng-primitives/internal';
3
4
  import { NgpHoverToken } from './hover.token';
4
5
  import * as i0 from "@angular/core";
5
6
  /**
@@ -42,10 +43,10 @@ class GlobalPointerEvents {
42
43
  this.setGlobalIgnoreEmulatedMouseEvents();
43
44
  }
44
45
  }
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' }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: GlobalPointerEvents, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
47
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: GlobalPointerEvents, providedIn: 'root' }); }
47
48
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GlobalPointerEvents, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: GlobalPointerEvents, decorators: [{
49
50
  type: Injectable,
50
51
  args: [{
51
52
  providedIn: 'root',
@@ -70,6 +71,10 @@ export class NgpHover {
70
71
  alias: 'ngpHoverDisabled',
71
72
  transform: booleanAttribute,
72
73
  });
74
+ /**
75
+ * Access the disabled state from any parent.
76
+ */
77
+ this.isDisabled = injectDisabled(this.disabled);
73
78
  /**
74
79
  * Store the current hover state.
75
80
  */
@@ -89,7 +94,7 @@ export class NgpHover {
89
94
  /**
90
95
  * Emit an event when the hover state changes.
91
96
  */
92
- this.hoverChange = output({ alias: 'ngpHoverChange' });
97
+ this.hoverChange = output({ alias: 'ngpHover' });
93
98
  }
94
99
  ngOnChanges(changes) {
95
100
  if ('disabled' in changes) {
@@ -106,7 +111,7 @@ export class NgpHover {
106
111
  * @param pointerType
107
112
  */
108
113
  onHoverStart(event, pointerType) {
109
- if (this.disabled() ||
114
+ if (this.isDisabled() ||
110
115
  pointerType === 'touch' ||
111
116
  this.hovered() ||
112
117
  !event.currentTarget?.contains(event.target)) {
@@ -135,7 +140,7 @@ export class NgpHover {
135
140
  this.onHoverStart(event, event.pointerType);
136
141
  }
137
142
  onPointerLeave(event) {
138
- if (!this.disabled() && event.currentTarget?.contains(event.target)) {
143
+ if (!this.isDisabled() && event.currentTarget?.contains(event.target)) {
139
144
  this.onHoverEnd(event.pointerType);
140
145
  }
141
146
  }
@@ -149,14 +154,14 @@ export class NgpHover {
149
154
  this.ignoreEmulatedMouseEvents = false;
150
155
  }
151
156
  onMouseLeave(event) {
152
- if (!this.disabled() && event.currentTarget?.contains(event.target)) {
157
+ if (!this.isDisabled() && event.currentTarget?.contains(event.target)) {
153
158
  this.onHoverEnd('mouse');
154
159
  }
155
160
  }
156
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
157
- 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 }); }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
162
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpHover, isStandalone: true, selector: "[ngpHover]", inputs: { disabled: { classPropertyName: "disabled", publicName: "ngpHoverDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { hoverStart: "ngpHoverStart", hoverEnd: "ngpHoverEnd", hoverChange: "ngpHover" }, 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 }); }
158
163
  }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpHover, decorators: [{
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpHover, decorators: [{
160
165
  type: Directive,
161
166
  args: [{
162
167
  standalone: true,
@@ -183,4 +188,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
183
188
  type: HostListener,
184
189
  args: ['mouseleave', ['$event']]
185
190
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9pbnRlcmFjdGlvbnMvc3JjL2hvdmVyL2hvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLFdBQVcsRUFFWCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTlDOzs7R0FHRztBQUNILE1BR00sbUJBQW1CO0lBZ0J2QjtRQWZBOztXQUVHO1FBQ0gsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBRTNDOztXQUVHO1FBQ2MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3Qzs7V0FFRztRQUNjLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFHaEQsNkNBQTZDO1FBQzdDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU8sa0NBQWtDO1FBQ3hDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDdEMsd0ZBQXdGO1FBQ3hGLHNGQUFzRjtRQUN0Rix3RkFBd0Y7UUFDeEYsb0VBQW9FO1FBQ3BFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sd0JBQXdCLENBQUMsS0FBbUI7UUFDbEQsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDOzhHQXpDRyxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZYLE1BQU07OzJGQUVkLG1CQUFtQjtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBNkNEOzs7OztHQUtHO0FBVUgsTUFBTSxPQUFPLFFBQVE7SUFUckI7UUFVRTs7V0FFRztRQUNjLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRW5FOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1lBQ3RELEtBQUssRUFBRSxrQkFBa0I7WUFDekIsU0FBUyxFQUFFLGdCQUFnQjtTQUM1QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNPLFlBQU8sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFM0M7O1dBRUc7UUFDSyw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFFbkQ7O1dBRUc7UUFDTSxlQUFVLEdBQUcsTUFBTSxDQUFPLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFL0Q7O1dBRUc7UUFDTSxhQUFRLEdBQUcsTUFBTSxDQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFM0Q7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLE1BQU0sQ0FBVSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7S0FrRnJFO0lBaEZDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLFVBQVUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUMxQixpRUFBaUU7WUFDakUsaUNBQWlDO1lBQ2pDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLEtBQVksRUFBRSxXQUFtQjtRQUNwRCxJQUNFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixXQUFXLEtBQUssT0FBTztZQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsQ0FBRSxLQUFLLENBQUMsYUFBeUIsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWlCLENBQUMsRUFDcEUsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssVUFBVSxDQUFDLFdBQW1CO1FBQ3BDLElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQy9DLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBR1MsY0FBYyxDQUFDLEtBQW1CO1FBQzFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDeEYsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUdTLGNBQWMsQ0FBQyxLQUFtQjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFLLEtBQUssQ0FBQyxhQUF5QixFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDNUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFHUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUdTLFlBQVksQ0FBQyxLQUFpQjtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDM0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUdTLFlBQVksQ0FBQyxLQUFpQjtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFLLEtBQUssQ0FBQyxhQUF5QixFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDNUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQzs4R0F0SFUsUUFBUTtrR0FBUixRQUFRLHlqQkFMUixDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7OzJGQUtuRCxRQUFRO2tCQVRwQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLFVBQVUsRUFBRSxDQUFDO29CQUM5RCxJQUFJLEVBQUU7d0JBQ0osbUJBQW1CLEVBQUUsV0FBVztxQkFDakM7aUJBQ0Y7OEJBcUZXLGNBQWM7c0JBRHZCLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVU5QixjQUFjO3NCQUR2QixZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFROUIsWUFBWTtzQkFEckIsWUFBWTt1QkFBQyxZQUFZO2dCQU1oQixZQUFZO3NCQURyQixZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVNUIsWUFBWTtzQkFEckIsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHR5cGUgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RhYmxlLFxuICBPbkNoYW5nZXMsXG4gIFBMQVRGT1JNX0lELFxuICBTaW1wbGVDaGFuZ2VzLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3BIb3ZlclRva2VuIH0gZnJvbSAnLi9ob3Zlci50b2tlbic7XG5cbi8qKlxuICogV2UgdXNlIGEgc2VydmljZSBoZXJlIGFzIHRoaXMgdmFsdWUgaXMgYSBzaW5nbGV0b25cbiAqIGFuZCBhbGxvd3MgdXMgdG8gcmVnaXN0ZXIgdGhlIGRvbSBldmVudHMgb25jZS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuY2xhc3MgR2xvYmFsUG9pbnRlckV2ZW50cyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGdsb2JhbCBtb3VzZSBldmVudHMgc2hvdWxkIGJlIGlnbm9yZWQuXG4gICAqL1xuICBpZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZG9jdW1lbnQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBwbGF0Zm9ybSBpZC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gd2Ugb25seSB3YW50IHRvIHNldHVwIGV2ZW50cyBvbiB0aGUgY2xpZW50XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMuc2V0dXBHbG9iYWxUb3VjaEV2ZW50cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBHbG9iYWxUb3VjaEV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuaGFuZGxlR2xvYmFsUG9pbnRlckV2ZW50LmJpbmQodGhpcykpO1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLnNldEdsb2JhbElnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHNldEdsb2JhbElnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzID0gdHJ1ZTtcbiAgICAvLyBDbGVhciBnbG9iYWxJZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzIGFmdGVyIGEgc2hvcnQgdGltZW91dC4gaU9TIGZpcmVzIG9uUG9pbnRlckVudGVyXG4gICAgLy8gd2l0aCBwb2ludGVyVHlwZT1cIm1vdXNlXCIgaW1tZWRpYXRlbHkgYWZ0ZXIgb25Qb2ludGVyVXAgYW5kIGJlZm9yZSBvbkZvY3VzLiBPbiBvdGhlclxuICAgIC8vIGRldmljZXMgdGhhdCBkb24ndCBoYXZlIHRoaXMgcXVpcmssIHdlIGRvbid0IHdhbnQgdG8gaWdub3JlIGEgbW91c2UgaG92ZXIgc29tZXRpbWUgaW5cbiAgICAvLyB0aGUgZGlzdGFudCBmdXR1cmUgYmVjYXVzZSBhIHVzZXIgcHJldmlvdXNseSB0b3VjaGVkIHRoZSBlbGVtZW50LlxuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuaWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cyA9IGZhbHNlKSwgNTApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVHbG9iYWxQb2ludGVyRXZlbnQoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykge1xuICAgICAgdGhpcy5zZXRHbG9iYWxJZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzKCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgZm9yIG5vcm1hbGl6aW5nIGhvdmVyIGV2ZW50cyBhY3Jvc3MgdGhlIGRpZmZlcmVudCBicm93c2VycyBhbmQgZGV2aWNlcy5cbiAqXG4gKiBUaGlzIGlzIGFuIEFuZ3VsYXIgcG9ydCBvZiB0aGUgdXNlSG92ZXIgaG9vayBmcm9tXG4gKiByZWFjdC1hcmlhOiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9tYWluL3BhY2thZ2VzLyU0MHJlYWN0LWFyaWEvaW50ZXJhY3Rpb25zL3NyYy91c2VIb3Zlci50c1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbbmdwSG92ZXJdJyxcbiAgZXhwb3J0QXM6ICduZ3BIb3ZlcicsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwSG92ZXJUb2tlbiwgdXNlRXhpc3Rpbmc6IE5ncEhvdmVyIH1dLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmRhdGEtaG92ZXJdJzogJ2hvdmVyZWQoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncEhvdmVyIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZ2xvYmFsIHBvaW50ZXIgZXZlbnRzIGhhbmRsZXIuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbFBvaW50ZXJFdmVudHMgPSBpbmplY3QoR2xvYmFsUG9pbnRlckV2ZW50cyk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgaG92aW5nIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuICAgIGFsaWFzOiAnbmdwSG92ZXJEaXNhYmxlZCcsXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICAvKipcbiAgICogU3RvcmUgdGhlIGN1cnJlbnQgaG92ZXIgc3RhdGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgaG92ZXJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBlbGVtZW50IHNob3VsZCBpZ25vcmUgZW11bGF0ZWQgbW91c2UgZXZlbnRzLlxuICAgKi9cbiAgcHJpdmF0ZSBpZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXQgYW4gZXZlbnQgd2hlbiBob3ZlcmluZyBzdGFydHMuXG4gICAqL1xuICByZWFkb25seSBob3ZlclN0YXJ0ID0gb3V0cHV0PHZvaWQ+KHsgYWxpYXM6ICduZ3BIb3ZlclN0YXJ0JyB9KTtcblxuICAvKipcbiAgICogRW1pdCBhbiBldmVudCB3aGVuIGhvdmVyaW5nIGVuZHMuXG4gICAqL1xuICByZWFkb25seSBob3ZlckVuZCA9IG91dHB1dDx2b2lkPih7IGFsaWFzOiAnbmdwSG92ZXJFbmQnIH0pO1xuXG4gIC8qKlxuICAgKiBFbWl0IGFuIGV2ZW50IHdoZW4gdGhlIGhvdmVyIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICByZWFkb25seSBob3ZlckNoYW5nZSA9IG91dHB1dDxib29sZWFuPih7IGFsaWFzOiAnbmdwSG92ZXJDaGFuZ2UnIH0pO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoJ2Rpc2FibGVkJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAvLyBpZiB0aGUgY29tcG9uZW50IGlzIHN1ZGRlbmx5IGRpc2FibGVkIGFuZCBpcyBjdXJyZW50bHkgaG92ZXJlZFxuICAgICAgLy8gc3dpdGNoIHRvIHRoZSB1bmhvdmVyZWQgc3RhdGUuXG4gICAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXS5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5vbkhvdmVyRW5kKCdtb3VzZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHRoZSBob3ZlciBzdGFydCBldmVudHMuXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gcG9pbnRlclR5cGVcbiAgICovXG4gIHByaXZhdGUgb25Ib3ZlclN0YXJ0KGV2ZW50OiBFdmVudCwgcG9pbnRlclR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZGlzYWJsZWQoKSB8fFxuICAgICAgcG9pbnRlclR5cGUgPT09ICd0b3VjaCcgfHxcbiAgICAgIHRoaXMuaG92ZXJlZCgpIHx8XG4gICAgICAhKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudCk/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaG92ZXJlZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5ob3ZlclN0YXJ0LmVtaXQoKTtcbiAgICB0aGlzLmhvdmVyQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciB0aGUgaG92ZXIgZW5kIGV2ZW50cy5cbiAgICogQHBhcmFtIHBvaW50ZXJUeXBlXG4gICAqL1xuICBwcml2YXRlIG9uSG92ZXJFbmQocG9pbnRlclR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChwb2ludGVyVHlwZSA9PT0gJ3RvdWNoJyB8fCAhdGhpcy5ob3ZlcmVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhvdmVyZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmhvdmVyRW5kLmVtaXQoKTtcbiAgICB0aGlzLmhvdmVyQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigncG9pbnRlcmVudGVyJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIG9uUG9pbnRlckVudGVyKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5nbG9iYWxQb2ludGVyRXZlbnRzLmlnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMgJiYgZXZlbnQucG9pbnRlclR5cGUgPT09ICdtb3VzZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9uSG92ZXJTdGFydChldmVudCwgZXZlbnQucG9pbnRlclR5cGUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigncG9pbnRlcmxlYXZlJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIG9uUG9pbnRlckxlYXZlKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQoKSAmJiAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBFbGVtZW50KT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpKSB7XG4gICAgICB0aGlzLm9uSG92ZXJFbmQoZXZlbnQucG9pbnRlclR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnKVxuICBwcm90ZWN0ZWQgb25Ub3VjaFN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cyA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIG9uTW91c2VFbnRlcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzICYmICF0aGlzLmdsb2JhbFBvaW50ZXJFdmVudHMuaWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cykge1xuICAgICAgdGhpcy5vbkhvdmVyU3RhcnQoZXZlbnQsICdtb3VzZScpO1xuICAgIH1cblxuICAgIHRoaXMuaWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cyA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvbk1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQoKSAmJiAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBFbGVtZW50KT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpKSB7XG4gICAgICB0aGlzLm9uSG92ZXJFbmQoJ21vdXNlJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9pbnRlcmFjdGlvbnMvc3JjL2hvdmVyL2hvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLFdBQVcsRUFFWCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU5Qzs7O0dBR0c7QUFDSCxNQUdNLG1CQUFtQjtJQWdCdkI7UUFmQTs7V0FFRztRQUNILDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQUUzQzs7V0FFRztRQUNjLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFN0M7O1dBRUc7UUFDYyxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBR2hELDZDQUE2QztRQUM3QyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxJ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LEVBQUUsQ0FBQztZQUM5RixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDOzhHQTNIVSxRQUFRO2tHQUFSLFFBQVEsbWpCQUxSLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQzs7MkZBS25ELFFBQVE7a0JBVHBCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsVUFBVTtvQkFDcEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsVUFBVSxFQUFFLENBQUM7b0JBQzlELElBQUksRUFBRTt3QkFDSixtQkFBbUIsRUFBRSxXQUFXO3FCQUNqQztpQkFDRjs4QkEwRlcsY0FBYztzQkFEdkIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVTlCLGNBQWM7c0JBRHZCLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVE5QixZQUFZO3NCQURyQixZQUFZO3VCQUFDLFlBQVk7Z0JBTWhCLFlBQVk7c0JBRHJCLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVU1QixZQUFZO3NCQURyQixZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgdHlwZSB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdGFibGUsXG4gIE9uQ2hhbmdlcyxcbiAgUExBVEZPUk1fSUQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERpc2FibGVkIH0gZnJvbSAnbmctcHJpbWl0aXZlcy9pbnRlcm5hbCc7XG5pbXBvcnQgeyBOZ3BIb3ZlclRva2VuIH0gZnJvbSAnLi9ob3Zlci50b2tlbic7XG5cbi8qKlxuICogV2UgdXNlIGEgc2VydmljZSBoZXJlIGFzIHRoaXMgdmFsdWUgaXMgYSBzaW5nbGV0b25cbiAqIGFuZCBhbGxvd3MgdXMgdG8gcmVnaXN0ZXIgdGhlIGRvbSBldmVudHMgb25jZS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuY2xhc3MgR2xvYmFsUG9pbnRlckV2ZW50cyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGdsb2JhbCBtb3VzZSBldmVudHMgc2hvdWxkIGJlIGlnbm9yZWQuXG4gICAqL1xuICBpZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZG9jdW1lbnQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBwbGF0Zm9ybSBpZC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gd2Ugb25seSB3YW50IHRvIHNldHVwIGV2ZW50cyBvbiB0aGUgY2xpZW50XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMuc2V0dXBHbG9iYWxUb3VjaEV2ZW50cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBHbG9iYWxUb3VjaEV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuaGFuZGxlR2xvYmFsUG9pbnRlckV2ZW50LmJpbmQodGhpcykpO1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLnNldEdsb2JhbElnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHNldEdsb2JhbElnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzID0gdHJ1ZTtcbiAgICAvLyBDbGVhciBnbG9iYWxJZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzIGFmdGVyIGEgc2hvcnQgdGltZW91dC4gaU9TIGZpcmVzIG9uUG9pbnRlckVudGVyXG4gICAgLy8gd2l0aCBwb2ludGVyVHlwZT1cIm1vdXNlXCIgaW1tZWRpYXRlbHkgYWZ0ZXIgb25Qb2ludGVyVXAgYW5kIGJlZm9yZSBvbkZvY3VzLiBPbiBvdGhlclxuICAgIC8vIGRldmljZXMgdGhhdCBkb24ndCBoYXZlIHRoaXMgcXVpcmssIHdlIGRvbid0IHdhbnQgdG8gaWdub3JlIGEgbW91c2UgaG92ZXIgc29tZXRpbWUgaW5cbiAgICAvLyB0aGUgZGlzdGFudCBmdXR1cmUgYmVjYXVzZSBhIHVzZXIgcHJldmlvdXNseSB0b3VjaGVkIHRoZSBlbGVtZW50LlxuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuaWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cyA9IGZhbHNlKSwgNTApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVHbG9iYWxQb2ludGVyRXZlbnQoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykge1xuICAgICAgdGhpcy5zZXRHbG9iYWxJZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzKCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgZm9yIG5vcm1hbGl6aW5nIGhvdmVyIGV2ZW50cyBhY3Jvc3MgdGhlIGRpZmZlcmVudCBicm93c2VycyBhbmQgZGV2aWNlcy5cbiAqXG4gKiBUaGlzIGlzIGFuIEFuZ3VsYXIgcG9ydCBvZiB0aGUgdXNlSG92ZXIgaG9vayBmcm9tXG4gKiByZWFjdC1hcmlhOiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9tYWluL3BhY2thZ2VzLyU0MHJlYWN0LWFyaWEvaW50ZXJhY3Rpb25zL3NyYy91c2VIb3Zlci50c1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbbmdwSG92ZXJdJyxcbiAgZXhwb3J0QXM6ICduZ3BIb3ZlcicsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwSG92ZXJUb2tlbiwgdXNlRXhpc3Rpbmc6IE5ncEhvdmVyIH1dLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmRhdGEtaG92ZXJdJzogJ2hvdmVyZWQoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncEhvdmVyIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZ2xvYmFsIHBvaW50ZXIgZXZlbnRzIGhhbmRsZXIuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbFBvaW50ZXJFdmVudHMgPSBpbmplY3QoR2xvYmFsUG9pbnRlckV2ZW50cyk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgaG92aW5nIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuICAgIGFsaWFzOiAnbmdwSG92ZXJEaXNhYmxlZCcsXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSBkaXNhYmxlZCBzdGF0ZSBmcm9tIGFueSBwYXJlbnQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGlzRGlzYWJsZWQgPSBpbmplY3REaXNhYmxlZCh0aGlzLmRpc2FibGVkKTtcblxuICAvKipcbiAgICogU3RvcmUgdGhlIGN1cnJlbnQgaG92ZXIgc3RhdGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgaG92ZXJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBlbGVtZW50IHNob3VsZCBpZ25vcmUgZW11bGF0ZWQgbW91c2UgZXZlbnRzLlxuICAgKi9cbiAgcHJpdmF0ZSBpZ25vcmVFbXVsYXRlZE1vdXNlRXZlbnRzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXQgYW4gZXZlbnQgd2hlbiBob3ZlcmluZyBzdGFydHMuXG4gICAqL1xuICByZWFkb25seSBob3ZlclN0YXJ0ID0gb3V0cHV0PHZvaWQ+KHsgYWxpYXM6ICduZ3BIb3ZlclN0YXJ0JyB9KTtcblxuICAvKipcbiAgICogRW1pdCBhbiBldmVudCB3aGVuIGhvdmVyaW5nIGVuZHMuXG4gICAqL1xuICByZWFkb25seSBob3ZlckVuZCA9IG91dHB1dDx2b2lkPih7IGFsaWFzOiAnbmdwSG92ZXJFbmQnIH0pO1xuXG4gIC8qKlxuICAgKiBFbWl0IGFuIGV2ZW50IHdoZW4gdGhlIGhvdmVyIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICByZWFkb25seSBob3ZlckNoYW5nZSA9IG91dHB1dDxib29sZWFuPih7IGFsaWFzOiAnbmdwSG92ZXInIH0pO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoJ2Rpc2FibGVkJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAvLyBpZiB0aGUgY29tcG9uZW50IGlzIHN1ZGRlbmx5IGRpc2FibGVkIGFuZCBpcyBjdXJyZW50bHkgaG92ZXJlZFxuICAgICAgLy8gc3dpdGNoIHRvIHRoZSB1bmhvdmVyZWQgc3RhdGUuXG4gICAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXS5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5vbkhvdmVyRW5kKCdtb3VzZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHRoZSBob3ZlciBzdGFydCBldmVudHMuXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gcG9pbnRlclR5cGVcbiAgICovXG4gIHByaXZhdGUgb25Ib3ZlclN0YXJ0KGV2ZW50OiBFdmVudCwgcG9pbnRlclR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXNEaXNhYmxlZCgpIHx8XG4gICAgICBwb2ludGVyVHlwZSA9PT0gJ3RvdWNoJyB8fFxuICAgICAgdGhpcy5ob3ZlcmVkKCkgfHxcbiAgICAgICEoZXZlbnQuY3VycmVudFRhcmdldCBhcyBFbGVtZW50KT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5ob3ZlcmVkLnNldCh0cnVlKTtcbiAgICB0aGlzLmhvdmVyU3RhcnQuZW1pdCgpO1xuICAgIHRoaXMuaG92ZXJDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHRoZSBob3ZlciBlbmQgZXZlbnRzLlxuICAgKiBAcGFyYW0gcG9pbnRlclR5cGVcbiAgICovXG4gIHByaXZhdGUgb25Ib3ZlckVuZChwb2ludGVyVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHBvaW50ZXJUeXBlID09PSAndG91Y2gnIHx8ICF0aGlzLmhvdmVyZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaG92ZXJlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaG92ZXJFbmQuZW1pdCgpO1xuICAgIHRoaXMuaG92ZXJDaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdwb2ludGVyZW50ZXInLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Qb2ludGVyRW50ZXIoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdsb2JhbFBvaW50ZXJFdmVudHMuaWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cyAmJiBldmVudC5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub25Ib3ZlclN0YXJ0KGV2ZW50LCBldmVudC5wb2ludGVyVHlwZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Qb2ludGVyTGVhdmUoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKCkgJiYgKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudCk/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSkge1xuICAgICAgdGhpcy5vbkhvdmVyRW5kKGV2ZW50LnBvaW50ZXJUeXBlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JylcbiAgcHJvdGVjdGVkIG9uVG91Y2hTdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvbk1vdXNlRW50ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaWdub3JlRW11bGF0ZWRNb3VzZUV2ZW50cyAmJiAhdGhpcy5nbG9iYWxQb2ludGVyRXZlbnRzLmlnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMpIHtcbiAgICAgIHRoaXMub25Ib3ZlclN0YXJ0KGV2ZW50LCAnbW91c2UnKTtcbiAgICB9XG5cbiAgICB0aGlzLmlnbm9yZUVtdWxhdGVkTW91c2VFdmVudHMgPSBmYWxzZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Nb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQoKSAmJiAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBFbGVtZW50KT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpKSB7XG4gICAgICB0aGlzLm9uSG92ZXJFbmQoJ21vdXNlJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -11,4 +11,8 @@ export { NgpFocus } from './focus/focus.directive';
11
11
  export { NgpFocusToken } from './focus/focus.token';
12
12
  export { NgpFocusVisible } from './focus-visible/focus-visible.directive';
13
13
  export { NgpFocusVisibleToken } from './focus-visible/focus-visible.token';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2ludGVyYWN0aW9ucy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5leHBvcnQgeyBOZ3BIb3ZlciB9IGZyb20gJy4vaG92ZXIvaG92ZXIuZGlyZWN0aXZlJztcbmV4cG9ydCB7IE5ncEhvdmVyVG9rZW4sIGluamVjdEhvdmVyIH0gZnJvbSAnLi9ob3Zlci9ob3Zlci50b2tlbic7XG5leHBvcnQgeyBOZ3BGb2N1cyB9IGZyb20gJy4vZm9jdXMvZm9jdXMuZGlyZWN0aXZlJztcbmV4cG9ydCB7IE5ncEZvY3VzVG9rZW4gfSBmcm9tICcuL2ZvY3VzL2ZvY3VzLnRva2VuJztcbmV4cG9ydCB7IE5ncEZvY3VzVmlzaWJsZSB9IGZyb20gJy4vZm9jdXMtdmlzaWJsZS9mb2N1cy12aXNpYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBOZ3BGb2N1c1Zpc2libGVUb2tlbiB9IGZyb20gJy4vZm9jdXMtdmlzaWJsZS9mb2N1cy12aXNpYmxlLnRva2VuJztcbiJdfQ==
14
+ export { NgpPress } from './press/press.directive';
15
+ export { NgpPressToken } from './press/press.token';
16
+ export { NgpMove } from './move/move.directive';
17
+ export { NgpMoveToken } from './move/move.token';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2ludGVyYWN0aW9ucy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuZXhwb3J0IHsgTmdwSG92ZXIgfSBmcm9tICcuL2hvdmVyL2hvdmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBOZ3BIb3ZlclRva2VuLCBpbmplY3RIb3ZlciB9IGZyb20gJy4vaG92ZXIvaG92ZXIudG9rZW4nO1xuZXhwb3J0IHsgTmdwRm9jdXMgfSBmcm9tICcuL2ZvY3VzL2ZvY3VzLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBOZ3BGb2N1c1Rva2VuIH0gZnJvbSAnLi9mb2N1cy9mb2N1cy50b2tlbic7XG5leHBvcnQgeyBOZ3BGb2N1c1Zpc2libGUgfSBmcm9tICcuL2ZvY3VzLXZpc2libGUvZm9jdXMtdmlzaWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgTmdwRm9jdXNWaXNpYmxlVG9rZW4gfSBmcm9tICcuL2ZvY3VzLXZpc2libGUvZm9jdXMtdmlzaWJsZS50b2tlbic7XG5leHBvcnQgeyBOZ3BQcmVzcyB9IGZyb20gJy4vcHJlc3MvcHJlc3MuZGlyZWN0aXZlJztcbmV4cG9ydCB7IE5ncFByZXNzVG9rZW4gfSBmcm9tICcuL3ByZXNzL3ByZXNzLnRva2VuJztcbmV4cG9ydCB7IE5ncE1vdmUgfSBmcm9tICcuL21vdmUvbW92ZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgTmdwTW92ZVRva2VuIH0gZnJvbSAnLi9tb3ZlL21vdmUudG9rZW4nO1xuIl19
@@ -0,0 +1,216 @@
1
+ import { booleanAttribute, Directive, HostListener, input, output, signal } from '@angular/core';
2
+ import { injectDisabled } from 'ng-primitives/internal';
3
+ import { injectDisposables } from 'ng-primitives/utils';
4
+ import { NgpMoveToken } from './move.token';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Inspired by react-aria useMove hook:
8
+ * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/interactions/src/useMove.ts
9
+ */
10
+ export class NgpMove {
11
+ constructor() {
12
+ /**
13
+ * Access the disposable helper.
14
+ */
15
+ this.disposables = injectDisposables();
16
+ /**
17
+ * Whether movement is disabled.
18
+ */
19
+ this.disabled = input(false, {
20
+ alias: 'ngpMoveDisabled',
21
+ transform: booleanAttribute,
22
+ });
23
+ /**
24
+ * Access the disabled state from any parent.
25
+ */
26
+ this.isDisabled = injectDisabled(this.disabled);
27
+ /**
28
+ * Emit when the move event begins.
29
+ */
30
+ this.start = output({
31
+ alias: 'ngpMoveStart',
32
+ });
33
+ /**
34
+ * Emit when the element is moved.
35
+ */
36
+ this.move = output({
37
+ alias: 'ngpMove',
38
+ });
39
+ /**
40
+ * Emit when the move event ends.
41
+ */
42
+ this.end = output({
43
+ alias: 'ngpMoveEnd',
44
+ });
45
+ /**
46
+ * Whether the element is currently being moved.
47
+ */
48
+ this.isMoving = signal(false);
49
+ /**
50
+ * Store the last x position of the element.
51
+ */
52
+ this.x = null;
53
+ /**
54
+ * Store the last y position of the element.
55
+ */
56
+ this.y = null;
57
+ /**
58
+ * Store the id of the last pointer.
59
+ */
60
+ this.pointerId = null;
61
+ /**
62
+ * Store the disposable event listeners.
63
+ */
64
+ this.disposableListeners = [];
65
+ }
66
+ /**
67
+ * Handle a move start.
68
+ */
69
+ onMoveStart(event, pointerType) {
70
+ this.start.emit({
71
+ pointerType,
72
+ shiftKey: event.shiftKey,
73
+ ctrlKey: event.ctrlKey,
74
+ metaKey: event.metaKey,
75
+ altKey: event.altKey,
76
+ });
77
+ this.isMoving.set(true);
78
+ }
79
+ /**
80
+ * Handle a move event.
81
+ */
82
+ onMove(event, pointerType, deltaX, deltaY) {
83
+ if (deltaX === 0 && deltaY === 0) {
84
+ return;
85
+ }
86
+ this.move.emit({
87
+ deltaX,
88
+ deltaY,
89
+ pointerType,
90
+ shiftKey: event.shiftKey,
91
+ ctrlKey: event.ctrlKey,
92
+ metaKey: event.metaKey,
93
+ altKey: event.altKey,
94
+ });
95
+ }
96
+ /**
97
+ * Handle a move end.
98
+ */
99
+ onMoveEnd(event, pointerType) {
100
+ this.end.emit({
101
+ pointerType,
102
+ shiftKey: event.shiftKey,
103
+ ctrlKey: event.ctrlKey,
104
+ metaKey: event.metaKey,
105
+ altKey: event.altKey,
106
+ });
107
+ this.isMoving.set(false);
108
+ }
109
+ /**
110
+ * Handle the pointer down event.
111
+ */
112
+ onPointerDown(event) {
113
+ // ignore right-click or additional pointers
114
+ if (event.button !== 0 || this.pointerId !== null || this.isDisabled()) {
115
+ return;
116
+ }
117
+ // prevent the default behavior
118
+ event.preventDefault();
119
+ event.stopPropagation();
120
+ this.onMoveStart(event, event.pointerType);
121
+ // store the pointer id and initial position
122
+ this.pointerId = event.pointerId;
123
+ this.x = event.pageX;
124
+ this.y = event.pageY;
125
+ // add global event listeners
126
+ const pointerMove = this.disposables.addEventListener(window, 'pointermove', this.onPointerMove.bind(this), false);
127
+ const pointerUp = this.disposables.addEventListener(window, 'pointerup', this.onPointerUp.bind(this), false);
128
+ const pointerCancel = this.disposables.addEventListener(window, 'pointercancel', this.onPointerUp.bind(this), false);
129
+ // store the disposable event listeners
130
+ this.disposableListeners = [pointerMove, pointerUp, pointerCancel];
131
+ }
132
+ /**
133
+ * Handle the pointer up event.
134
+ */
135
+ onPointerUp(event) {
136
+ if (this.pointerId !== event.pointerId) {
137
+ return;
138
+ }
139
+ const pointerType = (event.pointerType ?? 'mouse');
140
+ this.onMoveEnd(event, pointerType);
141
+ this.pointerId = null;
142
+ this.disposableListeners.forEach(dispose => dispose());
143
+ }
144
+ /**
145
+ * Handle the pointer move event.
146
+ */
147
+ onPointerMove(event) {
148
+ if (this.pointerId !== event.pointerId) {
149
+ return;
150
+ }
151
+ // Problems with PointerEvent#movementX/movementY:
152
+ // 1. it is always 0 on macOS Safari.
153
+ // 2. On Chrome Android, it's scaled by devicePixelRatio, but not on Chrome macOS
154
+ this.onMove(event, event.pointerType, event.pageX - (this.x ?? 0), event.pageY - (this.y ?? 0));
155
+ this.x = event.pageX;
156
+ this.y = event.pageY;
157
+ }
158
+ triggerKeyboardMove(event, deltaX, deltaY) {
159
+ if (this.isDisabled()) {
160
+ return;
161
+ }
162
+ this.onMoveStart(event, 'keyboard');
163
+ this.onMove(event, 'keyboard', deltaX, deltaY);
164
+ this.onMoveEnd(event, 'keyboard');
165
+ }
166
+ onArrowUp(event) {
167
+ event.preventDefault();
168
+ event.stopPropagation();
169
+ this.triggerKeyboardMove(event, 0, -1);
170
+ }
171
+ onArrowDown(event) {
172
+ event.preventDefault();
173
+ event.stopPropagation();
174
+ this.triggerKeyboardMove(event, 0, 1);
175
+ }
176
+ onArrowLeft(event) {
177
+ event.preventDefault();
178
+ event.stopPropagation();
179
+ this.triggerKeyboardMove(event, -1, 0);
180
+ }
181
+ onArrowRight(event) {
182
+ event.preventDefault();
183
+ event.stopPropagation();
184
+ this.triggerKeyboardMove(event, 1, 0);
185
+ }
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpMove, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
187
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpMove, isStandalone: true, selector: "[ngpMove]", inputs: { disabled: { classPropertyName: "disabled", publicName: "ngpMoveDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { start: "ngpMoveStart", move: "ngpMove", end: "ngpMoveEnd" }, host: { listeners: { "pointerdown": "onPointerDown($event)", "keydown.ArrowUp": "onArrowUp($event)", "keydown.ArrowDown": "onArrowDown($event)", "keydown.ArrowLeft": "onArrowLeft($event)", "keydown.ArrowRight": "onArrowRight($event)" }, properties: { "attr.data-move": "isMoving()" } }, providers: [{ provide: NgpMoveToken, useExisting: NgpMove }], exportAs: ["ngpMove"], ngImport: i0 }); }
188
+ }
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpMove, decorators: [{
190
+ type: Directive,
191
+ args: [{
192
+ standalone: true,
193
+ selector: '[ngpMove]',
194
+ exportAs: 'ngpMove',
195
+ providers: [{ provide: NgpMoveToken, useExisting: NgpMove }],
196
+ host: {
197
+ '[attr.data-move]': 'isMoving()',
198
+ },
199
+ }]
200
+ }], propDecorators: { onPointerDown: [{
201
+ type: HostListener,
202
+ args: ['pointerdown', ['$event']]
203
+ }], onArrowUp: [{
204
+ type: HostListener,
205
+ args: ['keydown.ArrowUp', ['$event']]
206
+ }], onArrowDown: [{
207
+ type: HostListener,
208
+ args: ['keydown.ArrowDown', ['$event']]
209
+ }], onArrowLeft: [{
210
+ type: HostListener,
211
+ args: ['keydown.ArrowLeft', ['$event']]
212
+ }], onArrowRight: [{
213
+ type: HostListener,
214
+ args: ['keydown.ArrowRight', ['$event']]
215
+ }] } });
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2ludGVyYWN0aW9ucy9zcmMvbW92ZS9tb3ZlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFNUM7OztHQUdHO0FBV0gsTUFBTSxPQUFPLE9BQU87SUFUcEI7UUFVRTs7V0FFRztRQUNjLGdCQUFXLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUVuRDs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQXdCLEtBQUssRUFBRTtZQUN0RCxLQUFLLEVBQUUsaUJBQWlCO1lBQ3hCLFNBQVMsRUFBRSxnQkFBZ0I7U0FDNUIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYyxlQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1RDs7V0FFRztRQUNNLFVBQUssR0FBRyxNQUFNLENBQW9CO1lBQ3pDLEtBQUssRUFBRSxjQUFjO1NBQ3RCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ00sU0FBSSxHQUFHLE1BQU0sQ0FBZTtZQUNuQyxLQUFLLEVBQUUsU0FBUztTQUNqQixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNNLFFBQUcsR0FBRyxNQUFNLENBQWtCO1lBQ3JDLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ0ssYUFBUSxHQUFHLE1B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RUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBR1MsWUFBWSxDQUFDLEtBQW9CO1FBQ3pDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs4R0EzT1UsT0FBTztrR0FBUCxPQUFPLG1qQkFMUCxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUM7OzJGQUtqRCxPQUFPO2tCQVRuQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLFNBQVMsRUFBRSxDQUFDO29CQUM1RCxJQUFJLEVBQUU7d0JBQ0osa0JBQWtCLEVBQUUsWUFBWTtxQkFDakM7aUJBQ0Y7OEJBMEhXLGFBQWE7c0JBRHRCLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTBGN0IsU0FBUztzQkFEbEIsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRakMsV0FBVztzQkFEcEIsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRbkMsV0FBVztzQkFEcEIsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRbkMsWUFBWTtzQkFEckIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0RGlzYWJsZWQgfSBmcm9tICduZy1wcmltaXRpdmVzL2ludGVybmFsJztcbmltcG9ydCB7IGluamVjdERpc3Bvc2FibGVzIH0gZnJvbSAnbmctcHJpbWl0aXZlcy91dGlscyc7XG5pbXBvcnQgeyBOZ3BNb3ZlVG9rZW4gfSBmcm9tICcuL21vdmUudG9rZW4nO1xuXG4vKipcbiAqIEluc3BpcmVkIGJ5IHJlYWN0LWFyaWEgdXNlTW92ZSBob29rOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlL3JlYWN0LXNwZWN0cnVtL2Jsb2IvbWFpbi9wYWNrYWdlcy8lNDByZWFjdC1hcmlhL2ludGVyYWN0aW9ucy9zcmMvdXNlTW92ZS50c1xuICovXG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BNb3ZlXScsXG4gIGV4cG9ydEFzOiAnbmdwTW92ZScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwTW92ZVRva2VuLCB1c2VFeGlzdGluZzogTmdwTW92ZSB9XSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5kYXRhLW1vdmVdJzogJ2lzTW92aW5nKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBOZ3BNb3ZlIHtcbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZGlzcG9zYWJsZSBoZWxwZXIuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc3Bvc2FibGVzID0gaW5qZWN0RGlzcG9zYWJsZXMoKTtcblxuICAvKipcbiAgICogV2hldGhlciBtb3ZlbWVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuICAgIGFsaWFzOiAnbmdwTW92ZURpc2FibGVkJyxcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGRpc2FibGVkIHN0YXRlIGZyb20gYW55IHBhcmVudC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IGluamVjdERpc2FibGVkKHRoaXMuZGlzYWJsZWQpO1xuXG4gIC8qKlxuICAgKiBFbWl0IHdoZW4gdGhlIG1vdmUgZXZlbnQgYmVnaW5zLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnQgPSBvdXRwdXQ8TmdwTW92ZVN0YXJ0RXZlbnQ+KHtcbiAgICBhbGlhczogJ25ncE1vdmVTdGFydCcsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBFbWl0IHdoZW4gdGhlIGVsZW1lbnQgaXMgbW92ZWQuXG4gICAqL1xuICByZWFkb25seSBtb3ZlID0gb3V0cHV0PE5ncE1vdmVFdmVudD4oe1xuICAgIGFsaWFzOiAnbmdwTW92ZScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBFbWl0IHdoZW4gdGhlIG1vdmUgZXZlbnQgZW5kcy5cbiAgICovXG4gIHJlYWRvbmx5IGVuZCA9IG91dHB1dDxOZ3BNb3ZlRW5kRXZlbnQ+KHtcbiAgICBhbGlhczogJ25ncE1vdmVFbmQnLFxuICB9KTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZWxlbWVudCBpcyBjdXJyZW50bHkgYmVpbmcgbW92ZWQuXG4gICAqL1xuICBwcml2YXRlIGlzTW92aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKipcbiAgICogU3RvcmUgdGhlIGxhc3QgeCBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgeDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFN0b3JlIHRoZSBsYXN0IHkgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIHk6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTdG9yZSB0aGUgaWQgb2YgdGhlIGxhc3QgcG9pbnRlci5cbiAgICovXG4gIHByaXZhdGUgcG9pbnRlcklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogU3RvcmUgdGhlIGRpc3Bvc2FibGUgZXZlbnQgbGlzdGVuZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBkaXNwb3NhYmxlTGlzdGVuZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBIYW5kbGUgYSBtb3ZlIHN0YXJ0LlxuICAgKi9cbiAgcHJpdmF0ZSBvbk1vdmVTdGFydChldmVudDogUG9pbnRlckV2ZW50IHwgS2V5Ym9hcmRFdmVudCwgcG9pbnRlclR5cGU6IFBvaW50ZXJUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydC5lbWl0KHtcbiAgICAgIHBvaW50ZXJUeXBlLFxuICAgICAgc2hpZnRLZXk6IGV2ZW50LnNoaWZ0S2V5LFxuICAgICAgY3RybEtleTogZXZlbnQuY3RybEtleSxcbiAgICAgIG1ldGFLZXk6IGV2ZW50Lm1ldGFLZXksXG4gICAgICBhbHRLZXk6IGV2ZW50LmFsdEtleSxcbiAgICB9KTtcbiAgICB0aGlzLmlzTW92aW5nLnNldCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYSBtb3ZlIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBvbk1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJFdmVudCB8IEtleWJvYXJkRXZlbnQsXG4gICAgcG9pbnRlclR5cGU6IFBvaW50ZXJUeXBlLFxuICAgIGRlbHRhWDogbnVtYmVyLFxuICAgIGRlbHRhWTogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICBpZiAoZGVsdGFYID09PSAwICYmIGRlbHRhWSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW92ZS5lbWl0KHtcbiAgICAgIGRlbHRhWCxcbiAgICAgIGRlbHRhWSxcbiAgICAgIHBvaW50ZXJUeXBlLFxuICAgICAgc2hpZnRLZXk6IGV2ZW50LnNoaWZ0S2V5LFxuICAgICAgY3RybEtleTogZXZlbnQuY3RybEtleSxcbiAgICAgIG1ldGFLZXk6IGV2ZW50Lm1ldGFLZXksXG4gICAgICBhbHRLZXk6IGV2ZW50LmFsdEtleSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYSBtb3ZlIGVuZC5cbiAgICovXG4gIHByaXZhdGUgb25Nb3ZlRW5kKGV2ZW50OiBQb2ludGVyRXZlbnQgfCBLZXlib2FyZEV2ZW50LCBwb2ludGVyVHlwZTogUG9pbnRlclR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLmVuZC5lbWl0KHtcbiAgICAgIHBvaW50ZXJUeXBlLFxuICAgICAgc2hpZnRLZXk6IGV2ZW50LnNoaWZ0S2V5LFxuICAgICAgY3RybEtleTogZXZlbnQuY3RybEtleSxcbiAgICAgIG1ldGFLZXk6IGV2ZW50Lm1ldGFLZXksXG4gICAgICBhbHRLZXk6IGV2ZW50LmFsdEtleSxcbiAgICB9KTtcbiAgICB0aGlzLmlzTW92aW5nLnNldChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBwb2ludGVyIGRvd24gZXZlbnQuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdwb2ludGVyZG93bicsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvblBvaW50ZXJEb3duKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBpZ25vcmUgcmlnaHQtY2xpY2sgb3IgYWRkaXRpb25hbCBwb2ludGVyc1xuICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwgdGhpcy5wb2ludGVySWQgIT09IG51bGwgfHwgdGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBwcmV2ZW50IHRoZSBkZWZhdWx0IGJlaGF2aW9yXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMub25Nb3ZlU3RhcnQoZXZlbnQsIGV2ZW50LnBvaW50ZXJUeXBlIGFzIFBvaW50ZXJUeXBlKTtcblxuICAgIC8vIHN0b3JlIHRoZSBwb2ludGVyIGlkIGFuZCBpbml0aWFsIHBvc2l0aW9uXG4gICAgdGhpcy5wb2ludGVySWQgPSBldmVudC5wb2ludGVySWQ7XG4gICAgdGhpcy54ID0gZXZlbnQucGFnZVg7XG4gICAgdGhpcy55ID0gZXZlbnQucGFnZVk7XG5cbiAgICAvLyBhZGQgZ2xvYmFsIGV2ZW50IGxpc3RlbmVyc1xuICAgIGNvbnN0IHBvaW50ZXJNb3ZlID0gdGhpcy5kaXNwb3NhYmxlcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgd2luZG93LFxuICAgICAgJ3BvaW50ZXJtb3ZlJyxcbiAgICAgIHRoaXMub25Qb2ludGVyTW92ZS5iaW5kKHRoaXMpIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgICBmYWxzZSxcbiAgICApO1xuXG4gICAgY29uc3QgcG9pbnRlclVwID0gdGhpcy5kaXNwb3NhYmxlcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgd2luZG93LFxuICAgICAgJ3BvaW50ZXJ1cCcsXG4gICAgICB0aGlzLm9uUG9pbnRlclVwLmJpbmQodGhpcykgYXMgRXZlbnRMaXN0ZW5lcixcbiAgICAgIGZhbHNlLFxuICAgICk7XG5cbiAgICBjb25zdCBwb2ludGVyQ2FuY2VsID0gdGhpcy5kaXNwb3NhYmxlcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgd2luZG93LFxuICAgICAgJ3BvaW50ZXJjYW5jZWwnLFxuICAgICAgdGhpcy5vblBvaW50ZXJVcC5iaW5kKHRoaXMpIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgICBmYWxzZSxcbiAgICApO1xuXG4gICAgLy8gc3RvcmUgdGhlIGRpc3Bvc2FibGUgZXZlbnQgbGlzdGVuZXJzXG4gICAgdGhpcy5kaXNwb3NhYmxlTGlzdGVuZXJzID0gW3BvaW50ZXJNb3ZlLCBwb2ludGVyVXAsIHBvaW50ZXJDYW5jZWxdO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcG9pbnRlciB1cCBldmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBvblBvaW50ZXJVcChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwb2ludGVyVHlwZSA9IChldmVudC5wb2ludGVyVHlwZSA/PyAnbW91c2UnKSBhcyBQb2ludGVyVHlwZTtcbiAgICB0aGlzLm9uTW92ZUVuZChldmVudCwgcG9pbnRlclR5cGUpO1xuICAgIHRoaXMucG9pbnRlcklkID0gbnVsbDtcbiAgICB0aGlzLmRpc3Bvc2FibGVMaXN0ZW5lcnMuZm9yRWFjaChkaXNwb3NlID0+IGRpc3Bvc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBwb2ludGVyIG1vdmUgZXZlbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25Qb2ludGVyTW92ZShldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQcm9ibGVtcyB3aXRoIFBvaW50ZXJFdmVudCNtb3ZlbWVudFgvbW92ZW1lbnRZOlxuICAgIC8vIDEuIGl0IGlzIGFsd2F5cyAwIG9uIG1hY09TIFNhZmFyaS5cbiAgICAvLyAyLiBPbiBDaHJvbWUgQW5kcm9pZCwgaXQncyBzY2FsZWQgYnkgZGV2aWNlUGl4ZWxSYXRpbywgYnV0IG5vdCBvbiBDaHJvbWUgbWFjT1NcbiAgICB0aGlzLm9uTW92ZShcbiAgICAgIGV2ZW50LFxuICAgICAgZXZlbnQucG9pbnRlclR5cGUgYXMgUG9pbnRlclR5cGUsXG4gICAgICBldmVudC5wYWdlWCAtICh0aGlzLnggPz8gMCksXG4gICAgICBldmVudC5wYWdlWSAtICh0aGlzLnkgPz8gMCksXG4gICAgKTtcbiAgICB0aGlzLnggPSBldmVudC5wYWdlWDtcbiAgICB0aGlzLnkgPSBldmVudC5wYWdlWTtcbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlcktleWJvYXJkTW92ZShldmVudDogS2V5Ym9hcmRFdmVudCwgZGVsdGFYOiBudW1iZXIsIGRlbHRhWTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbk1vdmVTdGFydChldmVudCwgJ2tleWJvYXJkJyk7XG4gICAgdGhpcy5vbk1vdmUoZXZlbnQsICdrZXlib2FyZCcsIGRlbHRhWCwgZGVsdGFZKTtcbiAgICB0aGlzLm9uTW92ZUVuZChldmVudCwgJ2tleWJvYXJkJyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFycm93VXAnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25BcnJvd1VwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRyaWdnZXJLZXlib2FyZE1vdmUoZXZlbnQsIDAsIC0xKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIG9uQXJyb3dEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRyaWdnZXJLZXlib2FyZE1vdmUoZXZlbnQsIDAsIDEpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BcnJvd0xlZnQnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25BcnJvd0xlZnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudHJpZ2dlcktleWJvYXJkTW92ZShldmVudCwgLTEsIDApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BcnJvd1JpZ2h0JywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIG9uQXJyb3dSaWdodChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy50cmlnZ2VyS2V5Ym9hcmRNb3ZlKGV2ZW50LCAxLCAwKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgTmdwTW92ZUJhc2VFdmVudCB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBldmVudCB3YXMgdHJpZ2dlcmVkIGJ5IGEgbW91c2Ugb3Iga2V5Ym9hcmQgZXZlbnQuXG4gICAqL1xuICBwb2ludGVyVHlwZTogUG9pbnRlclR5cGU7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzaGlmdCBrZXkgd2FzIHByZXNzZWQgZHVyaW5nIHRoZSBldmVudC5cbiAgICovXG4gIHNoaWZ0S2V5OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgY29udHJvbCBrZXkgd2FzIHByZXNzZWQgZHVyaW5nIHRoZSBldmVudC5cbiAgICovXG4gIGN0cmxLZXk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBtZXRhIGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhlIGV2ZW50LlxuICAgKi9cbiAgbWV0YUtleTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGFsdCBrZXkgd2FzIHByZXNzZWQgZHVyaW5nIHRoZSBldmVudC5cbiAgICovXG4gIGFsdEtleTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgTmdwTW92ZVN0YXJ0RXZlbnQgPSBOZ3BNb3ZlQmFzZUV2ZW50O1xuZXhwb3J0IHR5cGUgTmdwTW92ZUVuZEV2ZW50ID0gTmdwTW92ZUJhc2VFdmVudDtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3BNb3ZlRXZlbnQgZXh0ZW5kcyBOZ3BNb3ZlQmFzZUV2ZW50IHtcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgcGl4ZWxzIG1vdmVkIGluIHRoZSB4LWF4aXMuXG4gICAqL1xuICBkZWx0YVg6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgcGl4ZWxzIG1vdmVkIGluIHRoZSB5LWF4aXMuXG4gICAqL1xuICBkZWx0YVk6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgUG9pbnRlclR5cGUgPSAnbW91c2UnIHwgJ3BlbicgfCAndG91Y2gnIHwgJ2tleWJvYXJkJyB8ICd2aXJ0dWFsJztcbiJdfQ==
@@ -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 NgpMoveToken = new InjectionToken('NgpMoveToken');
10
+ /**
11
+ * Inject the Move directive instance
12
+ */
13
+ export function injectMove() {
14
+ return inject(NgpMoveToken);
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvaW50ZXJhY3Rpb25zL3NyYy9tb3ZlL21vdmUudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFVLGNBQWMsQ0FBQyxDQUFDO0FBRXhFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE5ncE1vdmUgfSBmcm9tICcuL21vdmUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IE5ncE1vdmVUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3BNb3ZlPignTmdwTW92ZVRva2VuJyk7XG5cbi8qKlxuICogSW5qZWN0IHRoZSBNb3ZlIGRpcmVjdGl2ZSBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TW92ZSgpOiBOZ3BNb3ZlIHtcbiAgcmV0dXJuIGluamVjdChOZ3BNb3ZlVG9rZW4pO1xufVxuIl19
@@ -0,0 +1,118 @@
1
+ import { Directive, ElementRef, HostListener, booleanAttribute, inject, input, output, signal, } from '@angular/core';
2
+ import { injectDisabled } from 'ng-primitives/internal';
3
+ import { injectDisposables } from 'ng-primitives/utils';
4
+ import { NgpPressToken } from './press.token';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * This was inpsired by Headless UI's active-press hook:
8
+ * https://github.com/tailwindlabs/headlessui/blob/main/packages/%40headlessui-react/src/hooks/use-active-press.tsx
9
+ */
10
+ export class NgpPress {
11
+ constructor() {
12
+ /**
13
+ * Access the HTML Element.
14
+ */
15
+ this.element = inject(ElementRef);
16
+ /**
17
+ * Access the disposables.
18
+ */
19
+ this.disposables = injectDisposables();
20
+ /**
21
+ * Whether listening for press events is disabled.
22
+ */
23
+ this.disabled = input(false, {
24
+ alias: 'ngpPressDisabled',
25
+ transform: booleanAttribute,
26
+ });
27
+ /**
28
+ * Access the disabled state from any parent.
29
+ */
30
+ this.isDisabled = injectDisabled(this.disabled);
31
+ /**
32
+ * Emit when the press begins.
33
+ */
34
+ this.pressStart = output({
35
+ alias: 'ngpPressStart',
36
+ });
37
+ /**
38
+ * Emit when the press ends.
39
+ */
40
+ this.pressEnd = output({
41
+ alias: 'ngpPressEnd',
42
+ });
43
+ /**
44
+ * Emit when the press changes.
45
+ */
46
+ this.pressChange = output({
47
+ alias: 'ngpPress',
48
+ });
49
+ /**
50
+ * The press state.
51
+ */
52
+ this.pressed = signal(false);
53
+ /**
54
+ * Store the list of disposables.
55
+ */
56
+ this.disposableListeners = [];
57
+ }
58
+ /**
59
+ * Reset the press state.
60
+ */
61
+ reset() {
62
+ // if we are not pressing, then do nothing
63
+ if (!this.pressed()) {
64
+ return;
65
+ }
66
+ // clear any existing disposables
67
+ this.disposableListeners.forEach(dispose => dispose());
68
+ this.pressed.set(false);
69
+ this.pressEnd.emit();
70
+ this.pressChange.emit(false);
71
+ }
72
+ onPointerDown() {
73
+ if (this.isDisabled()) {
74
+ return;
75
+ }
76
+ // clear any existing disposables
77
+ this.disposableListeners.forEach(dispose => dispose());
78
+ // update the press state
79
+ this.pressed.set(true);
80
+ this.pressStart.emit();
81
+ this.pressChange.emit(true);
82
+ // setup global event listeners to catch events on elements outside the directive
83
+ const ownerDocument = this.element.nativeElement.ownerDocument ?? document;
84
+ // if the pointer up event happens on any elements, then we are no longer pressing on this element
85
+ const pointerUp = this.disposables.addEventListener(ownerDocument, 'pointerup', this.reset.bind(this), false);
86
+ // Instead of relying on the `pointerleave` event, which is not consistently called on iOS Safari,
87
+ // we use the `pointermove` event to determine if we are still "pressing".
88
+ // By checking if the target is still within the element, we can determine if the press is ongoing.
89
+ const pointerMove = this.disposables.addEventListener(ownerDocument, 'pointermove', this.onPointerMove.bind(this), false);
90
+ // if the pointer is cancelled, then we are no longer pressing on this element
91
+ const pointerCancel = this.disposables.addEventListener(ownerDocument, 'pointercancel', this.reset.bind(this), false);
92
+ this.disposableListeners = [pointerUp, pointerMove, pointerCancel];
93
+ }
94
+ onPointerMove(event) {
95
+ if (this.element.nativeElement !== event.target &&
96
+ !this.element.nativeElement.contains(event.target)) {
97
+ this.reset();
98
+ }
99
+ }
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpPress, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
101
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpPress, isStandalone: true, selector: "[ngpPress]", inputs: { disabled: { classPropertyName: "disabled", publicName: "ngpPressDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressStart: "ngpPressStart", pressEnd: "ngpPressEnd", pressChange: "ngpPress" }, host: { listeners: { "pointerdown": "onPointerDown()" }, properties: { "attr.data-press": "pressed()" } }, providers: [{ provide: NgpPressToken, useExisting: NgpPress }], exportAs: ["ngpPress"], ngImport: i0 }); }
102
+ }
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpPress, decorators: [{
104
+ type: Directive,
105
+ args: [{
106
+ standalone: true,
107
+ selector: '[ngpPress]',
108
+ exportAs: 'ngpPress',
109
+ providers: [{ provide: NgpPressToken, useExisting: NgpPress }],
110
+ host: {
111
+ '[attr.data-press]': 'pressed()',
112
+ },
113
+ }]
114
+ }], propDecorators: { onPointerDown: [{
115
+ type: HostListener,
116
+ args: ['pointerdown']
117
+ }] } });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc3MuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9pbnRlcmFjdGlvbnMvc3JjL3ByZXNzL3ByZXNzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFOUM7OztHQUdHO0FBV0gsTUFBTSxPQUFPLFFBQVE7SUFUckI7UUFVRTs7V0FFRztRQUNjLFlBQU8sR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBRXZFOztXQUVHO1FBQ2MsZ0JBQVcsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO1FBRW5EOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1lBQ3RELEtBQUssRUFBRSxrQkFBa0I7WUFDekIsU0FBUyxFQUFFLGdCQUFnQjtTQUM1QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNjLGVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVEOztXQUVHO1FBQ00sZUFBVSxHQUFHLE1BQU0sQ0FBTztZQUNqQyxLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNNLGFBQVEsR0FBRyxNQUFNLENBQU87WUFDL0IsS0FBSyxFQUFFLGFBQWE7U0FDckIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDTSxnQkFBVyxHQUFH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QUFFLFlBQVk7b0JBQ3RCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxVQUFVLEVBQUUsQ0FBQztvQkFDOUQsSUFBSSxFQUFFO3dCQUNKLG1CQUFtQixFQUFFLFdBQVc7cUJBQ2pDO2lCQUNGOzhCQXlFVyxhQUFhO3NCQUR0QixZQUFZO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3REaXNhYmxlZCB9IGZyb20gJ25nLXByaW1pdGl2ZXMvaW50ZXJuYWwnO1xuaW1wb3J0IHsgaW5qZWN0RGlzcG9zYWJsZXMgfSBmcm9tICduZy1wcmltaXRpdmVzL3V0aWxzJztcbmltcG9ydCB7IE5ncFByZXNzVG9rZW4gfSBmcm9tICcuL3ByZXNzLnRva2VuJztcblxuLyoqXG4gKiBUaGlzIHdhcyBpbnBzaXJlZCBieSBIZWFkbGVzcyBVSSdzIGFjdGl2ZS1wcmVzcyBob29rOlxuICogaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy9oZWFkbGVzc3VpL2Jsb2IvbWFpbi9wYWNrYWdlcy8lNDBoZWFkbGVzc3VpLXJlYWN0L3NyYy9ob29rcy91c2UtYWN0aXZlLXByZXNzLnRzeFxuICovXG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BQcmVzc10nLFxuICBleHBvcnRBczogJ25ncFByZXNzJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOZ3BQcmVzc1Rva2VuLCB1c2VFeGlzdGluZzogTmdwUHJlc3MgfV0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuZGF0YS1wcmVzc10nOiAncHJlc3NlZCgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwUHJlc3Mge1xuICAvKipcbiAgICogQWNjZXNzIHRoZSBIVE1MIEVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGRpc3Bvc2FibGVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwb3NhYmxlcyA9IGluamVjdERpc3Bvc2FibGVzKCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgbGlzdGVuaW5nIGZvciBwcmVzcyBldmVudHMgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHtcbiAgICBhbGlhczogJ25ncFByZXNzRGlzYWJsZWQnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZGlzYWJsZWQgc3RhdGUgZnJvbSBhbnkgcGFyZW50LlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpc0Rpc2FibGVkID0gaW5qZWN0RGlzYWJsZWQodGhpcy5kaXNhYmxlZCk7XG5cbiAgLyoqXG4gICAqIEVtaXQgd2hlbiB0aGUgcHJlc3MgYmVnaW5zLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlc3NTdGFydCA9IG91dHB1dDx2b2lkPih7XG4gICAgYWxpYXM6ICduZ3BQcmVzc1N0YXJ0JyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEVtaXQgd2hlbiB0aGUgcHJlc3MgZW5kcy5cbiAgICovXG4gIHJlYWRvbmx5IHByZXNzRW5kID0gb3V0cHV0PHZvaWQ+KHtcbiAgICBhbGlhczogJ25ncFByZXNzRW5kJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEVtaXQgd2hlbiB0aGUgcHJlc3MgY2hhbmdlcy5cbiAgICovXG4gIHJlYWRvbmx5IHByZXNzQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KHtcbiAgICBhbGlhczogJ25ncFByZXNzJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVzcyBzdGF0ZS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwcmVzc2VkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogUmVzZXQgdGhlIHByZXNzIHN0YXRlLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNldCgpOiB2b2lkIHtcbiAgICAvLyBpZiB3ZSBhcmUgbm90IHByZXNzaW5nLCB0aGVuIGRvIG5vdGhpbmdcbiAgICBpZiAoIXRoaXMucHJlc3NlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gY2xlYXIgYW55IGV4aXN0aW5nIGRpc3Bvc2FibGVzXG4gICAgdGhpcy5kaXNwb3NhYmxlTGlzdGVuZXJzLmZvckVhY2goZGlzcG9zZSA9PiBkaXNwb3NlKCkpO1xuICAgIHRoaXMucHJlc3NlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucHJlc3NFbmQuZW1pdCgpO1xuICAgIHRoaXMucHJlc3NDaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgdGhlIGxpc3Qgb2YgZGlzcG9zYWJsZXMuXG4gICAqL1xuICBwcml2YXRlIGRpc3Bvc2FibGVMaXN0ZW5lcnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgQEhvc3RMaXN0ZW5lcigncG9pbnRlcmRvd24nKVxuICBwcm90ZWN0ZWQgb25Qb2ludGVyRG93bigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBjbGVhciBhbnkgZXhpc3RpbmcgZGlzcG9zYWJsZXNcbiAgICB0aGlzLmRpc3Bvc2FibGVMaXN0ZW5lcnMuZm9yRWFjaChkaXNwb3NlID0+IGRpc3Bvc2UoKSk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIHByZXNzIHN0YXRlXG4gICAgdGhpcy5wcmVzc2VkLnNldCh0cnVlKTtcbiAgICB0aGlzLnByZXNzU3RhcnQuZW1pdCgpO1xuICAgIHRoaXMucHJlc3NDaGFuZ2UuZW1pdCh0cnVlKTtcblxuICAgIC8vIHNldHVwIGdsb2JhbCBldmVudCBsaXN0ZW5lcnMgdG8gY2F0Y2ggZXZlbnRzIG9uIGVsZW1lbnRzIG91dHNpZGUgdGhlIGRpcmVjdGl2ZVxuICAgIGNvbnN0IG93bmVyRG9jdW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50ID8/IGRvY3VtZW50O1xuXG4gICAgLy8gaWYgdGhlIHBvaW50ZXIgdXAgZXZlbnQgaGFwcGVucyBvbiBhbnkgZWxlbWVudHMsIHRoZW4gd2UgYXJlIG5vIGxvbmdlciBwcmVzc2luZyBvbiB0aGlzIGVsZW1lbnRcbiAgICBjb25zdCBwb2ludGVyVXAgPSB0aGlzLmRpc3Bvc2FibGVzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBvd25lckRvY3VtZW50LFxuICAgICAgJ3BvaW50ZXJ1cCcsXG4gICAgICB0aGlzLnJlc2V0LmJpbmQodGhpcyksXG4gICAgICBmYWxzZSxcbiAgICApO1xuXG4gICAgLy8gSW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBgcG9pbnRlcmxlYXZlYCBldmVudCwgd2hpY2ggaXMgbm90IGNvbnNpc3RlbnRseSBjYWxsZWQgb24gaU9TIFNhZmFyaSxcbiAgICAvLyB3ZSB1c2UgdGhlIGBwb2ludGVybW92ZWAgZXZlbnQgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBzdGlsbCBcInByZXNzaW5nXCIuXG4gICAgLy8gQnkgY2hlY2tpbmcgaWYgdGhlIHRhcmdldCBpcyBzdGlsbCB3aXRoaW4gdGhlIGVsZW1lbnQsIHdlIGNhbiBkZXRlcm1pbmUgaWYgdGhlIHByZXNzIGlzIG9uZ29pbmcuXG4gICAgY29uc3QgcG9pbnRlck1vdmUgPSB0aGlzLmRpc3Bvc2FibGVzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBvd25lckRvY3VtZW50LFxuICAgICAgJ3BvaW50ZXJtb3ZlJyxcbiAgICAgIHRoaXMub25Qb2ludGVyTW92ZS5iaW5kKHRoaXMpIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgICBmYWxzZSxcbiAgICApO1xuXG4gICAgLy8gaWYgdGhlIHBvaW50ZXIgaXMgY2FuY2VsbGVkLCB0aGVuIHdlIGFyZSBubyBsb25nZXIgcHJlc3Npbmcgb24gdGhpcyBlbGVtZW50XG4gICAgY29uc3QgcG9pbnRlckNhbmNlbCA9IHRoaXMuZGlzcG9zYWJsZXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgIG93bmVyRG9jdW1lbnQsXG4gICAgICAncG9pbnRlcmNhbmNlbCcsXG4gICAgICB0aGlzLnJlc2V0LmJpbmQodGhpcyksXG4gICAgICBmYWxzZSxcbiAgICApO1xuXG4gICAgdGhpcy5kaXNwb3NhYmxlTGlzdGVuZXJzID0gW3BvaW50ZXJVcCwgcG9pbnRlck1vdmUsIHBvaW50ZXJDYW5jZWxdO1xuICB9XG5cbiAgcHJpdmF0ZSBvblBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCAhPT0gZXZlbnQudGFyZ2V0ICYmXG4gICAgICAhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgKSB7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -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 NgpPressToken = new InjectionToken('NgpPressToken');
10
+ /**
11
+ * Inject the Press directive instance
12
+ */
13
+ export function injectPress() {
14
+ return inject(NgpPressToken);
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc3MudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2ludGVyYWN0aW9ucy9zcmMvcHJlc3MvcHJlc3MudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFXLGVBQWUsQ0FBQyxDQUFDO0FBRTNFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVc7SUFDekIsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE5ncFByZXNzIH0gZnJvbSAnLi9wcmVzcy5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgTmdwUHJlc3NUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3BQcmVzcz4oJ05ncFByZXNzVG9rZW4nKTtcblxuLyoqXG4gKiBJbmplY3QgdGhlIFByZXNzIGRpcmVjdGl2ZSBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UHJlc3MoKTogTmdwUHJlc3Mge1xuICByZXR1cm4gaW5qZWN0KE5ncFByZXNzVG9rZW4pO1xufVxuIl19
@@ -0,0 +1,19 @@
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 { inject, InjectionToken, signal } from '@angular/core';
9
+ export const NgpDisabledToken = new InjectionToken('NgpDisabledToken');
10
+ /**
11
+ * Determine if we are in a disabled context.
12
+ * @param disabled The disabled signal for the local context.
13
+ * @returns The disabled signal.
14
+ */
15
+ export function injectDisabled(disabled = signal(false)) {
16
+ const provider = inject(NgpDisabledToken, { optional: true });
17
+ return provider ? provider.disabled : disabled;
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2ludGVybmFsL3NyYy9kaXNhYmxlZC9kaXNhYmxlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFdkUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWdCLGtCQUFrQixDQUFDLENBQUM7QUFTdEY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzVCLFdBQTRCLE1BQU0sQ0FBVSxLQUFLLENBQUM7SUFFbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFOUQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIHNpZ25hbCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBOZ3BEaXNhYmxlZFRva2VuID0gbmV3IEluamVjdGlvblRva2VuPE5ncENhbkRpc2FibGU+KCdOZ3BEaXNhYmxlZFRva2VuJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmdwQ2FuRGlzYWJsZSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZWQ6IFNpZ25hbDxib29sZWFuPjtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UgYXJlIGluIGEgZGlzYWJsZWQgY29udGV4dC5cbiAqIEBwYXJhbSBkaXNhYmxlZCBUaGUgZGlzYWJsZWQgc2lnbmFsIGZvciB0aGUgbG9jYWwgY29udGV4dC5cbiAqIEByZXR1cm5zIFRoZSBkaXNhYmxlZCBzaWduYWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REaXNhYmxlZChcbiAgZGlzYWJsZWQ6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSksXG4pOiBTaWduYWw8Ym9vbGVhbj4ge1xuICBjb25zdCBwcm92aWRlciA9IGluamVjdChOZ3BEaXNhYmxlZFRva2VuLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHJldHVybiBwcm92aWRlciA/IHByb3ZpZGVyLmRpc2FibGVkIDogZGlzYWJsZWQ7XG59XG4iXX0=
@@ -0,0 +1,11 @@
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 * from './disabled/disabled';
9
+ export * from './orientation/orientation';
10
+ export * from './style-injector/style-injector';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2ludGVybmFsL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vZGlzYWJsZWQvZGlzYWJsZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9vcmllbnRhdGlvbi9vcmllbnRhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3N0eWxlLWluamVjdG9yL3N0eWxlLWluamVjdG9yJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJpbWl0aXZlcy1pbnRlcm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvaW50ZXJuYWwvc3JjL25nLXByaW1pdGl2ZXMtaW50ZXJuYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=