@acorex/components 5.0.13 → 5.0.17

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 (196) hide show
  1. package/{esm2015/acorex-components.js → esm2020/acorex-components.mjs} +0 -0
  2. package/{esm2015/lib/alert/alert-button.component.js → esm2020/lib/alert/alert-button.component.mjs} +3 -3
  3. package/{esm2015/lib/alert/alert-contnet.component.js → esm2020/lib/alert/alert-contnet.component.mjs} +3 -3
  4. package/{esm2015/lib/alert/alert-footer.component.js → esm2020/lib/alert/alert-footer.component.mjs} +3 -3
  5. package/{esm2015/lib/alert/alert-suffix.component.js → esm2020/lib/alert/alert-suffix.component.mjs} +3 -3
  6. package/{esm2015/lib/alert/alert-title.component.js → esm2020/lib/alert/alert-title.component.mjs} +3 -3
  7. package/esm2020/lib/alert/alert.component.mjs +124 -0
  8. package/{esm2015/lib/alert/alert.module.js → esm2020/lib/alert/alert.module.mjs} +4 -4
  9. package/{esm2015/lib/alert/index.js → esm2020/lib/alert/index.mjs} +0 -0
  10. package/{esm2015/lib/avatar/avatar.component.js → esm2020/lib/avatar/avatar.component.mjs} +5 -12
  11. package/{esm2015/lib/avatar/avatar.module.js → esm2020/lib/avatar/avatar.module.mjs} +4 -4
  12. package/{esm2015/lib/avatar/index.js → esm2020/lib/avatar/index.mjs} +0 -0
  13. package/{esm2015/lib/badge/badge.component.js → esm2020/lib/badge/badge.component.mjs} +5 -11
  14. package/{esm2015/lib/badge/badge.module.js → esm2020/lib/badge/badge.module.mjs} +4 -4
  15. package/{esm2015/lib/badge/index.js → esm2020/lib/badge/index.mjs} +0 -0
  16. package/{esm2015/lib/base/common.module.js → esm2020/lib/base/common.module.mjs} +4 -4
  17. package/{esm2015/lib/base/custom-cdk-overlay.service.js → esm2020/lib/base/custom-cdk-overlay.service.mjs} +6 -6
  18. package/{esm2015/lib/base/drawing.class.js → esm2020/lib/base/drawing.class.mjs} +0 -0
  19. package/{esm2015/lib/base/events.class.js → esm2020/lib/base/events.class.mjs} +0 -0
  20. package/{esm2015/lib/base/index.js → esm2020/lib/base/index.mjs} +0 -0
  21. package/{esm2015/lib/base/mixin/base-components.class.js → esm2020/lib/base/mixin/base-components.class.mjs} +10 -10
  22. package/{esm2015/lib/base/mixin/button-mixin.class.js → esm2020/lib/base/mixin/button-mixin.class.mjs} +0 -0
  23. package/{esm2015/lib/base/mixin/clickable-mixin.class.js → esm2020/lib/base/mixin/clickable-mixin.class.mjs} +0 -0
  24. package/{esm2015/lib/base/mixin/constratctor.js → esm2020/lib/base/mixin/constratctor.mjs} +0 -0
  25. package/esm2020/lib/base/mixin/datalist-component.class.mjs +96 -0
  26. package/esm2020/lib/base/mixin/dropdown-mixin.class.mjs +89 -0
  27. package/{esm2015/lib/base/mixin/index.js → esm2020/lib/base/mixin/index.mjs} +0 -0
  28. package/{esm2015/lib/base/mixin/interactive-mixin.class.js → esm2020/lib/base/mixin/interactive-mixin.class.mjs} +9 -9
  29. package/{esm2015/lib/base/mixin/loading-mixin.class.js → esm2020/lib/base/mixin/loading-mixin.class.mjs} +0 -0
  30. package/{esm2015/lib/base/mixin/mixin.class.js → esm2020/lib/base/mixin/mixin.class.mjs} +0 -0
  31. package/{esm2015/lib/base/mixin/selection-component.class.js → esm2020/lib/base/mixin/selection-component.class.mjs} +0 -0
  32. package/{esm2015/lib/base/mixin/sizable-mixin.class.js → esm2020/lib/base/mixin/sizable-mixin.class.mjs} +0 -0
  33. package/{esm2015/lib/base/mixin/textbox-mixin.class.js → esm2020/lib/base/mixin/textbox-mixin.class.mjs} +0 -0
  34. package/esm2020/lib/base/mixin/value-mixin.class.mjs +196 -0
  35. package/{esm2015/lib/base/overlay.service.js → esm2020/lib/base/overlay.service.mjs} +3 -3
  36. package/{esm2015/lib/base/responsive.directive.js → esm2020/lib/base/responsive.directive.mjs} +3 -3
  37. package/{esm2015/lib/base/styles.class.js → esm2020/lib/base/styles.class.mjs} +0 -0
  38. package/{esm2015/lib/button/button-group.component.js → esm2020/lib/button/button-group.component.mjs} +5 -12
  39. package/{esm2015/lib/button/button-item.class.js → esm2020/lib/button/button-item.class.mjs} +0 -0
  40. package/{esm2015/lib/button/button-item.component.js → esm2020/lib/button/button-item.component.mjs} +3 -3
  41. package/esm2020/lib/button/button.component.mjs +65 -0
  42. package/{esm2015/lib/button/button.module.js → esm2020/lib/button/button.module.mjs} +4 -4
  43. package/{esm2015/lib/button/index.js → esm2020/lib/button/index.mjs} +0 -0
  44. package/{esm2015/lib/calendar/calendar.class.js → esm2020/lib/calendar/calendar.class.mjs} +3 -3
  45. package/{esm2015/lib/calendar/calendar.component.js → esm2020/lib/calendar/calendar.component.mjs} +5 -12
  46. package/{esm2015/lib/calendar/calendar.module.js → esm2020/lib/calendar/calendar.module.mjs} +4 -4
  47. package/{esm2015/lib/calendar/index.js → esm2020/lib/calendar/index.mjs} +0 -0
  48. package/{esm2015/lib/carousel/carousel-arrows.component.js → esm2020/lib/carousel/carousel-arrows.component.mjs} +3 -3
  49. package/{esm2015/lib/carousel/carousel-item.component.js → esm2020/lib/carousel/carousel-item.component.mjs} +3 -3
  50. package/{esm2015/lib/carousel/carousel-pager.component.js → esm2020/lib/carousel/carousel-pager.component.mjs} +3 -3
  51. package/{esm2015/lib/carousel/carousel-splidejs.class.js → esm2020/lib/carousel/carousel-splidejs.class.mjs} +0 -0
  52. package/{esm2015/lib/carousel/carousel.class.js → esm2020/lib/carousel/carousel.class.mjs} +3 -3
  53. package/{esm2015/lib/carousel/carousel.component.js → esm2020/lib/carousel/carousel.component.mjs} +7 -15
  54. package/{esm2015/lib/carousel/carousel.module.js → esm2020/lib/carousel/carousel.module.mjs} +4 -4
  55. package/{esm2015/lib/carousel/index.js → esm2020/lib/carousel/index.mjs} +0 -0
  56. package/esm2020/lib/checkbox/checkbox.component.mjs +51 -0
  57. package/{esm2015/lib/checkbox/checkbox.module.js → esm2020/lib/checkbox/checkbox.module.mjs} +4 -4
  58. package/{esm2015/lib/checkbox/index.js → esm2020/lib/checkbox/index.mjs} +0 -0
  59. package/esm2020/lib/datalist/datalist.component.mjs +73 -0
  60. package/{esm2015/lib/datalist/datalist.module.js → esm2020/lib/datalist/datalist.module.mjs} +4 -4
  61. package/{esm2015/lib/datalist/index.js → esm2020/lib/datalist/index.mjs} +0 -0
  62. package/esm2020/lib/datepicker/datepicker.component.mjs +125 -0
  63. package/{esm2015/lib/datepicker/datepicker.module.js → esm2020/lib/datepicker/datepicker.module.mjs} +4 -4
  64. package/{esm2015/lib/datepicker/index.js → esm2020/lib/datepicker/index.mjs} +0 -0
  65. package/{esm2015/lib/decorators/content.component.js → esm2020/lib/decorators/content.component.mjs} +3 -3
  66. package/{esm2015/lib/decorators/decorators.module.js → esm2020/lib/decorators/decorators.module.mjs} +4 -4
  67. package/{esm2015/lib/decorators/index.js → esm2020/lib/decorators/index.mjs} +0 -0
  68. package/{esm2015/lib/decorators/prefix.component.js → esm2020/lib/decorators/prefix.component.mjs} +3 -3
  69. package/{esm2015/lib/decorators/suffix.component.js → esm2020/lib/decorators/suffix.component.mjs} +3 -3
  70. package/{esm2015/lib/dialog/dialog.class.js → esm2020/lib/dialog/dialog.class.mjs} +0 -0
  71. package/{esm2015/lib/dialog/dialog.component.js → esm2020/lib/dialog/dialog.component.mjs} +5 -10
  72. package/{esm2015/lib/dialog/dialog.module.js → esm2020/lib/dialog/dialog.module.mjs} +4 -4
  73. package/esm2020/lib/dialog/dialog.service.mjs +145 -0
  74. package/{esm2015/lib/dialog/index.js → esm2020/lib/dialog/index.mjs} +0 -0
  75. package/{esm2015/lib/drawer/drawer-container.component.js → esm2020/lib/drawer/drawer-container.component.mjs} +3 -3
  76. package/{esm2015/lib/drawer/drawer-content.component.js → esm2020/lib/drawer/drawer-content.component.mjs} +3 -3
  77. package/{esm2015/lib/drawer/drawer.component.js → esm2020/lib/drawer/drawer.component.mjs} +3 -3
  78. package/{esm2015/lib/drawer/drawer.module.js → esm2020/lib/drawer/drawer.module.mjs} +4 -4
  79. package/{esm2015/lib/drawer/index.js → esm2020/lib/drawer/index.mjs} +0 -0
  80. package/esm2020/lib/dropdown/dropdown-panel.component.mjs +80 -0
  81. package/esm2020/lib/dropdown/dropdown.component.mjs +28 -0
  82. package/{esm2015/lib/dropdown/dropdown.module.js → esm2020/lib/dropdown/dropdown.module.mjs} +4 -4
  83. package/{esm2015/lib/dropdown/index.js → esm2020/lib/dropdown/index.mjs} +0 -0
  84. package/{esm2015/lib/form/form-field.component.js → esm2020/lib/form/form-field.component.mjs} +3 -3
  85. package/{esm2015/lib/form/form-field.module.js → esm2020/lib/form/form-field.module.mjs} +4 -4
  86. package/{esm2015/lib/form/form-hint.component.js → esm2020/lib/form/form-hint.component.mjs} +3 -3
  87. package/{esm2015/lib/form/form.component.js → esm2020/lib/form/form.component.mjs} +3 -3
  88. package/{esm2015/lib/form/index.js → esm2020/lib/form/index.mjs} +0 -0
  89. package/{esm2015/lib/icon/icon.component.js → esm2020/lib/icon/icon.component.mjs} +3 -3
  90. package/{esm2015/lib/icon/icon.module.js → esm2020/lib/icon/icon.module.mjs} +4 -4
  91. package/{esm2015/lib/icon/index.js → esm2020/lib/icon/index.mjs} +0 -0
  92. package/{esm2015/lib/input-mask/index.js → esm2020/lib/input-mask/index.mjs} +0 -0
  93. package/{esm2015/lib/input-mask/input-mask.component.js → esm2020/lib/input-mask/input-mask.component.mjs} +3 -3
  94. package/{esm2015/lib/input-mask/input-mask.module.js → esm2020/lib/input-mask/input-mask.module.mjs} +4 -4
  95. package/{esm2015/lib/label/index.js → esm2020/lib/label/index.mjs} +0 -0
  96. package/{esm2015/lib/label/label.component.js → esm2020/lib/label/label.component.mjs} +5 -10
  97. package/{esm2015/lib/label/label.module.js → esm2020/lib/label/label.module.mjs} +4 -4
  98. package/{esm2015/lib/loading/index.js → esm2020/lib/loading/index.mjs} +0 -0
  99. package/{esm2015/lib/loading/loading-spinner.component.js → esm2020/lib/loading/loading-spinner.component.mjs} +3 -3
  100. package/{esm2015/lib/loading/loading.component.js → esm2020/lib/loading/loading.component.mjs} +3 -3
  101. package/{esm2015/lib/loading/loading.directive.js → esm2020/lib/loading/loading.directive.mjs} +3 -3
  102. package/{esm2015/lib/loading/loading.module.js → esm2020/lib/loading/loading.module.mjs} +4 -4
  103. package/esm2020/lib/loading/loading.service.mjs +154 -0
  104. package/{esm2015/lib/number-box/index.js → esm2020/lib/number-box/index.mjs} +0 -0
  105. package/{esm2015/lib/number-box/number-box.component.js → esm2020/lib/number-box/number-box.component.mjs} +9 -17
  106. package/{esm2015/lib/number-box/number-box.module.js → esm2020/lib/number-box/number-box.module.mjs} +4 -4
  107. package/{esm2015/lib/page/base-page.class.js → esm2020/lib/page/base-page.class.mjs} +3 -3
  108. package/{esm2015/lib/page/index.js → esm2020/lib/page/index.mjs} +0 -0
  109. package/{esm2015/lib/page/page-footer.component.js → esm2020/lib/page/page-footer.component.mjs} +3 -3
  110. package/{esm2015/lib/page/page.component.js → esm2020/lib/page/page.component.mjs} +3 -3
  111. package/{esm2015/lib/page/page.module.js → esm2020/lib/page/page.module.mjs} +4 -4
  112. package/{esm2015/lib/password-box/index.js → esm2020/lib/password-box/index.mjs} +0 -0
  113. package/{esm2015/lib/password-box/password-box.component.js → esm2020/lib/password-box/password-box.component.mjs} +7 -15
  114. package/{esm2015/lib/password-box/password-box.module.js → esm2020/lib/password-box/password-box.module.mjs} +4 -4
  115. package/{esm2015/lib/popover/index.js → esm2020/lib/popover/index.mjs} +0 -0
  116. package/esm2020/lib/popover/popover.component.mjs +213 -0
  117. package/{esm2015/lib/popover/popover.module.js → esm2020/lib/popover/popover.module.mjs} +4 -4
  118. package/{esm2015/lib/popup/index.js → esm2020/lib/popup/index.mjs} +0 -0
  119. package/{esm2015/lib/popup/popup.component.js → esm2020/lib/popup/popup.component.mjs} +5 -10
  120. package/{esm2015/lib/popup/popup.module.js → esm2020/lib/popup/popup.module.mjs} +4 -4
  121. package/esm2020/lib/popup/popup.service.mjs +93 -0
  122. package/{esm2015/lib/radio/index.js → esm2020/lib/radio/index.mjs} +0 -0
  123. package/esm2020/lib/radio/radio.component.mjs +16 -0
  124. package/{esm2015/lib/radio/radio.module.js → esm2020/lib/radio/radio.module.mjs} +4 -4
  125. package/{esm2015/lib/range-slider/index.js → esm2020/lib/range-slider/index.mjs} +0 -0
  126. package/{esm2015/lib/range-slider/range-slider.component.js → esm2020/lib/range-slider/range-slider.component.mjs} +5 -11
  127. package/{esm2015/lib/range-slider/range-slider.module.js → esm2020/lib/range-slider/range-slider.module.mjs} +4 -4
  128. package/{esm2015/lib/selectbox/index.js → esm2020/lib/selectbox/index.mjs} +0 -0
  129. package/esm2020/lib/selectbox/selectbox.component.mjs +193 -0
  130. package/{esm2015/lib/selectbox/selectbox.module.js → esm2020/lib/selectbox/selectbox.module.mjs} +4 -4
  131. package/{esm2015/lib/selection-list/index.js → esm2020/lib/selection-list/index.mjs} +0 -0
  132. package/esm2020/lib/selection-list/selection-list.component.mjs +40 -0
  133. package/{esm2015/lib/selection-list/selection-list.module.js → esm2020/lib/selection-list/selection-list.module.mjs} +4 -4
  134. package/{esm2015/lib/side-menu/index.js → esm2020/lib/side-menu/index.mjs} +0 -0
  135. package/{esm2015/lib/side-menu/side-menu.component.js → esm2020/lib/side-menu/side-menu.component.mjs} +5 -11
  136. package/{esm2015/lib/side-menu/side-menu.module.js → esm2020/lib/side-menu/side-menu.module.mjs} +4 -4
  137. package/{esm2015/lib/switch/index.js → esm2020/lib/switch/index.mjs} +0 -0
  138. package/{esm2015/lib/switch/switch.component.js → esm2020/lib/switch/switch.component.mjs} +5 -12
  139. package/{esm2015/lib/switch/switch.module.js → esm2020/lib/switch/switch.module.mjs} +6 -7
  140. package/{esm2015/lib/tabs/index.js → esm2020/lib/tabs/index.mjs} +0 -0
  141. package/{esm2015/lib/tabs/tab-content.directive.js → esm2020/lib/tabs/tab-content.directive.mjs} +3 -3
  142. package/{esm2015/lib/tabs/tab-item.component.js → esm2020/lib/tabs/tab-item.component.mjs} +3 -3
  143. package/{esm2015/lib/tabs/tab-strip.component.js → esm2020/lib/tabs/tab-strip.component.mjs} +5 -12
  144. package/{esm2015/lib/tabs/tab-view.component.js → esm2020/lib/tabs/tab-view.component.mjs} +5 -12
  145. package/{esm2015/lib/tabs/tab.component.js → esm2020/lib/tabs/tab.component.mjs} +3 -3
  146. package/{esm2015/lib/tabs/tabs.class.js → esm2020/lib/tabs/tabs.class.mjs} +0 -0
  147. package/{esm2015/lib/tabs/tabs.component.js → esm2020/lib/tabs/tabs.component.mjs} +3 -3
  148. package/{esm2015/lib/tabs/tabs.module.js → esm2020/lib/tabs/tabs.module.mjs} +4 -4
  149. package/{esm2015/lib/textbox/index.js → esm2020/lib/textbox/index.mjs} +0 -0
  150. package/{esm2015/lib/textbox/textbox.component.js → esm2020/lib/textbox/textbox.component.mjs} +7 -15
  151. package/{esm2015/lib/textbox/textbox.module.js → esm2020/lib/textbox/textbox.module.mjs} +4 -4
  152. package/{esm2015/lib/time-box/index.js → esm2020/lib/time-box/index.mjs} +0 -0
  153. package/{esm2015/lib/time-box/time-box.component.js → esm2020/lib/time-box/time-box.component.mjs} +5 -13
  154. package/{esm2015/lib/time-box/time-box.module.js → esm2020/lib/time-box/time-box.module.mjs} +4 -4
  155. package/{esm2015/lib/toast/index.js → esm2020/lib/toast/index.mjs} +0 -0
  156. package/{esm2015/lib/toast/toast.class.js → esm2020/lib/toast/toast.class.mjs} +0 -0
  157. package/esm2020/lib/toast/toast.component.mjs +44 -0
  158. package/{esm2015/lib/toast/toast.module.js → esm2020/lib/toast/toast.module.mjs} +4 -4
  159. package/{esm2015/lib/toast/toast.service.js → esm2020/lib/toast/toast.service.mjs} +3 -3
  160. package/{esm2015/lib/tooltip/index.js → esm2020/lib/tooltip/index.mjs} +0 -0
  161. package/{esm2015/lib/tooltip/tooltip.component.js → esm2020/lib/tooltip/tooltip.component.mjs} +6 -13
  162. package/{esm2015/lib/tooltip/tooltip.directive.js → esm2020/lib/tooltip/tooltip.directive.mjs} +3 -3
  163. package/{esm2015/lib/tooltip/tooltip.module.js → esm2020/lib/tooltip/tooltip.module.mjs} +4 -4
  164. package/{esm2015/lib/validation/index.js → esm2020/lib/validation/index.mjs} +0 -0
  165. package/{esm2015/lib/validation/validation-rule.widget.js → esm2020/lib/validation/validation-rule.widget.mjs} +3 -3
  166. package/{esm2015/lib/validation/validation.class.js → esm2020/lib/validation/validation.class.mjs} +0 -0
  167. package/{esm2015/lib/validation/validation.module.js → esm2020/lib/validation/validation.module.mjs} +4 -4
  168. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  169. package/fesm2015/acorex-components.mjs +6423 -0
  170. package/fesm2015/acorex-components.mjs.map +1 -0
  171. package/{fesm2015/acorex-components.js → fesm2020/acorex-components.mjs} +481 -694
  172. package/fesm2020/acorex-components.mjs.map +1 -0
  173. package/lib/base/mixin/mixin.class.d.ts +1 -1
  174. package/lib/datepicker/datepicker.component.d.ts +1 -1
  175. package/package.json +22 -8
  176. package/bundles/acorex-components.umd.js +0 -7723
  177. package/bundles/acorex-components.umd.js.map +0 -1
  178. package/esm2015/lib/alert/alert.component.js +0 -130
  179. package/esm2015/lib/base/mixin/datalist-component.class.js +0 -97
  180. package/esm2015/lib/base/mixin/dropdown-mixin.class.js +0 -90
  181. package/esm2015/lib/base/mixin/value-mixin.class.js +0 -195
  182. package/esm2015/lib/button/button.component.js +0 -73
  183. package/esm2015/lib/checkbox/checkbox.component.js +0 -58
  184. package/esm2015/lib/datalist/datalist.component.js +0 -81
  185. package/esm2015/lib/datepicker/datepicker.component.js +0 -134
  186. package/esm2015/lib/dialog/dialog.service.js +0 -146
  187. package/esm2015/lib/dropdown/dropdown-panel.component.js +0 -87
  188. package/esm2015/lib/dropdown/dropdown.component.js +0 -35
  189. package/esm2015/lib/loading/loading.service.js +0 -155
  190. package/esm2015/lib/popover/popover.component.js +0 -220
  191. package/esm2015/lib/popup/popup.service.js +0 -94
  192. package/esm2015/lib/radio/radio.component.js +0 -22
  193. package/esm2015/lib/selectbox/selectbox.component.js +0 -201
  194. package/esm2015/lib/selection-list/selection-list.component.js +0 -47
  195. package/esm2015/lib/toast/toast.component.js +0 -50
  196. package/fesm2015/acorex-components.js.map +0 -1
