@geoit/ui 0.0.2 → 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 +140 -17
  3. package/ai/AGENTS.md +43 -32
  4. package/ai/README.md +36 -2
  5. package/ai/catalog.json +5585 -437
  6. package/ai/components/geo-alert.md +75 -21
  7. package/ai/components/geo-back-button.md +64 -18
  8. package/ai/components/geo-breadcrumb.md +71 -12
  9. package/ai/components/geo-button.md +90 -27
  10. package/ai/components/geo-chart.md +103 -0
  11. package/ai/components/geo-checkbox.md +67 -20
  12. package/ai/components/geo-column-picker.md +91 -18
  13. package/ai/components/geo-confirm-modal.md +92 -27
  14. package/ai/components/geo-dashboard.md +91 -0
  15. package/ai/components/geo-date-picker.md +105 -29
  16. package/ai/components/geo-date-range-picker.md +101 -28
  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 +99 -26
  20. package/ai/components/geo-forgot-password.md +78 -0
  21. package/ai/components/geo-form-modal.md +111 -44
  22. package/ai/components/geo-icon.md +70 -16
  23. package/ai/components/geo-input.md +94 -29
  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 +62 -16
  53. package/ai/components/geo-pagination.md +76 -24
  54. package/ai/components/geo-radio.md +110 -27
  55. package/ai/components/geo-row-actions.md +87 -19
  56. package/ai/components/geo-select.md +108 -28
  57. package/ai/components/geo-slider.md +70 -21
  58. package/ai/components/geo-stat-card.md +98 -0
  59. package/ai/components/geo-status-tag.md +67 -15
  60. package/ai/components/geo-step-form-layout.md +121 -38
  61. package/ai/components/geo-stepper.md +81 -19
  62. package/ai/components/geo-table-filter.md +90 -29
  63. package/ai/components/geo-table-pagination.md +70 -23
  64. package/ai/components/geo-table-toolbar.md +84 -29
  65. package/ai/components/geo-table.md +191 -59
  66. package/ai/components/geo-tabs.md +99 -27
  67. package/ai/components/geo-textarea.md +84 -23
  68. package/ai/components/geo-toast.md +138 -27
  69. package/ai/components/geo-tree.md +94 -22
  70. package/ai/components/geo-typography.md +70 -19
  71. package/ai/components/geo-upload.md +109 -39
  72. package/ai/mockup.html +1194 -0
  73. package/ai/recipes.md +132 -47
  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, forwardRef, Input, Output, ViewEncapsulation, } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, forwardRef, inject, input, output, signal, ViewEncapsulation, } from '@angular/core';
3
2
  import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
4
3
  import { NzIconModule } from 'ng-zorro-antd/icon';
5
4
  import * as i0 from "@angular/core";
@@ -7,37 +6,39 @@ import * as i1 from "@angular/forms";
7
6
  import * as i2 from "ng-zorro-antd/icon";
8
7
  let uiInputErrorId = 0;
