@festo-ui/angular 3.1.0-pre-20220203.2 → 3.1.0-pre-20220203.4

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 (231) hide show
  1. package/esm2020/festo-ui-angular.mjs +5 -0
  2. package/esm2020/index.mjs +18 -0
  3. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +23 -0
  4. package/esm2020/lib/components/buttons/button/button.component.mjs +41 -0
  5. package/esm2020/lib/components/buttons/link-button/link-button.component.mjs +33 -0
  6. package/esm2020/lib/components/chips/chip/chip.component.mjs +37 -0
  7. package/esm2020/lib/components/chips/chip-container/chip-container.component.mjs +16 -0
  8. package/esm2020/lib/components/click-outside.directive.mjs +28 -0
  9. package/esm2020/lib/components/components.module.mjs +155 -0
  10. package/esm2020/lib/components/loading-indicator/loading-indicator.component.mjs +16 -0
  11. package/esm2020/lib/components/modals/alert/alert.component.mjs +52 -0
  12. package/esm2020/lib/components/modals/confirm/confirm.component.mjs +67 -0
  13. package/esm2020/lib/components/modals/index.mjs +2 -0
  14. package/esm2020/lib/components/modals/modal.service.mjs +112 -0
  15. package/esm2020/lib/components/modals/modals.module.mjs +28 -0
  16. package/esm2020/lib/components/modals/prompt/prompt.component.mjs +102 -0
  17. package/esm2020/lib/components/pagination/pagination.component.mjs +55 -0
  18. package/esm2020/lib/components/popovers/legend/legend.component.mjs +42 -0
  19. package/esm2020/lib/components/popovers/legend/legend.directive.mjs +31 -0
  20. package/esm2020/lib/components/popovers/popover/popover.component.mjs +31 -0
  21. package/esm2020/lib/components/popovers/popover-content/popover-content.component.mjs +82 -0
  22. package/esm2020/lib/components/popovers/popover-content/popover-content.directive.mjs +39 -0
  23. package/esm2020/lib/components/popovers/popover-menu/popover-menu.component.mjs +68 -0
  24. package/esm2020/lib/components/popovers/popover-ref.mjs +25 -0
  25. package/esm2020/lib/components/popovers/popover.defaults.mjs +60 -0
  26. package/esm2020/lib/components/popovers/popover.models.mjs +23 -0
  27. package/esm2020/lib/components/popovers/popover.service.mjs +123 -0
  28. package/esm2020/lib/components/popovers/tooltip/tooltip.directive.mjs +94 -0
  29. package/esm2020/lib/components/progress/progress.component.mjs +20 -0
  30. package/esm2020/lib/components/scroll/index.mjs +2 -0
  31. package/esm2020/lib/components/scroll/scrollable.directive.mjs +72 -0
  32. package/esm2020/lib/components/search-input/search-input.component.mjs +150 -0
  33. package/esm2020/lib/components/snackbar/snackbar-container.component.mjs +21 -0
  34. package/esm2020/lib/components/snackbar/snackbar-container.directive.mjs +83 -0
  35. package/esm2020/lib/components/snackbar/snackbar.component.mjs +79 -0
  36. package/esm2020/lib/components/snackbar/snackbar.models.mjs +2 -0
  37. package/esm2020/lib/components/snackbar/snackbar.module.mjs +26 -0
  38. package/esm2020/lib/components/snackbar/snackbar.service.mjs +23 -0
  39. package/esm2020/lib/components/stepper/stepper.component.mjs +22 -0
  40. package/esm2020/lib/components/table-header-cell/table-header-cell.directive.mjs +58 -0
  41. package/esm2020/lib/components/tabs/tab-pane/tab-pane.component.mjs +31 -0
  42. package/esm2020/lib/components/tabs/tabs.component.mjs +355 -0
  43. package/esm2020/lib/content/content.module.mjs +20 -0
  44. package/esm2020/lib/content/icon/icon.component.mjs +17 -0
  45. package/esm2020/lib/festo-angular.module.mjs +58 -0
  46. package/esm2020/lib/forms/checkbox/checkbox.component.mjs +149 -0
  47. package/esm2020/lib/forms/color-indicator/color-indicator.component.mjs +68 -0
  48. package/esm2020/lib/forms/color-picker/color-helper.mjs +121 -0
  49. package/esm2020/lib/forms/color-picker/color-picker.component.mjs +273 -0
  50. package/esm2020/lib/forms/container-host.mjs +27 -0
  51. package/esm2020/lib/forms/date-picker/date-picker.component.mjs +199 -0
  52. package/esm2020/lib/forms/date-range-picker/date-range-picker.component.mjs +224 -0
  53. package/esm2020/lib/forms/forms.module.mjs +146 -0
  54. package/esm2020/lib/forms/radio/radio.component.mjs +346 -0
  55. package/esm2020/lib/forms/segment/segment-control/segment-control.component.mjs +52 -0
  56. package/esm2020/lib/forms/segment/segment.component.mjs +109 -0
  57. package/esm2020/lib/forms/select/chip-text.pipe.mjs +34 -0
  58. package/esm2020/lib/forms/select/select-option/select-option.component.mjs +22 -0
  59. package/esm2020/lib/forms/select/select.component.mjs +257 -0
  60. package/esm2020/lib/forms/slider/slider.component.mjs +110 -0
  61. package/esm2020/lib/forms/switch/switch.component.mjs +120 -0
  62. package/esm2020/lib/forms/text-area/text-area.component.mjs +180 -0
  63. package/esm2020/lib/forms/text-editor/text-editor.component.mjs +286 -0
  64. package/esm2020/lib/forms/text-input/text-input.component.mjs +183 -0
  65. package/esm2020/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.mjs +89 -0
  66. package/esm2020/lib/forms/time-picker/time-picker.component.mjs +188 -0
  67. package/esm2020/lib/forms/unique-selection-dispatcher.mjs +39 -0
  68. package/esm2020/lib/forms/value-accessor-base.mjs +41 -0
  69. package/esm2020/lib/layout/layout.module.mjs +18 -0
  70. package/esm2020/lib/wrappers/flatpickr/flatpickr.component.mjs +59 -0
  71. package/fesm2015/{festo-ui-angular.js → festo-ui-angular.mjs} +317 -521
  72. package/fesm2015/festo-ui-angular.mjs.map +1 -0
  73. package/fesm2020/festo-ui-angular.mjs +5383 -0
  74. package/fesm2020/festo-ui-angular.mjs.map +1 -0
  75. package/package.json +31 -16
  76. package/scss/base/components/breadcrumb/breadcrumb.component.scss +0 -1
  77. package/scss/base/components/modals/prompt/prompt.component.scss +0 -1
  78. package/scss/base/components/popovers/legend/legend.component.scss +2 -2
  79. package/scss/base/components/popovers/popover/styles.scss +3 -3
  80. package/scss/base/components/popovers/popover-content/popover-content.component.scss +1 -1
  81. package/scss/base/components/scroll/scroll-story-helper.scss +1 -3
  82. package/scss/base/components/snackbar/snackbar.component.scss +1 -1
  83. package/scss/base/components/stepper/stepper.component.scss +16 -15
  84. package/scss/base/forms/color-picker/color-picker.component.scss +12 -12
  85. package/scss/base/forms/date-picker/date-picker.component.scss +1 -1
  86. package/scss/base/forms/date-range-picker/date-range-picker.component.scss +1 -1
  87. package/scss/base/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.scss +1 -1
  88. package/scss/styles.scss +2 -2
  89. package/bundles/festo-ui-angular.umd.js +0 -6429
  90. package/bundles/festo-ui-angular.umd.js.map +0 -1
  91. package/esm2015/festo-ui-angular.js +0 -5
  92. package/esm2015/festo-ui-angular.js.map +0 -1
  93. package/esm2015/index.js +0 -18
  94. package/esm2015/index.js.map +0 -1
  95. package/esm2015/lib/components/breadcrumb/breadcrumb.component.js +0 -27
  96. package/esm2015/lib/components/breadcrumb/breadcrumb.component.js.map +0 -1
  97. package/esm2015/lib/components/buttons/button/button.component.js +0 -46
  98. package/esm2015/lib/components/buttons/button/button.component.js.map +0 -1
  99. package/esm2015/lib/components/buttons/link-button/link-button.component.js +0 -38
  100. package/esm2015/lib/components/buttons/link-button/link-button.component.js.map +0 -1
  101. package/esm2015/lib/components/chips/chip/chip.component.js +0 -42
  102. package/esm2015/lib/components/chips/chip/chip.component.js.map +0 -1
  103. package/esm2015/lib/components/chips/chip-container/chip-container.component.js +0 -21
  104. package/esm2015/lib/components/chips/chip-container/chip-container.component.js.map +0 -1
  105. package/esm2015/lib/components/click-outside.directive.js +0 -28
  106. package/esm2015/lib/components/click-outside.directive.js.map +0 -1
  107. package/esm2015/lib/components/components.module.js +0 -155
  108. package/esm2015/lib/components/components.module.js.map +0 -1
  109. package/esm2015/lib/components/loading-indicator/loading-indicator.component.js +0 -21
  110. package/esm2015/lib/components/loading-indicator/loading-indicator.component.js.map +0 -1
  111. package/esm2015/lib/components/modals/alert/alert.component.js +0 -57
  112. package/esm2015/lib/components/modals/alert/alert.component.js.map +0 -1
  113. package/esm2015/lib/components/modals/confirm/confirm.component.js +0 -73
  114. package/esm2015/lib/components/modals/confirm/confirm.component.js.map +0 -1
  115. package/esm2015/lib/components/modals/index.js +0 -2
  116. package/esm2015/lib/components/modals/index.js.map +0 -1
  117. package/esm2015/lib/components/modals/modal.service.js +0 -91
  118. package/esm2015/lib/components/modals/modal.service.js.map +0 -1
  119. package/esm2015/lib/components/modals/modals.module.js +0 -28
  120. package/esm2015/lib/components/modals/modals.module.js.map +0 -1
  121. package/esm2015/lib/components/modals/prompt/prompt.component.js +0 -110
  122. package/esm2015/lib/components/modals/prompt/prompt.component.js.map +0 -1
  123. package/esm2015/lib/components/pagination/pagination.component.js +0 -60
  124. package/esm2015/lib/components/pagination/pagination.component.js.map +0 -1
  125. package/esm2015/lib/components/popovers/legend/legend.component.js +0 -46
  126. package/esm2015/lib/components/popovers/legend/legend.component.js.map +0 -1
  127. package/esm2015/lib/components/popovers/legend/legend.directive.js +0 -31
  128. package/esm2015/lib/components/popovers/legend/legend.directive.js.map +0 -1
  129. package/esm2015/lib/components/popovers/popover/popover.component.js +0 -35
  130. package/esm2015/lib/components/popovers/popover/popover.component.js.map +0 -1
  131. package/esm2015/lib/components/popovers/popover-content/popover-content.component.js +0 -86
  132. package/esm2015/lib/components/popovers/popover-content/popover-content.component.js.map +0 -1
  133. package/esm2015/lib/components/popovers/popover-content/popover-content.directive.js +0 -39
  134. package/esm2015/lib/components/popovers/popover-content/popover-content.directive.js.map +0 -1
  135. package/esm2015/lib/components/popovers/popover-menu/popover-menu.component.js +0 -72
  136. package/esm2015/lib/components/popovers/popover-menu/popover-menu.component.js.map +0 -1
  137. package/esm2015/lib/components/popovers/popover-ref.js +0 -25
  138. package/esm2015/lib/components/popovers/popover-ref.js.map +0 -1
  139. package/esm2015/lib/components/popovers/popover.defaults.js +0 -60
  140. package/esm2015/lib/components/popovers/popover.defaults.js.map +0 -1
  141. package/esm2015/lib/components/popovers/popover.models.js +0 -23
  142. package/esm2015/lib/components/popovers/popover.models.js.map +0 -1
  143. package/esm2015/lib/components/popovers/popover.service.js +0 -117
  144. package/esm2015/lib/components/popovers/popover.service.js.map +0 -1
  145. package/esm2015/lib/components/popovers/tooltip/tooltip.directive.js +0 -96
  146. package/esm2015/lib/components/popovers/tooltip/tooltip.directive.js.map +0 -1
  147. package/esm2015/lib/components/progress/progress.component.js +0 -23
  148. package/esm2015/lib/components/progress/progress.component.js.map +0 -1
  149. package/esm2015/lib/components/scroll/index.js +0 -2
  150. package/esm2015/lib/components/scroll/index.js.map +0 -1
  151. package/esm2015/lib/components/scroll/scrollable.directive.js +0 -73
  152. package/esm2015/lib/components/scroll/scrollable.directive.js.map +0 -1
  153. package/esm2015/lib/components/search-input/search-input.component.js +0 -155
  154. package/esm2015/lib/components/search-input/search-input.component.js.map +0 -1
  155. package/esm2015/lib/components/snackbar/snackbar-container.component.js +0 -26
  156. package/esm2015/lib/components/snackbar/snackbar-container.component.js.map +0 -1
  157. package/esm2015/lib/components/snackbar/snackbar-container.directive.js +0 -83
  158. package/esm2015/lib/components/snackbar/snackbar-container.directive.js.map +0 -1
  159. package/esm2015/lib/components/snackbar/snackbar.component.js +0 -85
  160. package/esm2015/lib/components/snackbar/snackbar.component.js.map +0 -1
  161. package/esm2015/lib/components/snackbar/snackbar.models.js +0 -2
  162. package/esm2015/lib/components/snackbar/snackbar.models.js.map +0 -1
  163. package/esm2015/lib/components/snackbar/snackbar.module.js +0 -26
  164. package/esm2015/lib/components/snackbar/snackbar.module.js.map +0 -1
  165. package/esm2015/lib/components/snackbar/snackbar.service.js +0 -23
  166. package/esm2015/lib/components/snackbar/snackbar.service.js.map +0 -1
  167. package/esm2015/lib/components/stepper/stepper.component.js +0 -28
  168. package/esm2015/lib/components/stepper/stepper.component.js.map +0 -1
  169. package/esm2015/lib/components/table-header-cell/table-header-cell.directive.js +0 -58
  170. package/esm2015/lib/components/table-header-cell/table-header-cell.directive.js.map +0 -1
  171. package/esm2015/lib/components/tabs/tab-pane/tab-pane.component.js +0 -35
  172. package/esm2015/lib/components/tabs/tab-pane/tab-pane.component.js.map +0 -1
  173. package/esm2015/lib/components/tabs/tabs.component.js +0 -362
  174. package/esm2015/lib/components/tabs/tabs.component.js.map +0 -1
  175. package/esm2015/lib/content/content.module.js +0 -24
  176. package/esm2015/lib/content/content.module.js.map +0 -1
  177. package/esm2015/lib/content/icon/icon.component.js +0 -23
  178. package/esm2015/lib/content/icon/icon.component.js.map +0 -1
  179. package/esm2015/lib/festo-angular.module.js +0 -58
  180. package/esm2015/lib/festo-angular.module.js.map +0 -1
  181. package/esm2015/lib/forms/checkbox/checkbox.component.js +0 -156
  182. package/esm2015/lib/forms/checkbox/checkbox.component.js.map +0 -1
  183. package/esm2015/lib/forms/color-indicator/color-indicator.component.js +0 -72
  184. package/esm2015/lib/forms/color-indicator/color-indicator.component.js.map +0 -1
  185. package/esm2015/lib/forms/color-picker/color-helper.js +0 -121
  186. package/esm2015/lib/forms/color-picker/color-helper.js.map +0 -1
  187. package/esm2015/lib/forms/color-picker/color-picker.component.js +0 -280
  188. package/esm2015/lib/forms/color-picker/color-picker.component.js.map +0 -1
  189. package/esm2015/lib/forms/container-host.js +0 -27
  190. package/esm2015/lib/forms/container-host.js.map +0 -1
  191. package/esm2015/lib/forms/date-picker/date-picker.component.js +0 -205
  192. package/esm2015/lib/forms/date-picker/date-picker.component.js.map +0 -1
  193. package/esm2015/lib/forms/date-range-picker/date-range-picker.component.js +0 -230
  194. package/esm2015/lib/forms/date-range-picker/date-range-picker.component.js.map +0 -1
  195. package/esm2015/lib/forms/forms.module.js +0 -146
  196. package/esm2015/lib/forms/forms.module.js.map +0 -1
  197. package/esm2015/lib/forms/radio/radio.component.js +0 -353
  198. package/esm2015/lib/forms/radio/radio.component.js.map +0 -1
  199. package/esm2015/lib/forms/segment/segment-control/segment-control.component.js +0 -58
  200. package/esm2015/lib/forms/segment/segment-control/segment-control.component.js.map +0 -1
  201. package/esm2015/lib/forms/segment/segment.component.js +0 -116
  202. package/esm2015/lib/forms/segment/segment.component.js.map +0 -1
  203. package/esm2015/lib/forms/select/chip-text.pipe.js +0 -34
  204. package/esm2015/lib/forms/select/chip-text.pipe.js.map +0 -1
  205. package/esm2015/lib/forms/select/select-option/select-option.component.js +0 -29
  206. package/esm2015/lib/forms/select/select-option/select-option.component.js.map +0 -1
  207. package/esm2015/lib/forms/select/select.component.js +0 -265
  208. package/esm2015/lib/forms/select/select.component.js.map +0 -1
  209. package/esm2015/lib/forms/slider/slider.component.js +0 -116
  210. package/esm2015/lib/forms/slider/slider.component.js.map +0 -1
  211. package/esm2015/lib/forms/switch/switch.component.js +0 -127
  212. package/esm2015/lib/forms/switch/switch.component.js.map +0 -1
  213. package/esm2015/lib/forms/text-area/text-area.component.js +0 -186
  214. package/esm2015/lib/forms/text-area/text-area.component.js.map +0 -1
  215. package/esm2015/lib/forms/text-editor/text-editor.component.js +0 -294
  216. package/esm2015/lib/forms/text-editor/text-editor.component.js.map +0 -1
  217. package/esm2015/lib/forms/text-input/text-input.component.js +0 -189
  218. package/esm2015/lib/forms/text-input/text-input.component.js.map +0 -1
  219. package/esm2015/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.js +0 -103
  220. package/esm2015/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.js.map +0 -1
  221. package/esm2015/lib/forms/time-picker/time-picker.component.js +0 -194
  222. package/esm2015/lib/forms/time-picker/time-picker.component.js.map +0 -1
  223. package/esm2015/lib/forms/unique-selection-dispatcher.js +0 -39
  224. package/esm2015/lib/forms/unique-selection-dispatcher.js.map +0 -1
  225. package/esm2015/lib/forms/value-accessor-base.js +0 -41
  226. package/esm2015/lib/forms/value-accessor-base.js.map +0 -1
  227. package/esm2015/lib/layout/layout.module.js +0 -18
  228. package/esm2015/lib/layout/layout.module.js.map +0 -1
  229. package/esm2015/lib/wrappers/flatpickr/flatpickr.component.js +0 -63
  230. package/esm2015/lib/wrappers/flatpickr/flatpickr.component.js.map +0 -1
  231. package/fesm2015/festo-ui-angular.js.map +0 -1