@@ -1,87 +0,0 @@
1
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, ViewChildren, EventEmitter, Output, Input, ViewChild, Optional } from '@angular/core';
2
- import { AXBaseDropdownMixin } from '../base';
3
- import { DROPDOWN_INPUTS, DROPDOWN_OUTPUT } from '../base/mixin/dropdown-mixin.class';
4
- import { AXButtonItemComponent } from '../button';
5
- import { AXPopoverComponent } from '../popover';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../button";
8
- import * as i2 from "../popover/popover.component";
9
- import * as i3 from "../button/button-item.component";
10
- import * as i4 from "../decorators/prefix.component";
11
- import * as i5 from "../icon/icon.component";
12
- import * as i6 from "@angular/common";
13
- export class AXDropdownPanelComponent extends AXBaseDropdownMixin {
14
- constructor(elementRef, cdr, _parent) {
15
- super(elementRef, cdr);
16
- this._parent = _parent;
17
- this.onItemClick = new EventEmitter();
18
- this._needBorder = false;
19
- this._subs = [];
20
- this._target = this._parent._getHostElement();
21
- }
22
- get items() {
23
- return this._items || [];
24
- }
25
- set items(v) {
26
- this._items = v;
27
- this._cdr.markForCheck();
28
- }
29
- _getAllButtons() {
30
- return [...Array.from(this._viewButtons), ...Array.from(this._contentButtons)];
31
- }
32
- onViewInit() {
33
- super.onViewInit();
34
- this._getAllButtons().forEach(c => {
35
- this._needBorder = true;
36
- this._subs.push(c.onClick.subscribe(this._handleOnItemClick.bind(this)));
37
- this._cdr.markForCheck();
38
- });
39
- }
40
- onDestroy() {
41
- this._subs.forEach(s => {
42
- s === null || s === void 0 ? void 0 : s.unsubscribe();
43
- });
44
- }
45
- _emitOnItemClickEvent(e, item) {
46
- this.onItemClick.emit({
47
- component: this,
48
- htmlElement: this._getHostElement(),
49
- nativeEvent: e.nativeEvent,
50
- name: item.name,
51
- data: item.data,
52
- });
53
- }
54
- _handleOnItemClick(e) {
55
- this.close();
56
- this._emitOnItemClickEvent(e, e.component);
57
- }
58
- }
59
- AXDropdownPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDropdownPanelComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.AXButtonComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
60
- AXDropdownPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: { isOpen: "isOpen", fitParent: "fitParent", dropdownWidth: "dropdownWidth", position: "position", items: "items" }, outputs: { onOpened: "onOpened", onClosed: "onClosed", onItemClick: "onItemClick" }, queries: [{ propertyName: "_contentButtons", predicate: AXButtonItemComponent }], viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true }, { propertyName: "_viewButtons", predicate: AXButtonItemComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'toggle'\" [closeTrigger]=\"'clickout'\">\r\n <div class=\"ax-overlay-pane\" [class.ax-dropdown-list]=\"_needBorder\" >\r\n <ng-container *ngIf=\"items && items.length;else panelTpl\">\r\n <ax-button-item [text]=\"item.text\" [color]=\"item.color\" *ngFor=\"let item of items\">\r\n <ax-prefix *ngIf=\"item.iconClass\">\r\n <ax-icon [icon]=\"item.iconClass\"></ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n </ng-container>\r\n <ng-template #panelTpl>\r\n <ng-content select=\"[panel],ax-button-item\">\r\n </ng-content>\r\n </ng-template>\r\n </div>\r\n</ax-popover>", components: [{ type: i2.AXPopoverComponent, selector: "ax-popover", inputs: ["target", "position", "openTrigger", "closeTrigger", "hasBackdrop", "backdropClass"] }, { type: i3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["text", "tooltip", "selected", "seperated", "name", "data", "color"] }, { type: i4.AXDecoratorPrefixComponent, selector: "ax-prefix" }, { type: i5.AXIconComponent, selector: "ax-icon", inputs: ["icon"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDropdownPanelComponent, decorators: [{
62
- type: Component,
63
- args: [{
64
- selector: 'ax-dropdown-panel',
65
- templateUrl: './dropdown-panel.component.html',
66
- changeDetection: ChangeDetectionStrategy.OnPush,
67
- encapsulation: ViewEncapsulation.None,
68
- inputs: [...DROPDOWN_INPUTS],
69
- outputs: [...DROPDOWN_OUTPUT],
70
- }]
71
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.AXButtonComponent, decorators: [{
72
- type: Optional
73
- }] }]; }, propDecorators: { _contentButtons: [{
74
- type: ContentChildren,
75
- args: [AXButtonItemComponent]
76
- }], _viewButtons: [{
77
- type: ViewChildren,
78
- args: [AXButtonItemComponent]
79
- }], onItemClick: [{
80
- type: Output
81
- }], popover: [{
82
- type: ViewChild,
83
- args: [AXPopoverComponent]
84
- }], items: [{
85
- type: Input
86
- }] } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUd2QixlQUFlLEVBQ2YsWUFBWSxFQUVaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFvQyxNQUFNLFNBQVMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBNEIsTUFBTSxvQ0FBb0MsQ0FBQztBQUVoSCxPQUFPLEVBQW1DLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7QUFXaEQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG1CQUFtQjtJQUU3RCxZQUNJLFVBQXNCLEVBQ3RCLEdBQXNCLEVBRWYsT0FBMEI7UUFFakMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUZoQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQVVyQyxnQkFBVyxHQUFxQyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQWV2RixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQXZCdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFZRCxJQUNXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFXLEtBQUssQ0FBQyxDQUFpQjtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFNTyxjQUFjO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsVUFBVTtRQUNOLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25CLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxDQUFlLEVBQUUsSUFBMkI7UUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDbEIsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNuQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7WUFDMUIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2xCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxDQUFlO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRS9DLENBQUM7O3FIQXJFUSx3QkFBd0I7eUdBQXhCLHdCQUF3QiwwU0FZaEIscUJBQXFCLHNFQU0zQixrQkFBa0Isa0VBTGYscUJBQXFCLHVFQzVDdkMsc3dCQWNhOzJGRGlCQSx3QkFBd0I7a0JBUnBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQztvQkFDNUIsT0FBTyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUM7aUJBQ2hDOzswQkFNUSxRQUFROzRDQU8yQixlQUFlO3NCQUF0RCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFDRCxZQUFZO3NCQUFoRCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFHbkMsV0FBVztzQkFEVixNQUFNO2dCQUlQLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxrQkFBa0I7Z0JBS2xCLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgVmlld0NoaWxkcmVuLFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBPcHRpb25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQVhCYXNlRHJvcGRvd25NaXhpbiwgQVhCdXR0b25DbGlja0V2ZW50LCBBWENsaWNrRXZlbnQgfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgRFJPUERPV05fSU5QVVRTLCBEUk9QRE9XTl9PVVRQVVQsIF9Ecm9wZG93bkNvbXBvbmVuZXRNaXhpbiB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vZHJvcGRvd24tbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBfSW50ZXJhY3RpdmVDb21wb25lbmV0TWl4aW4gfSBmcm9tICcuLi9iYXNlL21peGluL2ludGVyYWN0aXZlLW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgQVhCdXR0b25Db21wb25lbnQsIEFYQnV0dG9uSXRlbSwgQVhCdXR0b25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uJztcclxuaW1wb3J0IHsgQVhQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wb3Zlcic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2F4LWRyb3Bkb3duLXBhbmVsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi1wYW5lbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBpbnB1dHM6IFsuLi5EUk9QRE9XTl9JTlBVVFNdLFxyXG4gICAgb3V0cHV0czogWy4uLkRST1BET1dOX09VVFBVVF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWERyb3Bkb3duUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VEcm9wZG93bk1peGluIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgQE9wdGlvbmFsKClcclxuICAgICAgICBwdWJsaWMgX3BhcmVudDogQVhCdXR0b25Db21wb25lbnQsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xyXG4gICAgICAgIHRoaXMuX3RhcmdldCA9IHRoaXMuX3BhcmVudC5fZ2V0SG9zdEVsZW1lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKEFYQnV0dG9uSXRlbUNvbXBvbmVudCkgX2NvbnRlbnRCdXR0b25zOiBRdWVyeUxpc3Q8QVhCdXR0b25JdGVtQ29tcG9uZW50PjtcclxuICAgIEBWaWV3Q2hpbGRyZW4oQVhCdXR0b25JdGVtQ29tcG9uZW50KSBfdmlld0J1dHRvbnM6IFF1ZXJ5TGlzdDxBWEJ1dHRvbkl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgb25JdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWEJ1dHRvbkNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEJ1dHRvbkNsaWNrRXZlbnQ+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZChBWFBvcG92ZXJDb21wb25lbnQpXHJcbiAgICBwb3BvdmVyOiBBWFBvcG92ZXJDb21wb25lbnQ7XHJcblxyXG4gICAgcHJpdmF0ZSBfaXRlbXM6IEFYQnV0dG9uSXRlbVtdO1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgaXRlbXMoKTogQVhCdXR0b25JdGVtW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcyB8fCBbXTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgaXRlbXModjogQVhCdXR0b25JdGVtW10pIHtcclxuICAgICAgICB0aGlzLl9pdGVtcyA9IHY7XHJcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIF9uZWVkQm9yZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICAgIF90YXJnZXQ6IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHByaXZhdGUgX2dldEFsbEJ1dHRvbnMoKTogQVhCdXR0b25JdGVtQ29tcG9uZW50W10ge1xyXG4gICAgICAgIHJldHVybiBbLi4uQXJyYXkuZnJvbSh0aGlzLl92aWV3QnV0dG9ucyksIC4uLkFycmF5LmZyb20odGhpcy5fY29udGVudEJ1dHRvbnMpXTtcclxuICAgIH1cclxuXHJcbiAgICBvblZpZXdJbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm9uVmlld0luaXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5fZ2V0QWxsQnV0dG9ucygpLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX25lZWRCb3JkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9zdWJzLnB1c2goYy5vbkNsaWNrLnN1YnNjcmliZSh0aGlzLl9oYW5kbGVPbkl0ZW1DbGljay5iaW5kKHRoaXMpKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgICAgICBzPy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIF9lbWl0T25JdGVtQ2xpY2tFdmVudChlOiBBWENsaWNrRXZlbnQsIGl0ZW06IEFYQnV0dG9uSXRlbUNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdCh7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuX2dldEhvc3RFbGVtZW50KCksXHJcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLm5hdGl2ZUV2ZW50LFxyXG4gICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgIGRhdGE6IGl0ZW0uZGF0YSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9oYW5kbGVPbkl0ZW1DbGljayhlOiBBWENsaWNrRXZlbnQpIHtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5fZW1pdE9uSXRlbUNsaWNrRXZlbnQoZSwgZS5jb21wb25lbnQpO1xyXG5cclxuICAgIH1cclxufVxyXG4iLCI8YXgtcG9wb3ZlciBbdGFyZ2V0XT1cIl90YXJnZXRcIiBbcG9zaXRpb25dPVwicG9zaXRpb25cIiBbb3BlblRyaWdnZXJdPVwiJ3RvZ2dsZSdcIiBbY2xvc2VUcmlnZ2VyXT1cIidjbGlja291dCdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJheC1vdmVybGF5LXBhbmVcIiBbY2xhc3MuYXgtZHJvcGRvd24tbGlzdF09XCJfbmVlZEJvcmRlclwiID5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoO2Vsc2UgcGFuZWxUcGxcIj5cclxuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFt0ZXh0XT1cIml0ZW0udGV4dFwiIFtjb2xvcl09XCJpdGVtLmNvbG9yXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDxheC1wcmVmaXggKm5nSWY9XCJpdGVtLmljb25DbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cIml0ZW0uaWNvbkNsYXNzXCI+PC9heC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XHJcbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNwYW5lbFRwbD5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BhbmVsXSxheC1idXR0b24taXRlbVwiPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L2F4LXBvcG92ZXI+Il19
@@ -1,35 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation } from '@angular/core';
2
- import { AXBaseDropdownMixin } from '../base';
3
- import { DROPDOWN_INPUTS, DROPDOWN_OUTPUT } from '../base/mixin/dropdown-mixin.class';
4
- import { INTERACTIVE_INPUTS, INTERACTIVE_OUTPUT } from '../base/mixin/interactive-mixin.class';
5
- import { AXPopoverComponent } from '../popover/popover.component';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../button/button.component";
8
- import * as i2 from "../icon/icon.component";
9
- import * as i3 from "../popover/popover.component";
10
- export class AXDropdownComponent extends AXBaseDropdownMixin {
11
- constructor(_elementRef, _cdr) {
12
- super(_elementRef, _cdr);
13
- this._target = this;
14
- }
15
- _handleArrowClickEvent() {
16
- this.toggle();
17
- }
18
- }
19
- AXDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
20
- AXDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: AXDropdownComponent, selector: "ax-drop-down", inputs: { isOpen: "isOpen", fitParent: "fitParent", dropdownWidth: "dropdownWidth", position: "position", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { onOpened: "onOpened", onClosed: "onClosed", onBlur: "onBlur", onFocus: "onFocus" }, viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-editor-container\" [class.ax-state-disabled]=\"disabled\">\r\n <ng-content select=\"ax-prefix\">\r\n </ng-content>\r\n <div class=\"ax-dropdown-content\" style=\"display: inline-flex;\" (click)=\"_handleArrowClickEvent()\">\r\n <ng-content select=\"[input]\">\r\n </ng-content>\r\n </div>\r\n <ax-button [disabled]=\"disabled\" [tabIndex]=\"-1\" [size]=\"size\" color=\"light\" look=\"blank\" (onClick)=\"_handleArrowClickEvent()\">\r\n <ax-icon icon=\"ax-ic ax-ic-chevron ax-transform ax--rotate-90\"></ax-icon>\r\n </ax-button>\r\n <ng-content select=\"ax-suffix\">\r\n </ng-content>\r\n</div>\r\n<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'manual'\" [closeTrigger]=\"'clickout'\">\r\n <div class=\"ax-overlay-pane\" [style.min-width.px]=\"dropdownWidth\">\r\n <ng-content select=\"[panel]\">\r\n </ng-content>\r\n </div>\r\n</ax-popover>", components: [{ type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "size", "text", "submitBehavior", "cancelBehavior", "color", "look", "toggleable", "selected"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange"] }, { type: i2.AXIconComponent, selector: "ax-icon", inputs: ["icon"] }, { type: i3.AXPopoverComponent, selector: "ax-popover", inputs: ["target", "position", "openTrigger", "closeTrigger", "hasBackdrop", "backdropClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDropdownComponent, decorators: [{
22
- type: Component,
23
- args: [{
24
- selector: 'ax-drop-down',
25
- templateUrl: './dropdown.component.html',
26
- inputs: [...DROPDOWN_INPUTS, ...INTERACTIVE_INPUTS],
27
- outputs: [...DROPDOWN_OUTPUT, ...INTERACTIVE_OUTPUT],
28
- encapsulation: ViewEncapsulation.None,
29
- changeDetection: ChangeDetectionStrategy.OnPush
30
- }]
31
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { popover: [{
32
- type: ViewChild,
33
- args: [AXPopoverComponent]
34
- }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBVWxFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxtQkFBbUI7SUFPeEQsWUFDSSxXQUF1QixFQUN2QixJQUF1QjtRQUV2QixLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7O2dIQWpCUSxtQkFBbUI7b0dBQW5CLG1CQUFtQixvVkFFakIsa0JBQWtCLHVFQ2hCakMsMDdCQWtCYTsyRkRKQSxtQkFBbUI7a0JBUi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFdBQVcsRUFBRSwyQkFBMkI7b0JBQ3hDLE1BQU0sRUFBRSxDQUFDLEdBQUcsZUFBZSxFQUFFLEdBQUcsa0JBQWtCLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxDQUFDLEdBQUcsZUFBZSxFQUFFLEdBQUcsa0JBQWtCLENBQUM7b0JBQ3BELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7aUlBSUcsT0FBTztzQkFETixTQUFTO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCwgQVhCYXNlRHJvcGRvd25NaXhpbiB9IGZyb20gJy4uL2Jhc2UnO1xyXG5pbXBvcnQgeyBEUk9QRE9XTl9JTlBVVFMsIERST1BET1dOX09VVFBVVCB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vZHJvcGRvd24tbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBJTlRFUkFDVElWRV9JTlBVVFMsIElOVEVSQUNUSVZFX09VVFBVVCB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vaW50ZXJhY3RpdmUtbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBBWFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdheC1kcm9wLWRvd24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICAgIGlucHV0czogWy4uLkRST1BET1dOX0lOUFVUUywgLi4uSU5URVJBQ1RJVkVfSU5QVVRTXSxcclxuICAgIG91dHB1dHM6IFsuLi5EUk9QRE9XTl9PVVRQVVQsIC4uLklOVEVSQUNUSVZFX09VVFBVVF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBBWEJhc2VEcm9wZG93bk1peGluIHtcclxuXHJcbiAgICBAVmlld0NoaWxkKEFYUG9wb3ZlckNvbXBvbmVudClcclxuICAgIHBvcG92ZXI6IEFYUG9wb3ZlckNvbXBvbmVudDtcclxuXHJcbiAgICBfdGFyZ2V0OiBBWEJhc2VDb21wb25lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9lbGVtZW50UmVmLCBfY2RyKTtcclxuICAgICAgICB0aGlzLl90YXJnZXQgPSB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVBcnJvd0NsaWNrRXZlbnQoKSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcclxuICAgIH1cclxufSIsIjxkaXYgY2xhc3M9XCJheC1lZGl0b3ItY29udGFpbmVyXCIgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj5cclxuICAgIDwvbmctY29udGVudD5cclxuICAgIDxkaXYgY2xhc3M9XCJheC1kcm9wZG93bi1jb250ZW50XCIgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtZmxleDtcIiAoY2xpY2spPVwiX2hhbmRsZUFycm93Q2xpY2tFdmVudCgpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lucHV0XVwiPlxyXG4gICAgICAgIDwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGF4LWJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbdGFiSW5kZXhdPVwiLTFcIiBbc2l6ZV09XCJzaXplXCIgY29sb3I9XCJsaWdodFwiIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cIl9oYW5kbGVBcnJvd0NsaWNrRXZlbnQoKVwiPlxyXG4gICAgICAgIDxheC1pY29uIGljb249XCJheC1pYyBheC1pYy1jaGV2cm9uIGF4LXRyYW5zZm9ybSBheC0tcm90YXRlLTkwXCI+PC9heC1pY29uPlxyXG4gICAgPC9heC1idXR0b24+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1zdWZmaXhcIj5cclxuICAgIDwvbmctY29udGVudD5cclxuPC9kaXY+XHJcbjxheC1wb3BvdmVyIFt0YXJnZXRdPVwiX3RhcmdldFwiIFtwb3NpdGlvbl09XCJwb3NpdGlvblwiIFtvcGVuVHJpZ2dlcl09XCInbWFudWFsJ1wiIFtjbG9zZVRyaWdnZXJdPVwiJ2NsaWNrb3V0J1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZVwiICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImRyb3Bkb3duV2lkdGhcIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcGFuZWxdXCI+XHJcbiAgICAgICAgPC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvYXgtcG9wb3Zlcj4iXX0=
@@ -1,155 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { asyncScheduler, BehaviorSubject } from 'rxjs';
3
- import { finalize, observeOn } from 'rxjs/operators';
4
- import { AXLoadingComponent } from './loading.component';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../base/overlay.service";
7
- const DEFAULT_LOADER_ID = '_DEFAULT';
8
- /**
9
- * Used for centrally setting/unsetting loading flags for components or services.
10
- * Should be connected to global HTTP interceptor which will unset
11
- * the loading flags in case an error happens using the clearLoadings() method.
12
- *
13
- * FAQ:
14
- * Q: How to change loading flag for a parent component?
15
- * A: Inject the parent component as a dependency to your constructor and
16
- * call loadingService.setLoading(parentComponent, STATE).
17
- *
18
- * Q: How to change loading flag for a child component?
19
- * A: Use a @ViewChild with component selector and pass the
20
- * reference of the child to setLoading method.
21
- *
22
- * Q: I need more loading indicators in my components. How to?
23
- * A: Assign a LoaderId to each indicator and then use them
24
- * with calls to methods of this service.
25
- */
26
- export class AXLoadingService {
27
- constructor(zoneRef, overlayService) {
28
- this.zoneRef = zoneRef;
29
- this.overlayService = overlayService;
30
- // WeakMap will remove components from itself upon
31
- // their garbage collection by JS runtime.
32
- this.loadingStates = new WeakMap();
33
- // Both loading state maps are kept in-sync such that
34
- // they can be used by both sync and async methods.
35
- this.loadingStates$ = new WeakMap();
36
- this._stack = [];
37
- }
38
- show(location) {
39
- let host;
40
- if (location) {
41
- host = location.closest('.ax-loading-host');
42
- }
43
- const containerElement = (host || location);
44
- const com = this.overlayService.show(AXLoadingComponent, {}, {
45
- closeOnClickOutside: false,
46
- containerElement,
47
- hasBackdrop: true,
48
- backdropClass: ['ax-loading-overlay'],
49
- scroll: 'block'
50
- });
51
- com.instance.visible = true;
52
- const id = new Date().getTime();
53
- this._stack.push({ id, component: com });
54
- return id;
55
- }
56
- hide(id) {
57
- const f = this._stack.find(c => c.id === id);
58
- if (f) {
59
- f.component.dispose();
60
- this._stack = this._stack.filter(c => c.id !== id);
61
- }
62
- }
63
- // Observable creation operator.
64
- // LoaderId can be used when there are multiple loading indicators associated to a single context.
65
- // Context can be any object, though in practice, components and services will be the most common contexts.
66
- // loaderId is a non-mandatory parameter - when not specified, a default loaderId is used.
67
- // Such a scenario is used when your context has contains only one loading indicator.
68
- doLoading(source$, context, loaderId) {
69
- this.startLoading(context, loaderId);
70
- return source$.pipe(observeOn(asyncScheduler), finalize(() => this.endLoading(context, loaderId)));
71
- }
72
- // To be used in your html templates.
73
- // Returns a boolean indicating whether a given loader is active in a given context.
74
- // If loaderId is unspecified, the method will return a logical disjunction of all
75
- // loader states in the context.
76
- isLoading(context, loaderId) {
77
- var _a;
78
- const loaderStates = this.loadingStates.get(context);
79
- if (!loaderStates) {
80
- return false;
81
- }
82
- else {
83
- if (loaderId !== undefined) {
84
- return (_a = loaderStates.get(this.getLoaderId(loaderId))) !== null && _a !== void 0 ? _a : false;
85
- }
86
- else {
87
- return [...loaderStates.values()].filter(state => state).length > 0;
88
- }
89
- }
90
- }
91
- // To be used in your html templates with async pipes.
92
- // Returns an Observable of booleans indicating whether a given loader is active in a given context.
93
- isLoading$(context, loaderId) {
94
- const coalescedLoaderId = this.getLoaderId(loaderId);
95
- if (!this.hasLoadingStates(context, coalescedLoaderId)) {
96
- this.setLoadingState(context, false, loaderId);
97
- }
98
- return this.loadingStates$.get(context).get(coalescedLoaderId);
99
- }
100
- // The startLoading and endLoading methods are intended to be used when handling
101
- // complex scenarios where a need for extended usage flexibility is desired.
102
- startLoading(context, loaderId) {
103
- this.setLoadingState(context, true, this.getLoaderId(loaderId));
104
- }
105
- endLoading(context, loaderId) {
106
- this.setLoadingState(context, false, this.getLoaderId(loaderId));
107
- }
108
- // To be called by middleware code (HTTP interceptors/routing listeners, etc.).
109
- clearLoadings() {
110
- this.loadingStates = new WeakMap();
111
- this.loadingStates$ = new WeakMap();
112
- }
113
- setLoadingState(context, state, loaderId) {
114
- if (!this.hasLoadingStates(context, loaderId)) {
115
- if (this.hasContextLoadingState(context)) {
116
- this.loadingStates.get(context).set(loaderId, state);
117
- this.loadingStates$.get(context).set(loaderId, new BehaviorSubject(state));
118
- }
119
- else {
120
- this.loadingStates.set(context, new Map([
121
- [loaderId, state]
122
- ]));
123
- this.loadingStates$.set(context, new Map([
124
- [loaderId, new BehaviorSubject(state)]
125
- ]));
126
- }
127
- }
128
- else {
129
- // @ts-ignore - loadingStates[context] is surely defined in this branch
130
- this.loadingStates.get(context).set(loaderId, state);
131
- this.loadingStates$.get(context).get(loaderId).next(state);
132
- }
133
- }
134
- hasLoadingStates(context, loaderId) {
135
- return this.hasContextLoadingState(context) && this.hasLoaderLoadingState(context, loaderId);
136
- }
137
- hasContextLoadingState(context) {
138
- return this.loadingStates.has(context) && this.loadingStates$.has(context);
139
- }
140
- hasLoaderLoadingState(context, loaderId) {
141
- return this.loadingStates.get(context).has(loaderId) && this.loadingStates$.get(context).has(loaderId);
142
- }
143
- getLoaderId(loaderId) {
144
- return loaderId !== null && loaderId !== void 0 ? loaderId : DEFAULT_LOADER_ID;
145
- }
146
- }
147
- AXLoadingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXLoadingService, deps: [{ token: i0.NgZone }, { token: i1.AXOverlayService }], target: i0.ɵɵFactoryTarget.Injectable });
148
- AXLoadingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXLoadingService, providedIn: 'root' });
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXLoadingService, decorators: [{
150
- type: Injectable,
151
- args: [{
152
- providedIn: 'root'
153
- }]
154
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.AXOverlayService }]; } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9sb2FkaW5nL2xvYWRpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUl6RCxNQUFNLGlCQUFpQixHQUFhLFVBQVUsQ0FBQztBQUUvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFJSCxNQUFNLE9BQU8sZ0JBQWdCO0lBUXpCLFlBQXNCLE9BQWUsRUFBVSxjQUFnQztRQUF6RCxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBUC9FLGtEQUFrRDtRQUNsRCwwQ0FBMEM7UUFDaEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBMEMsQ0FBQztRQUNoRixxREFBcUQ7UUFDckQsbURBQW1EO1FBQ3pDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQTJELENBQUM7UUFJMUYsV0FBTSxHQUFrRCxFQUFFLENBQUM7SUFGZ0IsQ0FBQztJQUlwRixJQUFJLENBQUMsUUFBa0I7UUFDbkIsSUFBSSxJQUFhLENBQUM7UUFDbEIsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksSUFBSSxRQUFRLENBQW1CLENBQUM7UUFDOUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFD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QUFJLGlCQUFpQixDQUFDO0lBQ3pDLENBQUM7OzZHQTNJUSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQUZiLE1BQU07MkZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBhc3luY1NjaGVkdWxlciwgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCBvYnNlcnZlT24gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFYT3ZlcmxheVNlcnZpY2UsIEFYT3ZlcmxheVZpZXdSZWYgfSBmcm9tICcuLi9iYXNlL292ZXJsYXkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFYTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vbG9hZGluZy5jb21wb25lbnQnO1xyXG5cclxudHlwZSBMb2FkaW5nQ29udGV4dCA9IG9iamVjdDtcclxudHlwZSBMb2FkZXJJZCA9IHN0cmluZyB8IG51bWJlcjsgLy8gZXhwZWN0ZWQgZW51bSB2YWx1ZXNcclxuY29uc3QgREVGQVVMVF9MT0FERVJfSUQ6IExvYWRlcklkID0gJ19ERUZBVUxUJztcclxuXHJcbi8qKlxyXG4gKiBVc2VkIGZvciBjZW50cmFsbHkgc2V0dGluZy91bnNldHRpbmcgbG9hZGluZyBmbGFncyBmb3IgY29tcG9uZW50cyBvciBzZXJ2aWNlcy5cclxuICogU2hvdWxkIGJlIGNvbm5lY3RlZCB0byBnbG9iYWwgSFRUUCBpbnRlcmNlcHRvciB3aGljaCB3aWxsIHVuc2V0XHJcbiAqIHRoZSBsb2FkaW5nIGZsYWdzIGluIGNhc2UgYW4gZXJyb3IgaGFwcGVucyB1c2luZyB0aGUgY2xlYXJMb2FkaW5ncygpIG1ldGhvZC5cclxuICpcclxuICogRkFROlxyXG4gKiBROiBIb3cgdG8gY2hhbmdlIGxvYWRpbmcgZmxhZyBmb3IgYSBwYXJlbnQgY29tcG9uZW50P1xyXG4gKiBBOiBJbmplY3QgdGhlIHBhcmVudCBjb21wb25lbnQgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgY29uc3RydWN0b3IgYW5kXHJcbiAqICAgIGNhbGwgbG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhwYXJlbnRDb21wb25lbnQsIFNUQVRFKS5cclxuICogXHJcbiAqIFE6IEhvdyB0byBjaGFuZ2UgbG9hZGluZyBmbGFnIGZvciBhIGNoaWxkIGNvbXBvbmVudD9cclxuICogQTogVXNlIGEgQFZpZXdDaGlsZCB3aXRoIGNvbXBvbmVudCBzZWxlY3RvciBhbmQgcGFzcyB0aGVcclxuICogICAgcmVmZXJlbmNlIG9mIHRoZSBjaGlsZCB0byBzZXRMb2FkaW5nIG1ldGhvZC5cclxuICpcclxuICogUTogSSBuZWVkIG1vcmUgbG9hZGluZyBpbmRpY2F0b3JzIGluIG15IGNvbXBvbmVudHMuIEhvdyB0bz9cclxuICogQTogQXNzaWduIGEgTG9hZGVySWQgdG8gZWFjaCBpbmRpY2F0b3IgYW5kIHRoZW4gdXNlIHRoZW1cclxuICogICAgd2l0aCBjYWxscyB0byBtZXRob2RzIG9mIHRoaXMgc2VydmljZS5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhMb2FkaW5nU2VydmljZSB7XHJcbiAgICAvLyBXZWFrTWFwIHdpbGwgcmVtb3ZlIGNvbXBvbmVudHMgZnJvbSBpdHNlbGYgdXBvblxyXG4gICAgLy8gdGhlaXIgZ2FyYmFnZSBjb2xsZWN0aW9uIGJ5IEpTIHJ1bnRpbWUuXHJcbiAgICBwcm90ZWN0ZWQgbG9hZGluZ1N0YXRlcyA9IG5ldyBXZWFrTWFwPExvYWRpbmdDb250ZXh0LCBNYXA8TG9hZGVySWQsIGJvb2xlYW4+PigpO1xyXG4gICAgLy8gQm90aCBsb2FkaW5nIHN0YXRlIG1hcHMgYXJlIGtlcHQgaW4tc3luYyBzdWNoIHRoYXRcclxuICAgIC8vIHRoZXkgY2FuIGJlIHVzZWQgYnkgYm90aCBzeW5jIGFuZCBhc3luYyBtZXRob2RzLlxyXG4gICAgcHJvdGVjdGVkIGxvYWRpbmdTdGF0ZXMkID0gbmV3IFdlYWtNYXA8TG9hZGluZ0NvbnRleHQsIE1hcDxMb2FkZXJJZCwgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+Pj4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgem9uZVJlZjogTmdab25lLCBwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBBWE92ZXJsYXlTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICBwcml2YXRlIF9zdGFjazogeyBpZDogbnVtYmVyLCBjb21wb25lbnQ6IEFYT3ZlcmxheVZpZXdSZWYgfVtdID0gW107XHJcblxyXG4gICAgc2hvdyhsb2NhdGlvbj86IEVsZW1lbnQpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBob3N0OiBFbGVtZW50O1xyXG4gICAgICAgIGlmIChsb2NhdGlvbikge1xyXG4gICAgICAgICAgICBob3N0ID0gbG9jYXRpb24uY2xvc2VzdCgnLmF4LWxvYWRpbmctaG9zdCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gKGhvc3QgfHwgbG9jYXRpb24pIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGNvbSA9IHRoaXMub3ZlcmxheVNlcnZpY2Uuc2hvdyhBWExvYWRpbmdDb21wb25lbnQsIHt9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjbG9zZU9uQ2xpY2tPdXRzaWRlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnYXgtbG9hZGluZy1vdmVybGF5J10sXHJcbiAgICAgICAgICAgICAgICBzY3JvbGw6ICdibG9jaydcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgY29tLmluc3RhbmNlLnZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGlkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgdGhpcy5fc3RhY2sucHVzaCh7IGlkLCBjb21wb25lbnQ6IGNvbSB9KTtcclxuICAgICAgICByZXR1cm4gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZShpZCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGYgPSB0aGlzLl9zdGFjay5maW5kKGMgPT4gYy5pZCA9PT0gaWQpO1xyXG4gICAgICAgIGlmIChmKSB7XHJcbiAgICAgICAgICAgIGYuY29tcG9uZW50LmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5fc3RhY2sgPSB0aGlzLl9zdGFjay5maWx0ZXIoYyA9PiBjLmlkICE9PSBpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBPYnNlcnZhYmxlIGNyZWF0aW9uIG9wZXJhdG9yLlxyXG4gICAgLy8gTG9hZGVySWQgY2FuIGJlIHVzZWQgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbG9hZGluZyBpbmRpY2F0b3JzIGFzc29jaWF0ZWQgdG8gYSBzaW5nbGUgY29udGV4dC5cclxuICAgIC8vIENvbnRleHQgY2FuIGJlIGFueSBvYmplY3QsIHRob3VnaCBpbiBwcmFjdGljZSwgY29tcG9uZW50cyBhbmQgc2VydmljZXMgd2lsbCBiZSB0aGUgbW9zdCBjb21tb24gY29udGV4dHMuXHJcbiAgICAvLyBsb2FkZXJJZCBpcyBhIG5vbi1tYW5kYXRvcnkgcGFyYW1ldGVyIC0gd2hlbiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgbG9hZGVySWQgaXMgdXNlZC5cclxuICAgIC8vIFN1Y2ggYSBzY2VuYXJpbyBpcyB1c2VkIHdoZW4geW91ciBjb250ZXh0IGhhcyBjb250YWlucyBvbmx5IG9uZSBsb2FkaW5nIGluZGljYXRvci5cclxuICAgIGRvTG9hZGluZzxWPihzb3VyY2UkOiBPYnNlcnZhYmxlPFY+LCBjb250ZXh0OiBMb2FkaW5nQ29udGV4dCwgbG9hZGVySWQ/OiBMb2FkZXJJZCk6IE9ic2VydmFibGU8Vj4ge1xyXG4gICAgICAgIHRoaXMuc3RhcnRMb2FkaW5nKGNvbnRleHQsIGxvYWRlcklkKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHNvdXJjZSQucGlwZShcclxuICAgICAgICAgICAgb2JzZXJ2ZU9uKGFzeW5jU2NoZWR1bGVyKSxcclxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5lbmRMb2FkaW5nKGNvbnRleHQsIGxvYWRlcklkKSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUbyBiZSB1c2VkIGluIHlvdXIgaHRtbCB0ZW1wbGF0ZXMuXHJcbiAgICAvLyBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgYSBnaXZlbiBsb2FkZXIgaXMgYWN0aXZlIGluIGEgZ2l2ZW4gY29udGV4dC5cclxuICAgIC8vIElmIGxvYWRlcklkIGlzIHVuc3BlY2lmaWVkLCB0aGUgbWV0aG9kIHdpbGwgcmV0dXJuIGEgbG9naWNhbCBkaXNqdW5jdGlvbiBvZiBhbGxcclxuICAgIC8vIGxvYWRlciBzdGF0ZXMgaW4gdGhlIGNvbnRleHQuXHJcbiAgICBpc0xvYWRpbmcoY29udGV4dDogTG9hZGluZ0NvbnRleHQsIGxvYWRlcklkPzogTG9hZGVySWQpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBsb2FkZXJTdGF0ZXMgPSB0aGlzLmxvYWRpbmdTdGF0ZXMuZ2V0KGNvbnRleHQpO1xyXG5cclxuICAgICAgICBpZiAoIWxvYWRlclN0YXRlcykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAobG9hZGVySWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlclN0YXRlcy5nZXQodGhpcy5nZXRMb2FkZXJJZChsb2FkZXJJZCkpID8/IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5sb2FkZXJTdGF0ZXMudmFsdWVzKCldLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZSkubGVuZ3RoID4gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBUbyBiZSB1c2VkIGluIHlvdXIgaHRtbCB0ZW1wbGF0ZXMgd2l0aCBhc3luYyBwaXBlcy5cclxuICAgIC8vIFJldHVybnMgYW4gT2JzZXJ2YWJsZSBvZiBib29sZWFucyBpbmRpY2F0aW5nIHdoZXRoZXIgYSBnaXZlbiBsb2FkZXIgaXMgYWN0aXZlIGluIGEgZ2l2ZW4gY29udGV4dC5cclxuICAgIGlzTG9hZGluZyQoY29udGV4dDogTG9hZGluZ0NvbnRleHQsIGxvYWRlcklkPzogTG9hZGVySWQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICBjb25zdCBjb2FsZXNjZWRMb2FkZXJJZCA9IHRoaXMuZ2V0TG9hZGVySWQobG9hZGVySWQpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaGFzTG9hZGluZ1N0YXRlcyhjb250ZXh0LCBjb2FsZXNjZWRMb2FkZXJJZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUoY29udGV4dCwgZmFsc2UsIGxvYWRlcklkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdGF0ZXMkLmdldChjb250ZXh0KS5nZXQoY29hbGVzY2VkTG9hZGVySWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoZSBzdGFydExvYWRpbmcgYW5kIGVuZExvYWRpbmcgbWV0aG9kcyBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIGhhbmRsaW5nXHJcbiAgICAvLyBjb21wbGV4IHNjZW5hcmlvcyB3aGVyZSBhIG5lZWQgZm9yIGV4dGVuZGVkIHVzYWdlIGZsZXhpYmlsaXR5IGlzIGRlc2lyZWQuXHJcbiAgICBzdGFydExvYWRpbmcoY29udGV4dDogTG9hZGluZ0NvbnRleHQsIGxvYWRlcklkPzogTG9hZGVySWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldExvYWRpbmdTdGF0ZShjb250ZXh0LCB0cnVlLCB0aGlzLmdldExvYWRlcklkKGxvYWRlcklkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5kTG9hZGluZyhjb250ZXh0OiBMb2FkaW5nQ29udGV4dCwgbG9hZGVySWQ/OiBMb2FkZXJJZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0TG9hZGluZ1N0YXRlKGNvbnRleHQsIGZhbHNlLCB0aGlzLmdldExvYWRlcklkKGxvYWRlcklkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVG8gYmUgY2FsbGVkIGJ5IG1pZGRsZXdhcmUgY29kZSAoSFRUUCBpbnRlcmNlcHRvcnMvcm91dGluZyBsaXN0ZW5lcnMsIGV0Yy4pLlxyXG4gICAgY2xlYXJMb2FkaW5ncygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZXMgPSBuZXcgV2Vha01hcDxMb2FkaW5nQ29udGV4dCwgTWFwPExvYWRlcklkLCBib29sZWFuPj4oKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZXMkID0gbmV3IFdlYWtNYXA8TG9hZGluZ0NvbnRleHQsIE1hcDxMb2FkZXJJZCwgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+Pj4oKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0TG9hZGluZ1N0YXRlKGNvbnRleHQ6IExvYWRpbmdDb250ZXh0LCBzdGF0ZTogYm9vbGVhbiwgbG9hZGVySWQ6IExvYWRlcklkKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0xvYWRpbmdTdGF0ZXMoY29udGV4dCwgbG9hZGVySWQpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0NvbnRleHRMb2FkaW5nU3RhdGUoY29udGV4dCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlcy5nZXQoY29udGV4dCkuc2V0KGxvYWRlcklkLCBzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZXMkLmdldChjb250ZXh0KS5zZXQobG9hZGVySWQsIG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oc3RhdGUpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlcy5zZXQoY29udGV4dCwgbmV3IE1hcDxMb2FkZXJJZCwgYm9vbGVhbj4oW1xyXG4gICAgICAgICAgICAgICAgICAgIFtsb2FkZXJJZCwgc3RhdGVdXHJcbiAgICAgICAgICAgICAgICBdKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZXMkLnNldChjb250ZXh0LCBuZXcgTWFwPExvYWRlcklkLCBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4+KFtcclxuICAgICAgICAgICAgICAgICAgICBbbG9hZGVySWQsIG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oc3RhdGUpXVxyXG4gICAgICAgICAgICAgICAgXSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gbG9hZGluZ1N0YXRlc1tjb250ZXh0XSBpcyBzdXJlbHkgZGVmaW5lZCBpbiB0aGlzIGJyYW5jaFxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZXMuZ2V0KGNvbnRleHQpLnNldChsb2FkZXJJZCwgc3RhdGUpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZXMkLmdldChjb250ZXh0KS5nZXQobG9hZGVySWQpLm5leHQoc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaGFzTG9hZGluZ1N0YXRlcyhjb250ZXh0OiBMb2FkaW5nQ29udGV4dCwgbG9hZGVySWQ6IExvYWRlcklkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQ29udGV4dExvYWRpbmdTdGF0ZShjb250ZXh0KSAmJiB0aGlzLmhhc0xvYWRlckxvYWRpbmdTdGF0ZShjb250ZXh0LCBsb2FkZXJJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGhhc0NvbnRleHRMb2FkaW5nU3RhdGUoY29udGV4dDogTG9hZGluZ0NvbnRleHQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nU3RhdGVzLmhhcyhjb250ZXh0KSAmJiB0aGlzLmxvYWRpbmdTdGF0ZXMkLmhhcyhjb250ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaGFzTG9hZGVyTG9hZGluZ1N0YXRlKGNvbnRleHQ6IExvYWRpbmdDb250ZXh0LCBsb2FkZXJJZDogTG9hZGVySWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nU3RhdGVzLmdldChjb250ZXh0KS5oYXMobG9hZGVySWQpICYmIHRoaXMubG9hZGluZ1N0YXRlcyQuZ2V0KGNvbnRleHQpLmhhcyhsb2FkZXJJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldExvYWRlcklkKGxvYWRlcklkPzogTG9hZGVySWQpOiBMb2FkZXJJZCB7XHJcbiAgICAgICAgcmV0dXJuIGxvYWRlcklkID8/IERFRkFVTFRfTE9BREVSX0lEO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,220 +0,0 @@
1
- import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, ElementRef, HostListener, EventEmitter } from '@angular/core';
2
- import { AXBaseComponent } from '../base';
3
- import { AXDrawingUtil } from '@acorex/core';
4
- import { TemplatePortal } from '@angular/cdk/portal';
5
- import { fromEvent } from 'rxjs';
6
- import _ from 'lodash';
7
- import { throttleTime } from 'rxjs/operators';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/cdk/overlay";
10
- import * as i2 from "@acorex/core";
11
- export class AXPopoverComponent extends AXBaseComponent {
12
- constructor(_elementRef, _cdr, _zone, _overlay, _platform, _viewContainerRef) {
13
- super(_elementRef, _cdr);
14
- this._cdr = _cdr;
15
- this._zone = _zone;
16
- this._overlay = _overlay;
17
- this._platform = _platform;
18
- this._viewContainerRef = _viewContainerRef;
19
- this.position = [
20
- {
21
- originX: 'start',
22
- originY: 'bottom',
23
- overlayX: 'start',
24
- overlayY: 'top',
25
- },
26
- {
27
- originX: 'start',
28
- originY: 'top',
29
- overlayX: 'start',
30
- overlayY: 'bottom'
31
- }
32
- ];
33
- this._subs = [];
34
- //
35
- this.openTrigger = 'toggle';
36
- //
37
- this.closeTrigger = 'clickout';
38
- //
39
- this.hasBackdrop = false;
40
- //
41
- this._mousePos = { x: 0, y: 0 };
42
- this._isScrollAttached = false;
43
- //
44
- this.onOpened = new EventEmitter();
45
- this.onClosed = new EventEmitter();
46
- }
47
- get target() {
48
- return this._target;
49
- }
50
- set target(v) {
51
- if (v instanceof HTMLElement)
52
- this._target = v;
53
- else if (v instanceof ElementRef)
54
- this._target = v.nativeElement;
55
- else if (v instanceof AXBaseComponent)
56
- this._target = v._getInnerElement();
57
- }
58
- _emitOnOpenedEvent() {
59
- this.onOpened.emit({
60
- component: this,
61
- htmlElement: this._getHostElement()
62
- });
63
- }
64
- _emitOnClosedEvent() {
65
- this.onClosed.emit({
66
- component: this,
67
- htmlElement: this._getHostElement()
68
- });
69
- }
70
- //
71
- onViewInit() {
72
- if (this._target) {
73
- if (this.openTrigger === 'mouseover') {
74
- const mouseEnter$ = fromEvent(this._target, 'mouseover');
75
- this._addSub(mouseEnter$.subscribe(e => {
76
- const point = { x: e.clientX, y: e.clientY };
77
- if (AXDrawingUtil.isInElementBound(point, this._target))
78
- this.open();
79
- }));
80
- }
81
- if (this.closeTrigger === 'mouseout') {
82
- const mouseMove$ = fromEvent(document, 'mousemove');
83
- this._addSub(mouseMove$.pipe(throttleTime(50)).subscribe(e => {
84
- this._mousePos.x = e.clientX;
85
- this._mousePos.y = e.clientY;
86
- if (this.isOpen) {
87
- setTimeout(() => {
88
- if (!_.some([this._target, this._overlayRef.overlayElement], el => _.includes(document.elementsFromPoint(this._mousePos.x, this._mousePos.y), el)))
89
- this.close();
90
- }, 100);
91
- }
92
- }));
93
- }
94
- //
95
- if (this.openTrigger === 'click' || this.openTrigger === 'toggle') {
96
- const click$ = fromEvent(this._target, 'click');
97
- this._addSub(click$.subscribe(e => {
98
- this.openTrigger == 'toggle' ? this.toggle() : this.open();
99
- }));
100
- }
101
- }
102
- }
103
- //
104
- onDestroy() {
105
- var _a, _b;
106
- (_a = this._overlayRef) === null || _a === void 0 ? void 0 : _a.detach();
107
- (_b = this._overlayRef) === null || _b === void 0 ? void 0 : _b.dispose();
108
- this._subs.forEach(s => {
109
- s === null || s === void 0 ? void 0 : s.unsubscribe();
110
- });
111
- }
112
- _handleKeydownHandler(e) {
113
- if (e.key === 'Enter' && e.type === 'keydown') {
114
- this.toggle();
115
- }
116
- if (e.key === 'Escape') {
117
- if (this.isOpen) {
118
- this.close();
119
- e.stopPropagation();
120
- }
121
- }
122
- }
123
- //
124
- toggle() {
125
- this.isOpen ? this.close() : this.open();
126
- }
127
- //
128
- close() {
129
- var _a;
130
- if (!this.isOpen) {
131
- return;
132
- }
133
- (_a = this._overlayRef) === null || _a === void 0 ? void 0 : _a.detach();
134
- this._emitOnClosedEvent();
135
- }
136
- //
137
- open() {
138
- if (this.isOpen) {
139
- return;
140
- }
141
- this._ensureOverlayCreated();
142
- this._overlayRef.attach(this._templatePortal);
143
- this._emitOnOpenedEvent();
144
- }
145
- _ensureOverlayCreated() {
146
- const targetRef = this._target;
147
- if (!targetRef)
148
- return;
149
- if (!this._overlayRef) {
150
- const positionStrategy = this._overlay.position()
151
- .flexibleConnectedTo(targetRef)
152
- .withPositions(Array.isArray(this.position) ? this.position : [this.position])
153
- .withPush(false);
154
- this._overlayRef = this._overlay.create({
155
- positionStrategy,
156
- scrollStrategy: this._overlay.scrollStrategies.close(),
157
- panelClass: ['ax-animate-fadeIn', 'ax-animate-faster'],
158
- hasBackdrop: this.hasBackdrop,
159
- backdropClass: [this.backdropClass || 'cdk-overlay-transparent-backdrop']
160
- });
161
- if (this.closeTrigger == 'clickout') {
162
- this._addSub(this._overlayRef._outsidePointerEvents.subscribe(c => {
163
- const target = c.target;
164
- const comElem = targetRef;
165
- if (!(comElem.contains(target))) {
166
- this.close();
167
- }
168
- }));
169
- }
170
- this._addSub(this._overlayRef.attachments().subscribe(() => {
171
- if (!this._isScrollAttached) {
172
- this._addSub(this._platform.scroll.subscribe(c => {
173
- // if (!(c.nativeEvent.target as HTMLElement).closest('.ax-overlay-pane'))
174
- this.close();
175
- }));
176
- this._isScrollAttached = true;
177
- }
178
- }));
179
- }
180
- if (!this._templatePortal) {
181
- this._templatePortal = new TemplatePortal(this._baseTemplate, this._viewContainerRef);
182
- }
183
- }
184
- get isOpen() {
185
- return this._overlayRef ? this._overlayRef.hasAttached() : false;
186
- }
187
- _addSub(sub) {
188
- this._subs.push(sub);
189
- }
190
- }
191
- AXPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXPopoverComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.Overlay }, { token: i2.AXPlatform }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
192
- AXPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: AXPopoverComponent, selector: "ax-popover", inputs: { target: "target", position: "position", openTrigger: "openTrigger", closeTrigger: "closeTrigger", hasBackdrop: "hasBackdrop", backdropClass: "backdropClass" }, host: { listeners: { "document:keydown": "_handleKeydownHandler($event)" } }, viewQueries: [{ propertyName: "_baseTemplate", first: true, predicate: ["baseTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #baseTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXPopoverComponent, decorators: [{
194
- type: Component,
195
- args: [{
196
- selector: 'ax-popover',
197
- templateUrl: './popover.component.html',
198
- encapsulation: ViewEncapsulation.None,
199
- changeDetection: ChangeDetectionStrategy.OnPush,
200
- }]
201
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.Overlay }, { type: i2.AXPlatform }, { type: i0.ViewContainerRef }]; }, propDecorators: { target: [{
202
- type: Input
203
- }], position: [{
204
- type: Input
205
- }], _baseTemplate: [{
206
- type: ViewChild,
207
- args: ['baseTemplate']
208
- }], openTrigger: [{
209
- type: Input
210
- }], closeTrigger: [{
211
- type: Input
212
- }], hasBackdrop: [{
213
- type: Input
214
- }], backdropClass: [{
215
- type: Input
216
- }], _handleKeydownHandler: [{
217
- type: HostListener,
218
- args: ['document:keydown', ['$event']]
219
- }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNkIsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBb0IsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxTSxPQUFPLEVBQUUsZUFBZSxFQUFnQyxNQUFNLFNBQVMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLGNBQWMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVk5QyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsZUFBZTtJQUVyRCxZQUNFLFdBQXVCLEVBQ2hCLElBQXVCLEVBQ3RCLEtBQWEsRUFDYixRQUFpQixFQUNqQixTQUFxQixFQUNyQixpQkFBbUM7UUFHM0MsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQVBsQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN0QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFZO1FBQ3JCLHNCQUFpQixHQUFqQixp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OUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDtvT0FpQlksTUFBTTtzQkFEaEIsS0FBSztnQkFlTixRQUFRO3NCQURQLEtBQUs7Z0JBaUJOLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxjQUFjO2dCQVF6QixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBa0VOLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgRWxlbWVudFJlZiwgVmlld0NvbnRhaW5lclJlZiwgSG9zdExpc3RlbmVyLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50LCBBWENvbm5lY3RlZFBvc2l0aW9uLCBBWEV2ZW50IH0gZnJvbSAnLi4vYmFzZSc7XHJcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IEFYRHJhd2luZ1V0aWwsIEFYUGxhdGZvcm0sIEFYUG9pbnQgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5cclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdheC1wb3BvdmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYUG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxyXG4gICAgcHJpdmF0ZSBfcGxhdGZvcm06IEFYUGxhdGZvcm0sXHJcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG5cclxuICApIHtcclxuICAgIHN1cGVyKF9lbGVtZW50UmVmLCBfY2RyKTtcclxuICB9XHJcbiAgLy9cclxuICBwcml2YXRlIF90YXJnZXQ6IEhUTUxFbGVtZW50O1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB0YXJnZXQoKTogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgQVhCYXNlQ29tcG9uZW50IHtcclxuICAgIHJldHVybiB0aGlzLl90YXJnZXQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgdGFyZ2V0KHY6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IEFYQmFzZUNvbXBvbmVudCkge1xyXG4gICAgaWYgKHYgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClcclxuICAgICAgdGhpcy5fdGFyZ2V0ID0gdjtcclxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBFbGVtZW50UmVmKVxyXG4gICAgICB0aGlzLl90YXJnZXQgPSB2Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQVhCYXNlQ29tcG9uZW50KVxyXG4gICAgICB0aGlzLl90YXJnZXQgPSB2Ll9nZXRJbm5lckVsZW1lbnQoKTtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHBvc2l0aW9uOiBBWENvbm5lY3RlZFBvc2l0aW9uIHwgQVhDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xyXG4gICAge1xyXG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgb3ZlcmxheVk6ICdib3R0b20nXHJcbiAgICB9XHJcbiAgXTtcclxuICAvL1xyXG4gIEBWaWV3Q2hpbGQoJ2Jhc2VUZW1wbGF0ZScpXHJcbiAgX2Jhc2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcclxuICBfdGVtcGxhdGVQb3J0YWw6IFRlbXBsYXRlUG9ydGFsO1xyXG5cclxuICBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICAvL1xyXG4gIEBJbnB1dCgpXHJcbiAgb3BlblRyaWdnZXI6ICdtYW51YWwnIHwgJ2NsaWNrJyB8ICdtb3VzZW92ZXInIHwgJ3RvZ2dsZScgPSAndG9nZ2xlJztcclxuICAvL1xyXG4gIEBJbnB1dCgpXHJcbiAgY2xvc2VUcmlnZ2VyOiAnbWFudWFsJyB8ICdjbGlja291dCcgfCAnbW91c2VvdXQnID0gJ2NsaWNrb3V0JztcclxuICAvL1xyXG4gIEBJbnB1dCgpXHJcbiAgaGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBiYWNrZHJvcENsYXNzOiBzdHJpbmc7XHJcbiAgLy9cclxuICBwcml2YXRlIF9tb3VzZVBvczogQVhQb2ludCA9IHsgeDogMCwgeTogMCB9O1xyXG4gIHByaXZhdGUgX2lzU2Nyb2xsQXR0YWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvL1xyXG4gIG9uT3BlbmVkOiBFdmVudEVtaXR0ZXI8QVhFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRXZlbnQ+KCk7XHJcbiAgb25DbG9zZWQ6IEV2ZW50RW1pdHRlcjxBWEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhFdmVudD4oKTtcclxuXHJcbiAgX2VtaXRPbk9wZW5lZEV2ZW50KCkge1xyXG4gICAgdGhpcy5vbk9wZW5lZC5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfZW1pdE9uQ2xvc2VkRXZlbnQoKSB7XHJcbiAgICB0aGlzLm9uQ2xvc2VkLmVtaXQoe1xyXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLl9nZXRIb3N0RWxlbWVudCgpXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy9cclxuICBvblZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuX3RhcmdldCkge1xyXG4gICAgICBpZiAodGhpcy5vcGVuVHJpZ2dlciA9PT0gJ21vdXNlb3ZlcicpIHtcclxuICAgICAgICBjb25zdCBtb3VzZUVudGVyJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLl90YXJnZXQsICdtb3VzZW92ZXInKTtcclxuICAgICAgICB0aGlzLl9hZGRTdWIobW91c2VFbnRlciQuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcG9pbnQgPSB7IHg6IGUuY2xpZW50WCwgeTogZS5jbGllbnRZIH07XHJcbiAgICAgICAgICBpZiAoQVhEcmF3aW5nVXRpbC5pc0luRWxlbWVudEJvdW5kKHBvaW50LCB0aGlzLl90YXJnZXQpKVxyXG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY2xvc2VUcmlnZ2VyID09PSAnbW91c2VvdXQnKSB7XHJcbiAgICAgICAgY29uc3QgbW91c2VNb3ZlJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlbW92ZScpO1xyXG4gICAgICAgIHRoaXMuX2FkZFN1Yihtb3VzZU1vdmUkLnBpcGUodGhyb3R0bGVUaW1lKDUwKSkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fbW91c2VQb3MueCA9IGUuY2xpZW50WDtcclxuICAgICAgICAgIHRoaXMuX21vdXNlUG9zLnkgPSBlLmNsaWVudFk7XHJcbiAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKCFfLnNvbWUoW3RoaXMuX3RhcmdldCwgdGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudF0sIGVsID0+IF8uaW5jbHVkZXMoZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQodGhpcy5fbW91c2VQb3MueCwgdGhpcy5fbW91c2VQb3MueSksIGVsKSkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH0sIDEwMClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIC8vXHJcbiAgICAgIGlmICh0aGlzLm9wZW5UcmlnZ2VyID09PSAnY2xpY2snIHx8IHRoaXMub3BlblRyaWdnZXIgPT09ICd0b2dnbGUnKSB7XHJcbiAgICAgICAgY29uc3QgY2xpY2skID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuX3RhcmdldCwgJ2NsaWNrJyk7XHJcbiAgICAgICAgdGhpcy5fYWRkU3ViKGNsaWNrJC5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9wZW5UcmlnZ2VyID09ICd0b2dnbGUnID8gdGhpcy50b2dnbGUoKSA6IHRoaXMub3BlbigpO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvL1xyXG4gIG9uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICBzPy51bnN1YnNjcmliZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBfaGFuZGxlS2V5ZG93bkhhbmRsZXIoZTogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmIGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vXHJcbiAgdG9nZ2xlKCkge1xyXG4gICAgdGhpcy5pc09wZW4gPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcclxuICB9XHJcbiAgLy9cclxuICBjbG9zZSgpIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICB0aGlzLl9lbWl0T25DbG9zZWRFdmVudCgpO1xyXG4gIH1cclxuICAvL1xyXG4gIG9wZW4oKSB7XHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZW5zdXJlT3ZlcmxheUNyZWF0ZWQoKTtcclxuICAgIHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3RlbXBsYXRlUG9ydGFsKTtcclxuICAgIHRoaXMuX2VtaXRPbk9wZW5lZEV2ZW50KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbnN1cmVPdmVybGF5Q3JlYXRlZCgpIHtcclxuICAgIGNvbnN0IHRhcmdldFJlZiA9IHRoaXMuX3RhcmdldDtcclxuICAgIGlmICghdGFyZ2V0UmVmKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0YXJnZXRSZWYpXHJcbiAgICAgICAgLndpdGhQb3NpdGlvbnMoQXJyYXkuaXNBcnJheSh0aGlzLnBvc2l0aW9uKSA/IHRoaXMucG9zaXRpb24gOiBbdGhpcy5wb3NpdGlvbl0pXHJcbiAgICAgICAgLndpdGhQdXNoKGZhbHNlKTtcclxuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxyXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKSxcclxuICAgICAgICBwYW5lbENsYXNzOiBbJ2F4LWFuaW1hdGUtZmFkZUluJywgJ2F4LWFuaW1hdGUtZmFzdGVyJ10sXHJcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRoaXMuaGFzQmFja2Ryb3AsXHJcbiAgICAgICAgYmFja2Ryb3BDbGFzczogW3RoaXMuYmFja2Ryb3BDbGFzcyB8fCAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnXVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMuY2xvc2VUcmlnZ2VyID09ICdjbGlja291dCcpIHtcclxuICAgICAgICB0aGlzLl9hZGRTdWIodGhpcy5fb3ZlcmxheVJlZi5fb3V0c2lkZVBvaW50ZXJFdmVudHMuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gYy50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICBjb25zdCBjb21FbGVtID0gdGFyZ2V0UmVmO1xyXG4gICAgICAgICAgaWYgKCEoY29tRWxlbS5jb250YWlucyh0YXJnZXQpKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2FkZFN1Yih0aGlzLl9vdmVybGF5UmVmLmF0dGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX2lzU2Nyb2xsQXR0YWNoZWQpIHtcclxuICAgICAgICAgIHRoaXMuX2FkZFN1Yih0aGlzLl9wbGF0Zm9ybS5zY3JvbGwuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICAgICAgICAvLyBpZiAoIShjLm5hdGl2ZUV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmF4LW92ZXJsYXktcGFuZScpKVxyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB0aGlzLl9pc1Njcm9sbEF0dGFjaGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fdGVtcGxhdGVQb3J0YWwpIHtcclxuICAgICAgdGhpcy5fdGVtcGxhdGVQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fYmFzZVRlbXBsYXRlLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZiA/IHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWRkU3ViKHN1YjogU3Vic2NyaXB0aW9uKSB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goc3ViKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNiYXNlVGVtcGxhdGU+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==