@geoit/ui 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/AGENTS.md +12 -8
  2. package/README.md +49 -62
  3. package/ai/AGENTS.md +38 -28
  4. package/ai/README.md +35 -1
  5. package/ai/catalog.json +2796 -288
  6. package/ai/components/geo-alert.md +3 -3
  7. package/ai/components/geo-back-button.md +2 -2
  8. package/ai/components/geo-breadcrumb.md +1 -1
  9. package/ai/components/geo-button.md +3 -3
  10. package/ai/components/geo-chart.md +103 -0
  11. package/ai/components/geo-checkbox.md +4 -6
  12. package/ai/components/geo-column-picker.md +3 -3
  13. package/ai/components/geo-confirm-modal.md +4 -5
  14. package/ai/components/geo-dashboard.md +91 -0
  15. package/ai/components/geo-date-picker.md +5 -3
  16. package/ai/components/geo-date-range-picker.md +5 -3
  17. package/ai/components/geo-empty-state.md +75 -0
  18. package/ai/components/geo-feedback-form.md +97 -0
  19. package/ai/components/geo-file-picker.md +4 -2
  20. package/ai/components/geo-forgot-password.md +78 -0
  21. package/ai/components/geo-form-modal.md +9 -10
  22. package/ai/components/geo-icon.md +3 -3
  23. package/ai/components/geo-input.md +8 -6
  24. package/ai/components/geo-layout-footer.md +70 -0
  25. package/ai/components/geo-layout-header-actions.md +82 -0
  26. package/ai/components/geo-layout-header.md +89 -0
  27. package/ai/components/geo-layout-sidebar.md +86 -0
  28. package/ai/components/geo-layout.md +155 -0
  29. package/ai/components/geo-list-page.md +72 -0
  30. package/ai/components/geo-login.md +94 -0
  31. package/ai/components/geo-map-admin-filter.md +80 -0
  32. package/ai/components/geo-map-basemap-switcher.md +75 -0
  33. package/ai/components/geo-map-help.md +72 -0
  34. package/ai/components/geo-map-layer-card.md +73 -0
  35. package/ai/components/geo-map-layer-panel.md +75 -0
  36. package/ai/components/geo-map-layers-drawer.md +78 -0
  37. package/ai/components/geo-map-legend.md +74 -0
  38. package/ai/components/geo-map-locate.md +75 -0
  39. package/ai/components/geo-map-location-chip.md +71 -0
  40. package/ai/components/geo-map-measure.md +74 -0
  41. package/ai/components/geo-map-opacity.md +75 -0
  42. package/ai/components/geo-map-parcel-popup.md +79 -0
  43. package/ai/components/geo-map-search.md +83 -0
  44. package/ai/components/geo-map-shell.md +110 -0
  45. package/ai/components/geo-map-snapshot.md +75 -0
  46. package/ai/components/geo-map-swipe.md +73 -0
  47. package/ai/components/geo-map-toolbar.md +76 -0
  48. package/ai/components/geo-map-zoom.md +74 -0
  49. package/ai/components/geo-map.md +205 -0
  50. package/ai/components/geo-overlap-result.md +88 -0
  51. package/ai/components/geo-page-header.md +72 -0
  52. package/ai/components/geo-page-title.md +1 -1
  53. package/ai/components/geo-pagination.md +4 -7
  54. package/ai/components/geo-radio.md +3 -1
  55. package/ai/components/geo-row-actions.md +3 -3
  56. package/ai/components/geo-select.md +4 -2
  57. package/ai/components/geo-slider.md +5 -7
  58. package/ai/components/geo-stat-card.md +98 -0
  59. package/ai/components/geo-status-tag.md +2 -2
  60. package/ai/components/geo-step-form-layout.md +7 -8
  61. package/ai/components/geo-stepper.md +3 -4
  62. package/ai/components/geo-table-filter.md +4 -5
  63. package/ai/components/geo-table-pagination.md +4 -7
  64. package/ai/components/geo-table-toolbar.md +7 -7
  65. package/ai/components/geo-table.md +17 -20
  66. package/ai/components/geo-tabs.md +4 -6
  67. package/ai/components/geo-textarea.md +4 -2
  68. package/ai/components/geo-toast.md +4 -4
  69. package/ai/components/geo-tree.md +4 -6
  70. package/ai/components/geo-typography.md +1 -1
  71. package/ai/components/geo-upload.md +9 -10
  72. package/ai/mockup.html +1194 -0
  73. package/ai/recipes.md +98 -85
  74. package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +19 -36
  75. package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +14 -24
  76. package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +8 -11
  77. package/esm2022/lib/figma/geo-button/geo-button.component.mjs +30 -59
  78. package/esm2022/lib/figma/geo-chart/geo-chart.component.mjs +88 -0
  79. package/esm2022/lib/figma/geo-chart/geo-chart.types.mjs +2 -0
  80. package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +11 -22
  81. package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +22 -54
  82. package/esm2022/lib/figma/geo-dashboard/geo-dashboard.component.mjs +49 -0
  83. package/esm2022/lib/figma/geo-dashboard/geo-dashboard.types.mjs +2 -0
  84. package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +48 -78
  85. package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +47 -75
  86. package/esm2022/lib/figma/geo-empty-state/geo-empty-state.component.mjs +25 -0
  87. package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.component.mjs +75 -0
  88. package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.types.mjs +2 -0
  89. package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +59 -81
  90. package/esm2022/lib/figma/geo-forgot-password/geo-forgot-password.component.mjs +51 -0
  91. package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +45 -112
  92. package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +22 -32
  93. package/esm2022/lib/figma/geo-input/geo-input.component.mjs +41 -70
  94. package/esm2022/lib/figma/geo-layout/footer/geo-layout-footer.component.mjs +18 -0
  95. package/esm2022/lib/figma/geo-layout/geo-layout-actions.directive.mjs +15 -0
  96. package/esm2022/lib/figma/geo-layout/geo-layout.component.mjs +79 -0
  97. package/esm2022/lib/figma/geo-layout/geo-layout.types.mjs +42 -0
  98. package/esm2022/lib/figma/geo-layout/header/geo-layout-header.component.mjs +60 -0
  99. package/esm2022/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.mjs +70 -0
  100. package/esm2022/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.mjs +90 -0
  101. package/esm2022/lib/figma/geo-list-page/geo-list-page.component.mjs +22 -0
  102. package/esm2022/lib/figma/geo-login/geo-login.component.mjs +58 -0
  103. package/esm2022/lib/figma/geo-login/geo-login.types.mjs +2 -0
  104. package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +52 -0
  105. package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +61 -0
  106. package/esm2022/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.mjs +26 -0
  107. package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.mjs +24 -0
  108. package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.mjs +146 -0
  109. package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs +37 -0
  110. package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +30 -0
  111. package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.mjs +72 -0
  112. package/esm2022/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.mjs +21 -0
  113. package/esm2022/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.mjs +375 -0
  114. package/esm2022/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.mjs +94 -0
  115. package/esm2022/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.mjs +136 -0
  116. package/esm2022/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.mjs +182 -0
  117. package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +577 -0
  118. package/esm2022/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.mjs +93 -0
  119. package/esm2022/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.mjs +129 -0
  120. package/esm2022/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.mjs +64 -0
  121. package/esm2022/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.mjs +295 -0
  122. package/esm2022/lib/figma/geo-map/geo-map-toolbar.icons.mjs +18 -0
  123. package/esm2022/lib/figma/geo-map/geo-map.component.mjs +144 -0
  124. package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +497 -0
  125. package/esm2022/lib/figma/geo-map/geo-map.controller.mjs +71 -0
  126. package/esm2022/lib/figma/geo-map/geo-map.types.mjs +2 -0
  127. package/esm2022/lib/figma/geo-map/services/geo-map-layer.service.mjs +368 -0
  128. package/esm2022/lib/figma/geo-map/services/geo-map-projection.service.mjs +110 -0
  129. package/esm2022/lib/figma/geo-map/services/geo-map.service.mjs +540 -0
  130. package/esm2022/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.mjs +47 -0
  131. package/esm2022/lib/figma/geo-map/utils/geo-map-interactions.util.mjs +30 -0
  132. package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.component.mjs +25 -0
  133. package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.types.mjs +2 -0
  134. package/esm2022/lib/figma/geo-page-header/geo-page-header.component.mjs +23 -0
  135. package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +20 -35
  136. package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +13 -43
  137. package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +32 -52
  138. package/esm2022/lib/figma/geo-select/geo-select.component.mjs +46 -72
  139. package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +12 -28
  140. package/esm2022/lib/figma/geo-stat-card/geo-stat-card.component.mjs +163 -0
  141. package/esm2022/lib/figma/geo-stat-card/geo-stat-card.types.mjs +2 -0
  142. package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +23 -27
  143. package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +39 -96
  144. package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +18 -33
  145. package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +14 -24
  146. package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +18 -36
  147. package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +41 -98
  148. package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +40 -73
  149. package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +26 -56
  150. package/esm2022/lib/figma/geo-table/geo-table.component.mjs +110 -210
  151. package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +33 -63
  152. package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +28 -44
  153. package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +18 -39
  154. package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +12 -40
  155. package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +49 -64
  156. package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +50 -101
  157. package/esm2022/lib/figma/index.mjs +50 -1
  158. package/esm2022/lib/styles/tokens.mjs +56 -24
  159. package/fesm2022/geoit-ui.mjs +5981 -1825
  160. package/fesm2022/geoit-ui.mjs.map +1 -1
  161. package/lib/figma/geo-alert/geo-alert.component.d.ts +10 -11
  162. package/lib/figma/geo-back-button/geo-back-button.component.d.ts +6 -7
  163. package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +2 -2
  164. package/lib/figma/geo-button/geo-button.component.d.ts +21 -17
  165. package/lib/figma/geo-chart/geo-chart.component.d.ts +40 -0
  166. package/lib/figma/geo-chart/geo-chart.types.d.ts +13 -0
  167. package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +6 -7
  168. package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +15 -17
  169. package/lib/figma/geo-dashboard/geo-dashboard.component.d.ts +29 -0
  170. package/lib/figma/geo-dashboard/geo-dashboard.types.d.ts +7 -0
  171. package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +26 -21
  172. package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +25 -20
  173. package/lib/figma/geo-empty-state/geo-empty-state.component.d.ts +17 -0
  174. package/lib/figma/geo-feedback-form/geo-feedback-form.component.d.ts +36 -0
  175. package/lib/figma/geo-feedback-form/geo-feedback-form.types.d.ts +8 -0
  176. package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +23 -20
  177. package/lib/figma/geo-forgot-password/geo-forgot-password.component.d.ts +24 -0
  178. package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +33 -35
  179. package/lib/figma/geo-icon/geo-icon.component.d.ts +7 -7
  180. package/lib/figma/geo-input/geo-input.component.d.ts +23 -21
  181. package/lib/figma/geo-layout/footer/geo-layout-footer.component.d.ts +10 -0
  182. package/lib/figma/geo-layout/geo-layout-actions.directive.d.ts +6 -0
  183. package/lib/figma/geo-layout/geo-layout.component.d.ts +48 -0
  184. package/lib/figma/geo-layout/geo-layout.types.d.ts +44 -0
  185. package/lib/figma/geo-layout/header/geo-layout-header.component.d.ts +31 -0
  186. package/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.d.ts +32 -0
  187. package/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.d.ts +34 -0
  188. package/lib/figma/geo-list-page/geo-list-page.component.d.ts +16 -0
  189. package/lib/figma/geo-login/geo-login.component.d.ts +27 -0
  190. package/lib/figma/geo-login/geo-login.types.d.ts +6 -0
  191. package/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.d.ts +28 -0
  192. package/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.d.ts +26 -0
  193. package/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.d.ts +20 -0
  194. package/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.d.ts +15 -0
  195. package/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.d.ts +40 -0
  196. package/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.d.ts +25 -0
  197. package/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.d.ts +18 -0
  198. package/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.d.ts +24 -0
  199. package/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.d.ts +14 -0
  200. package/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.d.ts +49 -0
  201. package/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.d.ts +30 -0
  202. package/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.d.ts +44 -0
  203. package/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.d.ts +56 -0
  204. package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +103 -0
  205. package/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.d.ts +21 -0
  206. package/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.d.ts +33 -0
  207. package/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.d.ts +30 -0
  208. package/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.d.ts +67 -0
  209. package/lib/figma/geo-map/geo-map-toolbar.icons.d.ts +17 -0
  210. package/lib/figma/geo-map/geo-map.component.d.ts +53 -0
  211. package/lib/figma/geo-map/geo-map.constants.d.ts +73 -0
  212. package/lib/figma/geo-map/geo-map.controller.d.ts +49 -0
  213. package/lib/figma/geo-map/geo-map.types.d.ts +224 -0
  214. package/lib/figma/geo-map/services/geo-map-layer.service.d.ts +42 -0
  215. package/lib/figma/geo-map/services/geo-map-projection.service.d.ts +32 -0
  216. package/lib/figma/geo-map/services/geo-map.service.d.ts +99 -0
  217. package/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.d.ts +13 -0
  218. package/lib/figma/geo-map/utils/geo-map-interactions.util.d.ts +9 -0
  219. package/lib/figma/geo-overlap-result/geo-overlap-result.component.d.ts +18 -0
  220. package/lib/figma/geo-overlap-result/geo-overlap-result.types.d.ts +7 -0
  221. package/lib/figma/geo-page-header/geo-page-header.component.d.ts +16 -0
  222. package/lib/figma/geo-page-title/geo-page-title.component.d.ts +9 -9
  223. package/lib/figma/geo-pagination/geo-pagination.component.d.ts +9 -14
  224. package/lib/figma/geo-radio/geo-radio.component.d.ts +17 -15
  225. package/lib/figma/geo-select/geo-select.component.d.ts +24 -19
  226. package/lib/figma/geo-slider/geo-slider.component.d.ts +7 -9
  227. package/lib/figma/geo-stat-card/geo-stat-card.component.d.ts +50 -0
  228. package/lib/figma/geo-stat-card/geo-stat-card.types.d.ts +11 -0
  229. package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +7 -7
  230. package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +27 -29
  231. package/lib/figma/geo-stepper/geo-stepper.component.d.ts +6 -8
  232. package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +6 -7
  233. package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +11 -12
  234. package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +21 -28
  235. package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +17 -20
  236. package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +17 -18
  237. package/lib/figma/geo-table/geo-table.component.d.ts +58 -62
  238. package/lib/figma/geo-tabs/geo-tabs.component.d.ts +14 -17
  239. package/lib/figma/geo-textarea/geo-textarea.component.d.ts +15 -13
  240. package/lib/figma/geo-toast/geo-toast.component.d.ts +11 -12
  241. package/lib/figma/geo-tree/geo-tree.component.d.ts +8 -13
  242. package/lib/figma/geo-typography/geo-typography.component.d.ts +13 -13
  243. package/lib/figma/geo-upload/geo-upload.component.d.ts +26 -28
  244. package/lib/figma/index.d.ts +49 -0
  245. package/lib/styles/tokens.d.ts +56 -23
  246. package/package.json +4 -2
  247. package/src/lib/figma/geo-map/assets/toolbar/fullscreen.svg +8 -0
  248. package/src/lib/figma/geo-map/assets/toolbar/home.svg +3 -0
  249. package/src/lib/figma/geo-map/assets/toolbar/layers.svg +3 -0
  250. package/src/lib/figma/geo-map/assets/toolbar/measure-area.svg +12 -0
  251. package/src/lib/figma/geo-map/assets/toolbar/measure-distance.svg +5 -0
  252. package/src/lib/figma/geo-map/assets/toolbar/pan.svg +13 -0
  253. package/src/lib/figma/geo-map/assets/toolbar/search.svg +3 -0
  254. package/src/lib/figma/geo-map/assets/toolbar/zoom-in.svg +3 -0
  255. package/src/lib/figma/geo-map/assets/toolbar/zoom-out.svg +5 -0
  256. package/src/lib/styles/design-tokens.scss +108 -35
  257. package/src/lib/styles/scrollbar.scss +2 -2
  258. package/src/lib/styles/theme.scss +1 -1
