@acorex/components 7.1.0 → 7.1.1

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 (728) hide show
  1. package/action-sheet/index.d.ts +5 -5
  2. package/action-sheet/public-api.d.ts +3 -3
  3. package/action-sheet/src/action-sheet.component.d.ts +25 -25
  4. package/action-sheet/src/action-sheet.interface.d.ts +20 -20
  5. package/action-sheet/src/action-sheet.module.d.ts +14 -14
  6. package/action-sheet/src/action-sheet.service.d.ts +13 -13
  7. package/alert/index.d.ts +5 -5
  8. package/alert/public-api.d.ts +2 -2
  9. package/alert/src/alert.component.d.ts +88 -88
  10. package/alert/src/alert.module.d.ts +9 -9
  11. package/avatar/index.d.ts +5 -5
  12. package/avatar/public-api.d.ts +3 -3
  13. package/avatar/src/avatar-group.component.d.ts +8 -8
  14. package/avatar/src/avatar.component.d.ts +20 -20
  15. package/avatar/src/avatar.module.d.ts +9 -9
  16. package/badge/index.d.ts +5 -5
  17. package/badge/public-api.d.ts +2 -2
  18. package/badge/src/badge.component.d.ts +41 -41
  19. package/badge/src/badge.module.d.ts +8 -8
  20. package/breadcrumbs/index.d.ts +5 -5
  21. package/breadcrumbs/public-api.d.ts +4 -4
  22. package/breadcrumbs/src/breadcrumbs-item.class.d.ts +9 -9
  23. package/breadcrumbs/src/breadcrumbs-item.component.d.ts +77 -79
  24. package/breadcrumbs/src/breadcrumbs.component.d.ts +13 -13
  25. package/breadcrumbs/src/breadcrumbs.module.d.ts +9 -9
  26. package/button/index.d.ts +5 -5
  27. package/button/public-api.d.ts +5 -5
  28. package/button/src/button-group.component.d.ts +86 -86
  29. package/button/src/button-item.class.d.ts +24 -24
  30. package/button/src/button-item.component.d.ts +82 -80
  31. package/button/src/button.component.d.ts +23 -23
  32. package/button/src/button.module.d.ts +11 -11
  33. package/calendar/index.d.ts +5 -5
  34. package/calendar/public-api.d.ts +4 -4
  35. package/calendar/src/calendar-range.component.d.ts +29 -29
  36. package/calendar/src/calendar.class.d.ts +100 -100
  37. package/calendar/src/calendar.component.d.ts +44 -44
  38. package/calendar/src/calendar.module.d.ts +10 -10
  39. package/card/index.d.ts +5 -5
  40. package/card/public-api.d.ts +2 -2
  41. package/card/src/card.component.d.ts +10 -10
  42. package/card/src/card.module.d.ts +8 -8
  43. package/checkbox/index.d.ts +5 -5
  44. package/checkbox/public-api.d.ts +2 -2
  45. package/checkbox/src/checkbox.component.d.ts +12 -12
  46. package/checkbox/src/checkbox.module.d.ts +10 -10
  47. package/chips/index.d.ts +5 -5
  48. package/chips/public-api.d.ts +2 -2
  49. package/chips/src/chips.component.d.ts +72 -72
  50. package/chips/src/chips.module.d.ts +8 -8
  51. package/collapse/index.d.ts +5 -5
  52. package/collapse/public-api.d.ts +3 -3
  53. package/collapse/src/collapse-group.component.d.ts +15 -15
  54. package/collapse/src/collapse.component.d.ts +17 -17
  55. package/collapse/src/collapse.module.d.ts +9 -9
  56. package/color-palette/index.d.ts +5 -5
  57. package/color-palette/public-api.d.ts +7 -7
  58. package/color-palette/src/color-palette-input.component.d.ts +22 -22
  59. package/color-palette/src/color-palette-picker.component.d.ts +32 -32
  60. package/color-palette/src/color-palette-preview.component.d.ts +11 -11
  61. package/color-palette/src/color-palette-swatches.component.d.ts +18 -18
  62. package/color-palette/src/color-palette.class.d.ts +22 -22
  63. package/color-palette/src/color-palette.component.d.ts +16 -16
  64. package/color-palette/src/color-palette.module.d.ts +19 -19
  65. package/color-picker/index.d.ts +5 -5
  66. package/color-picker/public-api.d.ts +2 -2
  67. package/color-picker/src/color-picker.component.d.ts +190 -193
  68. package/color-picker/src/color-picker.module.d.ts +18 -18
  69. package/common/index.d.ts +5 -5
  70. package/common/public-api.d.ts +16 -16
  71. package/common/src/classes/components.class.d.ts +62 -62
  72. package/common/src/classes/data.class.d.ts +4 -4
  73. package/common/src/classes/drawing.class.d.ts +9 -9
  74. package/common/src/classes/events.class.d.ts +95 -95
  75. package/common/src/classes/styles.class.d.ts +17 -17
  76. package/common/src/common.module.d.ts +11 -11
  77. package/common/src/components/base-component.class.d.ts +28 -28
  78. package/common/src/components/button-base-component.class.d.ts +36 -36
  79. package/common/src/components/color-component.class.d.ts +15 -15
  80. package/common/src/components/colorlook-component.class.d.ts +9 -9
  81. package/common/src/components/index.d.ts +7 -7
  82. package/common/src/components/interactive-component.class.d.ts +37 -37
  83. package/common/src/components/look-component.class.d.ts +15 -15
  84. package/common/src/components/value-component.class.d.ts +45 -45
  85. package/common/src/constant/positions.d.ts +75 -75
  86. package/common/src/directives/auto-focus.directive.d.ts +13 -13
  87. package/common/src/directives/debounce-time.directive.d.ts +17 -17
  88. package/common/src/directives/hotkey.directive.d.ts +22 -22
  89. package/common/src/directives/infinite-scroll.directive.d.ts +25 -25
  90. package/common/src/directives/responsive.directive.d.ts +10 -10
  91. package/common/src/services/custom-cdk-overlay.service.d.ts +19 -19
  92. package/common/src/services/hotkey.service.d.ts +17 -17
  93. package/common/src/services/overlay.service.d.ts +34 -34
  94. package/context-menu/index.d.ts +5 -5
  95. package/context-menu/public-api.d.ts +2 -2
  96. package/context-menu/src/context-menu.component.d.ts +34 -34
  97. package/context-menu/src/context-menu.module.d.ts +13 -13
  98. package/data-pager/index.d.ts +5 -5
  99. package/data-pager/public-api.d.ts +9 -9
  100. package/data-pager/src/data-pager-base.component.d.ts +49 -49
  101. package/data-pager/src/data-pager-info.component.d.ts +15 -15
  102. package/data-pager/src/data-pager-input-selector.component.d.ts +15 -15
  103. package/data-pager/src/data-pager-next-buttons.components.d.ts +16 -16
  104. package/data-pager/src/data-pager-numeric-selector.component.d.ts +18 -18
  105. package/data-pager/src/data-pager-pagesize-dropdown.component.d.ts +18 -18
  106. package/data-pager/src/data-pager-prev-buttons.component.d.ts +15 -15
  107. package/data-pager/src/data-pager.component.d.ts +35 -35
  108. package/data-pager/src/data-pager.module.d.ts +18 -18
  109. package/data-table/index.d.ts +5 -5
  110. package/data-table/public-api.d.ts +4 -4
  111. package/data-table/src/data-column-cell-template.directive.d.ts +8 -8
  112. package/data-table/src/data-column.directive.d.ts +16 -16
  113. package/data-table/src/data-table.component.d.ts +37 -37
  114. package/data-table/src/data-table.module.d.ts +14 -14
  115. package/date-picker/index.d.ts +5 -5
  116. package/date-picker/public-api.d.ts +2 -2
  117. package/date-picker/src/datepicker.component.d.ts +154 -154
  118. package/date-picker/src/datepicker.module.d.ts +15 -15
  119. package/decorators/index.d.ts +5 -5
  120. package/decorators/public-api.d.ts +14 -14
  121. package/decorators/src/close-button.component.d.ts +14 -14
  122. package/decorators/src/content.component.d.ts +8 -8
  123. package/decorators/src/decorators.module.d.ts +20 -20
  124. package/decorators/src/footer.component.d.ts +8 -8
  125. package/decorators/src/form-hint.component.d.ts +8 -8
  126. package/decorators/src/header.component.d.ts +8 -8
  127. package/decorators/src/icon.component.d.ts +10 -10
  128. package/decorators/src/overlay.component.d.ts +6 -6
  129. package/decorators/src/placeholder.component.d.ts +5 -5
  130. package/decorators/src/prefix.component.d.ts +8 -8
  131. package/decorators/src/sub-title.component.d.ts +9 -9
  132. package/decorators/src/suffix.component.d.ts +8 -8
  133. package/decorators/src/text.component.d.ts +9 -9
  134. package/decorators/src/title.component.d.ts +8 -8
  135. package/dialog/index.d.ts +5 -5
  136. package/dialog/public-api.d.ts +4 -4
  137. package/dialog/src/dialog.class.d.ts +13 -13
  138. package/dialog/src/dialog.component.d.ts +16 -16
  139. package/dialog/src/dialog.module.d.ts +14 -14
  140. package/dialog/src/dialog.service.d.ts +38 -38
  141. package/drawer/index.d.ts +5 -5
  142. package/drawer/public-api.d.ts +3 -3
  143. package/drawer/src/drawer-container.component.d.ts +10 -10
  144. package/drawer/src/drawer.component.d.ts +36 -36
  145. package/drawer/src/drawer.module.d.ts +9 -9
  146. package/dropdown/index.d.ts +5 -5
  147. package/dropdown/public-api.d.ts +2 -2
  148. package/dropdown/src/dropdown-panel.component.d.ts +30 -30
  149. package/dropdown/src/dropdown.module.d.ts +14 -14
  150. package/esm2022/acorex-components.mjs +4 -4
  151. package/esm2022/action-sheet/acorex-components-action-sheet.mjs +4 -4
  152. package/esm2022/action-sheet/public-api.mjs +3 -3
  153. package/esm2022/action-sheet/src/action-sheet.component.mjs +81 -80
  154. package/esm2022/action-sheet/src/action-sheet.interface.mjs +2 -2
  155. package/esm2022/action-sheet/src/action-sheet.module.mjs +27 -26
  156. package/esm2022/action-sheet/src/action-sheet.service.mjs +94 -93
  157. package/esm2022/alert/acorex-components-alert.mjs +4 -4
  158. package/esm2022/alert/public-api.mjs +2 -2
  159. package/esm2022/alert/src/alert.component.mjs +189 -188
  160. package/esm2022/alert/src/alert.module.mjs +23 -22
  161. package/esm2022/avatar/acorex-components-avatar.mjs +4 -4
  162. package/esm2022/avatar/public-api.mjs +3 -3
  163. package/esm2022/avatar/src/avatar-group.component.mjs +17 -16
  164. package/esm2022/avatar/src/avatar.component.mjs +44 -43
  165. package/esm2022/avatar/src/avatar.module.mjs +23 -22
  166. package/esm2022/badge/acorex-components-badge.mjs +4 -4
  167. package/esm2022/badge/public-api.mjs +2 -2
  168. package/esm2022/badge/src/badge.component.mjs +29 -28
  169. package/esm2022/badge/src/badge.module.mjs +22 -21
  170. package/esm2022/breadcrumbs/acorex-components-breadcrumbs.mjs +4 -4
  171. package/esm2022/breadcrumbs/public-api.mjs +4 -4
  172. package/esm2022/breadcrumbs/src/breadcrumbs-item.class.mjs +1 -1
  173. package/esm2022/breadcrumbs/src/breadcrumbs-item.component.mjs +51 -50
  174. package/esm2022/breadcrumbs/src/breadcrumbs.component.mjs +28 -27
  175. package/esm2022/breadcrumbs/src/breadcrumbs.module.mjs +21 -20
  176. package/esm2022/button/acorex-components-button.mjs +4 -4
  177. package/esm2022/button/public-api.mjs +5 -5
  178. package/esm2022/button/src/button-group.component.mjs +92 -91
  179. package/esm2022/button/src/button-item.class.mjs +1 -1
  180. package/esm2022/button/src/button-item.component.mjs +70 -69
  181. package/esm2022/button/src/button.component.mjs +79 -78
  182. package/esm2022/button/src/button.module.mjs +33 -32
  183. package/esm2022/calendar/acorex-components-calendar.mjs +4 -4
  184. package/esm2022/calendar/public-api.mjs +4 -4
  185. package/esm2022/calendar/src/calendar-range.component.mjs +175 -174
  186. package/esm2022/calendar/src/calendar.class.mjs +282 -280
  187. package/esm2022/calendar/src/calendar.component.mjs +373 -372
  188. package/esm2022/calendar/src/calendar.module.mjs +24 -23
  189. package/esm2022/card/acorex-components-card.mjs +4 -4
  190. package/esm2022/card/public-api.mjs +2 -2
  191. package/esm2022/card/src/card.component.mjs +19 -18
  192. package/esm2022/card/src/card.module.mjs +20 -19
  193. package/esm2022/checkbox/acorex-components-checkbox.mjs +4 -4
  194. package/esm2022/checkbox/public-api.mjs +2 -2
  195. package/esm2022/checkbox/src/checkbox.component.mjs +43 -42
  196. package/esm2022/checkbox/src/checkbox.module.mjs +22 -21
  197. package/esm2022/chips/acorex-components-chips.mjs +4 -4
  198. package/esm2022/chips/public-api.mjs +2 -2
  199. package/esm2022/chips/src/chips.component.mjs +34 -33
  200. package/esm2022/chips/src/chips.module.mjs +20 -19
  201. package/esm2022/collapse/acorex-components-collapse.mjs +4 -4
  202. package/esm2022/collapse/public-api.mjs +3 -3
  203. package/esm2022/collapse/src/collapse-group.component.mjs +53 -52
  204. package/esm2022/collapse/src/collapse.component.mjs +48 -47
  205. package/esm2022/collapse/src/collapse.module.mjs +21 -20
  206. package/esm2022/color-palette/acorex-components-color-palette.mjs +4 -4
  207. package/esm2022/color-palette/public-api.mjs +7 -7
  208. package/esm2022/color-palette/src/color-palette-input.component.mjs +131 -130
  209. package/esm2022/color-palette/src/color-palette-picker.component.mjs +160 -159
  210. package/esm2022/color-palette/src/color-palette-preview.component.mjs +57 -56
  211. package/esm2022/color-palette/src/color-palette-swatches.component.mjs +295 -294
  212. package/esm2022/color-palette/src/color-palette.class.mjs +19 -17
  213. package/esm2022/color-palette/src/color-palette.component.mjs +76 -75
  214. package/esm2022/color-palette/src/color-palette.module.mjs +61 -60
  215. package/esm2022/color-picker/acorex-components-color-picker.mjs +4 -4
  216. package/esm2022/color-picker/public-api.mjs +2 -2
  217. package/esm2022/color-picker/src/color-picker.component.mjs +120 -119
  218. package/esm2022/color-picker/src/color-picker.module.mjs +62 -61
  219. package/esm2022/common/acorex-components-common.mjs +4 -4
  220. package/esm2022/common/public-api.mjs +16 -16
  221. package/esm2022/common/src/classes/components.class.mjs +78 -72
  222. package/esm2022/common/src/classes/data.class.mjs +1 -1
  223. package/esm2022/common/src/classes/drawing.class.mjs +1 -1
  224. package/esm2022/common/src/classes/events.class.mjs +95 -95
  225. package/esm2022/common/src/classes/styles.class.mjs +12 -12
  226. package/esm2022/common/src/common.module.mjs +43 -42
  227. package/esm2022/common/src/components/base-component.class.mjs +56 -56
  228. package/esm2022/common/src/components/button-base-component.class.mjs +68 -68
  229. package/esm2022/common/src/components/color-component.class.mjs +26 -26
  230. package/esm2022/common/src/components/colorlook-component.class.mjs +10 -10
  231. package/esm2022/common/src/components/index.mjs +7 -7
  232. package/esm2022/common/src/components/interactive-component.class.mjs +62 -62
  233. package/esm2022/common/src/components/look-component.class.mjs +26 -26
  234. package/esm2022/common/src/components/value-component.class.mjs +207 -206
  235. package/esm2022/common/src/constant/positions.mjs +74 -74
  236. package/esm2022/common/src/directives/auto-focus.directive.mjs +58 -57
  237. package/esm2022/common/src/directives/debounce-time.directive.mjs +50 -49
  238. package/esm2022/common/src/directives/hotkey.directive.mjs +83 -82
  239. package/esm2022/common/src/directives/infinite-scroll.directive.mjs +70 -69
  240. package/esm2022/common/src/directives/responsive.directive.mjs +36 -35
  241. package/esm2022/common/src/services/custom-cdk-overlay.service.mjs +52 -50
  242. package/esm2022/common/src/services/hotkey.service.mjs +41 -40
  243. package/esm2022/common/src/services/overlay.service.mjs +116 -115
  244. package/esm2022/context-menu/acorex-components-context-menu.mjs +4 -4
  245. package/esm2022/context-menu/public-api.mjs +2 -2
  246. package/esm2022/context-menu/src/context-menu.component.mjs +271 -270
  247. package/esm2022/context-menu/src/context-menu.module.mjs +37 -36
  248. package/esm2022/data-pager/acorex-components-data-pager.mjs +4 -4
  249. package/esm2022/data-pager/public-api.mjs +9 -9
  250. package/esm2022/data-pager/src/data-pager-base.component.mjs +37 -35
  251. package/esm2022/data-pager/src/data-pager-info.component.mjs +62 -61
  252. package/esm2022/data-pager/src/data-pager-input-selector.component.mjs +46 -45
  253. package/esm2022/data-pager/src/data-pager-next-buttons.components.mjs +51 -50
  254. package/esm2022/data-pager/src/data-pager-numeric-selector.component.mjs +75 -74
  255. package/esm2022/data-pager/src/data-pager-pagesize-dropdown.component.mjs +67 -66
  256. package/esm2022/data-pager/src/data-pager-prev-buttons.component.mjs +48 -47
  257. package/esm2022/data-pager/src/data-pager.component.mjs +147 -146
  258. package/esm2022/data-pager/src/data-pager.module.mjs +52 -51
  259. package/esm2022/data-table/acorex-components-data-table.mjs +4 -4
  260. package/esm2022/data-table/public-api.mjs +4 -4
  261. package/esm2022/data-table/src/data-column-cell-template.directive.mjs +19 -18
  262. package/esm2022/data-table/src/data-column.directive.mjs +51 -50
  263. package/esm2022/data-table/src/data-table.component.mjs +140 -139
  264. package/esm2022/data-table/src/data-table.module.mjs +28 -27
  265. package/esm2022/date-picker/acorex-components-date-picker.mjs +4 -4
  266. package/esm2022/date-picker/public-api.mjs +2 -2
  267. package/esm2022/date-picker/src/datepicker.component.mjs +241 -240
  268. package/esm2022/date-picker/src/datepicker.module.mjs +45 -44
  269. package/esm2022/decorators/acorex-components-decorators.mjs +4 -4
  270. package/esm2022/decorators/public-api.mjs +14 -14
  271. package/esm2022/decorators/src/close-button.component.mjs +44 -43
  272. package/esm2022/decorators/src/content.component.mjs +22 -21
  273. package/esm2022/decorators/src/decorators.module.mjs +72 -71
  274. package/esm2022/decorators/src/footer.component.mjs +22 -21
  275. package/esm2022/decorators/src/form-hint.component.mjs +21 -20
  276. package/esm2022/decorators/src/header.component.mjs +22 -21
  277. package/esm2022/decorators/src/icon.component.mjs +31 -30
  278. package/esm2022/decorators/src/overlay.component.mjs +21 -20
  279. package/esm2022/decorators/src/placeholder.component.mjs +15 -14
  280. package/esm2022/decorators/src/prefix.component.mjs +22 -21
  281. package/esm2022/decorators/src/sub-title.component.mjs +26 -25
  282. package/esm2022/decorators/src/suffix.component.mjs +22 -21
  283. package/esm2022/decorators/src/text.component.mjs +23 -22
  284. package/esm2022/decorators/src/title.component.mjs +21 -20
  285. package/esm2022/dialog/acorex-components-dialog.mjs +4 -4
  286. package/esm2022/dialog/public-api.mjs +4 -4
  287. package/esm2022/dialog/src/dialog.class.mjs +1 -1
  288. package/esm2022/dialog/src/dialog.component.mjs +56 -55
  289. package/esm2022/dialog/src/dialog.module.mjs +28 -27
  290. package/esm2022/dialog/src/dialog.service.mjs +155 -154
  291. package/esm2022/drawer/acorex-components-drawer.mjs +4 -4
  292. package/esm2022/drawer/public-api.mjs +3 -3
  293. package/esm2022/drawer/src/drawer-container.component.mjs +31 -30
  294. package/esm2022/drawer/src/drawer.component.mjs +139 -138
  295. package/esm2022/drawer/src/drawer.module.mjs +23 -22
  296. package/esm2022/dropdown/acorex-components-dropdown.mjs +4 -4
  297. package/esm2022/dropdown/public-api.mjs +2 -2
  298. package/esm2022/dropdown/src/dropdown-panel.component.mjs +106 -105
  299. package/esm2022/dropdown/src/dropdown.module.mjs +26 -25
  300. package/esm2022/form/acorex-components-form.mjs +4 -4
  301. package/esm2022/form/public-api.mjs +6 -6
  302. package/esm2022/form/src/form-field.component.mjs +16 -15
  303. package/esm2022/form/src/form.component.mjs +164 -163
  304. package/esm2022/form/src/form.module.mjs +64 -63
  305. package/esm2022/form/src/validation-rule.widget.mjs +114 -113
  306. package/esm2022/form/src/validation-summary.component.mjs +82 -81
  307. package/esm2022/form/src/validation.class.mjs +1 -1
  308. package/esm2022/image/acorex-components-image.mjs +4 -4
  309. package/esm2022/image/public-api.mjs +2 -2
  310. package/esm2022/image/src/image.component.mjs +80 -79
  311. package/esm2022/image/src/image.module.mjs +20 -19
  312. package/esm2022/label/acorex-components-label.mjs +4 -4
  313. package/esm2022/label/public-api.mjs +2 -2
  314. package/esm2022/label/src/label.component.mjs +49 -48
  315. package/esm2022/label/src/label.module.mjs +22 -21
  316. package/esm2022/loading/acorex-components-loading.mjs +4 -4
  317. package/esm2022/loading/public-api.mjs +5 -5
  318. package/esm2022/loading/src/loading-spinner.component.mjs +18 -17
  319. package/esm2022/loading/src/loading.component.mjs +58 -57
  320. package/esm2022/loading/src/loading.directive.mjs +77 -76
  321. package/esm2022/loading/src/loading.module.mjs +36 -35
  322. package/esm2022/loading/src/loading.service.mjs +159 -158
  323. package/esm2022/menu/acorex-components-menu.mjs +4 -4
  324. package/esm2022/menu/public-api.mjs +2 -2
  325. package/esm2022/menu/src/menu.component.mjs +347 -346
  326. package/esm2022/menu/src/menu.module.mjs +34 -33
  327. package/esm2022/mixin/acorex-components-mixin.mjs +4 -4
  328. package/esm2022/mixin/public-api.mjs +17 -17
  329. package/esm2022/mixin/src/base-components.class.mjs +111 -110
  330. package/esm2022/mixin/src/base-menu-mixin.class.mjs +133 -133
  331. package/esm2022/mixin/src/button-mixin.class.mjs +70 -70
  332. package/esm2022/mixin/src/clickable-mixin.class.mjs +23 -23
  333. package/esm2022/mixin/src/color-look-mixing.class.mjs +47 -47
  334. package/esm2022/mixin/src/constratctor.mjs +1 -1
  335. package/esm2022/mixin/src/datalist-component.class.mjs +150 -150
  336. package/esm2022/mixin/src/datalist.class.mjs +2 -2
  337. package/esm2022/mixin/src/dropdown-mixin.class.mjs +98 -98
  338. package/esm2022/mixin/src/interactive-mixin.class.mjs +80 -80
  339. package/esm2022/mixin/src/loading-mixin.class.mjs +25 -25
  340. package/esm2022/mixin/src/mixin.class.mjs +25 -25
  341. package/esm2022/mixin/src/page-component.class.mjs +10 -10
  342. package/esm2022/mixin/src/selection-component.class.mjs +182 -182
  343. package/esm2022/mixin/src/sizable-mixin.class.mjs +21 -21
  344. package/esm2022/mixin/src/textbox-mixin.class.mjs +65 -65
  345. package/esm2022/mixin/src/value-mixin.class.mjs +219 -219
  346. package/esm2022/notification/acorex-components-notification.mjs +4 -4
  347. package/esm2022/notification/public-api.mjs +4 -4
  348. package/esm2022/notification/src/notification.class.mjs +1 -1
  349. package/esm2022/notification/src/notification.component.mjs +93 -92
  350. package/esm2022/notification/src/notification.module.mjs +24 -23
  351. package/esm2022/notification/src/notification.service.mjs +110 -109
  352. package/esm2022/number-box/acorex-components-number-box.mjs +4 -4
  353. package/esm2022/number-box/public-api.mjs +2 -2
  354. package/esm2022/number-box/src/number-box.component.mjs +269 -268
  355. package/esm2022/number-box/src/number-box.module.mjs +36 -35
  356. package/esm2022/page/acorex-components-page.mjs +4 -4
  357. package/esm2022/page/public-api.mjs +3 -3
  358. package/esm2022/page/src/base-page.class.mjs +64 -63
  359. package/esm2022/page/src/page.component.mjs +47 -46
  360. package/esm2022/page/src/page.module.mjs +19 -18
  361. package/esm2022/password-box/acorex-components-password-box.mjs +4 -4
  362. package/esm2022/password-box/public-api.mjs +2 -2
  363. package/esm2022/password-box/src/password-box.component.mjs +64 -63
  364. package/esm2022/password-box/src/password-box.module.mjs +33 -32
  365. package/esm2022/picker/acorex-components-picker.mjs +4 -4
  366. package/esm2022/picker/public-api.mjs +3 -3
  367. package/esm2022/picker/src/picker-column.component.mjs +21 -20
  368. package/esm2022/picker/src/picker.component.mjs +17 -16
  369. package/esm2022/picker/src/picker.module.mjs +38 -37
  370. package/esm2022/popover/acorex-components-popover.mjs +4 -4
  371. package/esm2022/popover/public-api.mjs +2 -2
  372. package/esm2022/popover/src/popover.component.mjs +263 -262
  373. package/esm2022/popover/src/popover.module.mjs +20 -19
  374. package/esm2022/popup/acorex-components-popup.mjs +4 -4
  375. package/esm2022/popup/public-api.mjs +3 -3
  376. package/esm2022/popup/src/popup.component.mjs +146 -145
  377. package/esm2022/popup/src/popup.module.mjs +28 -27
  378. package/esm2022/popup/src/popup.service.mjs +117 -116
  379. package/esm2022/progress-bar/acorex-components-progress-bar.mjs +4 -4
  380. package/esm2022/progress-bar/public-api.mjs +2 -2
  381. package/esm2022/progress-bar/src/progress-bar.component.mjs +34 -33
  382. package/esm2022/progress-bar/src/progress-bar.module.mjs +20 -19
  383. package/esm2022/public-api.mjs +4 -4
  384. package/esm2022/radio/acorex-components-radio.mjs +4 -4
  385. package/esm2022/radio/public-api.mjs +2 -2
  386. package/esm2022/radio/src/radio.component.mjs +40 -39
  387. package/esm2022/radio/src/radio.module.mjs +23 -22
  388. package/esm2022/range-slider/acorex-components-range-slider.mjs +4 -4
  389. package/esm2022/range-slider/public-api.mjs +2 -2
  390. package/esm2022/range-slider/src/range-slider.component.mjs +118 -117
  391. package/esm2022/range-slider/src/range-slider.module.mjs +23 -22
  392. package/esm2022/rating/acorex-components-rating.mjs +4 -4
  393. package/esm2022/rating/public-api.mjs +2 -2
  394. package/esm2022/rating/src/rating.component.mjs +42 -41
  395. package/esm2022/rating/src/rating.component.module.mjs +20 -19
  396. package/esm2022/result/acorex-components-result.mjs +4 -4
  397. package/esm2022/result/public-api.mjs +2 -2
  398. package/esm2022/result/src/result.component.mjs +27 -26
  399. package/esm2022/result/src/result.module.mjs +20 -19
  400. package/esm2022/search-box/acorex-components-search-box.mjs +4 -4
  401. package/esm2022/search-box/public-api.mjs +2 -2
  402. package/esm2022/search-box/src/search-box.component.mjs +55 -54
  403. package/esm2022/search-box/src/search-box.module.mjs +26 -25
  404. package/esm2022/select-box/acorex-components-select-box.mjs +4 -4
  405. package/esm2022/select-box/public-api.mjs +2 -2
  406. package/esm2022/select-box/src/selectbox.component.mjs +392 -391
  407. package/esm2022/select-box/src/selectbox.module.mjs +65 -64
  408. package/esm2022/selection-list/acorex-components-selection-list.mjs +4 -4
  409. package/esm2022/selection-list/public-api.mjs +2 -2
  410. package/esm2022/selection-list/src/selection-list.component.mjs +60 -60
  411. package/esm2022/selection-list/src/selection-list.module.mjs +25 -24
  412. package/esm2022/switch/acorex-components-switch.mjs +4 -4
  413. package/esm2022/switch/public-api.mjs +3 -3
  414. package/esm2022/switch/src/switch-content.component.mjs +17 -16
  415. package/esm2022/switch/src/switch.component.mjs +55 -54
  416. package/esm2022/switch/src/switch.module.mjs +23 -22
  417. package/esm2022/tabs/acorex-components-tabs.mjs +4 -4
  418. package/esm2022/tabs/public-api.mjs +5 -5
  419. package/esm2022/tabs/src/tab-content.directive.mjs +32 -31
  420. package/esm2022/tabs/src/tab-item.component.mjs +91 -90
  421. package/esm2022/tabs/src/tabs.class.mjs +5 -5
  422. package/esm2022/tabs/src/tabs.component.mjs +103 -102
  423. package/esm2022/tabs/src/tabs.module.mjs +26 -25
  424. package/esm2022/tag/acorex-components-tag.mjs +4 -4
  425. package/esm2022/tag/public-api.mjs +2 -2
  426. package/esm2022/tag/src/tag.component.mjs +30 -29
  427. package/esm2022/tag/src/tag.module.mjs +20 -19
  428. package/esm2022/textarea/acorex-components-textarea.mjs +4 -4
  429. package/esm2022/textarea/public-api.mjs +2 -2
  430. package/esm2022/textarea/src/textarea.component.mjs +30 -29
  431. package/esm2022/textarea/src/textarea.module.mjs +20 -19
  432. package/esm2022/textbox/acorex-components-textbox.mjs +4 -4
  433. package/esm2022/textbox/public-api.mjs +3 -3
  434. package/esm2022/textbox/src/mask-options.directive.mjs +20 -19
  435. package/esm2022/textbox/src/textbox.component.mjs +96 -95
  436. package/esm2022/textbox/src/textbox.module.mjs +39 -38
  437. package/esm2022/time-box/acorex-components-time-box.mjs +4 -4
  438. package/esm2022/time-box/public-api.mjs +2 -2
  439. package/esm2022/time-box/src/time-box.component.mjs +306 -305
  440. package/esm2022/time-box/src/time-box.module.mjs +33 -32
  441. package/esm2022/toast/acorex-components-toast.mjs +4 -4
  442. package/esm2022/toast/public-api.mjs +4 -4
  443. package/esm2022/toast/src/toast.class.mjs +1 -1
  444. package/esm2022/toast/src/toast.component.mjs +68 -67
  445. package/esm2022/toast/src/toast.module.mjs +23 -22
  446. package/esm2022/toast/src/toast.service.mjs +137 -136
  447. package/esm2022/tooltip/acorex-components-tooltip.mjs +4 -4
  448. package/esm2022/tooltip/public-api.mjs +3 -3
  449. package/esm2022/tooltip/src/tooltip.component.mjs +22 -21
  450. package/esm2022/tooltip/src/tooltip.directive.mjs +164 -163
  451. package/esm2022/tooltip/src/tooltip.module.mjs +23 -22
  452. package/esm2022/tree-view/acorex-components-tree-view.mjs +4 -4
  453. package/esm2022/tree-view/public-api.mjs +2 -2
  454. package/esm2022/tree-view/src/tree-view.component.mjs +108 -107
  455. package/esm2022/tree-view/src/tree-view.module.mjs +21 -20
  456. package/esm2022/uploader/acorex-components-uploader.mjs +4 -4
  457. package/esm2022/uploader/public-api.mjs +2 -2
  458. package/esm2022/uploader/src/uploader.component.mjs +102 -101
  459. package/esm2022/uploader/src/uploader.module.mjs +21 -20
  460. package/fesm2022/acorex-components-action-sheet.mjs +170 -170
  461. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  462. package/fesm2022/acorex-components-alert.mjs +196 -196
  463. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  464. package/fesm2022/acorex-components-avatar.mjs +66 -66
  465. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  466. package/fesm2022/acorex-components-badge.mjs +39 -39
  467. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  468. package/fesm2022/acorex-components-breadcrumbs.mjs +78 -78
  469. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  470. package/fesm2022/acorex-components-button.mjs +245 -245
  471. package/fesm2022/acorex-components-button.mjs.map +1 -1
  472. package/fesm2022/acorex-components-calendar.mjs +815 -815
  473. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  474. package/fesm2022/acorex-components-card.mjs +28 -28
  475. package/fesm2022/acorex-components-card.mjs.map +1 -1
  476. package/fesm2022/acorex-components-checkbox.mjs +51 -51
  477. package/fesm2022/acorex-components-checkbox.mjs.map +1 -1
  478. package/fesm2022/acorex-components-chips.mjs +42 -42
  479. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  480. package/fesm2022/acorex-components-collapse.mjs +102 -102
  481. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  482. package/fesm2022/acorex-components-color-palette.mjs +717 -717
  483. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  484. package/fesm2022/acorex-components-color-picker.mjs +153 -153
  485. package/fesm2022/acorex-components-color-picker.mjs.map +1 -1
  486. package/fesm2022/acorex-components-common.mjs +1150 -1150
  487. package/fesm2022/acorex-components-common.mjs.map +1 -1
  488. package/fesm2022/acorex-components-context-menu.mjs +287 -287
  489. package/fesm2022/acorex-components-context-menu.mjs.map +1 -1
  490. package/fesm2022/acorex-components-data-pager.mjs +487 -487
  491. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  492. package/fesm2022/acorex-components-data-table.mjs +205 -205
  493. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  494. package/fesm2022/acorex-components-date-picker.mjs +256 -256
  495. package/fesm2022/acorex-components-date-picker.mjs.map +1 -1
  496. package/fesm2022/acorex-components-decorators.mjs +287 -287
  497. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  498. package/fesm2022/acorex-components-dialog.mjs +207 -207
  499. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  500. package/fesm2022/acorex-components-drawer.mjs +174 -174
  501. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  502. package/fesm2022/acorex-components-dropdown.mjs +111 -111
  503. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  504. package/fesm2022/acorex-components-form.mjs +392 -392
  505. package/fesm2022/acorex-components-form.mjs.map +1 -1
  506. package/fesm2022/acorex-components-image.mjs +88 -88
  507. package/fesm2022/acorex-components-image.mjs.map +1 -1
  508. package/fesm2022/acorex-components-label.mjs +59 -59
  509. package/fesm2022/acorex-components-label.mjs.map +1 -1
  510. package/fesm2022/acorex-components-loading.mjs +308 -308
  511. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  512. package/fesm2022/acorex-components-menu.mjs +359 -359
  513. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  514. package/fesm2022/acorex-components-mixin.mjs +1214 -1214
  515. package/fesm2022/acorex-components-mixin.mjs.map +1 -1
  516. package/fesm2022/acorex-components-notification.mjs +200 -200
  517. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  518. package/fesm2022/acorex-components-number-box.mjs +284 -284
  519. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  520. package/fesm2022/acorex-components-page.mjs +112 -112
  521. package/fesm2022/acorex-components-page.mjs.map +1 -1
  522. package/fesm2022/acorex-components-password-box.mjs +81 -81
  523. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  524. package/fesm2022/acorex-components-picker.mjs +54 -54
  525. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  526. package/fesm2022/acorex-components-popover.mjs +266 -266
  527. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  528. package/fesm2022/acorex-components-popup.mjs +258 -258
  529. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  530. package/fesm2022/acorex-components-progress-bar.mjs +43 -43
  531. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  532. package/fesm2022/acorex-components-radio.mjs +50 -50
  533. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  534. package/fesm2022/acorex-components-range-slider.mjs +127 -127
  535. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  536. package/fesm2022/acorex-components-rating.mjs +51 -51
  537. package/fesm2022/acorex-components-rating.mjs.map +1 -1
  538. package/fesm2022/acorex-components-result.mjs +35 -35
  539. package/fesm2022/acorex-components-result.mjs.map +1 -1
  540. package/fesm2022/acorex-components-search-box.mjs +59 -59
  541. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  542. package/fesm2022/acorex-components-select-box.mjs +422 -422
  543. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  544. package/fesm2022/acorex-components-selection-list.mjs +68 -69
  545. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  546. package/fesm2022/acorex-components-switch.mjs +74 -74
  547. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  548. package/fesm2022/acorex-components-tabs.mjs +227 -227
  549. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  550. package/fesm2022/acorex-components-tag.mjs +38 -38
  551. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  552. package/fesm2022/acorex-components-textarea.mjs +37 -37
  553. package/fesm2022/acorex-components-textarea.mjs.map +1 -1
  554. package/fesm2022/acorex-components-textbox.mjs +130 -130
  555. package/fesm2022/acorex-components-textbox.mjs.map +1 -1
  556. package/fesm2022/acorex-components-time-box.mjs +319 -319
  557. package/fesm2022/acorex-components-time-box.mjs.map +1 -1
  558. package/fesm2022/acorex-components-toast.mjs +204 -204
  559. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  560. package/fesm2022/acorex-components-tooltip.mjs +187 -187
  561. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  562. package/fesm2022/acorex-components-tree-view.mjs +116 -116
  563. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  564. package/fesm2022/acorex-components-uploader.mjs +109 -109
  565. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  566. package/fesm2022/acorex-components.mjs +5 -5
  567. package/form/index.d.ts +5 -5
  568. package/form/public-api.d.ts +6 -6
  569. package/form/src/form-field.component.d.ts +8 -8
  570. package/form/src/form.component.d.ts +51 -51
  571. package/form/src/form.module.d.ts +15 -15
  572. package/form/src/validation-rule.widget.d.ts +18 -18
  573. package/form/src/validation-summary.component.d.ts +23 -23
  574. package/form/src/validation.class.d.ts +18 -18
  575. package/image/index.d.ts +5 -5
  576. package/image/public-api.d.ts +2 -2
  577. package/image/src/image.component.d.ts +27 -27
  578. package/image/src/image.module.d.ts +8 -8
  579. package/index.d.ts +5 -5
  580. package/label/index.d.ts +5 -5
  581. package/label/public-api.d.ts +2 -2
  582. package/label/src/label.component.d.ts +17 -17
  583. package/label/src/label.module.d.ts +8 -8
  584. package/loading/index.d.ts +5 -5
  585. package/loading/public-api.d.ts +5 -5
  586. package/loading/src/loading-spinner.component.d.ts +6 -6
  587. package/loading/src/loading.component.d.ts +21 -21
  588. package/loading/src/loading.directive.d.ts +22 -22
  589. package/loading/src/loading.module.d.ts +13 -13
  590. package/loading/src/loading.service.d.ts +48 -48
  591. package/menu/index.d.ts +5 -5
  592. package/menu/public-api.d.ts +2 -2
  593. package/menu/src/menu.component.d.ts +39 -39
  594. package/menu/src/menu.module.d.ts +12 -12
  595. package/mixin/index.d.ts +5 -5
  596. package/mixin/public-api.d.ts +17 -17
  597. package/mixin/src/base-components.class.d.ts +84 -84
  598. package/mixin/src/base-menu-mixin.class.d.ts +53 -53
  599. package/mixin/src/button-mixin.class.d.ts +53 -53
  600. package/mixin/src/clickable-mixin.class.d.ts +36 -36
  601. package/mixin/src/color-look-mixing.class.d.ts +44 -44
  602. package/mixin/src/constratctor.d.ts +4 -4
  603. package/mixin/src/datalist-component.class.d.ts +59 -59
  604. package/mixin/src/datalist.class.d.ts +11 -11
  605. package/mixin/src/dropdown-mixin.class.d.ts +47 -47
  606. package/mixin/src/interactive-mixin.class.d.ts +63 -63
  607. package/mixin/src/loading-mixin.class.d.ts +40 -40
  608. package/mixin/src/mixin.class.d.ts +679 -679
  609. package/mixin/src/page-component.class.d.ts +28 -28
  610. package/mixin/src/selection-component.class.d.ts +61 -61
  611. package/mixin/src/sizable-mixin.class.d.ts +34 -34
  612. package/mixin/src/textbox-mixin.class.d.ts +72 -72
  613. package/mixin/src/value-mixin.class.d.ts +63 -63
  614. package/notification/index.d.ts +5 -5
  615. package/notification/public-api.d.ts +4 -4
  616. package/notification/src/notification.class.d.ts +18 -18
  617. package/notification/src/notification.component.d.ts +30 -30
  618. package/notification/src/notification.module.d.ts +10 -10
  619. package/notification/src/notification.service.d.ts +16 -16
  620. package/number-box/index.d.ts +5 -5
  621. package/number-box/public-api.d.ts +2 -2
  622. package/number-box/src/number-box.component.d.ts +77 -77
  623. package/number-box/src/number-box.module.d.ts +12 -12
  624. package/package.json +8 -8
  625. package/page/index.d.ts +5 -5
  626. package/page/public-api.d.ts +3 -3
  627. package/page/src/base-page.class.d.ts +25 -25
  628. package/page/src/page.component.d.ts +14 -14
  629. package/page/src/page.module.d.ts +6 -6
  630. package/password-box/index.d.ts +5 -5
  631. package/password-box/public-api.d.ts +2 -2
  632. package/password-box/src/password-box.component.d.ts +25 -25
  633. package/password-box/src/password-box.module.d.ts +11 -11
  634. package/picker/index.d.ts +5 -5
  635. package/picker/public-api.d.ts +3 -3
  636. package/picker/src/picker-column.component.d.ts +11 -11
  637. package/picker/src/picker.component.d.ts +10 -10
  638. package/picker/src/picker.module.d.ts +14 -14
  639. package/popover/index.d.ts +5 -5
  640. package/popover/public-api.d.ts +2 -2
  641. package/popover/src/popover.component.d.ts +51 -51
  642. package/popover/src/popover.module.d.ts +8 -8
  643. package/popup/index.d.ts +5 -5
  644. package/popup/public-api.d.ts +3 -3
  645. package/popup/src/popup.component.d.ts +45 -45
  646. package/popup/src/popup.module.d.ts +14 -14
  647. package/popup/src/popup.service.d.ts +42 -42
  648. package/progress-bar/index.d.ts +5 -5
  649. package/progress-bar/public-api.d.ts +2 -2
  650. package/progress-bar/src/progress-bar.component.d.ts +18 -18
  651. package/progress-bar/src/progress-bar.module.d.ts +8 -8
  652. package/public-api.d.ts +1 -1
  653. package/radio/index.d.ts +5 -5
  654. package/radio/public-api.d.ts +2 -2
  655. package/radio/src/radio.component.d.ts +18 -18
  656. package/radio/src/radio.module.d.ts +9 -9
  657. package/range-slider/index.d.ts +5 -5
  658. package/range-slider/public-api.d.ts +2 -2
  659. package/range-slider/src/range-slider.component.d.ts +41 -41
  660. package/range-slider/src/range-slider.module.d.ts +9 -9
  661. package/rating/index.d.ts +5 -5
  662. package/rating/public-api.d.ts +2 -2
  663. package/rating/src/rating.component.d.ts +21 -21
  664. package/rating/src/rating.component.module.d.ts +8 -8
  665. package/result/index.d.ts +5 -5
  666. package/result/public-api.d.ts +2 -2
  667. package/result/src/result.component.d.ts +12 -12
  668. package/result/src/result.module.d.ts +8 -8
  669. package/search-box/index.d.ts +5 -5
  670. package/search-box/public-api.d.ts +2 -2
  671. package/search-box/src/search-box.component.d.ts +18 -18
  672. package/search-box/src/search-box.module.d.ts +12 -12
  673. package/select-box/index.d.ts +5 -5
  674. package/select-box/public-api.d.ts +2 -2
  675. package/select-box/src/selectbox.component.d.ts +66 -66
  676. package/select-box/src/selectbox.module.d.ts +19 -19
  677. package/selection-list/index.d.ts +5 -5
  678. package/selection-list/public-api.d.ts +2 -2
  679. package/selection-list/src/selection-list.component.d.ts +23 -23
  680. package/selection-list/src/selection-list.module.d.ts +13 -13
  681. package/switch/index.d.ts +5 -5
  682. package/switch/public-api.d.ts +3 -3
  683. package/switch/src/switch-content.component.d.ts +8 -8
  684. package/switch/src/switch.component.d.ts +13 -13
  685. package/switch/src/switch.module.d.ts +11 -11
  686. package/tabs/index.d.ts +5 -5
  687. package/tabs/public-api.d.ts +5 -5
  688. package/tabs/src/tab-content.directive.d.ts +11 -11
  689. package/tabs/src/tab-item.component.d.ts +48 -48
  690. package/tabs/src/tabs.class.d.ts +7 -7
  691. package/tabs/src/tabs.component.d.ts +29 -29
  692. package/tabs/src/tabs.module.d.ts +12 -12
  693. package/tag/index.d.ts +5 -5
  694. package/tag/public-api.d.ts +2 -2
  695. package/tag/src/tag.component.d.ts +11 -11
  696. package/tag/src/tag.module.d.ts +8 -8
  697. package/textarea/index.d.ts +5 -5
  698. package/textarea/public-api.d.ts +2 -2
  699. package/textarea/src/textarea.component.d.ts +14 -14
  700. package/textarea/src/textarea.module.d.ts +9 -9
  701. package/textbox/index.d.ts +5 -5
  702. package/textbox/public-api.d.ts +3 -3
  703. package/textbox/src/mask-options.directive.d.ts +13 -13
  704. package/textbox/src/textbox.component.d.ts +27 -27
  705. package/textbox/src/textbox.module.d.ts +13 -13
  706. package/time-box/index.d.ts +5 -5
  707. package/time-box/public-api.d.ts +2 -2
  708. package/time-box/src/time-box.component.d.ts +50 -50
  709. package/time-box/src/time-box.module.d.ts +11 -11
  710. package/toast/index.d.ts +5 -5
  711. package/toast/public-api.d.ts +4 -4
  712. package/toast/src/toast.class.d.ts +15 -15
  713. package/toast/src/toast.component.d.ts +25 -25
  714. package/toast/src/toast.module.d.ts +9 -9
  715. package/toast/src/toast.service.d.ts +21 -21
  716. package/tooltip/index.d.ts +5 -5
  717. package/tooltip/public-api.d.ts +3 -3
  718. package/tooltip/src/tooltip.component.d.ts +11 -11
  719. package/tooltip/src/tooltip.directive.d.ts +22 -22
  720. package/tooltip/src/tooltip.module.d.ts +10 -10
  721. package/tree-view/index.d.ts +5 -5
  722. package/tree-view/public-api.d.ts +2 -2
  723. package/tree-view/src/tree-view.component.d.ts +33 -33
  724. package/tree-view/src/tree-view.module.d.ts +9 -9
  725. package/uploader/index.d.ts +5 -5
  726. package/uploader/public-api.d.ts +2 -2
  727. package/uploader/src/uploader.component.d.ts +28 -28
  728. package/uploader/src/uploader.module.d.ts +9 -9
