@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-input.mjs","sources":["../../../packages/components/input/input-errors.ts","../../../packages/components/input/input-number.ts","../../../packages/components/input/input-value-accessor.ts","../../../packages/components/input/input.ts","../../../packages/components/input/input-number-validators.ts","../../../packages/components/input/input-password.ts","../../../packages/components/input/input.module.ts","../../../packages/components/input/koobiq-components-input.ts"],"sourcesContent":["export function getKbqInputUnsupportedTypeError(inputType: string): Error {\n return Error(`Input type \"${inputType}\" isn't supported by kbqInput.`);\n}\n\n/**\n * Logged when `kbqNumberInput` sits on a native number field, which the directive resets to `text`.\n */\nexport const KBQ_NUMBER_INPUT_UNSUPPORTED_TYPE_MESSAGE =\n 'Input type \"number\" isn\\'t supported by kbqNumberInput: the native value sanitizer rejects the ' +\n 'formatted value, blanking the field. The type has been reset to \"text\".';\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n InjectionToken,\n input,\n NgZone,\n OnDestroy,\n Provider,\n Renderer2,\n signal,\n untracked\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n BACKSPACE,\n checkAndNormalizeLocalizedNumber,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n FF_MINUS,\n formatNumberWithLocale,\n HOME,\n isCopy,\n isFunctionKey,\n isNumberKey,\n isNumpadKey,\n isSelectAll,\n KBQ_DEFAULT_LOCALE_ID,\n KBQ_DEFAULT_PRECISION_SEPARATOR,\n KBQ_LOCALE_SERVICE,\n KbqDeepPartial,\n KbqInputLocaleConfiguration,\n KbqInputNumberLocaleConfiguration,\n kbqLocaleConfigurationOverrideProvider,\n KbqLocaleOverridesDirective,\n KbqLocaleService,\n LEFT_ARROW,\n normalizeNumber,\n NUMPAD_MINUS,\n RIGHT_ARROW,\n ruRUFormattersData,\n TAB,\n UP_ARROW,\n V,\n X,\n Z\n} from '@koobiq/components/core';\nimport { Subject } from 'rxjs';\n\n/**\n * @deprecated Use {@link KBQ_INPUT_DEFAULT_LOCALE_CONFIGURATION}, which carries the whole `input`\n * locale section rather than just its `number` slice. Will be removed in 22.0.0.\n */\nexport const KBQ_INPUT_NUMBER_DEFAULT_CONFIGURATION = ruRUFormattersData.input.number;\n\n/**\n * Default configuration of `KbqNumberInput`: the whole `input` locale section, of which the number input\n * reads `number`.\n */\nexport const KBQ_INPUT_DEFAULT_LOCALE_CONFIGURATION: KbqInputLocaleConfiguration = ruRUFormattersData.input;\n\n/** Injection token for providing the default configuration of `KbqNumberInput`. */\nexport const KBQ_INPUT_LOCALE_CONFIGURATION = new InjectionToken<KbqInputLocaleConfiguration>(\n 'KbqInputLocaleConfiguration',\n { factory: () => KBQ_INPUT_DEFAULT_LOCALE_CONFIGURATION }\n);\n\n/**\n * Utility provider for `KBQ_INPUT_LOCALE_CONFIGURATION`. Only the values you pass are overridden; the rest\n * keep following the active locale.\n */\nexport const kbqInputLocaleConfigurationProvider = (\n configuration: KbqDeepPartial<KbqInputLocaleConfiguration>\n): Provider => kbqLocaleConfigurationOverrideProvider('input', configuration);\n\n/**\n * Default of `bigStep`.\n *\n * @docs-private\n */\nexport const BIG_STEP = 10;\n\n/**\n * Default of `step`.\n *\n * @docs-private\n */\nexport const SMALL_STEP = 1;\n\n/**\n * The locale id handed to `Intl.NumberFormat`, which is not always the active one.\n *\n * `es-LA` is not a real BCP-47 tag — `LA` is the region code for Laos — so what `Intl` makes of it is\n * up to the ICU data of whatever engine is running: today's Node resolves it to plain `es`, another\n * build may fall back somewhere else entirely. Pinning it to a tag every ICU build carries is a\n * deliberate workaround, not a leftover: it takes that variance out of the rendered number. Remove it\n * only when the locale is renamed to a real tag such as `es-419`.\n */\nfunction resolveIntlLocale(localeId: string | undefined): string {\n return !localeId || localeId === 'es-LA' ? KBQ_DEFAULT_LOCALE_ID : localeId;\n}\n\n/**\n * Transform for the numeric inputs: coerces the static attribute form (`min=\"3\"`) and anything a\n * binding produces, falling back to `fallback` for a value that is not a number.\n */\nconst numberAttribute =\n (fallback: number) =>\n (value: NumberInput): number =>\n coerceNumberProperty(value, fallback);\n\n/** @docs-private */\nexport function isFloat(value: string): boolean {\n return /^-?\\d+\\.\\d+$/.test(value);\n}\n\n/**\n * Number of digits after the decimal point. Exponent-aware, so `1e-7` reports `7` rather than the\n * `0` that reading `'1e-7'.split('.')` would give.\n */\nfunction getFractionDigits(value: number): number {\n const [mantissa, negativeExponent] = value.toString().split(/e-/i);\n const digits = mantissa.split(KBQ_DEFAULT_PRECISION_SEPARATOR)[1]?.length ?? 0;\n\n return negativeExponent ? digits + Number(negativeExponent) : digits;\n}\n\n/**\n * Decimal scale of `value`: `10 ** <number of fraction digits>`.\n *\n * @docs-private\n */\nexport function getPrecision(value: number): number {\n return Math.pow(10, getFractionDigits(value));\n}\n\n/**\n * Adds two decimal numbers without IEEE-754 drift: both operands are rounded into integer space at\n * the larger of the two scales, added there, and scaled back.\n *\n * @docs-private\n */\nexport function add(value1: number, value2: number): number {\n const precision = Math.max(getPrecision(value1), getPrecision(value2));\n\n return (Math.round(value1 * precision) + Math.round(value2 * precision)) / precision;\n}\n\nexport const KBQ_NUMBER_INPUT_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqNumberInput),\n multi: true\n};\n\n@Directive({\n selector: `input[kbqNumberInput]`,\n providers: [KBQ_NUMBER_INPUT_VALUE_ACCESSOR],\n host: {\n role: 'spinbutton',\n '[attr.inputmode]': \"integer() ? 'numeric' : 'decimal'\",\n '[attr.aria-valuenow]': 'value',\n // The formatted, locale-correct string, so the grouped value is announced rather than the raw number.\n '[attr.aria-valuetext]': 'viewValue || null',\n '[attr.aria-valuemin]': 'ariaValueMin()',\n '[attr.aria-valuemax]': 'ariaValueMax()',\n '(blur)': 'focusChanged(false)',\n '(focus)': 'focusChanged(true)',\n '(paste)': 'onPaste($event)',\n '(keydown)': 'onKeyDown($event)',\n '(input)': 'onInput($any($event))'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ],\n exportAs: 'kbqNumberInput, kbqNumericalInput'\n})\nexport class KbqNumberInput implements ControlValueAccessor, OnDestroy {\n private elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n private localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n /** Emits when the value changes (either due to user input or programmatic change). */\n readonly valueChange = new Subject<number | null>();\n\n /** Emits when the disabled state has changed */\n readonly disabledChange = new Subject<boolean>();\n\n /** Emits whenever the focused or disabled state of the directive changes. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Discriminator read by `kbq-stepper` to find the control it drives.\n *\n * @docs-private\n */\n controlType: string = 'input-number';\n\n /**\n * Allows input and pasting of integers only.\n */\n readonly integer = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Step applied when `Shift` is held. */\n readonly bigStep = input<number, NumberInput>(BIG_STEP, { transform: numberAttribute(BIG_STEP) });\n\n /** Step applied by the arrow keys and by `kbq-stepper`. */\n readonly step = input<number, NumberInput>(SMALL_STEP, { transform: numberAttribute(SMALL_STEP) });\n\n /** Lower bound the value is clamped to when stepping. */\n readonly min = input<number, NumberInput>(-Infinity, { transform: numberAttribute(-Infinity) });\n\n /** Upper bound the value is clamped to when stepping. */\n readonly max = input<number, NumberInput>(Infinity, { transform: numberAttribute(Infinity) });\n\n readonly withThousandSeparator = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n /**\n * Adds the thousand separator only from this power of ten. For example, `4` keeps `1234`\n * un-grouped and groups `12345`. Defaults to the active locale's own value.\n */\n readonly startFormattingFrom = input<number>();\n\n /** @docs-private */\n readonly valueInput = input<number | null | undefined>(undefined, { alias: 'value' });\n\n /** The numeric value of the field, bound with `[value]` or written by a form control. */\n get value(): number | null {\n return this.valueState() ?? null;\n }\n\n private readonly valueState = signal<number | null | undefined>(undefined);\n\n /** @docs-private */\n readonly disabledInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n /** Whether the field is disabled, bound with `[disabled]` or set by a form control. */\n get disabled(): boolean {\n return this.disabledState();\n }\n\n private readonly disabledState = signal(false);\n\n focused: boolean = false;\n\n get nativeElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n get viewValue(): string {\n return this.nativeElement.value;\n }\n\n /**\n * Locale-aware numeric read of the field: parsed straight from `nativeElement.value`, so `\"1 234,5\"`\n * reads back as `1234.5` where the native `valueAsNumber` of a `type=\"text\"` input reports `NaN`.\n * Computed on every read rather than cached off the committed model, so it never lags behind a\n * keystroke the way `value` can while `onInput`'s reformat is still pending in its `setTimeout(0)` —\n * safe to read from a consumer's own `(input)` handler. An in-progress `\"-\"` reads as `null`, same as\n * an empty field, rather than the last committed number.\n */\n get valueAsNumber(): number | null {\n if (this.viewValue === '' || this.viewValue === '-') return null;\n\n const parsed = Number(normalizeNumber(this.viewValue, this.config));\n\n return Number.isNaN(parsed) ? null : parsed;\n }\n\n /**\n * An unbounded end reports no `aria-value*`: `Infinity` is not a valid ARIA attribute value.\n * A `computed()` rather than a getter so the value is cached between checks — the host binding\n * itself lives in the declaring view and repaints either way.\n */\n protected readonly ariaValueMin = computed(() => (Number.isFinite(this.min()) ? this.min() : null));\n\n /** The upper bound, reported the way `ariaValueMin` reports the lower one. */\n protected readonly ariaValueMax = computed(() => (Number.isFinite(this.max()) ? this.max() : null));\n\n protected get fractionSeparator(): KbqInputNumberLocaleConfiguration['fractionSeparator'] {\n return this.config.fractionSeparator;\n }\n\n protected get groupSeparator(): KbqInputNumberLocaleConfiguration['groupSeparator'] {\n return this.config.groupSeparator;\n }\n\n private get config() {\n return this.localeConfiguration().number;\n }\n\n private readonly localeConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'input',\n KBQ_INPUT_LOCALE_CONFIGURATION\n );\n\n private valueFromPaste: number | null;\n\n /** Pending `onInput` reformats by timer handle: cancelled on destroy, run at once before a step. */\n private readonly pendingReformats = new Map<ReturnType<typeof setTimeout>, (correctCaret: boolean) => void>();\n\n constructor() {\n // The inputs stay `undefined` until a template binds them, so an unbound one does not override what a\n // form control wrote through `writeValue` / `setDisabledState`. Once bound, `undefined` clears the value.\n let bound = false;\n\n effect(() => {\n const value = this.valueInput();\n\n if (!bound && value === undefined) return;\n\n bound = true;\n\n untracked(() => this.setValue(value ?? null));\n });\n\n effect(() => {\n const disabled = this.disabledInput();\n\n if (disabled !== undefined) untracked(() => this.setDisabled(disabled));\n });\n\n // Re-render the value in the separators of the new locale. `untracked` keeps the configuration the\n // only dependency: formatting also reads the `withThousandSeparator` input, which must not rewrite\n // what the user is typing on its own.\n effect(() => {\n this.localeConfiguration();\n\n untracked(() => this.setViewValue(this.formatNumber(this.value)));\n });\n\n this.destroyRef.onDestroy(() => {\n this.pendingReformats.forEach((_, handle) => clearTimeout(handle));\n this.pendingReformats.clear();\n });\n }\n\n ngOnDestroy(): void {\n this.valueChange.complete();\n this.disabledChange.complete();\n this.stateChanges.complete();\n }\n\n onContainerClick(): void {\n this.focus();\n }\n\n focus(): void {\n this.nativeElement.focus();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: number | null): void {\n this.setValue(value);\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this.cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.setDisabled(isDisabled);\n }\n\n focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n\n if (!isFocused) this.onTouched();\n }\n\n /**\n * Called when the control is blurred. Needed to properly implement `ControlValueAccessor`.\n *\n * @docs-private\n */\n onTouched = () => {};\n\n onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const minuses = [NUMPAD_MINUS, DASH, FF_MINUS];\n const serviceKeys = [DELETE, BACKSPACE, TAB, ESCAPE, ENTER];\n const arrows = [LEFT_ARROW, RIGHT_ARROW];\n const allowedKeys = [HOME, END].concat(arrows).concat(serviceKeys).concat(minuses);\n\n // should parse normalized fractionSeparator\n const viewValueToBeChecked = normalizeNumber(this.viewValue, this.config);\n\n const shouldSkipForIntegerMode = this.integer() && this.isPeriod(event);\n const shouldBlockMinus = minuses.includes(keyCode) && (this.viewValue.includes(event.key) || this.min() >= 0);\n const isSignAndFractionSepAlreadyExists =\n this.isPeriod(event) &&\n [this.fractionSeparator, KBQ_DEFAULT_PRECISION_SEPARATOR].includes(event.key) &&\n viewValueToBeChecked.indexOf(KBQ_DEFAULT_PRECISION_SEPARATOR) !== -1;\n\n if (shouldSkipForIntegerMode || shouldBlockMinus || isSignAndFractionSepAlreadyExists) {\n event.preventDefault();\n\n return;\n }\n\n if (allowedKeys.indexOf(keyCode) !== -1 || [\n isSelectAll,\n isCopy,\n this.isCtrlV,\n this.isCtrlX,\n this.isCtrlZ,\n isFunctionKey,\n this.isPeriod\n ].some((fn) => fn(event))) {\n // let it happen, don't do anything\n return;\n }\n\n const isLetter = !isNumberKey(event) && !isNumpadKey(event);\n\n // Ensure that it is not a number and stop the keypress\n if (event.shiftKey || isLetter) {\n event.preventDefault();\n\n // process steps\n const step = event.shiftKey ? this.bigStep() : this.step();\n\n if (keyCode === UP_ARROW) {\n this.stepUp(step);\n }\n\n if (keyCode === DOWN_ARROW) {\n this.stepDown(step);\n }\n }\n }\n\n onInput(event: InputEvent) {\n const currentValueLength = this.formatNumber(this.value)?.length || 0;\n const previousSelectionStart = this.nativeElement.selectionStart || 0;\n\n // Deferred so the browser has applied the keystroke to the native value before it is reformatted.\n // The handle is tracked and cleared on destroy: a directive torn down between the keystroke and the\n // timeout must not write to a detached node nor push a change into a control the view no longer owns.\n const reformat = (correctCaret: boolean) => {\n this.pendingReformats.delete(handle);\n\n const fromPaste = event.inputType === 'insertFromPaste';\n let formattedValue: string | null;\n\n if (fromPaste) {\n formattedValue = this.formatNumber(this.valueFromPaste);\n } else {\n /*this.viewValue is raw and should be reformatted to localized number */\n formattedValue = this.formatViewValue();\n\n if (correctCaret && this.withThousandSeparator()) {\n this.correctCaretForSeparator(currentValueLength, previousSelectionStart);\n }\n }\n\n this.setViewValue(formattedValue, !fromPaste);\n\n if (this.viewValue !== '-') {\n this.viewToModelUpdate(formattedValue);\n }\n };\n const handle = setTimeout(() => reformat(true));\n\n this.pendingReformats.set(handle, reformat);\n }\n\n onPaste(event: ClipboardEvent) {\n this.valueFromPaste = checkAndNormalizeLocalizedNumber(\n event.clipboardData?.getData('text'),\n this.localeService?.localeId()\n );\n\n if (this.valueFromPaste === null || isNaN(this.valueFromPaste)) {\n event.preventDefault();\n } else if (this.integer() && isFloat(this.valueFromPaste.toString())) {\n event.preventDefault();\n\n const parsedValue = Number.parseInt(this.valueFromPaste.toString());\n\n this.setViewValue(this.formatNumber(parsedValue));\n this.viewToModelUpdate(parsedValue.toString());\n }\n }\n\n stepUp(step: number) {\n this.nativeElement.focus();\n this.commitPendingReformats();\n\n const res = Math.max(Math.min(add(this.value || 0, step), this.max()), this.min());\n\n this.setViewValue(this.formatNumber(res));\n\n this.valueState.set(res);\n this.cvaOnChange(res);\n this.valueChange.next(res);\n }\n\n stepDown(step: number) {\n this.nativeElement.focus();\n this.commitPendingReformats();\n\n const res = Math.min(Math.max(add(this.value || 0, -step), this.min()), this.max());\n\n this.setViewValue(this.formatNumber(res));\n\n this.valueState.set(res);\n this.cvaOnChange(res);\n this.valueChange.next(res);\n }\n\n private isCtrlV = (event: KeyboardEvent) => {\n return event.keyCode === V && (event.ctrlKey || event.metaKey);\n };\n\n private isCtrlX = (event: KeyboardEvent) => {\n return event.keyCode === X && (event.ctrlKey || event.metaKey);\n };\n\n private isCtrlZ = (event: KeyboardEvent) => {\n return event.keyCode === Z && (event.ctrlKey || event.metaKey);\n };\n\n private isPeriod = (event: KeyboardEvent) => {\n return (\n this.groupSeparator.includes(event.key) ||\n [this.fractionSeparator, KBQ_DEFAULT_PRECISION_SEPARATOR].includes(event.key)\n );\n };\n\n private cvaOnChange: (value: any) => void = () => {};\n\n /**\n * Commits a keystroke whose reformat is still pending, so a step pressed right after typing starts from\n * the typed value rather than the last committed one. The caret correction is skipped: the step rewrites\n * the value it would apply to.\n */\n private commitPendingReformats(): void {\n this.pendingReformats.forEach((reformat, handle) => {\n clearTimeout(handle);\n reformat(false);\n });\n }\n\n /**\n * Moves the caret one position when a group separator was inserted or removed by the reformat, so it\n * stays next to the same digit. Runs outside the zone: it only writes the selection, which no view or\n * model reads back, and each keystroke would otherwise cost an extra application-wide check.\n */\n private correctCaretForSeparator(previousValueLength: number, previousSelectionStart: number): void {\n const offsetWhenSeparatorAdded = 2;\n\n this.ngZone.runOutsideAngular(() =>\n Promise.resolve().then(() => {\n const lengthDelta = this.viewValue.length - previousValueLength;\n\n if (this.value && Math.abs(this.value) >= 1000 && Math.abs(lengthDelta) === offsetWhenSeparatorAdded) {\n const cursorPosition = Math.max(0, previousSelectionStart + Math.sign(lengthDelta));\n\n this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);\n this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);\n }\n })\n );\n }\n\n private setViewValue(value: string | null, savePosition: boolean = false) {\n const cursorPosition = this.nativeElement.selectionStart;\n\n this.renderer.setProperty(this.nativeElement, 'value', value);\n\n if (savePosition) {\n this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);\n this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);\n }\n }\n\n /** Writes a value from outside the field: reformats it and reports the change. */\n private setValue(value: number | null): void {\n const oldValue = this.valueState();\n\n this.valueState.set(value);\n\n if (oldValue !== value) {\n this.setViewValue(this.formatNumber(value));\n\n this.valueChange.next(value);\n }\n }\n\n private setDisabled(disabled: boolean): void {\n if (this.disabledState() !== disabled) {\n this.disabledState.set(disabled);\n this.disabledChange.next(disabled);\n this.stateChanges.next();\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (disabled && this.nativeElement.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n this.nativeElement.blur();\n }\n }\n\n private viewToModelUpdate(newValue: string | null) {\n const normalizedValue = newValue === null ? null : +normalizeNumber(newValue, this.config);\n\n if (normalizedValue !== this.value) {\n this.valueState.set(normalizedValue);\n // `cvaOnChange` routes through `FormControl.setValue`, which re-runs the validators itself.\n this.cvaOnChange(normalizedValue);\n this.valueChange.next(normalizedValue);\n }\n }\n\n private formatViewValue(): string | null {\n // we just need to skip the minus sign and not do any formatting\n if (this.viewValue === '-') return this.viewValue;\n\n if (\n this.viewValue === null ||\n this.viewValue === '' ||\n Number.isNaN(+normalizeNumber(this.viewValue, this.config))\n ) {\n return null;\n }\n\n const separator =\n this.groupSeparator.includes(' ') && this.fractionSeparator === ',' ? /[,.]/ : this.fractionSeparator;\n\n const [intPart, fractionPart] = this.viewValue\n .split(separator)\n .map((valuePart) => normalizeNumber(valuePart, this.config));\n\n return this.createLocalizedNumberFromParts(+intPart, fractionPart);\n }\n\n private formatNumber(value: number | null | undefined): string | null {\n if (value === null || value === undefined) return null;\n\n const [intPart, fractionPart] = value.toString().split(KBQ_DEFAULT_PRECISION_SEPARATOR);\n\n return this.createLocalizedNumberFromParts(+intPart, fractionPart);\n }\n\n private createLocalizedNumberFromParts(intPart: number, fractionPart?: string): string {\n const formatOptions = {\n useGrouping: this.withThousandSeparator(),\n maximumFractionDigits: 20\n };\n\n const startFormattingFrom = this.startFormattingFrom() ?? this.config.startFormattingFrom;\n\n if (this.withThousandSeparator() && startFormattingFrom != null) {\n formatOptions.useGrouping = intPart >= Math.pow(10, startFormattingFrom);\n }\n\n const formatter = new Intl.NumberFormat(resolveIntlLocale(this.localeService?.localeId()), formatOptions);\n\n const formattedIntPart = formatNumberWithLocale(intPart, formatter, this.config);\n\n if (fractionPart === undefined) {\n return formattedIntPart;\n }\n\n let formattedFractionPart: string = '';\n\n for (const numChar of fractionPart) {\n formattedFractionPart += formatter.format(+numChar);\n }\n\n return `${formattedIntPart}${this.fractionSeparator}${formattedFractionPart}`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const KBQ_INPUT_VALUE_ACCESSOR = new InjectionToken<{ value: any }>('KBQ_INPUT_VALUE_ACCESSOR');\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\nimport {\n booleanAttribute,\n computed,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n signal,\n untracked,\n WritableSignal\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n KbqErrorStateTracker,\n kbqInjectAutofilled\n} from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { getKbqInputUnsupportedTypeError, KBQ_NUMBER_INPUT_UNSUPPORTED_TYPE_MESSAGE } from './input-errors';\nimport { KbqNumberInput } from './input-number';\nimport { KBQ_INPUT_VALUE_ACCESSOR } from './input-value-accessor';\n\n// `typeof ngDevMode` is the guard the build optimizer folds away in production bundles.\ndeclare const ngDevMode: boolean | undefined;\n\nconst isObject = (value: unknown): value is object => typeof value === 'object' && value !== null;\n\nconst KBQ_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\n@Directive({\n selector: `input[kbqInput],input[kbqNumberInput]`,\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqInput\n }\n ],\n host: {\n class: 'kbq-input',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id()',\n '[attr.placeholder]': 'placeholder()',\n '[attr.disabled]': 'disabled() || null',\n '[attr.aria-invalid]': 'errorState()',\n '[required]': 'required()',\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n '(input)': 'dirtyCheckNativeValue()'\n },\n exportAs: 'kbqInput'\n})\nexport class KbqInput implements KbqFormFieldControl<any>, DoCheck, CanUpdateErrorState {\n protected elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n ngControl = inject(NgControl, { optional: true, self: true });\n numberInput = inject(KbqNumberInput, { optional: true, self: true });\n parentForm = inject(NgForm, { optional: true });\n parentFormGroup = inject(FormGroupDirective, { optional: true });\n defaultErrorStateMatcher = inject(ErrorStateMatcher);\n\n private readonly errorStateTracker = new KbqErrorStateTracker(\n this.defaultErrorStateMatcher,\n this.ngControl,\n this.parentFormGroup,\n this.parentForm\n );\n\n /** Whether the component is in an error state. */\n readonly errorState = this.errorStateTracker.errorState;\n\n /** An object used to control when error messages are shown. */\n readonly errorStateMatcher = input<ErrorStateMatcher>();\n\n private readonly focusedValue = signal(false);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly focused = this.focusedValue.asReadonly();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly autofilled = kbqInjectAutofilled();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n controlType: string = this.numberInput ? 'input-number' : 'input';\n\n /** @docs-private */\n readonly placeholderInput = input<string | undefined>(undefined, { alias: 'placeholder' });\n\n /**\n * Implemented as part of KbqFormFieldControl. Writable, so that a select search can supply one.\n *\n * @docs-private\n */\n readonly placeholder = linkedSignal(() => this.placeholderInput());\n\n protected uid = inject(_IdGenerator).getId('kbq-input-');\n protected neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter((t) => getSupportedInputTypes().has(t));\n\n /** @docs-private */\n readonly disabledInput = input<boolean, boolean | string | null | undefined>(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n /** `disabled` of the bound form control, which takes precedence over the input. */\n private readonly formDisabled = signal<boolean | null>(null);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly disabled = computed(() => this.formDisabled() ?? this.disabledInput());\n\n /** @docs-private */\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly id = computed(() => this.idInput() || this.uid);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly required = input<boolean, boolean | string | null | undefined>(false, { transform: booleanAttribute });\n\n /** @docs-private */\n readonly typeInput = input<string | undefined>(undefined, { alias: 'type' });\n\n /** Input type of the element. */\n get type(): string {\n return this.resolvedType();\n }\n\n // A native number field runs the value sanitization algorithm on assignment and drops anything that\n // is not a valid floating-point number — which is every value `kbqNumberInput` renders once a group\n // separator or a comma fraction separator is in it. It also reports `selectionStart` as `null`,\n // disabling caret preservation. Reset rather than throw, so an existing consumer keeps working.\n private readonly resolvedType = computed(() => {\n const type = this.typeInput() || 'text';\n\n return this.numberInput && type === 'number' ? 'text' : type;\n });\n\n private inputValueAccessor: { value: any };\n\n /** @docs-private */\n readonly valueInput = input<string | undefined>(undefined, { alias: 'value' });\n\n /**\n * Implemented as part of KbqFormFieldControl. Follows what the user types; a value bound with `[value]` or set\n * here is written to the element.\n *\n * @docs-private\n */\n readonly value: WritableSignal<string>;\n\n private readonly emptyValue = signal(true);\n\n /** The value the element and `value` last agreed on, and the text the element showed then. */\n private syncedValue: unknown;\n private syncedText: string;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly empty = this.emptyValue.asReadonly();\n\n constructor() {\n const inputValueAccessor = inject(KBQ_INPUT_VALUE_ACCESSOR, { optional: true, self: true });\n\n // If no input value accessor was explicitly specified, use the element as the input value accessor.\n this.inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n // A static `type` is on the element before any directive runs, while the effect below runs after a reactive\n // form has written its value from `ngOnChanges`: a number field would sanitize that value away by then.\n if (this.numberInput && this.elementRef.nativeElement.type === 'number') {\n this.elementRef.nativeElement.type = 'text';\n }\n\n // Read once: a custom accessor may build a new value on every read.\n const initialValue = this.inputValueAccessor.value;\n\n this.value = signal(initialValue);\n this.syncedValue = initialValue;\n this.syncedText = this.elementRef.nativeElement.value;\n\n // A binding of `type` no longer reaches the element on its own: the directive takes the input. Textarea\n // elements don't support the type property or attribute.\n effect(() => {\n const type = this.resolvedType();\n\n untracked(() => {\n this.validateType();\n\n if (getSupportedInputTypes().has(type)) {\n this.elementRef.nativeElement.type = type;\n }\n });\n });\n\n // A bound value replaces the current one whenever the binding changes. The number input takes the same\n // binding and renders it in the locale format, so it owns the element's value.\n effect(() => {\n const value = this.valueInput();\n\n if (value !== undefined && !this.numberInput) {\n untracked(() => this.value.set(value));\n }\n });\n\n // A value set in code is written to the element on the next change detection. The one the element last agreed\n // on is not written back: the element may have changed since, as when the number input renders a bound value.\n effect(() => {\n const value = this.value();\n\n untracked(() => {\n if (value !== this.syncedValue) {\n if (this.inputValueAccessor.value !== value) {\n this.inputValueAccessor.value = value;\n }\n\n this.syncedValue = value;\n this.syncedText = this.elementRef.nativeElement.value;\n }\n\n this.dirtyCheckNativeValue();\n });\n });\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n effect(() => {\n if (this.disabled()) {\n untracked(() => this.focusedValue.set(false));\n }\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n this.formDisabled.set(this.ngControl.disabled);\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n updateErrorState() {\n this.errorStateTracker.errorStateMatcher = this.errorStateMatcher();\n this.errorStateTracker.updateErrorState();\n }\n\n /** Focuses the input. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n onBlur(): void {\n this.focusChanged(false);\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n focusChanged(isFocused: boolean) {\n this.focusedValue.set(isFocused);\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /**\n * Reads the native value back, since it changes without notice: through the forms API, which writes the\n * element directly, or by the user typing into an input that no form listens to.\n *\n * @docs-private\n */\n dirtyCheckNativeValue() {\n const nativeValue = this.inputValueAccessor.value;\n const text = this.elementRef.nativeElement.value;\n\n // Only a change of the element itself: a value set in code and not yet written must not be overwritten. An\n // object counts as changed only with the text, as a custom accessor may build a new one on every read.\n if (nativeValue !== this.syncedValue && (!isObject(nativeValue) || text !== this.syncedText)) {\n this.syncedValue = nativeValue;\n this.syncedText = text;\n this.value.set(nativeValue);\n }\n\n this.emptyValue.set(this.isEmpty());\n }\n\n /** Make sure the input is a supported type. */\n protected validateType() {\n const type = this.typeInput() || 'text';\n\n if (KBQ_INPUT_INVALID_TYPES.indexOf(type) > -1) {\n throw getKbqInputUnsupportedTypeError(type);\n }\n\n if (this.numberInput && type === 'number' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n // eslint-disable-next-line no-console\n console.warn(KBQ_NUMBER_INPUT_UNSUPPORTED_TYPE_MESSAGE);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected isNeverEmpty() {\n return this.neverEmptyInputTypes.indexOf(this.type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected isBadInput() {\n // The `validity` property won't be present on platform-server.\n const validity = (this.elementRef.nativeElement as HTMLInputElement).validity;\n\n return validity?.badInput;\n }\n\n private isEmpty(): boolean {\n return !this.isNeverEmpty() && !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n}\n\n@Directive({\n selector: 'input[kbqInputMonospace]',\n host: { class: 'kbq-input_monospace' },\n exportAs: 'kbqInputMonospace, KbqInputMonospace'\n})\nexport class KbqInputMono {}\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { computed, Directive, forwardRef, input, OnChanges, Provider, SimpleChanges } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\n\n/**\n * Transform for the validator bounds. `coerceNumberProperty`, not `parseInt`: the bound value may be a\n * fractional number or the string form of a static `min=\"0.5\"` attribute, and `parseInt` would truncate\n * both to `0`. A non-numeric bound becomes `NaN`, which installs no validator and writes no attribute.\n */\nconst bound = (value: NumberInput): number => coerceNumberProperty(value, NaN);\n\nexport const KBQ_MIN_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => KbqMinValidator),\n multi: true\n};\n\n/**\n * A directive which installs the `KbqMinValidator` for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `min` attribute.\n */\n@Directive({\n selector: '[min][formControlName],[min][formControl],[min][ngModel]',\n providers: [KBQ_MIN_VALIDATOR],\n host: {\n // Coerced rather than the raw `min()`, so a non-numeric bound (e.g. `\"5px\"`) is dropped from the\n // DOM exactly like it is from the installed validator, instead of writing a bogus `min` attribute.\n // `?? null` rather than a falsy check: a bound `[min]=\"0\"` is the most common lower bound and must\n // still reach the DOM.\n '[attr.min]': 'coercedMin() ?? null'\n }\n})\nexport class KbqMinValidator implements Validator, OnChanges {\n /** Lower bound installed as `Validators.min`. A non-numeric bound reads back as `NaN`. */\n readonly min = input<number, NumberInput>(undefined!, { transform: bound });\n\n private validator: ValidatorFn;\n private onChange: () => void;\n\n /** `min()` unless it is `NaN`, which has no DOM representation. */\n protected readonly coercedMin = computed(() => (Number.isNaN(this.min()) ? null : this.min()));\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('min' in changes) {\n this.createValidator();\n\n if (this.onChange) {\n this.onChange();\n }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n private createValidator(): void {\n const min = this.min();\n\n this.validator = Number.isNaN(min) ? Validators.nullValidator : Validators.min(min);\n }\n}\n\nexport const KBQ_MAX_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => KbqMaxValidator),\n multi: true\n};\n\n/**\n * A directive which installs the `KbqMaxValidator` for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `max` attribute.\n */\n@Directive({\n selector: '[max][formControlName],[max][formControl],[max][ngModel]',\n providers: [KBQ_MAX_VALIDATOR],\n host: {\n // See `KbqMinValidator`'s `[attr.min]` for why this is coerced rather than the raw `max()`.\n '[attr.max]': 'coercedMax() ?? null'\n }\n})\nexport class KbqMaxValidator implements Validator, OnChanges {\n /** Upper bound installed as `Validators.max`. A non-numeric bound reads back as `NaN`. */\n readonly max = input<number, NumberInput>(undefined!, { transform: bound });\n\n private validator: ValidatorFn;\n private onChange: () => void;\n\n /** `max()` unless it is `NaN`, which has no DOM representation. */\n protected readonly coercedMax = computed(() => (Number.isNaN(this.max()) ? null : this.max()));\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('max' in changes) {\n this.createValidator();\n\n if (this.onChange) {\n this.onChange();\n }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n private createValidator(): void {\n const max = this.max();\n\n this.validator = Number.isNaN(max) ? Validators.nullValidator : Validators.max(max);\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport {\n booleanAttribute,\n computed,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n signal,\n untracked,\n WritableSignal\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n KbqErrorStateTracker,\n kbqInjectAutofilled\n} from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { KBQ_INPUT_VALUE_ACCESSOR } from './input-value-accessor';\n\nconst isObject = (value: unknown): value is object => typeof value === 'object' && value !== null;\n\n@Directive({\n selector: `input[kbqInputPassword]`,\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqInputPassword\n }\n ],\n host: {\n class: 'kbq-input kbq-input-password',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id()',\n '[attr.type]': 'elementType()',\n '[attr.placeholder]': 'placeholder()',\n '[attr.disabled]': 'disabled() || null',\n '[attr.aria-invalid]': 'errorState()',\n '[required]': 'required()',\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n '(input)': 'dirtyCheckNativeValue()'\n },\n exportAs: 'kbqInputPassword'\n})\nexport class KbqInputPassword implements KbqFormFieldControl<any>, DoCheck, CanUpdateErrorState {\n protected elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n ngControl = inject(NgControl, { optional: true, self: true });\n parentForm = inject(NgForm, { optional: true });\n parentFormGroup = inject(FormGroupDirective, { optional: true });\n defaultErrorStateMatcher = inject(ErrorStateMatcher);\n\n private readonly errorStateTracker = new KbqErrorStateTracker(\n this.defaultErrorStateMatcher,\n this.ngControl,\n this.parentFormGroup,\n this.parentForm\n );\n\n /** Whether the component is in an error state. */\n readonly errorState = this.errorStateTracker.errorState;\n\n /** An object used to control when error messages are shown. */\n readonly errorStateMatcher = input<ErrorStateMatcher>();\n\n private readonly focusedValue = signal(false);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly focused = this.focusedValue.asReadonly();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly autofilled = kbqInjectAutofilled();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n controlType: string = 'input-password';\n\n private readonly elementTypeValue = signal<'text' | 'password'>('password');\n\n /** Type of the native input: `password` while the password is hidden, `text` while it is shown. */\n readonly elementType = this.elementTypeValue.asReadonly();\n\n /** @docs-private */\n readonly placeholderInput = input<string | undefined>(undefined, { alias: 'placeholder' });\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly placeholder = linkedSignal(() => this.placeholderInput());\n\n // Own namespace: sharing `kbq-input-` with `KbqInput` produced duplicate ids on any page holding both\n // controls, and the form field's `<label for>` then resolved to the wrong control.\n protected uid = inject(_IdGenerator).getId('kbq-input-password-');\n\n /** @docs-private */\n readonly disabledInput = input<boolean, boolean | string | null | undefined>(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n /** `disabled` of the bound form control, which takes precedence over the input. */\n private readonly formDisabled = signal<boolean | null>(null);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly disabled = computed(() => this.formDisabled() ?? this.disabledInput());\n\n /** @docs-private */\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly id = computed(() => this.idInput() || this.uid);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly required = input<boolean, boolean | string | null | undefined>(false, { transform: booleanAttribute });\n\n private inputValueAccessor: { value: any };\n\n /** @docs-private */\n readonly valueInput = input<string | undefined>(undefined, { alias: 'value' });\n\n /**\n * Implemented as part of KbqFormFieldControl. Follows what the user types; a value bound with `[value]` or set\n * here is written to the element.\n *\n * @docs-private\n */\n readonly value: WritableSignal<string>;\n\n private readonly emptyValue = signal(true);\n\n /** The value the element and `value` last agreed on, and the text the element showed then. */\n private syncedValue: unknown;\n private syncedText: string;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly empty = this.emptyValue.asReadonly();\n\n constructor() {\n const inputValueAccessor = inject(KBQ_INPUT_VALUE_ACCESSOR, { optional: true, self: true });\n\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this.inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n // Read once: a custom accessor may build a new value on every read.\n const initialValue = this.inputValueAccessor.value;\n\n this.value = signal(initialValue);\n this.syncedValue = initialValue;\n this.syncedText = this.elementRef.nativeElement.value;\n\n // A bound value replaces the current one whenever the binding changes.\n effect(() => {\n const value = this.valueInput();\n\n if (value !== undefined) {\n untracked(() => this.value.set(value));\n }\n });\n\n // A value set in code is written to the element on the next change detection. The one the element last agreed\n // on is not written back: a custom accessor that builds a new value on every read would be written on every\n // keystroke.\n effect(() => {\n const value = this.value();\n\n untracked(() => {\n if (value !== this.syncedValue) {\n if (this.inputValueAccessor.value !== value) {\n this.inputValueAccessor.value = value;\n }\n\n this.syncedValue = value;\n this.syncedText = this.elementRef.nativeElement.value;\n }\n\n this.emptyValue.set(this.isEmpty());\n });\n });\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n effect(() => {\n if (this.disabled()) {\n untracked(() => this.focusedValue.set(false));\n }\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n this.formDisabled.set(this.ngControl.disabled);\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n updateErrorState() {\n this.errorStateTracker.errorStateMatcher = this.errorStateMatcher();\n this.errorStateTracker.updateErrorState();\n }\n\n /** Toggles the native input type between password and text. */\n toggleType(): void {\n this.elementTypeValue.update((type) => (type === 'password' ? 'text' : 'password'));\n }\n\n /** Focuses the input. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n onBlur(): void {\n this.focusChanged(false);\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n focusChanged(isFocused: boolean) {\n this.focusedValue.set(isFocused);\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /**\n * Reads the native value back, since it changes without notice: through the forms API, which writes the\n * element directly, or by the user typing into an input that no form listens to.\n *\n * @docs-private\n */\n dirtyCheckNativeValue() {\n const nativeValue = this.inputValueAccessor.value;\n const text = this.elementRef.nativeElement.value;\n\n // Only a change of the element itself: a value set in code and not yet written must not be overwritten. An\n // object counts as changed only with the text, as a custom accessor may build a new one on every read.\n if (nativeValue !== this.syncedValue && (!isObject(nativeValue) || text !== this.syncedText)) {\n this.syncedValue = nativeValue;\n this.syncedText = text;\n this.value.set(nativeValue);\n }\n\n this.emptyValue.set(this.isEmpty());\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected isBadInput() {\n // The `validity` property won't be present on platform-server.\n return (this.elementRef.nativeElement as HTMLInputElement).validity?.badInput;\n }\n\n private isEmpty(): boolean {\n return !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputMono } from './input';\nimport { KbqNumberInput } from './input-number';\nimport { KbqMaxValidator, KbqMinValidator } from './input-number-validators';\nimport { KbqInputPassword } from './input-password';\n\n@NgModule({\n imports: [\n A11yModule,\n FormsModule,\n KbqIconModule,\n KbqInput,\n KbqNumberInput,\n KbqInputPassword,\n KbqInputMono,\n KbqMinValidator,\n KbqMaxValidator\n ],\n exports: [\n KbqInput,\n KbqNumberInput,\n KbqInputPassword,\n KbqInputMono,\n KbqMinValidator,\n KbqMaxValidator,\n KbqFormFieldModule\n ]\n})\nexport class KbqInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["isObject"],"mappings":";;;;;;;;;;;;AAAM,SAAU,+BAA+B,CAAC,SAAiB,EAAA;AAC7D,IAAA,OAAO,KAAK,CAAC,CAAA,YAAA,EAAe,SAAS,CAAA,8BAAA,CAAgC,CAAC;AAC1E;AAEA;;AAEG;AACI,MAAM,yCAAyC,GAClD,iGAAiG;AACjG,IAAA,yEAAyE;;ACkD7E;;;AAGG;MACU,sCAAsC,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAE/E;;;AAGG;AACI,MAAM,sCAAsC,GAAgC,kBAAkB,CAAC;AAEtG;AACO,MAAM,8BAA8B,GAAG,IAAI,cAAc,CAC5D,6BAA6B,EAC7B,EAAE,OAAO,EAAE,MAAM,sCAAsC,EAAE;AAG7D;;;AAGG;AACI,MAAM,mCAAmC,GAAG,CAC/C,aAA0D,KAC/C,sCAAsC,CAAC,OAAO,EAAE,aAAa;AAE5E;;;;AAIG;AACI,MAAM,QAAQ,GAAG;AAExB;;;;AAIG;AACI,MAAM,UAAU,GAAG;AAE1B;;;;;;;;AAQG;AACH,SAAS,iBAAiB,CAAC,QAA4B,EAAA;AACnD,IAAA,OAAO,CAAC,QAAQ,IAAI,QAAQ,KAAK,OAAO,GAAG,qBAAqB,GAAG,QAAQ;AAC/E;AAEA;;;AAGG;AACH,MAAM,eAAe,GACjB,CAAC,QAAgB,KACjB,CAAC,KAAkB,KACf,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;AAE7C;AACM,SAAU,OAAO,CAAC,KAAa,EAAA;AACjC,IAAA,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC;AAEA;;;AAGG;AACH,SAAS,iBAAiB,CAAC,KAAa,EAAA;AACpC,IAAA,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AAClE,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;AAE9E,IAAA,OAAO,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,MAAM;AACxE;AAEA;;;;AAIG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACjD;AAEA;;;;;AAKG;AACG,SAAU,GAAG,CAAC,MAAc,EAAE,MAAc,EAAA;AAC9C,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAEtE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,SAAS;AACxF;AAEO,MAAM,+BAA+B,GAAQ;AAChD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,IAAA,KAAK,EAAE;;MAyBE,cAAc,CAAA;;AAmDvB,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI;IACpC;;AAWA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;IAC/B;AAMA,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;IACxC;AAEA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK;IACnC;AAEA;;;;;;;AAOG;AACH,IAAA,IAAI,aAAa,GAAA;QACb,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG;AAAE,YAAA,OAAO,IAAI;AAEhE,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAEnE,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,MAAM;IAC/C;AAYA,IAAA,IAAc,iBAAiB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB;IACxC;AAEA,IAAA,IAAc,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc;IACrC;AAEA,IAAA,IAAY,MAAM,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM;IAC5C;AAYA,IAAA,WAAA,GAAA;AA/HQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA+B,UAAU,CAAC;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACxC,IAAA,CAAA,aAAa,GAAG,MAAM,CAAmB,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAE/E,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAiB;;AAG1C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAW;;AAGvC,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ;AAE1D;;;;AAIG;QACH,IAAA,CAAA,WAAW,GAAW,cAAc;AAEpC;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAGzE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAsB,QAAQ,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAA,CAAG;;AAGxF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAsB,UAAU,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,EAAA,CAAG;;AAGzF,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAsB,CAAC,QAAQ,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,KAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG;;AAGtF,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAsB,QAAQ,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,KAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAA,CAAG;QAEpF,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAmB,IAAI,6FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE/F;;;AAGG;QACM,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;QAGrC,IAAA,CAAA,UAAU,GAAG,KAAK,CAA4B,SAAS,kFAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAOpE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA4B,SAAS,iFAAC;;AAGjE,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EAC9F,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,gBAAgB,EAAA,CAC7B;AAOe,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,oFAAC;QAE9C,IAAA,CAAA,OAAO,GAAY,KAAK;AA0BxB;;;;AAIG;AACgB,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,mFAAC;;AAGhF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,mFAAC;AAclF,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC3F,OAAO,EACP,8BAA8B,CACjC;;AAKgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAkE;AAiF7G;;;;AAIG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AAwIZ,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAAoB,KAAI;AACvC,YAAA,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;AAClE,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAAoB,KAAI;AACvC,YAAA,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;AAClE,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAAoB,KAAI;AACvC,YAAA,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;AAClE,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAoB,KAAI;YACxC,QACI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACvC,gBAAA,CAAC,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAErF,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,WAAW,GAAyB,MAAK,EAAE,CAAC;;;QA5OhD,IAAI,KAAK,GAAG,KAAK;QAEjB,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAE/B,YAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS;gBAAE;YAEnC,KAAK,GAAG,IAAI;AAEZ,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AACjD,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;YAErC,IAAI,QAAQ,KAAK,SAAS;gBAAE,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC3E,QAAA,CAAC,CAAC;;;;QAKF,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,mBAAmB,EAAE;AAE1B,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACjC,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAChC;IAEA,gBAAgB,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IAChB;IAEA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;IAC9B;;AAGA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACxB;;AAGA,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACzB;;AAGA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;;AAGA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;IAChC;AAEA,IAAA,YAAY,CAAC,SAAkB,EAAA;AAC3B,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC5B;AAEA,QAAA,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,EAAE;IACpC;AASA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;QAC7B,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC;AAC3D,QAAA,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC;QACxC,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;;AAGlF,QAAA,MAAM,oBAAoB,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;AAEzE,QAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvE,QAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7G,QAAA,MAAM,iCAAiC,GACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,YAAA,CAAC,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;YAC7E,oBAAoB,CAAC,OAAO,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;AAExE,QAAA,IAAI,wBAAwB,IAAI,gBAAgB,IAAI,iCAAiC,EAAE;YACnF,KAAK,CAAC,cAAc,EAAE;YAEtB;QACJ;QAEA,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI;YACnC,WAAW;YACX,MAAM;AACN,YAAA,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,OAAO;YACZ,aAAa;AACb,YAAA,IAAI,CAAC;AACR,SAAA,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;;YAE3B;QACJ;AAEA,QAAA,MAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAG3D,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE;YAC5B,KAAK,CAAC,cAAc,EAAE;;AAGtB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;AAE1D,YAAA,IAAI,OAAO,KAAK,QAAQ,EAAE;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACrB;AAEA,YAAA,IAAI,OAAO,KAAK,UAAU,EAAE;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB;QACJ;IACJ;AAEA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACrB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;QACrE,MAAM,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,IAAI,CAAC;;;;AAKrE,QAAA,MAAM,QAAQ,GAAG,CAAC,YAAqB,KAAI;AACvC,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;AAEpC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,iBAAiB;AACvD,YAAA,IAAI,cAA6B;YAEjC,IAAI,SAAS,EAAE;gBACX,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;YAC3D;iBAAO;;AAEH,gBAAA,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE;AAEvC,gBAAA,IAAI,YAAY,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9C,oBAAA,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;gBAC7E;YACJ;YAEA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC;AAE7C,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE;AACxB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;YAC1C;AACJ,QAAA,CAAC;AACD,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,KAAqB,EAAA;QACzB,IAAI,CAAC,cAAc,GAAG,gCAAgC,CAClD,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,EACpC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CACjC;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAC5D,KAAK,CAAC,cAAc,EAAE;QAC1B;AAAO,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,EAAE;YAClE,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAEnE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAClD;IACJ;AAEA,IAAA,MAAM,CAAC,IAAY,EAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1B,IAAI,CAAC,sBAAsB,EAAE;AAE7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAElF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9B;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1B,IAAI,CAAC,sBAAsB,EAAE;AAE7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAEnF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9B;AAuBA;;;;AAIG;IACK,sBAAsB,GAAA;QAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAI;YAC/C,YAAY,CAAC,MAAM,CAAC;YACpB,QAAQ,CAAC,KAAK,CAAC;AACnB,QAAA,CAAC,CAAC;IACN;AAEA;;;;AAIG;IACK,wBAAwB,CAAC,mBAA2B,EAAE,sBAA8B,EAAA;QACxF,MAAM,wBAAwB,GAAG,CAAC;AAElC,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAC1B,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;YACxB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,mBAAmB;YAE/D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,wBAAwB,EAAE;AAClG,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEnF,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,CAAC;AAC/E,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,CAAC;YACjF;QACJ,CAAC,CAAC,CACL;IACL;AAEQ,IAAA,YAAY,CAAC,KAAoB,EAAE,YAAA,GAAwB,KAAK,EAAA;AACpE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc;AAExD,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC;QAE7D,IAAI,YAAY,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,CAAC;AAC/E,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,CAAC;QACjF;IACJ;;AAGQ,IAAA,QAAQ,CAAC,KAAoB,EAAA;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;AAElC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAE3C,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC;IACJ;AAEQ,IAAA,WAAW,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC5B;;QAGA,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;;;;AAIrC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;QAC7B;IACJ;AAEQ,IAAA,iBAAiB,CAAC,QAAuB,EAAA;QAC7C,MAAM,eAAe,GAAG,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;AAE1F,QAAA,IAAI,eAAe,KAAK,IAAI,CAAC,KAAK,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC;;AAEpC,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;QAC1C;IACJ;IAEQ,eAAe,GAAA;;AAEnB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC,SAAS;AAEjD,QAAA,IACI,IAAI,CAAC,SAAS,KAAK,IAAI;YACvB,IAAI,CAAC,SAAS,KAAK,EAAE;AACrB,YAAA,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAC7D;AACE,YAAA,OAAO,IAAI;QACf;QAEA,MAAM,SAAS,GACX,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,KAAK,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB;QAEzG,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC;aAChC,KAAK,CAAC,SAAS;AACf,aAAA,GAAG,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhE,OAAO,IAAI,CAAC,8BAA8B,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC;IACtE;AAEQ,IAAA,YAAY,CAAC,KAAgC,EAAA;AACjD,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI;AAEtD,QAAA,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,+BAA+B,CAAC;QAEvF,OAAO,IAAI,CAAC,8BAA8B,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC;IACtE;IAEQ,8BAA8B,CAAC,OAAe,EAAE,YAAqB,EAAA;AACzE,QAAA,MAAM,aAAa,GAAG;AAClB,YAAA,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACzC,YAAA,qBAAqB,EAAE;SAC1B;AAED,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB;QAEzF,IAAI,IAAI,CAAC,qBAAqB,EAAE,IAAI,mBAAmB,IAAI,IAAI,EAAE;AAC7D,YAAA,aAAa,CAAC,WAAW,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,mBAAmB,CAAC;QAC5E;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,CAAC;AAEzG,QAAA,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;AAEhF,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,YAAA,OAAO,gBAAgB;QAC3B;QAEA,IAAI,qBAAqB,GAAW,EAAE;AAEtC,QAAA,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE;YAChC,qBAAqB,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACvD;QAEA,OAAO,CAAA,EAAG,gBAAgB,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,EAAG,qBAAqB,CAAA,CAAE;IACjF;kIA/fS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EApBZ,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAoBnC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAtB1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAA,qBAAA,CAAuB;oBACjC,SAAS,EAAE,CAAC,+BAA+B,CAAC;AAC5C,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,kBAAkB,EAAE,mCAAmC;AACvD,wBAAA,sBAAsB,EAAE,OAAO;;AAE/B,wBAAA,uBAAuB,EAAE,mBAAmB;AAC5C,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,QAAQ,EAAE,qBAAqB;AAC/B,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,SAAS,EAAE;AACd,qBAAA;AACD,oBAAA,cAAc,EAAE;wBACZ,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,qCAAqC,CAAC;AAC5F,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;MCvLY,wBAAwB,GAAG,IAAI,cAAc,CAAiB,0BAA0B;;AC6BrG,MAAMA,UAAQ,GAAG,CAAC,KAAc,KAAsB,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;AAEjG,MAAM,uBAAuB,GAAG;IAC5B,QAAQ;IACR,UAAU;IACV,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP;CACH;MAyBY,QAAQ,CAAA;;AAqGjB,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC9B;AAsCA,IAAA,WAAA,GAAA;AA5IU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA+B,UAAU,CAAC;AACvE,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpE,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAChE,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEnC,IAAA,CAAA,iBAAiB,GAAG,IAAI,oBAAoB,CACzD,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,UAAU,CAClB;;AAGQ,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU;;QAG9C,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAqB;AAEtC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;AAE7C;;;;AAIG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAEjD;;;;AAIG;QACM,IAAA,CAAA,UAAU,GAAG,mBAAmB,EAAE;AAE3C;;;;AAIG;AACH,QAAA,IAAA,CAAA,WAAW,GAAW,IAAI,CAAC,WAAW,GAAG,cAAc,GAAG,OAAO;;QAGxD,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,wFAAI,KAAK,EAAE,aAAa,EAAA,CAAG;AAE1F;;;;AAIG;QACM,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;QAExD,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;AAC9C,QAAA,IAAA,CAAA,oBAAoB,GAAG;YAC7B,MAAM;YACN,UAAU;YACV,gBAAgB;YAChB,OAAO;YACP,MAAM;YACN;AACH,SAAA,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAGvC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA+C,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EAC9E,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;AAGe,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAiB,IAAI,mFAAC;AAE5D;;;;AAIG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,+EAAC;;QAGtE,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,+EAAI,KAAK,EAAE,IAAI,EAAA,CAAG;AAExE;;;;AAIG;AACM,QAAA,IAAA,CAAA,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,yEAAC;AAExD;;;;AAIG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAA+C,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGtG,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,iFAAI,KAAK,EAAE,MAAM,EAAA,CAAG;;;;;AAW3D,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,MAAM;AAEvC,YAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI;AAChE,QAAA,CAAC,mFAAC;;QAKO,IAAA,CAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,kFAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAU7D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,IAAI,iFAAC;AAM1C;;;;AAIG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAGzC,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;QAG3F,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa;;;AAI7E,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE;YACrE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,MAAM;QAC/C;;AAGA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;AAElD,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,4EAAC;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,YAAY;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;;;QAIrD,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;YAEhC,SAAS,CAAC,MAAK;gBACX,IAAI,CAAC,YAAY,EAAE;gBAEnB,IAAI,sBAAsB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACpC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI;gBAC7C;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;YAE/B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC1C,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C;AACJ,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAE1B,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;oBAC5B,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,KAAK,KAAK,EAAE;AACzC,wBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,KAAK;oBACzC;AAEA,oBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;oBACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;gBACzD;gBAEA,IAAI,CAAC,qBAAqB,EAAE;AAChC,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjD;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;;;;YAIhB,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAClD;;;;QAKA,IAAI,CAAC,qBAAqB,EAAE;IAChC;IAEA,gBAAgB,GAAA;QACZ,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACnE,QAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;IAC7C;;IAGA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC5B;;AAGA,IAAA,YAAY,CAAC,SAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;IACpC;AAEA;;;;AAIG;IACH,gBAAgB,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IAChB;AAEA;;;;;AAKG;IACH,qBAAqB,GAAA;AACjB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;;;QAIhD,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,KAAK,CAACA,UAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QAC/B;QAEA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACvC;;IAGU,YAAY,GAAA;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,MAAM;QAEvC,IAAI,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5C,YAAA,MAAM,+BAA+B,CAAC,IAAI,CAAC;QAC/C;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,KAAK,QAAQ,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;;AAE1F,YAAA,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC;QAC3D;IACJ;;IAGU,YAAY,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D;;IAGU,UAAU,GAAA;;QAEhB,MAAM,QAAQ,GAAI,IAAI,CAAC,UAAU,CAAC,aAAkC,CAAC,QAAQ;QAE7E,OAAO,QAAQ,EAAE,QAAQ;IAC7B;IAEQ,OAAO,GAAA;QACX,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAC7F;kIAjTS,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EArBN;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAgBQ,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAvBpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAA,qCAAA,CAAuC;AACjD,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,WAAW;;;AAGlB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,oBAAoB,EAAE,eAAe;AACrC,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,qBAAqB,EAAE,cAAc;AACrC,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,wBAAA,SAAS,EAAE;AACd,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACb,iBAAA;;MA0TY,YAAY,CAAA;kIAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACtC,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACxXD;;;;AAIG;AACH,MAAM,KAAK,GAAG,CAAC,KAAkB,KAAa,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC;AAEvE,MAAM,iBAAiB,GAAa;AACvC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,IAAA,KAAK,EAAE;;AAGX;;;AAGG;MAYU,eAAe,CAAA;AAX5B,IAAA,WAAA,GAAA;;QAaa,IAAA,CAAA,GAAG,GAAG,KAAK,CAAsB,SAAU,2EAAI,SAAS,EAAE,KAAK,EAAA,CAAG;;AAMxD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,iFAAC;AAyBjG,IAAA;AAvBG,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,KAAK,IAAI,OAAO,EAAE;YAClB,IAAI,CAAC,eAAe,EAAE;AAEtB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,QAAQ,EAAE;YACnB;QACJ;IACJ;AAEA,IAAA,QAAQ,CAAC,CAAkB,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5B;AAEA,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB;IAEQ,eAAe,GAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEtB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;IACvF;kIAhCS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,SAAA,EATb,CAAC,iBAAiB,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FASrB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0DAA0D;oBACpE,SAAS,EAAE,CAAC,iBAAiB,CAAC;AAC9B,oBAAA,IAAI,EAAE;;;;;AAKF,wBAAA,YAAY,EAAE;AACjB;AACJ,iBAAA;;AAoCM,MAAM,iBAAiB,GAAa;AACvC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,IAAA,KAAK,EAAE;;AAGX;;;AAGG;MASU,eAAe,CAAA;AAR5B,IAAA,WAAA,GAAA;;QAUa,IAAA,CAAA,GAAG,GAAG,KAAK,CAAsB,SAAU,2EAAI,SAAS,EAAE,KAAK,EAAA,CAAG;;AAMxD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,iFAAC;AAyBjG,IAAA;AAvBG,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,KAAK,IAAI,OAAO,EAAE;YAClB,IAAI,CAAC,eAAe,EAAE;AAEtB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,QAAQ,EAAE;YACnB;QACJ;IACJ;AAEA,IAAA,QAAQ,CAAC,CAAkB,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5B;AAEA,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB;IAEQ,eAAe,GAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEtB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;IACvF;kIAhCS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,SAAA,EANb,CAAC,iBAAiB,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAMrB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0DAA0D;oBACpE,SAAS,EAAE,CAAC,iBAAiB,CAAC;AAC9B,oBAAA,IAAI,EAAE;;AAEF,wBAAA,YAAY,EAAE;AACjB;AACJ,iBAAA;;;AC3DD,MAAM,QAAQ,GAAG,CAAC,KAAc,KAAsB,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;MA0BpF,gBAAgB,CAAA;AAyHzB,IAAA,WAAA,GAAA;AAxHU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA+B,UAAU,CAAC;AACvE,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAChE,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEnC,IAAA,CAAA,iBAAiB,GAAG,IAAI,oBAAoB,CACzD,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,UAAU,CAClB;;AAGQ,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU;;QAG9C,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAqB;AAEtC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;AAE7C;;;;AAIG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAEjD;;;;AAIG;QACM,IAAA,CAAA,UAAU,GAAG,mBAAmB,EAAE;AAE3C;;;;AAIG;QACH,IAAA,CAAA,WAAW,GAAW,gBAAgB;AAErB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAsB,UAAU,uFAAC;;AAGlE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;;QAGhD,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,wFAAI,KAAK,EAAE,aAAa,EAAA,CAAG;AAE1F;;;;AAIG;QACM,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;;QAIxD,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;;AAGxD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA+C,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EAC9E,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;AAGe,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAiB,IAAI,mFAAC;AAE5D;;;;AAIG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,+EAAC;;QAGtE,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,+EAAI,KAAK,EAAE,IAAI,EAAA,CAAG;AAExE;;;;AAIG;AACM,QAAA,IAAA,CAAA,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,yEAAC;AAExD;;;;AAIG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAA+C,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAKtG,IAAA,CAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,kFAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAU7D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,IAAI,iFAAC;AAM1C;;;;AAIG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAGzC,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;;QAI3F,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa;;AAG7E,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;AAElD,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,4EAAC;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,YAAY;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;;QAGrD,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAE/B,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C;AACJ,QAAA,CAAC,CAAC;;;;QAKF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAE1B,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;oBAC5B,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,KAAK,KAAK,EAAE;AACzC,wBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,KAAK;oBACzC;AAEA,oBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;oBACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;gBACzD;gBAEA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACvC,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjD;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;;;;YAIhB,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAClD;;;;QAKA,IAAI,CAAC,qBAAqB,EAAE;IAChC;IAEA,gBAAgB,GAAA;QACZ,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACnE,QAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;IAC7C;;IAGA,UAAU,GAAA;QACN,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;IACvF;;IAGA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC5B;;AAGA,IAAA,YAAY,CAAC,SAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;IACpC;AAEA;;;;AAIG;IACH,gBAAgB,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IAChB;AAEA;;;;;AAKG;IACH,qBAAqB,GAAA;AACjB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;;;QAIhD,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QAC/B;QAEA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACvC;;IAGU,UAAU,GAAA;;QAEhB,OAAQ,IAAI,CAAC,UAAU,CAAC,aAAkC,CAAC,QAAQ,EAAE,QAAQ;IACjF;IAEQ,OAAO,GAAA;AACX,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IACrE;kIA1PS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,SAAA,EAtBd;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAiBQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAA,uBAAA,CAAyB;AACnC,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,8BAA8B;;;AAGrC,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,oBAAoB,EAAE,eAAe;AACrC,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,qBAAqB,EAAE,cAAc;AACrC,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,wBAAA,SAAS,EAAE;AACd,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;MClBY,cAAc,CAAA;kIAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,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,cAAc,YApBnB,UAAU;YACV,WAAW;YACX,aAAa;YACb,QAAQ;YACR,cAAc;YACd,gBAAgB;YAChB,YAAY;YACZ,eAAe;AACf,YAAA,eAAe,aAGf,QAAQ;YACR,cAAc;YACd,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,eAAe;YACf,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGb,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,cAAc,YApBnB,UAAU;YACV,WAAW;AACX,YAAA,aAAa,EAeb,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAGb,cAAc,EAAA,UAAA,EAAA,CAAA;kBAtB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,UAAU;wBACV,WAAW;wBACX,aAAa;wBACb,QAAQ;wBACR,cAAc;wBACd,gBAAgB;wBAChB,YAAY;wBACZ,eAAe;wBACf;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,QAAQ;wBACR,cAAc;wBACd,gBAAgB;wBAChB,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf;AACH;AACJ,iBAAA;;;AC/BD;;AAEG;;;;"}
1
+ {"version":3,"file":"koobiq-components-input.mjs","sources":["../../../packages/components/input/input-errors.ts","../../../packages/components/input/input-number.ts","../../../packages/components/input/input-value-accessor.ts","../../../packages/components/input/input.ts","../../../packages/components/input/input-number-validators.ts","../../../packages/components/input/input-password.ts","../../../packages/components/input/input.module.ts","../../../packages/components/input/koobiq-components-input.ts"],"sourcesContent":["export function getKbqInputUnsupportedTypeError(inputType: string): Error {\n return Error(`Input type \"${inputType}\" isn't supported by kbqInput.`);\n}\n\n/**\n * Logged when `kbqNumberInput` sits on a native number field, which the directive resets to `text`.\n */\nexport const KBQ_NUMBER_INPUT_UNSUPPORTED_TYPE_MESSAGE =\n 'Input type \"number\" isn\\'t supported by kbqNumberInput: the native value sanitizer rejects the ' +\n 'formatted value, blanking the field. The type has been reset to \"text\".';\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n InjectionToken,\n input,\n NgZone,\n OnDestroy,\n Provider,\n Renderer2,\n signal,\n untracked\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n BACKSPACE,\n checkAndNormalizeLocalizedNumber,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n FF_MINUS,\n formatNumberWithLocale,\n HOME,\n isCopy,\n isFunctionKey,\n isNumberKey,\n isNumpadKey,\n isSelectAll,\n KBQ_DEFAULT_LOCALE_ID,\n KBQ_DEFAULT_PRECISION_SEPARATOR,\n KBQ_LOCALE_SERVICE,\n KbqDeepPartial,\n KbqInputLocaleConfiguration,\n KbqInputNumberLocaleConfiguration,\n kbqLocaleConfigurationOverrideProvider,\n KbqLocaleOverridesDirective,\n KbqLocaleService,\n LEFT_ARROW,\n normalizeNumber,\n NUMPAD_MINUS,\n RIGHT_ARROW,\n ruRUFormattersData,\n TAB,\n UP_ARROW,\n V,\n X,\n Z\n} from '@koobiq/components/core';\nimport { Subject } from 'rxjs';\n\n/**\n * @deprecated Use {@link KBQ_INPUT_DEFAULT_LOCALE_CONFIGURATION}, which carries the whole `input`\n * locale section rather than just its `number` slice. Will be removed in 22.0.0.\n */\nexport const KBQ_INPUT_NUMBER_DEFAULT_CONFIGURATION = ruRUFormattersData.input.number;\n\n/**\n * Default configuration of `KbqNumberInput`: the whole `input` locale section, of which the number input\n * reads `number`.\n */\nexport const KBQ_INPUT_DEFAULT_LOCALE_CONFIGURATION: KbqInputLocaleConfiguration = ruRUFormattersData.input;\n\n/** Injection token for providing the default configuration of `KbqNumberInput`. */\nexport const KBQ_INPUT_LOCALE_CONFIGURATION = new InjectionToken<KbqInputLocaleConfiguration>(\n 'KbqInputLocaleConfiguration',\n { factory: () => KBQ_INPUT_DEFAULT_LOCALE_CONFIGURATION }\n);\n\n/**\n * Utility provider for `KBQ_INPUT_LOCALE_CONFIGURATION`. Only the values you pass are overridden; the rest\n * keep following the active locale.\n */\nexport const kbqInputLocaleConfigurationProvider = (\n configuration: KbqDeepPartial<KbqInputLocaleConfiguration>\n): Provider => kbqLocaleConfigurationOverrideProvider('input', configuration);\n\n/**\n * Default of `bigStep`.\n *\n * @docs-private\n */\nexport const BIG_STEP = 10;\n\n/**\n * Default of `step`.\n *\n * @docs-private\n */\nexport const SMALL_STEP = 1;\n\n/**\n * The locale id handed to `Intl.NumberFormat`, which is not always the active one.\n *\n * `es-LA` is not a real BCP-47 tag — `LA` is the region code for Laos — so what `Intl` makes of it is\n * up to the ICU data of whatever engine is running: today's Node resolves it to plain `es`, another\n * build may fall back somewhere else entirely. Pinning it to a tag every ICU build carries is a\n * deliberate workaround, not a leftover: it takes that variance out of the rendered number. Remove it\n * only when the locale is renamed to a real tag such as `es-419`.\n */\nfunction resolveIntlLocale(localeId: string | undefined): string {\n return !localeId || localeId === 'es-LA' ? KBQ_DEFAULT_LOCALE_ID : localeId;\n}\n\n/**\n * Transform for the numeric inputs: coerces the static attribute form (`min=\"3\"`) and anything a\n * binding produces, falling back to `fallback` for a value that is not a number.\n */\nconst numberAttribute =\n (fallback: number) =>\n (value: NumberInput): number =>\n coerceNumberProperty(value, fallback);\n\n/** @docs-private */\nexport function isFloat(value: string): boolean {\n return /^-?\\d+\\.\\d+$/.test(value);\n}\n\nfunction isPastSafeInteger(value: number): boolean {\n return Math.abs(value) > Number.MAX_SAFE_INTEGER;\n}\n\n/**\n * Number of digits after the decimal point. Exponent-aware, so `1e-7` reports `7` rather than the\n * `0` that reading `'1e-7'.split('.')` would give.\n */\nfunction getFractionDigits(value: number): number {\n const [mantissa, negativeExponent] = value.toString().split(/e-/i);\n const digits = mantissa.split(KBQ_DEFAULT_PRECISION_SEPARATOR)[1]?.length ?? 0;\n\n return negativeExponent ? digits + Number(negativeExponent) : digits;\n}\n\n/**\n * Decimal scale of `value`: `10 ** <number of fraction digits>`.\n *\n * @docs-private\n */\nexport function getPrecision(value: number): number {\n return Math.pow(10, getFractionDigits(value));\n}\n\n/**\n * Adds two decimal numbers without IEEE-754 drift: both operands are rounded into integer space at\n * the larger of the two scales, added there, and scaled back.\n *\n * @docs-private\n */\nexport function add(value1: number, value2: number): number {\n const precision = Math.max(getPrecision(value1), getPrecision(value2));\n\n return (Math.round(value1 * precision) + Math.round(value2 * precision)) / precision;\n}\n\nexport const KBQ_NUMBER_INPUT_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqNumberInput),\n multi: true\n};\n\n@Directive({\n selector: `input[kbqNumberInput]`,\n providers: [KBQ_NUMBER_INPUT_VALUE_ACCESSOR],\n host: {\n role: 'spinbutton',\n '[attr.inputmode]': \"integer() ? 'numeric' : 'decimal'\",\n '[attr.aria-valuenow]': 'value',\n // The formatted, locale-correct string, so the grouped value is announced rather than the raw number.\n '[attr.aria-valuetext]': 'viewValue || null',\n '[attr.aria-valuemin]': 'ariaValueMin()',\n '[attr.aria-valuemax]': 'ariaValueMax()',\n '(blur)': 'focusChanged(false)',\n '(focus)': 'focusChanged(true)',\n '(paste)': 'onPaste($event)',\n '(keydown)': 'onKeyDown($event)',\n '(input)': 'onInput($any($event))'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ],\n exportAs: 'kbqNumberInput, kbqNumericalInput'\n})\nexport class KbqNumberInput implements ControlValueAccessor, OnDestroy {\n private elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n private localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n /** Emits when the value changes (either due to user input or programmatic change). */\n readonly valueChange = new Subject<number | null>();\n\n /** Emits when the disabled state has changed */\n readonly disabledChange = new Subject<boolean>();\n\n /** Emits whenever the focused or disabled state of the directive changes. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Discriminator read by `kbq-stepper` to find the control it drives.\n *\n * @docs-private\n */\n controlType: string = 'input-number';\n\n /**\n * Allows input and pasting of integers only.\n */\n readonly integer = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Step applied when `Shift` is held. */\n readonly bigStep = input<number, NumberInput>(BIG_STEP, { transform: numberAttribute(BIG_STEP) });\n\n /** Step applied by the arrow keys and by `kbq-stepper`. */\n readonly step = input<number, NumberInput>(SMALL_STEP, { transform: numberAttribute(SMALL_STEP) });\n\n /** Lower bound the value is clamped to when stepping. */\n readonly min = input<number, NumberInput>(-Infinity, { transform: numberAttribute(-Infinity) });\n\n /** Upper bound the value is clamped to when stepping. */\n readonly max = input<number, NumberInput>(Infinity, { transform: numberAttribute(Infinity) });\n\n readonly withThousandSeparator = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n /**\n * Adds the thousand separator only from this power of ten. For example, `4` keeps `1234`\n * un-grouped and groups `12345`. Defaults to the active locale's own value.\n */\n readonly startFormattingFrom = input<number>();\n\n /** @docs-private */\n readonly valueInput = input<number | null | undefined>(undefined, { alias: 'value' });\n\n /** The numeric value of the field, bound with `[value]` or written by a form control. */\n get value(): number | null {\n return this.valueState() ?? null;\n }\n\n private readonly valueState = signal<number | null | undefined>(undefined);\n\n /** @docs-private */\n readonly disabledInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n /** Whether the field is disabled, bound with `[disabled]` or set by a form control. */\n get disabled(): boolean {\n return this.disabledState();\n }\n\n private readonly disabledState = signal(false);\n\n /**\n * Whether the field is read-only: the arrow keys, `kbq-stepper` and a paste leave the value as it is.\n * `KbqInput` on the same element binds the native attribute. Defaults to `false`.\n */\n readonly readonly = input<boolean, boolean | string | null | undefined>(false, { transform: booleanAttribute });\n\n focused: boolean = false;\n\n get nativeElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n get viewValue(): string {\n return this.nativeElement.value;\n }\n\n /**\n * Locale-aware numeric read of the field: parsed straight from `nativeElement.value`, so `\"1 234,5\"`\n * reads back as `1234.5` where the native `valueAsNumber` of a `type=\"text\"` input reports `NaN`.\n * Computed on every read rather than cached off the committed model, so it never lags behind a\n * keystroke the way `value` can while `onInput`'s reformat is still pending in its `setTimeout(0)` —\n * safe to read from a consumer's own `(input)` handler. An in-progress `\"-\"` reads as `null`, same as\n * an empty field, rather than the last committed number.\n */\n get valueAsNumber(): number | null {\n if (this.viewValue === '' || this.viewValue === '-') return null;\n\n const parsed = Number(normalizeNumber(this.viewValue, this.config));\n\n return Number.isNaN(parsed) ? null : parsed;\n }\n\n /**\n * An unbounded end reports no `aria-value*`: `Infinity` is not a valid ARIA attribute value.\n * A `computed()` rather than a getter so the value is cached between checks — the host binding\n * itself lives in the declaring view and repaints either way.\n */\n protected readonly ariaValueMin = computed(() => (Number.isFinite(this.min()) ? this.min() : null));\n\n /** The upper bound, reported the way `ariaValueMin` reports the lower one. */\n protected readonly ariaValueMax = computed(() => (Number.isFinite(this.max()) ? this.max() : null));\n\n protected get fractionSeparator(): KbqInputNumberLocaleConfiguration['fractionSeparator'] {\n return this.config.fractionSeparator;\n }\n\n protected get groupSeparator(): KbqInputNumberLocaleConfiguration['groupSeparator'] {\n return this.config.groupSeparator;\n }\n\n private get config() {\n return this.localeConfiguration().number;\n }\n\n private get stepMin(): number {\n return Math.max(this.min(), -Number.MAX_SAFE_INTEGER);\n }\n\n private get stepMax(): number {\n return Math.min(this.max(), Number.MAX_SAFE_INTEGER);\n }\n\n private readonly localeConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'input',\n KBQ_INPUT_LOCALE_CONFIGURATION\n );\n\n private valueFromPaste: number | null;\n\n /** Pending `onInput` reformats by timer handle: cancelled on destroy, run at once before a step. */\n private readonly pendingReformats = new Map<ReturnType<typeof setTimeout>, (correctCaret: boolean) => void>();\n\n constructor() {\n // The inputs stay `undefined` until a template binds them, so an unbound one does not override what a\n // form control wrote through `writeValue` / `setDisabledState`. Once bound, `undefined` clears the value.\n let bound = false;\n\n effect(() => {\n const value = this.valueInput();\n\n if (!bound && value === undefined) return;\n\n bound = true;\n\n untracked(() => this.setValue(value ?? null));\n });\n\n effect(() => {\n const disabled = this.disabledInput();\n\n if (disabled !== undefined) untracked(() => this.setDisabled(disabled));\n });\n\n // Re-render the value in the separators of the new locale. `untracked` keeps the configuration the\n // only dependency: formatting also reads the `withThousandSeparator` input, which must not rewrite\n // what the user is typing on its own.\n effect(() => {\n this.localeConfiguration();\n\n untracked(() => this.setViewValue(this.formatNumber(this.value)));\n });\n\n this.destroyRef.onDestroy(() => {\n this.pendingReformats.forEach((_, handle) => clearTimeout(handle));\n this.pendingReformats.clear();\n });\n }\n\n ngOnDestroy(): void {\n this.valueChange.complete();\n this.disabledChange.complete();\n this.stateChanges.complete();\n }\n\n onContainerClick(): void {\n this.focus();\n }\n\n focus(): void {\n this.nativeElement.focus();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: number | null): void {\n this.setValue(value);\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this.cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.setDisabled(isDisabled);\n }\n\n focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n\n if (!isFocused) {\n this.clampToSafeRange();\n this.onTouched();\n }\n }\n\n /**\n * Called when the control is blurred. Needed to properly implement `ControlValueAccessor`.\n *\n * @docs-private\n */\n onTouched = () => {};\n\n onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const minuses = [NUMPAD_MINUS, DASH, FF_MINUS];\n const serviceKeys = [DELETE, BACKSPACE, TAB, ESCAPE, ENTER];\n const arrows = [LEFT_ARROW, RIGHT_ARROW];\n const allowedKeys = [HOME, END].concat(arrows).concat(serviceKeys).concat(minuses);\n\n // should parse normalized fractionSeparator\n const viewValueToBeChecked = normalizeNumber(this.viewValue, this.config);\n\n const shouldSkipForIntegerMode = this.integer() && this.isPeriod(event);\n const shouldBlockMinus = minuses.includes(keyCode) && (this.viewValue.includes(event.key) || this.min() >= 0);\n const isSignAndFractionSepAlreadyExists =\n this.isPeriod(event) &&\n [this.fractionSeparator, KBQ_DEFAULT_PRECISION_SEPARATOR].includes(event.key) &&\n viewValueToBeChecked.indexOf(KBQ_DEFAULT_PRECISION_SEPARATOR) !== -1;\n\n if (shouldSkipForIntegerMode || shouldBlockMinus || isSignAndFractionSepAlreadyExists) {\n event.preventDefault();\n\n return;\n }\n\n if (allowedKeys.indexOf(keyCode) !== -1 || [\n isSelectAll,\n isCopy,\n this.isCtrlV,\n this.isCtrlX,\n this.isCtrlZ,\n isFunctionKey,\n this.isPeriod\n ].some((fn) => fn(event))) {\n // let it happen, don't do anything\n return;\n }\n\n const isLetter = !isNumberKey(event) && !isNumpadKey(event);\n\n // Ensure that it is not a number and stop the keypress\n if (event.shiftKey || isLetter) {\n event.preventDefault();\n\n if (this.readonly()) return;\n\n // process steps\n const step = event.shiftKey ? this.bigStep() : this.step();\n\n if (keyCode === UP_ARROW) {\n this.stepUp(step);\n }\n\n if (keyCode === DOWN_ARROW) {\n this.stepDown(step);\n }\n }\n }\n\n onInput(event: InputEvent) {\n const currentValueLength = this.formatNumber(this.value)?.length || 0;\n const previousSelectionStart = this.nativeElement.selectionStart || 0;\n\n // Deferred so the browser has applied the keystroke to the native value before it is reformatted.\n // The handle is tracked and cleared on destroy: a directive torn down between the keystroke and the\n // timeout must not write to a detached node nor push a change into a control the view no longer owns.\n const reformat = (correctCaret: boolean) => {\n this.pendingReformats.delete(handle);\n\n // Past the limit the text stays as typed: the field clamps it when it loses focus.\n if (this.isBeyondSafeRange(this.viewValue)) return;\n\n const fromPaste = event.inputType === 'insertFromPaste';\n let formattedValue: string | null;\n\n if (fromPaste) {\n formattedValue = this.formatNumber(this.valueFromPaste);\n } else {\n /*this.viewValue is raw and should be reformatted to localized number */\n formattedValue = this.formatViewValue();\n\n if (correctCaret && this.withThousandSeparator()) {\n this.correctCaretForSeparator(currentValueLength, previousSelectionStart);\n }\n }\n\n this.setViewValue(formattedValue, !fromPaste);\n\n if (this.viewValue !== '-') {\n this.viewToModelUpdate(formattedValue);\n }\n };\n const handle = setTimeout(() => reformat(true));\n\n this.pendingReformats.set(handle, reformat);\n }\n\n onPaste(event: ClipboardEvent) {\n // The browser fires `paste` on a read-only input too, and the integer branch below writes the value itself.\n if (this.readonly()) return;\n\n this.valueFromPaste = checkAndNormalizeLocalizedNumber(\n event.clipboardData?.getData('text'),\n this.localeService?.localeId()\n );\n\n if (this.valueFromPaste === null || isNaN(this.valueFromPaste)) {\n event.preventDefault();\n } else if (this.integer() && isFloat(this.valueFromPaste.toString())) {\n event.preventDefault();\n\n const parsedValue = Number.parseInt(this.valueFromPaste.toString());\n\n this.setViewValue(this.formatNumber(parsedValue));\n this.viewToModelUpdate(parsedValue.toString());\n }\n }\n\n stepUp(step: number) {\n this.nativeElement.focus();\n this.commitPendingReformats();\n\n // A value set past the limit from outside is not moved down by a step up.\n if (this.value !== null && this.value > Number.MAX_SAFE_INTEGER) return;\n\n this.clampToSafeRange();\n\n const res = Math.max(Math.min(add(this.value || 0, step), this.stepMax), this.stepMin);\n\n this.setViewValue(this.formatNumber(res));\n\n this.valueState.set(res);\n this.cvaOnChange(res);\n this.valueChange.next(res);\n }\n\n stepDown(step: number) {\n this.nativeElement.focus();\n this.commitPendingReformats();\n\n // A value set below the limit from outside is not moved up by a step down.\n if (this.value !== null && this.value < -Number.MAX_SAFE_INTEGER) return;\n\n this.clampToSafeRange();\n\n const res = Math.min(Math.max(add(this.value || 0, -step), this.stepMin), this.stepMax);\n\n this.setViewValue(this.formatNumber(res));\n\n this.valueState.set(res);\n this.cvaOnChange(res);\n this.valueChange.next(res);\n }\n\n private isCtrlV = (event: KeyboardEvent) => {\n return event.keyCode === V && (event.ctrlKey || event.metaKey);\n };\n\n private isCtrlX = (event: KeyboardEvent) => {\n return event.keyCode === X && (event.ctrlKey || event.metaKey);\n };\n\n private isCtrlZ = (event: KeyboardEvent) => {\n return event.keyCode === Z && (event.ctrlKey || event.metaKey);\n };\n\n private isPeriod = (event: KeyboardEvent) => {\n return (\n this.groupSeparator.includes(event.key) ||\n [this.fractionSeparator, KBQ_DEFAULT_PRECISION_SEPARATOR].includes(event.key)\n );\n };\n\n private cvaOnChange: (value: any) => void = () => {};\n\n /**\n * Commits a keystroke whose reformat is still pending, so a step pressed right after typing starts from\n * the typed value rather than the last committed one. The caret correction is skipped: the step rewrites\n * the value it would apply to.\n */\n private commitPendingReformats(): void {\n this.pendingReformats.forEach((reformat, handle) => {\n clearTimeout(handle);\n reformat(false);\n });\n }\n\n /**\n * Moves the caret one position when a group separator was inserted or removed by the reformat, so it\n * stays next to the same digit. Runs outside the zone: it only writes the selection, which no view or\n * model reads back, and each keystroke would otherwise cost an extra application-wide check.\n */\n private correctCaretForSeparator(previousValueLength: number, previousSelectionStart: number): void {\n const offsetWhenSeparatorAdded = 2;\n\n this.ngZone.runOutsideAngular(() =>\n Promise.resolve().then(() => {\n const lengthDelta = this.viewValue.length - previousValueLength;\n\n if (this.value && Math.abs(this.value) >= 1000 && Math.abs(lengthDelta) === offsetWhenSeparatorAdded) {\n const cursorPosition = Math.max(0, previousSelectionStart + Math.sign(lengthDelta));\n\n this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);\n this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);\n }\n })\n );\n }\n\n private setViewValue(value: string | null, savePosition: boolean = false) {\n const cursorPosition = this.nativeElement.selectionStart;\n\n this.renderer.setProperty(this.nativeElement, 'value', value);\n\n if (savePosition) {\n this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);\n this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);\n }\n }\n\n private isBeyondSafeRange(text: string): boolean {\n return isPastSafeInteger(Number(normalizeNumber(text, this.config)));\n }\n\n private clampToSafeRange(): void {\n const typed = Number(normalizeNumber(this.viewValue, this.config));\n\n if (!isPastSafeInteger(typed)) return;\n\n const formatted = this.formatNumber(Math.sign(typed) * Number.MAX_SAFE_INTEGER);\n\n this.setViewValue(formatted);\n this.viewToModelUpdate(formatted);\n }\n\n /** Writes a value from outside the field: reformats it and reports the change. */\n private setValue(value: number | null): void {\n const oldValue = this.valueState();\n\n this.valueState.set(value);\n\n if (oldValue !== value) {\n this.setViewValue(this.formatNumber(value));\n\n this.valueChange.next(value);\n }\n }\n\n private setDisabled(disabled: boolean): void {\n if (this.disabledState() !== disabled) {\n this.disabledState.set(disabled);\n this.disabledChange.next(disabled);\n this.stateChanges.next();\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (disabled && this.nativeElement.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n this.nativeElement.blur();\n }\n }\n\n private viewToModelUpdate(newValue: string | null) {\n const normalizedValue = newValue === null ? null : +normalizeNumber(newValue, this.config);\n\n if (normalizedValue !== this.value) {\n this.valueState.set(normalizedValue);\n // `cvaOnChange` routes through `FormControl.setValue`, which re-runs the validators itself.\n this.cvaOnChange(normalizedValue);\n this.valueChange.next(normalizedValue);\n }\n }\n\n private formatViewValue(): string | null {\n // we just need to skip the minus sign and not do any formatting\n if (this.viewValue === '-') return this.viewValue;\n\n if (\n this.viewValue === null ||\n this.viewValue === '' ||\n Number.isNaN(+normalizeNumber(this.viewValue, this.config))\n ) {\n return null;\n }\n\n const separator =\n this.groupSeparator.includes(' ') && this.fractionSeparator === ',' ? /[,.]/ : this.fractionSeparator;\n\n const [intPart, fractionPart] = this.viewValue\n .split(separator)\n .map((valuePart) => normalizeNumber(valuePart, this.config));\n\n const integer = +intPart;\n\n // A lone sign before the decimal separator (`-,5`) is no number yet: clear the field, do not print NaN.\n if (!Number.isFinite(integer)) return null;\n\n return this.createLocalizedNumberFromParts(integer, fractionPart);\n }\n\n private formatNumber(value: number | null | undefined): string | null {\n if (value === null || value === undefined || !Number.isFinite(value)) return null;\n\n // The whole value is formatted: `toString()` writes `1.5e-7` with an exponent that `split` would tear apart.\n return this.createLocalizedNumberFromParts(value === 0 ? 0 : value);\n }\n\n private createLocalizedNumberFromParts(intPart: number, fractionPart?: string): string {\n const formatOptions = {\n useGrouping: this.withThousandSeparator(),\n maximumFractionDigits: 20\n };\n\n const startFormattingFrom = this.startFormattingFrom() ?? this.config.startFormattingFrom;\n\n if (this.withThousandSeparator() && startFormattingFrom != null) {\n formatOptions.useGrouping = intPart >= Math.pow(10, startFormattingFrom);\n }\n\n const formatter = new Intl.NumberFormat(resolveIntlLocale(this.localeService?.localeId()), formatOptions);\n\n const formattedIntPart = formatNumberWithLocale(intPart, formatter, this.config);\n\n if (fractionPart === undefined) {\n return formattedIntPart;\n }\n\n let formattedFractionPart: string = '';\n\n for (const numChar of fractionPart) {\n formattedFractionPart += formatter.format(+numChar);\n }\n\n return `${formattedIntPart}${this.fractionSeparator}${formattedFractionPart}`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const KBQ_INPUT_VALUE_ACCESSOR = new InjectionToken<{ value: any }>('KBQ_INPUT_VALUE_ACCESSOR');\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\nimport {\n booleanAttribute,\n computed,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n input,\n isDevMode,\n linkedSignal,\n signal,\n untracked,\n WritableSignal\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n KbqErrorStateTracker,\n kbqInjectAutofilled\n} from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { getKbqInputUnsupportedTypeError, KBQ_NUMBER_INPUT_UNSUPPORTED_TYPE_MESSAGE } from './input-errors';\nimport { KbqNumberInput } from './input-number';\nimport { KBQ_INPUT_VALUE_ACCESSOR } from './input-value-accessor';\n\nconst isObject = (value: unknown): value is object => typeof value === 'object' && value !== null;\n\nconst KBQ_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\n@Directive({\n selector: `input[kbqInput],input[kbqNumberInput]`,\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqInput\n }\n ],\n host: {\n class: 'kbq-input',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id()',\n '[attr.placeholder]': 'readonly() ? null : placeholder()',\n '[attr.disabled]': 'disabled() || null',\n '[readonly]': 'readonly()',\n '[attr.aria-invalid]': 'errorState()',\n '[required]': 'required()',\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n '(input)': 'dirtyCheckNativeValue()'\n },\n exportAs: 'kbqInput'\n})\nexport class KbqInput implements KbqFormFieldControl<any>, DoCheck, CanUpdateErrorState {\n protected elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n ngControl = inject(NgControl, { optional: true, self: true });\n numberInput = inject(KbqNumberInput, { optional: true, self: true });\n parentForm = inject(NgForm, { optional: true });\n parentFormGroup = inject(FormGroupDirective, { optional: true });\n defaultErrorStateMatcher = inject(ErrorStateMatcher);\n\n private readonly errorStateTracker = new KbqErrorStateTracker(\n this.defaultErrorStateMatcher,\n this.ngControl,\n this.parentFormGroup,\n this.parentForm\n );\n\n /** Whether the component is in an error state. */\n readonly errorState = this.errorStateTracker.errorState;\n\n /** An object used to control when error messages are shown. */\n readonly errorStateMatcher = input<ErrorStateMatcher>();\n\n private readonly focusedValue = signal(false);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly focused = this.focusedValue.asReadonly();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly autofilled = kbqInjectAutofilled();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n controlType: string = this.numberInput ? 'input-number' : 'input';\n\n /** @docs-private */\n readonly placeholderInput = input<string | undefined>(undefined, { alias: 'placeholder' });\n\n /**\n * Implemented as part of KbqFormFieldControl. Writable, so that a select search can supply one.\n *\n * @docs-private\n */\n readonly placeholder = linkedSignal(() => this.placeholderInput());\n\n protected uid = inject(_IdGenerator).getId('kbq-input-');\n protected neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter((t) => getSupportedInputTypes().has(t));\n\n /** @docs-private */\n readonly disabledInput = input<boolean, boolean | string | null | undefined>(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n /** `disabled` of the bound form control, which takes precedence over the input. */\n private readonly formDisabled = signal<boolean | null>(null);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly disabled = computed(() => this.formDisabled() ?? this.disabledInput());\n\n /**\n * Whether the input is read-only: its value can be selected and copied, but not changed. A read-only\n * input shows no placeholder. Defaults to `false`.\n */\n readonly readonly = input<boolean, boolean | string | null | undefined>(false, { transform: booleanAttribute });\n\n /** @docs-private */\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly id = computed(() => this.idInput() || this.uid);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly required = input<boolean, boolean | string | null | undefined>(false, { transform: booleanAttribute });\n\n /** @docs-private */\n readonly typeInput = input<string | undefined>(undefined, { alias: 'type' });\n\n /** Input type of the element. */\n get type(): string {\n return this.resolvedType();\n }\n\n // A native number field runs the value sanitization algorithm on assignment and drops anything that\n // is not a valid floating-point number — which is every value `kbqNumberInput` renders once a group\n // separator or a comma fraction separator is in it. It also reports `selectionStart` as `null`,\n // disabling caret preservation. Reset rather than throw, so an existing consumer keeps working.\n private readonly resolvedType = computed(() => {\n const type = this.typeInput() || 'text';\n\n return this.numberInput && type === 'number' ? 'text' : type;\n });\n\n private inputValueAccessor: { value: any };\n\n /** @docs-private */\n readonly valueInput = input<string | undefined>(undefined, { alias: 'value' });\n\n /**\n * Implemented as part of KbqFormFieldControl. Follows what the user types; a value bound with `[value]` or set\n * here is written to the element.\n *\n * @docs-private\n */\n readonly value: WritableSignal<string>;\n\n private readonly emptyValue = signal(true);\n\n /** The value the element and `value` last agreed on, and the text the element showed then. */\n private syncedValue: unknown;\n private syncedText: string;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly empty = this.emptyValue.asReadonly();\n\n constructor() {\n const inputValueAccessor = inject(KBQ_INPUT_VALUE_ACCESSOR, { optional: true, self: true });\n\n // If no input value accessor was explicitly specified, use the element as the input value accessor.\n this.inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n // A static `type` is on the element before any directive runs, while the effect below runs after a reactive\n // form has written its value from `ngOnChanges`: a number field would sanitize that value away by then.\n if (this.numberInput && this.elementRef.nativeElement.type === 'number') {\n this.elementRef.nativeElement.type = 'text';\n }\n\n // Read once: a custom accessor may build a new value on every read.\n const initialValue = this.inputValueAccessor.value;\n\n this.value = signal(initialValue);\n this.syncedValue = initialValue;\n this.syncedText = this.elementRef.nativeElement.value;\n\n // A binding of `type` no longer reaches the element on its own: the directive takes the input. Textarea\n // elements don't support the type property or attribute.\n effect(() => {\n const type = this.resolvedType();\n\n untracked(() => {\n this.validateType();\n\n if (getSupportedInputTypes().has(type)) {\n this.elementRef.nativeElement.type = type;\n }\n });\n });\n\n // A bound value replaces the current one whenever the binding changes. The number input takes the same\n // binding and renders it in the locale format, so it owns the element's value.\n effect(() => {\n const value = this.valueInput();\n\n if (value !== undefined && !this.numberInput) {\n untracked(() => this.value.set(value));\n }\n });\n\n // A value set in code is written to the element on the next change detection. The one the element last agreed\n // on is not written back: the element may have changed since, as when the number input renders a bound value.\n effect(() => {\n const value = this.value();\n\n untracked(() => {\n if (value !== this.syncedValue) {\n if (this.inputValueAccessor.value !== value) {\n this.inputValueAccessor.value = value;\n }\n\n this.syncedValue = value;\n this.syncedText = this.elementRef.nativeElement.value;\n }\n\n this.dirtyCheckNativeValue();\n });\n });\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n effect(() => {\n if (this.disabled()) {\n untracked(() => this.focusedValue.set(false));\n }\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n this.formDisabled.set(this.ngControl.disabled);\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n updateErrorState() {\n this.errorStateTracker.errorStateMatcher = this.errorStateMatcher();\n this.errorStateTracker.updateErrorState();\n }\n\n /** Focuses the input. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n onBlur(): void {\n this.focusChanged(false);\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n focusChanged(isFocused: boolean) {\n this.focusedValue.set(isFocused);\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /**\n * Reads the native value back, since it changes without notice: through the forms API, which writes the\n * element directly, or by the user typing into an input that no form listens to.\n *\n * @docs-private\n */\n dirtyCheckNativeValue() {\n const nativeValue = this.inputValueAccessor.value;\n const text = this.elementRef.nativeElement.value;\n\n // Only a change of the element itself: a value set in code and not yet written must not be overwritten. An\n // object counts as changed only with the text, as a custom accessor may build a new one on every read.\n if (nativeValue !== this.syncedValue && (!isObject(nativeValue) || text !== this.syncedText)) {\n this.syncedValue = nativeValue;\n this.syncedText = text;\n this.value.set(nativeValue);\n }\n\n this.emptyValue.set(this.isEmpty());\n }\n\n /** Make sure the input is a supported type. */\n protected validateType() {\n const type = this.typeInput() || 'text';\n\n if (KBQ_INPUT_INVALID_TYPES.indexOf(type) > -1) {\n throw getKbqInputUnsupportedTypeError(type);\n }\n\n if (this.numberInput && type === 'number' && isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(KBQ_NUMBER_INPUT_UNSUPPORTED_TYPE_MESSAGE);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected isNeverEmpty() {\n return this.neverEmptyInputTypes.indexOf(this.type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected isBadInput() {\n // The `validity` property won't be present on platform-server.\n const validity = (this.elementRef.nativeElement as HTMLInputElement).validity;\n\n return validity?.badInput;\n }\n\n private isEmpty(): boolean {\n return !this.isNeverEmpty() && !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n}\n\n@Directive({\n selector: 'input[kbqInputMonospace]',\n host: { class: 'kbq-input_monospace' },\n exportAs: 'kbqInputMonospace, KbqInputMonospace'\n})\nexport class KbqInputMono {}\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { computed, Directive, forwardRef, input, OnChanges, Provider, SimpleChanges } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\n\n/**\n * Transform for the validator bounds. `coerceNumberProperty`, not `parseInt`: the bound value may be a\n * fractional number or the string form of a static `min=\"0.5\"` attribute, and `parseInt` would truncate\n * both to `0`. A non-numeric bound becomes `NaN`, which installs no validator and writes no attribute.\n */\nconst bound = (value: NumberInput): number => coerceNumberProperty(value, NaN);\n\nexport const KBQ_MIN_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => KbqMinValidator),\n multi: true\n};\n\n/**\n * A directive which installs the `KbqMinValidator` for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `min` attribute.\n */\n@Directive({\n selector: '[min][formControlName],[min][formControl],[min][ngModel]',\n providers: [KBQ_MIN_VALIDATOR],\n host: {\n // Coerced rather than the raw `min()`, so a non-numeric bound (e.g. `\"5px\"`) is dropped from the\n // DOM exactly like it is from the installed validator, instead of writing a bogus `min` attribute.\n // `?? null` rather than a falsy check: a bound `[min]=\"0\"` is the most common lower bound and must\n // still reach the DOM.\n '[attr.min]': 'coercedMin() ?? null'\n }\n})\nexport class KbqMinValidator implements Validator, OnChanges {\n /** Lower bound installed as `Validators.min`. A non-numeric bound reads back as `NaN`. */\n readonly min = input<number, NumberInput>(undefined!, { transform: bound });\n\n private validator: ValidatorFn;\n private onChange: () => void;\n\n /** `min()` unless it is `NaN`, which has no DOM representation. */\n protected readonly coercedMin = computed(() => (Number.isNaN(this.min()) ? null : this.min()));\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('min' in changes) {\n this.createValidator();\n\n if (this.onChange) {\n this.onChange();\n }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n private createValidator(): void {\n const min = this.min();\n\n this.validator = Number.isNaN(min) ? Validators.nullValidator : Validators.min(min);\n }\n}\n\nexport const KBQ_MAX_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => KbqMaxValidator),\n multi: true\n};\n\n/**\n * A directive which installs the `KbqMaxValidator` for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `max` attribute.\n */\n@Directive({\n selector: '[max][formControlName],[max][formControl],[max][ngModel]',\n providers: [KBQ_MAX_VALIDATOR],\n host: {\n // See `KbqMinValidator`'s `[attr.min]` for why this is coerced rather than the raw `max()`.\n '[attr.max]': 'coercedMax() ?? null'\n }\n})\nexport class KbqMaxValidator implements Validator, OnChanges {\n /** Upper bound installed as `Validators.max`. A non-numeric bound reads back as `NaN`. */\n readonly max = input<number, NumberInput>(undefined!, { transform: bound });\n\n private validator: ValidatorFn;\n private onChange: () => void;\n\n /** `max()` unless it is `NaN`, which has no DOM representation. */\n protected readonly coercedMax = computed(() => (Number.isNaN(this.max()) ? null : this.max()));\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('max' in changes) {\n this.createValidator();\n\n if (this.onChange) {\n this.onChange();\n }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n private createValidator(): void {\n const max = this.max();\n\n this.validator = Number.isNaN(max) ? Validators.nullValidator : Validators.max(max);\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport {\n booleanAttribute,\n computed,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n signal,\n untracked,\n WritableSignal\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n KbqErrorStateTracker,\n kbqInjectAutofilled\n} from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { KBQ_INPUT_VALUE_ACCESSOR } from './input-value-accessor';\n\nconst isObject = (value: unknown): value is object => typeof value === 'object' && value !== null;\n\n@Directive({\n selector: `input[kbqInputPassword]`,\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqInputPassword\n }\n ],\n host: {\n class: 'kbq-input kbq-input-password',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id()',\n '[attr.type]': 'elementType()',\n '[attr.placeholder]': 'readonly() ? null : placeholder()',\n '[attr.disabled]': 'disabled() || null',\n '[readonly]': 'readonly()',\n '[attr.aria-invalid]': 'errorState()',\n '[required]': 'required()',\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n '(input)': 'dirtyCheckNativeValue()'\n },\n exportAs: 'kbqInputPassword'\n})\nexport class KbqInputPassword implements KbqFormFieldControl<any>, DoCheck, CanUpdateErrorState {\n protected elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n ngControl = inject(NgControl, { optional: true, self: true });\n parentForm = inject(NgForm, { optional: true });\n parentFormGroup = inject(FormGroupDirective, { optional: true });\n defaultErrorStateMatcher = inject(ErrorStateMatcher);\n\n private readonly errorStateTracker = new KbqErrorStateTracker(\n this.defaultErrorStateMatcher,\n this.ngControl,\n this.parentFormGroup,\n this.parentForm\n );\n\n /** Whether the component is in an error state. */\n readonly errorState = this.errorStateTracker.errorState;\n\n /** An object used to control when error messages are shown. */\n readonly errorStateMatcher = input<ErrorStateMatcher>();\n\n private readonly focusedValue = signal(false);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly focused = this.focusedValue.asReadonly();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly autofilled = kbqInjectAutofilled();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n controlType: string = 'input-password';\n\n private readonly elementTypeValue = signal<'text' | 'password'>('password');\n\n /** Type of the native input: `password` while the password is hidden, `text` while it is shown. */\n readonly elementType = this.elementTypeValue.asReadonly();\n\n /** @docs-private */\n readonly placeholderInput = input<string | undefined>(undefined, { alias: 'placeholder' });\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly placeholder = linkedSignal(() => this.placeholderInput());\n\n // Own namespace: sharing `kbq-input-` with `KbqInput` produced duplicate ids on any page holding both\n // controls, and the form field's `<label for>` then resolved to the wrong control.\n protected uid = inject(_IdGenerator).getId('kbq-input-password-');\n\n /** @docs-private */\n readonly disabledInput = input<boolean, boolean | string | null | undefined>(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n /** `disabled` of the bound form control, which takes precedence over the input. */\n private readonly formDisabled = signal<boolean | null>(null);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly disabled = computed(() => this.formDisabled() ?? this.disabledInput());\n\n /**\n * Whether the input is read-only: its value can be selected and copied, but not changed. A read-only\n * input shows no placeholder. Defaults to `false`.\n */\n readonly readonly = input<boolean, boolean | string | null | undefined>(false, { transform: booleanAttribute });\n\n /** @docs-private */\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly id = computed(() => this.idInput() || this.uid);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly required = input<boolean, boolean | string | null | undefined>(false, { transform: booleanAttribute });\n\n private inputValueAccessor: { value: any };\n\n /** @docs-private */\n readonly valueInput = input<string | undefined>(undefined, { alias: 'value' });\n\n /**\n * Implemented as part of KbqFormFieldControl. Follows what the user types; a value bound with `[value]` or set\n * here is written to the element.\n *\n * @docs-private\n */\n readonly value: WritableSignal<string>;\n\n private readonly emptyValue = signal(true);\n\n /** The value the element and `value` last agreed on, and the text the element showed then. */\n private syncedValue: unknown;\n private syncedText: string;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly empty = this.emptyValue.asReadonly();\n\n constructor() {\n const inputValueAccessor = inject(KBQ_INPUT_VALUE_ACCESSOR, { optional: true, self: true });\n\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this.inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n // Read once: a custom accessor may build a new value on every read.\n const initialValue = this.inputValueAccessor.value;\n\n this.value = signal(initialValue);\n this.syncedValue = initialValue;\n this.syncedText = this.elementRef.nativeElement.value;\n\n // A bound value replaces the current one whenever the binding changes.\n effect(() => {\n const value = this.valueInput();\n\n if (value !== undefined) {\n untracked(() => this.value.set(value));\n }\n });\n\n // A value set in code is written to the element on the next change detection. The one the element last agreed\n // on is not written back: a custom accessor that builds a new value on every read would be written on every\n // keystroke.\n effect(() => {\n const value = this.value();\n\n untracked(() => {\n if (value !== this.syncedValue) {\n if (this.inputValueAccessor.value !== value) {\n this.inputValueAccessor.value = value;\n }\n\n this.syncedValue = value;\n this.syncedText = this.elementRef.nativeElement.value;\n }\n\n this.emptyValue.set(this.isEmpty());\n });\n });\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n effect(() => {\n if (this.disabled()) {\n untracked(() => this.focusedValue.set(false));\n }\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n this.formDisabled.set(this.ngControl.disabled);\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n updateErrorState() {\n this.errorStateTracker.errorStateMatcher = this.errorStateMatcher();\n this.errorStateTracker.updateErrorState();\n }\n\n /** Toggles the native input type between password and text. */\n toggleType(): void {\n this.elementTypeValue.update((type) => (type === 'password' ? 'text' : 'password'));\n }\n\n /** Focuses the input. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n onBlur(): void {\n this.focusChanged(false);\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n focusChanged(isFocused: boolean) {\n this.focusedValue.set(isFocused);\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /**\n * Reads the native value back, since it changes without notice: through the forms API, which writes the\n * element directly, or by the user typing into an input that no form listens to.\n *\n * @docs-private\n */\n dirtyCheckNativeValue() {\n const nativeValue = this.inputValueAccessor.value;\n const text = this.elementRef.nativeElement.value;\n\n // Only a change of the element itself: a value set in code and not yet written must not be overwritten. An\n // object counts as changed only with the text, as a custom accessor may build a new one on every read.\n if (nativeValue !== this.syncedValue && (!isObject(nativeValue) || text !== this.syncedText)) {\n this.syncedValue = nativeValue;\n this.syncedText = text;\n this.value.set(nativeValue);\n }\n\n this.emptyValue.set(this.isEmpty());\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected isBadInput() {\n // The `validity` property won't be present on platform-server.\n return (this.elementRef.nativeElement as HTMLInputElement).validity?.badInput;\n }\n\n private isEmpty(): boolean {\n return !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputMono } from './input';\nimport { KbqNumberInput } from './input-number';\nimport { KbqMaxValidator, KbqMinValidator } from './input-number-validators';\nimport { KbqInputPassword } from './input-password';\n\n@NgModule({\n imports: [\n A11yModule,\n FormsModule,\n KbqIconModule,\n KbqInput,\n KbqNumberInput,\n KbqInputPassword,\n KbqInputMono,\n KbqMinValidator,\n KbqMaxValidator\n ],\n exports: [\n KbqInput,\n KbqNumberInput,\n KbqInputPassword,\n KbqInputMono,\n KbqMinValidator,\n KbqMaxValidator,\n KbqFormFieldModule\n ]\n})\nexport class KbqInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["isObject"],"mappings":"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"}
@@ -1439,7 +1439,7 @@ class KbqListOption {
1439
1439
  /**
1440
1440
  * Value of `aria-disabled`: the disabled state, but a signal of its own, since `kbq-disabled` reads that one.
1441
1441
  *
1442
- * @internal
1442
+ * @docs-private
1443
1443
  */
1444
1444
  this.ariaDisabled = computed(() => this.disabled || null, ...(ngDevMode ? [{ debugName: "ariaDisabled" }] : /* istanbul ignore next */ []));
1445
1445
  /** @docs-private */