@koobiq/components 21.0.0 → 21.1.0

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 (378) hide show
  1. package/badge/_badge-theme.scss +31 -0
  2. package/breadcrumbs/breadcrumbs.scss +5 -1
  3. package/checkbox/_checkbox-theme.scss +0 -17
  4. package/checkbox/checkbox-tokens.scss +0 -4
  5. package/code-block/_code-block-theme.scss +7 -6
  6. package/code-block/code-block-tokens.scss +8 -4
  7. package/code-block/code-block.scss +54 -32
  8. package/content-panel/content-panel-header.scss +2 -3
  9. package/content-panel/content-panel.scss +3 -0
  10. package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +0 -2
  11. package/fesm2022/koobiq-components-accordion.mjs +4 -4
  12. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  13. package/fesm2022/koobiq-components-actions-panel.mjs +10 -2
  14. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  15. package/fesm2022/koobiq-components-app-switcher.mjs +1 -1
  16. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  17. package/fesm2022/koobiq-components-badge.mjs +2 -2
  18. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  19. package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
  20. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  21. package/fesm2022/koobiq-components-button-toggle.mjs +1 -1
  22. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  23. package/fesm2022/koobiq-components-checkbox.mjs +18 -8
  24. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  25. package/fesm2022/koobiq-components-clamped-text.mjs +78 -10
  26. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  27. package/fesm2022/koobiq-components-code-block.mjs +106 -394
  28. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  29. package/fesm2022/koobiq-components-content-panel.mjs +4 -4
  30. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  31. package/fesm2022/koobiq-components-core.mjs +300 -37
  32. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  33. package/fesm2022/koobiq-components-datepicker.mjs +151 -60
  34. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  35. package/fesm2022/koobiq-components-divider.mjs +3 -3
  36. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  37. package/fesm2022/koobiq-components-dropdown.mjs +3 -3
  38. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-file-upload.mjs +17 -8
  40. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  41. package/fesm2022/koobiq-components-filter-bar.mjs +124 -41
  42. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  43. package/fesm2022/koobiq-components-flag.mjs +3 -3
  44. package/fesm2022/koobiq-components-flag.mjs.map +1 -1
  45. package/fesm2022/koobiq-components-form-field.mjs +90 -27
  46. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-icon.mjs +38 -17
  48. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-inline-edit.mjs +19 -2
  50. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-input.mjs +76 -17
  52. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-list.mjs +1 -1
  54. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  55. package/fesm2022/koobiq-components-modal.mjs +3 -3
  56. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  57. package/fesm2022/koobiq-components-navbar.mjs +86 -25
  58. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  59. package/fesm2022/koobiq-components-notification-center.mjs +4 -4
  60. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  61. package/fesm2022/koobiq-components-overflow-items.mjs +116 -38
  62. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  63. package/fesm2022/koobiq-components-popover.mjs +86 -7
  64. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  65. package/fesm2022/koobiq-components-radio.mjs +41 -19
  66. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  67. package/fesm2022/koobiq-components-search-expandable.mjs +29 -17
  68. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  69. package/fesm2022/koobiq-components-select.mjs +49 -12
  70. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  71. package/fesm2022/koobiq-components-sidepanel.mjs +198 -186
  72. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-splitter.mjs +49 -25
  74. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-tabs.mjs +30 -11
  76. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  77. package/fesm2022/koobiq-components-tags.mjs +1 -1
  78. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-textarea.mjs +28 -11
  80. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  81. package/fesm2022/koobiq-components-time-range.mjs +2 -2
  82. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  83. package/fesm2022/koobiq-components-timepicker.mjs +71 -16
  84. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-timezone.mjs +2 -2
  86. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  87. package/fesm2022/koobiq-components-toast.mjs +2 -2
  88. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  89. package/fesm2022/koobiq-components-toggle.mjs +25 -9
  90. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  91. package/fesm2022/koobiq-components-tooltip.mjs +90 -17
  92. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  93. package/fesm2022/koobiq-components-top-bar.mjs +27 -7
  94. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  95. package/fesm2022/koobiq-components-tree-select.mjs +24 -9
  96. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-tree.mjs +288 -109
  98. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  99. package/file-upload/_file-upload-theme.scss +0 -12
  100. package/file-upload/file-upload-tokens.scss +0 -1
  101. package/file-upload/file-upload.scss +0 -1
  102. package/filter-bar/_filter-bar-theme.scss +7 -8
  103. package/filter-bar/filter-bar.scss +0 -1
  104. package/filter-bar/pipes/base-pipe.scss +36 -2
  105. package/filter-bar/pipes/pipe-multi-tree-select.scss +27 -0
  106. package/form-field/_fieldset-theme.scss +2 -7
  107. package/form-field/_form-field-theme.scss +9 -22
  108. package/form-field/_hint-theme.scss +20 -0
  109. package/form-field/fieldset-tokens.scss +0 -1
  110. package/form-field/fieldset.scss +0 -3
  111. package/form-field/form-field-tokens.scss +1 -1
  112. package/form-field/form-field.scss +9 -0
  113. package/form-field/hint-tokens.scss +3 -0
  114. package/modal/modal.scss +2 -0
  115. package/navbar/_navbar-item_vertical.scss +48 -2
  116. package/navbar/_navbar-theme.scss +11 -3
  117. package/navbar/navbar-item.scss +17 -0
  118. package/navbar/navbar-tokens.scss +3 -0
  119. package/package.json +4 -4
  120. package/popover/popover.scss +1 -1
  121. package/radio/_radio-theme.scss +0 -30
  122. package/radio/radio-tokens.scss +0 -2
  123. package/schematics/collection.json +94 -89
  124. package/schematics/migrations/accordion-state-saving-default/{index.js → index.cjs} +5 -4
  125. package/schematics/migrations/actions-panel-overlay-container/{index.js → index.cjs} +5 -4
  126. package/schematics/migrations/alert-signals/{index.js → index.cjs} +14 -13
  127. package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
  128. package/schematics/migrations/app-switcher-signals/{index.js → index.cjs} +7 -6
  129. package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
  130. package/schematics/migrations/autocomplete-signals/{index.js → index.cjs} +7 -6
  131. package/schematics/migrations/badge-signals/{index.js → index.cjs} +7 -6
  132. package/schematics/migrations/button-state-and-styles/{index.js → index.cjs} +7 -6
  133. package/schematics/migrations/button-supported-colors/{index.js → index.cjs} +7 -6
  134. package/schematics/migrations/button-toggle-signals-and-aria/{index.js → index.cjs} +7 -6
  135. package/schematics/migrations/button-truncation/{index.js → index.cjs} +7 -6
  136. package/schematics/migrations/checkbox-signals/{index.js → index.cjs} +9 -8
  137. package/schematics/migrations/clamped-text-disclosure/{index.js → index.cjs} +5 -4
  138. package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
  139. package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
  140. package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
  141. package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
  142. package/schematics/migrations/code-block-signals/{index.js → index.cjs} +7 -6
  143. package/schematics/migrations/color-signals/index.cjs +20 -0
  144. package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
  145. package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
  146. package/schematics/migrations/datepicker-signals/index.cjs +18 -0
  147. package/schematics/migrations/deprecated-icons/README.md +21 -5
  148. package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +15 -28
  149. package/schematics/migrations/deprecated-icons/schema.json +1 -1
  150. package/schematics/migrations/design-tokens-v4/{index.js → index.cjs} +3 -2
  151. package/schematics/migrations/divider-signals-and-aria/{index.js → index.cjs} +5 -4
  152. package/schematics/migrations/dl-attribute-coercion/{index.js → index.cjs} +7 -6
  153. package/schematics/migrations/dl-standalone-names/{index.js → index.cjs} +11 -10
  154. package/schematics/migrations/dropdown-demote-overlay/{index.js → index.cjs} +7 -6
  155. package/schematics/migrations/dropdown-signals/index.cjs +20 -0
  156. package/schematics/migrations/empty-state-error-color/{index.js → index.cjs} +5 -4
  157. package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
  158. package/schematics/migrations/file-upload-cva-and-primitives/{index.js → index.cjs} +5 -4
  159. package/schematics/migrations/file-upload-deprecated-outputs/{index.js → index.cjs} +5 -4
  160. package/schematics/migrations/filter-bar-rename-action/{index.js → index.cjs} +5 -4
  161. package/schematics/migrations/filter-bar-signals/{index.js → index.cjs} +16 -15
  162. package/schematics/migrations/filter-bar-state-saving-default/{index.js → index.cjs} +5 -4
  163. package/schematics/migrations/flag-inner-html/{index.js → index.cjs} +5 -4
  164. package/schematics/migrations/form-field-signals/{index.js → index.cjs} +18 -17
  165. package/schematics/migrations/icon-semantics-and-api/{data.js → data.cjs} +4 -4
  166. package/schematics/migrations/icon-semantics-and-api/{index.js → index.cjs} +6 -5
  167. package/schematics/migrations/icons-replacement/README.md +16 -2
  168. package/schematics/migrations/icons-replacement/{index.js → index.cjs} +21 -18
  169. package/schematics/migrations/icons-replacement/schema.json +12 -3
  170. package/schematics/migrations/inline-edit-a11y-and-types/{index.js → index.cjs} +5 -4
  171. package/schematics/migrations/input-number-surface/{index.js → index.cjs} +5 -4
  172. package/schematics/migrations/input-signals/index.cjs +18 -0
  173. package/schematics/migrations/link-deprecated-path/{index.js → index.cjs} +4 -3
  174. package/schematics/migrations/link-signals/{index.js → index.cjs} +5 -4
  175. package/schematics/migrations/list-signals/index.cjs +18 -0
  176. package/schematics/migrations/list-tree-multiple-input/{index.js → index.cjs} +7 -6
  177. package/schematics/migrations/loader-overlay-signals/{index.js → index.cjs} +7 -6
  178. package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
  179. package/schematics/migrations/locale-configuration-providers/{index.js → index.cjs} +5 -4
  180. package/schematics/migrations/mandatory-peer-dependencies/{index.js → index.cjs} +3 -2
  181. package/schematics/migrations/markdown-signals/{index.js → index.cjs} +7 -6
  182. package/schematics/migrations/modal-dialog-semantics/{index.js → index.cjs} +5 -4
  183. package/schematics/migrations/modal-signals/index.cjs +20 -0
  184. package/schematics/migrations/navbar-signals-and-aria/{index.js → index.cjs} +7 -6
  185. package/schematics/migrations/new-icons-pack/README.md +37 -25
  186. package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +29 -38
  187. package/schematics/migrations/new-icons-pack/replacement.json +2 -14
  188. package/schematics/migrations/new-icons-pack/schema.json +3 -3
  189. package/schematics/migrations/notification-center-signals/{index.js → index.cjs} +5 -4
  190. package/schematics/migrations/option-signals/index.cjs +20 -0
  191. package/schematics/migrations/popover-leave-delay/{index.js → index.cjs} +5 -4
  192. package/schematics/migrations/progress-bar-percentage-and-aria/{index.js → index.cjs} +5 -4
  193. package/schematics/migrations/progress-spinner-signals/{index.js → index.cjs} +7 -6
  194. package/schematics/migrations/query-list-signals/index.cjs +18 -0
  195. package/schematics/migrations/radio-signals-and-aria/{index.js → index.cjs} +9 -8
  196. package/schematics/migrations/read-state-dwell-handlers/{index.js → index.cjs} +5 -4
  197. package/schematics/migrations/scrollbar-deprecated-path/{index.js → index.cjs} +4 -3
  198. package/schematics/migrations/select-signal-inputs/{index.js → index.cjs} +5 -4
  199. package/schematics/migrations/sidepanel-non-modal-behavior/{index.js → index.cjs} +5 -4
  200. package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
  201. package/schematics/migrations/split-button-optional-disabled/{index.js → index.cjs} +5 -4
  202. package/schematics/migrations/splitter-deprecated-path/{index.js → index.cjs} +4 -3
  203. package/schematics/migrations/state-saving-default/{index.js → index.cjs} +5 -4
  204. package/schematics/migrations/table-cell-content/{index.js → index.cjs} +5 -4
  205. package/schematics/migrations/tabs-signals-and-aria/{index.js → index.cjs} +5 -4
  206. package/schematics/migrations/tag-list-cleaner/{index.js → index.cjs} +7 -6
  207. package/schematics/migrations/tag-slots/{index.js → index.cjs} +6 -5
  208. package/schematics/migrations/tags-signals/{index.js → index.cjs} +7 -6
  209. package/schematics/migrations/textarea-signals/{index.js → index.cjs} +7 -6
  210. package/schematics/migrations/time-range-title-for/{index.js → index.cjs} +5 -4
  211. package/schematics/migrations/timepicker-signals/{index.js → index.cjs} +7 -6
  212. package/schematics/migrations/timezone-grouping-utils/{index.js → index.cjs} +5 -4
  213. package/schematics/migrations/title-encapsulation/{index.js → index.cjs} +5 -4
  214. package/schematics/migrations/toast-stack-and-defaults/{index.js → index.cjs} +5 -4
  215. package/schematics/migrations/tooltip-pointer-events-and-types/{index.js → index.cjs} +5 -4
  216. package/schematics/migrations/top-bar-container-selectors/{index.js → index.cjs} +5 -4
  217. package/schematics/migrations/tree-select-signals/{index.js → index.cjs} +5 -4
  218. package/schematics/migrations/tree-signals/{index.js → index.cjs} +5 -4
  219. package/schematics/migrations/tree-state-saving-default/{index.js → index.cjs} +5 -4
  220. package/schematics/migrations/username-pipe-injection/{index.js → index.cjs} +5 -4
  221. package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +7 -7
  222. package/schematics/migrations/v20-upgrade/index.cjs +19 -0
  223. package/schematics/migrations/v21-upgrade/{data.js → data.cjs} +22 -22
  224. package/schematics/migrations/v21-upgrade/{index.js → index.cjs} +11 -10
  225. package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
  226. package/schematics/migrations.json +87 -82
  227. package/schematics/ng-add/{index.js → index.cjs} +15 -289
  228. package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
  229. package/schematics/utils/custom-data.cjs +64 -0
  230. package/schematics/utils/{deprecated-path-migration.js → deprecated-path-migration.cjs} +4 -3
  231. package/schematics/utils/html-config.cjs +148 -0
  232. package/schematics/utils/{icon-migration.js → icon-migration.cjs} +11 -5
  233. package/schematics/utils/list-item-pattern.cjs +16 -0
  234. package/schematics/utils/{messages.js → messages.cjs} +4 -0
  235. package/schematics/utils/package-config.cjs +99 -0
  236. package/schematics/utils/project-files.cjs +25 -0
  237. package/schematics/utils/replacement-driver.cjs +337 -0
  238. package/schematics/utils/safe-rule.cjs +23 -0
  239. package/schematics/utils/signal-members-migration.cjs +779 -0
  240. package/schematics/utils/tag-patterns.cjs +21 -0
  241. package/schematics/utils/template-ref-access.cjs +155 -0
  242. package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
  243. package/schematics/utils/warn-only-migration.cjs +52 -0
  244. package/schematics/utils/workspace-styles.cjs +123 -0
  245. package/select/select.scss +7 -0
  246. package/tabs/_tabs-common.scss +23 -0
  247. package/textarea/textarea-tokens.scss +4 -1
  248. package/toast/toast.component.scss +1 -0
  249. package/toggle/_toggle-theme.scss +0 -17
  250. package/tooltip/tooltip.scss +1 -1
  251. package/top-bar/top-bar-tokens.scss +1 -0
  252. package/top-bar/top-bar.scss +10 -0
  253. package/types/koobiq-components-accordion.d.ts +25 -0
  254. package/types/koobiq-components-button-toggle.d.ts +6 -0
  255. package/types/koobiq-components-checkbox.d.ts +30 -0
  256. package/types/koobiq-components-clamped-text.d.ts +16 -3
  257. package/types/koobiq-components-code-block.d.ts +55 -14
  258. package/types/koobiq-components-core.d.ts +226 -13
  259. package/types/koobiq-components-datepicker.d.ts +28 -1
  260. package/types/koobiq-components-divider.d.ts +28 -10
  261. package/types/koobiq-components-dropdown.d.ts +19 -0
  262. package/types/koobiq-components-filter-bar.d.ts +79 -6
  263. package/types/koobiq-components-flag.d.ts +18 -0
  264. package/types/koobiq-components-form-field.d.ts +87 -6
  265. package/types/koobiq-components-icon.d.ts +15 -0
  266. package/types/koobiq-components-inline-edit.d.ts +8 -1
  267. package/types/koobiq-components-input.d.ts +22 -3
  268. package/types/koobiq-components-list.d.ts +6 -0
  269. package/types/koobiq-components-modal.d.ts +7 -0
  270. package/types/koobiq-components-navbar.d.ts +71 -7
  271. package/types/koobiq-components-notification-center.d.ts +13 -0
  272. package/types/koobiq-components-overflow-items.d.ts +26 -2
  273. package/types/koobiq-components-popover.d.ts +38 -3
  274. package/types/koobiq-components-radio.d.ts +30 -0
  275. package/types/koobiq-components-search-expandable.d.ts +10 -0
  276. package/types/koobiq-components-select.d.ts +36 -4
  277. package/types/koobiq-components-sidepanel.d.ts +52 -1
  278. package/types/koobiq-components-splitter.d.ts +13 -4
  279. package/types/koobiq-components-tabs.d.ts +4 -0
  280. package/types/koobiq-components-tags.d.ts +6 -0
  281. package/types/koobiq-components-textarea.d.ts +9 -2
  282. package/types/koobiq-components-timepicker.d.ts +15 -0
  283. package/types/koobiq-components-toggle.d.ts +30 -0
  284. package/types/koobiq-components-tooltip.d.ts +55 -10
  285. package/types/koobiq-components-top-bar.d.ts +11 -3
  286. package/types/koobiq-components-tree-select.d.ts +23 -8
  287. package/types/koobiq-components-tree.d.ts +144 -60
  288. package/schematics/migrations/angular-animations-removal/index.js +0 -20
  289. package/schematics/migrations/color-signals/index.js +0 -19
  290. package/schematics/migrations/core-mixins-removal/index.js +0 -17
  291. package/schematics/migrations/datepicker-signals/index.js +0 -17
  292. package/schematics/migrations/dropdown-signals/index.js +0 -19
  293. package/schematics/migrations/input-signals/index.js +0 -17
  294. package/schematics/migrations/list-signals/index.js +0 -17
  295. package/schematics/migrations/modal-signals/index.js +0 -19
  296. package/schematics/migrations/option-signals/index.js +0 -19
  297. package/schematics/migrations/query-list-signals/index.js +0 -17
  298. package/schematics/migrations/signal-inputs-subclasses/index.js +0 -17
  299. package/schematics/migrations/v20-upgrade/index.js +0 -18
  300. package/schematics/migrations/zoneless-change-detection/index.js +0 -20
  301. package/schematics/utils/package-config.js +0 -13
  302. /package/schematics/migrations/accordion-state-saving-default/{data.js → data.cjs} +0 -0
  303. /package/schematics/migrations/actions-panel-overlay-container/{data.js → data.cjs} +0 -0
  304. /package/schematics/migrations/alert-signals/{data.js → data.cjs} +0 -0
  305. /package/schematics/migrations/angular-animations-removal/{data.js → data.cjs} +0 -0
  306. /package/schematics/migrations/app-switcher-signals/{data.js → data.cjs} +0 -0
  307. /package/schematics/migrations/autocomplete-signals/{data.js → data.cjs} +0 -0
  308. /package/schematics/migrations/badge-signals/{data.js → data.cjs} +0 -0
  309. /package/schematics/migrations/button-state-and-styles/{data.js → data.cjs} +0 -0
  310. /package/schematics/migrations/button-supported-colors/{data.js → data.cjs} +0 -0
  311. /package/schematics/migrations/button-toggle-signals-and-aria/{data.js → data.cjs} +0 -0
  312. /package/schematics/migrations/button-truncation/{data.js → data.cjs} +0 -0
  313. /package/schematics/migrations/checkbox-signals/{data.js → data.cjs} +0 -0
  314. /package/schematics/migrations/clamped-text-disclosure/{data.js → data.cjs} +0 -0
  315. /package/schematics/migrations/code-block-signals/{data.js → data.cjs} +0 -0
  316. /package/schematics/migrations/color-signals/{data.js → data.cjs} +0 -0
  317. /package/schematics/migrations/core-mixins-removal/{data.js → data.cjs} +0 -0
  318. /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
  319. /package/schematics/migrations/datepicker-signals/{data.js → data.cjs} +0 -0
  320. /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
  321. /package/schematics/migrations/divider-signals-and-aria/{data.js → data.cjs} +0 -0
  322. /package/schematics/migrations/dl-attribute-coercion/{data.js → data.cjs} +0 -0
  323. /package/schematics/migrations/dl-standalone-names/{data.js → data.cjs} +0 -0
  324. /package/schematics/migrations/dropdown-demote-overlay/{data.js → data.cjs} +0 -0
  325. /package/schematics/migrations/dropdown-signals/{data.js → data.cjs} +0 -0
  326. /package/schematics/migrations/empty-state-error-color/{data.js → data.cjs} +0 -0
  327. /package/schematics/migrations/file-upload-cva-and-primitives/{data.js → data.cjs} +0 -0
  328. /package/schematics/migrations/file-upload-deprecated-outputs/{data.js → data.cjs} +0 -0
  329. /package/schematics/migrations/filter-bar-rename-action/{data.js → data.cjs} +0 -0
  330. /package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +0 -0
  331. /package/schematics/migrations/filter-bar-state-saving-default/{data.js → data.cjs} +0 -0
  332. /package/schematics/migrations/flag-inner-html/{data.js → data.cjs} +0 -0
  333. /package/schematics/migrations/form-field-signals/{data.js → data.cjs} +0 -0
  334. /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
  335. /package/schematics/migrations/inline-edit-a11y-and-types/{data.js → data.cjs} +0 -0
  336. /package/schematics/migrations/input-number-surface/{data.js → data.cjs} +0 -0
  337. /package/schematics/migrations/input-signals/{data.js → data.cjs} +0 -0
  338. /package/schematics/migrations/link-signals/{data.js → data.cjs} +0 -0
  339. /package/schematics/migrations/list-signals/{data.js → data.cjs} +0 -0
  340. /package/schematics/migrations/list-tree-multiple-input/{data.js → data.cjs} +0 -0
  341. /package/schematics/migrations/loader-overlay-signals/{data.js → data.cjs} +0 -0
  342. /package/schematics/migrations/locale-configuration-providers/{data.js → data.cjs} +0 -0
  343. /package/schematics/migrations/markdown-signals/{data.js → data.cjs} +0 -0
  344. /package/schematics/migrations/modal-dialog-semantics/{data.js → data.cjs} +0 -0
  345. /package/schematics/migrations/modal-signals/{data.js → data.cjs} +0 -0
  346. /package/schematics/migrations/navbar-signals-and-aria/{data.js → data.cjs} +0 -0
  347. /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
  348. /package/schematics/migrations/notification-center-signals/{data.js → data.cjs} +0 -0
  349. /package/schematics/migrations/option-signals/{data.js → data.cjs} +0 -0
  350. /package/schematics/migrations/popover-leave-delay/{data.js → data.cjs} +0 -0
  351. /package/schematics/migrations/progress-bar-percentage-and-aria/{data.js → data.cjs} +0 -0
  352. /package/schematics/migrations/progress-spinner-signals/{data.js → data.cjs} +0 -0
  353. /package/schematics/migrations/query-list-signals/{data.js → data.cjs} +0 -0
  354. /package/schematics/migrations/radio-signals-and-aria/{data.js → data.cjs} +0 -0
  355. /package/schematics/migrations/read-state-dwell-handlers/{data.js → data.cjs} +0 -0
  356. /package/schematics/migrations/select-signal-inputs/{data.js → data.cjs} +0 -0
  357. /package/schematics/migrations/sidepanel-non-modal-behavior/{data.js → data.cjs} +0 -0
  358. /package/schematics/migrations/signal-inputs-subclasses/{data.js → data.cjs} +0 -0
  359. /package/schematics/migrations/split-button-optional-disabled/{data.js → data.cjs} +0 -0
  360. /package/schematics/migrations/state-saving-default/{data.js → data.cjs} +0 -0
  361. /package/schematics/migrations/table-cell-content/{data.js → data.cjs} +0 -0
  362. /package/schematics/migrations/tabs-signals-and-aria/{data.js → data.cjs} +0 -0
  363. /package/schematics/migrations/tag-list-cleaner/{data.js → data.cjs} +0 -0
  364. /package/schematics/migrations/tags-signals/{data.js → data.cjs} +0 -0
  365. /package/schematics/migrations/textarea-signals/{data.js → data.cjs} +0 -0
  366. /package/schematics/migrations/time-range-title-for/{data.js → data.cjs} +0 -0
  367. /package/schematics/migrations/timepicker-signals/{data.js → data.cjs} +0 -0
  368. /package/schematics/migrations/timezone-grouping-utils/{data.js → data.cjs} +0 -0
  369. /package/schematics/migrations/title-encapsulation/{data.js → data.cjs} +0 -0
  370. /package/schematics/migrations/toast-stack-and-defaults/{data.js → data.cjs} +0 -0
  371. /package/schematics/migrations/tooltip-pointer-events-and-types/{data.js → data.cjs} +0 -0
  372. /package/schematics/migrations/top-bar-container-selectors/{data.js → data.cjs} +0 -0
  373. /package/schematics/migrations/tree-select-signals/{data.js → data.cjs} +0 -0
  374. /package/schematics/migrations/tree-signals/{data.js → data.cjs} +0 -0
  375. /package/schematics/migrations/tree-state-saving-default/{data.js → data.cjs} +0 -0
  376. /package/schematics/migrations/username-pipe-injection/{data.js → data.cjs} +0 -0
  377. /package/schematics/migrations/zoneless-change-detection/{data.js → data.cjs} +0 -0
  378. /package/schematics/utils/{ast.js → ast.cjs} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-popover.mjs","sources":["../../../packages/components/popover/popover.component.ts","../../../packages/components/popover/popover.component.html","../../../packages/components/popover/popover-confirm.component.ts","../../../packages/components/popover/popover-confirm.component.html","../../../packages/components/popover/popover.module.ts","../../../packages/components/popover/koobiq-components-popover.ts"],"sourcesContent":["import {\n CdkTrapFocus,\n ConfigurableFocusTrapFactory,\n FOCUS_TRAP_INERT_STRATEGY,\n FocusMonitor,\n FocusTrapFactory\n} from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CdkObserveContent } from '@angular/cdk/observers';\nimport {\n CdkScrollable,\n FlexibleConnectedPositionStrategy,\n OverlayConfig,\n OverlayRef,\n ScrollDispatcher,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n InjectionToken,\n InputSignal,\n OnChanges,\n OnInit,\n Provider,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n input,\n untracked,\n viewChild\n} from '@angular/core';\nimport { outputFromObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n EmptyFocusTrapStrategy,\n KBQ_OVERLAY_LAYERS,\n KbqComponentColors,\n KbqOverflowShadowBottom,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqOverlayOrigin,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpSizeValues,\n KbqPopUpTrigger,\n KbqStickToWindowPlacementValues,\n POSITION_TO_CSS_MAP,\n PopUpPlacements,\n PopUpSizes,\n PopUpTriggers,\n applyPopupMargins,\n kbqInjectA11yLocaleConfiguration,\n kbqOptionalNumberAttribute,\n kbqRepositionScrollStrategyFactory,\n kbqSiblingPopupProvider\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqScrollbarViewport } from '@koobiq/components/scrollbar';\nimport { NEVER, merge } from 'rxjs';\n\nexport const defaultOffsetYWithArrow = 8;\n\n/** Leave delay applied to a hover-triggered popover when `kbqLeaveDelay` is not bound. */\nexport const defaultHoverLeaveDelay = 500;\n\n/** Default `kbqPopoverBackdropClass`. */\nconst defaultBackdropClass = 'cdk-overlay-transparent-backdrop';\n\n/** Debounce of the content-mutation observer that drives the scroll shadows, in milliseconds. */\nconst contentObserverDebounce = 15;\n\n/** DOM event names the shared pop-up base records right before opening on a pointer or focus event. */\nconst passiveOpenEvents = ['mouseenter', 'focus'];\n\nlet nextUniqueId = 0;\n\n/**\n * Focus-trap wiring of a popover panel.\n *\n * Provided on the panel components rather than on `KbqPopoverModule`: both entries are injector-wide, so at\n * module level they replaced the CDK inert strategy for every other focus trap in the importing injector.\n *\n * @docs-private\n */\nexport const KBQ_POPOVER_FOCUS_TRAP_PROVIDERS: Provider[] = [\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }\n];\n\n@Component({\n selector: 'kbq-popover-component',\n imports: [\n NgTemplateOutlet,\n CdkObserveContent,\n KbqButtonModule,\n KbqIconModule,\n KbqScrollbarViewport,\n CdkTrapFocus,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqOverflowShadowBottom\n ],\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.scss', './popover-tokens.scss'],\n providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '(keydown.esc)': 'onEscape($event)'\n },\n preserveWhitespaces: false\n})\nexport class KbqPopoverComponent extends KbqPopUp implements AfterViewInit {\n /** Accessible name for the icon-only close button. */\n protected readonly a11yLocaleConfiguration = kbqInjectA11yLocaleConfiguration();\n\n /** Debounce shared by the mutation observer and the scroll-shadow container (both expose `debounce`). */\n protected readonly contentObserverDebounce = contentObserverDebounce;\n\n prefix = 'kbq-popover';\n\n header: string | TemplateRef<any>;\n footer: string | TemplateRef<any>;\n\n trigger: KbqPopoverTrigger;\n\n isTrapFocus: boolean = false;\n hasCloseButton: boolean = false;\n\n /** Id of the panel element, referenced by the trigger's `aria-controls`. Written by the trigger. */\n panelId: string;\n\n /** Accessible name of the panel, used when there is no header to label it. Written by the trigger. */\n ariaLabel: string | undefined;\n\n private readonly popoverElement = viewChild<ElementRef<HTMLElement>>('popover');\n\n /**\n * Panel element (`.kbq-popover`), not the component host.\n *\n * Deliberately shadows the injected `KbqPopUp.elementRef`: the base measures and decorates the visible\n * panel, so both `applyPopupMargins` here and `setStickPosition`/`addEventListenerForHide` in the base\n * must resolve to the same element. The confirm template carries the matching `#popover` reference.\n */\n override get elementRef(): ElementRef<HTMLElement> {\n return this.popoverElement()!;\n }\n readonly cdkTrapFocus = viewChild.required(CdkTrapFocus);\n /** @docs-private */\n readonly overflowContainer = viewChild(KbqOverflowShadowContainer);\n\n private readonly scrollbarViewport = viewChild(KbqScrollbarViewport);\n\n /** Id of the header text node, referenced by the panel's `aria-labelledby`. */\n get headerId(): string {\n return `${this.panelId}-header`;\n }\n\n /**\n * Whether the header can name the dialog. Only a string header renders a text node with an id to point\n * `aria-labelledby` at; a template header is arbitrary markup, so those panels fall back to `ariaLabel`.\n */\n protected get labelledByHeader(): boolean {\n return !!this.header && !this.isTemplateRef(this.header);\n }\n\n ngAfterViewInit() {\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((state) => {\n if (this.offset !== null && state && this.elementRef) {\n applyPopupMargins(\n this.renderer,\n this.elementRef.nativeElement,\n this.prefix,\n `${this.offset!.toString()}px`\n );\n\n this.setStickPosition();\n }\n\n // Every closing path ends here, and the panel is still in the DOM at this point, so this is the\n // one place where focus can be handed back to the trigger instead of falling to `<body>`.\n if (!state) {\n this.trigger?.restoreFocus();\n }\n });\n\n // A hover- or focus-triggered popover is dismissed by the pointer leaving it, so capturing the\n // keyboard would strand focus on `<body>` when it auto-hides.\n if (this.trigger?.capturesFocusOnOpen ?? true) {\n this.cdkTrapFocus().focusTrap.focusFirstTabbableElement();\n }\n }\n\n updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues) {\n super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });\n }\n\n updateTrapFocus(isTrapFocus: boolean): void {\n this.isTrapFocus = isTrapFocus;\n }\n\n /** Closes the panel on `Escape` inside it, unless a control there spent the key closing a popup of its own. */\n onEscape(event?: Event) {\n if (event?.defaultPrevented || this.trigger?.preventClose) return;\n\n // Spent, so that a container closing on Escape, such as a modal around an overlay layer, stays open.\n event?.preventDefault();\n this.requestClose();\n }\n\n /** Handles a click on the close button. */\n protected onClose(): void {\n this.requestClose();\n }\n\n /**\n * Closes the panel through its trigger, so that `kbqPopoverPreventClose` is honored and focus is restored\n * the same way as on every other closing path.\n *\n * The component is exported and can be rendered without a trigger — `ngAfterViewInit` already allows for\n * that — and such a panel has no `preventClose` to honor and no trigger to hand focus back to, so it hides\n * itself rather than throwing on a keypress.\n */\n private requestClose(): void {\n if (this.trigger) {\n this.trigger.close();\n } else {\n this.hide(0);\n }\n }\n\n /**\n * Whether the scrollable content region needs its own tab stop and landmark (AXE\n * `scrollable-region-focusable`). An unconditional `tabindex` would add a stop to every popover.\n */\n protected isScrollableRegion(container: KbqOverflowShadowContainer): boolean {\n const { top, bottom } = container.overflow();\n\n return top || bottom;\n }\n\n protected override afterShowAnimation(): void {\n this.scrollbarViewport()?.flashScrollIndicators();\n }\n\n protected readonly componentColors = KbqComponentColors;\n}\n\nexport const KBQ_POPOVER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('kbq-popover-scroll-strategy', {\n providedIn: 'root',\n factory: () => kbqPopoverScrollStrategyFactory(inject(ScrollDispatcher))\n});\n\n/** @docs-private */\nexport function kbqPopoverScrollStrategyFactory(scrollDispatcher: ScrollDispatcher): () => ScrollStrategy {\n return kbqRepositionScrollStrategyFactory(scrollDispatcher, { scrollThrottle: 20 });\n}\n\n/**\n * Redundant to the root factory of the token; kept so an app can restore the default under its own override (#DS-2196).\n *\n * @docs-private\n */\nexport const KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_POPOVER_SCROLL_STRATEGY,\n deps: [ScrollDispatcher],\n useFactory: kbqPopoverScrollStrategyFactory\n};\n\n@Directive({\n selector: '[kbqPopover]',\n providers: [kbqSiblingPopupProvider(KbqPopoverTrigger)],\n host: {\n '[class.kbq-popover_open]': 'isOpen',\n '[class.kbq-active]': 'hasClickTrigger && isOpen',\n '[attr.aria-expanded]': 'hasClickTrigger ? isOpen : null',\n '[attr.aria-haspopup]': 'hasClickTrigger ? \"dialog\" : null',\n '[attr.aria-controls]': 'hasClickTrigger && isOpen ? panelId : null',\n '(keydown)': 'keydownHandler($event)',\n '(touchend)': 'touchendHandler()'\n },\n exportAs: 'kbqPopover'\n})\nexport class KbqPopoverTrigger\n extends KbqPopUpTrigger<KbqPopoverComponent>\n implements OnChanges, AfterContentInit, OnInit\n{\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_POPOVER_SCROLL_STRATEGY);\n\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly document = inject(DOCUMENT);\n private readonly overlayLayers = inject(KBQ_OVERLAY_LAYERS);\n\n /** Id of the panel this trigger controls, shared with `aria-controls`. */\n readonly panelId: string = `kbq-popover-${nextUniqueId++}`;\n\n /**\n * Input (`kbqPopoverHideIfNotInViewPort`) — whether the popover closes once its trigger scrolls out of the\n * nearest scrollable ancestor. A bound `null` or `undefined` restores the default, `true`.\n */\n readonly popoverHideIfNotInViewPort = input<boolean, unknown>(true, {\n alias: 'kbqPopoverHideIfNotInViewPort',\n transform: (value) => (value == null ? true : booleanAttribute(value))\n });\n\n /** prevents closure by any event */\n override preventClose: boolean = false;\n\n /** Whether the header, content and footer keep their default paddings. Bound with `kbqPopoverDefaultPaddings`. */\n defaultPaddings = true;\n\n /** Input (`kbqPopoverDefaultPaddings`) — sets {@link defaultPaddings}. */\n set popoverDefaultPaddings(value: boolean) {\n this.defaultPaddings = value;\n }\n\n /** Input (`kbqPopoverVisible`) — opens the popover when set to `true` and closes it when set to `false`. */\n get popoverVisible(): boolean {\n return this.visible;\n }\n\n set popoverVisible(value: boolean) {\n super.updateVisible(value);\n }\n\n /** Input (`kbqPopoverPlacement`) — preferred placement of the panel relative to the trigger. */\n get popoverPlacement(): KbqPopUpPlacementValues {\n return this.placement;\n }\n\n set popoverPlacement(value: KbqPopUpPlacementValues) {\n super.updatePlacement(value);\n }\n\n /** Input (`kbqPopoverPlacementPriority`) — ordered placements tried before the default strategy. */\n get popoverPlacementPriority() {\n return this.placementPriority;\n }\n\n set popoverPlacementPriority(value) {\n super.updatePlacementPriority(value);\n }\n\n /**\n * Additionally positions the element relative to the window side (Top, Right, Bottom and Left).\n * If container is specified, the positioning will be relative to it.\n * */\n stickToWindow: KbqStickToWindowPlacementValues | undefined;\n\n /** Container for additional positioning, used with `kbqPopoverStickToWindow`. Bound with `kbqPopoverContainer`. */\n container: HTMLElement | undefined;\n\n /** Input (`kbqPopoverContainer`) — sets {@link container}. */\n set popoverContainer(value: HTMLElement | undefined) {\n this.container = value;\n }\n\n /**\n * Whether a backdrop is rendered behind the panel. With a backdrop the popover closes on a backdrop click\n * instead of on any outside pointer event. Bound with `kbqPopoverHasBackdrop`.\n */\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n\n this.invalidateOverlay();\n }\n\n private _hasBackdrop: boolean = false;\n\n /** Input (`kbqPopoverHasBackdrop`) — sets {@link hasBackdrop}. */\n set popoverHasBackdrop(value: boolean) {\n this.hasBackdrop = value;\n }\n\n /** Input (`kbqPopoverHeader`) — header of the panel, as a string or a template. */\n get header(): string | TemplateRef<any> {\n return this._header;\n }\n\n set header(value: string | TemplateRef<any>) {\n this._header = value;\n\n this.updateData();\n }\n\n private _header: string | TemplateRef<any>;\n\n /** Input (`kbqPopoverContent`) — content of the panel, as a string or a template. */\n get content(): string | TemplateRef<any> {\n return this._content;\n }\n\n set content(value: string | TemplateRef<any>) {\n this._content = value;\n\n this.updateData();\n }\n\n /** Input (`kbqPopoverFooter`) — footer of the panel, as a string or a template. */\n get footer(): string | TemplateRef<any> {\n return this._footer;\n }\n\n set footer(value: string | TemplateRef<any>) {\n this._footer = value;\n\n this.updateData();\n }\n\n private _footer: string | TemplateRef<any>;\n\n /** Input (`kbqPopoverDisabled`) — disables the trigger and closes an open popover. */\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.hide();\n }\n }\n\n /**\n * Input (`kbqTrigger`) with the comma-separated trigger events. An empty value resets to click + keydown\n * and rebinds listeners. The alias is shared with `kbqTooltip`, so binding it on an element that carries\n * both reconfigures both.\n */\n get trigger(): string {\n return this._trigger;\n }\n\n set trigger(value: string) {\n if (value) {\n this._trigger = value;\n\n if (this.trigger.includes(PopUpTriggers.Hover)) {\n this.hideWithTimeout = true;\n }\n } else {\n this._trigger = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n }\n\n // Re-derived from the trigger on every change rather than applied once to an unset delay: a popover\n // switched to `hover` later closes on the 0 it was born with otherwise, leaving no time to cross the\n // gap between the trigger and the panel.\n if (!this.leaveDelayBound) {\n this.leaveDelay = this.defaultLeaveDelay;\n }\n\n this.initListeners();\n }\n\n private _trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n /** Leave delay while `kbqLeaveDelay` is not bound. */\n private get defaultLeaveDelay(): number {\n return this._trigger.includes(PopUpTriggers.Hover) ? defaultHoverLeaveDelay : 0;\n }\n\n /** Input (`kbqPopoverSize`) — preset width of the panel. An unknown value falls back to `medium`. */\n get size(): KbqPopUpSizeValues {\n return this._size;\n }\n\n set size(value: KbqPopUpSizeValues) {\n if ([PopUpSizes.Small, PopUpSizes.Medium, PopUpSizes.Large, PopUpSizes.Custom].includes(value as PopUpSizes)) {\n this._size = value;\n\n this.updateClassMap();\n } else {\n this._size = PopUpSizes.Medium;\n\n // eslint-disable-next-line no-console\n console.warn(`Unknown size: ${value}. Will use the default size: ${this._size}`);\n }\n }\n\n private _size: KbqPopUpSizeValues = PopUpSizes.Medium;\n\n /** Input (`kbqPopoverClass`) with extra CSS classes applied to the panel. */\n get customClass() {\n return this._customClass;\n }\n\n set customClass(value: string) {\n this._customClass = value;\n\n this.updateClassMap();\n }\n\n /** Context for popover templates (kbqPopoverHeader, kbqPopoverContent and kbqPopoverFooter). */\n get context() {\n return this._context;\n }\n\n set context(ctx) {\n this._context = ctx;\n this.updateData();\n }\n\n private _context: unknown = null;\n\n /**\n * Accessible name of the panel. Ignored while a string `kbqPopoverHeader` is set — the header labels the\n * dialog then — and recommended for every header-less popover.\n */\n get ariaLabel(): string | undefined {\n return this._ariaLabel;\n }\n\n set ariaLabel(value: string | undefined) {\n this._ariaLabel = value;\n\n this.updateData();\n }\n\n private _ariaLabel: string | undefined;\n\n /** Renders the icon-only close button in the top corner of the panel. Bound with `kbqPopoverHasCloseButton`. */\n get hasCloseButton(): boolean {\n return this._hasCloseButton;\n }\n\n set hasCloseButton(value: boolean) {\n this._hasCloseButton = value;\n this.updateData();\n }\n\n private _hasCloseButton = false;\n\n /** Input (`kbqPopoverHasCloseButton`) — sets {@link hasCloseButton}. */\n set popoverHasCloseButton(value: boolean) {\n this.hasCloseButton = value;\n }\n\n /**\n * Controls the behavior of closing the component on scroll. Bound with `kbqPopoverCloseOnScroll`. Three\n * states:\n * - `null` (default) — the popover survives a scroll, except when it scrolls out of a\n * `.kbq-hide-nested-popup` container, which closes it;\n * - `true` — any scroll closes the popover;\n * - `false` — no scroll closes the popover, not even a `.kbq-hide-nested-popup` one.\n *\n * Use CloseScrollStrategy as alternative\n */\n get closeOnScroll(): boolean | null {\n return this._closeOnScroll;\n }\n\n set closeOnScroll(value: boolean) {\n this._closeOnScroll = coerceBooleanProperty(value);\n }\n\n private _closeOnScroll: boolean | null = null;\n\n /** Input (`kbqPopoverCloseOnScroll`) — sets {@link closeOnScroll}. */\n set popoverCloseOnScroll(value: boolean) {\n this.closeOnScroll = value;\n }\n\n /** Whether the trigger opens the popover on click, which is also what makes it a labelled dialog opener. */\n get hasClickTrigger(): boolean {\n return this.trigger.includes(PopUpTriggers.Click);\n }\n\n /**\n * Whether opening the popover should move the keyboard focus into the panel. Only deliberate opens\n * (click, keyboard, programmatic) do — a hover- or focus-triggered popover must not steal focus.\n */\n get capturesFocusOnOpen(): boolean {\n return this.autoFocus && (this.hasClickTrigger || this.deliberateOpen);\n }\n\n /** @docs-private */\n get instanceDestroyRef(): DestroyRef {\n return this.instance.destroyRef;\n }\n\n /** CSS class applied to the backdrop, when there is one. Bound with `kbqPopoverBackdropClass`. */\n get backdropClass(): string {\n return this._backdropClass;\n }\n\n set backdropClass(value: string) {\n this._backdropClass = value;\n\n this.invalidateOverlay();\n }\n\n private _backdropClass: string = defaultBackdropClass;\n\n /** Input (`kbqPopoverBackdropClass`) — sets {@link backdropClass}. */\n set popoverBackdropClass(value: string) {\n this.backdropClass = value;\n }\n\n /** Input (`kbqPopoverArrow`) — renders the arrow pointing at the trigger. */\n arrow: boolean = true;\n\n /** Input (`kbqPopoverOffset`) — distance between the trigger and the panel, in pixels. */\n offset: number | null = defaultOffsetYWithArrow;\n\n /**\n * Input (`kbqPopoverAutoFocus`) — whether opening the popover moves the keyboard focus into the panel. Turn it\n * off for a panel that must not disturb what the reader is doing: taking focus away from a text selection\n * collapses it. Focus then never enters the panel, so its content has to be reachable some other way.\n */\n autoFocus: boolean = true;\n\n /**\n * Input (`kbqPopoverOrigin`) — what the panel is positioned against: an element, or a rectangle in viewport\n * coordinates such as the one `kbqCreateCaretOrigin` keeps on the caret. `null` anchors it to the trigger.\n *\n * Bind it before `kbqPopoverVisible`, which opens the panel as it is written.\n */\n get popoverOrigin(): KbqOverlayOrigin | null {\n return this.origin;\n }\n\n set popoverOrigin(value: KbqOverlayOrigin | null) {\n this.updateOrigin(value);\n }\n\n /** Input (`kbqEnterDelay`) — delay before opening, in milliseconds. Defaults to `0`. */\n enterDelay: number = 0;\n\n /**\n * Input (`kbqLeaveDelay`) — delay before closing, in milliseconds. Defaults to `0`, and to\n * {@link defaultHoverLeaveDelay} when `kbqTrigger` includes `hover`.\n */\n // A write-only input rather than an accessor over `leaveDelay`: the base declares that member as a\n // plain field, and TypeScript refuses to override a property with an accessor (TS2611).\n set kbqLeaveDelay(value: number) {\n this.leaveDelay = value;\n // Tracked instead of comparing the delay against a sentinel: an explicit `kbqLeaveDelay=\"0\"` and an\n // unbound one are indistinguishable by value, and only the latter takes the hover default.\n this.leaveDelayBound = true;\n }\n\n private leaveDelayBound = false;\n\n /**\n * Emits the resolved placement whenever the panel is repositioned.\n *\n * Declared as `string` to match the abstract member on `KbqPopUpTrigger`: `EventEmitter` is invariant,\n * so a narrower emitter cannot override a wider one. Narrowing both is a change to the shared pop-up\n * base and belongs to the branch that owns it.\n */\n readonly placementChange = new EventEmitter<KbqPopUpPlacementValues>();\n\n /** @docs-private */\n readonly placementChangeOutput = outputFromObservable(this.placementChange, { alias: 'kbqPopoverPlacementChange' });\n\n /** Emits `true` when the panel opens and `false` when it closes. */\n readonly visibleChange = new EventEmitter<boolean>();\n\n /** @docs-private */\n readonly visibleChangeOutput = outputFromObservable(this.visibleChange, { alias: 'kbqPopoverVisibleChange' });\n\n protected originSelector = '.kbq-popover';\n\n /** Whether a position re-apply is already queued for this turn. */\n private repositionScheduled = false;\n\n /**\n * Whether the open currently on screen was a deliberate one rather than a pointer or focus one.\n *\n * The shared base records the event that opened the pop-up in `triggerName`, but its keyboard opener is\n * the one listener registered without that bookkeeping, and it defers the open to a task of its own —\n * by then `triggerName` still holds whatever the pointer last did. Frozen on every `show()`, which the\n * pointer and focus listeners reach with the name they have just written.\n */\n private deliberateOpen = true;\n\n // NB: the trigger↔popover gap is a CSS `margin` on `.kbq-popover` (see `applyPopupMargins`), which sits inside\n // this `pointer-events: auto` pane, so the gap band is already covered and not click/hover-through. This is why\n // the connected-overlay `offsetY`→in-pane-padding fix (KBQ_CONNECTED_OVERLAY_* / --kbq-connected-overlay-gap,\n // used by select/tree-select/autocomplete/datepicker) intentionally does NOT apply here — do not \"port\" it.\n // Guarded by the \"trigger↔panel gap is not click-through\" e2e tests in e2e.playwright-spec.ts.\n protected get overlayConfig(): OverlayConfig {\n return {\n panelClass: 'kbq-popover__panel',\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass\n };\n }\n\n /** @docs-private */\n readonly triggerInput = input<string | undefined>(undefined, { alias: 'kbqTrigger' });\n\n /** @docs-private */\n readonly kbqLeaveDelayInput = input<number | undefined, number | string | null | undefined>(undefined, {\n alias: 'kbqLeaveDelay',\n transform: kbqOptionalNumberAttribute\n });\n\n /** @docs-private */\n readonly enterDelayInput = input<number | undefined, number | string | null | undefined>(undefined, {\n alias: 'kbqEnterDelay',\n transform: kbqOptionalNumberAttribute\n });\n\n /** @docs-private */\n readonly preventCloseInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverPreventClose',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly stickToWindowInput = input<KbqStickToWindowPlacementValues | undefined>(undefined, {\n alias: 'kbqPopoverStickToWindow'\n });\n\n /** @docs-private */\n readonly popoverContainerInput = input<HTMLElement | undefined>(undefined, { alias: 'kbqPopoverContainer' });\n\n /** @docs-private */\n readonly popoverHasBackdropInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverHasBackdrop',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly popoverBackdropClassInput = input<string | undefined>(undefined, { alias: 'kbqPopoverBackdropClass' });\n\n /** @docs-private */\n readonly popoverDefaultPaddingsInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverDefaultPaddings',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly sizeInput = input<KbqPopUpSizeValues | undefined>(undefined, { alias: 'kbqPopoverSize' });\n\n /** @docs-private */\n readonly customClassInput = input<string | undefined>(undefined, { alias: 'kbqPopoverClass' });\n\n /** @docs-private */\n readonly headerInput: InputSignal<KbqPopoverTrigger['header'] | undefined> = input<\n KbqPopoverTrigger['header'] | undefined\n >(undefined, {\n alias: 'kbqPopoverHeader'\n });\n\n /** @docs-private */\n readonly contentInput: InputSignal<KbqPopoverTrigger['content'] | undefined> = input<\n KbqPopoverTrigger['content'] | undefined\n >(undefined, {\n alias: 'kbqPopoverContent'\n });\n\n /** @docs-private */\n readonly footerInput: InputSignal<KbqPopoverTrigger['footer'] | undefined> = input<\n KbqPopoverTrigger['footer'] | undefined\n >(undefined, {\n alias: 'kbqPopoverFooter'\n });\n\n /** @docs-private */\n readonly contextInput = input<NonNullable<unknown> | null | undefined>(undefined, { alias: 'kbqPopoverContext' });\n\n /** @docs-private */\n readonly ariaLabelInput = input<string | undefined>(undefined, { alias: 'kbqPopoverAriaLabel' });\n\n /** @docs-private */\n readonly popoverHasCloseButtonInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverHasCloseButton',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly popoverCloseOnScrollInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverCloseOnScroll',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly arrowInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverArrow',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly offsetInput = input<number | undefined, number | string | null | undefined>(undefined, {\n alias: 'kbqPopoverOffset',\n transform: kbqOptionalNumberAttribute\n });\n\n /** @docs-private */\n readonly autoFocusInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverAutoFocus',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly popoverOriginInput = input<KbqOverlayOrigin | null | undefined>(undefined, { alias: 'kbqPopoverOrigin' });\n\n /** @docs-private */\n readonly disabledInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverDisabled',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly popoverPlacementPriorityInput = input<string | string[] | null | undefined>(undefined, {\n alias: 'kbqPopoverPlacementPriority'\n });\n\n /** @docs-private */\n readonly popoverPlacementInput = input<KbqPopUpPlacementValues | undefined>(undefined, {\n alias: 'kbqPopoverPlacement'\n });\n\n /** @docs-private */\n readonly popoverVisibleInput = input<boolean | undefined>(undefined, { alias: 'kbqPopoverVisible' });\n\n ngOnChanges(changes: SimpleChanges): void {\n // A bound input is handed to its member, a bound `undefined` restoring the\n // member's default; unbound, it leaves what code wrote. The `booleanAttribute` inputs are the exception:\n // the transform reads a bound `undefined` as `false`.\n if (changes['triggerInput']) {\n this.trigger = this.triggerInput() ?? '';\n }\n\n if (changes['kbqLeaveDelayInput']) {\n const kbqLeaveDelay = this.kbqLeaveDelayInput();\n\n if (kbqLeaveDelay === undefined) {\n // Counts as unbound, so that a hover popover gets its default delay back.\n this.leaveDelayBound = false;\n this.leaveDelay = this.defaultLeaveDelay;\n } else {\n this.kbqLeaveDelay = kbqLeaveDelay;\n }\n }\n\n if (changes['enterDelayInput']) {\n this.enterDelay = this.enterDelayInput() ?? 0;\n }\n\n if (changes['preventCloseInput']) {\n const preventClose = this.preventCloseInput();\n\n if (preventClose !== undefined) this.preventClose = preventClose;\n }\n\n if (changes['stickToWindowInput']) {\n this.stickToWindow = this.stickToWindowInput();\n }\n\n if (changes['popoverContainerInput']) {\n this.popoverContainer = this.popoverContainerInput();\n }\n\n if (changes['popoverHasBackdropInput']) {\n const popoverHasBackdrop = this.popoverHasBackdropInput();\n\n if (popoverHasBackdrop !== undefined) this.popoverHasBackdrop = popoverHasBackdrop;\n }\n\n if (changes['popoverBackdropClassInput']) {\n this.popoverBackdropClass = this.popoverBackdropClassInput() ?? defaultBackdropClass;\n }\n\n if (changes['popoverDefaultPaddingsInput']) {\n const popoverDefaultPaddings = this.popoverDefaultPaddingsInput();\n\n if (popoverDefaultPaddings !== undefined) this.popoverDefaultPaddings = popoverDefaultPaddings;\n }\n\n if (changes['sizeInput']) {\n this.size = this.sizeInput() ?? PopUpSizes.Medium;\n }\n\n if (changes['customClassInput']) {\n this.customClass = this.customClassInput() ?? '';\n }\n\n if (changes['headerInput']) {\n this.header = this.headerInput() ?? '';\n }\n\n if (changes['contentInput']) {\n this.content = this.contentInput() ?? '';\n }\n\n if (changes['footerInput']) {\n this.footer = this.footerInput() ?? '';\n }\n\n if (changes['contextInput']) {\n this.context = this.contextInput();\n }\n\n if (changes['ariaLabelInput']) {\n this.ariaLabel = this.ariaLabelInput();\n }\n\n if (changes['popoverHasCloseButtonInput']) {\n const popoverHasCloseButton = this.popoverHasCloseButtonInput();\n\n if (popoverHasCloseButton !== undefined) this.popoverHasCloseButton = popoverHasCloseButton;\n }\n\n if (changes['popoverCloseOnScrollInput']) {\n const popoverCloseOnScroll = this.popoverCloseOnScrollInput();\n\n if (popoverCloseOnScroll !== undefined) this.popoverCloseOnScroll = popoverCloseOnScroll;\n }\n\n if (changes['arrowInput']) {\n const arrow = this.arrowInput();\n\n if (arrow !== undefined) this.arrow = arrow;\n }\n\n if (changes['offsetInput']) {\n this.offset = this.offsetInput() ?? defaultOffsetYWithArrow;\n }\n\n if (changes['autoFocusInput']) {\n const autoFocus = this.autoFocusInput();\n\n if (autoFocus !== undefined) this.autoFocus = autoFocus;\n }\n\n if (changes['popoverOriginInput']) {\n this.popoverOrigin = this.popoverOriginInput() ?? null;\n }\n\n if (changes['disabledInput']) {\n const disabled = this.disabledInput();\n\n if (disabled !== undefined) this.disabled = disabled;\n }\n\n if (changes['popoverPlacementPriorityInput']) {\n this.popoverPlacementPriority = this.popoverPlacementPriorityInput() ?? null;\n }\n\n if (changes['popoverPlacementInput']) {\n this.popoverPlacement = this.popoverPlacementInput() ?? PopUpPlacements.Top;\n }\n\n if (changes['popoverVisibleInput']) {\n this.popoverVisible = this.popoverVisibleInput() ?? false;\n }\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.scrollable\n ?.elementScrolled()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.hideIfScrolledOutOfView);\n }\n\n ngAfterContentInit(): void {\n if (this.closeOnScroll === null) {\n this.scrollDispatcher\n .scrolled()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.hideIfNestedPopupScrolledAway);\n }\n }\n\n /** @docs-private */\n show(delay: number = this.enterDelay): void {\n this.deliberateOpen = !passiveOpenEvents.includes(this.triggerName);\n\n super.show(delay);\n }\n\n /** @docs-private */\n updateData() {\n // Untracked: an input written from a consumer's `effect()` lands here, and `isOpen` read on the way would make\n // the effect run again on every open and close.\n untracked(() => this.pushData());\n }\n\n /** Body of `updateData()`. */\n private pushData(): void {\n if (!this.instance) return;\n\n this.instance.header = this.header;\n this.instance.content = this.content;\n // `!= null` rather than a truthy check: `0`, `''` and `false` are legitimate template contexts, and\n // dropping them left the template rendering the previous context instead.\n this.instance.context = this.context != null ? { $implicit: this.context } : null;\n // `setStickPosition` drops the arrow because a stuck panel no longer points at its trigger; copying\n // the input back would resurrect a detached rotated square on the next update.\n this.instance.arrow = this.stickToWindow ? false : this.arrow;\n this.instance.offset = this.offset;\n this.instance.footer = this.footer;\n this.instance.hasCloseButton = this.hasCloseButton;\n this.instance.defaultPaddings = this.defaultPaddings;\n this.instance.panelId = this.panelId;\n this.instance.ariaLabel = this.ariaLabel;\n\n this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);\n // As the tooltip does: this mostly runs from an input setter, while the trigger's view is being checked,\n // and the panel renders in an overlay of its own that nothing else would check.\n this.instance.detectChanges();\n\n if (this.isOpen) {\n this.scheduleReposition();\n }\n }\n\n /** @docs-private */\n override createOverlay(): OverlayRef {\n const overlayRef = super.createOverlay();\n\n // Read on every attach: a popover stuck to a window edge stays above the bars.\n this.overlayLayers.adopt(overlayRef, () => (this.stickToWindow ? null : this.getNativeElement()));\n\n return overlayRef;\n }\n\n /**\n * Re-applies the overlay position.\n *\n * Deliberately narrower than the inherited one, which also rebuilds the closing-action subscription:\n * that stream carries a `delay(0)`, so a reposition coalesced into the same task as an outside click —\n * which is the task in which that click's change detection writes a popover input — would drop the\n * close the click had already scheduled.\n */\n updatePosition(reapplyPosition: boolean = false) {\n this.overlayRef = this.createOverlay();\n\n const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n .withPositions(this.getAdjustedPositions())\n .withPush(true);\n\n if (reapplyPosition) {\n setTimeout(() => position.reapplyLastPosition());\n }\n }\n\n /** @docs-private */\n getOverlayHandleComponentType(): Type<KbqPopoverComponent> {\n return KbqPopoverComponent;\n }\n\n /** @docs-private */\n updateClassMap(newPlacement: string = this.placement) {\n if (!this.instance) {\n return;\n }\n\n this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);\n }\n\n /** @docs-private */\n closingActionsForClick() {\n if (this.hasClickTrigger) {\n return this.defaultClosingActions();\n }\n\n return [];\n }\n\n /** @docs-private */\n defaultClosingActions() {\n return [\n this.overlayRef!.backdropClick(),\n this.hasBackdrop ? NEVER : this.overlayRef!.outsidePointerEvents()\n ];\n }\n\n /** @docs-private */\n closingActions() {\n // Inner panel scrolling must not trigger closeOnScroll.\n const scrolled = this.closeOnScroll ? this.scrollDispatcher.ancestorScrolled(this.getNativeElement()) : NEVER;\n\n return merge(...this.closingActionsForClick(), scrolled);\n }\n\n /**\n * Returns focus to the trigger when the popover is closed while focus is still inside its panel.\n *\n * Goes through `FocusMonitor` rather than a native `focus()` call: the kbq focus ring is only rendered\n * for a monitored origin, and a `program` origin keeps a tooltip on the same element from re-opening.\n */\n restoreFocus(): void {\n if (!this.overlayRef?.overlayElement?.contains(this.document.activeElement)) return;\n\n this.focusMonitor.focusVia(this.getNativeElement(), 'program');\n }\n\n /**\n * Closes the popover on a deliberate action — the panel's close button, or `Escape` inside the panel.\n *\n * `hide()` keeps a hover popover open while the pointer rests on the panel, so that the pointer can\n * travel from the trigger to the content; that is exactly where the pointer is when the close button is\n * clicked, so a deliberate close answers to `kbqPopoverPreventClose` and to nothing else.\n */\n close(): void {\n if (this.preventClose) return;\n\n this.instance?.hide(0);\n }\n\n /**\n * Coalesces the position re-apply: a burst of input writes — or a parent change-detection pass that\n * recreates the object bound to `kbqPopoverContext` — schedules one reposition per turn instead of one\n * per write, each of which costs a forced layout read per candidate position.\n */\n private scheduleReposition(): void {\n if (this.repositionScheduled) return;\n\n this.repositionScheduled = true;\n\n queueMicrotask(() => {\n this.repositionScheduled = false;\n\n if (this.isOpen && this.overlayRef?.hasAttached()) {\n this.updatePosition(true);\n }\n });\n }\n\n /**\n * Drops a closed overlay so the next `show()` rebuilds it. The backdrop and its class are baked into the\n * overlay when it is created, and CDK does not re-render them from the config afterwards.\n */\n private invalidateOverlay(): void {\n if (!this.overlayRef || this.overlayRef.hasAttached()) return;\n\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n\n /** Closes the popover once it has scrolled out of its nearest scrollable ancestor. */\n private hideIfScrolledOutOfView = () => {\n if (!this.instance || !this.scrollable || !this.popoverHideIfNotInViewPort()) return;\n\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const containerRect = this.scrollable.getElementRef().nativeElement.getBoundingClientRect();\n\n const intersectsContainer =\n rect.bottom >= containerRect.top &&\n rect.right >= containerRect.left &&\n rect.top <= containerRect.bottom &&\n rect.left <= containerRect.right;\n\n if (!intersectsContainer) {\n this.hide();\n }\n };\n\n /** Closes the popover once its trigger has scrolled out of a `.kbq-hide-nested-popup` container. */\n private hideIfNestedPopupScrolledAway = (scrollable: CdkScrollable | void) => {\n if (!this.instance) return;\n\n if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup')) return;\n\n const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();\n const childRects = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {\n this.hide();\n }\n };\n}\n","<!--\n The dialog role is dropped when nothing names the panel: a screen reader announces an unnamed dialog as\n just \"dialog\", and the `aria-dialog-name` audit fails it. A named panel keeps the role.\n-->\n<div\n #popover\n class=\"kbq-popover\"\n [attr.role]=\"labelledByHeader || ariaLabel ? 'dialog' : null\"\n [attr.aria-label]=\"labelledByHeader ? null : ariaLabel\"\n [attr.aria-labelledby]=\"labelledByHeader ? headerId : null\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\" [id]=\"headerId\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n kbqScrollbarViewport\n class=\"kbq-popover__content\"\n [attr.tabindex]=\"isScrollableRegion(popoverContent) ? 0 : null\"\n [attr.role]=\"isScrollableRegion(popoverContent) && labelledByHeader ? 'region' : null\"\n [attr.aria-labelledby]=\"isScrollableRegion(popoverContent) && labelledByHeader ? headerId : null\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"contentObserverDebounce\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton) {\n <div class=\"kbq-popover__close-container\" [class.kbq-popover__close-container_without-header]=\"!header\">\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button\n kbq-button\n class=\"kbq-button_transparent\"\n [attr.aria-label]=\"a11yLocaleConfiguration().close\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClose()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </div>\n }\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n effect,\n inject,\n InjectionToken,\n input,\n output,\n signal,\n SimpleChanges,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { kbqInjectPopoverConfirmLocaleConfiguration, kbqSiblingPopupProvider } from '@koobiq/components/core';\nimport { Subject } from 'rxjs';\nimport { KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, KbqPopoverComponent, KbqPopoverTrigger } from './popover.component';\n\n/**\n * Overrides the question of every confirmation popover in the injector scope. Takes precedence over the\n * locale, but not over the `kbqPopoverConfirmText` input.\n */\nexport const KBQ_POPOVER_CONFIRM_TEXT = new InjectionToken<string>('KbqPopoverConfirmText');\n\n/**\n * Overrides the confirm-button caption of every confirmation popover in the injector scope. Takes precedence\n * over the locale, but not over the `kbqPopoverConfirmButtonText` input.\n */\nexport const KBQ_POPOVER_CONFIRM_BUTTON_TEXT = new InjectionToken<string>('KbqPopoverConfirmButtonText');\n\n@Component({\n selector: 'kbq-popover-confirm-component',\n imports: [\n CdkTrapFocus,\n KbqButtonModule\n ],\n templateUrl: './popover-confirm.component.html',\n styleUrls: ['./popover.scss', './popover-tokens.scss'],\n // Repeated rather than inherited: Angular copies `providers` to a subclass only when that subclass has\n // no decorator of its own.\n providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class KbqPopoverConfirmComponent extends KbqPopoverComponent {\n /**\n * Emits when the confirm button is pressed. Internal channel between the panel and its trigger — consume\n * the trigger's `confirm` output instead.\n *\n * @docs-private\n */\n readonly onConfirm = new Subject<void>();\n\n /** Caption of the confirm button. Written by the trigger. */\n get confirmButtonText(): string {\n return this.confirmButtonTextState();\n }\n\n set confirmButtonText(value: string) {\n this.confirmButtonTextState.set(value);\n }\n\n private readonly confirmButtonTextState = signal<string>(undefined!);\n\n /** Question rendered in the panel. Written by the trigger. */\n get confirmText(): string {\n return this.confirmTextState();\n }\n\n set confirmText(value: string) {\n this.confirmTextState.set(value);\n }\n\n private readonly confirmTextState = signal<string>(undefined!);\n}\n\n@Directive({\n selector: '[kbqPopoverConfirm]',\n // Declared again rather than inherited from `KbqPopoverTrigger`: Angular copies `providers` to a subclass\n // only when that subclass has no decorator of its own.\n providers: [kbqSiblingPopupProvider(KbqPopoverConfirmTrigger)],\n host: {\n '[class.kbq-popover_open]': 'isOpen',\n '[attr.aria-expanded]': 'hasClickTrigger ? isOpen : null',\n '[attr.aria-haspopup]': 'hasClickTrigger ? \"dialog\" : null',\n '[attr.aria-controls]': 'hasClickTrigger && isOpen ? panelId : null',\n '(keydown)': 'keydownHandler($event)',\n '(touchend)': 'touchendHandler()'\n },\n exportAs: 'kbqPopoverConfirm'\n})\nexport class KbqPopoverConfirmTrigger extends KbqPopoverTrigger {\n /** Emits when the user confirms the action. */\n readonly confirm = output<void>();\n\n private readonly localeConfiguration = kbqInjectPopoverConfirmLocaleConfiguration();\n private readonly externalConfirmText = inject(KBQ_POPOVER_CONFIRM_TEXT, { optional: true });\n private readonly externalConfirmButtonText = inject(KBQ_POPOVER_CONFIRM_BUTTON_TEXT, { optional: true });\n\n /**\n * Input (`kbqPopoverConfirmText`) — question rendered in the panel. Falls back to\n * {@link KBQ_POPOVER_CONFIRM_TEXT} and then to the `popoverConfirm` section of the active locale while\n * unset or `undefined`.\n */\n get confirmText(): string {\n return this._confirmText() ?? this.externalConfirmText ?? this.localeConfiguration().confirmText;\n }\n\n set confirmText(value: string | undefined) {\n this._confirmText.set(value);\n\n this.updateData();\n }\n\n private readonly _confirmText = signal<string | undefined>(undefined);\n\n /**\n * Input (`kbqPopoverConfirmButtonText`) — caption of the confirm button. Falls back to\n * {@link KBQ_POPOVER_CONFIRM_BUTTON_TEXT} and then to the `popoverConfirm` section of the active locale\n * while unset or `undefined`.\n */\n get confirmButtonText(): string {\n return (\n this._confirmButtonText() ?? this.externalConfirmButtonText ?? this.localeConfiguration().confirmButtonText\n );\n }\n\n set confirmButtonText(value: string | undefined) {\n this._confirmButtonText.set(value);\n\n this.updateData();\n }\n\n private readonly _confirmButtonText = signal<string | undefined>(undefined);\n\n /** Panel the confirm handler is currently wired to, so it is wired once per attach. */\n private wiredInstance: KbqPopoverConfirmComponent | null = null;\n\n /** @docs-private */\n readonly confirmTextInput = input<string | undefined>(undefined, { alias: 'kbqPopoverConfirmText' });\n\n /** @docs-private */\n readonly confirmButtonTextInput = input<string | undefined>(undefined, { alias: 'kbqPopoverConfirmButtonText' });\n\n override ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n\n // A bound input is handed to its member, a bound `undefined` restoring the\n // fallback; unbound, it leaves what code wrote.\n if (changes['confirmTextInput']) {\n this.confirmText = this.confirmTextInput();\n }\n\n if (changes['confirmButtonTextInput']) {\n this.confirmButtonText = this.confirmButtonTextInput();\n }\n }\n\n constructor() {\n super();\n\n // The strings are resolved from signals (input, token, locale), so switching the locale while the\n // popover is open has to reach the live panel — `updateData` alone only runs on input writes.\n effect(() => {\n const confirmText = this.confirmText;\n const confirmButtonText = this.confirmButtonText;\n\n if (!this.instance) return;\n\n this.instance.confirmText = confirmText;\n this.instance.confirmButtonText = confirmButtonText;\n });\n }\n\n /** @docs-private */\n updateData() {\n if (!this.instance) {\n return;\n }\n\n // Before `super.updateData()`, which renders the panel. Untracked as there: the texts follow the inputs and the\n // locale.\n untracked(() => {\n this.instance.confirmButtonText = this.confirmButtonText;\n this.instance.confirmText = this.confirmText;\n });\n\n super.updateData();\n\n if (this.wiredInstance !== this.instance) {\n this.wiredInstance = this.instance;\n\n this.setupButtonEvents();\n }\n }\n\n /**\n * Subscribes to the panel's confirm button. Called once per attach: the subscription is scoped to the\n * panel, so it dies with it.\n *\n * @docs-private\n */\n setupButtonEvents() {\n this.instance.onConfirm.pipe(takeUntilDestroyed(this.instanceDestroyRef)).subscribe(() => {\n this.confirm.emit();\n this.hide();\n });\n }\n\n /** @docs-private */\n getOverlayHandleComponentType() {\n return KbqPopoverConfirmComponent;\n }\n}\n","<div\n #popover\n role=\"dialog\"\n class=\"kbq-popover-confirm kbq-popover\"\n [attr.aria-label]=\"confirmText\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\" [class.kbq-popover__content_default-paddings]=\"defaultPaddings\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"componentColors.Contrast\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger } from './popover-confirm.component';\nimport { KbqPopoverComponent, KbqPopoverTrigger } from './popover.component';\n\n@NgModule({\n imports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger],\n exports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger]\n})\nexport class KbqPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAuEO,MAAM,uBAAuB,GAAG;AAEvC;AACO,MAAM,sBAAsB,GAAG;AAEtC;AACA,MAAM,oBAAoB,GAAG,kCAAkC;AAE/D;AACA,MAAM,uBAAuB,GAAG,EAAE;AAElC;AACA,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC;AAEjD,IAAI,YAAY,GAAG,CAAC;AAEpB;;;;;;;AAOG;AACI,MAAM,gCAAgC,GAAe;AACxD,IAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B,EAAE;AACrE,IAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,sBAAsB;;AA0BpE,MAAO,mBAAoB,SAAQ,QAAQ,CAAA;AAvBjD,IAAA,WAAA,GAAA;;;QAyBuB,IAAA,CAAA,uBAAuB,GAAG,gCAAgC,EAAE;;QAG5D,IAAA,CAAA,uBAAuB,GAAG,uBAAuB;QAEpE,IAAA,CAAA,MAAM,GAAG,aAAa;QAOtB,IAAA,CAAA,WAAW,GAAY,KAAK;QAC5B,IAAA,CAAA,cAAc,GAAY,KAAK;AAQd,QAAA,IAAA,CAAA,cAAc,GAAG,SAAS,CAA0B,SAAS,qFAAC;AAYtE,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;;AAE/C,QAAA,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAAC,0BAA0B,wFAAC;AAEjD,QAAA,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAAC,oBAAoB,wFAAC;QA8FjD,IAAA,CAAA,eAAe,GAAG,kBAAkB;AAC1D,IAAA;AA7GG;;;;;;AAMG;AACH,IAAA,IAAa,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAG;IACjC;;AAQA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,SAAS;IACnC;AAEA;;;AAGG;AACH,IAAA,IAAc,gBAAgB,GAAA;AAC1B,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5D;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC7E,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;gBAClD,iBAAiB,CACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,MAAM,EACX,CAAA,EAAG,IAAI,CAAC,MAAO,CAAC,QAAQ,EAAE,CAAA,EAAA,CAAI,CACjC;gBAED,IAAI,CAAC,gBAAgB,EAAE;YAC3B;;;YAIA,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE;YAChC;AACJ,QAAA,CAAC,CAAC;;;QAIF,IAAI,IAAI,CAAC,OAAO,EAAE,mBAAmB,IAAI,IAAI,EAAE;YAC3C,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,yBAAyB,EAAE;QAC7D;IACJ;AAEA,IAAA,cAAc,CAAC,SAAiB,EAAE,WAAmB,EAAE,IAAwB,EAAA;QAC3E,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxF;AAEA,IAAA,eAAe,CAAC,WAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;IAClC;;AAGA,IAAA,QAAQ,CAAC,KAAa,EAAA;QAClB,IAAI,KAAK,EAAE,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY;YAAE;;QAG3D,KAAK,EAAE,cAAc,EAAE;QACvB,IAAI,CAAC,YAAY,EAAE;IACvB;;IAGU,OAAO,GAAA;QACb,IAAI,CAAC,YAAY,EAAE;IACvB;AAEA;;;;;;;AAOG;IACK,YAAY,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACxB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChB;IACJ;AAEA;;;AAGG;AACO,IAAA,kBAAkB,CAAC,SAAqC,EAAA;QAC9D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE;QAE5C,OAAO,GAAG,IAAI,MAAM;IACxB;IAEmB,kBAAkB,GAAA;AACjC,QAAA,IAAI,CAAC,iBAAiB,EAAE,EAAE,qBAAqB,EAAE;IACrD;kIAnIS,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EARjB,gCAAgC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA2CA,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEhB,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAElB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClKvE,u4HA6FA,EAAA,MAAA,EAAA,CAAA,8iSAAA,EAAA,q7CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDUQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,oBAAoB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,0BAA0B,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,oBAAoB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAYlB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAvB/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB;wBACL,gBAAgB;wBAChB,iBAAiB;wBACjB,eAAe;wBACf,aAAa;wBACb,oBAAoB;wBACpB,YAAY;wBACZ,0BAA0B;wBAC1B,oBAAoB;wBACpB;qBACH,EAAA,SAAA,EAGU,gCAAgC,mBAC1B,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACF,wBAAA,eAAe,EAAE;AACpB,qBAAA,EAAA,mBAAA,EACoB,KAAK,EAAA,QAAA,EAAA,u4HAAA,EAAA,MAAA,EAAA,CAAA,8iSAAA,EAAA,q7CAAA,CAAA,EAAA;AAyB2C,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAYnC,YAAY,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEhB,0BAA0B,gGAElB,oBAAoB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;MAiG1D,2BAA2B,GAAG,IAAI,cAAc,CAAuB,6BAA6B,EAAE;AAC/G,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAM,+BAA+B,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAC1E,CAAA;AAED;AACM,SAAU,+BAA+B,CAAC,gBAAkC,EAAA;IAC9E,OAAO,kCAAkC,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;AACvF;AAEA;;;;AAIG;AACI,MAAM,4CAA4C,GAAG;AACxD,IAAA,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,CAAC,gBAAgB,CAAC;AACxB,IAAA,UAAU,EAAE;;AAiBV,MAAO,iBACT,SAAQ,eAAoC,CAAA;AAfhD,IAAA,WAAA,GAAA;;AAkBc,QAAA,IAAA,CAAA,cAAc,GAAyB,MAAM,CAAC,2BAA2B,CAAC;AAEnE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC;;AAGlD,QAAA,IAAA,CAAA,OAAO,GAAW,CAAA,YAAA,EAAe,YAAY,EAAE,EAAE;AAE1D;;;AAGG;AACM,QAAA,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAAmB,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,CAAA,EAC9D,KAAK,EAAE,+BAA+B;YACtC,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAA,CACxE;;QAGO,IAAA,CAAA,YAAY,GAAY,KAAK;;QAGtC,IAAA,CAAA,eAAe,GAAG,IAAI;QA8Dd,IAAA,CAAA,YAAY,GAAY,KAAK;QAuF7B,IAAA,CAAA,QAAQ,GAAW,CAAA,EAAG,aAAa,CAAC,KAAK,KAAK,aAAa,CAAC,OAAO,CAAA,CAAE;AAyBrE,QAAA,IAAA,CAAA,KAAK,GAAuB,UAAU,CAAC,MAAM;QAuB7C,IAAA,CAAA,QAAQ,GAAY,IAAI;QA4BxB,IAAA,CAAA,eAAe,GAAG,KAAK;QAyBvB,IAAA,CAAA,cAAc,GAAmB,IAAI;QAoCrC,IAAA,CAAA,cAAc,GAAW,oBAAoB;;QAQrD,IAAA,CAAA,KAAK,GAAY,IAAI;;QAGrB,IAAA,CAAA,MAAM,GAAkB,uBAAuB;AAE/C;;;;AAIG;QACH,IAAA,CAAA,SAAS,GAAY,IAAI;;QAiBzB,IAAA,CAAA,UAAU,GAAW,CAAC;QAed,IAAA,CAAA,eAAe,GAAG,KAAK;AAE/B;;;;;;AAMG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAA2B;;AAG7D,QAAA,IAAA,CAAA,qBAAqB,GAAG,oBAAoB,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;;AAG1G,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;;AAG3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QAEnG,IAAA,CAAA,cAAc,GAAG,cAAc;;QAGjC,IAAA,CAAA,mBAAmB,GAAG,KAAK;AAEnC;;;;;;;AAOG;QACK,IAAA,CAAA,cAAc,GAAG,IAAI;;QAgBpB,IAAA,CAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,oFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;;AAG5E,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAyD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,CAAA,EACjG,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,0BAA0B,EAAA,CACvC;;AAGO,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAyD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,CAAA,EAC9F,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,0BAA0B,EAAA,CACvC;;AAGO,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,CAAA,EAClG,KAAK,EAAE,wBAAwB;YAC/B,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;QAGO,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAA8C,SAAS,0FACtF,KAAK,EAAE,yBAAyB,EAAA,CAClC;;QAGO,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAA0B,SAAS,6FAAI,KAAK,EAAE,qBAAqB,EAAA,CAAG;;AAGnG,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,8BAAA,EAAA,CAAA,EACxG,KAAK,EAAE,uBAAuB;YAC9B,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;QAGO,IAAA,CAAA,yBAAyB,GAAG,KAAK,CAAqB,SAAS,iGAAI,KAAK,EAAE,yBAAyB,EAAA,CAAG;;AAGtG,QAAA,IAAA,CAAA,2BAA2B,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,CAAA,EAC5G,KAAK,EAAE,2BAA2B;YAClC,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;QAGO,IAAA,CAAA,SAAS,GAAG,KAAK,CAAiC,SAAS,iFAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;;QAGzF,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,wFAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;;QAGrF,IAAA,CAAA,WAAW,GAAyD,KAAK,CAEhF,SAAS,mFACP,KAAK,EAAE,kBAAkB,EAAA,CAC3B;;QAGO,IAAA,CAAA,YAAY,GAA0D,KAAK,CAElF,SAAS,oFACP,KAAK,EAAE,mBAAmB,EAAA,CAC5B;;QAGO,IAAA,CAAA,WAAW,GAAyD,KAAK,CAEhF,SAAS,mFACP,KAAK,EAAE,kBAAkB,EAAA,CAC3B;;QAGO,IAAA,CAAA,YAAY,GAAG,KAAK,CAA0C,SAAS,oFAAI,KAAK,EAAE,mBAAmB,EAAA,CAAG;;QAGxG,IAAA,CAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,sFAAI,KAAK,EAAE,qBAAqB,EAAA,CAAG;;AAGvF,QAAA,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,CAAA,EAC3G,KAAK,EAAE,0BAA0B;YACjC,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;AAGO,QAAA,IAAA,CAAA,yBAAyB,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,8BAAA,EAAA,CAAA,EAC1G,KAAK,EAAE,yBAAyB;YAChC,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;AAGO,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAC3F,KAAK,EAAE,iBAAiB;YACxB,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;AAGO,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAyD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,CAAA,EAC1F,KAAK,EAAE,kBAAkB;YACzB,SAAS,EAAE,0BAA0B,EAAA,CACvC;;AAGO,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,8BAAA,EAAA,CAAA,EAC/F,KAAK,EAAE,qBAAqB;YAC5B,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;QAGO,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAsC,SAAS,0FAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;;AAGzG,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EAC9F,KAAK,EAAE,oBAAoB;YAC3B,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;QAGO,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAAuC,SAAS,qGAC1F,KAAK,EAAE,6BAA6B,EAAA,CACtC;;QAGO,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAsC,SAAS,6FACjF,KAAK,EAAE,qBAAqB,EAAA,CAC9B;;QAGO,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAsB,SAAS,2FAAI,KAAK,EAAE,mBAAmB,EAAA,CAAG;;QAiU5F,IAAA,CAAA,uBAAuB,GAAG,MAAK;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBAAE;YAE9E,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAClE,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;YAE3F,MAAM,mBAAmB,GACrB,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG;AAChC,gBAAA,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI;AAChC,gBAAA,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC,MAAM;AAChC,gBAAA,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC,KAAK;YAEpC,IAAI,CAAC,mBAAmB,EAAE;gBACtB,IAAI,CAAC,IAAI,EAAE;YACf;AACJ,QAAA,CAAC;;AAGO,QAAA,IAAA,CAAA,6BAA6B,GAAG,CAAC,UAAgC,KAAI;YACzE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE;AAEpB,YAAA,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE;YAE5F,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;YACpF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAExE,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE;gBAC5E,IAAI,CAAC,IAAI,EAAE;YACf;AACJ,QAAA,CAAC;AACJ,IAAA;;IA31BG,IAAI,sBAAsB,CAAC,KAAc,EAAA;AACrC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;IAChC;;AAGA,IAAA,IAAI,cAAc,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,IAAI,cAAc,CAAC,KAAc,EAAA;AAC7B,QAAA,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;IAC9B;;AAGA,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,gBAAgB,CAAC,KAA8B,EAAA;AAC/C,QAAA,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;IAChC;;AAGA,IAAA,IAAI,wBAAwB,GAAA;QACxB,OAAO,IAAI,CAAC,iBAAiB;IACjC;IAEA,IAAI,wBAAwB,CAAC,KAAK,EAAA;AAC9B,QAAA,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC;IACxC;;IAYA,IAAI,gBAAgB,CAAC,KAA8B,EAAA;AAC/C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;AAEA;;;AAGG;AACH,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY;IAC5B;IAEA,IAAI,WAAW,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAEhD,IAAI,CAAC,iBAAiB,EAAE;IAC5B;;IAKA,IAAI,kBAAkB,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;;AAGA,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,IAAI,MAAM,CAAC,KAAgC,EAAA;AACvC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QAEpB,IAAI,CAAC,UAAU,EAAE;IACrB;;AAKA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,IAAI,OAAO,CAAC,KAAgC,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QAErB,IAAI,CAAC,UAAU,EAAE;IACrB;;AAGA,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,IAAI,MAAM,CAAC,KAAgC,EAAA;AACvC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QAEpB,IAAI,CAAC,UAAU,EAAE;IACrB;;AAKA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAE7C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,IAAI,EAAE;QACf;IACJ;AAEA;;;;AAIG;AACH,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,IAAI,OAAO,CAAC,KAAa,EAAA;QACrB,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;YAErB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC/B;QACJ;aAAO;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAG,aAAa,CAAC,KAAK,CAAA,EAAA,EAAK,aAAa,CAAC,OAAO,CAAA,CAAE;QACtE;;;;AAKA,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB;QAC5C;QAEA,IAAI,CAAC,aAAa,EAAE;IACxB;;AAKA,IAAA,IAAY,iBAAiB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,sBAAsB,GAAG,CAAC;IACnF;;AAGA,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,IAAI,CAAC,KAAyB,EAAA;QAC9B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAmB,CAAC,EAAE;AAC1G,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAElB,IAAI,CAAC,cAAc,EAAE;QACzB;aAAO;AACH,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM;;YAG9B,OAAO,CAAC,IAAI,CAAC,CAAA,cAAA,EAAiB,KAAK,CAAA,6BAAA,EAAgC,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QACpF;IACJ;;AAKA,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY;IAC5B;IAEA,IAAI,WAAW,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,CAAC,cAAc,EAAE;IACzB;;AAGA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,IAAI,OAAO,CAAC,GAAG,EAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;QACnB,IAAI,CAAC,UAAU,EAAE;IACrB;AAIA;;;AAGG;AACH,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU;IAC1B;IAEA,IAAI,SAAS,CAAC,KAAyB,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QAEvB,IAAI,CAAC,UAAU,EAAE;IACrB;;AAKA,IAAA,IAAI,cAAc,GAAA;QACd,OAAO,IAAI,CAAC,eAAe;IAC/B;IAEA,IAAI,cAAc,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC5B,IAAI,CAAC,UAAU,EAAE;IACrB;;IAKA,IAAI,qBAAqB,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC/B;AAEA;;;;;;;;;AASG;AACH,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,cAAc;IAC9B;IAEA,IAAI,aAAa,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACtD;;IAKA,IAAI,oBAAoB,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;;AAGA,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;IACrD;AAEA;;;AAGG;AACH,IAAA,IAAI,mBAAmB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC;IAC1E;;AAGA,IAAA,IAAI,kBAAkB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU;IACnC;;AAGA,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,cAAc;IAC9B;IAEA,IAAI,aAAa,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAE3B,IAAI,CAAC,iBAAiB,EAAE;IAC5B;;IAKA,IAAI,oBAAoB,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;AAeA;;;;;AAKG;AACH,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAI,aAAa,CAAC,KAA8B,EAAA;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC5B;AAKA;;;AAGG;;;IAGH,IAAI,aAAa,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;;AAGvB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;IAC/B;;;;;;AA0CA,IAAA,IAAc,aAAa,GAAA;QACvB,OAAO;AACH,YAAA,UAAU,EAAE,oBAAoB;YAChC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC;SACvB;IACL;AAmIA,IAAA,WAAW,CAAC,OAAsB,EAAA;;;;AAI9B,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;QAC5C;AAEA,QAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE;AAC/B,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAE/C,YAAA,IAAI,aAAa,KAAK,SAAS,EAAE;;AAE7B,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB;YAC5C;iBAAO;AACH,gBAAA,IAAI,CAAC,aAAa,GAAG,aAAa;YACtC;QACJ;AAEA,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE;YAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC;QACjD;AAEA,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;AAC9B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE;YAE7C,IAAI,YAAY,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,YAAY,GAAG,YAAY;QACpE;AAEA,QAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAClD;AAEA,QAAA,IAAI,OAAO,CAAC,uBAAuB,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE;QACxD;AAEA,QAAA,IAAI,OAAO,CAAC,yBAAyB,CAAC,EAAE;AACpC,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,EAAE;YAEzD,IAAI,kBAAkB,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;QACtF;AAEA,QAAA,IAAI,OAAO,CAAC,2BAA2B,CAAC,EAAE;YACtC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,EAAE,IAAI,oBAAoB;QACxF;AAEA,QAAA,IAAI,OAAO,CAAC,6BAA6B,CAAC,EAAE;AACxC,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,2BAA2B,EAAE;YAEjE,IAAI,sBAAsB,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,sBAAsB,GAAG,sBAAsB;QAClG;AAEA,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,MAAM;QACrD;AAEA,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE;QACpD;AAEA,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;QAC1C;AAEA,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;QAC5C;AAEA,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;QAC1C;AAEA,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;QACtC;AAEA,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;QAC1C;AAEA,QAAA,IAAI,OAAO,CAAC,4BAA4B,CAAC,EAAE;AACvC,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,0BAA0B,EAAE;YAE/D,IAAI,qBAAqB,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,qBAAqB,GAAG,qBAAqB;QAC/F;AAEA,QAAA,IAAI,OAAO,CAAC,2BAA2B,CAAC,EAAE;AACtC,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,EAAE;YAE7D,IAAI,oBAAoB,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,oBAAoB;QAC5F;AAEA,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AACvB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;YAE/B,IAAI,KAAK,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAC/C;AAEA,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,uBAAuB;QAC/D;AAEA,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE;AAC3B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;YAEvC,IAAI,SAAS,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAC3D;AAEA,QAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI;QAC1D;AAEA,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;YAErC,IAAI,QAAQ,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxD;AAEA,QAAA,IAAI,OAAO,CAAC,+BAA+B,CAAC,EAAE;YAC1C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI;QAChF;AAEA,QAAA,IAAI,OAAO,CAAC,uBAAuB,CAAC,EAAE;YAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,IAAI,eAAe,CAAC,GAAG;QAC/E;AAEA,QAAA,IAAI,OAAO,CAAC,qBAAqB,CAAC,EAAE;YAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,KAAK;QAC7D;IACJ;IAEA,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAEhB,QAAA,IAAI,CAAC;AACD,cAAE,eAAe;AAChB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAChD;IAEA,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;AAC7B,YAAA,IAAI,CAAC;AACA,iBAAA,QAAQ;AACR,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,iBAAA,SAAS,CAAC,IAAI,CAAC,6BAA6B,CAAC;QACtD;IACJ;;AAGA,IAAA,IAAI,CAAC,KAAA,GAAgB,IAAI,CAAC,UAAU,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AAEnE,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACrB;;IAGA,UAAU,GAAA;;;QAGN,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpC;;IAGQ,QAAQ,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QAEpB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;;QAGpC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;;;AAGjF,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK;QAC7D,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAClC,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QAClD,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;QACpD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;QACpC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AAExC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC;;;AAGnE,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AAE7B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;;IAGS,aAAa,GAAA;AAClB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE;;QAGxC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAEjG,QAAA,OAAO,UAAU;IACrB;AAEA;;;;;;;AAOG;IACH,cAAc,CAAC,kBAA2B,KAAK,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QAEtC,MAAM,QAAQ,GAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;AACzC,aAAA,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE;aACzC,QAAQ,CAAC,IAAI,CAAC;QAEnB,IAAI,eAAe,EAAE;YACjB,UAAU,CAAC,MAAM,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACpD;IACJ;;IAGA,6BAA6B,GAAA;AACzB,QAAA,OAAO,mBAAmB;IAC9B;;AAGA,IAAA,cAAc,CAAC,YAAA,GAAuB,IAAI,CAAC,SAAS,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB;QACJ;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;IAChG;;IAGA,sBAAsB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE;QACvC;AAEA,QAAA,OAAO,EAAE;IACb;;IAGA,qBAAqB,GAAA;QACjB,OAAO;AACH,YAAA,IAAI,CAAC,UAAW,CAAC,aAAa,EAAE;AAChC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,UAAW,CAAC,oBAAoB;SACnE;IACL;;IAGA,cAAc,GAAA;;QAEV,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,KAAK;QAE7G,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,EAAE,QAAQ,CAAC;IAC5D;AAEA;;;;;AAKG;IACH,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE;AAE7E,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,CAAC;IAClE;AAEA;;;;;;AAMG;IACH,KAAK,GAAA;QACD,IAAI,IAAI,CAAC,YAAY;YAAE;AAEvB,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1B;AAEA;;;;AAIG;IACK,kBAAkB,GAAA;QACtB,IAAI,IAAI,CAAC,mBAAmB;YAAE;AAE9B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAE/B,cAAc,CAAC,MAAK;AAChB,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;YAEhC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE;AAC/C,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC7B;AACJ,QAAA,CAAC,CAAC;IACN;AAEA;;;AAGG;IACK,iBAAiB,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YAAE;AAEvD,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IAC1B;kIAv1BS,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,qvJAZf,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAY9C,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,SAAS,EAAE,CAAC,uBAAuB,CAAA,iBAAA,CAAmB,CAAC;AACvD,oBAAA,IAAI,EAAE;AACF,wBAAA,0BAA0B,EAAE,QAAQ;AACpC,wBAAA,oBAAoB,EAAE,2BAA2B;AACjD,wBAAA,sBAAsB,EAAE,iCAAiC;AACzD,wBAAA,sBAAsB,EAAE,mCAAmC;AAC3D,wBAAA,sBAAsB,EAAE,4CAA4C;AACpE,wBAAA,WAAW,EAAE,wBAAwB;AACrC,wBAAA,YAAY,EAAE;AACjB,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;AEhRD;;;AAGG;MACU,wBAAwB,GAAG,IAAI,cAAc,CAAS,uBAAuB;AAE1F;;;AAGG;MACU,+BAA+B,GAAG,IAAI,cAAc,CAAS,6BAA6B;AAiBjG,MAAO,0BAA2B,SAAQ,mBAAmB,CAAA;AAfnE,IAAA,WAAA,GAAA;;AAgBI;;;;;AAKG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAWvB,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAS,SAAU,6FAAC;AAWnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAS,SAAU,uFAAC;AACjE,IAAA;;AApBG,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE;IACxC;IAEA,IAAI,iBAAiB,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1C;;AAKA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE;IAClC;IAEA,IAAI,WAAW,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;IACpC;kIA3BS,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,4EALxB,gCAAgC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3C/C,80BAyBA,EAAA,MAAA,EAAA,CAAA,8iSAAA,EAAA,q7CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDWQ,YAAY,2IACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAWV,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAftC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAAA,OAAA,EAChC;wBACL,YAAY;wBACZ;qBACH,EAAA,SAAA,EAKU,gCAAgC,EAAA,eAAA,EAC1B,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,mBAAA,EAChB,KAAK,EAAA,QAAA,EAAA,80BAAA,EAAA,MAAA,EAAA,CAAA,8iSAAA,EAAA,q7CAAA,CAAA,EAAA;;AAiDxB,MAAO,wBAAyB,SAAQ,iBAAiB,CAAA;AAQ3D;;;;AAIG;AACH,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,WAAW;IACpG;IAEA,IAAI,WAAW,CAAC,KAAyB,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;QAE5B,IAAI,CAAC,UAAU,EAAE;IACrB;AAIA;;;;AAIG;AACH,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,QACI,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,iBAAiB;IAEnH;IAEA,IAAI,iBAAiB,CAAC,KAAyB,EAAA;AAC3C,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;QAElC,IAAI,CAAC,UAAU,EAAE;IACrB;AAaS,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;;;AAI1B,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAC9C;AAEA,QAAA,IAAI,OAAO,CAAC,wBAAwB,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAC1D;IACJ;AAEA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;QAlEF,IAAA,CAAA,OAAO,GAAG,MAAM,EAAQ;QAEhB,IAAA,CAAA,mBAAmB,GAAG,0CAA0C,EAAE;QAClE,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1E,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAiBvF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAqB,SAAS,mFAAC;AAmBpD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAqB,SAAS,yFAAC;;QAGnE,IAAA,CAAA,aAAa,GAAsC,IAAI;;QAGtD,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,wFAAI,KAAK,EAAE,uBAAuB,EAAA,CAAG;;QAG3F,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,8FAAI,KAAK,EAAE,6BAA6B,EAAA,CAAG;;;QAqB5G,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;YAEhD,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE;AAEpB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,WAAW;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,iBAAiB;AACvD,QAAA,CAAC,CAAC;IACN;;IAGA,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB;QACJ;;;QAIA,SAAS,CAAC,MAAK;YACX,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;YACxD,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AAChD,QAAA,CAAC,CAAC;QAEF,KAAK,CAAC,UAAU,EAAE;QAElB,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,EAAE;AACtC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;YAElC,IAAI,CAAC,iBAAiB,EAAE;QAC5B;IACJ;AAEA;;;;;AAKG;IACH,iBAAiB,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACrF,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,IAAI,EAAE;AACf,QAAA,CAAC,CAAC;IACN;;IAGA,6BAA6B,GAAA;AACzB,QAAA,OAAO,0BAA0B;IACrC;kIAzHS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,0wBAXtB,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAWrD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;;;AAG/B,oBAAA,SAAS,EAAE,CAAC,uBAAuB,CAAA,wBAAA,CAA0B,CAAC;AAC9D,oBAAA,IAAI,EAAE;AACF,wBAAA,0BAA0B,EAAE,QAAQ;AACpC,wBAAA,sBAAsB,EAAE,iCAAiC;AACzD,wBAAA,sBAAsB,EAAE,mCAAmC;AAC3D,wBAAA,sBAAsB,EAAE,4CAA4C;AACpE,wBAAA,WAAW,EAAE,wBAAwB;AACrC,wBAAA,YAAY,EAAE;AACjB,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;MEtFY,gBAAgB,CAAA;kIAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,OAAA,EAAA,CAHf,mBAAmB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAC5F,mBAAmB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;mIAE7F,gBAAgB,EAAA,OAAA,EAAA,CAHf,mBAAmB,EAAqB,0BAA0B,CAAA,EAAA,CAAA,CAAA;;4FAGnE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,wBAAwB,CAAC;oBACvG,OAAO,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,wBAAwB;AACzG,iBAAA;;;ACPD;;AAEG;;;;"}
1
+ {"version":3,"file":"koobiq-components-popover.mjs","sources":["../../../packages/components/popover/popover.component.ts","../../../packages/components/popover/popover.component.html","../../../packages/components/popover/popover-confirm.component.ts","../../../packages/components/popover/popover-confirm.component.html","../../../packages/components/popover/popover.module.ts","../../../packages/components/popover/koobiq-components-popover.ts"],"sourcesContent":["import {\n CdkTrapFocus,\n ConfigurableFocusTrapFactory,\n FOCUS_TRAP_INERT_STRATEGY,\n FocusMonitor,\n FocusTrapFactory\n} from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CdkObserveContent } from '@angular/cdk/observers';\nimport {\n CdkScrollable,\n FlexibleConnectedPositionStrategy,\n OverlayConfig,\n OverlayRef,\n ScrollDispatcher,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n InjectionToken,\n InputSignal,\n OnChanges,\n OnInit,\n Provider,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n input,\n untracked,\n viewChild\n} from '@angular/core';\nimport { outputFromObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n EmptyFocusTrapStrategy,\n KBQ_OVERLAY_LAYERS,\n KbqCaretRect,\n KbqComponentColors,\n KbqOverflowShadowBottom,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqOverlayOrigin,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpSizeValues,\n KbqPopUpTrigger,\n KbqStickToWindowPlacementValues,\n POSITION_TO_CSS_MAP,\n PopUpPlacements,\n PopUpSizes,\n PopUpTriggers,\n applyPopupMargins,\n kbqCreateCaretOrigin,\n kbqInjectA11yLocaleConfiguration,\n kbqOptionalNumberAttribute,\n kbqRepositionScrollStrategyFactory,\n kbqSiblingPopupProvider\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqScrollbarViewport } from '@koobiq/components/scrollbar';\nimport { NEVER, merge } from 'rxjs';\n\nexport const defaultOffsetYWithArrow = 8;\n\n/** Leave delay applied to a hover-triggered popover when `kbqLeaveDelay` is not bound. */\nexport const defaultHoverLeaveDelay = 500;\n\n/** Default `kbqPopoverBackdropClass`. */\nconst defaultBackdropClass = 'cdk-overlay-transparent-backdrop';\n\n/** Debounce of the content-mutation observer that drives the scroll shadows, in milliseconds. */\nconst contentObserverDebounce = 15;\n\n/** DOM event names the shared pop-up base records right before opening on a pointer or focus event. */\nconst passiveOpenEvents = ['mouseenter', 'focus'];\n\nlet nextUniqueId = 0;\n\n/**\n * Focus-trap wiring of a popover panel.\n *\n * Provided on the panel components rather than on `KbqPopoverModule`: both entries are injector-wide, so at\n * module level they replaced the CDK inert strategy for every other focus trap in the importing injector.\n *\n * @docs-private\n */\nexport const KBQ_POPOVER_FOCUS_TRAP_PROVIDERS: Provider[] = [\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }\n];\n\n@Component({\n selector: 'kbq-popover-component',\n imports: [\n NgTemplateOutlet,\n CdkObserveContent,\n KbqButtonModule,\n KbqIconModule,\n KbqScrollbarViewport,\n CdkTrapFocus,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqOverflowShadowBottom\n ],\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.scss', './popover-tokens.scss'],\n providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '(keydown.esc)': 'onEscape($event)'\n },\n preserveWhitespaces: false\n})\nexport class KbqPopoverComponent extends KbqPopUp implements AfterViewInit {\n /** Accessible name for the icon-only close button. */\n protected readonly a11yLocaleConfiguration = kbqInjectA11yLocaleConfiguration();\n\n /** Debounce shared by the mutation observer and the scroll-shadow container (both expose `debounce`). */\n protected readonly contentObserverDebounce = contentObserverDebounce;\n\n prefix = 'kbq-popover';\n\n // Safe arrow inset from popover.scss: the 24px arrow padding plus half of its 12px square.\n protected override arrowCenterInset = 30;\n\n header: string | TemplateRef<any>;\n footer: string | TemplateRef<any>;\n\n trigger: KbqPopoverTrigger;\n\n isTrapFocus: boolean = false;\n hasCloseButton: boolean = false;\n\n /** Id of the panel element, referenced by the trigger's `aria-controls`. Written by the trigger. */\n panelId: string;\n\n /** Accessible name of the panel, used when there is no header to label it. Written by the trigger. */\n ariaLabel: string | undefined;\n\n private readonly popoverElement = viewChild<ElementRef<HTMLElement>>('popover');\n\n /**\n * Panel element (`.kbq-popover`), not the component host.\n *\n * Deliberately shadows the injected `KbqPopUp.elementRef`: the base measures and decorates the visible\n * panel, so both `applyPopupMargins` here and `setStickPosition`/`addEventListenerForHide` in the base\n * must resolve to the same element. The confirm template carries the matching `#popover` reference.\n */\n override get elementRef(): ElementRef<HTMLElement> {\n return this.popoverElement()!;\n }\n readonly cdkTrapFocus = viewChild.required(CdkTrapFocus);\n /** @docs-private */\n readonly overflowContainer = viewChild(KbqOverflowShadowContainer);\n\n private readonly scrollbarViewport = viewChild(KbqScrollbarViewport);\n\n /** Id of the header text node, referenced by the panel's `aria-labelledby`. */\n get headerId(): string {\n return `${this.panelId}-header`;\n }\n\n /**\n * Whether the header can name the dialog. Only a string header renders a text node with an id to point\n * `aria-labelledby` at; a template header is arbitrary markup, so those panels fall back to `ariaLabel`.\n */\n protected get labelledByHeader(): boolean {\n return !!this.header && !this.isTemplateRef(this.header);\n }\n\n ngAfterViewInit() {\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((state) => {\n if (this.offset !== null && state && this.elementRef) {\n applyPopupMargins(\n this.renderer,\n this.elementRef.nativeElement,\n this.prefix,\n `${this.offset!.toString()}px`\n );\n\n this.setStickPosition();\n }\n\n if (state) {\n this.detectChanges();\n this.updateArrowPosition();\n }\n\n // Every closing path ends here, and the panel is still in the DOM at this point, so this is the\n // one place where focus can be handed back to the trigger instead of falling to `<body>`.\n if (!state) {\n this.trigger?.restoreFocus();\n }\n });\n\n // A hover- or focus-triggered popover is dismissed by the pointer leaving it, so capturing the\n // keyboard would strand focus on `<body>` when it auto-hides.\n if (this.trigger?.capturesFocusOnOpen ?? true) {\n this.cdkTrapFocus().focusTrap.focusFirstTabbableElement();\n }\n }\n\n updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues) {\n super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });\n }\n\n updateTrapFocus(isTrapFocus: boolean): void {\n this.isTrapFocus = isTrapFocus;\n }\n\n /** Closes the panel on `Escape` inside it, unless a control there spent the key closing a popup of its own. */\n onEscape(event?: Event) {\n if (event?.defaultPrevented || this.trigger?.preventClose) return;\n\n // Spent, so that a container closing on Escape, such as a modal around an overlay layer, stays open.\n event?.preventDefault();\n this.requestClose();\n }\n\n /** Handles a click on the close button. */\n protected onClose(): void {\n this.requestClose();\n }\n\n /**\n * Closes the panel through its trigger, so that `kbqPopoverPreventClose` is honored and focus is restored\n * the same way as on every other closing path.\n *\n * The component is exported and can be rendered without a trigger — `ngAfterViewInit` already allows for\n * that — and such a panel has no `preventClose` to honor and no trigger to hand focus back to, so it hides\n * itself rather than throwing on a keypress.\n */\n private requestClose(): void {\n if (this.trigger) {\n this.trigger.close();\n } else {\n this.hide(0);\n }\n }\n\n /**\n * Whether the scrollable content region needs its own tab stop and landmark (AXE\n * `scrollable-region-focusable`). An unconditional `tabindex` would add a stop to every popover.\n */\n protected isScrollableRegion(container: KbqOverflowShadowContainer): boolean {\n const { top, bottom } = container.overflow();\n\n return top || bottom;\n }\n\n protected override afterShowAnimation(): void {\n this.scrollbarViewport()?.flashScrollIndicators();\n }\n\n protected readonly componentColors = KbqComponentColors;\n}\n\nexport const KBQ_POPOVER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('kbq-popover-scroll-strategy', {\n providedIn: 'root',\n factory: () => kbqPopoverScrollStrategyFactory(inject(ScrollDispatcher))\n});\n\n/** @docs-private */\nexport function kbqPopoverScrollStrategyFactory(scrollDispatcher: ScrollDispatcher): () => ScrollStrategy {\n return kbqRepositionScrollStrategyFactory(scrollDispatcher, { scrollThrottle: 20 });\n}\n\n/**\n * Redundant to the root factory of the token; kept so an app can restore the default under its own override (#DS-2196).\n *\n * @docs-private\n */\nexport const KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_POPOVER_SCROLL_STRATEGY,\n deps: [ScrollDispatcher],\n useFactory: kbqPopoverScrollStrategyFactory\n};\n\n@Directive({\n selector: '[kbqPopover]',\n providers: [kbqSiblingPopupProvider(KbqPopoverTrigger)],\n host: {\n '[class.kbq-popover_open]': 'isOpen',\n '[class.kbq-active]': 'hasClickTrigger && isOpen',\n '[attr.aria-expanded]': 'hasClickTrigger ? isOpen : null',\n '[attr.aria-haspopup]': 'hasClickTrigger ? \"dialog\" : null',\n '[attr.aria-controls]': 'hasClickTrigger && isOpen ? panelId : null',\n '(keydown)': 'keydownHandler($event)',\n '(touchend)': 'touchendHandler()'\n },\n exportAs: 'kbqPopover'\n})\nexport class KbqPopoverTrigger\n extends KbqPopUpTrigger<KbqPopoverComponent>\n implements OnChanges, AfterContentInit, OnInit\n{\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_POPOVER_SCROLL_STRATEGY);\n\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly document = inject(DOCUMENT);\n private readonly overlayLayers = inject(KBQ_OVERLAY_LAYERS);\n\n /** Id of the panel this trigger controls, shared with `aria-controls`. */\n readonly panelId: string = `kbq-popover-${nextUniqueId++}`;\n\n /**\n * Input (`kbqPopoverHideIfNotInViewPort`) — whether the popover closes once its trigger scrolls out of the\n * nearest scrollable ancestor. A bound `null` or `undefined` restores the default, `true`.\n */\n readonly popoverHideIfNotInViewPort = input<boolean, unknown>(true, {\n alias: 'kbqPopoverHideIfNotInViewPort',\n transform: (value) => (value == null ? true : booleanAttribute(value))\n });\n\n /** prevents closure by any event */\n override preventClose: boolean = false;\n\n /** Whether the header, content and footer keep their default paddings. Bound with `kbqPopoverDefaultPaddings`. */\n defaultPaddings = true;\n\n /** Input (`kbqPopoverDefaultPaddings`) — sets {@link defaultPaddings}. */\n set popoverDefaultPaddings(value: boolean) {\n this.defaultPaddings = value;\n }\n\n /** Input (`kbqPopoverVisible`) — opens the popover when set to `true` and closes it when set to `false`. */\n get popoverVisible(): boolean {\n return this.visible;\n }\n\n set popoverVisible(value: boolean) {\n super.updateVisible(value);\n }\n\n /** Input (`kbqPopoverPlacement`) — preferred placement of the panel relative to the trigger. */\n get popoverPlacement(): KbqPopUpPlacementValues {\n return this.placement;\n }\n\n set popoverPlacement(value: KbqPopUpPlacementValues) {\n super.updatePlacement(value);\n }\n\n /** Input (`kbqPopoverPlacementPriority`) — ordered placements tried before the default strategy. */\n get popoverPlacementPriority() {\n return this.placementPriority;\n }\n\n set popoverPlacementPriority(value) {\n super.updatePlacementPriority(value);\n }\n\n /**\n * Additionally positions the element relative to the window side (Top, Right, Bottom and Left).\n * If container is specified, the positioning will be relative to it.\n * */\n stickToWindow: KbqStickToWindowPlacementValues | undefined;\n\n /** Container for additional positioning, used with `kbqPopoverStickToWindow`. Bound with `kbqPopoverContainer`. */\n container: HTMLElement | undefined;\n\n /** Input (`kbqPopoverContainer`) — sets {@link container}. */\n set popoverContainer(value: HTMLElement | undefined) {\n this.container = value;\n }\n\n /**\n * Whether a backdrop is rendered behind the panel. With a backdrop the popover closes on a backdrop click\n * instead of on any outside pointer event. Bound with `kbqPopoverHasBackdrop`.\n */\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n\n this.invalidateOverlay();\n }\n\n private _hasBackdrop: boolean = false;\n\n /** Input (`kbqPopoverHasBackdrop`) — sets {@link hasBackdrop}. */\n set popoverHasBackdrop(value: boolean) {\n this.hasBackdrop = value;\n }\n\n /** Input (`kbqPopoverHeader`) — header of the panel, as a string or a template. */\n get header(): string | TemplateRef<any> {\n return this._header;\n }\n\n set header(value: string | TemplateRef<any>) {\n this._header = value;\n\n this.updateData();\n }\n\n private _header: string | TemplateRef<any>;\n\n /** Input (`kbqPopoverContent`) — content of the panel, as a string or a template. */\n get content(): string | TemplateRef<any> {\n return this._content;\n }\n\n set content(value: string | TemplateRef<any>) {\n this._content = value;\n\n this.updateData();\n }\n\n /** Input (`kbqPopoverFooter`) — footer of the panel, as a string or a template. */\n get footer(): string | TemplateRef<any> {\n return this._footer;\n }\n\n set footer(value: string | TemplateRef<any>) {\n this._footer = value;\n\n this.updateData();\n }\n\n private _footer: string | TemplateRef<any>;\n\n /** Input (`kbqPopoverDisabled`) — disables the trigger and closes an open popover. */\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.hide();\n }\n }\n\n /**\n * Input (`kbqTrigger`) with the comma-separated trigger events. An empty value resets to click + keydown\n * and rebinds listeners. The alias is shared with `kbqTooltip`, so binding it on an element that carries\n * both reconfigures both.\n */\n get trigger(): string {\n return this._trigger;\n }\n\n set trigger(value: string) {\n if (value) {\n this._trigger = value;\n\n if (this.trigger.includes(PopUpTriggers.Hover)) {\n this.hideWithTimeout = true;\n }\n } else {\n this._trigger = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n }\n\n // Re-derived from the trigger on every change rather than applied once to an unset delay: a popover\n // switched to `hover` later closes on the 0 it was born with otherwise, leaving no time to cross the\n // gap between the trigger and the panel.\n if (!this.leaveDelayBound) {\n this.leaveDelay = this.defaultLeaveDelay;\n }\n\n this.initListeners();\n }\n\n private _trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n /** Leave delay while `kbqLeaveDelay` is not bound. */\n private get defaultLeaveDelay(): number {\n return this._trigger.includes(PopUpTriggers.Hover) ? defaultHoverLeaveDelay : 0;\n }\n\n /** Input (`kbqPopoverSize`) — preset width of the panel. An unknown value falls back to `medium`. */\n get size(): KbqPopUpSizeValues {\n return this._size;\n }\n\n set size(value: KbqPopUpSizeValues) {\n if ([PopUpSizes.Small, PopUpSizes.Medium, PopUpSizes.Large, PopUpSizes.Custom].includes(value as PopUpSizes)) {\n this._size = value;\n\n this.updateClassMap();\n } else {\n this._size = PopUpSizes.Medium;\n\n // eslint-disable-next-line no-console\n console.warn(`Unknown size: ${value}. Will use the default size: ${this._size}`);\n }\n }\n\n private _size: KbqPopUpSizeValues = PopUpSizes.Medium;\n\n /** Input (`kbqPopoverClass`) with extra CSS classes applied to the panel. */\n get customClass() {\n return this._customClass;\n }\n\n set customClass(value: string) {\n this._customClass = value;\n\n this.updateClassMap();\n }\n\n /** Context for popover templates (kbqPopoverHeader, kbqPopoverContent and kbqPopoverFooter). */\n get context() {\n return this._context;\n }\n\n set context(ctx) {\n this._context = ctx;\n this.updateData();\n }\n\n private _context: unknown = null;\n\n /**\n * Accessible name of the panel. Ignored while a string `kbqPopoverHeader` is set — the header labels the\n * dialog then — and recommended for every header-less popover.\n */\n get ariaLabel(): string | undefined {\n return this._ariaLabel;\n }\n\n set ariaLabel(value: string | undefined) {\n this._ariaLabel = value;\n\n this.updateData();\n }\n\n private _ariaLabel: string | undefined;\n\n /** Renders the icon-only close button in the top corner of the panel. Bound with `kbqPopoverHasCloseButton`. */\n get hasCloseButton(): boolean {\n return this._hasCloseButton;\n }\n\n set hasCloseButton(value: boolean) {\n this._hasCloseButton = value;\n this.updateData();\n }\n\n private _hasCloseButton = false;\n\n /** Input (`kbqPopoverHasCloseButton`) — sets {@link hasCloseButton}. */\n set popoverHasCloseButton(value: boolean) {\n this.hasCloseButton = value;\n }\n\n /**\n * Controls the behavior of closing the component on scroll. Bound with `kbqPopoverCloseOnScroll`. Three\n * states:\n * - `null` (default) — the popover survives a scroll, except when it scrolls out of a\n * `.kbq-hide-nested-popup` container, which closes it;\n * - `true` — any scroll closes the popover;\n * - `false` — no scroll closes the popover, not even a `.kbq-hide-nested-popup` one.\n *\n * Use CloseScrollStrategy as alternative\n */\n get closeOnScroll(): boolean | null {\n return this._closeOnScroll;\n }\n\n set closeOnScroll(value: boolean) {\n this._closeOnScroll = coerceBooleanProperty(value);\n }\n\n private _closeOnScroll: boolean | null = null;\n\n /** Input (`kbqPopoverCloseOnScroll`) — sets {@link closeOnScroll}. */\n set popoverCloseOnScroll(value: boolean) {\n this.closeOnScroll = value;\n }\n\n /** Whether the trigger opens the popover on click, which is also what makes it a labelled dialog opener. */\n get hasClickTrigger(): boolean {\n return this.trigger.includes(PopUpTriggers.Click);\n }\n\n /**\n * Whether opening the popover should move the keyboard focus into the panel. Only deliberate opens\n * (click, keyboard, programmatic) do — a hover- or focus-triggered popover must not steal focus.\n */\n get capturesFocusOnOpen(): boolean {\n return this.autoFocus && (this.hasClickTrigger || this.deliberateOpen);\n }\n\n /** @docs-private */\n get instanceDestroyRef(): DestroyRef {\n return this.instance.destroyRef;\n }\n\n /** CSS class applied to the backdrop, when there is one. Bound with `kbqPopoverBackdropClass`. */\n get backdropClass(): string {\n return this._backdropClass;\n }\n\n set backdropClass(value: string) {\n this._backdropClass = value;\n\n this.invalidateOverlay();\n }\n\n private _backdropClass: string = defaultBackdropClass;\n\n /** Input (`kbqPopoverBackdropClass`) — sets {@link backdropClass}. */\n set popoverBackdropClass(value: string) {\n this.backdropClass = value;\n }\n\n /** Input (`kbqPopoverArrow`) — renders the arrow pointing at the trigger. */\n arrow: boolean = true;\n\n /**\n * Input (`kbqPopoverArrowCentered`) — centers the arrow on the trigger while preserving the panel placement.\n * Defaults to `false`.\n */\n override arrowCentered = false;\n\n /** Input (`kbqPopoverOffset`) — distance between the trigger and the panel, in pixels. */\n offset: number | null = defaultOffsetYWithArrow;\n\n /**\n * Input (`kbqPopoverAutoFocus`) — whether opening the popover moves the keyboard focus into the panel. Turn it\n * off for a panel that must not disturb what the reader is doing: taking focus away from a text selection\n * collapses it. Focus then never enters the panel, so its content has to be reachable some other way.\n */\n autoFocus: boolean = true;\n\n /**\n * Input (`kbqRelativeToPointer`) — positions a click-opened popover at the click point. Keyboard and\n * programmatic opens stay on the trigger. An explicit `kbqPopoverOrigin` takes precedence. Defaults to `false`.\n */\n relativeToPointer: boolean = false;\n\n /**\n * Input (`kbqPopoverOrigin`) — what the panel is positioned against: an element, or a rectangle in viewport\n * coordinates such as the one `kbqCreateCaretOrigin` keeps on the caret. `null` anchors it to the trigger.\n *\n * Bind it before `kbqPopoverVisible`, which opens the panel as it is written.\n */\n get popoverOrigin(): KbqOverlayOrigin | null {\n return this.origin;\n }\n\n set popoverOrigin(value: KbqOverlayOrigin | null) {\n this.updateOrigin(value);\n }\n\n /** Input (`kbqEnterDelay`) — delay before opening, in milliseconds. Defaults to `0`. */\n enterDelay: number = 0;\n\n /**\n * Input (`kbqLeaveDelay`) — delay before closing, in milliseconds. Defaults to `0`, and to\n * {@link defaultHoverLeaveDelay} when `kbqTrigger` includes `hover`.\n */\n // A write-only input rather than an accessor over `leaveDelay`: the base declares that member as a\n // plain field, and TypeScript refuses to override a property with an accessor (TS2611).\n set kbqLeaveDelay(value: number) {\n this.leaveDelay = value;\n // Tracked instead of comparing the delay against a sentinel: an explicit `kbqLeaveDelay=\"0\"` and an\n // unbound one are indistinguishable by value, and only the latter takes the hover default.\n this.leaveDelayBound = true;\n }\n\n private leaveDelayBound = false;\n\n /**\n * Emits the resolved placement whenever the panel is repositioned.\n *\n * Declared as `string` to match the abstract member on `KbqPopUpTrigger`: `EventEmitter` is invariant,\n * so a narrower emitter cannot override a wider one. Narrowing both is a change to the shared pop-up\n * base and belongs to the branch that owns it.\n */\n readonly placementChange = new EventEmitter<KbqPopUpPlacementValues>();\n\n /** @docs-private */\n readonly placementChangeOutput = outputFromObservable(this.placementChange, { alias: 'kbqPopoverPlacementChange' });\n\n /** Emits `true` when the panel opens and `false` when it closes. */\n readonly visibleChange = new EventEmitter<boolean>();\n\n /** @docs-private */\n readonly visibleChangeOutput = outputFromObservable(this.visibleChange, { alias: 'kbqPopoverVisibleChange' });\n\n protected originSelector = '.kbq-popover';\n\n /** Whether a position re-apply is already queued for this turn. */\n private repositionScheduled = false;\n\n private pointerOffset: { x: number; y: number } | null = null;\n\n private readonly pointerOrigin = kbqCreateCaretOrigin((): KbqCaretRect => {\n const { left, top } = this.getNativeElement().getBoundingClientRect();\n const offset = this.pointerOffset!;\n\n return { x: left + offset.x, y: top + offset.y, width: 0, height: 0 };\n });\n\n /**\n * Whether the open currently on screen was a deliberate one rather than a pointer or focus one.\n *\n * The shared base records the event that opened the pop-up in `triggerName`, but its keyboard opener is\n * the one listener registered without that bookkeeping, and it defers the open to a task of its own —\n * by then `triggerName` still holds whatever the pointer last did. Frozen on every `show()`, which the\n * pointer and focus listeners reach with the name they have just written.\n */\n private deliberateOpen = true;\n\n // NB: the trigger↔popover gap is a CSS `margin` on `.kbq-popover` (see `applyPopupMargins`), which sits inside\n // this `pointer-events: auto` pane, so the gap band is already covered and not click/hover-through. This is why\n // the connected-overlay `offsetY`→in-pane-padding fix (KBQ_CONNECTED_OVERLAY_* / --kbq-connected-overlay-gap,\n // used by select/tree-select/autocomplete/datepicker) intentionally does NOT apply here — do not \"port\" it.\n // Guarded by the \"trigger↔panel gap is not click-through\" e2e tests in e2e.playwright-spec.ts.\n protected get overlayConfig(): OverlayConfig {\n return {\n panelClass: 'kbq-popover__panel',\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass\n };\n }\n\n /** @docs-private */\n readonly triggerInput = input<string | undefined>(undefined, { alias: 'kbqTrigger' });\n\n /** @docs-private */\n readonly kbqLeaveDelayInput = input<number | undefined, number | string | null | undefined>(undefined, {\n alias: 'kbqLeaveDelay',\n transform: kbqOptionalNumberAttribute\n });\n\n /** @docs-private */\n readonly enterDelayInput = input<number | undefined, number | string | null | undefined>(undefined, {\n alias: 'kbqEnterDelay',\n transform: kbqOptionalNumberAttribute\n });\n\n /** @docs-private */\n readonly preventCloseInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverPreventClose',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly stickToWindowInput = input<KbqStickToWindowPlacementValues | undefined>(undefined, {\n alias: 'kbqPopoverStickToWindow'\n });\n\n /** @docs-private */\n readonly popoverContainerInput = input<HTMLElement | undefined>(undefined, { alias: 'kbqPopoverContainer' });\n\n /** @docs-private */\n readonly popoverHasBackdropInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverHasBackdrop',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly popoverBackdropClassInput = input<string | undefined>(undefined, { alias: 'kbqPopoverBackdropClass' });\n\n /** @docs-private */\n readonly popoverDefaultPaddingsInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverDefaultPaddings',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly sizeInput = input<KbqPopUpSizeValues | undefined>(undefined, { alias: 'kbqPopoverSize' });\n\n /** @docs-private */\n readonly customClassInput = input<string | undefined>(undefined, { alias: 'kbqPopoverClass' });\n\n /** @docs-private */\n readonly headerInput: InputSignal<KbqPopoverTrigger['header'] | undefined> = input<\n KbqPopoverTrigger['header'] | undefined\n >(undefined, {\n alias: 'kbqPopoverHeader'\n });\n\n /** @docs-private */\n readonly contentInput: InputSignal<KbqPopoverTrigger['content'] | undefined> = input<\n KbqPopoverTrigger['content'] | undefined\n >(undefined, {\n alias: 'kbqPopoverContent'\n });\n\n /** @docs-private */\n readonly footerInput: InputSignal<KbqPopoverTrigger['footer'] | undefined> = input<\n KbqPopoverTrigger['footer'] | undefined\n >(undefined, {\n alias: 'kbqPopoverFooter'\n });\n\n /** @docs-private */\n readonly contextInput = input<NonNullable<unknown> | null | undefined>(undefined, { alias: 'kbqPopoverContext' });\n\n /** @docs-private */\n readonly ariaLabelInput = input<string | undefined>(undefined, { alias: 'kbqPopoverAriaLabel' });\n\n /** @docs-private */\n readonly popoverHasCloseButtonInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverHasCloseButton',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly popoverCloseOnScrollInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverCloseOnScroll',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly arrowInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverArrow',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly arrowCenteredInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverArrowCentered',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly offsetInput = input<number | undefined, number | string | null | undefined>(undefined, {\n alias: 'kbqPopoverOffset',\n transform: kbqOptionalNumberAttribute\n });\n\n /** @docs-private */\n readonly autoFocusInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverAutoFocus',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly relativeToPointerInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqRelativeToPointer',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly popoverOriginInput = input<KbqOverlayOrigin | null | undefined>(undefined, { alias: 'kbqPopoverOrigin' });\n\n /** @docs-private */\n readonly disabledInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'kbqPopoverDisabled',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly popoverPlacementPriorityInput = input<string | string[] | null | undefined>(undefined, {\n alias: 'kbqPopoverPlacementPriority'\n });\n\n /** @docs-private */\n readonly popoverPlacementInput = input<KbqPopUpPlacementValues | undefined>(undefined, {\n alias: 'kbqPopoverPlacement'\n });\n\n /** @docs-private */\n readonly popoverVisibleInput = input<boolean | undefined>(undefined, { alias: 'kbqPopoverVisible' });\n\n ngOnChanges(changes: SimpleChanges): void {\n // A bound input is handed to its member, a bound `undefined` restoring the\n // member's default; unbound, it leaves what code wrote. The `booleanAttribute` inputs are the exception:\n // the transform reads a bound `undefined` as `false`.\n if (changes['triggerInput']) {\n this.trigger = this.triggerInput() ?? '';\n }\n\n if (changes['kbqLeaveDelayInput']) {\n const kbqLeaveDelay = this.kbqLeaveDelayInput();\n\n if (kbqLeaveDelay === undefined) {\n // Counts as unbound, so that a hover popover gets its default delay back.\n this.leaveDelayBound = false;\n this.leaveDelay = this.defaultLeaveDelay;\n } else {\n this.kbqLeaveDelay = kbqLeaveDelay;\n }\n }\n\n if (changes['enterDelayInput']) {\n this.enterDelay = this.enterDelayInput() ?? 0;\n }\n\n if (changes['preventCloseInput']) {\n const preventClose = this.preventCloseInput();\n\n if (preventClose !== undefined) this.preventClose = preventClose;\n }\n\n if (changes['stickToWindowInput']) {\n this.stickToWindow = this.stickToWindowInput();\n }\n\n if (changes['popoverContainerInput']) {\n this.popoverContainer = this.popoverContainerInput();\n }\n\n if (changes['popoverHasBackdropInput']) {\n const popoverHasBackdrop = this.popoverHasBackdropInput();\n\n if (popoverHasBackdrop !== undefined) this.popoverHasBackdrop = popoverHasBackdrop;\n }\n\n if (changes['popoverBackdropClassInput']) {\n this.popoverBackdropClass = this.popoverBackdropClassInput() ?? defaultBackdropClass;\n }\n\n if (changes['popoverDefaultPaddingsInput']) {\n const popoverDefaultPaddings = this.popoverDefaultPaddingsInput();\n\n if (popoverDefaultPaddings !== undefined) this.popoverDefaultPaddings = popoverDefaultPaddings;\n }\n\n if (changes['sizeInput']) {\n this.size = this.sizeInput() ?? PopUpSizes.Medium;\n }\n\n if (changes['customClassInput']) {\n this.customClass = this.customClassInput() ?? '';\n }\n\n if (changes['headerInput']) {\n this.header = this.headerInput() ?? '';\n }\n\n if (changes['contentInput']) {\n this.content = this.contentInput() ?? '';\n }\n\n if (changes['footerInput']) {\n this.footer = this.footerInput() ?? '';\n }\n\n if (changes['contextInput']) {\n this.context = this.contextInput();\n }\n\n if (changes['ariaLabelInput']) {\n this.ariaLabel = this.ariaLabelInput();\n }\n\n if (changes['popoverHasCloseButtonInput']) {\n const popoverHasCloseButton = this.popoverHasCloseButtonInput();\n\n if (popoverHasCloseButton !== undefined) this.popoverHasCloseButton = popoverHasCloseButton;\n }\n\n if (changes['popoverCloseOnScrollInput']) {\n const popoverCloseOnScroll = this.popoverCloseOnScrollInput();\n\n if (popoverCloseOnScroll !== undefined) this.popoverCloseOnScroll = popoverCloseOnScroll;\n }\n\n if (changes['arrowInput']) {\n const arrow = this.arrowInput();\n\n if (arrow !== undefined) this.arrow = arrow;\n }\n\n if (changes['arrowCenteredInput']) {\n this.arrowCentered = this.arrowCenteredInput() ?? false;\n this.updateData();\n }\n\n if (changes['offsetInput']) {\n this.offset = this.offsetInput() ?? defaultOffsetYWithArrow;\n }\n\n if (changes['autoFocusInput']) {\n const autoFocus = this.autoFocusInput();\n\n if (autoFocus !== undefined) this.autoFocus = autoFocus;\n }\n\n if (changes['relativeToPointerInput']) {\n const relativeToPointer = this.relativeToPointerInput();\n\n if (relativeToPointer !== undefined) this.relativeToPointer = relativeToPointer;\n }\n\n if (changes['popoverOriginInput']) {\n this.popoverOrigin = this.popoverOriginInput() ?? null;\n }\n\n if (changes['disabledInput']) {\n const disabled = this.disabledInput();\n\n if (disabled !== undefined) this.disabled = disabled;\n }\n\n if (changes['popoverPlacementPriorityInput']) {\n this.popoverPlacementPriority = this.popoverPlacementPriorityInput() ?? null;\n }\n\n if (changes['popoverPlacementInput']) {\n this.popoverPlacement = this.popoverPlacementInput() ?? PopUpPlacements.Top;\n }\n\n if (changes['popoverVisibleInput']) {\n this.popoverVisible = this.popoverVisibleInput() ?? false;\n }\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.scrollable\n ?.elementScrolled()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.hideIfScrolledOutOfView);\n }\n\n ngAfterContentInit(): void {\n if (this.closeOnScroll === null) {\n this.scrollDispatcher\n .scrolled()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.hideIfNestedPopupScrolledAway);\n }\n }\n\n /** @docs-private */\n show(delay: number = this.enterDelay): void {\n const event = this.mouseEvent;\n const pointerEvent =\n this.relativeToPointer && this.triggerName === PopUpTriggers.Click && event?.detail ? event : null;\n const wasAttached = !!this.instance;\n\n this.mouseEvent = undefined;\n\n if (pointerEvent) {\n const { left, top } = this.getNativeElement().getBoundingClientRect();\n\n this.pointerOffset = { x: pointerEvent.clientX - left, y: pointerEvent.clientY - top };\n Object.assign(pointerEvent, { kbqPopoverPreventHide: true });\n } else if (!wasAttached) {\n this.pointerOffset = null;\n }\n\n if (pointerEvent || !wasAttached) {\n this.strategy?.setOrigin(this.getResolvedOrigin());\n }\n\n this.deliberateOpen = !passiveOpenEvents.includes(this.triggerName);\n\n super.show(delay);\n\n if (pointerEvent && wasAttached) {\n this.ngZone.run(() => this.instance.show(delay));\n this.updatePosition();\n this.strategy.withLockedPosition(false);\n this.overlayRef?.updatePosition();\n this.strategy.withLockedPosition(true);\n this.instance?.updateArrowPosition();\n }\n }\n\n /** Current click point in viewport coordinates, or `null` when the host or an explicit origin is used. @docs-private */\n getPointerPoint(): { x: number; y: number } | null {\n if (!this.pointerOffset || this.origin) return null;\n\n return { x: this.pointerOrigin.x, y: this.pointerOrigin.y };\n }\n\n /** Click point when pointer-relative positioning is active, otherwise the shared origin point. @docs-private */\n override getArrowPoint(): { x: number; y: number } | null {\n return this.getPointerPoint() ?? super.getArrowPoint();\n }\n\n /** @docs-private */\n protected override getResolvedOrigin() {\n return this.pointerOffset && !this.origin ? this.pointerOrigin : super.getResolvedOrigin();\n }\n\n /** @docs-private */\n protected override getAnchorSize(): { width: number; height: number } {\n return this.pointerOffset && !this.origin ? { width: 0, height: 0 } : super.getAnchorSize();\n }\n\n /** @docs-private */\n updateData() {\n // Untracked: an input written from a consumer's `effect()` lands here, and `isOpen` read on the way would make\n // the effect run again on every open and close.\n untracked(() => this.pushData());\n }\n\n /** Body of `updateData()`. */\n private pushData(): void {\n if (!this.instance) return;\n\n this.instance.header = this.header;\n this.instance.content = this.content;\n // `!= null` rather than a truthy check: `0`, `''` and `false` are legitimate template contexts, and\n // dropping them left the template rendering the previous context instead.\n this.instance.context = this.context != null ? { $implicit: this.context } : null;\n // `setStickPosition` drops the arrow because a stuck panel no longer points at its trigger; copying\n // the input back would resurrect a detached rotated square on the next update.\n this.instance.arrow = this.stickToWindow ? false : this.arrow;\n this.instance.arrowCentered = this.arrowCentered;\n this.instance.offset = this.offset;\n this.instance.footer = this.footer;\n this.instance.hasCloseButton = this.hasCloseButton;\n this.instance.defaultPaddings = this.defaultPaddings;\n this.instance.panelId = this.panelId;\n this.instance.ariaLabel = this.ariaLabel;\n\n this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);\n // As the tooltip does: this mostly runs from an input setter, while the trigger's view is being checked,\n // and the panel renders in an overlay of its own that nothing else would check.\n this.instance.detectChanges();\n\n if (this.isOpen) {\n this.scheduleReposition();\n }\n }\n\n /** @docs-private */\n override createOverlay(): OverlayRef {\n const overlayRef = super.createOverlay();\n\n // Read on every attach: a popover stuck to a window edge stays above the bars.\n this.overlayLayers.adopt(overlayRef, () => (this.stickToWindow ? null : this.getNativeElement()));\n\n return overlayRef;\n }\n\n /**\n * Re-applies the overlay position.\n *\n * Deliberately narrower than the inherited one, which also rebuilds the closing-action subscription:\n * that stream carries a `delay(0)`, so a reposition coalesced into the same task as an outside click —\n * which is the task in which that click's change detection writes a popover input — would drop the\n * close the click had already scheduled.\n */\n updatePosition(reapplyPosition: boolean = false) {\n this.overlayRef = this.createOverlay();\n\n const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n .withPositions(this.getAdjustedPositions())\n .withPush(true);\n\n if (reapplyPosition) {\n setTimeout(() => position.reapplyLastPosition());\n }\n }\n\n /** @docs-private */\n getOverlayHandleComponentType(): Type<KbqPopoverComponent> {\n return KbqPopoverComponent;\n }\n\n /** @docs-private */\n updateClassMap(newPlacement: string = this.placement) {\n if (!this.instance) {\n return;\n }\n\n this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);\n }\n\n /** @docs-private */\n closingActionsForClick() {\n if (this.hasClickTrigger) {\n return this.defaultClosingActions();\n }\n\n return [];\n }\n\n /** @docs-private */\n defaultClosingActions() {\n return [\n this.overlayRef!.backdropClick(),\n this.hasBackdrop ? NEVER : this.overlayRef!.outsidePointerEvents()\n ];\n }\n\n /** @docs-private */\n closingActions() {\n // Inner panel scrolling must not trigger closeOnScroll.\n const scrolled = this.closeOnScroll ? this.scrollDispatcher.ancestorScrolled(this.getNativeElement()) : NEVER;\n\n return merge(...this.closingActionsForClick(), scrolled);\n }\n\n /**\n * Returns focus to the trigger when the popover is closed while focus is still inside its panel.\n *\n * Goes through `FocusMonitor` rather than a native `focus()` call: the kbq focus ring is only rendered\n * for a monitored origin, and a `program` origin keeps a tooltip on the same element from re-opening.\n */\n restoreFocus(): void {\n if (!this.overlayRef?.overlayElement?.contains(this.document.activeElement)) return;\n\n this.focusMonitor.focusVia(this.getNativeElement(), 'program');\n }\n\n /**\n * Closes the popover on a deliberate action — the panel's close button, or `Escape` inside the panel.\n *\n * `hide()` keeps a hover popover open while the pointer rests on the panel, so that the pointer can\n * travel from the trigger to the content; that is exactly where the pointer is when the close button is\n * clicked, so a deliberate close answers to `kbqPopoverPreventClose` and to nothing else.\n */\n close(): void {\n if (this.preventClose) return;\n\n this.instance?.hide(0);\n }\n\n /**\n * Coalesces the position re-apply: a burst of input writes — or a parent change-detection pass that\n * recreates the object bound to `kbqPopoverContext` — schedules one reposition per turn instead of one\n * per write, each of which costs a forced layout read per candidate position.\n */\n private scheduleReposition(): void {\n if (this.repositionScheduled) return;\n\n this.repositionScheduled = true;\n\n queueMicrotask(() => {\n this.repositionScheduled = false;\n\n if (this.isOpen && this.overlayRef?.hasAttached()) {\n this.updatePosition(true);\n }\n });\n }\n\n /**\n * Drops a closed overlay so the next `show()` rebuilds it. The backdrop and its class are baked into the\n * overlay when it is created, and CDK does not re-render them from the config afterwards.\n */\n private invalidateOverlay(): void {\n if (!this.overlayRef || this.overlayRef.hasAttached()) return;\n\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n\n /** Closes the popover once it has scrolled out of its nearest scrollable ancestor. */\n private hideIfScrolledOutOfView = () => {\n if (!this.instance || !this.scrollable || !this.popoverHideIfNotInViewPort()) return;\n\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const containerRect = this.scrollable.getElementRef().nativeElement.getBoundingClientRect();\n\n const intersectsContainer =\n rect.bottom >= containerRect.top &&\n rect.right >= containerRect.left &&\n rect.top <= containerRect.bottom &&\n rect.left <= containerRect.right;\n\n if (!intersectsContainer) {\n this.hide();\n }\n };\n\n /** Closes the popover once its trigger has scrolled out of a `.kbq-hide-nested-popup` container. */\n private hideIfNestedPopupScrolledAway = (scrollable: CdkScrollable | void) => {\n if (!this.instance) return;\n\n if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup')) return;\n\n const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();\n const childRects = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {\n this.hide();\n }\n };\n}\n","<!--\n The dialog role is dropped when nothing names the panel: a screen reader announces an unnamed dialog as\n just \"dialog\", and the `aria-dialog-name` audit fails it. A named panel keeps the role.\n-->\n<div\n #popover\n class=\"kbq-popover\"\n [attr.role]=\"labelledByHeader || ariaLabel ? 'dialog' : null\"\n [attr.aria-label]=\"labelledByHeader ? null : ariaLabel\"\n [attr.aria-labelledby]=\"labelledByHeader ? headerId : null\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\" [id]=\"headerId\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n kbqScrollbarViewport\n class=\"kbq-popover__content\"\n [attr.tabindex]=\"isScrollableRegion(popoverContent) ? 0 : null\"\n [attr.role]=\"isScrollableRegion(popoverContent) && labelledByHeader ? 'region' : null\"\n [attr.aria-labelledby]=\"isScrollableRegion(popoverContent) && labelledByHeader ? headerId : null\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"contentObserverDebounce\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton) {\n <div class=\"kbq-popover__close-container\" [class.kbq-popover__close-container_without-header]=\"!header\">\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button\n kbq-button\n class=\"kbq-button_transparent\"\n [attr.aria-label]=\"a11yLocaleConfiguration().close\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClose()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </div>\n }\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n effect,\n inject,\n InjectionToken,\n input,\n output,\n signal,\n SimpleChanges,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { kbqInjectPopoverConfirmLocaleConfiguration, kbqSiblingPopupProvider } from '@koobiq/components/core';\nimport { Subject } from 'rxjs';\nimport { KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, KbqPopoverComponent, KbqPopoverTrigger } from './popover.component';\n\n/**\n * Overrides the question of every confirmation popover in the injector scope. Takes precedence over the\n * locale, but not over the `kbqPopoverConfirmText` input.\n */\nexport const KBQ_POPOVER_CONFIRM_TEXT = new InjectionToken<string>('KbqPopoverConfirmText');\n\n/**\n * Overrides the confirm-button caption of every confirmation popover in the injector scope. Takes precedence\n * over the locale, but not over the `kbqPopoverConfirmButtonText` input.\n */\nexport const KBQ_POPOVER_CONFIRM_BUTTON_TEXT = new InjectionToken<string>('KbqPopoverConfirmButtonText');\n\n@Component({\n selector: 'kbq-popover-confirm-component',\n imports: [\n CdkTrapFocus,\n KbqButtonModule\n ],\n templateUrl: './popover-confirm.component.html',\n styleUrls: ['./popover.scss', './popover-tokens.scss'],\n // Repeated rather than inherited: Angular copies `providers` to a subclass only when that subclass has\n // no decorator of its own.\n providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class KbqPopoverConfirmComponent extends KbqPopoverComponent {\n /**\n * Emits when the confirm button is pressed. Internal channel between the panel and its trigger — consume\n * the trigger's `confirm` output instead.\n *\n * @docs-private\n */\n readonly onConfirm = new Subject<void>();\n\n /** Caption of the confirm button. Written by the trigger. */\n get confirmButtonText(): string {\n return this.confirmButtonTextState();\n }\n\n set confirmButtonText(value: string) {\n this.confirmButtonTextState.set(value);\n }\n\n private readonly confirmButtonTextState = signal<string>(undefined!);\n\n /** Question rendered in the panel. Written by the trigger. */\n get confirmText(): string {\n return this.confirmTextState();\n }\n\n set confirmText(value: string) {\n this.confirmTextState.set(value);\n }\n\n private readonly confirmTextState = signal<string>(undefined!);\n}\n\n@Directive({\n selector: '[kbqPopoverConfirm]',\n // Declared again rather than inherited from `KbqPopoverTrigger`: Angular copies `providers` to a subclass\n // only when that subclass has no decorator of its own.\n providers: [kbqSiblingPopupProvider(KbqPopoverConfirmTrigger)],\n host: {\n '[class.kbq-popover_open]': 'isOpen',\n '[attr.aria-expanded]': 'hasClickTrigger ? isOpen : null',\n '[attr.aria-haspopup]': 'hasClickTrigger ? \"dialog\" : null',\n '[attr.aria-controls]': 'hasClickTrigger && isOpen ? panelId : null',\n '(keydown)': 'keydownHandler($event)',\n '(touchend)': 'touchendHandler()'\n },\n exportAs: 'kbqPopoverConfirm'\n})\nexport class KbqPopoverConfirmTrigger extends KbqPopoverTrigger {\n /** Emits when the user confirms the action. */\n readonly confirm = output<void>();\n\n private readonly localeConfiguration = kbqInjectPopoverConfirmLocaleConfiguration();\n private readonly externalConfirmText = inject(KBQ_POPOVER_CONFIRM_TEXT, { optional: true });\n private readonly externalConfirmButtonText = inject(KBQ_POPOVER_CONFIRM_BUTTON_TEXT, { optional: true });\n\n /**\n * Input (`kbqPopoverConfirmText`) — question rendered in the panel. Falls back to\n * {@link KBQ_POPOVER_CONFIRM_TEXT} and then to the `popoverConfirm` section of the active locale while\n * unset or `undefined`.\n */\n get confirmText(): string {\n return this._confirmText() ?? this.externalConfirmText ?? this.localeConfiguration().confirmText;\n }\n\n set confirmText(value: string | undefined) {\n this._confirmText.set(value);\n\n this.updateData();\n }\n\n private readonly _confirmText = signal<string | undefined>(undefined);\n\n /**\n * Input (`kbqPopoverConfirmButtonText`) — caption of the confirm button. Falls back to\n * {@link KBQ_POPOVER_CONFIRM_BUTTON_TEXT} and then to the `popoverConfirm` section of the active locale\n * while unset or `undefined`.\n */\n get confirmButtonText(): string {\n return (\n this._confirmButtonText() ?? this.externalConfirmButtonText ?? this.localeConfiguration().confirmButtonText\n );\n }\n\n set confirmButtonText(value: string | undefined) {\n this._confirmButtonText.set(value);\n\n this.updateData();\n }\n\n private readonly _confirmButtonText = signal<string | undefined>(undefined);\n\n /** Panel the confirm handler is currently wired to, so it is wired once per attach. */\n private wiredInstance: KbqPopoverConfirmComponent | null = null;\n\n /** @docs-private */\n readonly confirmTextInput = input<string | undefined>(undefined, { alias: 'kbqPopoverConfirmText' });\n\n /** @docs-private */\n readonly confirmButtonTextInput = input<string | undefined>(undefined, { alias: 'kbqPopoverConfirmButtonText' });\n\n override ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n\n // A bound input is handed to its member, a bound `undefined` restoring the\n // fallback; unbound, it leaves what code wrote.\n if (changes['confirmTextInput']) {\n this.confirmText = this.confirmTextInput();\n }\n\n if (changes['confirmButtonTextInput']) {\n this.confirmButtonText = this.confirmButtonTextInput();\n }\n }\n\n constructor() {\n super();\n\n // The strings are resolved from signals (input, token, locale), so switching the locale while the\n // popover is open has to reach the live panel — `updateData` alone only runs on input writes.\n effect(() => {\n const confirmText = this.confirmText;\n const confirmButtonText = this.confirmButtonText;\n\n if (!this.instance) return;\n\n this.instance.confirmText = confirmText;\n this.instance.confirmButtonText = confirmButtonText;\n });\n }\n\n /** @docs-private */\n updateData() {\n if (!this.instance) {\n return;\n }\n\n // Before `super.updateData()`, which renders the panel. Untracked as there: the texts follow the inputs and the\n // locale.\n untracked(() => {\n this.instance.confirmButtonText = this.confirmButtonText;\n this.instance.confirmText = this.confirmText;\n });\n\n super.updateData();\n\n if (this.wiredInstance !== this.instance) {\n this.wiredInstance = this.instance;\n\n this.setupButtonEvents();\n }\n }\n\n /**\n * Subscribes to the panel's confirm button. Called once per attach: the subscription is scoped to the\n * panel, so it dies with it.\n *\n * @docs-private\n */\n setupButtonEvents() {\n this.instance.onConfirm.pipe(takeUntilDestroyed(this.instanceDestroyRef)).subscribe(() => {\n this.confirm.emit();\n this.hide();\n });\n }\n\n /** @docs-private */\n getOverlayHandleComponentType() {\n return KbqPopoverConfirmComponent;\n }\n}\n","<div\n #popover\n role=\"dialog\"\n class=\"kbq-popover-confirm kbq-popover\"\n [attr.aria-label]=\"confirmText\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\" [class.kbq-popover__content_default-paddings]=\"defaultPaddings\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"componentColors.Contrast\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger } from './popover-confirm.component';\nimport { KbqPopoverComponent, KbqPopoverTrigger } from './popover.component';\n\n@NgModule({\n imports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger],\n exports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger]\n})\nexport class KbqPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}