@@ -0,0 +1,39 @@
1
+ import { Directive, ElementRef, HostListener, ContentChild } from '@angular/core';
2
+ import { PopoverContentComponent } from './popover-content.component';
3
+ import * as i0 from "@angular/core";
4
+ export class PopoverContentDirective {
5
+ constructor(elmenetRef) {
6
+ this.elmenetRef = elmenetRef;
7
+ }
8
+ ngOnInit() {
9
+ this.origin = this.elmenetRef.nativeElement;
10
+ }
11
+ show() {
12
+ if (null != this.component) {
13
+ this.component.show(this.origin);
14
+ }
15
+ }
16
+ hide() {
17
+ if (null != this.component) {
18
+ this.component.hide();
19
+ }
20
+ }
21
+ }
22
+ PopoverContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverContentDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
23
+ PopoverContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: PopoverContentDirective, selector: "[fngPopoverContent]", host: { listeners: { "click": "show()", "document:keydown.escape": "hide()" } }, queries: [{ propertyName: "component", first: true, predicate: ["fngComponent"], descendants: true }], ngImport: i0 });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverContentDirective, decorators: [{
25
+ type: Directive,
26
+ args: [{
27
+ selector: '[fngPopoverContent]'
28
+ }]
29
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { component: [{
30
+ type: ContentChild,
31
+ args: ['fngComponent']
32
+ }], show: [{
33
+ type: HostListener,
34
+ args: ['click']
35
+ }], hide: [{
36
+ type: HostListener,
37
+ args: ['document:keydown.escape']
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1jb250ZW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcG9wb3ZlcnMvcG9wb3Zlci1jb250ZW50L3BvcG92ZXItY29udGVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFVLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFLdEUsTUFBTSxPQUFPLHVCQUF1QjtJQUlsQyxZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUU5QyxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUM5QyxDQUFDO0lBR0QsSUFBSTtRQUNGLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUdELElBQUk7UUFDRixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDOztvSEF0QlUsdUJBQXVCO3dHQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFIbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQztpR0FFK0IsU0FBUztzQkFBdEMsWUFBWTt1QkFBQyxjQUFjO2dCQVU1QixJQUFJO3NCQURILFlBQVk7dUJBQUMsT0FBTztnQkFRckIsSUFBSTtzQkFESCxZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkluaXQsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb3BvdmVyQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vcG9wb3Zlci1jb250ZW50LmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmbmdQb3BvdmVyQ29udGVudF0nXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJDb250ZW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQENvbnRlbnRDaGlsZCgnZm5nQ29tcG9uZW50JykgY29tcG9uZW50OiBQb3BvdmVyQ29udGVudENvbXBvbmVudDtcbiAgcHJpdmF0ZSBvcmlnaW46IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxtZW5ldFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9yaWdpbiA9IHRoaXMuZWxtZW5ldFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBzaG93KCkge1xuICAgIGlmIChudWxsICE9IHRoaXMuY29tcG9uZW50KSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5zaG93KHRoaXMub3JpZ2luKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIGhpZGUoKSB7XG4gICAgaWYgKG51bGwgIT0gdGhpcy5jb21wb25lbnQpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LmhpZGUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { Component, TemplateRef, Input, Output, EventEmitter, ViewChild, ElementRef, HostListener } from '@angular/core';
2
+ import { PopoverService } from '../popover.service';
3
+ import { PopoverTypes } from '../popover.models';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../popover.service";
6
+ import * as i2 from "@angular/common";
7
+ export class PopoverMenuComponent {
8
+ constructor(popoverService) {
9
+ this.popoverService = popoverService;
10
+ this.icon = 'fwe-icon-menu-more fwe-icon-lg';
11
+ this.menu = [];
12
+ this.options = {};
13
+ this.menuAction = new EventEmitter();
14
+ this.itemHeight = 36;
15
+ }
16
+ show(event, content, origin) {
17
+ event.stopPropagation();
18
+ event.preventDefault();
19
+ if (0 < this.menu.length) {
20
+ this.popoverRef = this.popoverService.open({
21
+ content,
22
+ origin,
23
+ options: {
24
+ type: PopoverTypes.Menu,
25
+ hasBackdrop: true,
26
+ // height calc is needed for correct vertical positioning (+32 -> 2 * vertical padding 16px)
27
+ height: +(this.itemHeight * this.menu.length + 32),
28
+ positions: this.options != null && this.options.positions ? this.options.positions : null
29
+ }
30
+ });
31
+ }
32
+ }
33
+ action(action, payload) {
34
+ this.menuAction.emit({ action, payload });
35
+ if (null != this.popoverRef) {
36
+ this.popoverRef.close();
37
+ }
38
+ }
39
+ hide() {
40
+ if (null != this.popoverRef) {
41
+ this.popoverRef.close();
42
+ }
43
+ }
44
+ }
45
+ PopoverMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverMenuComponent, deps: [{ token: i1.PopoverService }], target: i0.ɵɵFactoryTarget.Component });
46
+ PopoverMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PopoverMenuComponent, selector: "fng-popover-menu", inputs: { icon: "icon", menu: "menu", options: "options" }, outputs: { menuAction: "menuAction" }, host: { listeners: { "document:keydown.escape": "hide()" } }, viewQueries: [{ propertyName: "menuTpl", first: true, predicate: ["menuTpl"], descendants: true }, { propertyName: "origin", first: true, predicate: ["origin"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"0 < menu.length\">\n <button type=\"button\" class=\"fwe-btn fwe-btn-link fwe-dark origin\" (click)=\"show($event, menuTpl, origin)\" #origin>\n <i class=\"fwe-icon fwe-pr-0\" [ngClass]=\"icon\"></i>\n </button>\n <ng-template #menuTpl>\n <ul class=\"fwe-list-group\">\n <li *ngFor=\"let item of menu\" class=\"fwe-list-group-item\">\n <button type=\"button\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"action(item?.action, item?.data)\">\n <i class=\"fwe-icon\" [ngClass]=\"item?.icon\"></i>\n <span>{{ item?.text }}</span>\n </button>\n </li>\n </ul>\n </ng-template>\n</ng-container>\n", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverMenuComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'fng-popover-menu', template: "<ng-container *ngIf=\"0 < menu.length\">\n <button type=\"button\" class=\"fwe-btn fwe-btn-link fwe-dark origin\" (click)=\"show($event, menuTpl, origin)\" #origin>\n <i class=\"fwe-icon fwe-pr-0\" [ngClass]=\"icon\"></i>\n </button>\n <ng-template #menuTpl>\n <ul class=\"fwe-list-group\">\n <li *ngFor=\"let item of menu\" class=\"fwe-list-group-item\">\n <button type=\"button\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"action(item?.action, item?.data)\">\n <i class=\"fwe-icon\" [ngClass]=\"item?.icon\"></i>\n <span>{{ item?.text }}</span>\n </button>\n </li>\n </ul>\n </ng-template>\n</ng-container>\n", styles: [""] }]
50
+ }], ctorParameters: function () { return [{ type: i1.PopoverService }]; }, propDecorators: { icon: [{
51
+ type: Input
52
+ }], menu: [{
53
+ type: Input
54
+ }], options: [{
55
+ type: Input
56
+ }], menuAction: [{
57
+ type: Output
58
+ }], menuTpl: [{
59
+ type: ViewChild,
60
+ args: ['menuTpl']
61
+ }], origin: [{
62
+ type: ViewChild,
63
+ args: ['origin']
64
+ }], hide: [{
65
+ type: HostListener,
66
+ args: ['document:keydown.escape']
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcG9wb3ZlcnMvcG9wb3Zlci1tZW51L3BvcG92ZXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3BvcG92ZXJzL3BvcG92ZXItbWVudS9wb3BvdmVyLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQW1ELE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFXbEcsTUFBTSxPQUFPLG9CQUFvQjtJQWEvQixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFaekMsU0FBSSxHQUFHLGdDQUFnQyxDQUFDO1FBQ3hDLFNBQUksR0FBa0IsRUFBRSxDQUFDO1FBQ3pCLFlBQU8sR0FBdUIsRUFBRSxDQUFDO1FBRWhDLGVBQVUsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU1uRSxlQUFVLEdBQUcsRUFBRSxDQUFDO0lBRTZCLENBQUM7SUFFdEQsSUFBSSxDQUFDLEtBQVksRUFBRSxPQUF5QixFQUFFLE1BQW1CO1FBQy9ELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDekMsT0FBTztnQkFDUCxNQUFNO2dCQUNOLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7b0JBQ3ZCLFdBQVcsRUFBRSxJQUFJO29CQUNqQiw0RkFBNEY7b0JBQzVGLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7b0JBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7aUJBQzFGO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWMsRUFBRSxPQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUdELElBQUk7UUFDRixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDOztpSEE3Q1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsZ1pDZmpDLGtxQkFlQTsyRkRBYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCO3FHQUtuQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVlLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDQyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBaUNuQixJQUFJO3NCQURILFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb3BvdmVyU2VydmljZSB9IGZyb20gJy4uL3BvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb3BvdmVyUmVmIH0gZnJvbSAnLi4vcG9wb3Zlci1yZWYnO1xuaW1wb3J0IHsgUG9wb3ZlclR5cGVzLCBQb3BvdmVyTWVudSwgUG9wb3Zlck1lbnVBY3Rpb24sIFBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4uL3BvcG92ZXIubW9kZWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBQb3BvdmVyTWVudU9wdGlvbnMge1xuICBwb3NpdGlvbnM/OiBQb3BvdmVyUG9zaXRpb25bXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm5nLXBvcG92ZXItbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3BvdmVyLW1lbnUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQb3BvdmVyTWVudUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGljb24gPSAnZndlLWljb24tbWVudS1tb3JlIGZ3ZS1pY29uLWxnJztcbiAgQElucHV0KCkgbWVudTogUG9wb3Zlck1lbnVbXSA9IFtdO1xuICBASW5wdXQoKSBvcHRpb25zOiBQb3BvdmVyTWVudU9wdGlvbnMgPSB7fTtcblxuICBAT3V0cHV0KCkgbWVudUFjdGlvbjogRXZlbnRFbWl0dGVyPFBvcG92ZXJNZW51QWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdtZW51VHBsJykgbWVudVRwbDogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnb3JpZ2luJykgb3JpZ2luOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgcG9wb3ZlclJlZjogUG9wb3ZlclJlZjtcbiAgcHJpdmF0ZSBpdGVtSGVpZ2h0ID0gMzY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3BvdmVyU2VydmljZTogUG9wb3ZlclNlcnZpY2UpIHt9XG5cbiAgc2hvdyhldmVudDogRXZlbnQsIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4sIG9yaWdpbjogSFRNTEVsZW1lbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICgwIDwgdGhpcy5tZW51Lmxlbmd0aCkge1xuICAgICAgdGhpcy5wb3BvdmVyUmVmID0gdGhpcy5wb3BvdmVyU2VydmljZS5vcGVuKHtcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgb3JpZ2luLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdHlwZTogUG9wb3ZlclR5cGVzLk1lbnUsXG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgLy8gaGVpZ2h0IGNhbGMgaXMgbmVlZGVkIGZvciBjb3JyZWN0IHZlcnRpY2FsIHBvc2l0aW9uaW5nICgrMzIgLT4gMiAqIHZlcnRpY2FsIHBhZGRpbmcgMTZweClcbiAgICAgICAgICBoZWlnaHQ6ICsodGhpcy5pdGVtSGVpZ2h0ICogdGhpcy5tZW51Lmxlbmd0aCArIDMyKSxcbiAgICAgICAgICBwb3NpdGlvbnM6IHRoaXMub3B0aW9ucyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMgPyB0aGlzLm9wdGlvbnMucG9zaXRpb25zIDogbnVsbFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHBheWxvYWQ6IGFueSkge1xuICAgIHRoaXMubWVudUFjdGlvbi5lbWl0KHsgYWN0aW9uLCBwYXlsb2FkIH0pO1xuICAgIGlmIChudWxsICE9IHRoaXMucG9wb3ZlclJlZikge1xuICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnKVxuICBoaWRlKCkge1xuICAgIGlmIChudWxsICE9IHRoaXMucG9wb3ZlclJlZikge1xuICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiMCA8IG1lbnUubGVuZ3RoXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZndlLWJ0biBmd2UtYnRuLWxpbmsgZndlLWRhcmsgb3JpZ2luXCIgKGNsaWNrKT1cInNob3coJGV2ZW50LCBtZW51VHBsLCBvcmlnaW4pXCIgI29yaWdpbj5cbiAgICA8aSBjbGFzcz1cImZ3ZS1pY29uIGZ3ZS1wci0wXCIgW25nQ2xhc3NdPVwiaWNvblwiPjwvaT5cbiAgPC9idXR0b24+XG4gIDxuZy10ZW1wbGF0ZSAjbWVudVRwbD5cbiAgICA8dWwgY2xhc3M9XCJmd2UtbGlzdC1ncm91cFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1lbnVcIiBjbGFzcz1cImZ3ZS1saXN0LWdyb3VwLWl0ZW1cIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJmd2UtYnRuIGZ3ZS1idG4tbGluayBmd2UtZGFya1wiIChjbGljayk9XCJhY3Rpb24oaXRlbT8uYWN0aW9uLCBpdGVtPy5kYXRhKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZndlLWljb25cIiBbbmdDbGFzc109XCJpdGVtPy5pY29uXCI+PC9pPlxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW0/LnRleHQgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Subject } from 'rxjs';
2
+ export class PopoverRef {
3
+ constructor(overlay, content, data) {
4
+ this.overlay = overlay;
5
+ this.content = content;
6
+ this.data = data;
7
+ this.afterClosed = new Subject();
8
+ this.afterClosed$ = this.afterClosed.asObservable();
9
+ overlay.backdropClick().subscribe(() => {
10
+ this._close('backdropClick', null);
11
+ });
12
+ }
13
+ close(data) {
14
+ this._close('close', data);
15
+ }
16
+ _close(type, data) {
17
+ this.overlay.dispose();
18
+ this.afterClosed.next({
19
+ type,
20
+ data
21
+ });
22
+ this.afterClosed.complete();
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3BvcG92ZXJzL3BvcG92ZXItcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJL0IsTUFBTSxPQUFPLFVBQVU7SUFJckIsWUFBbUIsT0FBbUIsRUFBUyxPQUF1QixFQUFTLElBQU87UUFBbkUsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBRztRQUg5RSxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO1FBQzFELGlCQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUc3QyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBUTtRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxNQUFNLENBQUMsSUFBK0IsRUFBRSxJQUFRO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsSUFBSTtZQUNKLElBQUk7U0FDTCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBvcG92ZXJDb250ZW50LCBQb3BvdmVyQ2xvc2VFdmVudCB9IGZyb20gJy4vcG9wb3Zlci5tb2RlbHMnO1xuXG5leHBvcnQgY2xhc3MgUG9wb3ZlclJlZjxUID0gYW55PiB7XG4gIHByaXZhdGUgYWZ0ZXJDbG9zZWQgPSBuZXcgU3ViamVjdDxQb3BvdmVyQ2xvc2VFdmVudDxUPj4oKTtcbiAgYWZ0ZXJDbG9zZWQkID0gdGhpcy5hZnRlckNsb3NlZC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcmxheTogT3ZlcmxheVJlZiwgcHVibGljIGNvbnRlbnQ6IFBvcG92ZXJDb250ZW50LCBwdWJsaWMgZGF0YTogVCkge1xuICAgIG92ZXJsYXkuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9jbG9zZSgnYmFja2Ryb3BDbGljaycsIG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xvc2UoZGF0YT86IFQpIHtcbiAgICB0aGlzLl9jbG9zZSgnY2xvc2UnLCBkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlKHR5cGU6IFBvcG92ZXJDbG9zZUV2ZW50Wyd0eXBlJ10sIGRhdGE/OiBUKSB7XG4gICAgdGhpcy5vdmVybGF5LmRpc3Bvc2UoKTtcbiAgICB0aGlzLmFmdGVyQ2xvc2VkLm5leHQoe1xuICAgICAgdHlwZSxcbiAgICAgIGRhdGFcbiAgICB9KTtcbiAgICB0aGlzLmFmdGVyQ2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,60 @@
1
+ import { PopoverPosition, PopoverTypes } from './popover.models';
2
+ export const defaultPositions = {
3
+ [PopoverPosition.Bottom]: {
4
+ originX: 'center',
5
+ originY: 'bottom',
6
+ overlayX: 'center',
7
+ overlayY: 'top',
8
+ offsetY: 22
9
+ },
10
+ [PopoverPosition.Top]: {
11
+ originX: 'center',
12
+ originY: 'top',
13
+ overlayX: 'center',
14
+ overlayY: 'bottom',
15
+ offsetY: -22
16
+ },
17
+ [PopoverPosition.Right]: {
18
+ originX: 'end',
19
+ originY: 'center',
20
+ overlayX: 'start',
21
+ overlayY: 'center',
22
+ offsetX: 22
23
+ },
24
+ [PopoverPosition.Left]: {
25
+ originX: 'start',
26
+ originY: 'center',
27
+ overlayX: 'end',
28
+ overlayY: 'center',
29
+ offsetX: -22
30
+ },
31
+ [PopoverPosition.LeftTop]: {
32
+ originX: 'start',
33
+ originY: 'center',
34
+ overlayX: 'end',
35
+ overlayY: 'top',
36
+ offsetX: -22,
37
+ offsetY: -32
38
+ },
39
+ [PopoverPosition.RightTop]: {
40
+ originX: 'end',
41
+ originY: 'center',
42
+ overlayX: 'start',
43
+ overlayY: 'top',
44
+ offsetX: 22,
45
+ offsetY: -32
46
+ }
47
+ };
48
+ export const defaultClasses = {
49
+ [PopoverTypes.Tooltip]: 'fng-popover-tooltip',
50
+ [PopoverTypes.Menu]: 'fng-popover-menu',
51
+ [PopoverTypes.Legend]: 'fng-popover-legend',
52
+ [PopoverTypes.Content]: 'fng-popover-content',
53
+ [PopoverPosition.Bottom]: 'fng-popover-bottom',
54
+ [PopoverPosition.Top]: 'fng-popover-top',
55
+ [PopoverPosition.Right]: 'fng-popover-right',
56
+ [PopoverPosition.Left]: 'fng-popover-left',
57
+ [PopoverPosition.RightTop]: 'fng-popover-right-top',
58
+ [PopoverPosition.LeftTop]: 'fng-popover-left-top'
59
+ };
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kZWZhdWx0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcG9wb3ZlcnMvcG9wb3Zlci5kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEVBQUU7S0FDWjtJQUNELENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLFFBQVE7UUFDbEIsUUFBUSxFQUFFLFFBQVE7UUFDbEIsT0FBTyxFQUFFLENBQUMsRUFBRTtLQUNiO0lBQ0QsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDdkIsT0FBTyxFQUFFLEtBQUs7UUFDZCxPQUFPLEVBQUUsUUFBUTtRQUNqQixRQUFRLEVBQUUsT0FBTztRQUNqQixRQUFRLEVBQUUsUUFBUTtRQUNsQixPQUFPLEVBQUUsRUFBRTtLQUNaO0lBQ0QsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdEIsT0FBTyxFQUFFLE9BQU87UUFDaEIsT0FBTyxFQUFFLFFBQVE7UUFDakIsUUFBUSxFQUFFLEtBQUs7UUFDZixRQUFRLEVBQUUsUUFBUTtRQUNsQixPQUFPLEVBQUUsQ0FBQyxFQUFFO0tBQ2I7SUFDRCxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN6QixPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsUUFBUTtRQUNqQixRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLENBQUMsRUFBRTtRQUNaLE9BQU8sRUFBRSxDQUFDLEVBQUU7S0FDYjtJQUNELENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzFCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTyxFQUFFLFFBQVE7UUFDakIsUUFBUSxFQUFFLE9BQU87UUFDakIsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsRUFBRTtRQUNYLE9BQU8sRUFBRSxDQUFDLEVBQUU7S0FDYjtDQUNGLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUscUJBQXFCO0lBQzdDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLGtCQUFrQjtJQUN2QyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxvQkFBb0I7SUFDM0MsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUscUJBQXFCO0lBQzdDLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLG9CQUFvQjtJQUM5QyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxpQkFBaUI7SUFDeEMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsbUJBQW1CO0lBQzVDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLGtCQUFrQjtJQUMxQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSx1QkFBdUI7SUFDbkQsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsc0JBQXNCO0NBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3BvdmVyUG9zaXRpb24sIFBvcG92ZXJUeXBlcyB9IGZyb20gJy4vcG9wb3Zlci5tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFBvc2l0aW9ucyA9IHtcbiAgW1BvcG92ZXJQb3NpdGlvbi5Cb3R0b21dOiB7XG4gICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICBvZmZzZXRZOiAyMlxuICB9LFxuICBbUG9wb3ZlclBvc2l0aW9uLlRvcF06IHtcbiAgICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgIG9mZnNldFk6IC0yMlxuICB9LFxuICBbUG9wb3ZlclBvc2l0aW9uLlJpZ2h0XToge1xuICAgIG9yaWdpblg6ICdlbmQnLFxuICAgIG9yaWdpblk6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgICBvZmZzZXRYOiAyMlxuICB9LFxuICBbUG9wb3ZlclBvc2l0aW9uLkxlZnRdOiB7XG4gICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICBvcmlnaW5ZOiAnY2VudGVyJyxcbiAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgb3ZlcmxheVk6ICdjZW50ZXInLFxuICAgIG9mZnNldFg6IC0yMlxuICB9LFxuICBbUG9wb3ZlclBvc2l0aW9uLkxlZnRUb3BdOiB7XG4gICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICBvcmlnaW5ZOiAnY2VudGVyJyxcbiAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgIG9mZnNldFg6IC0yMixcbiAgICBvZmZzZXRZOiAtMzJcbiAgfSxcbiAgW1BvcG92ZXJQb3NpdGlvbi5SaWdodFRvcF06IHtcbiAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICBvcmlnaW5ZOiAnY2VudGVyJyxcbiAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgb2Zmc2V0WDogMjIsXG4gICAgb2Zmc2V0WTogLTMyXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZGVmYXVsdENsYXNzZXMgPSB7XG4gIFtQb3BvdmVyVHlwZXMuVG9vbHRpcF06ICdmbmctcG9wb3Zlci10b29sdGlwJyxcbiAgW1BvcG92ZXJUeXBlcy5NZW51XTogJ2ZuZy1wb3BvdmVyLW1lbnUnLFxuICBbUG9wb3ZlclR5cGVzLkxlZ2VuZF06ICdmbmctcG9wb3Zlci1sZWdlbmQnLFxuICBbUG9wb3ZlclR5cGVzLkNvbnRlbnRdOiAnZm5nLXBvcG92ZXItY29udGVudCcsXG4gIFtQb3BvdmVyUG9zaXRpb24uQm90dG9tXTogJ2ZuZy1wb3BvdmVyLWJvdHRvbScsXG4gIFtQb3BvdmVyUG9zaXRpb24uVG9wXTogJ2ZuZy1wb3BvdmVyLXRvcCcsXG4gIFtQb3BvdmVyUG9zaXRpb24uUmlnaHRdOiAnZm5nLXBvcG92ZXItcmlnaHQnLFxuICBbUG9wb3ZlclBvc2l0aW9uLkxlZnRdOiAnZm5nLXBvcG92ZXItbGVmdCcsXG4gIFtQb3BvdmVyUG9zaXRpb24uUmlnaHRUb3BdOiAnZm5nLXBvcG92ZXItcmlnaHQtdG9wJyxcbiAgW1BvcG92ZXJQb3NpdGlvbi5MZWZ0VG9wXTogJ2ZuZy1wb3BvdmVyLWxlZnQtdG9wJ1xufTtcbiJdfQ==
@@ -0,0 +1,23 @@
1
+ export var PopoverTypes;
2
+ (function (PopoverTypes) {
3
+ PopoverTypes["Tooltip"] = "tooltip";
4
+ PopoverTypes["Menu"] = "menu";
5
+ PopoverTypes["Legend"] = "legend";
6
+ PopoverTypes["Content"] = "content";
7
+ })(PopoverTypes || (PopoverTypes = {}));
8
+ export var PopoverPosition;
9
+ (function (PopoverPosition) {
10
+ PopoverPosition["Top"] = "top";
11
+ PopoverPosition["Bottom"] = "bottom";
12
+ PopoverPosition["Right"] = "right";
13
+ PopoverPosition["RightTop"] = "right-top";
14
+ PopoverPosition["Left"] = "left";
15
+ PopoverPosition["LeftTop"] = "left-top";
16
+ })(PopoverPosition || (PopoverPosition = {}));
17
+ export var PopoverContentTypes;
18
+ (function (PopoverContentTypes) {
19
+ PopoverContentTypes["Template"] = "template";
20
+ PopoverContentTypes["Component"] = "component";
21
+ PopoverContentTypes["Text"] = "text";
22
+ })(PopoverContentTypes || (PopoverContentTypes = {}));
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3BvcG92ZXJzL3BvcG92ZXIubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBTixJQUFZLFlBS1g7QUFMRCxXQUFZLFlBQVk7SUFDdEIsbUNBQW1CLENBQUE7SUFDbkIsNkJBQWEsQ0FBQTtJQUNiLGlDQUFpQixDQUFBO0lBQ2pCLG1DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxZQUFZLEtBQVosWUFBWSxRQUt2QjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBT1g7QUFQRCxXQUFZLGVBQWU7SUFDekIsOEJBQVcsQ0FBQTtJQUNYLG9DQUFpQixDQUFBO0lBQ2pCLGtDQUFlLENBQUE7SUFDZix5Q0FBc0IsQ0FBQTtJQUN0QixnQ0FBYSxDQUFBO0lBQ2IsdUNBQW9CLENBQUE7QUFDdEIsQ0FBQyxFQVBXLGVBQWUsS0FBZixlQUFlLFFBTzFCO0FBb0JELE1BQU0sQ0FBTixJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0IsNENBQXFCLENBQUE7SUFDckIsOENBQXVCLENBQUE7SUFDdkIsb0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBQb3BvdmVyUGFyYW1zPFQ+IHtcbiAgb3JpZ2luOiBIVE1MRWxlbWVudDtcbiAgY29udGVudDogUG9wb3ZlckNvbnRlbnQ7XG4gIG9wdGlvbnM/OiBQb3BvdmVyT3B0aW9ucztcbiAgZGF0YT86IFQ7XG59XG5cbmV4cG9ydCBlbnVtIFBvcG92ZXJUeXBlcyB7XG4gIFRvb2x0aXAgPSAndG9vbHRpcCcsXG4gIE1lbnUgPSAnbWVudScsXG4gIExlZ2VuZCA9ICdsZWdlbmQnLFxuICBDb250ZW50ID0gJ2NvbnRlbnQnXG59XG5cbmV4cG9ydCBlbnVtIFBvcG92ZXJQb3NpdGlvbiB7XG4gIFRvcCA9ICd0b3AnLFxuICBCb3R0b20gPSAnYm90dG9tJyxcbiAgUmlnaHQgPSAncmlnaHQnLFxuICBSaWdodFRvcCA9ICdyaWdodC10b3AnLFxuICBMZWZ0ID0gJ2xlZnQnLFxuICBMZWZ0VG9wID0gJ2xlZnQtdG9wJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvcG92ZXJPcHRpb25zIHtcbiAgdHlwZTogUG9wb3ZlclR5cGVzO1xuICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgaGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICBtYXhXaWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICBtaW5XaWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgbWluSGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICBoYXNCYWNrZHJvcD86IGJvb2xlYW47XG4gIGJhY2tkcm9wQ2xhc3M/OiBzdHJpbmc7XG4gIHBvc2l0aW9ucz86IFBvcG92ZXJQb3NpdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvcG92ZXJDbG9zZUV2ZW50PFQgPSBhbnk+IHtcbiAgdHlwZTogJ2JhY2tkcm9wQ2xpY2snIHwgJ2Nsb3NlJztcbiAgZGF0YTogVDtcbn1cblxuZXhwb3J0IGVudW0gUG9wb3ZlckNvbnRlbnRUeXBlcyB7XG4gIFRlbXBsYXRlID0gJ3RlbXBsYXRlJyxcbiAgQ29tcG9uZW50ID0gJ2NvbXBvbmVudCcsXG4gIFRleHQgPSAndGV4dCdcbn1cblxuZXhwb3J0IHR5cGUgUG9wb3ZlckNvbnRlbnQgPSBUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+IHwgc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvcG92ZXJNZW51PFQgPSBhbnk+IHtcbiAgdGV4dDogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBkYXRhPzogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3BvdmVyTWVudUFjdGlvbjxUID0gYW55PiB7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBwYXlsb2FkOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvcG92ZXJNZW51QWN0aW9uQXdhcmU8VCA9IGFueT4ge1xuICBvbk1lbnVBY3Rpb24oZXZlbnQ6IFBvcG92ZXJNZW51QWN0aW9uPFQ+KTogdm9pZDtcbn1cbiJdfQ==
@@ -0,0 +1,123 @@
1
+ import { Injectable, Injector } from '@angular/core';
2
+ import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
3
+ import { ComponentPortal } from '@angular/cdk/portal';
4
+ import { PopoverRef } from './popover-ref';
5
+ import { PopoverComponent } from './popover/popover.component';
6
+ import { defaultPositions, defaultClasses } from './popover.defaults';
7
+ import { PopoverTypes, PopoverPosition } from './popover.models';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/cdk/overlay";
10
+ export class PopoverService {
11
+ constructor(overlay, injector) {
12
+ this.overlay = overlay;
13
+ this.injector = injector;
14
+ this.options = {
15
+ type: PopoverTypes.Tooltip,
16
+ width: null,
17
+ height: null,
18
+ maxWidth: null,
19
+ maxHeight: null,
20
+ minWidth: null,
21
+ minHeight: null,
22
+ hasBackdrop: false,
23
+ backdropClass: 'fng-popover-backdrop',
24
+ positions: null
25
+ };
26
+ }
27
+ get defaultOptions() {
28
+ return this.options;
29
+ }
30
+ open({ origin, content, data, options }) {
31
+ if (null == options) {
32
+ options = this.defaultOptions;
33
+ }
34
+ const overlayConfig = this.getOverlayConfig({ origin, options });
35
+ const overlayRef = this.overlay.create(overlayConfig);
36
+ const popoverRef = new PopoverRef(overlayRef, content, data);
37
+ const injector = this.createInjector(popoverRef, this.injector);
38
+ overlayRef.attach(new ComponentPortal(PopoverComponent, null, injector));
39
+ return popoverRef;
40
+ }
41
+ getOverlayConfig({ origin, options }) {
42
+ const type = null != options.type ? options.type : this.defaultOptions.type;
43
+ const positions = null != options.positions ? options.positions : this.defaultOptions.positions;
44
+ return new OverlayConfig({
45
+ width: null != options.width ? options.width : this.defaultOptions.width,
46
+ height: null != options.height ? options.height : this.defaultOptions.height,
47
+ maxWidth: null != options.maxWidth ? options.maxWidth : this.defaultOptions.maxWidth,
48
+ maxHeight: null != options.maxHeight ? options.maxHeight : this.defaultOptions.maxHeight,
49
+ minWidth: null != options.minWidth ? options.minWidth : this.defaultOptions.minWidth,
50
+ minHeight: null != options.minHeight ? options.minHeight : this.defaultOptions.minHeight,
51
+ positionStrategy: this.getOverlayPosition(origin, type, positions),
52
+ scrollStrategy: null != this.overlay && null != this.overlay.scrollStrategies ? this.overlay.scrollStrategies.block() : {},
53
+ hasBackdrop: null != options.hasBackdrop ? options.hasBackdrop : this.defaultOptions.hasBackdrop,
54
+ backdropClass: null != options.backdropClass ? options.backdropClass : this.defaultOptions.backdropClass
55
+ });
56
+ }
57
+ getOverlayPosition(origin, type, positions) {
58
+ const positionStrategy = this.overlay
59
+ .position()
60
+ .flexibleConnectedTo(origin)
61
+ .withPositions(null != positions ? this.getPositions(type, positions) : this.getDefaultPositions(type))
62
+ .withFlexibleDimensions(false)
63
+ .withViewportMargin(16)
64
+ .withPush(false);
65
+ return positionStrategy;
66
+ }
67
+ createInjector(popoverRef, injector) {
68
+ return Injector.create({
69
+ parent: injector,
70
+ providers: [{ provide: PopoverRef, useValue: popoverRef }]
71
+ });
72
+ }
73
+ getDefaultPositions(type) {
74
+ const pairs = [];
75
+ let positions = [];
76
+ const fn = (t, p) => p.map(position => {
77
+ pairs.push({
78
+ ...defaultPositions[position],
79
+ panelClass: [defaultClasses[t], defaultClasses[position]]
80
+ });
81
+ });
82
+ switch (type) {
83
+ case PopoverTypes.Tooltip:
84
+ positions = [PopoverPosition.Bottom, PopoverPosition.Top];
85
+ fn(PopoverTypes.Tooltip, positions);
86
+ break;
87
+ case PopoverTypes.Menu:
88
+ positions = [PopoverPosition.Right, PopoverPosition.Left];
89
+ fn(PopoverTypes.Menu, positions);
90
+ break;
91
+ case PopoverTypes.Legend:
92
+ positions = [PopoverPosition.Bottom];
93
+ fn(PopoverTypes.Legend, positions);
94
+ break;
95
+ case PopoverTypes.Content:
96
+ positions = [PopoverPosition.Bottom];
97
+ fn(PopoverTypes.Content, positions);
98
+ break;
99
+ default:
100
+ break;
101
+ }
102
+ return pairs;
103
+ }
104
+ getPositions(type, positions) {
105
+ const pairs = [];
106
+ positions.map(position => {
107
+ pairs.push({
108
+ ...defaultPositions[position],
109
+ panelClass: [defaultClasses[type], defaultClasses[position]]
110
+ });
111
+ });
112
+ return pairs;
113
+ }
114
+ }
115
+ PopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverService, deps: [{ token: i1.Overlay }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ PopoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverService, providedIn: 'root' });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PopoverService, decorators: [{
118
+ type: Injectable,
119
+ args: [{
120
+ providedIn: 'root'
121
+ }]
122
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Injector }]; } });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9wb3BvdmVycy9wb3BvdmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUNMLE9BQU8sRUFFUCxhQUFhLEVBR2QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFpQyxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUtoRyxNQUFNLE9BQU8sY0FBYztJQWtCekIsWUFBb0IsT0FBZ0IsRUFBVSxRQUFrQjtRQUE1QyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWpCdkQsWUFBTyxHQUFtQjtZQUNqQyxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU87WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxJQUFJO1lBQ2QsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLEtBQUs7WUFDbEIsYUFBYSxFQUFFLHNCQUFzQjtZQUNyQyxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO0lBTWlFLENBQUM7SUFKcEUsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBSUQsSUFBSSxDQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFvQjtRQUMxRCxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUU7WUFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDL0I7UUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNqRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBSSxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQW9EO1FBQzVGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUM1RSxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7UUFDaEcsT0FBTyxJQUFJLGFBQWEsQ0FBQztZQUN2QixLQUFLLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSztZQUN4RSxNQUFNLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTTtZQUM1RSxRQUFRLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUTtZQUNwRixTQUFTLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUztZQUN4RixRQUFRLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUTtZQUNwRixTQUFTLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUztZQUN4RixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7WUFDbEUsY0FBYyxFQUNaLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBRSxFQUF5QjtZQUNwSSxXQUFXLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVztZQUNoRyxhQUFhLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYTtTQUN6RyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsTUFBbUIsRUFBRSxJQUFrQixFQUFFLFNBQTRCO1FBQzlGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU87YUFDbEMsUUFBUSxFQUFFO2FBQ1YsbUJBQW1CLENBQUMsTUFBTSxDQUFDO2FBQzNCLGFBQWEsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3RHLHNCQUFzQixDQUFDLEtBQUssQ0FBQzthQUM3QixrQkFBa0IsQ0FBQyxFQUFFLENBQUM7YUFDdEIsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5CLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxVQUFzQixFQUFFLFFBQWtCO1FBQy9ELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNyQixNQUFNLEVBQUUsUUFBUTtZQUNoQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO1NBQzNELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFrQjtRQUM1QyxNQUFNLEtBQUssR0FBNkIsRUFBRSxDQUFDO1FBQzNDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQWUsRUFBRSxDQUFvQixFQUFFLEVBQUUsQ0FDbkQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNmLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFrQixDQUFDO2dCQUN2QyxVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzFELENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLFlBQVksQ0FBQyxPQUFPO2dCQUN2QixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUQsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU07WUFDUixLQUFLLFlBQVksQ0FBQyxJQUFJO2dCQUNwQixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUQsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ2pDLE1BQU07WUFDUixLQUFLLFlBQVksQ0FBQyxNQUFNO2dCQUN0QixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNO1lBQ1IsS0FBSyxZQUFZLENBQUMsT0FBTztnQkFDdkIsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDcEMsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFrQixFQUFFLFNBQTRCO1FBQ25FLE1BQU0sS0FBSyxHQUE2QixFQUFFLENBQUM7UUFDM0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNULEdBQUcsZ0JBQWdCLENBQUMsUUFBa0IsQ0FBQztnQkFDdkMsVUFBVSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM3RCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7MkdBbEhVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgT3ZlcmxheSxcbiAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgT3ZlcmxheUNvbmZpZyxcbiAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICBOb29wU2Nyb2xsU3RyYXRlZ3lcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbmltcG9ydCB7IFBvcG92ZXJSZWYgfSBmcm9tICcuL3BvcG92ZXItcmVmJztcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZGVmYXVsdFBvc2l0aW9ucywgZGVmYXVsdENsYXNzZXMgfSBmcm9tICcuL3BvcG92ZXIuZGVmYXVsdHMnO1xuaW1wb3J0IHsgUG9wb3ZlclBhcmFtcywgUG9wb3Zlck9wdGlvbnMsIFBvcG92ZXJUeXBlcywgUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnLi9wb3BvdmVyLm1vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgb3B0aW9uczogUG9wb3Zlck9wdGlvbnMgPSB7XG4gICAgdHlwZTogUG9wb3ZlclR5cGVzLlRvb2x0aXAsXG4gICAgd2lkdGg6IG51bGwsXG4gICAgaGVpZ2h0OiBudWxsLFxuICAgIG1heFdpZHRoOiBudWxsLFxuICAgIG1heEhlaWdodDogbnVsbCxcbiAgICBtaW5XaWR0aDogbnVsbCxcbiAgICBtaW5IZWlnaHQ6IG51bGwsXG4gICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgIGJhY2tkcm9wQ2xhc3M6ICdmbmctcG9wb3Zlci1iYWNrZHJvcCcsXG4gICAgcG9zaXRpb25zOiBudWxsXG4gIH07XG5cbiAgZ2V0IGRlZmF1bHRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIG9wZW48VD4oeyBvcmlnaW4sIGNvbnRlbnQsIGRhdGEsIG9wdGlvbnMgfTogUG9wb3ZlclBhcmFtczxUPik6IFBvcG92ZXJSZWY8VD4ge1xuICAgIGlmIChudWxsID09IG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSB0aGlzLmRlZmF1bHRPcHRpb25zO1xuICAgIH1cbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKHsgb3JpZ2luLCBvcHRpb25zIH0pO1xuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuICAgIGNvbnN0IHBvcG92ZXJSZWYgPSBuZXcgUG9wb3ZlclJlZjxUPihvdmVybGF5UmVmLCBjb250ZW50LCBkYXRhKTtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuY3JlYXRlSW5qZWN0b3IocG9wb3ZlclJlZiwgdGhpcy5pbmplY3Rvcik7XG5cbiAgICBvdmVybGF5UmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKFBvcG92ZXJDb21wb25lbnQsIG51bGwsIGluamVjdG9yKSk7XG5cbiAgICByZXR1cm4gcG9wb3ZlclJlZjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZyh7IG9yaWdpbiwgb3B0aW9ucyB9OiB7IG9yaWdpbjogSFRNTEVsZW1lbnQ7IG9wdGlvbnM6IFBvcG92ZXJPcHRpb25zIH0pOiBPdmVybGF5Q29uZmlnIHtcbiAgICBjb25zdCB0eXBlID0gbnVsbCAhPSBvcHRpb25zLnR5cGUgPyBvcHRpb25zLnR5cGUgOiB0aGlzLmRlZmF1bHRPcHRpb25zLnR5cGU7XG4gICAgY29uc3QgcG9zaXRpb25zID0gbnVsbCAhPSBvcHRpb25zLnBvc2l0aW9ucyA/IG9wdGlvbnMucG9zaXRpb25zIDogdGhpcy5kZWZhdWx0T3B0aW9ucy5wb3NpdGlvbnM7XG4gICAgcmV0dXJuIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIHdpZHRoOiBudWxsICE9IG9wdGlvbnMud2lkdGggPyBvcHRpb25zLndpZHRoIDogdGhpcy5kZWZhdWx0T3B0aW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogbnVsbCAhPSBvcHRpb25zLmhlaWdodCA/IG9wdGlvbnMuaGVpZ2h0IDogdGhpcy5kZWZhdWx0T3B0aW9ucy5oZWlnaHQsXG4gICAgICBtYXhXaWR0aDogbnVsbCAhPSBvcHRpb25zLm1heFdpZHRoID8gb3B0aW9ucy5tYXhXaWR0aCA6IHRoaXMuZGVmYXVsdE9wdGlvbnMubWF4V2lkdGgsXG4gICAgICBtYXhIZWlnaHQ6IG51bGwgIT0gb3B0aW9ucy5tYXhIZWlnaHQgPyBvcHRpb25zLm1heEhlaWdodCA6IHRoaXMuZGVmYXVsdE9wdGlvbnMubWF4SGVpZ2h0LFxuICAgICAgbWluV2lkdGg6IG51bGwgIT0gb3B0aW9ucy5taW5XaWR0aCA/IG9wdGlvbnMubWluV2lkdGggOiB0aGlzLmRlZmF1bHRPcHRpb25zLm1pbldpZHRoLFxuICAgICAgbWluSGVpZ2h0OiBudWxsICE9IG9wdGlvbnMubWluSGVpZ2h0ID8gb3B0aW9ucy5taW5IZWlnaHQgOiB0aGlzLmRlZmF1bHRPcHRpb25zLm1pbkhlaWdodCxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuZ2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbiwgdHlwZSwgcG9zaXRpb25zKSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OlxuICAgICAgICBudWxsICE9IHRoaXMub3ZlcmxheSAmJiBudWxsICE9IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzID8gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSA6ICh7fSBhcyBOb29wU2Nyb2xsU3RyYXRlZ3kpLFxuICAgICAgaGFzQmFja2Ryb3A6IG51bGwgIT0gb3B0aW9ucy5oYXNCYWNrZHJvcCA/IG9wdGlvbnMuaGFzQmFja2Ryb3AgOiB0aGlzLmRlZmF1bHRPcHRpb25zLmhhc0JhY2tkcm9wLFxuICAgICAgYmFja2Ryb3BDbGFzczogbnVsbCAhPSBvcHRpb25zLmJhY2tkcm9wQ2xhc3MgPyBvcHRpb25zLmJhY2tkcm9wQ2xhc3MgOiB0aGlzLmRlZmF1bHRPcHRpb25zLmJhY2tkcm9wQ2xhc3NcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbjogSFRNTEVsZW1lbnQsIHR5cGU6IFBvcG92ZXJUeXBlcywgcG9zaXRpb25zOiBQb3BvdmVyUG9zaXRpb25bXSk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKG51bGwgIT0gcG9zaXRpb25zID8gdGhpcy5nZXRQb3NpdGlvbnModHlwZSwgcG9zaXRpb25zKSA6IHRoaXMuZ2V0RGVmYXVsdFBvc2l0aW9ucyh0eXBlKSlcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgLndpdGhWaWV3cG9ydE1hcmdpbigxNilcbiAgICAgIC53aXRoUHVzaChmYWxzZSk7XG5cbiAgICByZXR1cm4gcG9zaXRpb25TdHJhdGVneTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5qZWN0b3IocG9wb3ZlclJlZjogUG9wb3ZlclJlZiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IGluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBQb3BvdmVyUmVmLCB1c2VWYWx1ZTogcG9wb3ZlclJlZiB9XVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0UG9zaXRpb25zKHR5cGU6IFBvcG92ZXJUeXBlcyk6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSB7XG4gICAgY29uc3QgcGFpcnM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtdO1xuICAgIGxldCBwb3NpdGlvbnMgPSBbXTtcbiAgICBjb25zdCBmbiA9ICh0OiBQb3BvdmVyVHlwZXMsIHA6IFBvcG92ZXJQb3NpdGlvbltdKSA9PlxuICAgICAgcC5tYXAocG9zaXRpb24gPT4ge1xuICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICAuLi5kZWZhdWx0UG9zaXRpb25zW3Bvc2l0aW9uIGFzIHN0cmluZ10sXG4gICAgICAgICAgcGFuZWxDbGFzczogW2RlZmF1bHRDbGFzc2VzW3RdLCBkZWZhdWx0Q2xhc3Nlc1twb3NpdGlvbl1dXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFBvcG92ZXJUeXBlcy5Ub29sdGlwOlxuICAgICAgICBwb3NpdGlvbnMgPSBbUG9wb3ZlclBvc2l0aW9uLkJvdHRvbSwgUG9wb3ZlclBvc2l0aW9uLlRvcF07XG4gICAgICAgIGZuKFBvcG92ZXJUeXBlcy5Ub29sdGlwLCBwb3NpdGlvbnMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUG9wb3ZlclR5cGVzLk1lbnU6XG4gICAgICAgIHBvc2l0aW9ucyA9IFtQb3BvdmVyUG9zaXRpb24uUmlnaHQsIFBvcG92ZXJQb3NpdGlvbi5MZWZ0XTtcbiAgICAgICAgZm4oUG9wb3ZlclR5cGVzLk1lbnUsIHBvc2l0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQb3BvdmVyVHlwZXMuTGVnZW5kOlxuICAgICAgICBwb3NpdGlvbnMgPSBbUG9wb3ZlclBvc2l0aW9uLkJvdHRvbV07XG4gICAgICAgIGZuKFBvcG92ZXJUeXBlcy5MZWdlbmQsIHBvc2l0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQb3BvdmVyVHlwZXMuQ29udGVudDpcbiAgICAgICAgcG9zaXRpb25zID0gW1BvcG92ZXJQb3NpdGlvbi5Cb3R0b21dO1xuICAgICAgICBmbihQb3BvdmVyVHlwZXMuQ29udGVudCwgcG9zaXRpb25zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHBhaXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb3NpdGlvbnModHlwZTogUG9wb3ZlclR5cGVzLCBwb3NpdGlvbnM6IFBvcG92ZXJQb3NpdGlvbltdKTogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdIHtcbiAgICBjb25zdCBwYWlyczogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdID0gW107XG4gICAgcG9zaXRpb25zLm1hcChwb3NpdGlvbiA9PiB7XG4gICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgLi4uZGVmYXVsdFBvc2l0aW9uc1twb3NpdGlvbiBhcyBzdHJpbmddLFxuICAgICAgICBwYW5lbENsYXNzOiBbZGVmYXVsdENsYXNzZXNbdHlwZV0sIGRlZmF1bHRDbGFzc2VzW3Bvc2l0aW9uXV1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhaXJzO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,94 @@
1
+ import { Directive, HostListener, Input, ElementRef } from '@angular/core';
2
+ import { PopoverService } from '../popover.service';
3
+ import { PopoverTypes } from '../popover.models';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../popover.service";
6
+ export class TooltipDirective {
7
+ constructor(elmenetRef, popoverService) {
8
+ this.elmenetRef = elmenetRef;
9
+ this.popoverService = popoverService;
10
+ this.text = '';
11
+ // eslint-disable-next-line @angular-eslint/no-input-rename
12
+ this.isVisible = false;
13
+ this.options = {
14
+ maxWidth: 400,
15
+ delay: 0
16
+ };
17
+ this.innerIsVisible = false;
18
+ this.timeoutHandle = null;
19
+ }
20
+ ngOnChanges(changes) {
21
+ this.origin = this.elmenetRef.nativeElement;
22
+ if (changes?.isVisible?.currentValue === true) {
23
+ if (this.innerIsVisible === false) {
24
+ this.open();
25
+ }
26
+ }
27
+ if (changes?.isVisible?.currentValue === false) {
28
+ if (this.innerIsVisible === true) {
29
+ this.close();
30
+ }
31
+ }
32
+ }
33
+ ngOnDestroy() {
34
+ this.hide();
35
+ }
36
+ show() {
37
+ if (this.options?.delay > 0) {
38
+ this.timeoutHandle = setTimeout(() => {
39
+ this.open();
40
+ }, +this.options?.delay);
41
+ }
42
+ else {
43
+ this.open();
44
+ }
45
+ }
46
+ hide() {
47
+ if (this.timeoutHandle != null) {
48
+ clearTimeout(this.timeoutHandle);
49
+ }
50
+ this.close();
51
+ }
52
+ open() {
53
+ if (this.innerIsVisible === false) {
54
+ this.popoverRef = this.popoverService.open({
55
+ content: this.text,
56
+ origin: this.origin,
57
+ options: {
58
+ type: PopoverTypes.Tooltip,
59
+ maxWidth: this.options.maxWidth
60
+ }
61
+ });
62
+ this.innerIsVisible = true;
63
+ }
64
+ }
65
+ close() {
66
+ if (this.popoverRef != null) {
67
+ this.popoverRef.close();
68
+ }
69
+ this.innerIsVisible = false;
70
+ }
71
+ }
72
+ TooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i1.PopoverService }], target: i0.ɵɵFactoryTarget.Directive });
73
+ TooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: TooltipDirective, selector: "[fngTooltip]", inputs: { text: ["fngTooltip", "text"], isVisible: ["fngTooltipVisible", "isVisible"], options: "options" }, host: { listeners: { "mouseenter": "show()", "mouseleave": "hide()" } }, usesOnChanges: true, ngImport: i0 });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TooltipDirective, decorators: [{
75
+ type: Directive,
76
+ args: [{
77
+ selector: '[fngTooltip]'
78
+ }]
79
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.PopoverService }]; }, propDecorators: { text: [{
80
+ type: Input,
81
+ args: ['fngTooltip']
82
+ }], isVisible: [{
83
+ type: Input,
84
+ args: ['fngTooltipVisible']
85
+ }], options: [{
86
+ type: Input
87
+ }], show: [{
88
+ type: HostListener,
89
+ args: ['mouseenter']
90
+ }], hide: [{
91
+ type: HostListener,
92
+ args: ['mouseleave']
93
+ }] } });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3BvcG92ZXJzL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBVWpELE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsWUFBb0IsVUFBc0IsRUFBVSxjQUE4QjtRQUE5RCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWjdELFNBQUksR0FBRyxFQUFFLENBQUM7UUFDL0IsMkRBQTJEO1FBQy9CLGNBQVMsR0FBYSxLQUFLLENBQUM7UUFDL0MsWUFBTyxHQUFtQjtZQUNqQyxRQUFRLEVBQUUsR0FBRztZQUNiLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQztRQUdNLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBRXdELENBQUM7SUFFdEYsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFFNUMsSUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDN0MsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLEtBQUssRUFBRTtnQkFDakMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7U0FDRjtRQUNELElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEtBQUssS0FBSyxFQUFFO1lBQzlDLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFHRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzFCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7SUFHRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRTtZQUM5QixZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFlBQVksQ0FBQyxPQUFPO29CQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO2lCQUNoQzthQUNGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVPLEtBQUs7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDOzs2R0F4RVUsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztpQkFDekI7OEhBRXNCLElBQUk7c0JBQXhCLEtBQUs7dUJBQUMsWUFBWTtnQkFFUyxTQUFTO3NCQUFwQyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDakIsT0FBTztzQkFBZixLQUFLO2dCQStCTixJQUFJO3NCQURILFlBQVk7dUJBQUMsWUFBWTtnQkFZMUIsSUFBSTtzQkFESCxZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBvcG92ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vcG9wb3Zlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvcG92ZXJSZWYgfSBmcm9tICcuLi9wb3BvdmVyLXJlZic7XG5pbXBvcnQgeyBQb3BvdmVyVHlwZXMgfSBmcm9tICcuLi9wb3BvdmVyLm1vZGVscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbHRpcE9wdGlvbnMge1xuICBtYXhXaWR0aD86IHN0cmluZyB8IG51bWJlcjtcbiAgZGVsYXk/OiBudW1iZXI7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmbmdUb29sdGlwXSdcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCdmbmdUb29sdGlwJykgdGV4dCA9ICcnO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2ZuZ1Rvb2x0aXBWaXNpYmxlJykgaXNWaXNpYmxlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBvcHRpb25zOiBUb29sdGlwT3B0aW9ucyA9IHtcbiAgICBtYXhXaWR0aDogNDAwLFxuICAgIGRlbGF5OiAwXG4gIH07XG4gIHByaXZhdGUgb3JpZ2luOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBwb3BvdmVyUmVmOiBQb3BvdmVyUmVmO1xuICBwcml2YXRlIGlubmVySXNWaXNpYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgdGltZW91dEhhbmRsZSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbG1lbmV0UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHBvcG92ZXJTZXJ2aWNlOiBQb3BvdmVyU2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5vcmlnaW4gPSB0aGlzLmVsbWVuZXRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIGlmIChjaGFuZ2VzPy5pc1Zpc2libGU/LmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKHRoaXMuaW5uZXJJc1Zpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcz8uaXNWaXNpYmxlPy5jdXJyZW50VmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICBpZiAodGhpcy5pbm5lcklzVmlzaWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgc2hvdygpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zPy5kZWxheSA+IDApIHtcbiAgICAgIHRoaXMudGltZW91dEhhbmRsZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgIH0sICt0aGlzLm9wdGlvbnM/LmRlbGF5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIGhpZGUoKSB7XG4gICAgaWYgKHRoaXMudGltZW91dEhhbmRsZSAhPSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SGFuZGxlKTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuKCkge1xuICAgIGlmICh0aGlzLmlubmVySXNWaXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5wb3BvdmVyUmVmID0gdGhpcy5wb3BvdmVyU2VydmljZS5vcGVuKHtcbiAgICAgICAgY29udGVudDogdGhpcy50ZXh0LFxuICAgICAgICBvcmlnaW46IHRoaXMub3JpZ2luLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdHlwZTogUG9wb3ZlclR5cGVzLlRvb2x0aXAsXG4gICAgICAgICAgbWF4V2lkdGg6IHRoaXMub3B0aW9ucy5tYXhXaWR0aFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5uZXJJc1Zpc2libGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMucG9wb3ZlclJlZiAhPSBudWxsKSB7XG4gICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICB9XG4gICAgdGhpcy5pbm5lcklzVmlzaWJsZSA9IGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ProgressComponent {
4
+ constructor() {
5
+ this.background = 'white';
6
+ }
7
+ }
8
+ ProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ ProgressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ProgressComponent, selector: "fng-progress", inputs: { progress: "progress", error: "error", background: "background" }, ngImport: i0, template: "<div class=\"fwe-progress\">\n <div\n class=\"fwe-progress-bar\"\n role=\"progressbar\"\n [style.width.%]=\"progress\"\n [class.fwe-bg-red]=\"error\"\n [class.fwe-progress-bar-black]=\"background === 'black'\"\n [class.fwe-progress-bar-background]=\"background === 'background'\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n ></div>\n</div>\n" });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ProgressComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'fng-progress', template: "<div class=\"fwe-progress\">\n <div\n class=\"fwe-progress-bar\"\n role=\"progressbar\"\n [style.width.%]=\"progress\"\n [class.fwe-bg-red]=\"error\"\n [class.fwe-progress-bar-black]=\"background === 'black'\"\n [class.fwe-progress-bar-background]=\"background === 'background'\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n ></div>\n</div>\n" }]
13
+ }], propDecorators: { progress: [{
14
+ type: Input
15
+ }], error: [{
16
+ type: Input
17
+ }], background: [{
18
+ type: Input
19
+ }] } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9wcm9ncmVzcy9wcm9ncmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3Byb2dyZXNzL3Byb2dyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1qRCxNQUFNLE9BQU8saUJBQWlCO0lBSjlCO1FBT1csZUFBVSxHQUFxQyxPQUFPLENBQUM7S0FDakU7OzhHQUpZLGlCQUFpQjtrR0FBakIsaUJBQWlCLGdJQ045Qiw0WkFhQTsyRkRQYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsY0FBYzs4QkFJZixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmbmctcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHJvZ3Jlc3M6IG51bWJlcjtcbiAgQElucHV0KCkgZXJyb3I6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJhY2tncm91bmQ6ICd3aGl0ZScgfCAnYmFja2dyb3VuZCcgfCAnYmxhY2snID0gJ3doaXRlJztcbn1cbiIsIjxkaXYgY2xhc3M9XCJmd2UtcHJvZ3Jlc3NcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZndlLXByb2dyZXNzLWJhclwiXG4gICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICBbc3R5bGUud2lkdGguJV09XCJwcm9ncmVzc1wiXG4gICAgW2NsYXNzLmZ3ZS1iZy1yZWRdPVwiZXJyb3JcIlxuICAgIFtjbGFzcy5md2UtcHJvZ3Jlc3MtYmFyLWJsYWNrXT1cImJhY2tncm91bmQgPT09ICdibGFjaydcIlxuICAgIFtjbGFzcy5md2UtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRdPVwiYmFja2dyb3VuZCA9PT0gJ2JhY2tncm91bmQnXCJcbiAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInByb2dyZXNzXCJcbiAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './scrollable.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3Njcm9sbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY3JvbGxhYmxlLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,72 @@
1
+ import { Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';
2
+ import SimpleBar from 'simplebar';
3
+ import * as i0 from "@angular/core";
4
+ export class ScrollableDirective {
5
+ constructor(el, ngZone, renderer) {
6
+ this.el = el;
7
+ this.ngZone = ngZone;
8
+ this.renderer = renderer;
9
+ this.scrollbarMinSize = 25;
10
+ this.isScrolling = false;
11
+ }
12
+ ngOnChanges(changes) {
13
+ if (changes?.viewReady.currentValue === true) {
14
+ this.initScrollbar();
15
+ this.initResizeObserver();
16
+ }
17
+ }
18
+ ngOnDestroy() {
19
+ this.resizeObserver?.disconnect();
20
+ }
21
+ initScrollbar() {
22
+ const el = this.el.nativeElement;
23
+ // yes, we explict want to run outside angular to avoid unnecessary change detection cycles
24
+ this.ngZone.runOutsideAngular(() => {
25
+ this.sb = new SimpleBar(el, { scrollbarMinSize: this.scrollbarMinSize });
26
+ this.sb.getScrollElement().addEventListener('scroll', this.delay(() => {
27
+ // triggered on scroll stop
28
+ this.isScrolling = false;
29
+ }), false);
30
+ });
31
+ this.updateMaxWidth();
32
+ }
33
+ initResizeObserver() {
34
+ const el = this.el.nativeElement;
35
+ this.resizeObserver = new ResizeObserver(() => {
36
+ this.updateMaxWidth();
37
+ });
38
+ this.resizeObserver.observe(el);
39
+ }
40
+ updateMaxWidth() {
41
+ const el = this.el.nativeElement;
42
+ const wrapper = el.querySelector('.simplebar-content-wrapper');
43
+ const width = el.getBoundingClientRect().width;
44
+ this.renderer.setStyle(wrapper, 'max-width', width + 'px');
45
+ }
46
+ delay(callback) {
47
+ let timer;
48
+ return () => {
49
+ if (!this.isScrolling) {
50
+ // triggered on scroll start
51
+ this.isScrolling = true;
52
+ }
53
+ window.clearTimeout(timer);
54
+ timer = window.setTimeout(callback, 50);
55
+ };
56
+ }
57
+ }
58
+ ScrollableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
59
+ ScrollableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: ScrollableDirective, selector: "[fngScrollable]", inputs: { scrollbarMinSize: ["fngScrollableScrollbarMinSize", "scrollbarMinSize"], viewReady: ["fngScrollableViewReady", "viewReady"] }, usesOnChanges: true, ngImport: i0 });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ScrollableDirective, decorators: [{
61
+ type: Directive,
62
+ args: [{
63
+ selector: '[fngScrollable]'
64
+ }]
65
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { scrollbarMinSize: [{
66
+ type: Input,
67
+ args: ['fngScrollableScrollbarMinSize']
68
+ }], viewReady: [{
69
+ type: Input,
70
+ args: ['fngScrollableViewReady']
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3Njcm9sbC9zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBNEIsS0FBSyxFQUFpQixNQUFNLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQzs7QUFTbEMsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixZQUFvQixFQUFjLEVBQVUsTUFBYyxFQUFVLFFBQW1CO1FBQW5FLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVAvQyxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFJOUQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFHOEQsQ0FBQztJQUUzRixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLEVBQUUsU0FBUyxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sRUFBRSxHQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUM5QywyRkFBMkY7UUFDM0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDakMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FDekMsUUFBUSxFQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNkLDJCQUEyQjtnQkFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxDQUNOLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sRUFBRSxHQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUM1QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLEVBQUUsR0FBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQWE7UUFDekIsSUFBSSxLQUFhLENBQUM7UUFDbEIsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDckIsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUN6QjtZQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztJQUNKLENBQUM7O2dIQWhFVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCOzhJQUV5QyxnQkFBZ0I7c0JBQXZELEtBQUs7dUJBQUMsK0JBQStCO2dCQUNMLFNBQVM7c0JBQXpDLEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIElucHV0LCBBZnRlclZpZXdJbml0LCBOZ1pvbmUsIFJlbmRlcmVyMiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgU2ltcGxlQmFyIGZyb20gJ3NpbXBsZWJhcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nyb2xsYWJsZUF3YXJlIGV4dGVuZHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHNjcm9sbGFibGVWaWV3UmVhZHk6IGJvb2xlYW47XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmbmdTY3JvbGxhYmxlXSdcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCdmbmdTY3JvbGxhYmxlU2Nyb2xsYmFyTWluU2l6ZScpIHNjcm9sbGJhck1pblNpemU6IG51bWJlciA9IDI1O1xuICBASW5wdXQoJ2ZuZ1Njcm9sbGFibGVWaWV3UmVhZHknKSB2aWV3UmVhZHk6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBzYjogU2ltcGxlQmFyO1xuICBwcml2YXRlIGlzU2Nyb2xsaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXM/LnZpZXdSZWFkeS5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuaW5pdFNjcm9sbGJhcigpO1xuICAgICAgdGhpcy5pbml0UmVzaXplT2JzZXJ2ZXIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTY3JvbGxiYXIoKSB7XG4gICAgY29uc3QgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIC8vIHllcywgd2UgZXhwbGljdCB3YW50IHRvIHJ1biBvdXRzaWRlIGFuZ3VsYXIgdG8gYXZvaWQgdW5uZWNlc3NhcnkgY2hhbmdlIGRldGVjdGlvbiBjeWNsZXNcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNiID0gbmV3IFNpbXBsZUJhcihlbCwgeyBzY3JvbGxiYXJNaW5TaXplOiB0aGlzLnNjcm9sbGJhck1pblNpemUgfSk7XG4gICAgICB0aGlzLnNiLmdldFNjcm9sbEVsZW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnc2Nyb2xsJyxcbiAgICAgICAgdGhpcy5kZWxheSgoKSA9PiB7XG4gICAgICAgICAgLy8gdHJpZ2dlcmVkIG9uIHNjcm9sbCBzdG9wXG4gICAgICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVNYXhXaWR0aCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UmVzaXplT2JzZXJ2ZXIoKSB7XG4gICAgY29uc3QgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVNYXhXaWR0aCgpO1xuICAgIH0pO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1heFdpZHRoKCkge1xuICAgIGNvbnN0IGVsOiBIVE1MRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB3cmFwcGVyID0gZWwucXVlcnlTZWxlY3RvcignLnNpbXBsZWJhci1jb250ZW50LXdyYXBwZXInKTtcbiAgICBjb25zdCB3aWR0aCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUod3JhcHBlciwgJ21heC13aWR0aCcsIHdpZHRoICsgJ3B4Jyk7XG4gIH1cblxuICBwcml2YXRlIGRlbGF5KGNhbGxiYWNrOiBhbnkpIHtcbiAgICBsZXQgdGltZXI6IG51bWJlcjtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzU2Nyb2xsaW5nKSB7XG4gICAgICAgIC8vIHRyaWdnZXJlZCBvbiBzY3JvbGwgc3RhcnRcbiAgICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgNTApO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==