@@ -1,5 +1,4 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
1
+ import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
3
2
  import { NgZorroAntdModule } from '../../../ng-zorro/ng-zorro-antd.module';
4
3
  import { GeoButtonComponent } from '../../geo-button/geo-button.component';
5
4
  import { GeoCheckboxComponent } from '../../geo-checkbox/geo-checkbox.component';
@@ -10,12 +9,12 @@ import * as i2 from "ng-zorro-antd/core/transition-patch";
10
9
  import * as i3 from "ng-zorro-antd/core/wave";
11
10
  import * as i4 from "ng-zorro-antd/dropdown";
12
11
  export class GeoColumnPickerComponent {
13
- triggerLabel = 'Ẩn hiện cột';
14
- hint = 'Chọn cột hiển thị trên bảng.';
15
- items = [];
12
+ triggerLabel = input('Ẩn hiện cột');
13
+ hint = input('Chọn cột hiển thị trên bảng.');
14
+ items = input([]);
16
15
  /** Lưu trạng thái ẩn/hiện cột theo session khi người dùng áp dụng */
17
- storageKey;
18
- apply = new EventEmitter();
16
+ storageKey = input(undefined);
17
+ apply = output();
19
18
  dropdownVisible = false;
20
19
  draftItems = [];
21
20
  onDropdownVisibleChange(visible) {
@@ -34,8 +33,9 @@ export class GeoColumnPickerComponent {
34
33
  /** `pinned` giữ empty để tương thích payload/storage cũ — không còn UI ghim/di chuyển cột. */
35
34
  const payload = { visibility, pinned: {} };
36
35
  this.apply.emit(payload);
37
- if (this.storageKey) {
38
- saveColumnPickerState(this.storageKey, payload);
36
+ const storageKey = this.storageKey();
37
+ if (storageKey) {
38
+ saveColumnPickerState(storageKey, payload);
39
39
  }
40
40
  this.dropdownVisible = false;
41
41
  }
@@ -43,23 +43,13 @@ export class GeoColumnPickerComponent {
43
43
  this.syncDraft();
44
44
  }
45
45
  syncDraft() {
46
- this.draftItems = this.items.map((item) => ({ ...item }));
46
+ this.draftItems = this.items().map((item) => ({ ...item }));
47
47
  }
48
48
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoColumnPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoColumnPickerComponent, isStandalone: true, selector: "geo-column-picker", inputs: { triggerLabel: "triggerLabel", hint: "hint", items: "items", storageKey: "storageKey" }, outputs: { apply: "apply" }, ngImport: i0, template: "<div\n class=\"geo-column-picker__trigger\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n [(nzVisible)]=\"dropdownVisible\"\n (nzVisibleChange)=\"onDropdownVisibleChange($event)\"\n>\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"eye-invisible\"\n [title]=\"triggerLabel\"\n >\n {{ triggerLabel }}\n </geo-button>\n</div>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"geo-column-picker__panel\" (click)=\"$event.stopPropagation()\">\n <p class=\"geo-column-picker__hint\">{{ hint }}</p>\n\n <div class=\"geo-column-picker__list\">\n @for (item of draftItems; track item.key) {\n <div class=\"geo-column-picker__row\">\n <geo-checkbox\n class=\"geo-column-picker__item\"\n [label]=\"item.title\"\n [checked]=\"item.visible\"\n [disabled]=\"item.locked ?? false\"\n (checkedChange)=\"onItemChange(item.key, $event)\"\n ></geo-checkbox>\n </div>\n }\n </div>\n\n <div class=\"geo-column-picker__actions\">\n <button nz-button nzType=\"default\" nzSize=\"small\" (click)=\"onReset()\">\u0110\u1EB7t l\u1EA1i</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"onApply()\">\u00C1p d\u1EE5ng</button>\n </div>\n </div>\n</nz-dropdown-menu>\n", styles: [":host{display:inline-block}.geo-column-picker__trigger{display:inline-flex}.geo-column-picker__panel{width:320px;padding:12px 16px 16px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014}.geo-column-picker__hint{margin:0 0 12px;color:var(--geo-color-neutral-500);font-size:13px;line-height:20px}.geo-column-picker__list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto}.geo-column-picker__row{display:flex;align-items:center;gap:8px}.geo-column-picker__item{display:flex;align-items:center;flex:1;min-width:0}.geo-column-picker__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--geo-color-neutral-100)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i3.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i4.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i4.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }, { kind: "component", type: GeoCheckboxComponent, selector: "geo-checkbox", inputs: ["label", "checked", "disabled", "indeterminate"], outputs: ["checkedChange"] }] });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoColumnPickerComponent, isStandalone: true, selector: "geo-column-picker", inputs: { triggerLabel: { classPropertyName: "triggerLabel", publicName: "triggerLabel", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, storageKey: { classPropertyName: "storageKey", publicName: "storageKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply" }, ngImport: i0, template: "<div\n class=\"geo-column-picker__trigger\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n [(nzVisible)]=\"dropdownVisible\"\n (nzVisibleChange)=\"onDropdownVisibleChange($event)\"\n>\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"eye-invisible\"\n [title]=\"triggerLabel()\"\n >\n {{ triggerLabel() }}\n </geo-button>\n</div>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"geo-column-picker__panel\" (click)=\"$event.stopPropagation()\">\n <p class=\"geo-column-picker__hint\">{{ hint() }}</p>\n\n <div class=\"geo-column-picker__list\">\n @for (item of draftItems; track item.key) {\n <div class=\"geo-column-picker__row\">\n <geo-checkbox\n class=\"geo-column-picker__item\"\n [label]=\"item.title\"\n [checked]=\"item.visible\"\n [disabled]=\"item.locked ?? false\"\n (checkedChange)=\"onItemChange(item.key, $event)\"\n ></geo-checkbox>\n </div>\n }\n </div>\n\n <div class=\"geo-column-picker__actions\">\n <button nz-button nzType=\"default\" nzSize=\"small\" (click)=\"onReset()\">\u0110\u1EB7t l\u1EA1i</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"onApply()\">\u00C1p d\u1EE5ng</button>\n </div>\n </div>\n</nz-dropdown-menu>\n", styles: [":host{display:inline-block}.geo-column-picker__trigger{display:inline-flex}.geo-column-picker__panel{width:320px;padding:12px 16px 16px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014}.geo-column-picker__hint{margin:0 0 12px;color:var(--geo-color-neutral-500);font-size:13px;line-height:20px}.geo-column-picker__list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto}.geo-column-picker__row{display:flex;align-items:center;gap:8px}.geo-column-picker__item{display:flex;align-items:center;flex:1;min-width:0}.geo-column-picker__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--geo-color-neutral-100)}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i3.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i4.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i4.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }, { kind: "component", type: GeoCheckboxComponent, selector: "geo-checkbox", inputs: ["label", "checked", "disabled", "indeterminate"], outputs: ["checkedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoColumnPickerComponent, decorators: [{
52
52
  type: Component,
53
- args: [{ selector: 'geo-column-picker', standalone: true, imports: [CommonModule, NgZorroAntdModule, GeoButtonComponent, GeoCheckboxComponent], template: "<div\n class=\"geo-column-picker__trigger\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n [(nzVisible)]=\"dropdownVisible\"\n (nzVisibleChange)=\"onDropdownVisibleChange($event)\"\n>\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"eye-invisible\"\n [title]=\"triggerLabel\"\n >\n {{ triggerLabel }}\n </geo-button>\n</div>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"geo-column-picker__panel\" (click)=\"$event.stopPropagation()\">\n <p class=\"geo-column-picker__hint\">{{ hint }}</p>\n\n <div class=\"geo-column-picker__list\">\n @for (item of draftItems; track item.key) {\n <div class=\"geo-column-picker__row\">\n <geo-checkbox\n class=\"geo-column-picker__item\"\n [label]=\"item.title\"\n [checked]=\"item.visible\"\n [disabled]=\"item.locked ?? false\"\n (checkedChange)=\"onItemChange(item.key, $event)\"\n ></geo-checkbox>\n </div>\n }\n </div>\n\n <div class=\"geo-column-picker__actions\">\n <button nz-button nzType=\"default\" nzSize=\"small\" (click)=\"onReset()\">\u0110\u1EB7t l\u1EA1i</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"onApply()\">\u00C1p d\u1EE5ng</button>\n </div>\n </div>\n</nz-dropdown-menu>\n", styles: [":host{display:inline-block}.geo-column-picker__trigger{display:inline-flex}.geo-column-picker__panel{width:320px;padding:12px 16px 16px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014}.geo-column-picker__hint{margin:0 0 12px;color:var(--geo-color-neutral-500);font-size:13px;line-height:20px}.geo-column-picker__list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto}.geo-column-picker__row{display:flex;align-items:center;gap:8px}.geo-column-picker__item{display:flex;align-items:center;flex:1;min-width:0}.geo-column-picker__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--geo-color-neutral-100)}\n"] }]
54
- }], propDecorators: { triggerLabel: [{
55
- type: Input
56
- }], hint: [{
57
- type: Input
58
- }], items: [{
59
- type: Input
60
- }], storageKey: [{
61
- type: Input
62
- }], apply: [{
63
- type: Output
64
- }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNvbHVtbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLXRhYmxlL2dlby1jb2x1bW4tcGlja2VyL2dlby1jb2x1bW4tcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tY29sdW1uLXBpY2tlci9nZW8tY29sdW1uLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBU3BFLE1BQU0sT0FBTyx3QkFBd0I7SUFDMUIsWUFBWSxHQUFHLGFBQWEsQ0FBQztJQUM3QixJQUFJLEdBQUcsOEJBQThCLENBQUM7SUFDdEMsS0FBSyxHQUEwQixFQUFFLENBQUM7SUFDM0MscUVBQXFFO0lBQzVELFVBQVUsQ0FBVTtJQUVuQixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7SUFFbEUsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixVQUFVLEdBQTBCLEVBQUUsQ0FBQztJQUV2Qyx1QkFBdUIsQ0FBQyxPQUFnQjtRQUN0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVcsRUFBRSxPQUFnQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDN0MsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxVQUFVLEdBQTRCLEVBQUUsQ0FBQztRQUUvQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEMsQ0FBQztRQUVELDhGQUE4RjtRQUM5RixNQUFNLE9BQU8sR0FBZ0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7d0dBaERVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDRNQ2ZyQyxvM0NBMkNBLHV5QkRoQ1ksWUFBWSw4QkFBRSxpQkFBaUIsNGxDQUFFLGtCQUFrQixzT0FBRSxvQkFBb0I7OzRGQUl4RSx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQzs4QkFLM0UsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ1pvcnJvQW50ZE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL25nLXpvcnJvL25nLXpvcnJvLWFudGQubW9kdWxlJztcbmltcG9ydCB7IEdlb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2dlby1idXR0b24vZ2VvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9nZW8tY2hlY2tib3gvZ2VvLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9Db2x1bW5QaWNrZXJBcHBseVBheWxvYWQsIEdlb0NvbHVtblBpY2tlckl0ZW0gfSBmcm9tICcuL2dlby1jb2x1bW4tcGlja2VyLnR5cGVzJztcbmltcG9ydCB7IHNhdmVDb2x1bW5QaWNrZXJTdGF0ZSB9IGZyb20gJy4vZ2VvLWNvbHVtbi1waWNrZXIuc3RvcmFnZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1jb2x1bW4tcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdab3Jyb0FudGRNb2R1bGUsIEdlb0J1dHRvbkNvbXBvbmVudCwgR2VvQ2hlY2tib3hDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLWNvbHVtbi1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLWNvbHVtbi1waWNrZXIuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBHZW9Db2x1bW5QaWNrZXJDb21wb25lbnQge1xuICBASW5wdXQoKSB0cmlnZ2VyTGFiZWwgPSAn4bqobiBoaeG7h24gY+G7mXQnO1xuICBASW5wdXQoKSBoaW50ID0gJ0No4buNbiBj4buZdCBoaeG7g24gdGjhu4sgdHLDqm4gYuG6o25nLic7XG4gIEBJbnB1dCgpIGl0ZW1zOiBHZW9Db2x1bW5QaWNrZXJJdGVtW10gPSBbXTtcbiAgLyoqIEzGsHUgdHLhuqFuZyB0aMOhaSDhuqluL2hp4buHbiBj4buZdCB0aGVvIHNlc3Npb24ga2hpIG5nxrDhu51pIGTDuW5nIMOhcCBk4bulbmcgKi9cbiAgQElucHV0KCkgc3RvcmFnZUtleT86IHN0cmluZztcblxuICBAT3V0cHV0KCkgYXBwbHkgPSBuZXcgRXZlbnRFbWl0dGVyPEdlb0NvbHVtblBpY2tlckFwcGx5UGF5bG9hZD4oKTtcblxuICBkcm9wZG93blZpc2libGUgPSBmYWxzZTtcbiAgZHJhZnRJdGVtczogR2VvQ29sdW1uUGlja2VySXRlbVtdID0gW107XG5cbiAgb25Ecm9wZG93blZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICB0aGlzLnN5bmNEcmFmdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSXRlbUNoYW5nZShrZXk6IHN0cmluZywgdmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZHJhZnRJdGVtcyA9IHRoaXMuZHJhZnRJdGVtcy5tYXAoKGl0ZW0pID0+XG4gICAgICBpdGVtLmtleSA9PT0ga2V5ID8geyAuLi5pdGVtLCB2aXNpYmxlIH0gOiBpdGVtXG4gICAgKTtcbiAgfVxuXG4gIG9uQXBwbHkoKTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJpbGl0eTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRyYWZ0SXRlbXMpIHtcbiAgICAgIHZpc2liaWxpdHlbaXRlbS5rZXldID0gaXRlbS52aXNpYmxlO1xuICAgIH1cblxuICAgIC8qKiBgcGlubmVkYCBnaeG7ryBlbXB0eSDEkeG7gyB0xrDGoW5nIHRow61jaCBwYXlsb2FkL3N0b3JhZ2UgY8WpIOKAlCBraMO0bmcgY8OybiBVSSBnaGltL2RpIGNodXnhu4NuIGPhu5l0LiAqL1xuICAgIGNvbnN0IHBheWxvYWQ6IEdlb0NvbHVtblBpY2tlckFwcGx5UGF5bG9hZCA9IHsgdmlzaWJpbGl0eSwgcGlubmVkOiB7fSB9O1xuICAgIHRoaXMuYXBwbHkuZW1pdChwYXlsb2FkKTtcblxuICAgIGlmICh0aGlzLnN0b3JhZ2VLZXkpIHtcbiAgICAgIHNhdmVDb2x1bW5QaWNrZXJTdGF0ZSh0aGlzLnN0b3JhZ2VLZXksIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHRoaXMuZHJvcGRvd25WaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBvblJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuc3luY0RyYWZ0KCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNEcmFmdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRyYWZ0SXRlbXMgPSB0aGlzLml0ZW1zLm1hcCgoaXRlbSkgPT4gKHsgLi4uaXRlbSB9KSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJnZW8tY29sdW1uLXBpY2tlcl9fdHJpZ2dlclwiXG4gIG56LWRyb3Bkb3duXG4gIFtuekRyb3Bkb3duTWVudV09XCJtZW51XCJcbiAgbnpUcmlnZ2VyPVwiY2xpY2tcIlxuICBuelBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcbiAgWyhuelZpc2libGUpXT1cImRyb3Bkb3duVmlzaWJsZVwiXG4gIChuelZpc2libGVDaGFuZ2UpPVwib25Ecm9wZG93blZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gIDxnZW8tYnV0dG9uXG4gICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgY29sb3I9XCJicmFuZFwiXG4gICAgaWNvbj1cImV5ZS1pbnZpc2libGVcIlxuICAgIFt0aXRsZV09XCJ0cmlnZ2VyTGFiZWxcIlxuICA+XG4gICAge3sgdHJpZ2dlckxhYmVsIH19XG4gIDwvZ2VvLWJ1dHRvbj5cbjwvZGl2PlxuXG48bnotZHJvcGRvd24tbWVudSAjbWVudT1cIm56RHJvcGRvd25NZW51XCI+XG4gIDxkaXYgY2xhc3M9XCJnZW8tY29sdW1uLXBpY2tlcl9fcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPHAgY2xhc3M9XCJnZW8tY29sdW1uLXBpY2tlcl9faGludFwiPnt7IGhpbnQgfX08L3A+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLWNvbHVtbi1waWNrZXJfX2xpc3RcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZHJhZnRJdGVtczsgdHJhY2sgaXRlbS5rZXkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImdlby1jb2x1bW4tcGlja2VyX19yb3dcIj5cbiAgICAgICAgICA8Z2VvLWNoZWNrYm94XG4gICAgICAgICAgICBjbGFzcz1cImdlby1jb2x1bW4tcGlja2VyX19pdGVtXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmlzaWJsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5sb2NrZWQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwib25JdGVtQ2hhbmdlKGl0ZW0ua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9nZW8tY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdlby1jb2x1bW4tcGlja2VyX19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJkZWZhdWx0XCIgbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwib25SZXNldCgpXCI+xJDhurd0IGzhuqFpPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJwcmltYXJ5XCIgbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwib25BcHBseSgpXCI+w4FwIGThu6VuZzwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbnotZHJvcGRvd24tbWVudT5cbiJdfQ==
53
+ args: [{ selector: 'geo-column-picker', standalone: true, imports: [NgZorroAntdModule, GeoButtonComponent, GeoCheckboxComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"geo-column-picker__trigger\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n [(nzVisible)]=\"dropdownVisible\"\n (nzVisibleChange)=\"onDropdownVisibleChange($event)\"\n>\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"eye-invisible\"\n [title]=\"triggerLabel()\"\n >\n {{ triggerLabel() }}\n </geo-button>\n</div>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"geo-column-picker__panel\" (click)=\"$event.stopPropagation()\">\n <p class=\"geo-column-picker__hint\">{{ hint() }}</p>\n\n <div class=\"geo-column-picker__list\">\n @for (item of draftItems; track item.key) {\n <div class=\"geo-column-picker__row\">\n <geo-checkbox\n class=\"geo-column-picker__item\"\n [label]=\"item.title\"\n [checked]=\"item.visible\"\n [disabled]=\"item.locked ?? false\"\n (checkedChange)=\"onItemChange(item.key, $event)\"\n ></geo-checkbox>\n </div>\n }\n </div>\n\n <div class=\"geo-column-picker__actions\">\n <button nz-button nzType=\"default\" nzSize=\"small\" (click)=\"onReset()\">\u0110\u1EB7t l\u1EA1i</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"onApply()\">\u00C1p d\u1EE5ng</button>\n </div>\n </div>\n</nz-dropdown-menu>\n", styles: [":host{display:inline-block}.geo-column-picker__trigger{display:inline-flex}.geo-column-picker__panel{width:320px;padding:12px 16px 16px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014}.geo-column-picker__hint{margin:0 0 12px;color:var(--geo-color-neutral-500);font-size:13px;line-height:20px}.geo-column-picker__list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto}.geo-column-picker__row{display:flex;align-items:center;gap:8px}.geo-column-picker__item{display:flex;align-items:center;flex:1;min-width:0}.geo-column-picker__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--geo-color-neutral-100)}\n"] }]
54
+ }] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNvbHVtbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLXRhYmxlL2dlby1jb2x1bW4tcGlja2VyL2dlby1jb2x1bW4tcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tY29sdW1uLXBpY2tlci9nZW8tY29sdW1uLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7OztBQVVwRSxNQUFNLE9BQU8sd0JBQXdCO0lBQzFCLFlBQVksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEMsSUFBSSxHQUFHLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQzdDLEtBQUssR0FBRyxLQUFLLENBQXdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELHFFQUFxRTtJQUM1RCxVQUFVLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUVsRCxLQUFLLEdBQUcsTUFBTSxFQUErQixDQUFDO0lBRXZELGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIsVUFBVSxHQUEwQixFQUFFLENBQUM7SUFFdkMsdUJBQXVCLENBQUMsT0FBZ0I7UUFDdEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQzdDLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sVUFBVSxHQUE0QixFQUFFLENBQUM7UUFFL0MsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3RDLENBQUM7UUFFRCw4RkFBOEY7UUFDOUYsTUFBTSxPQUFPLEdBQWdDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO3dHQWpEVSx3QkFBd0I7NEZBQXhCLHdCQUF3Qix1bkJDZnJDLDAzQ0EyQ0EsdXlCRGpDWSxpQkFBaUIsNGxDQUFFLGtCQUFrQixzT0FBRSxvQkFBb0I7OzRGQUsxRCx3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDLG1CQUdyRCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdab3Jyb0FudGRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9uZy16b3Jyby9uZy16b3Jyby1hbnRkLm1vZHVsZSc7XG5pbXBvcnQgeyBHZW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9nZW8tYnV0dG9uL2dlby1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEdlb0NoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZ2VvLWNoZWNrYm94L2dlby1jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvQ29sdW1uUGlja2VyQXBwbHlQYXlsb2FkLCBHZW9Db2x1bW5QaWNrZXJJdGVtIH0gZnJvbSAnLi9nZW8tY29sdW1uLXBpY2tlci50eXBlcyc7XG5pbXBvcnQgeyBzYXZlQ29sdW1uUGlja2VyU3RhdGUgfSBmcm9tICcuL2dlby1jb2x1bW4tcGlja2VyLnN0b3JhZ2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tY29sdW1uLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1pvcnJvQW50ZE1vZHVsZSwgR2VvQnV0dG9uQ29tcG9uZW50LCBHZW9DaGVja2JveENvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW8tY29sdW1uLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tY29sdW1uLXBpY2tlci5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHZW9Db2x1bW5QaWNrZXJDb21wb25lbnQge1xuICByZWFkb25seSB0cmlnZ2VyTGFiZWwgPSBpbnB1dCgn4bqobiBoaeG7h24gY+G7mXQnKTtcbiAgcmVhZG9ubHkgaGludCA9IGlucHV0KCdDaOG7jW4gY+G7mXQgaGnhu4NuIHRo4buLIHRyw6puIGLhuqNuZy4nKTtcbiAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dDxHZW9Db2x1bW5QaWNrZXJJdGVtW10+KFtdKTtcbiAgLyoqIEzGsHUgdHLhuqFuZyB0aMOhaSDhuqluL2hp4buHbiBj4buZdCB0aGVvIHNlc3Npb24ga2hpIG5nxrDhu51pIGTDuW5nIMOhcCBk4bulbmcgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUtleSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBhcHBseSA9IG91dHB1dDxHZW9Db2x1bW5QaWNrZXJBcHBseVBheWxvYWQ+KCk7XG5cbiAgZHJvcGRvd25WaXNpYmxlID0gZmFsc2U7XG4gIGRyYWZ0SXRlbXM6IEdlb0NvbHVtblBpY2tlckl0ZW1bXSA9IFtdO1xuXG4gIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlKHZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodmlzaWJsZSkge1xuICAgICAgdGhpcy5zeW5jRHJhZnQoKTtcbiAgICB9XG4gIH1cblxuICBvbkl0ZW1DaGFuZ2Uoa2V5OiBzdHJpbmcsIHZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRyYWZ0SXRlbXMgPSB0aGlzLmRyYWZ0SXRlbXMubWFwKChpdGVtKSA9PlxuICAgICAgaXRlbS5rZXkgPT09IGtleSA/IHsgLi4uaXRlbSwgdmlzaWJsZSB9IDogaXRlbVxuICAgICk7XG4gIH1cblxuICBvbkFwcGx5KCk6IHZvaWQge1xuICAgIGNvbnN0IHZpc2liaWxpdHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kcmFmdEl0ZW1zKSB7XG4gICAgICB2aXNpYmlsaXR5W2l0ZW0ua2V5XSA9IGl0ZW0udmlzaWJsZTtcbiAgICB9XG5cbiAgICAvKiogYHBpbm5lZGAgZ2nhu68gZW1wdHkgxJHhu4MgdMawxqFuZyB0aMOtY2ggcGF5bG9hZC9zdG9yYWdlIGPFqSDigJQga2jDtG5nIGPDsm4gVUkgZ2hpbS9kaSBjaHV54buDbiBj4buZdC4gKi9cbiAgICBjb25zdCBwYXlsb2FkOiBHZW9Db2x1bW5QaWNrZXJBcHBseVBheWxvYWQgPSB7IHZpc2liaWxpdHksIHBpbm5lZDoge30gfTtcbiAgICB0aGlzLmFwcGx5LmVtaXQocGF5bG9hZCk7XG5cbiAgICBjb25zdCBzdG9yYWdlS2V5ID0gdGhpcy5zdG9yYWdlS2V5KCk7XG4gICAgaWYgKHN0b3JhZ2VLZXkpIHtcbiAgICAgIHNhdmVDb2x1bW5QaWNrZXJTdGF0ZShzdG9yYWdlS2V5LCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICB0aGlzLmRyb3Bkb3duVmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgb25SZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnN5bmNEcmFmdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jRHJhZnQoKTogdm9pZCB7XG4gICAgdGhpcy5kcmFmdEl0ZW1zID0gdGhpcy5pdGVtcygpLm1hcCgoaXRlbSkgPT4gKHsgLi4uaXRlbSB9KSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJnZW8tY29sdW1uLXBpY2tlcl9fdHJpZ2dlclwiXG4gIG56LWRyb3Bkb3duXG4gIFtuekRyb3Bkb3duTWVudV09XCJtZW51XCJcbiAgbnpUcmlnZ2VyPVwiY2xpY2tcIlxuICBuelBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcbiAgWyhuelZpc2libGUpXT1cImRyb3Bkb3duVmlzaWJsZVwiXG4gIChuelZpc2libGVDaGFuZ2UpPVwib25Ecm9wZG93blZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gIDxnZW8tYnV0dG9uXG4gICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgY29sb3I9XCJicmFuZFwiXG4gICAgaWNvbj1cImV5ZS1pbnZpc2libGVcIlxuICAgIFt0aXRsZV09XCJ0cmlnZ2VyTGFiZWwoKVwiXG4gID5cbiAgICB7eyB0cmlnZ2VyTGFiZWwoKSB9fVxuICA8L2dlby1idXR0b24+XG48L2Rpdj5cblxuPG56LWRyb3Bkb3duLW1lbnUgI21lbnU9XCJuekRyb3Bkb3duTWVudVwiPlxuICA8ZGl2IGNsYXNzPVwiZ2VvLWNvbHVtbi1waWNrZXJfX3BhbmVsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgIDxwIGNsYXNzPVwiZ2VvLWNvbHVtbi1waWNrZXJfX2hpbnRcIj57eyBoaW50KCkgfX08L3A+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLWNvbHVtbi1waWNrZXJfX2xpc3RcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZHJhZnRJdGVtczsgdHJhY2sgaXRlbS5rZXkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImdlby1jb2x1bW4tcGlja2VyX19yb3dcIj5cbiAgICAgICAgICA8Z2VvLWNoZWNrYm94XG4gICAgICAgICAgICBjbGFzcz1cImdlby1jb2x1bW4tcGlja2VyX19pdGVtXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmlzaWJsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5sb2NrZWQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwib25JdGVtQ2hhbmdlKGl0ZW0ua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9nZW8tY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdlby1jb2x1bW4tcGlja2VyX19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJkZWZhdWx0XCIgbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwib25SZXNldCgpXCI+xJDhurd0IGzhuqFpPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJwcmltYXJ5XCIgbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwib25BcHBseSgpXCI+w4FwIGThu6VuZzwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbnotZHJvcGRvd24tbWVudT5cbiJdfQ==
@@ -1,5 +1,4 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
1
+ import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';
3
2
  import { NgZorroAntdModule } from '../../../ng-zorro/ng-zorro-antd.module';
4
3
  import { DEFAULT_UI_ROW_ACTIONS, pickInlineRowActions, pickOverflowRowActions, } from './geo-row-actions.types';
5
4
  import * as i0 from "@angular/core";
@@ -8,29 +7,22 @@ import * as i2 from "ng-zorro-antd/dropdown";
8
7
  import * as i3 from "ng-zorro-antd/icon";
9
8
  import * as i4 from "ng-zorro-antd/tooltip";
10
9
  export class GeoRowActionsComponent {
11
- actions = null;
10
+ actions = input(null);
12
11
  /** Action ưu tiên hiển thị khi có > 2 thao tác (mặc định: edit) */
13
- primaryActionKey = 'edit';
14
- actionClick = new EventEmitter();
12
+ primaryActionKey = input('edit');
13
+ actionClick = output();
15
14
  /** @deprecated Dùng `actionClick` với key `edit` */
16
- edit = new EventEmitter();
15
+ edit = output();
17
16
  /** @deprecated Dùng `actionClick` với key `more` */
18
- more = new EventEmitter();
19
- get resolvedActions() {
20
- return this.actions?.length ? this.actions : DEFAULT_UI_ROW_ACTIONS;
21
- }
22
- get enabledActions() {
23
- return this.resolvedActions.filter((action) => !action.disabled);
24
- }
25
- get inlineActions() {
26
- return pickInlineRowActions(this.enabledActions, this.primaryActionKey);
27
- }
28
- get overflowActions() {
29
- return pickOverflowRowActions(this.enabledActions, this.primaryActionKey);
30
- }
31
- get hasOverflow() {
32
- return this.overflowActions.length > 0;
33
- }
17
+ more = output();
18
+ resolvedActions = computed(() => {
19
+ const actions = this.actions();
20
+ return actions?.length ? actions : DEFAULT_UI_ROW_ACTIONS;
21
+ });
22
+ enabledActions = computed(() => this.resolvedActions().filter((action) => !action.disabled));
23
+ inlineActions = computed(() => pickInlineRowActions(this.enabledActions(), this.primaryActionKey()));
24
+ overflowActions = computed(() => pickOverflowRowActions(this.enabledActions(), this.primaryActionKey()));
25
+ hasOverflow = computed(() => this.overflowActions().length > 0);
34
26
  onActionClick(event, action) {
35
27
  if (action.disabled) {
36
28
  return;
@@ -45,20 +37,10 @@ export class GeoRowActionsComponent {
45
37
  }
46
38
  }
47
39
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoRowActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoRowActionsComponent, isStandalone: true, selector: "geo-row-actions", inputs: { actions: "actions", primaryActionKey: "primaryActionKey" }, outputs: { actionClick: "actionClick", edit: "edit", more: "more" }, ngImport: i0, template: "<div class=\"geo-row-actions\">\n @for (action of inlineActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n [class.geo-row-actions__btn--danger]=\"action.danger\"\n [nz-tooltip]=\"action.title ?? action.label ?? ''\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span nz-icon [nzType]=\"action.icon\" [nzTheme]=\"action.iconTheme ?? 'outline'\"></span>\n </button>\n }\n\n @if (hasOverflow) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n nz-dropdown\n [nzDropdownMenu]=\"overflowMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nz-tooltip=\"Th\u00EAm thao t\u00E1c\"\n aria-label=\"Th\u00EAm thao t\u00E1c\"\n (click)=\"$event.stopPropagation()\"\n >\n <span nz-icon nzType=\"more\" nzTheme=\"outline\"></span>\n </button>\n\n <nz-dropdown-menu #overflowMenu=\"nzDropdownMenu\">\n <div class=\"geo-row-actions__panel\" (click)=\"$event.stopPropagation()\">\n @for (action of overflowActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__panel-item\"\n [class.geo-row-actions__panel-item--danger]=\"action.danger\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span\n class=\"geo-row-actions__panel-icon\"\n nz-icon\n [nzType]=\"action.icon\"\n [nzTheme]=\"action.iconTheme ?? 'outline'\"\n ></span>\n <span class=\"geo-row-actions__panel-label\">\n {{ action.label ?? action.title ?? action.key }}\n </span>\n </button>\n }\n </div>\n </nz-dropdown-menu>\n }\n</div>\n", styles: [":host{display:inline-block}.geo-row-actions{display:inline-flex;align-items:center;justify-content:center;gap:10px}.geo-row-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;transition:color .15s ease,background-color .15s ease}.geo-row-actions__btn:hover:not(:disabled){color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__btn:disabled{cursor:not-allowed;opacity:.45}.geo-row-actions__btn--danger:hover:not(:disabled){color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__btn :deep(.anticon){font-size:16px}.geo-row-actions__panel{min-width:168px;padding:8px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014;display:flex;flex-direction:column;gap:4px}.geo-row-actions__panel-item{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:8px 12px;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-900);font-size:14px;line-height:20px;cursor:pointer;text-align:left;transition:color .15s ease,background-color .15s ease}.geo-row-actions__panel-item:hover{color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__panel-item--danger:hover{color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__panel-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;color:inherit}.geo-row-actions__panel-icon :deep(.anticon){font-size:16px;line-height:1}.geo-row-actions__panel-label{flex:1;line-height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NgZorroAntdModule }, { kind: "directive", type: i1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i2.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i4.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }] });
40
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoRowActionsComponent, isStandalone: true, selector: "geo-row-actions", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, primaryActionKey: { classPropertyName: "primaryActionKey", publicName: "primaryActionKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick", edit: "edit", more: "more" }, ngImport: i0, template: "<div class=\"geo-row-actions\">\n @for (action of inlineActions(); track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n [class.geo-row-actions__btn--danger]=\"action.danger\"\n [nz-tooltip]=\"action.title ?? action.label ?? ''\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span nz-icon [nzType]=\"action.icon\" [nzTheme]=\"action.iconTheme ?? 'outline'\"></span>\n </button>\n }\n\n @if (hasOverflow()) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n nz-dropdown\n [nzDropdownMenu]=\"overflowMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nz-tooltip=\"Th\u00EAm thao t\u00E1c\"\n aria-label=\"Th\u00EAm thao t\u00E1c\"\n (click)=\"$event.stopPropagation()\"\n >\n <span nz-icon nzType=\"more\" nzTheme=\"outline\"></span>\n </button>\n\n <nz-dropdown-menu #overflowMenu=\"nzDropdownMenu\">\n <div class=\"geo-row-actions__panel\" (click)=\"$event.stopPropagation()\">\n @for (action of overflowActions(); track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__panel-item\"\n [class.geo-row-actions__panel-item--danger]=\"action.danger\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span\n class=\"geo-row-actions__panel-icon\"\n nz-icon\n [nzType]=\"action.icon\"\n [nzTheme]=\"action.iconTheme ?? 'outline'\"\n ></span>\n <span class=\"geo-row-actions__panel-label\">\n {{ action.label ?? action.title ?? action.key }}\n </span>\n </button>\n }\n </div>\n </nz-dropdown-menu>\n }\n</div>\n", styles: [":host{display:inline-block}.geo-row-actions{display:inline-flex;align-items:center;justify-content:center;gap:10px}.geo-row-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;transition:color .15s ease,background-color .15s ease}.geo-row-actions__btn:hover:not(:disabled){color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__btn:disabled{cursor:not-allowed;opacity:.45}.geo-row-actions__btn--danger:hover:not(:disabled){color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__btn :deep(.anticon){font-size:16px}.geo-row-actions__panel{min-width:168px;padding:8px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014;display:flex;flex-direction:column;gap:4px}.geo-row-actions__panel-item{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:8px 12px;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-900);font-size:14px;line-height:20px;cursor:pointer;text-align:left;transition:color .15s ease,background-color .15s ease}.geo-row-actions__panel-item:hover{color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__panel-item--danger:hover{color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__panel-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;color:inherit}.geo-row-actions__panel-icon :deep(.anticon){font-size:16px;line-height:1}.geo-row-actions__panel-label{flex:1;line-height:20px}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "directive", type: i1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i2.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i4.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
49
41
  }
50
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoRowActionsComponent, decorators: [{
51
43
  type: Component,
52
- args: [{ selector: 'geo-row-actions', standalone: true, imports: [CommonModule, NgZorroAntdModule], template: "<div class=\"geo-row-actions\">\n @for (action of inlineActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n [class.geo-row-actions__btn--danger]=\"action.danger\"\n [nz-tooltip]=\"action.title ?? action.label ?? ''\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span nz-icon [nzType]=\"action.icon\" [nzTheme]=\"action.iconTheme ?? 'outline'\"></span>\n </button>\n }\n\n @if (hasOverflow) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n nz-dropdown\n [nzDropdownMenu]=\"overflowMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nz-tooltip=\"Th\u00EAm thao t\u00E1c\"\n aria-label=\"Th\u00EAm thao t\u00E1c\"\n (click)=\"$event.stopPropagation()\"\n >\n <span nz-icon nzType=\"more\" nzTheme=\"outline\"></span>\n </button>\n\n <nz-dropdown-menu #overflowMenu=\"nzDropdownMenu\">\n <div class=\"geo-row-actions__panel\" (click)=\"$event.stopPropagation()\">\n @for (action of overflowActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__panel-item\"\n [class.geo-row-actions__panel-item--danger]=\"action.danger\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span\n class=\"geo-row-actions__panel-icon\"\n nz-icon\n [nzType]=\"action.icon\"\n [nzTheme]=\"action.iconTheme ?? 'outline'\"\n ></span>\n <span class=\"geo-row-actions__panel-label\">\n {{ action.label ?? action.title ?? action.key }}\n </span>\n </button>\n }\n </div>\n </nz-dropdown-menu>\n }\n</div>\n", styles: [":host{display:inline-block}.geo-row-actions{display:inline-flex;align-items:center;justify-content:center;gap:10px}.geo-row-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;transition:color .15s ease,background-color .15s ease}.geo-row-actions__btn:hover:not(:disabled){color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__btn:disabled{cursor:not-allowed;opacity:.45}.geo-row-actions__btn--danger:hover:not(:disabled){color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__btn :deep(.anticon){font-size:16px}.geo-row-actions__panel{min-width:168px;padding:8px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014;display:flex;flex-direction:column;gap:4px}.geo-row-actions__panel-item{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:8px 12px;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-900);font-size:14px;line-height:20px;cursor:pointer;text-align:left;transition:color .15s ease,background-color .15s ease}.geo-row-actions__panel-item:hover{color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__panel-item--danger:hover{color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__panel-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;color:inherit}.geo-row-actions__panel-icon :deep(.anticon){font-size:16px;line-height:1}.geo-row-actions__panel-label{flex:1;line-height:20px}\n"] }]
53
- }], propDecorators: { actions: [{
54
- type: Input
55
- }], primaryActionKey: [{
56
- type: Input
57
- }], actionClick: [{
58
- type: Output
59
- }], edit: [{
60
- type: Output
61
- }], more: [{
62
- type: Output
63
- }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tcm93LWFjdGlvbnMvZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tcm93LWFjdGlvbnMvZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHNCQUFzQixHQUV2QixNQUFNLHlCQUF5QixDQUFDOzs7Ozs7QUFTakMsTUFBTSxPQUFPLHNCQUFzQjtJQUN4QixPQUFPLEdBQTBCLElBQUksQ0FBQztJQUMvQyxtRUFBbUU7SUFDMUQsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO0lBRXpCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ25ELG9EQUFvRDtJQUMxQyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUMxQyxvREFBb0Q7SUFDMUMsSUFBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFMUMsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFZLEVBQUUsTUFBb0I7UUFDOUMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQzt3R0E5Q1Usc0JBQXNCOzRGQUF0QixzQkFBc0Isc05DakJuQyw0N0RBdURBLGkzREQxQ1ksWUFBWSw4QkFBRSxpQkFBaUI7OzRGQUk5QixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDOzhCQUtqQyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsSUFBSTtzQkFBYixNQUFNO2dCQUVHLElBQUk7c0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdab3Jyb0FudGRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9uZy16b3Jyby9uZy16b3Jyby1hbnRkLm1vZHVsZSc7XG5pbXBvcnQge1xuICBERUZBVUxUX1VJX1JPV19BQ1RJT05TLFxuICBwaWNrSW5saW5lUm93QWN0aW9ucyxcbiAgcGlja092ZXJmbG93Um93QWN0aW9ucyxcbiAgR2VvUm93QWN0aW9uLFxufSBmcm9tICcuL2dlby1yb3ctYWN0aW9ucy50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1yb3ctYWN0aW9ucycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5nWm9ycm9BbnRkTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1yb3ctYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tcm93LWFjdGlvbnMuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBHZW9Sb3dBY3Rpb25zQ29tcG9uZW50IHtcbiAgQElucHV0KCkgYWN0aW9uczogR2VvUm93QWN0aW9uW10gfCBudWxsID0gbnVsbDtcbiAgLyoqIEFjdGlvbiDGsHUgdGnDqm4gaGnhu4NuIHRo4buLIGtoaSBjw7MgPiAyIHRoYW8gdMOhYyAobeG6t2MgxJHhu4tuaDogZWRpdCkgKi9cbiAgQElucHV0KCkgcHJpbWFyeUFjdGlvbktleSA9ICdlZGl0JztcblxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgLyoqIEBkZXByZWNhdGVkIETDuW5nIGBhY3Rpb25DbGlja2AgduG7m2kga2V5IGBlZGl0YCAqL1xuICBAT3V0cHV0KCkgZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEBkZXByZWNhdGVkIETDuW5nIGBhY3Rpb25DbGlja2AgduG7m2kga2V5IGBtb3JlYCAqL1xuICBAT3V0cHV0KCkgbW9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgcmVzb2x2ZWRBY3Rpb25zKCk6IEdlb1Jvd0FjdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zPy5sZW5ndGggPyB0aGlzLmFjdGlvbnMgOiBERUZBVUxUX1VJX1JPV19BQ1RJT05TO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWRBY3Rpb25zKCk6IEdlb1Jvd0FjdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZEFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+ICFhY3Rpb24uZGlzYWJsZWQpO1xuICB9XG5cbiAgZ2V0IGlubGluZUFjdGlvbnMoKTogR2VvUm93QWN0aW9uW10ge1xuICAgIHJldHVybiBwaWNrSW5saW5lUm93QWN0aW9ucyh0aGlzLmVuYWJsZWRBY3Rpb25zLCB0aGlzLnByaW1hcnlBY3Rpb25LZXkpO1xuICB9XG5cbiAgZ2V0IG92ZXJmbG93QWN0aW9ucygpOiBHZW9Sb3dBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHBpY2tPdmVyZmxvd1Jvd0FjdGlvbnModGhpcy5lbmFibGVkQWN0aW9ucywgdGhpcy5wcmltYXJ5QWN0aW9uS2V5KTtcbiAgfVxuXG4gIGdldCBoYXNPdmVyZmxvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vdmVyZmxvd0FjdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soZXZlbnQ6IEV2ZW50LCBhY3Rpb246IEdlb1Jvd0FjdGlvbik6IHZvaWQge1xuICAgIGlmIChhY3Rpb24uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uLmtleSk7XG5cbiAgICBpZiAoYWN0aW9uLmtleSA9PT0gJ2VkaXQnKSB7XG4gICAgICB0aGlzLmVkaXQuZW1pdCgpO1xuICAgIH1cblxuICAgIGlmIChhY3Rpb24ua2V5ID09PSAnbW9yZScpIHtcbiAgICAgIHRoaXMubW9yZS5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2VvLXJvdy1hY3Rpb25zXCI+XG4gIEBmb3IgKGFjdGlvbiBvZiBpbmxpbmVBY3Rpb25zOyB0cmFjayBhY3Rpb24ua2V5KSB7XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fYnRuXCJcbiAgICAgIFtjbGFzcy5nZW8tcm93LWFjdGlvbnNfX2J0bi0tZGFuZ2VyXT1cImFjdGlvbi5kYW5nZXJcIlxuICAgICAgW256LXRvb2x0aXBdPVwiYWN0aW9uLnRpdGxlID8/IGFjdGlvbi5sYWJlbCA/PyAnJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWN0aW9uLmxhYmVsID8/IGFjdGlvbi50aXRsZSA/PyBhY3Rpb24ua2V5XCJcbiAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKCRldmVudCwgYWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHNwYW4gbnotaWNvbiBbbnpUeXBlXT1cImFjdGlvbi5pY29uXCIgW256VGhlbWVdPVwiYWN0aW9uLmljb25UaGVtZSA/PyAnb3V0bGluZSdcIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIH1cblxuICBAaWYgKGhhc092ZXJmbG93KSB7XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fYnRuXCJcbiAgICAgIG56LWRyb3Bkb3duXG4gICAgICBbbnpEcm9wZG93bk1lbnVdPVwib3ZlcmZsb3dNZW51XCJcbiAgICAgIG56VHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgIG56UGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxuICAgICAgbnotdG9vbHRpcD1cIlRow6ptIHRoYW8gdMOhY1wiXG4gICAgICBhcmlhLWxhYmVsPVwiVGjDqm0gdGhhbyB0w6FjXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgID5cbiAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwibW9yZVwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG56LWRyb3Bkb3duLW1lbnUgI292ZXJmbG93TWVudT1cIm56RHJvcGRvd25NZW51XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2VvLXJvdy1hY3Rpb25zX19wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgQGZvciAoYWN0aW9uIG9mIG92ZXJmbG93QWN0aW9uczsgdHJhY2sgYWN0aW9uLmtleSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJnZW8tcm93LWFjdGlvbnNfX3BhbmVsLWl0ZW1cIlxuICAgICAgICAgICAgW2NsYXNzLmdlby1yb3ctYWN0aW9uc19fcGFuZWwtaXRlbS0tZGFuZ2VyXT1cImFjdGlvbi5kYW5nZXJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY3Rpb24ubGFiZWwgPz8gYWN0aW9uLnRpdGxlID8/IGFjdGlvbi5rZXlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soJGV2ZW50LCBhY3Rpb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fcGFuZWwtaWNvblwiXG4gICAgICAgICAgICAgIG56LWljb25cbiAgICAgICAgICAgICAgW256VHlwZV09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgICAgIFtuelRoZW1lXT1cImFjdGlvbi5pY29uVGhlbWUgPz8gJ291dGxpbmUnXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fcGFuZWwtbGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsID8/IGFjdGlvbi50aXRsZSA/PyBhY3Rpb24ua2V5IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbnotZHJvcGRvd24tbWVudT5cbiAgfVxuPC9kaXY+XG4iXX0=
44
+ args: [{ selector: 'geo-row-actions', standalone: true, imports: [NgZorroAntdModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"geo-row-actions\">\n @for (action of inlineActions(); track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n [class.geo-row-actions__btn--danger]=\"action.danger\"\n [nz-tooltip]=\"action.title ?? action.label ?? ''\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span nz-icon [nzType]=\"action.icon\" [nzTheme]=\"action.iconTheme ?? 'outline'\"></span>\n </button>\n }\n\n @if (hasOverflow()) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n nz-dropdown\n [nzDropdownMenu]=\"overflowMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nz-tooltip=\"Th\u00EAm thao t\u00E1c\"\n aria-label=\"Th\u00EAm thao t\u00E1c\"\n (click)=\"$event.stopPropagation()\"\n >\n <span nz-icon nzType=\"more\" nzTheme=\"outline\"></span>\n </button>\n\n <nz-dropdown-menu #overflowMenu=\"nzDropdownMenu\">\n <div class=\"geo-row-actions__panel\" (click)=\"$event.stopPropagation()\">\n @for (action of overflowActions(); track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__panel-item\"\n [class.geo-row-actions__panel-item--danger]=\"action.danger\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span\n class=\"geo-row-actions__panel-icon\"\n nz-icon\n [nzType]=\"action.icon\"\n [nzTheme]=\"action.iconTheme ?? 'outline'\"\n ></span>\n <span class=\"geo-row-actions__panel-label\">\n {{ action.label ?? action.title ?? action.key }}\n </span>\n </button>\n }\n </div>\n </nz-dropdown-menu>\n }\n</div>\n", styles: [":host{display:inline-block}.geo-row-actions{display:inline-flex;align-items:center;justify-content:center;gap:10px}.geo-row-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;transition:color .15s ease,background-color .15s ease}.geo-row-actions__btn:hover:not(:disabled){color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__btn:disabled{cursor:not-allowed;opacity:.45}.geo-row-actions__btn--danger:hover:not(:disabled){color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__btn :deep(.anticon){font-size:16px}.geo-row-actions__panel{min-width:168px;padding:8px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014;display:flex;flex-direction:column;gap:4px}.geo-row-actions__panel-item{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:8px 12px;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-900);font-size:14px;line-height:20px;cursor:pointer;text-align:left;transition:color .15s ease,background-color .15s ease}.geo-row-actions__panel-item:hover{color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__panel-item--danger:hover{color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__panel-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;color:inherit}.geo-row-actions__panel-icon :deep(.anticon){font-size:16px;line-height:1}.geo-row-actions__panel-label{flex:1;line-height:20px}\n"] }]
45
+ }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tcm93LWFjdGlvbnMvZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tcm93LWFjdGlvbnMvZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsc0JBQXNCLEdBRXZCLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQVVqQyxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLE9BQU8sR0FBRyxLQUFLLENBQXdCLElBQUksQ0FBQyxDQUFDO0lBQ3RELG1FQUFtRTtJQUMxRCxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFakMsV0FBVyxHQUFHLE1BQU0sRUFBVSxDQUFDO0lBQ3hDLG9EQUFvRDtJQUMzQyxJQUFJLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDL0Isb0RBQW9EO0lBQzNDLElBQUksR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUV0QixlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsT0FBTyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0lBRU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQzVELENBQUM7SUFFTyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUNyQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FDckUsQ0FBQztJQUVPLGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ3ZDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUN2RSxDQUFDO0lBRU8sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXpFLGFBQWEsQ0FBQyxLQUFZLEVBQUUsTUFBb0I7UUFDOUMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQzt3R0E3Q1Usc0JBQXNCOzRGQUF0QixzQkFBc0IsbWJDakJuQyxrOERBdURBLGkzREQzQ1ksaUJBQWlCOzs0RkFLaEIsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLGlCQUFpQixDQUFDLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdab3Jyb0FudGRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9uZy16b3Jyby9uZy16b3Jyby1hbnRkLm1vZHVsZSc7XG5pbXBvcnQge1xuICBERUZBVUxUX1VJX1JPV19BQ1RJT05TLFxuICBwaWNrSW5saW5lUm93QWN0aW9ucyxcbiAgcGlja092ZXJmbG93Um93QWN0aW9ucyxcbiAgR2VvUm93QWN0aW9uLFxufSBmcm9tICcuL2dlby1yb3ctYWN0aW9ucy50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1yb3ctYWN0aW9ucycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1pvcnJvQW50ZE1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW8tcm93LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdlb1Jvd0FjdGlvbnNDb21wb25lbnQge1xuICByZWFkb25seSBhY3Rpb25zID0gaW5wdXQ8R2VvUm93QWN0aW9uW10gfCBudWxsPihudWxsKTtcbiAgLyoqIEFjdGlvbiDGsHUgdGnDqm4gaGnhu4NuIHRo4buLIGtoaSBjw7MgPiAyIHRoYW8gdMOhYyAobeG6t2MgxJHhu4tuaDogZWRpdCkgKi9cbiAgcmVhZG9ubHkgcHJpbWFyeUFjdGlvbktleSA9IGlucHV0KCdlZGl0Jyk7XG5cbiAgcmVhZG9ubHkgYWN0aW9uQ2xpY2sgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICAvKiogQGRlcHJlY2F0ZWQgRMO5bmcgYGFjdGlvbkNsaWNrYCB24bubaSBrZXkgYGVkaXRgICovXG4gIHJlYWRvbmx5IGVkaXQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgLyoqIEBkZXByZWNhdGVkIETDuW5nIGBhY3Rpb25DbGlja2AgduG7m2kga2V5IGBtb3JlYCAqL1xuICByZWFkb25seSBtb3JlID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRBY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLmFjdGlvbnMoKTtcbiAgICByZXR1cm4gYWN0aW9ucz8ubGVuZ3RoID8gYWN0aW9ucyA6IERFRkFVTFRfVUlfUk9XX0FDVElPTlM7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGVuYWJsZWRBY3Rpb25zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnJlc29sdmVkQWN0aW9ucygpLmZpbHRlcigoYWN0aW9uKSA9PiAhYWN0aW9uLmRpc2FibGVkKVxuICApO1xuXG4gIHJlYWRvbmx5IGlubGluZUFjdGlvbnMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHBpY2tJbmxpbmVSb3dBY3Rpb25zKHRoaXMuZW5hYmxlZEFjdGlvbnMoKSwgdGhpcy5wcmltYXJ5QWN0aW9uS2V5KCkpXG4gICk7XG5cbiAgcmVhZG9ubHkgb3ZlcmZsb3dBY3Rpb25zID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwaWNrT3ZlcmZsb3dSb3dBY3Rpb25zKHRoaXMuZW5hYmxlZEFjdGlvbnMoKSwgdGhpcy5wcmltYXJ5QWN0aW9uS2V5KCkpXG4gICk7XG5cbiAgcmVhZG9ubHkgaGFzT3ZlcmZsb3cgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm92ZXJmbG93QWN0aW9ucygpLmxlbmd0aCA+IDApO1xuXG4gIG9uQWN0aW9uQ2xpY2soZXZlbnQ6IEV2ZW50LCBhY3Rpb246IEdlb1Jvd0FjdGlvbik6IHZvaWQge1xuICAgIGlmIChhY3Rpb24uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uLmtleSk7XG5cbiAgICBpZiAoYWN0aW9uLmtleSA9PT0gJ2VkaXQnKSB7XG4gICAgICB0aGlzLmVkaXQuZW1pdCgpO1xuICAgIH1cblxuICAgIGlmIChhY3Rpb24ua2V5ID09PSAnbW9yZScpIHtcbiAgICAgIHRoaXMubW9yZS5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2VvLXJvdy1hY3Rpb25zXCI+XG4gIEBmb3IgKGFjdGlvbiBvZiBpbmxpbmVBY3Rpb25zKCk7IHRyYWNrIGFjdGlvbi5rZXkpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiZ2VvLXJvdy1hY3Rpb25zX19idG5cIlxuICAgICAgW2NsYXNzLmdlby1yb3ctYWN0aW9uc19fYnRuLS1kYW5nZXJdPVwiYWN0aW9uLmRhbmdlclwiXG4gICAgICBbbnotdG9vbHRpcF09XCJhY3Rpb24udGl0bGUgPz8gYWN0aW9uLmxhYmVsID8/ICcnXCJcbiAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY3Rpb24ubGFiZWwgPz8gYWN0aW9uLnRpdGxlID8/IGFjdGlvbi5rZXlcIlxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soJGV2ZW50LCBhY3Rpb24pXCJcbiAgICA+XG4gICAgICA8c3BhbiBuei1pY29uIFtuelR5cGVdPVwiYWN0aW9uLmljb25cIiBbbnpUaGVtZV09XCJhY3Rpb24uaWNvblRoZW1lID8/ICdvdXRsaW5lJ1wiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuXG4gIEBpZiAoaGFzT3ZlcmZsb3coKSkge1xuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJnZW8tcm93LWFjdGlvbnNfX2J0blwiXG4gICAgICBuei1kcm9wZG93blxuICAgICAgW256RHJvcGRvd25NZW51XT1cIm92ZXJmbG93TWVudVwiXG4gICAgICBuelRyaWdnZXI9XCJjbGlja1wiXG4gICAgICBuelBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcbiAgICAgIG56LXRvb2x0aXA9XCJUaMOqbSB0aGFvIHTDoWNcIlxuICAgICAgYXJpYS1sYWJlbD1cIlRow6ptIHRoYW8gdMOhY1wiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICA+XG4gICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cIm1vcmVcIiBuelRoZW1lPVwib3V0bGluZVwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxuei1kcm9wZG93bi1tZW51ICNvdmVyZmxvd01lbnU9XCJuekRyb3Bkb3duTWVudVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIEBmb3IgKGFjdGlvbiBvZiBvdmVyZmxvd0FjdGlvbnMoKTsgdHJhY2sgYWN0aW9uLmtleSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJnZW8tcm93LWFjdGlvbnNfX3BhbmVsLWl0ZW1cIlxuICAgICAgICAgICAgW2NsYXNzLmdlby1yb3ctYWN0aW9uc19fcGFuZWwtaXRlbS0tZGFuZ2VyXT1cImFjdGlvbi5kYW5nZXJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY3Rpb24ubGFiZWwgPz8gYWN0aW9uLnRpdGxlID8/IGFjdGlvbi5rZXlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soJGV2ZW50LCBhY3Rpb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fcGFuZWwtaWNvblwiXG4gICAgICAgICAgICAgIG56LWljb25cbiAgICAgICAgICAgICAgW256VHlwZV09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgICAgIFtuelRoZW1lXT1cImFjdGlvbi5pY29uVGhlbWUgPz8gJ291dGxpbmUnXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fcGFuZWwtbGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsID8/IGFjdGlvbi50aXRsZSA/PyBhY3Rpb24ua2V5IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbnotZHJvcGRvd24tbWVudT5cbiAgfVxuPC9kaXY+XG4iXX0=