9
8
  export class GeoInputComponent {
10
- label = '';
11
- placeholder = '';
12
- type = 'text';
13
- disabled = false;
14
- readonly = false;
15
- required = false;
16
- error = false;
17
- errorMessage = '';
18
- maxlength;
19
- prefixIcon;
20
- suffixIcon;
21
- allowClear = false;
22
- block = false;
23
- width;
24
- valueChange = new EventEmitter();
25
- enterPressed = new EventEmitter();
9
+ cdr = inject(ChangeDetectorRef);
10
+ label = input('');
11
+ placeholder = input('');
12
+ type = input('text');
13
+ disabled = input(false);
14
+ readonly = input(false);
15
+ required = input(false);
16
+ error = input(false);
17
+ errorMessage = input('');
18
+ maxlength = input(undefined);
19
+ prefixIcon = input(undefined);
20
+ suffixIcon = input(undefined);
21
+ allowClear = input(false);
22
+ block = input(false);
23
+ width = input(undefined);
24
+ valueChange = output();
25
+ enterPressed = output();
26
26
  errorMessageId = `geo-input-error-${++uiInputErrorId}`;
27
- value = '';
27
+ disabledFromCva = signal(false);
28
+ isDisabled = computed(() => this.disabled() || this.disabledFromCva());
29
+ value = signal('');
28
30
  onChange = () => undefined;
29
31
  onTouched = () => undefined;
30
- get hostWidth() {
31
- if (this.block || this.width == null) {
32
+ hostWidth = computed(() => {
33
+ const width = this.width();
34
+ if (this.block() || width == null) {
32
35
  return null;
33
36
  }
34
- return typeof this.width === 'number' ? `${this.width}px` : this.width;
35
- }
36
- get showClear() {
37
- return this.allowClear && !this.disabled && !this.readonly && !!this.value;
38
- }
37
+ return typeof width === 'number' ? `${width}px` : width;
38
+ });
39
+ showClear = computed(() => this.allowClear() && !this.isDisabled() && !this.readonly() && !!this.value());
39
40
  onInput(value) {
40
- this.value = value;
41
+ this.value.set(value);
41
42
  this.onChange(value);
42
43
  this.valueChange.emit(value);
43
44
  }
@@ -48,7 +49,8 @@ export class GeoInputComponent {
48
49
  this.onInput('');
49
50
  }
50
51
  writeValue(value) {
51
- this.value = value == null ? '' : String(value);
52
+ this.value.set(value == null ? '' : String(value));
53
+ this.cdr.markForCheck();
52
54
  }
53
55
  registerOnChange(fn) {
54
56
  this.onChange = fn;
@@ -57,62 +59,31 @@ export class GeoInputComponent {
57
59
  this.onTouched = fn;
58
60
  }
59
61
  setDisabledState(isDisabled) {
60
- this.disabled = isDisabled;
62
+ this.disabledFromCva.set(isDisabled);
63
+ this.cdr.markForCheck();
61
64
  }
62
65
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoInputComponent, isStandalone: true, selector: "geo-input", inputs: { label: "label", placeholder: "placeholder", type: "type", disabled: "disabled", readonly: "readonly", required: "required", error: "error", errorMessage: "errorMessage", maxlength: "maxlength", prefixIcon: "prefixIcon", suffixIcon: "suffixIcon", allowClear: "allowClear", block: "block", width: "width" }, outputs: { valueChange: "valueChange", enterPressed: "enterPressed" }, host: { properties: { "class.geo-input-host--block": "block", "class.geo-input-host--error": "error", "style.width": "hostWidth" }, classAttribute: "geo-input-host" }, providers: [
66
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoInputComponent, isStandalone: true, selector: "geo-input", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null }, prefixIcon: { classPropertyName: "prefixIcon", publicName: "prefixIcon", isSignal: true, isRequired: false, transformFunction: null }, suffixIcon: { classPropertyName: "suffixIcon", publicName: "suffixIcon", isSignal: true, isRequired: false, transformFunction: null }, allowClear: { classPropertyName: "allowClear", publicName: "allowClear", isSignal: true, isRequired: false, transformFunction: null }, block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", enterPressed: "enterPressed" }, host: { properties: { "class.geo-input-host--block": "block()", "class.geo-input-host--error": "error()", "style.width": "hostWidth()" }, classAttribute: "geo-input-host" }, providers: [
64
67
  {
65
68
  provide: NG_VALUE_ACCESSOR,
66
69
  useExisting: forwardRef(() => GeoInputComponent),
67
70
  multi: true,
68
71
  },
69
- ], ngImport: i0, template: "@if (label) {\n <div class=\"geo-input__label\">\n <span>{{ label }}</span>\n @if (required) {\n <span class=\"geo-input__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<div\n class=\"geo-input__control\"\n [class.geo-input__control--disabled]=\"disabled\"\n [class.geo-input__control--error]=\"error\"\n>\n @if (prefixIcon) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"prefixIcon\" nzTheme=\"outline\"></span>\n }\n\n <input\n class=\"geo-input__field\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.maxlength]=\"maxlength ?? null\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"error && errorMessage ? errorMessageId : null\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (keyup.enter)=\"enterPressed.emit()\"\n />\n\n @if (showClear) {\n <button type=\"button\" class=\"geo-input__clear\" aria-label=\"X\u00F3a n\u1ED9i dung\" (click)=\"onClear()\">\n <span nz-icon nzType=\"close-circle\" nzTheme=\"fill\"></span>\n </button>\n }\n\n @if (suffixIcon) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"suffixIcon\" nzTheme=\"outline\"></span>\n }\n</div>\n\n@if (error && errorMessage) {\n <p class=\"geo-input__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage }}</p>\n}\n", styles: [".geo-input-host{display:inline-flex;flex-direction:column;gap:8px;width:413px;max-width:100%;vertical-align:top}geo-input.geo-input-host.geo-input-host--block,.geo-input-host.geo-input-host--block{display:flex;width:100%;max-width:none}.geo-input__label{display:inline-flex;align-items:flex-start;gap:4px;font-size:14px;line-height:normal;color:var(--geo-color-neutral-900)}.geo-input__required{color:var(--geo-color-error-default)}.geo-input__control{display:flex;align-items:center;gap:10px;min-height:40px;height:40px;padding:8px;border:1px solid var(--geo-color-neutral-300);border-radius:var(--geo-radius);background:transparent;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}.geo-input__control:hover:not(.geo-input__control--disabled){border-color:var(--geo-color-primary-default)}.geo-input__control:focus-within:not(.geo-input__control--disabled){border-color:var(--geo-color-primary-default);box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-primary-default) 12%,transparent)}.geo-input__control--error{border-color:var(--geo-color-error-default)!important}.geo-input__control--error:focus-within{box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-error-default) 12%,transparent)!important}.geo-input__control--disabled{background:var(--geo-color-neutral-100);border-color:var(--geo-color-neutral-300)}.geo-input__field{flex:1 1 auto;min-width:0;height:24px;border:none;outline:none;background:transparent;font-size:14px;line-height:24px;color:var(--geo-color-neutral-900);font-family:inherit}.geo-input__field::placeholder{color:var(--geo-color-neutral-500)}.geo-input__field:disabled{color:var(--geo-color-neutral-disabled-text);cursor:not-allowed}.geo-input__icon{display:inline-flex;flex-shrink:0;font-size:16px;color:var(--geo-color-neutral-500)}.geo-input__clear{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:none;background:transparent;color:var(--geo-color-neutral-400);font-size:14px;cursor:pointer}.geo-input__clear:hover{color:var(--geo-color-neutral-500)}.geo-input__error{margin:0;font-size:14px;line-height:normal;color:var(--geo-color-error-default)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], encapsulation: i0.ViewEncapsulation.None });
72
+ ], ngImport: i0, template: "@if (label()) {\n <div class=\"geo-input__label\">\n <span>{{ label() }}</span>\n @if (required()) {\n <span class=\"geo-input__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<div\n class=\"geo-input__control\"\n [class.geo-input__control--disabled]=\"isDisabled()\"\n [class.geo-input__control--error]=\"error()\"\n>\n @if (prefixIcon(); as prefix) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"prefix\" nzTheme=\"outline\"></span>\n }\n\n <input\n class=\"geo-input__field\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"error() && errorMessage() ? errorMessageId : null\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (keyup.enter)=\"enterPressed.emit()\"\n />\n\n @if (showClear()) {\n <button type=\"button\" class=\"geo-input__clear\" aria-label=\"X\u00F3a n\u1ED9i dung\" (click)=\"onClear()\">\n <span nz-icon nzType=\"close-circle\" nzTheme=\"fill\"></span>\n </button>\n }\n\n @if (suffixIcon(); as suffix) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"suffix\" nzTheme=\"outline\"></span>\n }\n</div>\n\n@if (error() && errorMessage()) {\n <p class=\"geo-input__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage() }}</p>\n}\n", styles: [".geo-input-host{display:inline-flex;flex-direction:column;gap:8px;width:413px;max-width:100%;vertical-align:top}geo-input.geo-input-host.geo-input-host--block,.geo-input-host.geo-input-host--block{display:flex;width:100%;max-width:none}.geo-input__label{display:inline-flex;align-items:flex-start;gap:4px;font-size:14px;line-height:normal;color:var(--geo-color-neutral-900)}.geo-input__required{color:var(--geo-color-error-default)}.geo-input__control{display:flex;align-items:center;gap:10px;min-height:40px;height:40px;padding:8px;border:1px solid var(--geo-color-neutral-300);border-radius:var(--geo-radius);background:transparent;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}.geo-input__control:hover:not(.geo-input__control--disabled){border-color:var(--geo-color-primary-default)}.geo-input__control:focus-within:not(.geo-input__control--disabled){border-color:var(--geo-color-primary-default);box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-primary-default) 12%,transparent)}.geo-input__control--error{border-color:var(--geo-color-error-default)!important}.geo-input__control--error:focus-within{box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-error-default) 12%,transparent)!important}.geo-input__control--disabled{background:var(--geo-color-neutral-100);border-color:var(--geo-color-neutral-300)}.geo-input__field{flex:1 1 auto;min-width:0;height:24px;border:none;outline:none;background:transparent;font-size:14px;line-height:24px;color:var(--geo-color-neutral-900);font-family:inherit}.geo-input__field::placeholder{color:var(--geo-color-neutral-500)}.geo-input__field:disabled{color:var(--geo-color-neutral-disabled-text);cursor:not-allowed}.geo-input__icon{display:inline-flex;flex-shrink:0;font-size:16px;color:var(--geo-color-neutral-500)}.geo-input__clear{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:none;background:transparent;color:var(--geo-color-neutral-400);font-size:14px;cursor:pointer}.geo-input__clear:hover{color:var(--geo-color-neutral-500)}.geo-input__error{margin:0;font-size:14px;line-height:normal;color:var(--geo-color-error-default)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
70
73
  }
71
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoInputComponent, decorators: [{
72
75
  type: Component,
73
- args: [{ selector: 'geo-input', standalone: true, imports: [CommonModule, FormsModule, NzIconModule], encapsulation: ViewEncapsulation.None, host: {
76
+ args: [{ selector: 'geo-input', standalone: true, imports: [FormsModule, NzIconModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
74
77
  class: 'geo-input-host',
75
- '[class.geo-input-host--block]': 'block',
76
- '[class.geo-input-host--error]': 'error',
77
- '[style.width]': 'hostWidth',
78
+ '[class.geo-input-host--block]': 'block()',
79
+ '[class.geo-input-host--error]': 'error()',
80
+ '[style.width]': 'hostWidth()',
78
81
  }, providers: [
79
82
  {
80
83
  provide: NG_VALUE_ACCESSOR,
81
84
  useExisting: forwardRef(() => GeoInputComponent),
82
85
  multi: true,
83
86
  },
84
- ], template: "@if (label) {\n <div class=\"geo-input__label\">\n <span>{{ label }}</span>\n @if (required) {\n <span class=\"geo-input__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<div\n class=\"geo-input__control\"\n [class.geo-input__control--disabled]=\"disabled\"\n [class.geo-input__control--error]=\"error\"\n>\n @if (prefixIcon) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"prefixIcon\" nzTheme=\"outline\"></span>\n }\n\n <input\n class=\"geo-input__field\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.maxlength]=\"maxlength ?? null\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"error && errorMessage ? errorMessageId : null\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (keyup.enter)=\"enterPressed.emit()\"\n />\n\n @if (showClear) {\n <button type=\"button\" class=\"geo-input__clear\" aria-label=\"X\u00F3a n\u1ED9i dung\" (click)=\"onClear()\">\n <span nz-icon nzType=\"close-circle\" nzTheme=\"fill\"></span>\n </button>\n }\n\n @if (suffixIcon) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"suffixIcon\" nzTheme=\"outline\"></span>\n }\n</div>\n\n@if (error && errorMessage) {\n <p class=\"geo-input__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage }}</p>\n}\n", styles: [".geo-input-host{display:inline-flex;flex-direction:column;gap:8px;width:413px;max-width:100%;vertical-align:top}geo-input.geo-input-host.geo-input-host--block,.geo-input-host.geo-input-host--block{display:flex;width:100%;max-width:none}.geo-input__label{display:inline-flex;align-items:flex-start;gap:4px;font-size:14px;line-height:normal;color:var(--geo-color-neutral-900)}.geo-input__required{color:var(--geo-color-error-default)}.geo-input__control{display:flex;align-items:center;gap:10px;min-height:40px;height:40px;padding:8px;border:1px solid var(--geo-color-neutral-300);border-radius:var(--geo-radius);background:transparent;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}.geo-input__control:hover:not(.geo-input__control--disabled){border-color:var(--geo-color-primary-default)}.geo-input__control:focus-within:not(.geo-input__control--disabled){border-color:var(--geo-color-primary-default);box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-primary-default) 12%,transparent)}.geo-input__control--error{border-color:var(--geo-color-error-default)!important}.geo-input__control--error:focus-within{box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-error-default) 12%,transparent)!important}.geo-input__control--disabled{background:var(--geo-color-neutral-100);border-color:var(--geo-color-neutral-300)}.geo-input__field{flex:1 1 auto;min-width:0;height:24px;border:none;outline:none;background:transparent;font-size:14px;line-height:24px;color:var(--geo-color-neutral-900);font-family:inherit}.geo-input__field::placeholder{color:var(--geo-color-neutral-500)}.geo-input__field:disabled{color:var(--geo-color-neutral-disabled-text);cursor:not-allowed}.geo-input__icon{display:inline-flex;flex-shrink:0;font-size:16px;color:var(--geo-color-neutral-500)}.geo-input__clear{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:none;background:transparent;color:var(--geo-color-neutral-400);font-size:14px;cursor:pointer}.geo-input__clear:hover{color:var(--geo-color-neutral-500)}.geo-input__error{margin:0;font-size:14px;line-height:normal;color:var(--geo-color-error-default)}\n"] }]
85
- }], propDecorators: { label: [{
86
- type: Input
87
- }], placeholder: [{
88
- type: Input
89
- }], type: [{
90
- type: Input
91
- }], disabled: [{
92
- type: Input
93
- }], readonly: [{
94
- type: Input
95
- }], required: [{
96
- type: Input
97
- }], error: [{
98
- type: Input
99
- }], errorMessage: [{
100
- type: Input
101
- }], maxlength: [{
102
- type: Input
103
- }], prefixIcon: [{
104
- type: Input
105
- }], suffixIcon: [{
106
- type: Input
107
- }], allowClear: [{
108
- type: Input
109
- }], block: [{
110
- type: Input
111
- }], width: [{
112
- type: Input
113
- }], valueChange: [{
114
- type: Output
115
- }], enterPressed: [{
116
- type: Output
117
- }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1pbnB1dC9nZW8taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWlucHV0L2dlby1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBRWxELElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztBQXlCdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLEdBQWlCLE1BQU0sQ0FBQztJQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2QsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNsQixTQUFTLENBQVU7SUFDbkIsVUFBVSxDQUFVO0lBQ3BCLFVBQVUsQ0FBVTtJQUNwQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxLQUFLLENBQW1CO0lBRXZCLFdBQVcsR0FBRyxJQUFJ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LFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuXG5sZXQgdWlJbnB1dEVycm9ySWQgPSAwO1xuXG5leHBvcnQgdHlwZSBHZW9JbnB1dFR5cGUgPSAndGV4dCcgfCAnbnVtYmVyJyB8ICdwYXNzd29yZCcgfCAnZW1haWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8taW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgTnpJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8taW5wdXQuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdnZW8taW5wdXQtaG9zdCcsXG4gICAgJ1tjbGFzcy5nZW8taW5wdXQtaG9zdC0tYmxvY2tdJzogJ2Jsb2NrJyxcbiAgICAnW2NsYXNzLmdlby1pbnB1dC1ob3N0LS1lcnJvcl0nOiAnZXJyb3InLFxuICAgICdbc3R5bGUud2lkdGhdJzogJ2hvc3RXaWR0aCcsXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2VvSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VvSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIHR5cGU6IEdlb0lucHV0VHlwZSA9ICd0ZXh0JztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3IgPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlID0gJyc7XG4gIEBJbnB1dCgpIG1heGxlbmd0aD86IG51bWJlcjtcbiAgQElucHV0KCkgcHJlZml4SWNvbj86IHN0cmluZztcbiAgQElucHV0KCkgc3VmZml4SWNvbj86IHN0cmluZztcbiAgQElucHV0KCkgYWxsb3dDbGVhciA9IGZhbHNlO1xuICBASW5wdXQoKSBibG9jayA9IGZhbHNlO1xuICBASW5wdXQoKSB3aWR0aD86IG51bWJlciB8IHN0cmluZztcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGVudGVyUHJlc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICByZWFkb25seSBlcnJvck1lc3NhZ2VJZCA9IGBnZW8taW5wdXQtZXJyb3ItJHsrK3VpSW5wdXRFcnJvcklkfWA7XG5cbiAgdmFsdWUgPSAnJztcblxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgZ2V0IGhvc3RXaWR0aCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5ibG9jayB8fCB0aGlzLndpZHRoID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2YgdGhpcy53aWR0aCA9PT0gJ251bWJlcicgPyBgJHt0aGlzLndpZHRofXB4YCA6IHRoaXMud2lkdGg7XG4gIH1cblxuICBnZXQgc2hvd0NsZWFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbG93Q2xlYXIgJiYgIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkgJiYgISF0aGlzLnZhbHVlO1xuICB9XG5cbiAgb25JbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIG9uQ2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5vbklucHV0KCcnKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiIsIkBpZiAobGFiZWwpIHtcbiAgPGRpdiBjbGFzcz1cImdlby1pbnB1dF9fbGFiZWxcIj5cbiAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICBAaWYgKHJlcXVpcmVkKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cImdlby1pbnB1dF9fcmVxdWlyZWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4qPC9zcGFuPlxuICAgIH1cbiAgPC9kaXY+XG59XG5cbjxkaXZcbiAgY2xhc3M9XCJnZW8taW5wdXRfX2NvbnRyb2xcIlxuICBbY2xhc3MuZ2VvLWlucHV0X19jb250cm9sLS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5nZW8taW5wdXRfX2NvbnRyb2wtLWVycm9yXT1cImVycm9yXCJcbj5cbiAgQGlmIChwcmVmaXhJY29uKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJnZW8taW5wdXRfX2ljb25cIiBuei1pY29uIFtuelR5cGVdPVwicHJlZml4SWNvblwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxuICB9XG5cbiAgPGlucHV0XG4gICAgY2xhc3M9XCJnZW8taW5wdXRfX2ZpZWxkXCJcbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoID8/IG51bGxcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvciA/ICd0cnVlJyA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZXJyb3IgJiYgZXJyb3JNZXNzYWdlID8gZXJyb3JNZXNzYWdlSWQgOiBudWxsXCJcbiAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgKGtleXVwLmVudGVyKT1cImVudGVyUHJlc3NlZC5lbWl0KClcIlxuICAvPlxuXG4gIEBpZiAoc2hvd0NsZWFyKSB7XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJnZW8taW5wdXRfX2NsZWFyXCIgYXJpYS1sYWJlbD1cIljDs2EgbuG7mWkgZHVuZ1wiIChjbGljayk9XCJvbkNsZWFyKClcIj5cbiAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwiY2xvc2UtY2lyY2xlXCIgbnpUaGVtZT1cImZpbGxcIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIH1cblxuICBAaWYgKHN1ZmZpeEljb24pIHtcbiAgICA8c3BhbiBjbGFzcz1cImdlby1pbnB1dF9faWNvblwiIG56LWljb24gW256VHlwZV09XCJzdWZmaXhJY29uXCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XG4gIH1cbjwvZGl2PlxuXG5AaWYgKGVycm9yICYmIGVycm9yTWVzc2FnZSkge1xuICA8cCBjbGFzcz1cImdlby1pbnB1dF9fZXJyb3JcIiBbaWRdPVwiZXJyb3JNZXNzYWdlSWRcIiByb2xlPVwiYWxlcnRcIj57eyBlcnJvck1lc3NhZ2UgfX08L3A+XG59XG4iXX0=
87
+ ], template: "@if (label()) {\n <div class=\"geo-input__label\">\n <span>{{ label() }}</span>\n @if (required()) {\n <span class=\"geo-input__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<div\n class=\"geo-input__control\"\n [class.geo-input__control--disabled]=\"isDisabled()\"\n [class.geo-input__control--error]=\"error()\"\n>\n @if (prefixIcon(); as prefix) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"prefix\" nzTheme=\"outline\"></span>\n }\n\n <input\n class=\"geo-input__field\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.maxlength]=\"maxlength() ?? null\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"error() && errorMessage() ? errorMessageId : null\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (keyup.enter)=\"enterPressed.emit()\"\n />\n\n @if (showClear()) {\n <button type=\"button\" class=\"geo-input__clear\" aria-label=\"X\u00F3a n\u1ED9i dung\" (click)=\"onClear()\">\n <span nz-icon nzType=\"close-circle\" nzTheme=\"fill\"></span>\n </button>\n }\n\n @if (suffixIcon(); as suffix) {\n <span class=\"geo-input__icon\" nz-icon [nzType]=\"suffix\" nzTheme=\"outline\"></span>\n }\n</div>\n\n@if (error() && errorMessage()) {\n <p class=\"geo-input__error\" [id]=\"errorMessageId\" role=\"alert\">{{ errorMessage() }}</p>\n}\n", styles: [".geo-input-host{display:inline-flex;flex-direction:column;gap:8px;width:413px;max-width:100%;vertical-align:top}geo-input.geo-input-host.geo-input-host--block,.geo-input-host.geo-input-host--block{display:flex;width:100%;max-width:none}.geo-input__label{display:inline-flex;align-items:flex-start;gap:4px;font-size:14px;line-height:normal;color:var(--geo-color-neutral-900)}.geo-input__required{color:var(--geo-color-error-default)}.geo-input__control{display:flex;align-items:center;gap:10px;min-height:40px;height:40px;padding:8px;border:1px solid var(--geo-color-neutral-300);border-radius:var(--geo-radius);background:transparent;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}.geo-input__control:hover:not(.geo-input__control--disabled){border-color:var(--geo-color-primary-default)}.geo-input__control:focus-within:not(.geo-input__control--disabled){border-color:var(--geo-color-primary-default);box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-primary-default) 12%,transparent)}.geo-input__control--error{border-color:var(--geo-color-error-default)!important}.geo-input__control--error:focus-within{box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-error-default) 12%,transparent)!important}.geo-input__control--disabled{background:var(--geo-color-neutral-100);border-color:var(--geo-color-neutral-300)}.geo-input__field{flex:1 1 auto;min-width:0;height:24px;border:none;outline:none;background:transparent;font-size:14px;line-height:24px;color:var(--geo-color-neutral-900);font-family:inherit}.geo-input__field::placeholder{color:var(--geo-color-neutral-500)}.geo-input__field:disabled{color:var(--geo-color-neutral-disabled-text);cursor:not-allowed}.geo-input__icon{display:inline-flex;flex-shrink:0;font-size:16px;color:var(--geo-color-neutral-500)}.geo-input__clear{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:none;background:transparent;color:var(--geo-color-neutral-400);font-size:14px;cursor:pointer}.geo-input__clear:hover{color:var(--geo-color-neutral-500)}.geo-input__error{margin:0;font-size:14px;line-height:normal;color:var(--geo-color-error-default)}\n"] }]
88
+ }] });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1pbnB1dC9nZW8taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWlucHV0L2dlby1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBRWxELElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztBQTBCdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUNYLEdBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUV4QyxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLFdBQVcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxHQUFHLEtBQUssQ0FBZSxNQUFNLENBQUMsQ0FBQztJQUNuQyxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLFlBQVksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsU0FBUyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDakQsVUFBVSxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDbEQsVUFBVSxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDbEQsVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLEtBQUssR0FBRyxLQUFLLENBQThCLFNBQVMsQ0FBQyxDQUFDO0lBRXRELFdBQVcsR0FBRyxNQUFNLEVBQVUsQ0FBQztJQUMvQixZQUFZLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFFOUIsY0FBYyxHQUFHLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxDQUFDO0lBRS9DLGVBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFFN0QsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUU5QixRQUFRLEdBQTRCLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUNwRCxTQUFTLEdBQWUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0lBRXZDLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxRCxDQUFDLENBQUMsQ0FBQztJQUVNLFNBQVMsR0FBRyxRQUFRLENBQzNCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUNwRixDQUFDO0lBRUYsT0FBTyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUE2QjtRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQTJCO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7d0dBMUVVLGlCQUFpQjs0RkFBakIsaUJBQWlCLGlrRUFSakI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUNoRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDdkNILGs5Q0ErQ0EsNHFFRHpCWSxXQUFXLDhtQkFBRSxZQUFZOzs0RkFtQnhCLGlCQUFpQjtrQkF0QjdCLFNBQVM7K0JBQ0UsV0FBVyxjQUNULElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsaUJBR3JCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osS0FBSyxFQUFFLGdCQUFnQjt3QkFDdkIsK0JBQStCLEVBQUUsU0FBUzt3QkFDMUMsK0JBQStCLEVBQUUsU0FBUzt3QkFDMUMsZUFBZSxFQUFFLGFBQWE7cUJBQy9CLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7NEJBQ2hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE56SWNvbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaWNvbic7XG5cbmxldCB1aUlucHV0RXJyb3JJZCA9IDA7XG5cbmV4cG9ydCB0eXBlIEdlb0lucHV0VHlwZSA9ICd0ZXh0JyB8ICdudW1iZXInIHwgJ3Bhc3N3b3JkJyB8ICdlbWFpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgTnpJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8taW5wdXQuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ2VvLWlucHV0LWhvc3QnLFxuICAgICdbY2xhc3MuZ2VvLWlucHV0LWhvc3QtLWJsb2NrXSc6ICdibG9jaygpJyxcbiAgICAnW2NsYXNzLmdlby1pbnB1dC1ob3N0LS1lcnJvcl0nOiAnZXJyb3IoKScsXG4gICAgJ1tzdHlsZS53aWR0aF0nOiAnaG9zdFdpZHRoKCknLFxuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdlb0lucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEdlb0lucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcmVhZG9ubHkgbGFiZWwgPSBpbnB1dCgnJyk7XG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQoJycpO1xuICByZWFkb25seSB0eXBlID0gaW5wdXQ8R2VvSW5wdXRUeXBlPigndGV4dCcpO1xuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IHJlcXVpcmVkID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBlcnJvciA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgZXJyb3JNZXNzYWdlID0gaW5wdXQoJycpO1xuICByZWFkb25seSBtYXhsZW5ndGggPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHByZWZpeEljb24gPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHN1ZmZpeEljb24gPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGFsbG93Q2xlYXIgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IGJsb2NrID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSB3aWR0aCA9IGlucHV0PG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGVudGVyUHJlc3NlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IGVycm9yTWVzc2FnZUlkID0gYGdlby1pbnB1dC1lcnJvci0keysrdWlJbnB1dEVycm9ySWR9YDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVkRnJvbUN2YSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5kaXNhYmxlZEZyb21DdmEoKSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlID0gc2lnbmFsKCcnKTtcblxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgcmVhZG9ubHkgaG9zdFdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aWR0aCgpO1xuICAgIGlmICh0aGlzLmJsb2NrKCkgfHwgd2lkdGggPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgPyBgJHt3aWR0aH1weGAgOiB3aWR0aDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2hvd0NsZWFyID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5hbGxvd0NsZWFyKCkgJiYgIXRoaXMuaXNEaXNhYmxlZCgpICYmICF0aGlzLnJlYWRvbmx5KCkgJiYgISF0aGlzLnZhbHVlKCksXG4gICk7XG5cbiAgb25JbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIG9uQ2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5vbklucHV0KCcnKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSA9PSBudWxsID8gJycgOiBTdHJpbmcodmFsdWUpKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZEZyb21DdmEuc2V0KGlzRGlzYWJsZWQpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCJAaWYgKGxhYmVsKCkpIHtcbiAgPGRpdiBjbGFzcz1cImdlby1pbnB1dF9fbGFiZWxcIj5cbiAgICA8c3Bhbj57eyBsYWJlbCgpIH19PC9zcGFuPlxuICAgIEBpZiAocmVxdWlyZWQoKSkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJnZW8taW5wdXRfX3JlcXVpcmVkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+Kjwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxufVxuXG48ZGl2XG4gIGNsYXNzPVwiZ2VvLWlucHV0X19jb250cm9sXCJcbiAgW2NsYXNzLmdlby1pbnB1dF9fY29udHJvbC0tZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCJcbiAgW2NsYXNzLmdlby1pbnB1dF9fY29udHJvbC0tZXJyb3JdPVwiZXJyb3IoKVwiXG4+XG4gIEBpZiAocHJlZml4SWNvbigpOyBhcyBwcmVmaXgpIHtcbiAgICA8c3BhbiBjbGFzcz1cImdlby1pbnB1dF9faWNvblwiIG56LWljb24gW256VHlwZV09XCJwcmVmaXhcIiBuelRoZW1lPVwib3V0bGluZVwiPjwvc3Bhbj5cbiAgfVxuXG4gIDxpbnB1dFxuICAgIGNsYXNzPVwiZ2VvLWlucHV0X19maWVsZFwiXG4gICAgW3R5cGVdPVwidHlwZSgpXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGgoKSA/PyBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiZXJyb3IoKSA/ICd0cnVlJyA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZXJyb3IoKSAmJiBlcnJvck1lc3NhZ2UoKSA/IGVycm9yTWVzc2FnZUlkIDogbnVsbFwiXG4gICAgW25nTW9kZWxdPVwidmFsdWUoKVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgKGtleXVwLmVudGVyKT1cImVudGVyUHJlc3NlZC5lbWl0KClcIlxuICAvPlxuXG4gIEBpZiAoc2hvd0NsZWFyKCkpIHtcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImdlby1pbnB1dF9fY2xlYXJcIiBhcmlhLWxhYmVsPVwiWMOzYSBu4buZaSBkdW5nXCIgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiPlxuICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJjbG9zZS1jaXJjbGVcIiBuelRoZW1lPVwiZmlsbFwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuXG4gIEBpZiAoc3VmZml4SWNvbigpOyBhcyBzdWZmaXgpIHtcbiAgICA8c3BhbiBjbGFzcz1cImdlby1pbnB1dF9faWNvblwiIG56LWljb24gW256VHlwZV09XCJzdWZmaXhcIiBuelRoZW1lPVwib3V0bGluZVwiPjwvc3Bhbj5cbiAgfVxuPC9kaXY+XG5cbkBpZiAoZXJyb3IoKSAmJiBlcnJvck1lc3NhZ2UoKSkge1xuICA8cCBjbGFzcz1cImdlby1pbnB1dF9fZXJyb3JcIiBbaWRdPVwiZXJyb3JNZXNzYWdlSWRcIiByb2xlPVwiYWxlcnRcIj57eyBlcnJvck1lc3NhZ2UoKSB9fTwvcD5cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { ChangeDetectionStrategy, Component, input, ViewEncapsulation, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Minimal app footer for the layout shell.
5
+ */
6
+ export class GeoLayoutFooterComponent {
7
+ /** Copyright / status text. Empty = use default. */
8
+ text = input('© VNPT | Hệ thống thông tin đất đai iLIS');
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoLayoutFooterComponent, isStandalone: true, selector: "geo-layout-footer", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-layout-footer-host" }, ngImport: i0, template: "<footer class=\"geo-layout-footer\">\n <div class=\"geo-layout-footer__inner\">\n @if (text()) {\n <p class=\"geo-layout-footer__text\">{{ text() }}</p>\n }\n <ng-content />\n </div>\n</footer>\n", styles: [".geo-layout-footer-host{display:block;flex-shrink:0}.geo-layout-footer{border-top:1px solid var(--geo-color-border-subtle);background:var(--geo-color-surface-elevated)}.geo-layout-footer__inner{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;padding:8px 1.5rem}.geo-layout-footer__text{margin:0;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-regular);line-height:1.4;color:var(--geo-color-neutral-500)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutFooterComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'geo-layout-footer', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
15
+ class: 'geo-layout-footer-host',
16
+ }, template: "<footer class=\"geo-layout-footer\">\n <div class=\"geo-layout-footer__inner\">\n @if (text()) {\n <p class=\"geo-layout-footer__text\">{{ text() }}</p>\n }\n <ng-content />\n </div>\n</footer>\n", styles: [".geo-layout-footer-host{display:block;flex-shrink:0}.geo-layout-footer{border-top:1px solid var(--geo-color-border-subtle);background:var(--geo-color-surface-elevated)}.geo-layout-footer__inner{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;padding:8px 1.5rem}.geo-layout-footer__text{margin:0;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-regular);line-height:1.4;color:var(--geo-color-neutral-500)}\n"] }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWxheW91dC1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWxheW91dC9mb290ZXIvZ2VvLWxheW91dC1mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWxheW91dC9mb290ZXIvZ2VvLWxheW91dC1mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQzs7QUFFdkI7O0dBRUc7QUFZSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLG9EQUFvRDtJQUMzQyxJQUFJLEdBQUcsS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7d0dBRnZELHdCQUF3Qjs0RkFBeEIsd0JBQXdCLGtRQ3JCckMscU5BUUE7OzRGRGFhLHdCQUF3QjtrQkFYcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSx3QkFBd0I7cUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBNaW5pbWFsIGFwcCBmb290ZXIgZm9yIHRoZSBsYXlvdXQgc2hlbGwuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1sYXlvdXQtZm9vdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1sYXlvdXQtZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby1sYXlvdXQtZm9vdGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dlby1sYXlvdXQtZm9vdGVyLWhvc3QnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9MYXlvdXRGb290ZXJDb21wb25lbnQge1xuICAvKiogQ29weXJpZ2h0IC8gc3RhdHVzIHRleHQuIEVtcHR5ID0gdXNlIGRlZmF1bHQuICovXG4gIHJlYWRvbmx5IHRleHQgPSBpbnB1dCgnwqkgVk5QVCB8IEjhu4cgdGjhu5FuZyB0aMO0bmcgdGluIMSR4bqldCDEkWFpIGlMSVMnKTtcbn1cbiIsIjxmb290ZXIgY2xhc3M9XCJnZW8tbGF5b3V0LWZvb3RlclwiPlxuICA8ZGl2IGNsYXNzPVwiZ2VvLWxheW91dC1mb290ZXJfX2lubmVyXCI+XG4gICAgQGlmICh0ZXh0KCkpIHtcbiAgICAgIDxwIGNsYXNzPVwiZ2VvLWxheW91dC1mb290ZXJfX3RleHRcIj57eyB0ZXh0KCkgfX08L3A+XG4gICAgfVxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvZGl2PlxuPC9mb290ZXI+XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** Đánh dấu slot thay thế header actions mặc định của `geo-layout`. */
4
+ export class GeoLayoutActionsDirective {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutActionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: GeoLayoutActionsDirective, isStandalone: true, selector: "[geoLayoutActions]", ngImport: i0 });
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutActionsDirective, decorators: [{
9
+ type: Directive,
10
+ args: [{
11
+ selector: '[geoLayoutActions]',
12
+ standalone: true,
13
+ }]
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWxheW91dC1hY3Rpb25zLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1sYXlvdXQvZ2VvLWxheW91dC1hY3Rpb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyx1RUFBdUU7QUFLdkUsTUFBTSxPQUFPLHlCQUF5Qjt3R0FBekIseUJBQXlCOzRGQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBSnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiDEkMOhbmggZOG6pXUgc2xvdCB0aGF5IHRo4bq/IGhlYWRlciBhY3Rpb25zIG3hurdjIMSR4buLbmggY+G7p2EgYGdlby1sYXlvdXRgLiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2dlb0xheW91dEFjdGlvbnNdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgR2VvTGF5b3V0QWN0aW9uc0RpcmVjdGl2ZSB7fVxuIl19
@@ -0,0 +1,79 @@
1
+ import { ChangeDetectionStrategy, Component, computed, input, model, output, ViewEncapsulation, } from '@angular/core';
2
+ import { GeoLayoutFooterComponent } from './footer/geo-layout-footer.component';
3
+ import { GeoLayoutHeaderComponent } from './header/geo-layout-header.component';
4
+ import { GeoLayoutSidebarComponent } from './sidebar/geo-layout-sidebar.component';
5
+ import { GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, } from './geo-layout.types';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * App shell composing `geo-layout-sidebar` + `geo-layout-header` + content + `geo-layout-footer`.
9
+ *
10
+ * Storybook: **GEO / Layout / Shell** (+ Sidebar, Header, Footer, Header Actions).
11
+ *
12
+ * ```html
13
+ * <geo-layout [menuItems]="menu" [user]="user" [(expanded)]="expanded">
14
+ * <router-outlet />
15
+ * </geo-layout>
16
+ * ```
17
+ */
18
+ export class GeoLayoutComponent {
19
+ menuItems = input([]);
20
+ brandTitle = input('iLIS');
21
+ logoSrc = input('');
22
+ logoAlt = input('Logo');
23
+ sidebarBackgroundSrc = input('');
24
+ breadcrumbs = input([]);
25
+ fallbackBreadcrumb = input('Hệ thống thông tin đất đai - VNPT iLIS');
26
+ expanded = model(true);
27
+ isMobile = input(false);
28
+ mobileMenuOpen = model(false);
29
+ selectedKey = model(null);
30
+ siderWidth = input(280);
31
+ siderCollapsedWidth = input(80);
32
+ showDefaultActions = input(true);
33
+ showFooter = input(true);
34
+ footerText = input('© VNPT | Hệ thống thông tin đất đai iLIS');
35
+ user = input(GEO_LAYOUT_DEFAULT_USER);
36
+ notifications = input(GEO_LAYOUT_DEFAULT_NOTIFICATIONS);
37
+ subsystems = input(GEO_LAYOUT_DEFAULT_SUBSYSTEMS);
38
+ userMenuItems = input(GEO_LAYOUT_DEFAULT_USER_MENU);
39
+ menuSelect = output();
40
+ sidebarToggle = output();
41
+ notificationClick = output();
42
+ subsystemClick = output();
43
+ userMenuClick = output();
44
+ logout = output();
45
+ siderCollapsed = computed(() => this.isMobile() ? false : !this.expanded());
46
+ onToggleSidebar() {
47
+ if (this.isMobile()) {
48
+ this.mobileMenuOpen.update((open) => !open);
49
+ }
50
+ else {
51
+ this.expanded.update((value) => !value);
52
+ }
53
+ this.sidebarToggle.emit();
54
+ }
55
+ closeMobileMenu() {
56
+ this.mobileMenuOpen.set(false);
57
+ }
58
+ onMenuSelect(item) {
59
+ this.menuSelect.emit(item);
60
+ if (this.isMobile() && this.mobileMenuOpen()) {
61
+ this.mobileMenuOpen.set(false);
62
+ }
63
+ }
64
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoLayoutComponent, isStandalone: true, selector: "geo-layout", inputs: { menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null }, brandTitle: { classPropertyName: "brandTitle", publicName: "brandTitle", isSignal: true, isRequired: false, transformFunction: null }, logoSrc: { classPropertyName: "logoSrc", publicName: "logoSrc", isSignal: true, isRequired: false, transformFunction: null }, logoAlt: { classPropertyName: "logoAlt", publicName: "logoAlt", isSignal: true, isRequired: false, transformFunction: null }, sidebarBackgroundSrc: { classPropertyName: "sidebarBackgroundSrc", publicName: "sidebarBackgroundSrc", isSignal: true, isRequired: false, transformFunction: null }, breadcrumbs: { classPropertyName: "breadcrumbs", publicName: "breadcrumbs", isSignal: true, isRequired: false, transformFunction: null }, fallbackBreadcrumb: { classPropertyName: "fallbackBreadcrumb", publicName: "fallbackBreadcrumb", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, mobileMenuOpen: { classPropertyName: "mobileMenuOpen", publicName: "mobileMenuOpen", isSignal: true, isRequired: false, transformFunction: null }, selectedKey: { classPropertyName: "selectedKey", publicName: "selectedKey", isSignal: true, isRequired: false, transformFunction: null }, siderWidth: { classPropertyName: "siderWidth", publicName: "siderWidth", isSignal: true, isRequired: false, transformFunction: null }, siderCollapsedWidth: { classPropertyName: "siderCollapsedWidth", publicName: "siderCollapsedWidth", isSignal: true, isRequired: false, transformFunction: null }, showDefaultActions: { classPropertyName: "showDefaultActions", publicName: "showDefaultActions", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, footerText: { classPropertyName: "footerText", publicName: "footerText", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, notifications: { classPropertyName: "notifications", publicName: "notifications", isSignal: true, isRequired: false, transformFunction: null }, subsystems: { classPropertyName: "subsystems", publicName: "subsystems", isSignal: true, isRequired: false, transformFunction: null }, userMenuItems: { classPropertyName: "userMenuItems", publicName: "userMenuItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange", mobileMenuOpen: "mobileMenuOpenChange", selectedKey: "selectedKeyChange", menuSelect: "menuSelect", sidebarToggle: "sidebarToggle", notificationClick: "notificationClick", subsystemClick: "subsystemClick", userMenuClick: "userMenuClick", logout: "logout" }, host: { properties: { "class.geo-layout-host--mobile": "isMobile()", "class.geo-layout-host--drawer-open": "isMobile() && mobileMenuOpen()" }, classAttribute: "geo-layout-host" }, ngImport: i0, template: "<div\n class=\"geo-layout\"\n [class.geo-layout--mobile]=\"isMobile()\"\n [class.geo-layout--drawer-open]=\"isMobile() && mobileMenuOpen()\"\n [class.geo-layout--collapsed]=\"siderCollapsed()\"\n>\n @if (isMobile() && mobileMenuOpen()) {\n <div\n class=\"geo-layout__backdrop\"\n (click)=\"closeMobileMenu()\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <geo-layout-sidebar\n [menuItems]=\"menuItems()\"\n [brandTitle]=\"brandTitle()\"\n [logoSrc]=\"logoSrc()\"\n [logoAlt]=\"logoAlt()\"\n [sidebarBackgroundSrc]=\"sidebarBackgroundSrc()\"\n [(selectedKey)]=\"selectedKey\"\n [collapsed]=\"siderCollapsed()\"\n [isMobile]=\"isMobile()\"\n [mobileOpen]=\"mobileMenuOpen()\"\n [width]=\"siderWidth()\"\n [collapsedWidth]=\"siderCollapsedWidth()\"\n (menuSelect)=\"onMenuSelect($event)\"\n />\n\n <div class=\"geo-layout__main\">\n <geo-layout-header\n [breadcrumbs]=\"breadcrumbs()\"\n [fallbackBreadcrumb]=\"fallbackBreadcrumb()\"\n [expanded]=\"expanded()\"\n [isMobile]=\"isMobile()\"\n [mobileMenuOpen]=\"mobileMenuOpen()\"\n [showDefaultActions]=\"showDefaultActions()\"\n [user]=\"user()\"\n [notifications]=\"notifications()\"\n [subsystems]=\"subsystems()\"\n [userMenuItems]=\"userMenuItems()\"\n (sidebarToggle)=\"onToggleSidebar()\"\n (notificationClick)=\"notificationClick.emit($event)\"\n (subsystemClick)=\"subsystemClick.emit($event)\"\n (userMenuClick)=\"userMenuClick.emit($event)\"\n (logout)=\"logout.emit()\"\n >\n <ng-content select=\"[geoLayoutActions]\" />\n </geo-layout-header>\n\n <main class=\"geo-layout__content\">\n <ng-content />\n </main>\n\n @if (showFooter()) {\n <geo-layout-footer [text]=\"footerText()\">\n <ng-content select=\"[geoLayoutFooter]\" />\n </geo-layout-footer>\n }\n </div>\n</div>\n", styles: [".geo-layout-host{display:block;height:100%;min-height:100dvh;font-family:var(--geo-font-family);color:var(--geo-color-neutral-900)}.geo-layout{display:flex;height:100%;min-height:inherit;max-height:100dvh;overflow:hidden;background:var(--geo-color-surface-page)}.geo-layout--collapsed{overflow:visible}.geo-layout--collapsed .geo-layout__main{position:relative;z-index:1}.geo-layout__backdrop{position:fixed;inset:0;z-index:1000;background:color-mix(in srgb,var(--geo-color-neutral-900) 40%,transparent)}.geo-layout__main{display:flex;flex:1;flex-direction:column;min-width:0;height:100%;max-height:100dvh;overflow:hidden;background:var(--geo-color-surface-page)}.geo-layout__content{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;background:var(--geo-color-surface-page)}\n"], dependencies: [{ kind: "component", type: GeoLayoutSidebarComponent, selector: "geo-layout-sidebar", inputs: ["menuItems", "brandTitle", "logoSrc", "logoAlt", "sidebarBackgroundSrc", "selectedKey", "collapsed", "isMobile", "mobileOpen", "width", "collapsedWidth"], outputs: ["selectedKeyChange", "menuSelect"] }, { kind: "component", type: GeoLayoutHeaderComponent, selector: "geo-layout-header", inputs: ["breadcrumbs", "fallbackBreadcrumb", "expanded", "isMobile", "mobileMenuOpen", "showDefaultActions", "user", "notifications", "subsystems", "userMenuItems"], outputs: ["sidebarToggle", "notificationClick", "subsystemClick", "userMenuClick", "logout"] }, { kind: "component", type: GeoLayoutFooterComponent, selector: "geo-layout-footer", inputs: ["text"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: 'geo-layout', standalone: true, imports: [
70
+ GeoLayoutSidebarComponent,
71
+ GeoLayoutHeaderComponent,
72
+ GeoLayoutFooterComponent,
73
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
74
+ class: 'geo-layout-host',
75
+ '[class.geo-layout-host--mobile]': 'isMobile()',
76
+ '[class.geo-layout-host--drawer-open]': 'isMobile() && mobileMenuOpen()',
77
+ }, template: "<div\n class=\"geo-layout\"\n [class.geo-layout--mobile]=\"isMobile()\"\n [class.geo-layout--drawer-open]=\"isMobile() && mobileMenuOpen()\"\n [class.geo-layout--collapsed]=\"siderCollapsed()\"\n>\n @if (isMobile() && mobileMenuOpen()) {\n <div\n class=\"geo-layout__backdrop\"\n (click)=\"closeMobileMenu()\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <geo-layout-sidebar\n [menuItems]=\"menuItems()\"\n [brandTitle]=\"brandTitle()\"\n [logoSrc]=\"logoSrc()\"\n [logoAlt]=\"logoAlt()\"\n [sidebarBackgroundSrc]=\"sidebarBackgroundSrc()\"\n [(selectedKey)]=\"selectedKey\"\n [collapsed]=\"siderCollapsed()\"\n [isMobile]=\"isMobile()\"\n [mobileOpen]=\"mobileMenuOpen()\"\n [width]=\"siderWidth()\"\n [collapsedWidth]=\"siderCollapsedWidth()\"\n (menuSelect)=\"onMenuSelect($event)\"\n />\n\n <div class=\"geo-layout__main\">\n <geo-layout-header\n [breadcrumbs]=\"breadcrumbs()\"\n [fallbackBreadcrumb]=\"fallbackBreadcrumb()\"\n [expanded]=\"expanded()\"\n [isMobile]=\"isMobile()\"\n [mobileMenuOpen]=\"mobileMenuOpen()\"\n [showDefaultActions]=\"showDefaultActions()\"\n [user]=\"user()\"\n [notifications]=\"notifications()\"\n [subsystems]=\"subsystems()\"\n [userMenuItems]=\"userMenuItems()\"\n (sidebarToggle)=\"onToggleSidebar()\"\n (notificationClick)=\"notificationClick.emit($event)\"\n (subsystemClick)=\"subsystemClick.emit($event)\"\n (userMenuClick)=\"userMenuClick.emit($event)\"\n (logout)=\"logout.emit()\"\n >\n <ng-content select=\"[geoLayoutActions]\" />\n </geo-layout-header>\n\n <main class=\"geo-layout__content\">\n <ng-content />\n </main>\n\n @if (showFooter()) {\n <geo-layout-footer [text]=\"footerText()\">\n <ng-content select=\"[geoLayoutFooter]\" />\n </geo-layout-footer>\n }\n </div>\n</div>\n", styles: [".geo-layout-host{display:block;height:100%;min-height:100dvh;font-family:var(--geo-font-family);color:var(--geo-color-neutral-900)}.geo-layout{display:flex;height:100%;min-height:inherit;max-height:100dvh;overflow:hidden;background:var(--geo-color-surface-page)}.geo-layout--collapsed{overflow:visible}.geo-layout--collapsed .geo-layout__main{position:relative;z-index:1}.geo-layout__backdrop{position:fixed;inset:0;z-index:1000;background:color-mix(in srgb,var(--geo-color-neutral-900) 40%,transparent)}.geo-layout__main{display:flex;flex:1;flex-direction:column;min-width:0;height:100%;max-height:100dvh;overflow:hidden;background:var(--geo-color-surface-page)}.geo-layout__content{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;background:var(--geo-color-surface-page)}\n"] }]
78
+ }] });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tbGF5b3V0L2dlby1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWxheW91dC9nZW8tbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLDRCQUE0QixHQU83QixNQUFNLG9CQUFvQixDQUFDOztBQUU1Qjs7Ozs7Ozs7OztHQVVHO0FBbUJILE1BQU0sT0FBTyxrQkFBa0I7SUFDcEIsU0FBUyxHQUFHLEtBQUssQ0FBc0IsRUFBRSxDQUFDLENBQUM7SUFDM0MsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEIsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFdBQVcsR0FBRyxLQUFLLENBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLGtCQUFr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QUFnQztxQkFDekUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBvdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdlb0JyZWFkY3J1bWJJdGVtIH0gZnJvbSAnLi4vZ2VvLWJyZWFkY3J1bWIvZ2VvLWJyZWFkY3J1bWIudHlwZXMnO1xuaW1wb3J0IHsgR2VvTGF5b3V0Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9mb290ZXIvZ2VvLWxheW91dC1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdlb0xheW91dEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL2dlby1sYXlvdXQtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9MYXlvdXRTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL2dlby1sYXlvdXQtc2lkZWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgR0VPX0xBWU9VVF9ERUZBVUxUX05PVElGSUNBVElPTlMsXG4gIEdFT19MQVlPVVRfREVGQVVMVF9TVUJTWVNURU1TLFxuICBHRU9fTEFZT1VUX0RFRkFVTFRfVVNFUixcbiAgR0VPX0xBWU9VVF9ERUZBVUxUX1VTRVJfTUVOVSxcbiAgR2VvTGF5b3V0TWVudUl0ZW0sXG4gIEdlb0xheW91dE5vdGlmaWNhdGlvbkl0ZW0sXG4gIEdlb0xheW91dFNpZGVyV2lkdGgsXG4gIEdlb0xheW91dFN1YnN5c3RlbUl0ZW0sXG4gIEdlb0xheW91dFVzZXJJbmZvLFxuICBHZW9MYXlvdXRVc2VyTWVudUl0ZW0sXG59IGZyb20gJy4vZ2VvLWxheW91dC50eXBlcyc7XG5cbi8qKlxuICogQXBwIHNoZWxsIGNvbXBvc2luZyBgZ2VvLWxheW91dC1zaWRlYmFyYCArIGBnZW8tbGF5b3V0LWhlYWRlcmAgKyBjb250ZW50ICsgYGdlby1sYXlvdXQtZm9vdGVyYC5cbiAqXG4gKiBTdG9yeWJvb2s6ICoqR0VPIC8gTGF5b3V0IC8gU2hlbGwqKiAoKyBTaWRlYmFyLCBIZWFkZXIsIEZvb3RlciwgSGVhZGVyIEFjdGlvbnMpLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxnZW8tbGF5b3V0IFttZW51SXRlbXNdPVwibWVudVwiIFt1c2VyXT1cInVzZXJcIiBbKGV4cGFuZGVkKV09XCJleHBhbmRlZFwiPlxuICogICA8cm91dGVyLW91dGxldCAvPlxuICogPC9nZW8tbGF5b3V0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1sYXlvdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgR2VvTGF5b3V0U2lkZWJhckNvbXBvbmVudCxcbiAgICBHZW9MYXlvdXRIZWFkZXJDb21wb25lbnQsXG4gICAgR2VvTGF5b3V0Rm9vdGVyQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tbGF5b3V0LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dlby1sYXlvdXQtaG9zdCcsXG4gICAgJ1tjbGFzcy5nZW8tbGF5b3V0LWhvc3QtLW1vYmlsZV0nOiAnaXNNb2JpbGUoKScsXG4gICAgJ1tjbGFzcy5nZW8tbGF5b3V0LWhvc3QtLWRyYXdlci1vcGVuXSc6ICdpc01vYmlsZSgpICYmIG1vYmlsZU1lbnVPcGVuKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9MYXlvdXRDb21wb25lbnQge1xuICByZWFkb25seSBtZW51SXRlbXMgPSBpbnB1dDxHZW9MYXlvdXRNZW51SXRlbVtdPihbXSk7XG4gIHJlYWRvbmx5IGJyYW5kVGl0bGUgPSBpbnB1dCgnaUxJUycpO1xuICByZWFkb25seSBsb2dvU3JjID0gaW5wdXQoJycpO1xuICByZWFkb25seSBsb2dvQWx0ID0gaW5wdXQoJ0xvZ28nKTtcbiAgcmVhZG9ubHkgc2lkZWJhckJhY2tncm91bmRTcmMgPSBpbnB1dCgnJyk7XG4gIHJlYWRvbmx5IGJyZWFkY3J1bWJzID0gaW5wdXQ8R2VvQnJlYWRjcnVtYkl0ZW1bXT4oW10pO1xuICByZWFkb25seSBmYWxsYmFja0JyZWFkY3J1bWIgPSBpbnB1dChcbiAgICAnSOG7hyB0aOG7kW5nIHRow7RuZyB0aW4gxJHhuqV0IMSRYWkgLSBWTlBUIGlMSVMnXG4gICk7XG5cbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSBtb2RlbCh0cnVlKTtcbiAgcmVhZG9ubHkgaXNNb2JpbGUgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vYmlsZU1lbnVPcGVuID0gbW9kZWwoZmFsc2UpO1xuICByZWFkb25seSBzZWxlY3RlZEtleSA9IG1vZGVsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IHNpZGVyV2lkdGggPSBpbnB1dDxHZW9MYXlvdXRTaWRlcldpZHRoPigyODApO1xuICByZWFkb25seSBzaWRlckNvbGxhcHNlZFdpZHRoID0gaW5wdXQ8R2VvTGF5b3V0U2lkZXJXaWR0aD4oODApO1xuXG4gIHJlYWRvbmx5IHNob3dEZWZhdWx0QWN0aW9ucyA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBzaG93Rm9vdGVyID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IGZvb3RlclRleHQgPSBpbnB1dCgnwqkgVk5QVCB8IEjhu4cgdGjhu5FuZyB0aMO0bmcgdGluIMSR4bqldCDEkWFpIGlMSVMnKTtcblxuICByZWFkb25seSB1c2VyID0gaW5wdXQ8R2VvTGF5b3V0VXNlckluZm8+KEdFT19MQVlPVVRfREVGQVVMVF9VU0VSKTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9ucyA9IGlucHV0PEdlb0xheW91dE5vdGlmaWNhdGlvbkl0ZW1bXT4oXG4gICAgR0VPX0xBWU9VVF9ERUZBVUxUX05PVElGSUNBVElPTlNcbiAgKTtcbiAgcmVhZG9ubHkgc3Vic3lzdGVtcyA9IGlucHV0PEdlb0xheW91dFN1YnN5c3RlbUl0ZW1bXT4oXG4gICAgR0VPX0xBWU9VVF9ERUZBVUxUX1NVQlNZU1RFTVNcbiAgKTtcbiAgcmVhZG9ubHkgdXNlck1lbnVJdGVtcyA9IGlucHV0PEdlb0xheW91dFVzZXJNZW51SXRlbVtdPihcbiAgICBHRU9fTEFZT1VUX0RFRkFVTFRfVVNFUl9NRU5VXG4gICk7XG5cbiAgcmVhZG9ubHkgbWVudVNlbGVjdCA9IG91dHB1dDxHZW9MYXlvdXRNZW51SXRlbT4oKTtcbiAgcmVhZG9ubHkgc2lkZWJhclRvZ2dsZSA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBub3RpZmljYXRpb25DbGljayA9IG91dHB1dDxHZW9MYXlvdXROb3RpZmljYXRpb25JdGVtPigpO1xuICByZWFkb25seSBzdWJzeXN0ZW1DbGljayA9IG91dHB1dDxHZW9MYXlvdXRTdWJzeXN0ZW1JdGVtPigpO1xuICByZWFkb25seSB1c2VyTWVudUNsaWNrID0gb3V0cHV0PEdlb0xheW91dFVzZXJNZW51SXRlbT4oKTtcbiAgcmVhZG9ubHkgbG9nb3V0ID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgc2lkZXJDb2xsYXBzZWQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNNb2JpbGUoKSA/IGZhbHNlIDogIXRoaXMuZXhwYW5kZWQoKVxuICApO1xuXG4gIG9uVG9nZ2xlU2lkZWJhcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc01vYmlsZSgpKSB7XG4gICAgICB0aGlzLm1vYmlsZU1lbnVPcGVuLnVwZGF0ZSgob3BlbikgPT4gIW9wZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV4cGFuZGVkLnVwZGF0ZSgodmFsdWUpID0+ICF2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuc2lkZWJhclRvZ2dsZS5lbWl0KCk7XG4gIH1cblxuICBjbG9zZU1vYmlsZU1lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5tb2JpbGVNZW51T3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgb25NZW51U2VsZWN0KGl0ZW06IEdlb0xheW91dE1lbnVJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5tZW51U2VsZWN0LmVtaXQoaXRlbSk7XG4gICAgaWYgKHRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLm1vYmlsZU1lbnVPcGVuKCkpIHtcbiAgICAgIHRoaXMubW9iaWxlTWVudU9wZW4uc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJnZW8tbGF5b3V0XCJcbiAgW2NsYXNzLmdlby1sYXlvdXQtLW1vYmlsZV09XCJpc01vYmlsZSgpXCJcbiAgW2NsYXNzLmdlby1sYXlvdXQtLWRyYXdlci1vcGVuXT1cImlzTW9iaWxlKCkgJiYgbW9iaWxlTWVudU9wZW4oKVwiXG4gIFtjbGFzcy5nZW8tbGF5b3V0LS1jb2xsYXBzZWRdPVwic2lkZXJDb2xsYXBzZWQoKVwiXG4+XG4gIEBpZiAoaXNNb2JpbGUoKSAmJiBtb2JpbGVNZW51T3BlbigpKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJnZW8tbGF5b3V0X19iYWNrZHJvcFwiXG4gICAgICAoY2xpY2spPVwiY2xvc2VNb2JpbGVNZW51KClcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+PC9kaXY+XG4gIH1cblxuICA8Z2VvLWxheW91dC1zaWRlYmFyXG4gICAgW21lbnVJdGVtc109XCJtZW51SXRlbXMoKVwiXG4gICAgW2JyYW5kVGl0bGVdPVwiYnJhbmRUaXRsZSgpXCJcbiAgICBbbG9nb1NyY109XCJsb2dvU3JjKClcIlxuICAgIFtsb2dvQWx0XT1cImxvZ29BbHQoKVwiXG4gICAgW3NpZGViYXJCYWNrZ3JvdW5kU3JjXT1cInNpZGViYXJCYWNrZ3JvdW5kU3JjKClcIlxuICAgIFsoc2VsZWN0ZWRLZXkpXT1cInNlbGVjdGVkS2V5XCJcbiAgICBbY29sbGFwc2VkXT1cInNpZGVyQ29sbGFwc2VkKClcIlxuICAgIFtpc01vYmlsZV09XCJpc01vYmlsZSgpXCJcbiAgICBbbW9iaWxlT3Blbl09XCJtb2JpbGVNZW51T3BlbigpXCJcbiAgICBbd2lkdGhdPVwic2lkZXJXaWR0aCgpXCJcbiAgICBbY29sbGFwc2VkV2lkdGhdPVwic2lkZXJDb2xsYXBzZWRXaWR0aCgpXCJcbiAgICAobWVudVNlbGVjdCk9XCJvbk1lbnVTZWxlY3QoJGV2ZW50KVwiXG4gIC8+XG5cbiAgPGRpdiBjbGFzcz1cImdlby1sYXlvdXRfX21haW5cIj5cbiAgICA8Z2VvLWxheW91dC1oZWFkZXJcbiAgICAgIFticmVhZGNydW1ic109XCJicmVhZGNydW1icygpXCJcbiAgICAgIFtmYWxsYmFja0JyZWFkY3J1bWJdPVwiZmFsbGJhY2tCcmVhZGNydW1iKClcIlxuICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkKClcIlxuICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlKClcIlxuICAgICAgW21vYmlsZU1lbnVPcGVuXT1cIm1vYmlsZU1lbnVPcGVuKClcIlxuICAgICAgW3Nob3dEZWZhdWx0QWN0aW9uc109XCJzaG93RGVmYXVsdEFjdGlvbnMoKVwiXG4gICAgICBbdXNlcl09XCJ1c2VyKClcIlxuICAgICAgW25vdGlmaWNhdGlvbnNdPVwibm90aWZpY2F0aW9ucygpXCJcbiAgICAgIFtzdWJzeXN0ZW1zXT1cInN1YnN5c3RlbXMoKVwiXG4gICAgICBbdXNlck1lbnVJdGVtc109XCJ1c2VyTWVudUl0ZW1zKClcIlxuICAgICAgKHNpZGViYXJUb2dnbGUpPVwib25Ub2dnbGVTaWRlYmFyKClcIlxuICAgICAgKG5vdGlmaWNhdGlvbkNsaWNrKT1cIm5vdGlmaWNhdGlvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAoc3Vic3lzdGVtQ2xpY2spPVwic3Vic3lzdGVtQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICh1c2VyTWVudUNsaWNrKT1cInVzZXJNZW51Q2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgIChsb2dvdXQpPVwibG9nb3V0LmVtaXQoKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2dlb0xheW91dEFjdGlvbnNdXCIgLz5cbiAgICA8L2dlby1sYXlvdXQtaGVhZGVyPlxuXG4gICAgPG1haW4gY2xhc3M9XCJnZW8tbGF5b3V0X19jb250ZW50XCI+XG4gICAgICA8bmctY29udGVudCAvPlxuICAgIDwvbWFpbj5cblxuICAgIEBpZiAoc2hvd0Zvb3RlcigpKSB7XG4gICAgICA8Z2VvLWxheW91dC1mb290ZXIgW3RleHRdPVwiZm9vdGVyVGV4dCgpXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltnZW9MYXlvdXRGb290ZXJdXCIgLz5cbiAgICAgIDwvZ2VvLWxheW91dC1mb290ZXI+XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,42 @@
1
+ export const GEO_LAYOUT_DEFAULT_USER = {
2
+ name: 'vnpt',
3
+ email: 'vnpt@vnpt.vn',
4
+ };
5
+ export const GEO_LAYOUT_DEFAULT_NOTIFICATIONS = [
6
+ {
7
+ id: '1',
8
+ message: 'Hồ sơ quy hoạch phường 1 đã được phê duyệt.',
9
+ time: '5 phút trước',
10
+ read: false,
11
+ icon: 'check-circle',
12
+ },
13
+ {
14
+ id: '2',
15
+ message: 'Có 12 yêu cầu tra cứu thửa mới trong ngày.',
16
+ time: '2 giờ trước',
17
+ read: false,
18
+ icon: 'eye',
19
+ },
20
+ {
21
+ id: '3',
22
+ message: 'Đồng bộ danh mục đơn vị hành chính hoàn tất.',
23
+ time: 'Hôm qua',
24
+ read: true,
25
+ icon: 'sync',
26
+ },
27
+ ];
28
+ export const GEO_LAYOUT_DEFAULT_SUBSYSTEMS = [
29
+ { id: '1', initials: 'TC', label: 'Tra cứu QH' },
30
+ { id: '2', initials: 'ĐC', label: 'Địa chính' },
31
+ { id: '3', initials: 'BĐ', label: 'Bản đồ' },
32
+ { id: '4', initials: 'TK', label: 'Thống kê' },
33
+ { id: '5', initials: 'PA', label: 'Phản ánh' },
34
+ { id: '6', initials: 'QL', label: 'Quản trị' },
35
+ ];
36
+ export const GEO_LAYOUT_DEFAULT_USER_MENU = [
37
+ { key: 'account', label: 'Tài khoản', icon: 'safety-certificate' },
38
+ { key: 'password', label: 'Đổi mật khẩu', icon: 'lock' },
39
+ { key: 'notify-settings', label: 'Cài đặt thông báo', icon: 'bell' },
40
+ { key: 'logout', label: 'Đăng xuất', icon: 'logout', danger: true },
41
+ ];
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWxheW91dC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1sYXlvdXQvZ2VvLWxheW91dC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4Q0EsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXNCO0lBQ3hELElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLGNBQWM7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFnQztJQUMzRTtRQUNFLEVBQUUsRUFBRSxHQUFHO1FBQ1AsT0FBTyxFQUFFLDZDQUE2QztRQUN0RCxJQUFJLEVBQUUsY0FBYztRQUNwQixJQUFJLEVBQUUsS0FBSztRQUNYLElBQUksRUFBRSxjQUFjO0tBQ3JCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsR0FBRztRQUNQLE9BQU8sRUFBRSw0Q0FBNEM7UUFDckQsSUFBSSxFQUFFLGFBQWE7UUFDbkIsSUFBSSxFQUFFLEtBQUs7UUFDWCxJQUFJLEVBQUUsS0FBSztLQUNaO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsR0FBRztRQUNQLE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsSUFBSSxFQUFFLFNBQVM7UUFDZixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxNQUFNO0tBQ2I7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQTZCO0lBQ3JFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7SUFDaEQsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtJQUMvQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQzVDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7SUFDOUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtJQUM5QyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO0NBQy9DLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBNEI7SUFDbkUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO0lBQ2xFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDeEQsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDcEUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0NBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogTWVudSBpdGVtIGZvciBgZ2VvLWxheW91dGAgc2lkZWJhciAocmVjdXJzaXZlKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VvTGF5b3V0TWVudUl0ZW0ge1xuICAvKiogU3RhYmxlIGlkIHVzZWQgZm9yIHNlbGVjdGlvbiAvIG9wZW4gc3RhdGUuICovXG4gIGtleTogc3RyaW5nO1xuICAvKiogRGlzcGxheSBsYWJlbC4gKi9cbiAgdGl0bGU6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGBnZW8taWNvbmAgLyBBbnQgRGVzaWduIGljb24gdHlwZS4gKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHJvdXRlIC8gaHJlZiBoaW50IGZvciBjb25zdW1lcnMgKFN0b3J5Ym9vayBjbGlja3MgdXNlIGBtZW51U2VsZWN0YCkuICovXG4gIGxpbms/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogR2VvTGF5b3V0TWVudUl0ZW1bXTtcbn1cblxuZXhwb3J0IHR5cGUgR2VvTGF5b3V0U2lkZXJXaWR0aCA9IG51bWJlciB8IHN0cmluZztcblxuLyoqIFVzZXIgc2hvd24gaW4gdGhlIGhlYWRlciBjaGlwIC8gYWNjb3VudCBwb3BvdmVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW9MYXlvdXRVc2VySW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBhdmF0YXIgVVJMOyBpbml0aWFscyB1c2VkIHdoZW4gZW1wdHkuICovXG4gIGF2YXRhclVybD86IHN0cmluZztcbiAgcm9sZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW9MYXlvdXROb3RpZmljYXRpb25JdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0aW1lOiBzdHJpbmc7XG4gIHJlYWQ/OiBib29sZWFuO1xuICBpY29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlb0xheW91dFN1YnN5c3RlbUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpbml0aWFsczogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VvTGF5b3V0VXNlck1lbnVJdGVtIHtcbiAga2V5OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgZGFuZ2VyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IEdFT19MQVlPVVRfREVGQVVMVF9VU0VSOiBHZW9MYXlvdXRVc2VySW5mbyA9IHtcbiAgbmFtZTogJ3ZucHQnLFxuICBlbWFpbDogJ3ZucHRAdm5wdC52bicsXG59O1xuXG5leHBvcnQgY29uc3QgR0VPX0xBWU9VVF9ERUZBVUxUX05PVElGSUNBVElPTlM6IEdlb0xheW91dE5vdGlmaWNhdGlvbkl0ZW1bXSA9IFtcbiAge1xuICAgIGlkOiAnMScsXG4gICAgbWVzc2FnZTogJ0jhu5Mgc8ahIHF1eSBob+G6oWNoIHBoxrDhu51uZyAxIMSRw6MgxJHGsOG7o2MgcGjDqiBkdXnhu4d0LicsXG4gICAgdGltZTogJzUgcGjDunQgdHLGsOG7m2MnLFxuICAgIHJlYWQ6IGZhbHNlLFxuICAgIGljb246ICdjaGVjay1jaXJjbGUnLFxuICB9LFxuICB7XG4gICAgaWQ6ICcyJyxcbiAgICBtZXNzYWdlOiAnQ8OzIDEyIHnDqnUgY+G6p3UgdHJhIGPhu6l1IHRo4butYSBt4bubaSB0cm9uZyBuZ8OgeS4nLFxuICAgIHRpbWU6ICcyIGdp4budIHRyxrDhu5tjJyxcbiAgICByZWFkOiBmYWxzZSxcbiAgICBpY29uOiAnZXllJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnMycsXG4gICAgbWVzc2FnZTogJ8SQ4buTbmcgYuG7mSBkYW5oIG3hu6VjIMSRxqFuIHbhu4sgaMOgbmggY2jDrW5oIGhvw6BuIHThuqV0LicsXG4gICAgdGltZTogJ0jDtG0gcXVhJyxcbiAgICByZWFkOiB0cnVlLFxuICAgIGljb246ICdzeW5jJyxcbiAgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBHRU9fTEFZT1VUX0RFRkFVTFRfU1VCU1lTVEVNUzogR2VvTGF5b3V0U3Vic3lzdGVtSXRlbVtdID0gW1xuICB7IGlkOiAnMScsIGluaXRpYWxzOiAnVEMnLCBsYWJlbDogJ1RyYSBj4bupdSBRSCcgfSxcbiAgeyBpZDogJzInLCBpbml0aWFsczogJ8SQQycsIGxhYmVsOiAnxJDhu4thIGNow61uaCcgfSxcbiAgeyBpZDogJzMnLCBpbml0aWFsczogJ0LEkCcsIGxhYmVsOiAnQuG6o24gxJHhu5MnIH0sXG4gIHsgaWQ6ICc0JywgaW5pdGlhbHM6ICdUSycsIGxhYmVsOiAnVGjhu5FuZyBrw6onIH0sXG4gIHsgaWQ6ICc1JywgaW5pdGlhbHM6ICdQQScsIGxhYmVsOiAnUGjhuqNuIMOhbmgnIH0sXG4gIHsgaWQ6ICc2JywgaW5pdGlhbHM6ICdRTCcsIGxhYmVsOiAnUXXhuqNuIHRy4buLJyB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IEdFT19MQVlPVVRfREVGQVVMVF9VU0VSX01FTlU6IEdlb0xheW91dFVzZXJNZW51SXRlbVtdID0gW1xuICB7IGtleTogJ2FjY291bnQnLCBsYWJlbDogJ1TDoGkga2hv4bqjbicsIGljb246ICdzYWZldHktY2VydGlmaWNhdGUnIH0sXG4gIHsga2V5OiAncGFzc3dvcmQnLCBsYWJlbDogJ8SQ4buVaSBt4bqtdCBraOG6qXUnLCBpY29uOiAnbG9jaycgfSxcbiAgeyBrZXk6ICdub3RpZnktc2V0dGluZ3MnLCBsYWJlbDogJ0PDoGkgxJHhurd0IHRow7RuZyBiw6FvJywgaWNvbjogJ2JlbGwnIH0sXG4gIHsga2V5OiAnbG9nb3V0JywgbGFiZWw6ICfEkMSDbmcgeHXhuqV0JywgaWNvbjogJ2xvZ291dCcsIGRhbmdlcjogdHJ1ZSB9LFxuXTtcbiJdfQ==
@@ -0,0 +1,60 @@
1
+ import { ChangeDetectionStrategy, Component, computed, contentChild, input, output, ViewEncapsulation, } from '@angular/core';
2
+ import { GeoBreadcrumbComponent } from '../../geo-breadcrumb/geo-breadcrumb.component';
3
+ import { GeoIconComponent } from '../../geo-icon/geo-icon.component';
4
+ import { GeoLayoutActionsDirective } from '../geo-layout-actions.directive';
5
+ import { GeoLayoutHeaderActionsComponent } from '../header-actions/geo-layout-header-actions.component';
6
+ import { GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, } from '../geo-layout.types';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Top bar: sidebar toggle + breadcrumb + header actions.
10
+ */
11
+ export class GeoLayoutHeaderComponent {
12
+ breadcrumbs = input([]);
13
+ fallbackBreadcrumb = input('Hệ thống thông tin đất đai - VNPT iLIS');
14
+ expanded = input(true);
15
+ isMobile = input(false);
16
+ mobileMenuOpen = input(false);
17
+ showDefaultActions = input(true);
18
+ user = input(GEO_LAYOUT_DEFAULT_USER);
19
+ notifications = input(GEO_LAYOUT_DEFAULT_NOTIFICATIONS);
20
+ subsystems = input(GEO_LAYOUT_DEFAULT_SUBSYSTEMS);
21
+ userMenuItems = input(GEO_LAYOUT_DEFAULT_USER_MENU);
22
+ sidebarToggle = output();
23
+ notificationClick = output();
24
+ subsystemClick = output();
25
+ userMenuClick = output();
26
+ logout = output();
27
+ projectedActions = contentChild(GeoLayoutActionsDirective);
28
+ hasProjectedActions = computed(() => !!this.projectedActions());
29
+ showBuiltInActions = computed(() => this.showDefaultActions() && !this.hasProjectedActions());
30
+ toggleIcon = computed(() => this.isMobile()
31
+ ? this.mobileMenuOpen()
32
+ ? 'menu-fold'
33
+ : 'menu-unfold'
34
+ : this.expanded()
35
+ ? 'menu-fold'
36
+ : 'menu-unfold');
37
+ toggleAriaLabel = computed(() => {
38
+ if (this.isMobile()) {
39
+ return this.mobileMenuOpen() ? 'Đóng menu' : 'Mở menu';
40
+ }
41
+ return this.expanded() ? 'Thu gọn menu' : 'Mở rộng menu';
42
+ });
43
+ onToggle() {
44
+ this.sidebarToggle.emit();
45
+ }
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoLayoutHeaderComponent, isStandalone: true, selector: "geo-layout-header", inputs: { breadcrumbs: { classPropertyName: "breadcrumbs", publicName: "breadcrumbs", isSignal: true, isRequired: false, transformFunction: null }, fallbackBreadcrumb: { classPropertyName: "fallbackBreadcrumb", publicName: "fallbackBreadcrumb", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, mobileMenuOpen: { classPropertyName: "mobileMenuOpen", publicName: "mobileMenuOpen", isSignal: true, isRequired: false, transformFunction: null }, showDefaultActions: { classPropertyName: "showDefaultActions", publicName: "showDefaultActions", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, notifications: { classPropertyName: "notifications", publicName: "notifications", isSignal: true, isRequired: false, transformFunction: null }, subsystems: { classPropertyName: "subsystems", publicName: "subsystems", isSignal: true, isRequired: false, transformFunction: null }, userMenuItems: { classPropertyName: "userMenuItems", publicName: "userMenuItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sidebarToggle: "sidebarToggle", notificationClick: "notificationClick", subsystemClick: "subsystemClick", userMenuClick: "userMenuClick", logout: "logout" }, host: { properties: { "class.geo-layout-header-host--mobile": "isMobile()" }, classAttribute: "geo-layout-header-host" }, queries: [{ propertyName: "projectedActions", first: true, predicate: GeoLayoutActionsDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<header\n class=\"geo-layout-header\"\n [class.geo-layout-header--mobile]=\"isMobile()\"\n>\n <div class=\"geo-layout-header__inner\">\n <div class=\"geo-layout-header__start\">\n <button\n type=\"button\"\n class=\"geo-layout-header__toggle\"\n [attr.aria-label]=\"toggleAriaLabel()\"\n [attr.aria-expanded]=\"isMobile() ? mobileMenuOpen() : expanded()\"\n (click)=\"onToggle()\"\n >\n <geo-icon [type]=\"toggleIcon()\" size=\"lg\" />\n </button>\n\n <div class=\"geo-layout-header__breadcrumb\">\n @if (breadcrumbs().length) {\n <geo-breadcrumb [items]=\"breadcrumbs()\" />\n } @else {\n <span class=\"geo-layout-header__breadcrumb-fallback\">{{\n fallbackBreadcrumb()\n }}</span>\n }\n </div>\n </div>\n\n <div class=\"geo-layout-header__actions\">\n <ng-content select=\"[geoLayoutActions]\" />\n @if (showBuiltInActions()) {\n <geo-layout-header-actions\n [user]=\"user()\"\n [notifications]=\"notifications()\"\n [subsystems]=\"subsystems()\"\n [userMenuItems]=\"userMenuItems()\"\n [compact]=\"isMobile()\"\n (notificationClick)=\"notificationClick.emit($event)\"\n (subsystemClick)=\"subsystemClick.emit($event)\"\n (userMenuClick)=\"userMenuClick.emit($event)\"\n (logout)=\"logout.emit()\"\n />\n }\n </div>\n </div>\n</header>\n", styles: [".geo-layout-header-host{display:block;flex-shrink:0;z-index:100}.geo-layout-header{display:flex;flex-direction:column;justify-content:center;min-height:68px;padding-inline:1.25rem 1.5rem;background:var(--geo-color-surface-header);border-bottom:1px solid var(--geo-color-border-subtle);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.geo-layout-header--mobile{padding-inline:.75rem}.geo-layout-header--mobile .geo-layout-header__breadcrumb{display:none}.geo-layout-header--mobile .geo-layout-header__toggle{width:2.5rem;height:2.5rem}.geo-layout-header--mobile .geo-layout-header__actions{gap:.5rem}.geo-layout-header__inner{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%}.geo-layout-header__start{display:flex;flex:1;align-items:center;gap:10px;min-width:0}.geo-layout-header__toggle{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--geo-radius-md);background:transparent;color:var(--geo-color-neutral-700);cursor:pointer;transition:background-color .15s ease,color .15s ease}.geo-layout-header__toggle:hover{background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-layout-header__toggle:active{transform:scale(.98)}.geo-layout-header__breadcrumb{min-width:0}.geo-layout-header__breadcrumb-fallback{display:block;overflow:hidden;font-size:var(--geo-font-size-h4);font-weight:var(--geo-font-weight-semibold);line-height:1.375;color:var(--geo-color-neutral-800);text-overflow:ellipsis;white-space:nowrap}.geo-layout-header__actions{display:flex;flex-shrink:0;align-items:center;gap:.5rem}@media (prefers-reduced-transparency: reduce){.geo-layout-header{background:var(--geo-color-neutral-white);backdrop-filter:none;-webkit-backdrop-filter:none}}@media (prefers-reduced-motion: reduce){.geo-layout-header__toggle{transition:none}}\n"], dependencies: [{ kind: "component", type: GeoBreadcrumbComponent, selector: "geo-breadcrumb", inputs: ["items"] }, { kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "component", type: GeoLayoutHeaderActionsComponent, selector: "geo-layout-header-actions", inputs: ["user", "notifications", "subsystems", "userMenuItems", "compact"], outputs: ["notificationClick", "subsystemClick", "userMenuClick", "logout"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutHeaderComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'geo-layout-header', standalone: true, imports: [
52
+ GeoBreadcrumbComponent,
53
+ GeoIconComponent,
54
+ GeoLayoutHeaderActionsComponent,
55
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
56
+ class: 'geo-layout-header-host',
57
+ '[class.geo-layout-header-host--mobile]': 'isMobile()',
58
+ }, template: "<header\n class=\"geo-layout-header\"\n [class.geo-layout-header--mobile]=\"isMobile()\"\n>\n <div class=\"geo-layout-header__inner\">\n <div class=\"geo-layout-header__start\">\n <button\n type=\"button\"\n class=\"geo-layout-header__toggle\"\n [attr.aria-label]=\"toggleAriaLabel()\"\n [attr.aria-expanded]=\"isMobile() ? mobileMenuOpen() : expanded()\"\n (click)=\"onToggle()\"\n >\n <geo-icon [type]=\"toggleIcon()\" size=\"lg\" />\n </button>\n\n <div class=\"geo-layout-header__breadcrumb\">\n @if (breadcrumbs().length) {\n <geo-breadcrumb [items]=\"breadcrumbs()\" />\n } @else {\n <span class=\"geo-layout-header__breadcrumb-fallback\">{{\n fallbackBreadcrumb()\n }}</span>\n }\n </div>\n </div>\n\n <div class=\"geo-layout-header__actions\">\n <ng-content select=\"[geoLayoutActions]\" />\n @if (showBuiltInActions()) {\n <geo-layout-header-actions\n [user]=\"user()\"\n [notifications]=\"notifications()\"\n [subsystems]=\"subsystems()\"\n [userMenuItems]=\"userMenuItems()\"\n [compact]=\"isMobile()\"\n (notificationClick)=\"notificationClick.emit($event)\"\n (subsystemClick)=\"subsystemClick.emit($event)\"\n (userMenuClick)=\"userMenuClick.emit($event)\"\n (logout)=\"logout.emit()\"\n />\n }\n </div>\n </div>\n</header>\n", styles: [".geo-layout-header-host{display:block;flex-shrink:0;z-index:100}.geo-layout-header{display:flex;flex-direction:column;justify-content:center;min-height:68px;padding-inline:1.25rem 1.5rem;background:var(--geo-color-surface-header);border-bottom:1px solid var(--geo-color-border-subtle);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.geo-layout-header--mobile{padding-inline:.75rem}.geo-layout-header--mobile .geo-layout-header__breadcrumb{display:none}.geo-layout-header--mobile .geo-layout-header__toggle{width:2.5rem;height:2.5rem}.geo-layout-header--mobile .geo-layout-header__actions{gap:.5rem}.geo-layout-header__inner{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%}.geo-layout-header__start{display:flex;flex:1;align-items:center;gap:10px;min-width:0}.geo-layout-header__toggle{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--geo-radius-md);background:transparent;color:var(--geo-color-neutral-700);cursor:pointer;transition:background-color .15s ease,color .15s ease}.geo-layout-header__toggle:hover{background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-layout-header__toggle:active{transform:scale(.98)}.geo-layout-header__breadcrumb{min-width:0}.geo-layout-header__breadcrumb-fallback{display:block;overflow:hidden;font-size:var(--geo-font-size-h4);font-weight:var(--geo-font-weight-semibold);line-height:1.375;color:var(--geo-color-neutral-800);text-overflow:ellipsis;white-space:nowrap}.geo-layout-header__actions{display:flex;flex-shrink:0;align-items:center;gap:.5rem}@media (prefers-reduced-transparency: reduce){.geo-layout-header{background:var(--geo-color-neutral-white);backdrop-filter:none;-webkit-backdrop-filter:none}}@media (prefers-reduced-motion: reduce){.geo-layout-header__toggle{transition:none}}\n"] }]
59
+ }] });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWxheW91dC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWxheW91dC9oZWFkZXIvZ2VvLWxheW91dC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWxheW91dC9oZWFkZXIvZ2VvLWxheW91dC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUV2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RyxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIsNEJBQTRCLEdBSzdCLE1BQU0scUJBQXFCLENBQUM7O0FBRTdCOztHQUVHO0FBa0JILE1BQU0sT0FBTyx3QkFBd0I7SUFDMUIsV0FBVyxHQUFHLEtBQUssQ0FBc0IsRUFBRSxDQUFDLENBQUM7SUFDN0Msa0JBQWtCLEdBQUcsS0FBSyxDQUNqQyx3Q0FBd0MsQ0FDekMsQ0FBQztJQUNPLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqQyxJQUFJLEdBQUcsS0FBSyxDQUFvQix1QkFBdUIsQ0FBQyxDQUFDO0lBQ3pELGFBQWEsR0FBRyxLQUFLLENBQzVCLGdDQUFnQyxDQUNqQyxDQUFDO0lBQ08sVUFBVSxHQUFHLEtBQUssQ0FDekIsNkJBQTZCLENBQzlCLENBQUM7SUFDTyxhQUFhLEdBQUcsS0FBSyxDQUM1Qiw0QkFBNEIsQ0FDN0IsQ0FBQztJQUVPLGFBQWEsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUMvQixpQkFBaUIsR0FBRyxNQUFNLEVBQTZCLENBQUM7SUFDeEQsY0FBYyxHQUFHLE1BQU0sRUFBMEIsQ0FBQztJQUNsRCxhQUFhLEdBQUcsTUFBTSxFQUF5QixDQUFDO0lBQ2hELE1BQU0sR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUVoQixnQkFBZ0IsR0FBRyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUVuRSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFaEUsa0JBQWtCLEdBQUcsUUFBUSxDQUNwQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUMvRCxDQUFDO0lBRU8sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDbEMsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLENBQUMsQ0FBQyxXQUFXO1lBQ2IsQ0FBQyxDQUFDLGFBQWE7UUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixDQUFDLENBQUMsV0FBVztZQUNiLENBQUMsQ0FBQyxhQUFhLENBQ3BCLENBQUM7SUFFTyxlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN2QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0F0RFUsd0JBQXdCOzRGQUF4Qix3QkFBd0IsbXlEQTJCYyx5QkFBeUIsZ0VDeEU1RSxxOUNBNkNBLHc2RERiSSxzQkFBc0IsOEVBQ3RCLGdCQUFnQix5R0FDaEIsK0JBQStCOzs0RkFXdEIsd0JBQXdCO2tCQWpCcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3dCQUNoQiwrQkFBK0I7cUJBQ2hDLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSx3QkFBd0I7d0JBQy9CLHdDQUF3QyxFQUFFLFlBQVk7cUJBQ3ZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGNvbnRlbnRDaGlsZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2VvQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2dlby1icmVhZGNydW1iL2dlby1icmVhZGNydW1iLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9CcmVhZGNydW1iSXRlbSB9IGZyb20gJy4uLy4uL2dlby1icmVhZGNydW1iL2dlby1icmVhZGNydW1iLnR5cGVzJztcbmltcG9ydCB7IEdlb0ljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9nZW8taWNvbi9nZW8taWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvTGF5b3V0QWN0aW9uc0RpcmVjdGl2ZSB9IGZyb20gJy4uL2dlby1sYXlvdXQtYWN0aW9ucy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgR2VvTGF5b3V0SGVhZGVyQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2hlYWRlci1hY3Rpb25zL2dlby1sYXlvdXQtaGVhZGVyLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEdFT19MQVlPVVRfREVGQVVMVF9OT1RJRklDQVRJT05TLFxuICBHRU9fTEFZT1VUX0RFRkFVTFRfU1VCU1lTVEVNUyxcbiAgR0VPX0xBWU9VVF9ERUZBVUxUX1VTRVIsXG4gIEdFT19MQVlPVVRfREVGQVVMVF9VU0VSX01FTlUsXG4gIEdlb0xheW91dE5vdGlmaWNhdGlvbkl0ZW0sXG4gIEdlb0xheW91dFN1YnN5c3RlbUl0ZW0sXG4gIEdlb0xheW91dFVzZXJJbmZvLFxuICBHZW9MYXlvdXRVc2VyTWVudUl0ZW0sXG59IGZyb20gJy4uL2dlby1sYXlvdXQudHlwZXMnO1xuXG4vKipcbiAqIFRvcCBiYXI6IHNpZGViYXIgdG9nZ2xlICsgYnJlYWRjcnVtYiArIGhlYWRlciBhY3Rpb25zLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbGF5b3V0LWhlYWRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBHZW9CcmVhZGNydW1iQ29tcG9uZW50LFxuICAgIEdlb0ljb25Db21wb25lbnQsXG4gICAgR2VvTGF5b3V0SGVhZGVyQWN0aW9uc0NvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1sYXlvdXQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby1sYXlvdXQtaGVhZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dlby1sYXlvdXQtaGVhZGVyLWhvc3QnLFxuICAgICdbY2xhc3MuZ2VvLWxheW91dC1oZWFkZXItaG9zdC0tbW9iaWxlXSc6ICdpc01vYmlsZSgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgR2VvTGF5b3V0SGVhZGVyQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgYnJlYWRjcnVtYnMgPSBpbnB1dDxHZW9CcmVhZGNydW1iSXRlbVtdPihbXSk7XG4gIHJlYWRvbmx5IGZhbGxiYWNrQnJlYWRjcnVtYiA9IGlucHV0KFxuICAgICdI4buHIHRo4buRbmcgdGjDtG5nIHRpbiDEkeG6pXQgxJFhaSAtIFZOUFQgaUxJUydcbiAgKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgaXNNb2JpbGUgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vYmlsZU1lbnVPcGVuID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBzaG93RGVmYXVsdEFjdGlvbnMgPSBpbnB1dCh0cnVlKTtcblxuICByZWFkb25seSB1c2VyID0gaW5wdXQ8R2VvTGF5b3V0VXNlckluZm8+KEdFT19MQVlPVVRfREVGQVVMVF9VU0VSKTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9ucyA9IGlucHV0PEdlb0xheW91dE5vdGlmaWNhdGlvbkl0ZW1bXT4oXG4gICAgR0VPX0xBWU9VVF9ERUZBVUxUX05PVElGSUNBVElPTlNcbiAgKTtcbiAgcmVhZG9ubHkgc3Vic3lzdGVtcyA9IGlucHV0PEdlb0xheW91dFN1YnN5c3RlbUl0ZW1bXT4oXG4gICAgR0VPX0xBWU9VVF9ERUZBVUxUX1NVQlNZU1RFTVNcbiAgKTtcbiAgcmVhZG9ubHkgdXNlck1lbnVJdGVtcyA9IGlucHV0PEdlb0xheW91dFVzZXJNZW51SXRlbVtdPihcbiAgICBHRU9fTEFZT1VUX0RFRkFVTFRfVVNFUl9NRU5VXG4gICk7XG5cbiAgcmVhZG9ubHkgc2lkZWJhclRvZ2dsZSA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBub3RpZmljYXRpb25DbGljayA9IG91dHB1dDxHZW9MYXlvdXROb3RpZmljYXRpb25JdGVtPigpO1xuICByZWFkb25seSBzdWJzeXN0ZW1DbGljayA9IG91dHB1dDxHZW9MYXlvdXRTdWJzeXN0ZW1JdGVtPigpO1xuICByZWFkb25seSB1c2VyTWVudUNsaWNrID0gb3V0cHV0PEdlb0xheW91dFVzZXJNZW51SXRlbT4oKTtcbiAgcmVhZG9ubHkgbG9nb3V0ID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9qZWN0ZWRBY3Rpb25zID0gY29udGVudENoaWxkKEdlb0xheW91dEFjdGlvbnNEaXJlY3RpdmUpO1xuXG4gIHJlYWRvbmx5IGhhc1Byb2plY3RlZEFjdGlvbnMgPSBjb21wdXRlZCgoKSA9PiAhIXRoaXMucHJvamVjdGVkQWN0aW9ucygpKTtcblxuICByZWFkb25seSBzaG93QnVpbHRJbkFjdGlvbnMgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLnNob3dEZWZhdWx0QWN0aW9ucygpICYmICF0aGlzLmhhc1Byb2plY3RlZEFjdGlvbnMoKVxuICApO1xuXG4gIHJlYWRvbmx5IHRvZ2dsZUljb24gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNNb2JpbGUoKVxuICAgICAgPyB0aGlzLm1vYmlsZU1lbnVPcGVuKClcbiAgICAgICAgPyAnbWVudS1mb2xkJ1xuICAgICAgICA6ICdtZW51LXVuZm9sZCdcbiAgICAgIDogdGhpcy5leHBhbmRlZCgpXG4gICAgICAgID8gJ21lbnUtZm9sZCdcbiAgICAgICAgOiAnbWVudS11bmZvbGQnXG4gICk7XG5cbiAgcmVhZG9ubHkgdG9nZ2xlQXJpYUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmlzTW9iaWxlKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1vYmlsZU1lbnVPcGVuKCkgPyAnxJDDs25nIG1lbnUnIDogJ03hu58gbWVudSc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkKCkgPyAnVGh1IGfhu41uIG1lbnUnIDogJ03hu58gcuG7mW5nIG1lbnUnO1xuICB9KTtcblxuICBvblRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNpZGViYXJUb2dnbGUuZW1pdCgpO1xuICB9XG59XG4iLCI8aGVhZGVyXG4gIGNsYXNzPVwiZ2VvLWxheW91dC1oZWFkZXJcIlxuICBbY2xhc3MuZ2VvLWxheW91dC1oZWFkZXItLW1vYmlsZV09XCJpc01vYmlsZSgpXCJcbj5cbiAgPGRpdiBjbGFzcz1cImdlby1sYXlvdXQtaGVhZGVyX19pbm5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJnZW8tbGF5b3V0LWhlYWRlcl9fc3RhcnRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiZ2VvLWxheW91dC1oZWFkZXJfX3RvZ2dsZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidG9nZ2xlQXJpYUxhYmVsKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzTW9iaWxlKCkgPyBtb2JpbGVNZW51T3BlbigpIDogZXhwYW5kZWQoKVwiXG4gICAgICAgIChjbGljayk9XCJvblRvZ2dsZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGdlby1pY29uIFt0eXBlXT1cInRvZ2dsZUljb24oKVwiIHNpemU9XCJsZ1wiIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGRpdiBjbGFzcz1cImdlby1sYXlvdXQtaGVhZGVyX19icmVhZGNydW1iXCI+XG4gICAgICAgIEBpZiAoYnJlYWRjcnVtYnMoKS5sZW5ndGgpIHtcbiAgICAgICAgICA8Z2VvLWJyZWFkY3J1bWIgW2l0ZW1zXT1cImJyZWFkY3J1bWJzKClcIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1sYXlvdXQtaGVhZGVyX19icmVhZGNydW1iLWZhbGxiYWNrXCI+e3tcbiAgICAgICAgICAgIGZhbGxiYWNrQnJlYWRjcnVtYigpXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdlby1sYXlvdXQtaGVhZGVyX19hY3Rpb25zXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZ2VvTGF5b3V0QWN0aW9uc11cIiAvPlxuICAgICAgQGlmIChzaG93QnVpbHRJbkFjdGlvbnMoKSkge1xuICAgICAgICA8Z2VvLWxheW91dC1oZWFkZXItYWN0aW9uc1xuICAgICAgICAgIFt1c2VyXT1cInVzZXIoKVwiXG4gICAgICAgICAgW25vdGlmaWNhdGlvbnNdPVwibm90aWZpY2F0aW9ucygpXCJcbiAgICAgICAgICBbc3Vic3lzdGVtc109XCJzdWJzeXN0ZW1zKClcIlxuICAgICAgICAgIFt1c2VyTWVudUl0ZW1zXT1cInVzZXJNZW51SXRlbXMoKVwiXG4gICAgICAgICAgW2NvbXBhY3RdPVwiaXNNb2JpbGUoKVwiXG4gICAgICAgICAgKG5vdGlmaWNhdGlvbkNsaWNrKT1cIm5vdGlmaWNhdGlvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKHN1YnN5c3RlbUNsaWNrKT1cInN1YnN5c3RlbUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKHVzZXJNZW51Q2xpY2spPVwidXNlck1lbnVDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgIChsb2dvdXQpPVwibG9nb3V0LmVtaXQoKVwiXG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9oZWFkZXI+XG4iXX0=