@@ -1,346 +1,347 @@
1
- import { ComponentPortal } from '@angular/cdk/portal';
2
- import { Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, } from '@angular/core';
3
- import { AXBaseMenuMixin } from '@acorex/components/mixin';
4
- import { AXPlatform } from '@acorex/core/platform';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/cdk/overlay";
7
- import * as i2 from "@acorex/core/platform";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@acorex/components/loading";
10
- import * as i5 from "@acorex/core/translation";
11
- /**
12
- * The Button is a component which detects user interaction and triggers a corresponding event
13
- *
14
- * @category Components
15
- */
16
- export class AXMenuComponent extends AXBaseMenuMixin {
17
- _elementRef;
18
- cdr;
19
- _overlay;
20
- _platform;
21
- _contentEmptyTemplate;
22
- _contentItemTemplate;
23
- _overlayRef;
24
- get emptyTemplate() {
25
- return this._contentEmptyTemplate;
26
- }
27
- get itemTemplate() {
28
- return this._contentItemTemplate;
29
- }
30
- rtl = new AXPlatform().isRtl();
31
- _levelCount = 0;
32
- _oldItem;
33
- constructor(_elementRef, cdr, _overlay, _platform) {
34
- super(_elementRef, cdr);
35
- this._elementRef = _elementRef;
36
- this.cdr = cdr;
37
- this._overlay = _overlay;
38
- this._platform = _platform;
39
- }
40
- onInit() {
41
- super.onInit();
42
- }
43
- ngAfterViewInit() {
44
- super.onViewInit();
45
- }
46
- _onMenuMouseEnter(e, item) {
47
- const targetElement = e.target;
48
- if (this.isLoading || targetElement.tagName === 'UL') {
49
- return;
50
- }
51
- if (this.openMode === 'hover') {
52
- this._handelMenuLogic(e, item);
53
- }
54
- e.stopPropagation();
55
- e.preventDefault();
56
- }
57
- _onMenuClick(e, item) {
58
- const targetElement = e.target;
59
- if (this.isLoading || targetElement.tagName === 'UL') {
60
- return;
61
- }
62
- if (this.openMode === 'click') {
63
- this._handelMenuLogic(e, item);
64
- }
65
- this.onMenuItemClick.emit({
66
- component: this,
67
- item: item,
68
- nativeEvent: e,
69
- });
70
- e.stopPropagation();
71
- e.preventDefault();
72
- }
73
- _getDirection() {
74
- if (this.displayMode === 'horizontal' && this._levelCount === 0) {
75
- return 'ax-horizontal';
76
- }
77
- else if (this._levelCount > 0) {
78
- return 'ax-vertical ax-submenu-ul';
79
- }
80
- else if (this.displayMode === 'sidemenu') {
81
- return 'ax-side-menu';
82
- }
83
- else {
84
- return 'ax-vertical';
85
- }
86
- }
87
- _removeActive(items) {
88
- items.forEach(element => {
89
- element.active = false;
90
- if (element?.children?.length > 0) {
91
- this._removeActive(element.children);
92
- }
93
- });
94
- }
95
- _closeOpenChild(items) {
96
- items.forEach(element => {
97
- element.opened = false;
98
- if (element?.children?.length > 0) {
99
- this._closeOpenChild(element.children);
100
- }
101
- });
102
- }
103
- _initParent(items, parentId) {
104
- items.forEach(element => {
105
- element.parentId = parentId;
106
- });
107
- }
108
- _handelMenuLogic(e, item) {
109
- if (!item[this.disableField] || item[this.dividerField] === false) {
110
- const targetElement = e.target;
111
- if ((targetElement.closest('li') && this.openMode === 'click') || (targetElement.closest('li') && this.openMode === 'hover')) {
112
- if (this._overlayRef && this._oldItem !== item) {
113
- this._overlayRef.detach();
114
- }
115
- if (this.displayMode === 'horizontal') {
116
- this.displayItems.forEach(element => {
117
- if (!item.parentId && item[this.valueField] !== element[this.valueField]) {
118
- element.opened = false;
119
- }
120
- });
121
- }
122
- if (item?.children?.length > 0) {
123
- if (this.displayMode === 'horizontal') {
124
- this._initParent(item.children, item[this.valueField]);
125
- }
126
- if (this.displayMode === 'horizontal' || this.displayMode === 'vertical') {
127
- if (this._oldItem !== item) {
128
- this._openAsOverlay(targetElement.closest('li'), item.children);
129
- }
130
- }
131
- this._closeOpenChild(item.children);
132
- if (this.displayMode === 'horizontal' || this.displayMode === 'vertical') {
133
- item.opened = true;
134
- }
135
- else {
136
- item.opened = !item.opened;
137
- }
138
- }
139
- this._removeActive(this.displayItems);
140
- if (e.type !== 'mouseenter')
141
- item.active = !item.active;
142
- if (this.displayMode === 'horizontal' || this.displayMode === 'vertical') {
143
- if (this._oldItem && this._oldItem?.opened && item[this.valueField] !== this._oldItem[this.valueField]) {
144
- this._oldItem.opened = false;
145
- }
146
- this._oldItem = item;
147
- }
148
- }
149
- }
150
- }
151
- _openAsOverlay(targetRef, overlayItems) {
152
- let positions = [];
153
- if (this.displayMode === 'vertical') {
154
- if (this._levelCount >= 1) {
155
- positions = [
156
- {
157
- originX: 'end',
158
- originY: 'center',
159
- overlayX: 'start',
160
- overlayY: 'top',
161
- },
162
- {
163
- originX: 'end',
164
- originY: 'center',
165
- overlayX: 'start',
166
- overlayY: 'bottom',
167
- },
168
- {
169
- originX: 'center',
170
- originY: 'center',
171
- overlayX: 'center',
172
- overlayY: 'center',
173
- },
174
- ];
175
- }
176
- else {
177
- positions = [
178
- {
179
- originX: 'end',
180
- originY: 'center',
181
- overlayX: 'start',
182
- overlayY: 'top',
183
- },
184
- {
185
- originX: 'end',
186
- originY: 'top',
187
- overlayX: 'start',
188
- overlayY: 'bottom',
189
- },
190
- {
191
- originX: 'center',
192
- originY: 'center',
193
- overlayX: 'center',
194
- overlayY: 'center',
195
- },
196
- ];
197
- }
198
- }
199
- else {
200
- if (this._levelCount >= 1) {
201
- positions = [
202
- {
203
- originX: 'end',
204
- originY: 'top',
205
- overlayX: 'start',
206
- overlayY: 'top',
207
- },
208
- {
209
- originX: 'end',
210
- originY: 'center',
211
- overlayX: 'start',
212
- overlayY: 'bottom',
213
- },
214
- {
215
- originX: 'end',
216
- originY: 'top',
217
- overlayX: 'center',
218
- overlayY: 'top',
219
- },
220
- {
221
- originX: 'center',
222
- originY: 'top',
223
- overlayX: 'center',
224
- overlayY: 'top',
225
- },
226
- ];
227
- }
228
- else {
229
- positions = [
230
- {
231
- originX: 'start',
232
- originY: 'bottom',
233
- overlayX: 'start',
234
- overlayY: 'top',
235
- },
236
- {
237
- originX: 'end',
238
- originY: 'center',
239
- overlayX: 'start',
240
- overlayY: 'bottom',
241
- },
242
- {
243
- originX: 'end',
244
- originY: 'top',
245
- overlayX: 'center',
246
- overlayY: 'top',
247
- },
248
- {
249
- originX: 'center',
250
- originY: 'top',
251
- overlayX: 'center',
252
- overlayY: 'top',
253
- },
254
- ];
255
- }
256
- }
257
- this._overlayRef = this._overlay.create({
258
- scrollStrategy: this._overlay.scrollStrategies.close(),
259
- positionStrategy: this._overlay
260
- .position()
261
- .flexibleConnectedTo(targetRef)
262
- .withPositions([...positions])
263
- .withPush(false)
264
- .withDefaultOffsetX(12),
265
- direction: this._platform.isRtl() ? 'rtl' : 'ltr',
266
- disposeOnNavigation: true,
267
- panelClass: ['ax-animate-fadeIn', 'ax-animate-faster', 'ax-overlay-menu'],
268
- maxHeight: 'unset',
269
- hasBackdrop: false,
270
- backdropClass: ['cdk-overlay-transparent-backdrop'],
271
- });
272
- const ref = this._overlayRef.attach(new ComponentPortal(AXMenuComponent));
273
- ref.instance.items = overlayItems;
274
- ref.instance.displayMode = this.displayMode;
275
- ref.instance.openMode = 'hover';
276
- ref.instance._levelCount = this._levelCount + 1;
277
- ref.instance.disableField = this.disableField;
278
- ref.instance.visibleField = this.visibleField;
279
- ref.instance.valueField = this.valueField;
280
- ref.instance.textField = this.textField;
281
- ref.instance.iconField = this.iconField;
282
- ref.instance.dividerField = this.dividerField;
283
- ref.onDestroy(() => {
284
- ref.instance?._overlayRef?.dispose();
285
- });
286
- this._overlayRef.outsidePointerEvents().subscribe(e => {
287
- if (this._overlayRef && this.openMode === 'click') {
288
- this._close();
289
- e.stopPropagation();
290
- }
291
- });
292
- this._platform.scroll.subscribe(() => {
293
- if (this._overlayRef) {
294
- this._close();
295
- }
296
- });
297
- this._platform.resize.subscribe(() => {
298
- if (this._overlayRef) {
299
- this._close();
300
- }
301
- });
302
- }
303
- _close() {
304
- this._overlayRef.detach();
305
- this._oldItem = null;
306
- this.displayItems.forEach(element => {
307
- element.opened = false;
308
- element.active = false;
309
- });
310
- this.cdr.detectChanges();
311
- }
312
- onDestroy() {
313
- this._overlayRef?.detach();
314
- }
315
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXMenuComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i2.AXPlatform }], target: i0.ɵɵFactoryTarget.Component });
316
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: AXMenuComponent, selector: "ax-menu", inputs: { disabled: "disabled", tabIndex: "tabIndex", textField: "textField", valueField: "valueField", items: "items", parentId: "parentId", iconField: "iconField", tooltip: "tooltip", opened: "opened", active: "active", visibleField: "visibleField", disableField: "disableField", hasChildField: "hasChildField", dividerField: "dividerField", openMode: "openMode", displayMode: "displayMode", showModal: "showModal" }, outputs: { onBlur: "onBlur", onFocus: "onFocus", onMenuItemClick: "onMenuItemClick" }, queries: [{ propertyName: "_contentEmptyTemplate", first: true, predicate: ["emptyTemplate"], descendants: true }, { propertyName: "_contentItemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"displayItems.length; else tmpEmpty\">\r\n <ul [ngClass]=\"_getDirection()\" [class.ax-rtl]=\"rtl\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context: { list: displayItems, isRoot: true }\"></ng-container>\r\n </ul>\r\n <ng-template #recursiveListTmpl let-list=\"list\" let-isRoot=\"isRoot\">\r\n <ng-container *ngFor=\"let item of list\">\r\n <li\r\n *ngIf=\"item[visibleField] != false\"\r\n [class.ax-state-disabled]=\"item[disableField]\"\r\n (click)=\"_onMenuClick($event, item)\"\r\n (mouseenter)=\"_onMenuMouseEnter($event, item)\"\r\n [ngClass]=\"{ 'ax-state-active ': item.active }\">\r\n <div\r\n class=\"ax-menu-item\"\r\n [ngClass]=\"{\r\n 'ax-is-parent': item?.children?.length,\r\n 'ax-is-child': !isRoot\r\n }\"\r\n *ngIf=\"itemTemplate == null; else tmpItem\">\r\n <div class=\"ax-menu-item-prefix\">\r\n <span class=\"ax-menu-item-icon\" *ngIf=\"item[iconField]\" [class]=\"item[iconField]\"></span>\r\n <span>{{ _getItemDisplayTextTemplte(item) }}</span>\r\n </div>\r\n <div class=\"ax-menu-item-suffix\">\r\n <span\r\n class=\"ax-menu-item-icon ax-icon ax-menu-item-icon-chevron\"\r\n [ngClass]=\"{\r\n 'ax-icon-chevron-down': item?.children?.length > 0,\r\n 'ax-menu-active-icon': item.opened\r\n }\"\r\n *ngIf=\"!item.isLoading\"></span>\r\n <ax-loading *ngIf=\"item.isLoading\"> </ax-loading>\r\n </div>\r\n </div>\r\n <!--------------- check for custom item template --------------->\r\n <ng-template #tmpItem>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"> </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ul *ngIf=\"item?.children?.length > 0 && item.opened && !_overlayRef\" [class.ax-state-disabled]=\"item[disableField]\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context: { list: item.children }\"> </ng-container>\r\n </ul>\r\n </li>\r\n <li class=\"ax-menu-item-divider\" *ngIf=\"item[this.dividerField]\"></li>\r\n </ng-container>\r\n </ng-template>\r\n</ng-container>\r\n<ng-container *ngIf=\"isLoading\">\r\n <ng-template>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\">\r\n <ax-loading text=\"{{ 'layout.loading.text' | trans }}\"></ax-loading>\r\n </div>\r\n </ng-template>\r\n</ng-container>\r\n\r\n<ng-template #tmpEmpty>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <!--------------- check for custom template --------------->\r\n <ng-container *ngIf=\"emptyTemplate; else elseEmptyTemplate\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"> </ng-container>\r\n </ng-container>\r\n <ng-template #elseEmptyTemplate>\r\n {{ 'common.no-result-found' | trans }}\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>\r\n", styles: ["ax-menu{font-size:.875rem;display:block}ax-menu ul{width:-moz-fit-content;width:fit-content;display:flex;flex-direction:column;color:rgba(var(--ax-color-text-default))}ax-menu ul li.ax-state-active{color:rgba(var(--ax-color-primary-500))}ax-menu ul li .ax-menu-item{display:flex}ax-menu ul li .ax-menu-item .ax-menu-item-prefix,ax-menu ul li .ax-menu-item .ax-menu-item-suffix{display:flex;align-items:center;justify-content:center}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon-chevron,ax-menu ul li .ax-menu-item .ax-menu-item-suffix .ax-menu-item-icon-chevron{transform:rotate(-90deg)}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon:not(:empty),ax-menu ul li .ax-menu-item .ax-menu-item-suffix .ax-menu-item-icon:not(:empty){min-width:1.25rem;min-height:1.25rem}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon{padding-inline-end:.5rem}ax-menu ul li .ax-menu-item .ax-menu-item-icon{font-size:1.25rem}ax-menu ul li.ax-state-disabled{cursor:not-allowed!important;opacity:.5}ax-menu ul li.ax-state-active .ax-menu-item-icon-chevron{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-menu .ax-horizontal>li,ax-menu .ax-vertical>li{font-weight:500}ax-menu .ax-horizontal{flex-direction:row;align-items:center}ax-menu .ax-horizontal .ax-menu-item-divider{width:1px;height:1rem;background-color:rgba(var(--ax-color-on-surface))}ax-menu .ax-horizontal li.ax-state-active .ax-menu-item-icon-chevron{transform:rotate(0)!important}ax-menu .ax-horizontal li:not(.ax-menu-item-divider){padding:.5rem;cursor:pointer}ax-menu .ax-vertical{flex-direction:column;width:100%}ax-menu .ax-vertical>li{font-weight:500}ax-menu .ax-vertical .ax-menu-item-divider{width:100%;height:1px;background-color:rgba(var(--ax-color-on-surface));margin:.375rem 0}ax-menu .ax-vertical li.ax-state-active .ax-menu-item-icon-chevron{transform:rotate(0)!important}ax-menu .ax-vertical li:not(.ax-menu-item-divider){padding:.5rem 0;cursor:pointer}ax-menu .ax-vertical.ax-submenu-ul{background-color:rgba(var(--ax-color-surface));border:1px solid;border-color:rgba(var(--ax-color-border-default));border-radius:var(--ax-rounded-border-default);padding:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}ax-menu .ax-vertical.ax-submenu-ul li{border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-menu .ax-vertical.ax-submenu-ul li:not(.ax-menu-item-divider){padding:.5rem}ax-menu .ax-vertical.ax-submenu-ul li:not(.ax-state-disabled,.ax-menu-item-divider):hover{background-color:rgba(var(--ax-color-on-surface));color:rgba(var(--ax-color-on-surface-fore))}ax-menu .ax-side-menu{width:100%;flex-direction:column;gap:.5rem;-webkit-user-select:none;user-select:none}ax-menu .ax-side-menu .ax-menu-item-divider{width:100%;height:1px;background-color:rgba(var(--ax-color-on-surface));margin:.375rem 0}ax-menu .ax-side-menu ul{display:flex;flex-direction:column;margin-top:.5rem;width:100%;padding:0 .5rem}ax-menu .ax-side-menu li .ax-menu-item-icon-chevron.ax-menu-active-icon{transform:rotate(180deg)!important}ax-menu .ax-side-menu li .ax-menu-item{justify-content:space-between}ax-menu .ax-side-menu li .ax-menu-item.ax-is-parent{font-weight:500}ax-menu .ax-side-menu li:not(.ax-menu-item-divider){padding:.5rem 0;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "text"], outputs: ["visibleChange"] }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "trans" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
317
- }
318
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXMenuComponent, decorators: [{
319
- type: Component,
320
- args: [{ selector: 'ax-menu', inputs: [
321
- 'disabled',
322
- 'tabIndex',
323
- 'textField',
324
- 'valueField',
325
- 'items',
326
- 'parentId',
327
- 'iconField',
328
- 'tooltip',
329
- 'opened',
330
- 'active',
331
- 'visibleField',
332
- 'disableField',
333
- 'hasChildField',
334
- 'dividerField',
335
- 'openMode',
336
- 'displayMode',
337
- 'showModal',
338
- ], outputs: ['onBlur', 'onFocus', 'onMenuItemClick'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"displayItems.length; else tmpEmpty\">\r\n <ul [ngClass]=\"_getDirection()\" [class.ax-rtl]=\"rtl\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context: { list: displayItems, isRoot: true }\"></ng-container>\r\n </ul>\r\n <ng-template #recursiveListTmpl let-list=\"list\" let-isRoot=\"isRoot\">\r\n <ng-container *ngFor=\"let item of list\">\r\n <li\r\n *ngIf=\"item[visibleField] != false\"\r\n [class.ax-state-disabled]=\"item[disableField]\"\r\n (click)=\"_onMenuClick($event, item)\"\r\n (mouseenter)=\"_onMenuMouseEnter($event, item)\"\r\n [ngClass]=\"{ 'ax-state-active ': item.active }\">\r\n <div\r\n class=\"ax-menu-item\"\r\n [ngClass]=\"{\r\n 'ax-is-parent': item?.children?.length,\r\n 'ax-is-child': !isRoot\r\n }\"\r\n *ngIf=\"itemTemplate == null; else tmpItem\">\r\n <div class=\"ax-menu-item-prefix\">\r\n <span class=\"ax-menu-item-icon\" *ngIf=\"item[iconField]\" [class]=\"item[iconField]\"></span>\r\n <span>{{ _getItemDisplayTextTemplte(item) }}</span>\r\n </div>\r\n <div class=\"ax-menu-item-suffix\">\r\n <span\r\n class=\"ax-menu-item-icon ax-icon ax-menu-item-icon-chevron\"\r\n [ngClass]=\"{\r\n 'ax-icon-chevron-down': item?.children?.length > 0,\r\n 'ax-menu-active-icon': item.opened\r\n }\"\r\n *ngIf=\"!item.isLoading\"></span>\r\n <ax-loading *ngIf=\"item.isLoading\"> </ax-loading>\r\n </div>\r\n </div>\r\n <!--------------- check for custom item template --------------->\r\n <ng-template #tmpItem>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"> </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ul *ngIf=\"item?.children?.length > 0 && item.opened && !_overlayRef\" [class.ax-state-disabled]=\"item[disableField]\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context: { list: item.children }\"> </ng-container>\r\n </ul>\r\n </li>\r\n <li class=\"ax-menu-item-divider\" *ngIf=\"item[this.dividerField]\"></li>\r\n </ng-container>\r\n </ng-template>\r\n</ng-container>\r\n<ng-container *ngIf=\"isLoading\">\r\n <ng-template>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\">\r\n <ax-loading text=\"{{ 'layout.loading.text' | trans }}\"></ax-loading>\r\n </div>\r\n </ng-template>\r\n</ng-container>\r\n\r\n<ng-template #tmpEmpty>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <!--------------- check for custom template --------------->\r\n <ng-container *ngIf=\"emptyTemplate; else elseEmptyTemplate\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"> </ng-container>\r\n </ng-container>\r\n <ng-template #elseEmptyTemplate>\r\n {{ 'common.no-result-found' | trans }}\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>\r\n", styles: ["ax-menu{font-size:.875rem;display:block}ax-menu ul{width:-moz-fit-content;width:fit-content;display:flex;flex-direction:column;color:rgba(var(--ax-color-text-default))}ax-menu ul li.ax-state-active{color:rgba(var(--ax-color-primary-500))}ax-menu ul li .ax-menu-item{display:flex}ax-menu ul li .ax-menu-item .ax-menu-item-prefix,ax-menu ul li .ax-menu-item .ax-menu-item-suffix{display:flex;align-items:center;justify-content:center}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon-chevron,ax-menu ul li .ax-menu-item .ax-menu-item-suffix .ax-menu-item-icon-chevron{transform:rotate(-90deg)}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon:not(:empty),ax-menu ul li .ax-menu-item .ax-menu-item-suffix .ax-menu-item-icon:not(:empty){min-width:1.25rem;min-height:1.25rem}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon{padding-inline-end:.5rem}ax-menu ul li .ax-menu-item .ax-menu-item-icon{font-size:1.25rem}ax-menu ul li.ax-state-disabled{cursor:not-allowed!important;opacity:.5}ax-menu ul li.ax-state-active .ax-menu-item-icon-chevron{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-menu .ax-horizontal>li,ax-menu .ax-vertical>li{font-weight:500}ax-menu .ax-horizontal{flex-direction:row;align-items:center}ax-menu .ax-horizontal .ax-menu-item-divider{width:1px;height:1rem;background-color:rgba(var(--ax-color-on-surface))}ax-menu .ax-horizontal li.ax-state-active .ax-menu-item-icon-chevron{transform:rotate(0)!important}ax-menu .ax-horizontal li:not(.ax-menu-item-divider){padding:.5rem;cursor:pointer}ax-menu .ax-vertical{flex-direction:column;width:100%}ax-menu .ax-vertical>li{font-weight:500}ax-menu .ax-vertical .ax-menu-item-divider{width:100%;height:1px;background-color:rgba(var(--ax-color-on-surface));margin:.375rem 0}ax-menu .ax-vertical li.ax-state-active .ax-menu-item-icon-chevron{transform:rotate(0)!important}ax-menu .ax-vertical li:not(.ax-menu-item-divider){padding:.5rem 0;cursor:pointer}ax-menu .ax-vertical.ax-submenu-ul{background-color:rgba(var(--ax-color-surface));border:1px solid;border-color:rgba(var(--ax-color-border-default));border-radius:var(--ax-rounded-border-default);padding:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}ax-menu .ax-vertical.ax-submenu-ul li{border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-menu .ax-vertical.ax-submenu-ul li:not(.ax-menu-item-divider){padding:.5rem}ax-menu .ax-vertical.ax-submenu-ul li:not(.ax-state-disabled,.ax-menu-item-divider):hover{background-color:rgba(var(--ax-color-on-surface));color:rgba(var(--ax-color-on-surface-fore))}ax-menu .ax-side-menu{width:100%;flex-direction:column;gap:.5rem;-webkit-user-select:none;user-select:none}ax-menu .ax-side-menu .ax-menu-item-divider{width:100%;height:1px;background-color:rgba(var(--ax-color-on-surface));margin:.375rem 0}ax-menu .ax-side-menu ul{display:flex;flex-direction:column;margin-top:.5rem;width:100%;padding:0 .5rem}ax-menu .ax-side-menu li .ax-menu-item-icon-chevron.ax-menu-active-icon{transform:rotate(180deg)!important}ax-menu .ax-side-menu li .ax-menu-item{justify-content:space-between}ax-menu .ax-side-menu li .ax-menu-item.ax-is-parent{font-weight:500}ax-menu .ax-side-menu li:not(.ax-menu-item-divider){padding:.5rem 0;cursor:pointer}\n"] }]
339
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i2.AXPlatform }]; }, propDecorators: { _contentEmptyTemplate: [{
340
- type: ContentChild,
341
- args: ['emptyTemplate']
342
- }], _contentItemTemplate: [{
343
- type: ContentChild,
344
- args: ['itemTemplate']
345
- }] } });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9tZW51L3NyYy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL21lbnUvc3JjL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUVqQixZQUFZLEdBSWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQUVuRDs7OztHQUlHO0FBNEJILE1BQU0sT0FBTyxlQUFnQixTQUFRLGVBQWU7SUF1QjlCO0lBQWlDO0lBQWdDO0lBQTJCO0lBckJ4RyxxQkFBcUIsQ0FBbUI7SUFHeEMsb0JBQW9CLENBQW1CO0lBRXhDLFdBQVcsQ0FBYTtJQUUvQixJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVELEdBQUcsR0FBWSxJQUFJLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRWhDLFdBQVcsR0FBVyxDQUFDLENBQUM7SUFFeEIsUUFBUSxDQUFNO0lBRXRCLFlBQW9CLFdBQXVCLEVBQVUsR0FBc0IsRUFBVSxRQUFpQixFQUFVLFNBQXFCO1FBQ25JLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFETixnQkFBVyxHQUFYLFdBQVcs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Q1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNsQyxPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN2QixPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7dUdBNVVVLGVBQWU7MkZBQWYsZUFBZSw0eEJDaEQ1Qixva0dBbUVBOzsyRkRuQmEsZUFBZTtrQkEzQjNCLFNBQVM7K0JBQ0UsU0FBUyxVQUdYO3dCQUNOLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxVQUFVO3dCQUNWLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxRQUFRO3dCQUNSLFFBQVE7d0JBQ1IsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsV0FBVztxQkFDWixXQUNRLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxtQkFDaEMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTtnTEFJN0IscUJBQXFCO3NCQUQ1QixZQUFZO3VCQUFDLGVBQWU7Z0JBSXJCLG9CQUFvQjtzQkFEM0IsWUFBWTt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheVJlZiwgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBPbkluaXQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYQmFzZU1lbnVNaXhpbiB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9taXhpbic7XHJcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBCdXR0b24gaXMgYSBjb21wb25lbnQgd2hpY2ggZGV0ZWN0cyB1c2VyIGludGVyYWN0aW9uIGFuZCB0cmlnZ2VycyBhIGNvcnJlc3BvbmRpbmcgZXZlbnRcclxuICpcclxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lbnUuY29tcG9uZW50LnNjc3MnXSxcclxuICBpbnB1dHM6IFtcclxuICAgICdkaXNhYmxlZCcsXHJcbiAgICAndGFiSW5kZXgnLFxyXG4gICAgJ3RleHRGaWVsZCcsXHJcbiAgICAndmFsdWVGaWVsZCcsXHJcbiAgICAnaXRlbXMnLFxyXG4gICAgJ3BhcmVudElkJyxcclxuICAgICdpY29uRmllbGQnLFxyXG4gICAgJ3Rvb2x0aXAnLFxyXG4gICAgJ29wZW5lZCcsXHJcbiAgICAnYWN0aXZlJyxcclxuICAgICd2aXNpYmxlRmllbGQnLFxyXG4gICAgJ2Rpc2FibGVGaWVsZCcsXHJcbiAgICAnaGFzQ2hpbGRGaWVsZCcsXHJcbiAgICAnZGl2aWRlckZpZWxkJyxcclxuICAgICdvcGVuTW9kZScsXHJcbiAgICAnZGlzcGxheU1vZGUnLFxyXG4gICAgJ3Nob3dNb2RhbCcsXHJcbiAgXSxcclxuICBvdXRwdXRzOiBbJ29uQmx1cicsICdvbkZvY3VzJywgJ29uTWVudUl0ZW1DbGljayddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWE1lbnVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VNZW51TWl4aW4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBDb250ZW50Q2hpbGQoJ2VtcHR5VGVtcGxhdGUnKVxyXG4gIHByaXZhdGUgX2NvbnRlbnRFbXB0eVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAQ29udGVudENoaWxkKCdpdGVtVGVtcGxhdGUnKVxyXG4gIHByaXZhdGUgX2NvbnRlbnRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIHB1YmxpYyBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcclxuXHJcbiAgZ2V0IGVtcHR5VGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEVtcHR5VGVtcGxhdGU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRJdGVtVGVtcGxhdGU7XHJcbiAgfVxyXG5cclxuICBydGw6IGJvb2xlYW4gPSBuZXcgQVhQbGF0Zm9ybSgpLmlzUnRsKCk7XHJcblxyXG4gIHByaXZhdGUgX2xldmVsQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIHByaXZhdGUgX29sZEl0ZW06IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIF9wbGF0Zm9ybTogQVhQbGF0Zm9ybSkge1xyXG4gICAgc3VwZXIoX2VsZW1lbnRSZWYsIGNkcik7XHJcbiAgfVxyXG5cclxuICBvbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5vbkluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uVmlld0luaXQoKTtcclxuICB9XHJcblxyXG4gIF9vbk1lbnVNb3VzZUVudGVyKGU6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGUudGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICAgIGlmICh0aGlzLmlzTG9hZGluZyB8fCB0YXJnZXRFbGVtZW50LnRhZ05hbWUgPT09ICdVTCcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wZW5Nb2RlID09PSAnaG92ZXInKSB7XHJcbiAgICAgIHRoaXMuX2hhbmRlbE1lbnVMb2dpYyhlLCBpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgX29uTWVudUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGUudGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICAgIGlmICh0aGlzLmlzTG9hZGluZyB8fCB0YXJnZXRFbGVtZW50LnRhZ05hbWUgPT09ICdVTCcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wZW5Nb2RlID09PSAnY2xpY2snKSB7XHJcbiAgICAgIHRoaXMuX2hhbmRlbE1lbnVMb2dpYyhlLCBpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uTWVudUl0ZW1DbGljay5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBpdGVtOiBpdGVtLFxyXG4gICAgICBuYXRpdmVFdmVudDogZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBfZ2V0RGlyZWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5kaXNwbGF5TW9kZSA9PT0gJ2hvcml6b250YWwnICYmIHRoaXMuX2xldmVsQ291bnQgPT09IDApIHtcclxuICAgICAgcmV0dXJuICdheC1ob3Jpem9udGFsJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy5fbGV2ZWxDb3VudCA+IDApIHtcclxuICAgICAgcmV0dXJuICdheC12ZXJ0aWNhbCBheC1zdWJtZW51LXVsJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy5kaXNwbGF5TW9kZSA9PT0gJ3NpZGVtZW51Jykge1xyXG4gICAgICByZXR1cm4gJ2F4LXNpZGUtbWVudSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ2F4LXZlcnRpY2FsJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbW92ZUFjdGl2ZShpdGVtczogYW55KTogdm9pZCB7XHJcbiAgICBpdGVtcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBlbGVtZW50LmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICBpZiAoZWxlbWVudD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLl9yZW1vdmVBY3RpdmUoZWxlbWVudC5jaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VPcGVuQ2hpbGQoaXRlbXM6IGFueSk6IHZvaWQge1xyXG4gICAgaXRlbXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgZWxlbWVudC5vcGVuZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKGVsZW1lbnQ/LmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fY2xvc2VPcGVuQ2hpbGQoZWxlbWVudC5jaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFBhcmVudChpdGVtczogYW55LCBwYXJlbnRJZDogYW55KTogdm9pZCB7XHJcbiAgICBpdGVtcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBlbGVtZW50LnBhcmVudElkID0gcGFyZW50SWQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRlbE1lbnVMb2dpYyhlOiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghaXRlbVt0aGlzLmRpc2FibGVGaWVsZF0gfHwgaXRlbVt0aGlzLmRpdmlkZXJGaWVsZF0gPT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBlLnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgICAgaWYgKCh0YXJnZXRFbGVtZW50LmNsb3Nlc3QoJ2xpJykgJiYgdGhpcy5vcGVuTW9kZSA9PT0gJ2NsaWNrJykgfHwgKHRhcmdldEVsZW1lbnQuY2xvc2VzdCgnbGknKSAmJiB0aGlzLm9wZW5Nb2RlID09PSAnaG92ZXInKSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmICYmIHRoaXMuX29sZEl0ZW0gIT09IGl0ZW0pIHtcclxuICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlNb2RlID09PSAnaG9yaXpvbnRhbCcpIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheUl0ZW1zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5wYXJlbnRJZCAmJiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gIT09IGVsZW1lbnRbdGhpcy52YWx1ZUZpZWxkXSkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQub3BlbmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbT8uY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlNb2RlID09PSAnaG9yaXpvbnRhbCcpIHtcclxuICAgICAgICAgICAgdGhpcy5faW5pdFBhcmVudChpdGVtLmNoaWxkcmVuLCBpdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuZGlzcGxheU1vZGUgPT09ICdob3Jpem9udGFsJyB8fCB0aGlzLmRpc3BsYXlNb2RlID09PSAndmVydGljYWwnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9vbGRJdGVtICE9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fb3BlbkFzT3ZlcmxheSh0YXJnZXRFbGVtZW50LmNsb3Nlc3QoJ2xpJyksIGl0ZW0uY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl9jbG9zZU9wZW5DaGlsZChpdGVtLmNoaWxkcmVuKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5TW9kZSA9PT0gJ2hvcml6b250YWwnIHx8IHRoaXMuZGlzcGxheU1vZGUgPT09ICd2ZXJ0aWNhbCcpIHtcclxuICAgICAgICAgICAgaXRlbS5vcGVuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbS5vcGVuZWQgPSAhaXRlbS5vcGVuZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9yZW1vdmVBY3RpdmUodGhpcy5kaXNwbGF5SXRlbXMpO1xyXG5cclxuICAgICAgICBpZiAoZS50eXBlICE9PSAnbW91c2VlbnRlcicpIGl0ZW0uYWN0aXZlID0gIWl0ZW0uYWN0aXZlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5kaXNwbGF5TW9kZSA9PT0gJ2hvcml6b250YWwnIHx8IHRoaXMuZGlzcGxheU1vZGUgPT09ICd2ZXJ0aWNhbCcpIHtcclxuICAgICAgICAgIGlmICh0aGlzLl9vbGRJdGVtICYmIHRoaXMuX29sZEl0ZW0/Lm9wZW5lZCAmJiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gIT09IHRoaXMuX29sZEl0ZW1bdGhpcy52YWx1ZUZpZWxkXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9vbGRJdGVtLm9wZW5lZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fb2xkSXRlbSA9IGl0ZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vcGVuQXNPdmVybGF5KHRhcmdldFJlZiwgb3ZlcmxheUl0ZW1zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZGlzcGxheU1vZGUgPT09ICd2ZXJ0aWNhbCcpIHtcclxuICAgICAgaWYgKHRoaXMuX2xldmVsQ291bnQgPj0gMSkge1xyXG4gICAgICAgIHBvc2l0aW9ucyA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WTogJ2NlbnRlcicsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9sZXZlbENvdW50ID49IDEpIHtcclxuICAgICAgICBwb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBvc2l0aW9ucyA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgICAgb3JpZ2luWTogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKSxcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheVxyXG4gICAgICAgIC5wb3NpdGlvbigpXHJcbiAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGFyZ2V0UmVmKVxyXG4gICAgICAgIC53aXRoUG9zaXRpb25zKFsuLi5wb3NpdGlvbnNdKVxyXG4gICAgICAgIC53aXRoUHVzaChmYWxzZSlcclxuICAgICAgICAud2l0aERlZmF1bHRPZmZzZXRYKDEyKSxcclxuXHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fcGxhdGZvcm0uaXNSdGwoKSA/ICdydGwnIDogJ2x0cicsXHJcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnYXgtYW5pbWF0ZS1mYWRlSW4nLCAnYXgtYW5pbWF0ZS1mYXN0ZXInLCAnYXgtb3ZlcmxheS1tZW51J10sXHJcbiAgICAgIG1heEhlaWdodDogJ3Vuc2V0JyxcclxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiBbJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJ10sXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZWYgPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKEFYTWVudUNvbXBvbmVudCkpO1xyXG5cclxuICAgIHJlZi5pbnN0YW5jZS5pdGVtcyA9IG92ZXJsYXlJdGVtcztcclxuXHJcbiAgICByZWYuaW5zdGFuY2UuZGlzcGxheU1vZGUgPSB0aGlzLmRpc3BsYXlNb2RlO1xyXG5cclxuICAgIHJlZi5pbnN0YW5jZS5vcGVuTW9kZSA9ICdob3Zlcic7XHJcblxyXG4gICAgcmVmLmluc3RhbmNlLl9sZXZlbENvdW50ID0gdGhpcy5fbGV2ZWxDb3VudCArIDE7XHJcblxyXG4gICAgcmVmLmluc3RhbmNlLmRpc2FibGVGaWVsZCA9IHRoaXMuZGlzYWJsZUZpZWxkO1xyXG5cclxuICAgIHJlZi5pbnN0YW5jZS52aXNpYmxlRmllbGQgPSB0aGlzLnZpc2libGVGaWVsZDtcclxuXHJcbiAgICByZWYuaW5zdGFuY2UudmFsdWVGaWVsZCA9IHRoaXMudmFsdWVGaWVsZDtcclxuXHJcbiAgICByZWYuaW5zdGFuY2UudGV4dEZpZWxkID0gdGhpcy50ZXh0RmllbGQ7XHJcblxyXG4gICAgcmVmLmluc3RhbmNlLmljb25GaWVsZCA9IHRoaXMuaWNvbkZpZWxkO1xyXG5cclxuICAgIHJlZi5pbnN0YW5jZS5kaXZpZGVyRmllbGQgPSB0aGlzLmRpdmlkZXJGaWVsZDtcclxuXHJcbiAgICByZWYub25EZXN0cm95KCgpID0+IHtcclxuICAgICAgcmVmLmluc3RhbmNlPy5fb3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYgJiYgdGhpcy5vcGVuTW9kZSA9PT0gJ2NsaWNrJykge1xyXG4gICAgICAgIHRoaXMuX2Nsb3NlKCk7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fcGxhdGZvcm0uc2Nyb2xsLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XHJcbiAgICAgICAgdGhpcy5fY2xvc2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fcGxhdGZvcm0ucmVzaXplLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XHJcbiAgICAgICAgdGhpcy5fY2xvc2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZSgpIHtcclxuICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XHJcbiAgICB0aGlzLl9vbGRJdGVtID0gbnVsbDtcclxuICAgIHRoaXMuZGlzcGxheUl0ZW1zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGVsZW1lbnQub3BlbmVkID0gZmFsc2U7XHJcbiAgICAgIGVsZW1lbnQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUl0ZW1zLmxlbmd0aDsgZWxzZSB0bXBFbXB0eVwiPlxyXG4gIDx1bCBbbmdDbGFzc109XCJfZ2V0RGlyZWN0aW9uKClcIiBbY2xhc3MuYXgtcnRsXT1cInJ0bFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlY3Vyc2l2ZUxpc3RUbXBsOyBjb250ZXh0OiB7IGxpc3Q6IGRpc3BsYXlJdGVtcywgaXNSb290OiB0cnVlIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L3VsPlxyXG4gIDxuZy10ZW1wbGF0ZSAjcmVjdXJzaXZlTGlzdFRtcGwgbGV0LWxpc3Q9XCJsaXN0XCIgbGV0LWlzUm9vdD1cImlzUm9vdFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsaXN0XCI+XHJcbiAgICAgIDxsaVxyXG4gICAgICAgICpuZ0lmPVwiaXRlbVt2aXNpYmxlRmllbGRdICE9IGZhbHNlXCJcclxuICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiaXRlbVtkaXNhYmxlRmllbGRdXCJcclxuICAgICAgICAoY2xpY2spPVwiX29uTWVudUNsaWNrKCRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgIChtb3VzZWVudGVyKT1cIl9vbk1lbnVNb3VzZUVudGVyKCRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2F4LXN0YXRlLWFjdGl2ZSAnOiBpdGVtLmFjdGl2ZSB9XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJheC1tZW51LWl0ZW1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnYXgtaXMtcGFyZW50JzogaXRlbT8uY2hpbGRyZW4/Lmxlbmd0aCxcclxuICAgICAgICAgICAgJ2F4LWlzLWNoaWxkJzogIWlzUm9vdFxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgICAqbmdJZj1cIml0ZW1UZW1wbGF0ZSA9PSBudWxsOyBlbHNlIHRtcEl0ZW1cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tZW51LWl0ZW0tcHJlZml4XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtbWVudS1pdGVtLWljb25cIiAqbmdJZj1cIml0ZW1baWNvbkZpZWxkXVwiIFtjbGFzc109XCJpdGVtW2ljb25GaWVsZF1cIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IF9nZXRJdGVtRGlzcGxheVRleHRUZW1wbHRlKGl0ZW0pIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVudS1pdGVtLXN1ZmZpeFwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtbWVudS1pdGVtLWljb24gYXgtaWNvbiBheC1tZW51LWl0ZW0taWNvbi1jaGV2cm9uXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWRvd24nOiBpdGVtPy5jaGlsZHJlbj8ubGVuZ3RoID4gMCxcclxuICAgICAgICAgICAgICAgICdheC1tZW51LWFjdGl2ZS1pY29uJzogaXRlbS5vcGVuZWRcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLmlzTG9hZGluZ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPGF4LWxvYWRpbmcgKm5nSWY9XCJpdGVtLmlzTG9hZGluZ1wiPiA8L2F4LWxvYWRpbmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLSBjaGVjayBmb3IgY3VzdG9tICBpdGVtIHRlbXBsYXRlICAtLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICN0bXBJdGVtPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPHVsICpuZ0lmPVwiaXRlbT8uY2hpbGRyZW4/Lmxlbmd0aCA+IDAgJiYgaXRlbS5vcGVuZWQgJiYgIV9vdmVybGF5UmVmXCIgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cIml0ZW1bZGlzYWJsZUZpZWxkXVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlY3Vyc2l2ZUxpc3RUbXBsOyBjb250ZXh0OiB7IGxpc3Q6IGl0ZW0uY2hpbGRyZW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2xpPlxyXG4gICAgICA8bGkgY2xhc3M9XCJheC1tZW51LWl0ZW0tZGl2aWRlclwiICpuZ0lmPVwiaXRlbVt0aGlzLmRpdmlkZXJGaWVsZF1cIj48L2xpPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cclxuICA8bmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtcC00XCI+XHJcbiAgICAgIDxheC1sb2FkaW5nIHRleHQ9XCJ7eyAnbGF5b3V0LmxvYWRpbmcudGV4dCcgfCB0cmFucyB9fVwiPjwvYXgtbG9hZGluZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0bXBFbXB0eT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0gY2hlY2sgZm9yIGN1c3RvbSB0ZW1wbGF0ZSAgLS0tLS0tLS0tLS0tLS0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5VGVtcGxhdGU7IGVsc2UgZWxzZUVtcHR5VGVtcGxhdGVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5VGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUVtcHR5VGVtcGxhdGU+XHJcbiAgICAgIHt7ICdjb21tb24ubm8tcmVzdWx0LWZvdW5kJyB8IHRyYW5zIH19XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
1
+ import { ComponentPortal } from '@angular/cdk/portal';
2
+ import { Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, } from '@angular/core';
3
+ import { AXBaseMenuMixin } from '@acorex/components/mixin';
4
+ import { AXPlatform } from '@acorex/core/platform';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/overlay";
7
+ import * as i2 from "@acorex/core/platform";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@acorex/components/loading";
10
+ import * as i5 from "@acorex/core/translation";
11
+ /**
12
+ * The Button is a component which detects user interaction and triggers a corresponding event
13
+ *
14
+ * @category Components
15
+ */
16
+ class AXMenuComponent extends AXBaseMenuMixin {
17
+ _elementRef;
18
+ cdr;
19
+ _overlay;
20
+ _platform;
21
+ _contentEmptyTemplate;
22
+ _contentItemTemplate;
23
+ _overlayRef;
24
+ get emptyTemplate() {
25
+ return this._contentEmptyTemplate;
26
+ }
27
+ get itemTemplate() {
28
+ return this._contentItemTemplate;
29
+ }
30
+ rtl = new AXPlatform().isRtl();
31
+ _levelCount = 0;
32
+ _oldItem;
33
+ constructor(_elementRef, cdr, _overlay, _platform) {
34
+ super(_elementRef, cdr);
35
+ this._elementRef = _elementRef;
36
+ this.cdr = cdr;
37
+ this._overlay = _overlay;
38
+ this._platform = _platform;
39
+ }
40
+ onInit() {
41
+ super.onInit();
42
+ }
43
+ ngAfterViewInit() {
44
+ super.onViewInit();
45
+ }
46
+ _onMenuMouseEnter(e, item) {
47
+ const targetElement = e.target;
48
+ if (this.isLoading || targetElement.tagName === 'UL') {
49
+ return;
50
+ }
51
+ if (this.openMode === 'hover') {
52
+ this._handelMenuLogic(e, item);
53
+ }
54
+ e.stopPropagation();
55
+ e.preventDefault();
56
+ }
57
+ _onMenuClick(e, item) {
58
+ const targetElement = e.target;
59
+ if (this.isLoading || targetElement.tagName === 'UL') {
60
+ return;
61
+ }
62
+ if (this.openMode === 'click') {
63
+ this._handelMenuLogic(e, item);
64
+ }
65
+ this.onMenuItemClick.emit({
66
+ component: this,
67
+ item: item,
68
+ nativeEvent: e,
69
+ });
70
+ e.stopPropagation();
71
+ e.preventDefault();
72
+ }
73
+ _getDirection() {
74
+ if (this.displayMode === 'horizontal' && this._levelCount === 0) {
75
+ return 'ax-horizontal';
76
+ }
77
+ else if (this._levelCount > 0) {
78
+ return 'ax-vertical ax-submenu-ul';
79
+ }
80
+ else if (this.displayMode === 'sidemenu') {
81
+ return 'ax-side-menu';
82
+ }
83
+ else {
84
+ return 'ax-vertical';
85
+ }
86
+ }
87
+ _removeActive(items) {
88
+ items.forEach(element => {
89
+ element.active = false;
90
+ if (element?.children?.length > 0) {
91
+ this._removeActive(element.children);
92
+ }
93
+ });
94
+ }
95
+ _closeOpenChild(items) {
96
+ items.forEach(element => {
97
+ element.opened = false;
98
+ if (element?.children?.length > 0) {
99
+ this._closeOpenChild(element.children);
100
+ }
101
+ });
102
+ }
103
+ _initParent(items, parentId) {
104
+ items.forEach(element => {
105
+ element.parentId = parentId;
106
+ });
107
+ }
108
+ _handelMenuLogic(e, item) {
109
+ if (!item[this.disableField] || item[this.dividerField] === false) {
110
+ const targetElement = e.target;
111
+ if ((targetElement.closest('li') && this.openMode === 'click') || (targetElement.closest('li') && this.openMode === 'hover')) {
112
+ if (this._overlayRef && this._oldItem !== item) {
113
+ this._overlayRef.detach();
114
+ }
115
+ if (this.displayMode === 'horizontal') {
116
+ this.displayItems.forEach(element => {
117
+ if (!item.parentId && item[this.valueField] !== element[this.valueField]) {
118
+ element.opened = false;
119
+ }
120
+ });
121
+ }
122
+ if (item?.children?.length > 0) {
123
+ if (this.displayMode === 'horizontal') {
124
+ this._initParent(item.children, item[this.valueField]);
125
+ }
126
+ if (this.displayMode === 'horizontal' || this.displayMode === 'vertical') {
127
+ if (this._oldItem !== item) {
128
+ this._openAsOverlay(targetElement.closest('li'), item.children);
129
+ }
130
+ }
131
+ this._closeOpenChild(item.children);
132
+ if (this.displayMode === 'horizontal' || this.displayMode === 'vertical') {
133
+ item.opened = true;
134
+ }
135
+ else {
136
+ item.opened = !item.opened;
137
+ }
138
+ }
139
+ this._removeActive(this.displayItems);
140
+ if (e.type !== 'mouseenter')
141
+ item.active = !item.active;
142
+ if (this.displayMode === 'horizontal' || this.displayMode === 'vertical') {
143
+ if (this._oldItem && this._oldItem?.opened && item[this.valueField] !== this._oldItem[this.valueField]) {
144
+ this._oldItem.opened = false;
145
+ }
146
+ this._oldItem = item;
147
+ }
148
+ }
149
+ }
150
+ }
151
+ _openAsOverlay(targetRef, overlayItems) {
152
+ let positions = [];
153
+ if (this.displayMode === 'vertical') {
154
+ if (this._levelCount >= 1) {
155
+ positions = [
156
+ {
157
+ originX: 'end',
158
+ originY: 'center',
159
+ overlayX: 'start',
160
+ overlayY: 'top',
161
+ },
162
+ {
163
+ originX: 'end',
164
+ originY: 'center',
165
+ overlayX: 'start',
166
+ overlayY: 'bottom',
167
+ },
168
+ {
169
+ originX: 'center',
170
+ originY: 'center',
171
+ overlayX: 'center',
172
+ overlayY: 'center',
173
+ },
174
+ ];
175
+ }
176
+ else {
177
+ positions = [
178
+ {
179
+ originX: 'end',
180
+ originY: 'center',
181
+ overlayX: 'start',
182
+ overlayY: 'top',
183
+ },
184
+ {
185
+ originX: 'end',
186
+ originY: 'top',
187
+ overlayX: 'start',
188
+ overlayY: 'bottom',
189
+ },
190
+ {
191
+ originX: 'center',
192
+ originY: 'center',
193
+ overlayX: 'center',
194
+ overlayY: 'center',
195
+ },
196
+ ];
197
+ }
198
+ }
199
+ else {
200
+ if (this._levelCount >= 1) {
201
+ positions = [
202
+ {
203
+ originX: 'end',
204
+ originY: 'top',
205
+ overlayX: 'start',
206
+ overlayY: 'top',
207
+ },
208
+ {
209
+ originX: 'end',
210
+ originY: 'center',
211
+ overlayX: 'start',
212
+ overlayY: 'bottom',
213
+ },
214
+ {
215
+ originX: 'end',
216
+ originY: 'top',
217
+ overlayX: 'center',
218
+ overlayY: 'top',
219
+ },
220
+ {
221
+ originX: 'center',
222
+ originY: 'top',
223
+ overlayX: 'center',
224
+ overlayY: 'top',
225
+ },
226
+ ];
227
+ }
228
+ else {
229
+ positions = [
230
+ {
231
+ originX: 'start',
232
+ originY: 'bottom',
233
+ overlayX: 'start',
234
+ overlayY: 'top',
235
+ },
236
+ {
237
+ originX: 'end',
238
+ originY: 'center',
239
+ overlayX: 'start',
240
+ overlayY: 'bottom',
241
+ },
242
+ {
243
+ originX: 'end',
244
+ originY: 'top',
245
+ overlayX: 'center',
246
+ overlayY: 'top',
247
+ },
248
+ {
249
+ originX: 'center',
250
+ originY: 'top',
251
+ overlayX: 'center',
252
+ overlayY: 'top',
253
+ },
254
+ ];
255
+ }
256
+ }
257
+ this._overlayRef = this._overlay.create({
258
+ scrollStrategy: this._overlay.scrollStrategies.close(),
259
+ positionStrategy: this._overlay
260
+ .position()
261
+ .flexibleConnectedTo(targetRef)
262
+ .withPositions([...positions])
263
+ .withPush(false)
264
+ .withDefaultOffsetX(12),
265
+ direction: this._platform.isRtl() ? 'rtl' : 'ltr',
266
+ disposeOnNavigation: true,
267
+ panelClass: ['ax-animate-fadeIn', 'ax-animate-faster', 'ax-overlay-menu'],
268
+ maxHeight: 'unset',
269
+ hasBackdrop: false,
270
+ backdropClass: ['cdk-overlay-transparent-backdrop'],
271
+ });
272
+ const ref = this._overlayRef.attach(new ComponentPortal(AXMenuComponent));
273
+ ref.instance.items = overlayItems;
274
+ ref.instance.displayMode = this.displayMode;
275
+ ref.instance.openMode = 'hover';
276
+ ref.instance._levelCount = this._levelCount + 1;
277
+ ref.instance.disableField = this.disableField;
278
+ ref.instance.visibleField = this.visibleField;
279
+ ref.instance.valueField = this.valueField;
280
+ ref.instance.textField = this.textField;
281
+ ref.instance.iconField = this.iconField;
282
+ ref.instance.dividerField = this.dividerField;
283
+ ref.onDestroy(() => {
284
+ ref.instance?._overlayRef?.dispose();
285
+ });
286
+ this._overlayRef.outsidePointerEvents().subscribe(e => {
287
+ if (this._overlayRef && this.openMode === 'click') {
288
+ this._close();
289
+ e.stopPropagation();
290
+ }
291
+ });
292
+ this._platform.scroll.subscribe(() => {
293
+ if (this._overlayRef) {
294
+ this._close();
295
+ }
296
+ });
297
+ this._platform.resize.subscribe(() => {
298
+ if (this._overlayRef) {
299
+ this._close();
300
+ }
301
+ });
302
+ }
303
+ _close() {
304
+ this._overlayRef.detach();
305
+ this._oldItem = null;
306
+ this.displayItems.forEach(element => {
307
+ element.opened = false;
308
+ element.active = false;
309
+ });
310
+ this.cdr.detectChanges();
311
+ }
312
+ onDestroy() {
313
+ this._overlayRef?.detach();
314
+ }
315
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXMenuComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i2.AXPlatform }], target: i0.ɵɵFactoryTarget.Component });
316
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: AXMenuComponent, selector: "ax-menu", inputs: { disabled: "disabled", tabIndex: "tabIndex", textField: "textField", valueField: "valueField", items: "items", parentId: "parentId", iconField: "iconField", tooltip: "tooltip", opened: "opened", active: "active", visibleField: "visibleField", disableField: "disableField", hasChildField: "hasChildField", dividerField: "dividerField", openMode: "openMode", displayMode: "displayMode", showModal: "showModal" }, outputs: { onBlur: "onBlur", onFocus: "onFocus", onMenuItemClick: "onMenuItemClick" }, queries: [{ propertyName: "_contentEmptyTemplate", first: true, predicate: ["emptyTemplate"], descendants: true }, { propertyName: "_contentItemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"displayItems.length; else tmpEmpty\">\r\n <ul [ngClass]=\"_getDirection()\" [class.ax-rtl]=\"rtl\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context: { list: displayItems, isRoot: true }\"></ng-container>\r\n </ul>\r\n <ng-template #recursiveListTmpl let-list=\"list\" let-isRoot=\"isRoot\">\r\n <ng-container *ngFor=\"let item of list\">\r\n <li\r\n *ngIf=\"item[visibleField] != false\"\r\n [class.ax-state-disabled]=\"item[disableField]\"\r\n (click)=\"_onMenuClick($event, item)\"\r\n (mouseenter)=\"_onMenuMouseEnter($event, item)\"\r\n [ngClass]=\"{ 'ax-state-active ': item.active }\">\r\n <div\r\n class=\"ax-menu-item\"\r\n [ngClass]=\"{\r\n 'ax-is-parent': item?.children?.length,\r\n 'ax-is-child': !isRoot\r\n }\"\r\n *ngIf=\"itemTemplate == null; else tmpItem\">\r\n <div class=\"ax-menu-item-prefix\">\r\n <span class=\"ax-menu-item-icon\" *ngIf=\"item[iconField]\" [class]=\"item[iconField]\"></span>\r\n <span>{{ _getItemDisplayTextTemplte(item) }}</span>\r\n </div>\r\n <div class=\"ax-menu-item-suffix\">\r\n <span\r\n class=\"ax-menu-item-icon ax-icon ax-menu-item-icon-chevron\"\r\n [ngClass]=\"{\r\n 'ax-icon-chevron-down': item?.children?.length > 0,\r\n 'ax-menu-active-icon': item.opened\r\n }\"\r\n *ngIf=\"!item.isLoading\"></span>\r\n <ax-loading *ngIf=\"item.isLoading\"> </ax-loading>\r\n </div>\r\n </div>\r\n <!--------------- check for custom item template --------------->\r\n <ng-template #tmpItem>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"> </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ul *ngIf=\"item?.children?.length > 0 && item.opened && !_overlayRef\" [class.ax-state-disabled]=\"item[disableField]\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context: { list: item.children }\"> </ng-container>\r\n </ul>\r\n </li>\r\n <li class=\"ax-menu-item-divider\" *ngIf=\"item[this.dividerField]\"></li>\r\n </ng-container>\r\n </ng-template>\r\n</ng-container>\r\n<ng-container *ngIf=\"isLoading\">\r\n <ng-template>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\">\r\n <ax-loading text=\"{{ 'layout.loading.text' | trans }}\"></ax-loading>\r\n </div>\r\n </ng-template>\r\n</ng-container>\r\n\r\n<ng-template #tmpEmpty>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <!--------------- check for custom template --------------->\r\n <ng-container *ngIf=\"emptyTemplate; else elseEmptyTemplate\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"> </ng-container>\r\n </ng-container>\r\n <ng-template #elseEmptyTemplate>\r\n {{ 'common.no-result-found' | trans }}\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>\r\n", styles: ["ax-menu{font-size:.875rem;display:block}ax-menu ul{width:-moz-fit-content;width:fit-content;display:flex;flex-direction:column;color:rgba(var(--ax-color-text-default))}ax-menu ul li.ax-state-active{color:rgba(var(--ax-color-primary-500))}ax-menu ul li .ax-menu-item{display:flex}ax-menu ul li .ax-menu-item .ax-menu-item-prefix,ax-menu ul li .ax-menu-item .ax-menu-item-suffix{display:flex;align-items:center;justify-content:center}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon-chevron,ax-menu ul li .ax-menu-item .ax-menu-item-suffix .ax-menu-item-icon-chevron{transform:rotate(-90deg)}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon:not(:empty),ax-menu ul li .ax-menu-item .ax-menu-item-suffix .ax-menu-item-icon:not(:empty){min-width:1.25rem;min-height:1.25rem}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon{padding-inline-end:.5rem}ax-menu ul li .ax-menu-item .ax-menu-item-icon{font-size:1.25rem}ax-menu ul li.ax-state-disabled{cursor:not-allowed!important;opacity:.5}ax-menu ul li.ax-state-active .ax-menu-item-icon-chevron{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-menu .ax-horizontal>li,ax-menu .ax-vertical>li{font-weight:500}ax-menu .ax-horizontal{flex-direction:row;align-items:center}ax-menu .ax-horizontal .ax-menu-item-divider{width:1px;height:1rem;background-color:rgba(var(--ax-color-on-surface))}ax-menu .ax-horizontal li.ax-state-active .ax-menu-item-icon-chevron{transform:rotate(0)!important}ax-menu .ax-horizontal li:not(.ax-menu-item-divider){padding:.5rem;cursor:pointer}ax-menu .ax-vertical{flex-direction:column;width:100%}ax-menu .ax-vertical>li{font-weight:500}ax-menu .ax-vertical .ax-menu-item-divider{width:100%;height:1px;background-color:rgba(var(--ax-color-on-surface));margin:.375rem 0}ax-menu .ax-vertical li.ax-state-active .ax-menu-item-icon-chevron{transform:rotate(0)!important}ax-menu .ax-vertical li:not(.ax-menu-item-divider){padding:.5rem 0;cursor:pointer}ax-menu .ax-vertical.ax-submenu-ul{background-color:rgba(var(--ax-color-surface));border:1px solid;border-color:rgba(var(--ax-color-border-default));border-radius:var(--ax-rounded-border-default);padding:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}ax-menu .ax-vertical.ax-submenu-ul li{border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-menu .ax-vertical.ax-submenu-ul li:not(.ax-menu-item-divider){padding:.5rem}ax-menu .ax-vertical.ax-submenu-ul li:not(.ax-state-disabled,.ax-menu-item-divider):hover{background-color:rgba(var(--ax-color-on-surface));color:rgba(var(--ax-color-on-surface-fore))}ax-menu .ax-side-menu{width:100%;flex-direction:column;gap:.5rem;-webkit-user-select:none;user-select:none}ax-menu .ax-side-menu .ax-menu-item-divider{width:100%;height:1px;background-color:rgba(var(--ax-color-on-surface));margin:.375rem 0}ax-menu .ax-side-menu ul{display:flex;flex-direction:column;margin-top:.5rem;width:100%;padding:0 .5rem}ax-menu .ax-side-menu li .ax-menu-item-icon-chevron.ax-menu-active-icon{transform:rotate(180deg)!important}ax-menu .ax-side-menu li .ax-menu-item{justify-content:space-between}ax-menu .ax-side-menu li .ax-menu-item.ax-is-parent{font-weight:500}ax-menu .ax-side-menu li:not(.ax-menu-item-divider){padding:.5rem 0;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "text"], outputs: ["visibleChange"] }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "trans" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
317
+ }
318
+ export { AXMenuComponent };
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXMenuComponent, decorators: [{
320
+ type: Component,
321
+ args: [{ selector: 'ax-menu', inputs: [
322
+ 'disabled',
323
+ 'tabIndex',
324
+ 'textField',
325
+ 'valueField',
326
+ 'items',
327
+ 'parentId',
328
+ 'iconField',
329
+ 'tooltip',
330
+ 'opened',
331
+ 'active',
332
+ 'visibleField',
333
+ 'disableField',
334
+ 'hasChildField',
335
+ 'dividerField',
336
+ 'openMode',
337
+ 'displayMode',
338
+ 'showModal',
339
+ ], outputs: ['onBlur', 'onFocus', 'onMenuItemClick'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"displayItems.length; else tmpEmpty\">\r\n <ul [ngClass]=\"_getDirection()\" [class.ax-rtl]=\"rtl\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context: { list: displayItems, isRoot: true }\"></ng-container>\r\n </ul>\r\n <ng-template #recursiveListTmpl let-list=\"list\" let-isRoot=\"isRoot\">\r\n <ng-container *ngFor=\"let item of list\">\r\n <li\r\n *ngIf=\"item[visibleField] != false\"\r\n [class.ax-state-disabled]=\"item[disableField]\"\r\n (click)=\"_onMenuClick($event, item)\"\r\n (mouseenter)=\"_onMenuMouseEnter($event, item)\"\r\n [ngClass]=\"{ 'ax-state-active ': item.active }\">\r\n <div\r\n class=\"ax-menu-item\"\r\n [ngClass]=\"{\r\n 'ax-is-parent': item?.children?.length,\r\n 'ax-is-child': !isRoot\r\n }\"\r\n *ngIf=\"itemTemplate == null; else tmpItem\">\r\n <div class=\"ax-menu-item-prefix\">\r\n <span class=\"ax-menu-item-icon\" *ngIf=\"item[iconField]\" [class]=\"item[iconField]\"></span>\r\n <span>{{ _getItemDisplayTextTemplte(item) }}</span>\r\n </div>\r\n <div class=\"ax-menu-item-suffix\">\r\n <span\r\n class=\"ax-menu-item-icon ax-icon ax-menu-item-icon-chevron\"\r\n [ngClass]=\"{\r\n 'ax-icon-chevron-down': item?.children?.length > 0,\r\n 'ax-menu-active-icon': item.opened\r\n }\"\r\n *ngIf=\"!item.isLoading\"></span>\r\n <ax-loading *ngIf=\"item.isLoading\"> </ax-loading>\r\n </div>\r\n </div>\r\n <!--------------- check for custom item template --------------->\r\n <ng-template #tmpItem>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"> </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ul *ngIf=\"item?.children?.length > 0 && item.opened && !_overlayRef\" [class.ax-state-disabled]=\"item[disableField]\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context: { list: item.children }\"> </ng-container>\r\n </ul>\r\n </li>\r\n <li class=\"ax-menu-item-divider\" *ngIf=\"item[this.dividerField]\"></li>\r\n </ng-container>\r\n </ng-template>\r\n</ng-container>\r\n<ng-container *ngIf=\"isLoading\">\r\n <ng-template>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\">\r\n <ax-loading text=\"{{ 'layout.loading.text' | trans }}\"></ax-loading>\r\n </div>\r\n </ng-template>\r\n</ng-container>\r\n\r\n<ng-template #tmpEmpty>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <!--------------- check for custom template --------------->\r\n <ng-container *ngIf=\"emptyTemplate; else elseEmptyTemplate\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"> </ng-container>\r\n </ng-container>\r\n <ng-template #elseEmptyTemplate>\r\n {{ 'common.no-result-found' | trans }}\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>\r\n", styles: ["ax-menu{font-size:.875rem;display:block}ax-menu ul{width:-moz-fit-content;width:fit-content;display:flex;flex-direction:column;color:rgba(var(--ax-color-text-default))}ax-menu ul li.ax-state-active{color:rgba(var(--ax-color-primary-500))}ax-menu ul li .ax-menu-item{display:flex}ax-menu ul li .ax-menu-item .ax-menu-item-prefix,ax-menu ul li .ax-menu-item .ax-menu-item-suffix{display:flex;align-items:center;justify-content:center}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon-chevron,ax-menu ul li .ax-menu-item .ax-menu-item-suffix .ax-menu-item-icon-chevron{transform:rotate(-90deg)}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon:not(:empty),ax-menu ul li .ax-menu-item .ax-menu-item-suffix .ax-menu-item-icon:not(:empty){min-width:1.25rem;min-height:1.25rem}ax-menu ul li .ax-menu-item .ax-menu-item-prefix .ax-menu-item-icon{padding-inline-end:.5rem}ax-menu ul li .ax-menu-item .ax-menu-item-icon{font-size:1.25rem}ax-menu ul li.ax-state-disabled{cursor:not-allowed!important;opacity:.5}ax-menu ul li.ax-state-active .ax-menu-item-icon-chevron{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-menu .ax-horizontal>li,ax-menu .ax-vertical>li{font-weight:500}ax-menu .ax-horizontal{flex-direction:row;align-items:center}ax-menu .ax-horizontal .ax-menu-item-divider{width:1px;height:1rem;background-color:rgba(var(--ax-color-on-surface))}ax-menu .ax-horizontal li.ax-state-active .ax-menu-item-icon-chevron{transform:rotate(0)!important}ax-menu .ax-horizontal li:not(.ax-menu-item-divider){padding:.5rem;cursor:pointer}ax-menu .ax-vertical{flex-direction:column;width:100%}ax-menu .ax-vertical>li{font-weight:500}ax-menu .ax-vertical .ax-menu-item-divider{width:100%;height:1px;background-color:rgba(var(--ax-color-on-surface));margin:.375rem 0}ax-menu .ax-vertical li.ax-state-active .ax-menu-item-icon-chevron{transform:rotate(0)!important}ax-menu .ax-vertical li:not(.ax-menu-item-divider){padding:.5rem 0;cursor:pointer}ax-menu .ax-vertical.ax-submenu-ul{background-color:rgba(var(--ax-color-surface));border:1px solid;border-color:rgba(var(--ax-color-border-default));border-radius:var(--ax-rounded-border-default);padding:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}ax-menu .ax-vertical.ax-submenu-ul li{border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-menu .ax-vertical.ax-submenu-ul li:not(.ax-menu-item-divider){padding:.5rem}ax-menu .ax-vertical.ax-submenu-ul li:not(.ax-state-disabled,.ax-menu-item-divider):hover{background-color:rgba(var(--ax-color-on-surface));color:rgba(var(--ax-color-on-surface-fore))}ax-menu .ax-side-menu{width:100%;flex-direction:column;gap:.5rem;-webkit-user-select:none;user-select:none}ax-menu .ax-side-menu .ax-menu-item-divider{width:100%;height:1px;background-color:rgba(var(--ax-color-on-surface));margin:.375rem 0}ax-menu .ax-side-menu ul{display:flex;flex-direction:column;margin-top:.5rem;width:100%;padding:0 .5rem}ax-menu .ax-side-menu li .ax-menu-item-icon-chevron.ax-menu-active-icon{transform:rotate(180deg)!important}ax-menu .ax-side-menu li .ax-menu-item{justify-content:space-between}ax-menu .ax-side-menu li .ax-menu-item.ax-is-parent{font-weight:500}ax-menu .ax-side-menu li:not(.ax-menu-item-divider){padding:.5rem 0;cursor:pointer}\n"] }]
340
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i2.AXPlatform }]; }, propDecorators: { _contentEmptyTemplate: [{
341
+ type: ContentChild,
342
+ args: ['emptyTemplate']
343
+ }], _contentItemTemplate: [{
344
+ type: ContentChild,
345
+ args: ['itemTemplate']
346
+ }] } });
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9tZW51L3NyYy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL21lbnUvc3JjL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUVqQixZQUFZLEdBSWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQUVuRDs7OztHQUlHO0FBQ0gsTUEyQmEsZUFBZ0IsU0FBUSxlQUFlO0lBdUI5QjtJQUFpQztJQUFnQztJQUEyQjtJQXJCeEcscUJBQXFCLENBQW1CO0lBR3hDLG9CQUFvQixDQUFtQjtJQUV4QyxXQUFXLENBQWE7SUFFL0IsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCxHQUFHLEdBQVksSUFBSSxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVoQyxXQUFXLEdBQVcsQ0FBQyxDQUFDO0lBRXhCLFFBQVEsQ0FBTTtJQUV0QixZQUFvQixXQUF1QixFQUFVLEdBQXNCLEVBQVUsUUFBaUIsRUFBVSxTQUFxQjtRQUNuSSxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRE4sZ0JBQVcsR0FBWCxXQUFXLENBQVk7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QUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDdkIsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUM3QixDQUFDO3VHQTVVVSxlQUFlOzJGQUFmLGVBQWUsNHhCQ2hENUIsb2tHQW1FQTs7U0RuQmEsZUFBZTsyRkFBZixlQUFlO2tCQTNCM0IsU0FBUzsrQkFDRSxTQUFTLFVBR1g7d0JBQ04sVUFBVTt3QkFDVixVQUFVO3dCQUNWLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxTQUFTO3dCQUNULFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixXQUFXO3FCQUNaLFdBQ1EsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixDQUFDLG1CQUNoQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO2dMQUk3QixxQkFBcUI7c0JBRDVCLFlBQVk7dUJBQUMsZUFBZTtnQkFJckIsb0JBQW9CO3NCQUQzQixZQUFZO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5UmVmLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE9uSW5pdCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhCYXNlTWVudU1peGluIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21peGluJztcclxuaW1wb3J0IHsgQVhQbGF0Zm9ybSB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XHJcblxyXG4vKipcclxuICogVGhlIEJ1dHRvbiBpcyBhIGNvbXBvbmVudCB3aGljaCBkZXRlY3RzIHVzZXIgaW50ZXJhY3Rpb24gYW5kIHRyaWdnZXJzIGEgY29ycmVzcG9uZGluZyBldmVudFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdheC1tZW51JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGlucHV0czogW1xyXG4gICAgJ2Rpc2FibGVkJyxcclxuICAgICd0YWJJbmRleCcsXHJcbiAgICAndGV4dEZpZWxkJyxcclxuICAgICd2YWx1ZUZpZWxkJyxcclxuICAgICdpdGVtcycsXHJcbiAgICAncGFyZW50SWQnLFxyXG4gICAgJ2ljb25GaWVsZCcsXHJcbiAgICAndG9vbHRpcCcsXHJcbiAgICAnb3BlbmVkJyxcclxuICAgICdhY3RpdmUnLFxyXG4gICAgJ3Zpc2libGVGaWVsZCcsXHJcbiAgICAnZGlzYWJsZUZpZWxkJyxcclxuICAgICdoYXNDaGlsZEZpZWxkJyxcclxuICAgICdkaXZpZGVyRmllbGQnLFxyXG4gICAgJ29wZW5Nb2RlJyxcclxuICAgICdkaXNwbGF5TW9kZScsXHJcbiAgICAnc2hvd01vZGFsJyxcclxuICBdLFxyXG4gIG91dHB1dHM6IFsnb25CbHVyJywgJ29uRm9jdXMnLCAnb25NZW51SXRlbUNsaWNrJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYTWVudUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZU1lbnVNaXhpbiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQENvbnRlbnRDaGlsZCgnZW1wdHlUZW1wbGF0ZScpXHJcbiAgcHJpdmF0ZSBfY29udGVudEVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoJ2l0ZW1UZW1wbGF0ZScpXHJcbiAgcHJpdmF0ZSBfY29udGVudEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgcHVibGljIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmO1xyXG5cclxuICBnZXQgZW1wdHlUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZW50RW1wdHlUZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEl0ZW1UZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIHJ0bDogYm9vbGVhbiA9IG5ldyBBWFBsYXRmb3JtKCkuaXNSdGwoKTtcclxuXHJcbiAgcHJpdmF0ZSBfbGV2ZWxDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgcHJpdmF0ZSBfb2xkSXRlbTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgX3BsYXRmb3JtOiBBWFBsYXRmb3JtKSB7XHJcbiAgICBzdXBlcihfZWxlbWVudFJlZiwgY2RyKTtcclxuICB9XHJcblxyXG4gIG9uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIub25WaWV3SW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgX29uTWVudU1vdXNlRW50ZXIoZTogTW91c2VFdmVudCwgaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZS50YXJnZXQgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNMb2FkaW5nIHx8IHRhcmdldEVsZW1lbnQudGFnTmFtZSA9PT0gJ1VMJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3Blbk1vZGUgPT09ICdob3ZlcicpIHtcclxuICAgICAgdGhpcy5faGFuZGVsTWVudUxvZ2ljKGUsIGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBfb25NZW51Q2xpY2soZTogTW91c2VFdmVudCwgaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZS50YXJnZXQgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNMb2FkaW5nIHx8IHRhcmdldEVsZW1lbnQudGFnTmFtZSA9PT0gJ1VMJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3Blbk1vZGUgPT09ICdjbGljaycpIHtcclxuICAgICAgdGhpcy5faGFuZGVsTWVudUxvZ2ljKGUsIGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25NZW51SXRlbUNsaWNrLmVtaXQoe1xyXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGl0ZW06IGl0ZW0sXHJcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIF9nZXREaXJlY3Rpb24oKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmRpc3BsYXlNb2RlID09PSAnaG9yaXpvbnRhbCcgJiYgdGhpcy5fbGV2ZWxDb3VudCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gJ2F4LWhvcml6b250YWwnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLl9sZXZlbENvdW50ID4gMCkge1xyXG4gICAgICByZXR1cm4gJ2F4LXZlcnRpY2FsIGF4LXN1Ym1lbnUtdWwnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXlNb2RlID09PSAnc2lkZW1lbnUnKSB7XHJcbiAgICAgIHJldHVybiAnYXgtc2lkZS1tZW51JztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnYXgtdmVydGljYWwnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlQWN0aXZlKGl0ZW1zOiBhbnkpOiB2b2lkIHtcclxuICAgIGl0ZW1zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGVsZW1lbnQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIGlmIChlbGVtZW50Py5jaGlsZHJlbj8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX3JlbW92ZUFjdGl2ZShlbGVtZW50LmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZU9wZW5DaGlsZChpdGVtczogYW55KTogdm9pZCB7XHJcbiAgICBpdGVtcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBlbGVtZW50Lm9wZW5lZCA9IGZhbHNlO1xyXG4gICAgICBpZiAoZWxlbWVudD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLl9jbG9zZU9wZW5DaGlsZChlbGVtZW50LmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0UGFyZW50KGl0ZW1zOiBhbnksIHBhcmVudElkOiBhbnkpOiB2b2lkIHtcclxuICAgIGl0ZW1zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGVsZW1lbnQucGFyZW50SWQgPSBwYXJlbnRJZDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGVsTWVudUxvZ2ljKGU6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFpdGVtW3RoaXMuZGlzYWJsZUZpZWxkXSB8fCBpdGVtW3RoaXMuZGl2aWRlckZpZWxkXSA9PT0gZmFsc2UpIHtcclxuICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGUudGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgICBpZiAoKHRhcmdldEVsZW1lbnQuY2xvc2VzdCgnbGknKSAmJiB0aGlzLm9wZW5Nb2RlID09PSAnY2xpY2snKSB8fCAodGFyZ2V0RWxlbWVudC5jbG9zZXN0KCdsaScpICYmIHRoaXMub3Blbk1vZGUgPT09ICdob3ZlcicpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYgJiYgdGhpcy5fb2xkSXRlbSAhPT0gaXRlbSkge1xyXG4gICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheU1vZGUgPT09ICdob3Jpem9udGFsJykge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5SXRlbXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpdGVtLnBhcmVudElkICYmIGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSAhPT0gZWxlbWVudFt0aGlzLnZhbHVlRmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5vcGVuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtPy5jaGlsZHJlbj8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGlzcGxheU1vZGUgPT09ICdob3Jpem9udGFsJykge1xyXG4gICAgICAgICAgICB0aGlzLl9pbml0UGFyZW50KGl0ZW0uY2hpbGRyZW4sIGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5TW9kZSA9PT0gJ2hvcml6b250YWwnIHx8IHRoaXMuZGlzcGxheU1vZGUgPT09ICd2ZXJ0aWNhbCcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX29sZEl0ZW0gIT09IGl0ZW0pIHtcclxuICAgICAgICAgICAgICB0aGlzLl9vcGVuQXNPdmVybGF5KHRhcmdldEVsZW1lbnQuY2xvc2VzdCgnbGknKSwgaXRlbS5jaGlsZHJlbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuX2Nsb3NlT3BlbkNoaWxkKGl0ZW0uY2hpbGRyZW4pO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlNb2RlID09PSAnaG9yaXpvbnRhbCcgfHwgdGhpcy5kaXNwbGF5TW9kZSA9PT0gJ3ZlcnRpY2FsJykge1xyXG4gICAgICAgICAgICBpdGVtLm9wZW5lZCA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpdGVtLm9wZW5lZCA9ICFpdGVtLm9wZW5lZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3JlbW92ZUFjdGl2ZSh0aGlzLmRpc3BsYXlJdGVtcyk7XHJcblxyXG4gICAgICAgIGlmIChlLnR5cGUgIT09ICdtb3VzZWVudGVyJykgaXRlbS5hY3RpdmUgPSAhaXRlbS5hY3RpdmU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlNb2RlID09PSAnaG9yaXpvbnRhbCcgfHwgdGhpcy5kaXNwbGF5TW9kZSA9PT0gJ3ZlcnRpY2FsJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX29sZEl0ZW0gJiYgdGhpcy5fb2xkSXRlbT8ub3BlbmVkICYmIGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSAhPT0gdGhpcy5fb2xkSXRlbVt0aGlzLnZhbHVlRmllbGRdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29sZEl0ZW0ub3BlbmVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl9vbGRJdGVtID0gaXRlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29wZW5Bc092ZXJsYXkodGFyZ2V0UmVmLCBvdmVybGF5SXRlbXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBsZXQgcG9zaXRpb25zID0gW107XHJcbiAgICBpZiAodGhpcy5kaXNwbGF5TW9kZSA9PT0gJ3ZlcnRpY2FsJykge1xyXG4gICAgICBpZiAodGhpcy5fbGV2ZWxDb3VudCA+PSAxKSB7XHJcbiAgICAgICAgcG9zaXRpb25zID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgICAgb3JpZ2luWTogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgICAgb3JpZ2luWTogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3JpZ2luWTogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICdjZW50ZXInLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBvc2l0aW9ucyA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX2xldmVsQ291bnQgPj0gMSkge1xyXG4gICAgICAgIHBvc2l0aW9ucyA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcG9zaXRpb25zID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgICAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBvcmlnaW5YOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpLFxyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5XHJcbiAgICAgICAgLnBvc2l0aW9uKClcclxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0YXJnZXRSZWYpXHJcbiAgICAgICAgLndpdGhQb3NpdGlvbnMoWy4uLnBvc2l0aW9uc10pXHJcbiAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxyXG4gICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFgoMTIpLFxyXG5cclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9wbGF0Zm9ybS5pc1J0bCgpID8gJ3J0bCcgOiAnbHRyJyxcclxuICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgcGFuZWxDbGFzczogWydheC1hbmltYXRlLWZhZGVJbicsICdheC1hbmltYXRlLWZhc3RlcicsICdheC1vdmVybGF5LW1lbnUnXSxcclxuICAgICAgbWF4SGVpZ2h0OiAndW5zZXQnLFxyXG4gICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXHJcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnXSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlZiA9IHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoQVhNZW51Q29tcG9uZW50KSk7XHJcblxyXG4gICAgcmVmLmluc3RhbmNlLml0ZW1zID0gb3ZlcmxheUl0ZW1zO1xyXG5cclxuICAgIHJlZi5pbnN0YW5jZS5kaXNwbGF5TW9kZSA9IHRoaXMuZGlzcGxheU1vZGU7XHJcblxyXG4gICAgcmVmLmluc3RhbmNlLm9wZW5Nb2RlID0gJ2hvdmVyJztcclxuXHJcbiAgICByZWYuaW5zdGFuY2UuX2xldmVsQ291bnQgPSB0aGlzLl9sZXZlbENvdW50ICsgMTtcclxuXHJcbiAgICByZWYuaW5zdGFuY2UuZGlzYWJsZUZpZWxkID0gdGhpcy5kaXNhYmxlRmllbGQ7XHJcblxyXG4gICAgcmVmLmluc3RhbmNlLnZpc2libGVGaWVsZCA9IHRoaXMudmlzaWJsZUZpZWxkO1xyXG5cclxuICAgIHJlZi5pbnN0YW5jZS52YWx1ZUZpZWxkID0gdGhpcy52YWx1ZUZpZWxkO1xyXG5cclxuICAgIHJlZi5pbnN0YW5jZS50ZXh0RmllbGQgPSB0aGlzLnRleHRGaWVsZDtcclxuXHJcbiAgICByZWYuaW5zdGFuY2UuaWNvbkZpZWxkID0gdGhpcy5pY29uRmllbGQ7XHJcblxyXG4gICAgcmVmLmluc3RhbmNlLmRpdmlkZXJGaWVsZCA9IHRoaXMuZGl2aWRlckZpZWxkO1xyXG5cclxuICAgIHJlZi5vbkRlc3Ryb3koKCkgPT4ge1xyXG4gICAgICByZWYuaW5zdGFuY2U/Ll9vdmVybGF5UmVmPy5kaXNwb3NlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLm91dHNpZGVQb2ludGVyRXZlbnRzKCkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZiAmJiB0aGlzLm9wZW5Nb2RlID09PSAnY2xpY2snKSB7XHJcbiAgICAgICAgdGhpcy5fY2xvc2UoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9wbGF0Zm9ybS5zY3JvbGwuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcclxuICAgICAgICB0aGlzLl9jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9wbGF0Zm9ybS5yZXNpemUuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcclxuICAgICAgICB0aGlzLl9jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb3NlKCkge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcclxuICAgIHRoaXMuX29sZEl0ZW0gPSBudWxsO1xyXG4gICAgdGhpcy5kaXNwbGF5SXRlbXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgZWxlbWVudC5vcGVuZWQgPSBmYWxzZTtcclxuICAgICAgZWxlbWVudC5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5SXRlbXMubGVuZ3RoOyBlbHNlIHRtcEVtcHR5XCI+XHJcbiAgPHVsIFtuZ0NsYXNzXT1cIl9nZXREaXJlY3Rpb24oKVwiIFtjbGFzcy5heC1ydGxdPVwicnRsXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVjdXJzaXZlTGlzdFRtcGw7IGNvbnRleHQ6IHsgbGlzdDogZGlzcGxheUl0ZW1zLCBpc1Jvb3Q6IHRydWUgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvdWw+XHJcbiAgPG5nLXRlbXBsYXRlICNyZWN1cnNpdmVMaXN0VG1wbCBsZXQtbGlzdD1cImxpc3RcIiBsZXQtaXNSb290PVwiaXNSb290XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3RcIj5cclxuICAgICAgPGxpXHJcbiAgICAgICAgKm5nSWY9XCJpdGVtW3Zpc2libGVGaWVsZF0gIT0gZmFsc2VcIlxyXG4gICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJpdGVtW2Rpc2FibGVGaWVsZF1cIlxyXG4gICAgICAgIChjbGljayk9XCJfb25NZW51Q2xpY2soJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiX29uTWVudU1vdXNlRW50ZXIoJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnYXgtc3RhdGUtYWN0aXZlICc6IGl0ZW0uYWN0aXZlIH1cIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImF4LW1lbnUtaXRlbVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICdheC1pcy1wYXJlbnQnOiBpdGVtPy5jaGlsZHJlbj8ubGVuZ3RoLFxyXG4gICAgICAgICAgICAnYXgtaXMtY2hpbGQnOiAhaXNSb290XHJcbiAgICAgICAgICB9XCJcclxuICAgICAgICAgICpuZ0lmPVwiaXRlbVRlbXBsYXRlID09IG51bGw7IGVsc2UgdG1wSXRlbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1lbnUtaXRlbS1wcmVmaXhcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1tZW51LWl0ZW0taWNvblwiICpuZ0lmPVwiaXRlbVtpY29uRmllbGRdXCIgW2NsYXNzXT1cIml0ZW1baWNvbkZpZWxkXVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgX2dldEl0ZW1EaXNwbGF5VGV4dFRlbXBsdGUoaXRlbSkgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tZW51LWl0ZW0tc3VmZml4XCI+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1tZW51LWl0ZW0taWNvbiBheC1pY29uIGF4LW1lbnUtaXRlbS1pY29uLWNoZXZyb25cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tZG93bic6IGl0ZW0/LmNoaWxkcmVuPy5sZW5ndGggPiAwLFxyXG4gICAgICAgICAgICAgICAgJ2F4LW1lbnUtYWN0aXZlLWljb24nOiBpdGVtLm9wZW5lZFxyXG4gICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0uaXNMb2FkaW5nXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8YXgtbG9hZGluZyAqbmdJZj1cIml0ZW0uaXNMb2FkaW5nXCI+IDwvYXgtbG9hZGluZz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tIGNoZWNrIGZvciBjdXN0b20gIGl0ZW0gdGVtcGxhdGUgIC0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3RtcEl0ZW0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+IDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8dWwgKm5nSWY9XCJpdGVtPy5jaGlsZHJlbj8ubGVuZ3RoID4gMCAmJiBpdGVtLm9wZW5lZCAmJiAhX292ZXJsYXlSZWZcIiBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiaXRlbVtkaXNhYmxlRmllbGRdXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVjdXJzaXZlTGlzdFRtcGw7IGNvbnRleHQ6IHsgbGlzdDogaXRlbS5jaGlsZHJlbiB9XCI+IDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvbGk+XHJcbiAgICAgIDxsaSBjbGFzcz1cImF4LW1lbnUtaXRlbS1kaXZpZGVyXCIgKm5nSWY9XCJpdGVtW3RoaXMuZGl2aWRlckZpZWxkXVwiPjwvbGk+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGluZ1wiPlxyXG4gIDxuZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1wLTRcIj5cclxuICAgICAgPGF4LWxvYWRpbmcgdGV4dD1cInt7ICdsYXlvdXQubG9hZGluZy50ZXh0JyB8IHRyYW5zIH19XCI+PC9heC1sb2FkaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI3RtcEVtcHR5PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgICA8IS0tLS0tLS0tLS0tLS0tLSBjaGVjayBmb3IgY3VzdG9tIHRlbXBsYXRlICAtLS0tLS0tLS0tLS0tLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1wdHlUZW1wbGF0ZTsgZWxzZSBlbHNlRW1wdHlUZW1wbGF0ZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICNlbHNlRW1wdHlUZW1wbGF0ZT5cclxuICAgICAge3sgJ2NvbW1vbi5uby1yZXN1bHQtZm91bmQnIHwgdHJhbnMgfX1cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==