igniteui-webcomponents 4.11.0 → 5.0.0-rc.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 (373) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +168 -110
  3. package/components/accordion/accordion.d.ts +2 -2
  4. package/components/accordion/accordion.js +25 -35
  5. package/components/accordion/accordion.js.map +1 -1
  6. package/components/avatar/avatar.d.ts +1 -3
  7. package/components/avatar/avatar.js +1 -3
  8. package/components/avatar/avatar.js.map +1 -1
  9. package/components/avatar/themes/avatar.base.css.js +1 -1
  10. package/components/avatar/themes/avatar.base.css.js.map +1 -1
  11. package/components/badge/badge.d.ts +2 -1
  12. package/components/badge/badge.js.map +1 -1
  13. package/components/badge/themes/badge.base.css.js +1 -1
  14. package/components/badge/themes/badge.base.css.js.map +1 -1
  15. package/components/button/button-base.d.ts +3 -4
  16. package/components/button/button-base.js +1 -9
  17. package/components/button/button-base.js.map +1 -1
  18. package/components/button/button.d.ts +3 -7
  19. package/components/button/button.js +4 -5
  20. package/components/button/button.js.map +1 -1
  21. package/components/button/icon-button.d.ts +2 -2
  22. package/components/button/icon-button.js +0 -3
  23. package/components/button/icon-button.js.map +1 -1
  24. package/components/button/themes/button/button.base.css.js +1 -1
  25. package/components/button/themes/button/button.base.css.js.map +1 -1
  26. package/components/button/themes/icon-button/icon-button.base.css.js +1 -1
  27. package/components/button/themes/icon-button/icon-button.base.css.js.map +1 -1
  28. package/components/button-group/themes/button.base.css.js +1 -1
  29. package/components/button-group/themes/button.base.css.js.map +1 -1
  30. package/components/button-group/themes/group.base.css.js +1 -1
  31. package/components/button-group/themes/group.base.css.js.map +1 -1
  32. package/components/calendar/base.d.ts +65 -0
  33. package/components/calendar/base.js +150 -0
  34. package/components/calendar/base.js.map +1 -0
  35. package/components/calendar/calendar.d.ts +113 -61
  36. package/components/calendar/calendar.js +417 -514
  37. package/components/calendar/calendar.js.map +1 -1
  38. package/components/calendar/days-view/days-view.d.ts +43 -46
  39. package/components/calendar/days-view/days-view.js +269 -340
  40. package/components/calendar/days-view/days-view.js.map +1 -1
  41. package/components/calendar/helpers.d.ts +30 -0
  42. package/components/calendar/helpers.js +99 -0
  43. package/components/calendar/helpers.js.map +1 -0
  44. package/components/calendar/model.d.ts +55 -0
  45. package/components/calendar/model.js +94 -0
  46. package/components/calendar/model.js.map +1 -0
  47. package/components/calendar/months-view/months-view.d.ts +12 -12
  48. package/components/calendar/months-view/months-view.js +72 -79
  49. package/components/calendar/months-view/months-view.js.map +1 -1
  50. package/components/calendar/themes/calendar.base.css.js +1 -1
  51. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  52. package/components/calendar/types.d.ts +16 -0
  53. package/components/calendar/types.js +10 -0
  54. package/components/calendar/types.js.map +1 -0
  55. package/components/calendar/years-view/years-view.d.ts +13 -12
  56. package/components/calendar/years-view/years-view.js +58 -73
  57. package/components/calendar/years-view/years-view.js.map +1 -1
  58. package/components/card/themes/card.actions.base.css.js +1 -1
  59. package/components/card/themes/card.actions.base.css.js.map +1 -1
  60. package/components/card/themes/card.content.base.css.js +1 -1
  61. package/components/card/themes/card.content.base.css.js.map +1 -1
  62. package/components/card/themes/card.header.base.css.js +1 -1
  63. package/components/card/themes/card.header.base.css.js.map +1 -1
  64. package/components/card/themes/card.media.base.css.js +1 -1
  65. package/components/card/themes/card.media.base.css.js.map +1 -1
  66. package/components/card/themes/container.base.css.js +1 -1
  67. package/components/card/themes/container.base.css.js.map +1 -1
  68. package/components/checkbox/checkbox-base.d.ts +8 -5
  69. package/components/checkbox/checkbox-base.js +8 -15
  70. package/components/checkbox/checkbox-base.js.map +1 -1
  71. package/components/checkbox/checkbox.d.ts +2 -4
  72. package/components/checkbox/checkbox.js.map +1 -1
  73. package/components/checkbox/switch.d.ts +1 -3
  74. package/components/checkbox/switch.js.map +1 -1
  75. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  76. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  77. package/components/checkbox/themes/switch.base.css.js +1 -1
  78. package/components/checkbox/themes/switch.base.css.js.map +1 -1
  79. package/components/checkbox/validators.d.ts +3 -0
  80. package/components/checkbox/validators.js +5 -0
  81. package/components/checkbox/validators.js.map +1 -0
  82. package/components/chip/chip.d.ts +4 -3
  83. package/components/chip/chip.js +11 -19
  84. package/components/chip/chip.js.map +1 -1
  85. package/components/chip/themes/chip.base.css.js +1 -1
  86. package/components/chip/themes/chip.base.css.js.map +1 -1
  87. package/components/chip/themes/shared/chip.common.css.js +1 -1
  88. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  89. package/components/combo/combo.d.ts +36 -54
  90. package/components/combo/combo.js +36 -59
  91. package/components/combo/combo.js.map +1 -1
  92. package/components/combo/themes/combo-header.base.css.js +1 -1
  93. package/components/combo/themes/combo-header.base.css.js.map +1 -1
  94. package/components/combo/themes/combo-item.base.css.js +1 -1
  95. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  96. package/components/combo/themes/combo.base.css.js +1 -1
  97. package/components/combo/themes/combo.base.css.js.map +1 -1
  98. package/components/combo/types.d.ts +2 -2
  99. package/components/combo/types.js.map +1 -1
  100. package/components/combo/validators.d.ts +3 -0
  101. package/components/combo/validators.js +9 -0
  102. package/components/combo/validators.js.map +1 -0
  103. package/components/common/controllers/key-bindings.d.ts +1 -0
  104. package/components/common/controllers/key-bindings.js.map +1 -1
  105. package/components/common/controllers/mutation-observer.d.ts +1 -0
  106. package/components/common/controllers/mutation-observer.js.map +1 -1
  107. package/components/common/controllers/root-click.d.ts +4 -2
  108. package/components/common/controllers/root-click.js +13 -7
  109. package/components/common/controllers/root-click.js.map +1 -1
  110. package/components/common/definitions/defineAllComponents.js +0 -2
  111. package/components/common/definitions/defineAllComponents.js.map +1 -1
  112. package/components/common/localization/intl-formatters.d.ts +17 -0
  113. package/components/common/localization/intl-formatters.js +46 -0
  114. package/components/common/localization/intl-formatters.js.map +1 -0
  115. package/components/common/mixins/alert.d.ts +3 -3
  116. package/components/common/mixins/alert.js +6 -4
  117. package/components/common/mixins/alert.js.map +1 -1
  118. package/components/common/mixins/combo-box.d.ts +4 -3
  119. package/components/common/mixins/combo-box.js +16 -10
  120. package/components/common/mixins/combo-box.js.map +1 -1
  121. package/components/common/mixins/form-associated.d.ts +1 -1
  122. package/components/common/mixins/form-associated.js +4 -2
  123. package/components/common/mixins/form-associated.js.map +1 -1
  124. package/components/common/util.d.ts +26 -0
  125. package/components/common/util.js +34 -0
  126. package/components/common/util.js.map +1 -1
  127. package/components/date-picker/date-picker.d.ts +7 -10
  128. package/components/date-picker/date-picker.js +16 -33
  129. package/components/date-picker/date-picker.js.map +1 -1
  130. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  131. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  132. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  133. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  134. package/components/date-picker/validators.d.ts +3 -0
  135. package/components/date-picker/validators.js +15 -0
  136. package/components/date-picker/validators.js.map +1 -0
  137. package/components/date-time-input/date-time-input.d.ts +3 -22
  138. package/components/date-time-input/date-time-input.js +8 -36
  139. package/components/date-time-input/date-time-input.js.map +1 -1
  140. package/components/date-time-input/date-util.js +3 -1
  141. package/components/date-time-input/date-util.js.map +1 -1
  142. package/components/date-time-input/validators.d.ts +3 -0
  143. package/components/date-time-input/validators.js +18 -0
  144. package/components/date-time-input/validators.js.map +1 -0
  145. package/components/dialog/dialog.d.ts +12 -25
  146. package/components/dialog/dialog.js +55 -77
  147. package/components/dialog/dialog.js.map +1 -1
  148. package/components/dialog/themes/dialog.base.css.js +1 -1
  149. package/components/dialog/themes/dialog.base.css.js.map +1 -1
  150. package/components/dialog/themes/shared/dialog.common.css.js +1 -1
  151. package/components/dialog/themes/shared/dialog.common.css.js.map +1 -1
  152. package/components/divider/divider.js.map +1 -1
  153. package/components/divider/themes/divider.base.css.js +1 -1
  154. package/components/divider/themes/divider.base.css.js.map +1 -1
  155. package/components/dropdown/dropdown-group.d.ts +1 -1
  156. package/components/dropdown/dropdown-group.js +5 -3
  157. package/components/dropdown/dropdown-group.js.map +1 -1
  158. package/components/dropdown/dropdown.d.ts +4 -11
  159. package/components/dropdown/dropdown.js +10 -23
  160. package/components/dropdown/dropdown.js.map +1 -1
  161. package/components/dropdown/themes/dropdown-group.base.css.js +1 -1
  162. package/components/dropdown/themes/dropdown-group.base.css.js.map +1 -1
  163. package/components/dropdown/themes/dropdown-header.base.css.js +1 -1
  164. package/components/dropdown/themes/dropdown-header.base.css.js.map +1 -1
  165. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  166. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  167. package/components/dropdown/themes/dropdown.base.css.js +1 -1
  168. package/components/dropdown/themes/dropdown.base.css.js.map +1 -1
  169. package/components/expansion-panel/expansion-panel.d.ts +10 -10
  170. package/components/expansion-panel/expansion-panel.js +39 -39
  171. package/components/expansion-panel/expansion-panel.js.map +1 -1
  172. package/components/expansion-panel/themes/expansion-panel.base.css.js +1 -1
  173. package/components/expansion-panel/themes/expansion-panel.base.css.js.map +1 -1
  174. package/components/icon/icon-references.d.ts +28 -0
  175. package/components/icon/icon-references.js +151 -0
  176. package/components/icon/icon-references.js.map +1 -0
  177. package/components/icon/icon-state.broadcast.d.ts +10 -0
  178. package/components/icon/icon-state.broadcast.js +36 -0
  179. package/components/icon/icon-state.broadcast.js.map +1 -0
  180. package/components/icon/icon.d.ts +3 -3
  181. package/components/icon/icon.js +13 -7
  182. package/components/icon/icon.js.map +1 -1
  183. package/components/icon/icon.registry.d.ts +14 -14
  184. package/components/icon/icon.registry.js +70 -26
  185. package/components/icon/icon.registry.js.map +1 -1
  186. package/components/icon/internal-icons-lib.d.ts +2 -2
  187. package/components/icon/internal-icons-lib.js +2 -2
  188. package/components/icon/internal-icons-lib.js.map +1 -1
  189. package/components/icon/registry/default-map.d.ts +12 -0
  190. package/components/icon/registry/default-map.js +31 -0
  191. package/components/icon/registry/default-map.js.map +1 -0
  192. package/components/icon/registry/parser.d.ts +6 -0
  193. package/components/icon/registry/parser.js +21 -0
  194. package/components/icon/registry/parser.js.map +1 -0
  195. package/components/icon/registry/types.d.ts +34 -0
  196. package/components/icon/registry/types.js +7 -0
  197. package/components/icon/registry/types.js.map +1 -0
  198. package/components/icon/themes/icon.base.css.js +1 -1
  199. package/components/icon/themes/icon.base.css.js.map +1 -1
  200. package/components/input/input-base.d.ts +8 -21
  201. package/components/input/input-base.js +12 -41
  202. package/components/input/input-base.js.map +1 -1
  203. package/components/input/input.d.ts +3 -29
  204. package/components/input/input.js +4 -78
  205. package/components/input/input.js.map +1 -1
  206. package/components/input/themes/input.base.css.js +1 -1
  207. package/components/input/themes/input.base.css.js.map +1 -1
  208. package/components/input/validators.d.ts +4 -0
  209. package/components/input/validators.js +30 -0
  210. package/components/input/validators.js.map +1 -0
  211. package/components/list/list.d.ts +1 -3
  212. package/components/list/list.js +1 -2
  213. package/components/list/list.js.map +1 -1
  214. package/components/list/themes/container.base.css.js +1 -1
  215. package/components/list/themes/container.base.css.js.map +1 -1
  216. package/components/mask-input/mask-input-base.d.ts +3 -2
  217. package/components/mask-input/mask-input-base.js.map +1 -1
  218. package/components/mask-input/mask-input.d.ts +1 -4
  219. package/components/mask-input/mask-input.js +7 -17
  220. package/components/mask-input/mask-input.js.map +1 -1
  221. package/components/mask-input/validators.d.ts +3 -0
  222. package/components/mask-input/validators.js +11 -0
  223. package/components/mask-input/validators.js.map +1 -0
  224. package/components/nav-drawer/nav-drawer-item.d.ts +1 -5
  225. package/components/nav-drawer/nav-drawer-item.js +9 -10
  226. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  227. package/components/nav-drawer/nav-drawer.d.ts +4 -3
  228. package/components/nav-drawer/nav-drawer.js +18 -7
  229. package/components/nav-drawer/nav-drawer.js.map +1 -1
  230. package/components/nav-drawer/themes/container.base.css.js +1 -1
  231. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  232. package/components/nav-drawer/themes/header-item.base.css.js +1 -1
  233. package/components/nav-drawer/themes/header-item.base.css.js.map +1 -1
  234. package/components/nav-drawer/themes/item.base.css.js +1 -1
  235. package/components/nav-drawer/themes/item.base.css.js.map +1 -1
  236. package/components/navbar/themes/navbar.base.css.js +1 -1
  237. package/components/navbar/themes/navbar.base.css.js.map +1 -1
  238. package/components/popover/themes/light/popover.base.css.js +1 -1
  239. package/components/popover/themes/light/popover.base.css.js.map +1 -1
  240. package/components/progress/base.d.ts +2 -1
  241. package/components/progress/base.js.map +1 -1
  242. package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
  243. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  244. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  245. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  246. package/components/radio/radio.d.ts +9 -9
  247. package/components/radio/radio.js +17 -31
  248. package/components/radio/radio.js.map +1 -1
  249. package/components/radio/themes/radio.base.css.js +1 -1
  250. package/components/radio/themes/radio.base.css.js.map +1 -1
  251. package/components/radio/validators.d.ts +3 -0
  252. package/components/radio/validators.js +13 -0
  253. package/components/radio/validators.js.map +1 -0
  254. package/components/radio-group/radio-group.base.css.js +1 -1
  255. package/components/radio-group/radio-group.base.css.js.map +1 -1
  256. package/components/radio-group/radio-group.js.map +1 -1
  257. package/components/rating/rating.d.ts +1 -9
  258. package/components/rating/rating.js +6 -16
  259. package/components/rating/rating.js.map +1 -1
  260. package/components/rating/themes/rating-symbol.base.css.js +1 -1
  261. package/components/rating/themes/rating-symbol.base.css.js.map +1 -1
  262. package/components/rating/themes/rating.base.css.js +1 -1
  263. package/components/rating/themes/rating.base.css.js.map +1 -1
  264. package/components/ripple/ripple.material.css.js +1 -1
  265. package/components/ripple/ripple.material.css.js.map +1 -1
  266. package/components/select/select.d.ts +5 -33
  267. package/components/select/select.js +23 -66
  268. package/components/select/select.js.map +1 -1
  269. package/components/select/themes/select.base.css.js +1 -1
  270. package/components/select/themes/select.base.css.js.map +1 -1
  271. package/components/select/validators.d.ts +3 -0
  272. package/components/select/validators.js +5 -0
  273. package/components/select/validators.js.map +1 -0
  274. package/components/slider/range-slider.d.ts +0 -16
  275. package/components/slider/range-slider.js +0 -18
  276. package/components/slider/range-slider.js.map +1 -1
  277. package/components/slider/themes/slider.base.css.js +1 -1
  278. package/components/slider/themes/slider.base.css.js.map +1 -1
  279. package/components/snackbar/snackbar.js +3 -7
  280. package/components/snackbar/snackbar.js.map +1 -1
  281. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  282. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  283. package/components/stepper/animations.d.ts +7 -1
  284. package/components/stepper/animations.js +63 -15
  285. package/components/stepper/animations.js.map +1 -1
  286. package/components/stepper/step.d.ts +3 -1
  287. package/components/stepper/step.js +17 -6
  288. package/components/stepper/step.js.map +1 -1
  289. package/components/stepper/themes/step/step.base.css.js +1 -1
  290. package/components/stepper/themes/step/step.base.css.js.map +1 -1
  291. package/components/stepper/themes/stepper/stepper.base.css.js +1 -1
  292. package/components/stepper/themes/stepper/stepper.base.css.js.map +1 -1
  293. package/components/stepper/themes/stepper/stepper.bootstrap.css.js +1 -1
  294. package/components/stepper/themes/stepper/stepper.bootstrap.css.js.map +1 -1
  295. package/components/stepper/themes/stepper/stepper.fluent.css.js +1 -1
  296. package/components/stepper/themes/stepper/stepper.fluent.css.js.map +1 -1
  297. package/components/stepper/themes/stepper/stepper.indigo.css.js +1 -1
  298. package/components/stepper/themes/stepper/stepper.indigo.css.js.map +1 -1
  299. package/components/tabs/tabs.js +2 -3
  300. package/components/tabs/tabs.js.map +1 -1
  301. package/components/tabs/themes/tab.base.css.js +1 -1
  302. package/components/tabs/themes/tab.base.css.js.map +1 -1
  303. package/components/tabs/themes/tabs.base.css.js +1 -1
  304. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  305. package/components/textarea/textarea.d.ts +13 -16
  306. package/components/textarea/textarea.js +10 -12
  307. package/components/textarea/textarea.js.map +1 -1
  308. package/components/textarea/themes/textarea.base.css.js +1 -1
  309. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  310. package/components/textarea/validators.d.ts +3 -0
  311. package/components/textarea/validators.js +7 -0
  312. package/components/textarea/validators.js.map +1 -0
  313. package/components/toast/themes/toast.base.css.js +1 -1
  314. package/components/toast/themes/toast.base.css.js.map +1 -1
  315. package/components/tree/themes/container.base.css.js +1 -1
  316. package/components/tree/themes/container.base.css.js.map +1 -1
  317. package/components/tree/themes/item.base.css.js +1 -1
  318. package/components/tree/themes/item.base.css.js.map +1 -1
  319. package/components/tree/tree-item.d.ts +4 -4
  320. package/components/tree/tree-item.js +11 -23
  321. package/components/tree/tree-item.js.map +1 -1
  322. package/components/tree/tree.d.ts +3 -4
  323. package/components/tree/tree.js +1 -37
  324. package/components/tree/tree.js.map +1 -1
  325. package/components/types.d.ts +3 -0
  326. package/components/types.js +2 -0
  327. package/components/types.js.map +1 -0
  328. package/custom-elements.json +30656 -31315
  329. package/igniteui-webcomponents.css-data.json +5 -928
  330. package/igniteui-webcomponents.html-data.json +4 -2699
  331. package/index.d.ts +5 -4
  332. package/index.js +2 -3
  333. package/index.js.map +1 -1
  334. package/package.json +1 -1
  335. package/theming/config.js +3 -3
  336. package/theming/config.js.map +1 -1
  337. package/theming/theming-controller.d.ts +4 -6
  338. package/theming/theming-controller.js +30 -34
  339. package/theming/theming-controller.js.map +1 -1
  340. package/theming/theming-decorator.d.ts +29 -11
  341. package/theming/theming-decorator.js +21 -7
  342. package/theming/theming-decorator.js.map +1 -1
  343. package/theming/theming-event.js.map +1 -1
  344. package/theming/types.d.ts +5 -0
  345. package/theming/types.js.map +1 -1
  346. package/theming/utils.d.ts +1 -1
  347. package/theming/utils.js +8 -8
  348. package/theming/utils.js.map +1 -1
  349. package/web-types.json +12 -7621
  350. package/components/calendar/common/calendar-base.d.ts +0 -40
  351. package/components/calendar/common/calendar-base.js +0 -118
  352. package/components/calendar/common/calendar-base.js.map +0 -1
  353. package/components/calendar/common/calendar.model.d.ts +0 -128
  354. package/components/calendar/common/calendar.model.js +0 -246
  355. package/components/calendar/common/calendar.model.js.map +0 -1
  356. package/components/calendar/common/utils.d.ts +0 -12
  357. package/components/calendar/common/utils.js +0 -54
  358. package/components/calendar/common/utils.js.map +0 -1
  359. package/components/common/decorators/alternateName.d.ts +0 -7
  360. package/components/common/decorators/alternateName.js +0 -4
  361. package/components/common/decorators/alternateName.js.map +0 -1
  362. package/components/common/decorators/blazorSuppress.d.ts +0 -5
  363. package/components/common/decorators/blazorSuppress.js +0 -4
  364. package/components/common/decorators/blazorSuppress.js.map +0 -1
  365. package/components/common/decorators/blazorTwoWayBind.d.ts +0 -7
  366. package/components/common/decorators/blazorTwoWayBind.js +0 -4
  367. package/components/common/decorators/blazorTwoWayBind.js.map +0 -1
  368. package/components/common/mixins/sizable.d.ts +0 -13
  369. package/components/common/mixins/sizable.js +0 -27
  370. package/components/common/mixins/sizable.js.map +0 -1
  371. package/components/form/form.d.ts +0 -48
  372. package/components/form/form.js +0 -158
  373. package/components/form/form.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"combo.js","sourceRoot":"","sources":["../../../src/components/combo/combo.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,UAAU,EAAuB,IAAI,EAAE,MAAM,KAAK,CAAC;AAC5D,OAAO,EACL,QAAQ,EACR,KAAK,EACL,qBAAqB,EACrB,KAAK,GACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sDAAsD,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,QAAQ,MAAM,yCAAyC,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAC/C,OAAO,iBAAiB,MAAM,mBAAmB,CAAC;AAClD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,uBAAuB,MAAM,mBAAmB,CAAC;AACxD,OAAO,qBAAqB,MAAM,iBAAiB,CAAC;AACpD,OAAO,qBAAqB,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAiE1B,IAAM,iBAAiB,yBAAvB,MAAM,iBAEnB,SAAQ,2BAA2B,CACnC,iBAAiB,CAA4C,UAAU,CAAC,CACzE;IAKQ,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,mBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAyJD,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,IAAW,gBAAgB,CAAC,KAAmC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,KAAK,EAAE,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAqDS,WAAW;QACnB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACnC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAqB,CAAC;QAEhE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAGS,gBAAgB;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC;IACrD,CAAC;IAGS,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;IAKe,AAAN,KAAK,CAAC,QAAQ;QACtB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAGS,qBAAqB;QAC7B,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;IACrC,CAAC;IAGS,wBAAwB;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAYD;QACE,KAAK,EAAE,CAAC;QAvQF,WAAM,GAAoB,EAAE,CAAC;QAM7B,kBAAa,GAAG,EAAE,CAAC;QAEnB,sBAAiB,GAAwB;YAC/C,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,KAAK;SACvB,CAAC;QAEiB,eAAU,GAAsB;YACjD;gBACE,GAAG,EAAE,cAAc;gBACnB,OAAO,EAAE,QAAQ,CAAC,QAAQ;gBAC1B,OAAO,EAAE,GAAG,EAAE,CACZ,IAAI,CAAC,QAAQ;oBACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;oBACpD,CAAC,CAAC,IAAI;aACX;SACF,CAAC;QAEQ,yBAAoB,GAAG,IAAI,oBAAoB,CAAI,IAAI,CAAC,CAAC;QACzD,wBAAmB,GAAG,IAAI,mBAAmB,CAAI,IAAI,CAAC,CAAC;QACvD,mBAAc,GAAG,IAAI,cAAc,CAAI,IAAI,CAAC,CAAC;QAwBhD,SAAI,GAAa,EAAE,CAAC;QAOpB,aAAQ,GAAG,KAAK,CAAC;QAOjB,iBAAY,GAAG,KAAK,CAAC;QAcrB,kBAAa,GAAG,KAAK,CAAC;QAqBtB,sBAAiB,GAAG,QAAQ,CAAC;QAO7B,SAAI,GAAG,KAAK,CAAC;QAIb,SAAI,GAAG,IAAI,CAAC;QAcZ,eAAU,GAAa,IAAI,CAAC,QAAQ,CAAC;QAOrC,aAAQ,GAAa,IAAI,CAAC,UAAU,CAAC;QAQrC,iBAAY,GAAsB,KAAK,CAAC;QAyBxC,sBAAiB,GAAG,KAAK,CAAC;QAO1B,qBAAgB,GAAG,KAAK,CAAC;QAQzB,iBAAY,GAAyB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAA,GAAG,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC;QAQK,wBAAmB,GAAyB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC9D,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,CAAC,CAAC;QAMK,qBAAgB,GAAyB,OAAO,CAAC;QAMjD,cAAS,GAAG,IAAI,CAAC;QAGd,cAAS,GAA0B,EAAE,CAAC;QA4CxC,yBAAoB,GAAG,mBAAmB,CAAC,IAAI,EAAE;YACvD,YAAY,EAAE,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBAAE,OAAO;gBAClC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAElB,MAAM,IAAI,CAAC,cAAc,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAyTO,iBAAY,GAA2B,CAC/C,IAAoB,EACpB,KAAa,EACG,EAAE;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,KAAK,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC;YAClE,MAAM,cAAc,GAAG,IAAI,CAAA;SACtB,IAAI,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;MACnD,CAAC;YAEH,MAAM,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;gBACpB,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,SAAS,YAAY,EAAE;gBACnC,CAAC,CAAC,QAAQ,YAAY,EAAE,CAAC;YAE3B,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;YAClC,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAA;WAClB,MAAM;aACJ,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;qBACrC,IAAI,CAAC,SAAS,CAAC,MAAM;sBACpB,YAAY;;eAEnB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;eAChC,KAAK;gBACJ,MAAM;kBACJ,QAAQ;uBACH,IAAI,CAAC,YAAY;SAC/B,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;MAC5C,CAAC;YAEH,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM;gBAC1C,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,YAAY,EAAE,CAAC;QACrB,CAAC,CAAC;QA1VA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAE9C,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CACnB,SAAS,EACT,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACvE,CAAC;IACJ,CAAC;IAES,eAAe;QACvB,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,EAAE,CAAC;IACtC,CAAC;IAGS,UAAU;QAClB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IAGwB,AAAN,KAAK,CAAC,cAAc;QAErC,MAAM,IAAI,CAAC,cAAc,CAAC;QAE1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAGS,WAAW;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAmB,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IA+BD,IAAW,KAAK,CAAC,KAAsB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAOD,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEkB,YAAY;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE5B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAES,KAAK,CAAC,WAAW;QACzB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAS,CAAC,CAAC;QAC1E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB;aAC1C,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,CAAC;aACpC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAEe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAIe,KAAK,CAAC,OAAsB;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAIe,IAAI;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;IAES,kBAAkB,CAAC,QAA6B,EAAE;QAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAKD,IAAW,SAAS;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAwBM,MAAM,CAAC,KAA2B;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAwBM,QAAQ,CAAC,KAA2B;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,CAAc;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;QAG1C,MAAM,IAAI,CAAC,cAAc,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAGzE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAG1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAES,iBAAiB,CAAC,CAAc;QACxC,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAES,aAAa;QACrB,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAES,aAAa;QACrB,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAES,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI;QAC/B,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,OAAO;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAEpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAGM,IAAI;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAES,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,OAAO;QAC1C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAElB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IAGM,IAAI;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAGM,OAAO,CAAC,IAAI,GAAG,IAAI;QACxB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAGM,MAAM;QACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IA0CS,kBAAkB,CAAC,KAAoB;QAC/C,MAAM,MAAM,GAAG,KAAK;aACjB,YAAY,EAAE;aACd,IAAI,CACH,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,qBAAqB,CACnB,CAAC;QAE7B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAES,gBAAgB,CAAC,KAAiB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAE3D,MAAM,MAAM,GAAG,KAAK;aACjB,YAAY,EAAE;aACd,IAAI,CACH,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,qBAAqB,CACnB,CAAC;QAE7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAES,YAAY,CAAC,KAAa;QAClC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAE,CAAC;QAEhD,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAES,aAAa,CAAC,KAAa;QACnC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAE,CAAC;QAEhD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAES,UAAU,CAAC,IAAO;QAC1B,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAES,oBAAoB;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAEjD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAES,oBAAoB,CAAC,CAAa;QAC1C,CAAC,CAAC,eAAe,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IAES,sBAAsB,CAAC,CAAgB;QAC/C,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAES,wBAAwB,CAAC,CAAgB;QACjD,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAES,qBAAqB;QAC7B,IAAI,CAAC,gBAAgB,GAAG;YACtB,aAAa,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa;SACpD,CAAC;IACJ,CAAC;IAED,IAAc,WAAW;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,IAAc,WAAW;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,CAAC;IAEO,gBAAgB,CAAC,CAAQ;QAC/B,CAAC,CAAC,eAAe,EAAE,CAAC;IACtB,CAAC;IAEO,gBAAgB;QACtB,MAAM,QAAQ,GACZ,IAAI,CAAC,WAAW,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC;QAC3E,MAAM,SAAS,GACb,IAAI,CAAC,WAAW,CAAC,KAAK,UAAU;YAC9B,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,iBAAiB,CAAC;QAExB,OAAO,IAAI,CAAA;;;gBAGC,WAAW,CAAC;YAClB,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;SAC9B,CAAC;;;;mBAIS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;;;;;;KAM9C,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;QAExE,OAAO,IAAI,CAAA;;;eAGA,IAAI,CAAC,oBAAoB;gBACxB,QAAQ,CAAC,IAAI,KAAK,CAAC;;;;kBAIjB,IAAI;;;;;YAKV,CAAC;IACX,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAA;;;;;;sBAMO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;sBAE5B,IAAI,CAAC,QAAQ;;eAEpB,CAAC,CAAa,EAAE,EAAE;YACzB,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;oBACa,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;cACjC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;mBAChB,IAAI,CAAC,gBAAgB;kBACtB,CAAC,CAAQ,EAAE,EAAE;YACvB,CAAC,CAAC,eAAe,EAAE,CAAC;YAEpB,qBAAqB,CAAC,GAAG,EAAE;gBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;iBACU,IAAI,CAAC,gBAAgB;kBACpB,IAAI,CAAC,eAAe;iBACrB,IAAI,CAAC,sBAAsB;eAC7B,IAAI,CAAC,aAAa;kBACf,IAAI,CAAC,QAAQ;kBACb,IAAI,CAAC,QAAQ;iBACd,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;kBACjB,IAAI,CAAC,QAAQ;mBACZ,IAAI,CAAC,SAAS;kBACf,CAAC,IAAI,CAAC,YAAY;;mBAEjB,IAAI,CAAC,WAAW,IAAI,QAAQ;;;QAGvC,IAAI,CAAC,eAAe,EAAE;mBACX,IAAI,CAAC,WAAW,IAAI,QAAQ;;;QAGvC,IAAI,CAAC,gBAAgB,EAAE;iBACd,CAAC;IAChB,CAAC;IAEO,iBAAiB;QACvB,OAAO,IAAI,CAAA;;gBAEC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY;;;iBAGzC,IAAI,CAAC,cAAc,CAAC,UAAU;;sBAEzB,IAAI,CAAC,iBAAiB;;oBAExB,IAAI,CAAC,gBAAgB;mBACtB,IAAI,CAAC,gBAAgB;oBACpB,IAAI,CAAC,iBAAiB;mBACvB,IAAI,CAAC,wBAAwB;;;iBAG/B,IAAI,CAAC,iBAAiB,IAAI,QAAQ;;;iBAGlC,WAAW,CAAC;YACjB,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,KAAK;SACrD,CAAC;mBACO,IAAI,CAAC,qBAAqB;;;WAGlC,CAAC;IACV,CAAC;IAEO,mBAAmB;QACzB,OAAO,IAAI,CAAA,6BAA6B,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;;WAE1D,CAAC;IACV,CAAC;IAEO,UAAU;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAA;eACA,CAAC,IAAI,CAAC,IAAI;iBACR,IAAI,CAAC,kBAAkB;;;QAGhC,IAAI,CAAC,iBAAiB,EAAE;;;;;+BAKD,CAAC,IAAI,CAAC,YAAY;;;;;;gCAMjB,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;iBAChD,IAAI,CAAC,SAAS;sBACT,IAAI,CAAC,YAAY;kBACrB,CAAC,QAAQ;;;QAGnB,IAAI,CAAC,mBAAmB,EAAE;;;;WAIvB,CAAC;IACV,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAA;;;iBAGE,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;;;WAGlC,CAAC;IACV,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;2BACY,IAAI,CAAC,IAAI;UAC1B,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;;QAE7C,IAAI,CAAC,gBAAgB,EAAE;KAC1B,CAAC;IACJ,CAAC;;AA34BsB,yBAAO,GAAG,WAAW,AAAd,CAAe;AAC/B,wBAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;AAkBhC;IADP,KAAK,EAAE;4DAC2B;AAG3B;IADP,KAAK,EAAE;wDACmB;AAyBjB;IADT,qBAAqB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;qDACL;AAGhC;IADT,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;sDACC;AAGjC;IADT,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;sDACC;AAGjC;IADT,KAAK,CAAC,uBAAuB,CAAC;gDACK;AAG5B;IADP,KAAK,CAAC,kBAAkB,CAAC;iDACS;AAG3B;IADP,KAAK,CAAC,gBAAgB,CAAC;+CACa;AAK9B;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;+CACJ;AAOpB;IADN,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACnB;AAOjB;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;uDAC3C;AAOZ;IADf,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oDACQ;AAO7B;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wDAC5B;AAOtB;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDACL;AAOf;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDACC;AAOrB;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4DACxB;AAO7B;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;+CACR;AAIb;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;+CACT;AAOZ;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;mDAC3B;AAOnB;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;qDACX;AAOrC;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;mDACT;AAQrC;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;uDACV;AAW/C;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yDAG1D;AAYM;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;4DAC7C;AAO1B;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;2DAC5C;AAQzB;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;uDAI7B;AAQK;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;8DAG7B;AAeQ;IADT,KAAK,EAAE;oDACwC;AAGtC;IADT,KAAK,CAAC,MAAM,CAAC;oDAUb;AAGS;IADT,KAAK,CAAC,UAAU,CAAC;yDAGjB;AAGS;IADT,KAAK,CAAC,YAAY,CAAC;wDAKnB;AAKe;IAHf,KAAK,CAAC,UAAU,CAAC;IACjB,KAAK,CAAC,cAAc,CAAC;IACrB,KAAK,CAAC,UAAU,CAAC;iDAGjB;AAGS;IADT,KAAK,CAAC,MAAM,CAAC;8DAGb;AAGS;IADT,KAAK,CAAC,kBAAkB,CAAC;iEAIzB;AA0CS;IADT,KAAK,CAAC,cAAc,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;mDAMrD;AAGwB;IADxB,KAAK,CAAC,UAAU,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;uDAOjD;AAGS;IADT,KAAK,CAAC,OAAO,CAAC;oDAUd;AA0CD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;8CAG1C;AA/XkB,iBAAiB;IAHrC,MAAM,CAAC,GAAG,CAAC;IACX,4BAA4B,CAAC,qCAAqC,CAAC;IACnE,oBAAoB;GACA,iBAAiB,CAi5BrC;eAj5BoB,iBAAiB","sourcesContent":["import { LitElement, type TemplateResult, html } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { themeSymbol, themes } from '../../theming/theming-decorator.js';\nimport type { Theme } from '../../theming/types.js';\nimport { addRootClickHandler } from '../common/controllers/root-click.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { blazorIndirectRender } from '../common/decorators/blazorIndirectRender.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport messages from '../common/localization/validation-en.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/form-associated-required.js';\nimport { partNameMap } from '../common/util.js';\nimport type { Validator } from '../common/validators.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcInputComponent from '../input/input.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport IgcComboHeaderComponent from './combo-header.js';\nimport IgcComboItemComponent from './combo-item.js';\nimport IgcComboListComponent from './combo-list.js';\nimport { DataController } from './controllers/data.js';\nimport { NavigationController } from './controllers/navigation.js';\nimport { SelectionController } from './controllers/selection.js';\nimport { styles } from './themes/combo.base.css.js';\nimport { styles as shared } from './themes/shared/combo.common.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n ComboItemTemplate,\n ComboRecord,\n ComboRenderFunction,\n ComboValue,\n FilteringOptions,\n GroupingDirection,\n IgcComboEventMap,\n Item,\n Keys,\n} from './types.js';\n\n/* blazorSupportsVisualChildren */\n/**\n * The Combo component is similar to the Select component in that it provides a list of options from which the user can make a selection.\n * In contrast to the Select component, the Combo component displays all options in a virtualized list of items,\n * meaning the combo box can simultaneously show thousands of options, where one or more options can be selected.\n * Additionally, users can create custom item templates, allowing for robust data visualization.\n * The Combo component features case-sensitive filtering, grouping, complex data binding, dynamic addition of values and more.\n *\n * @element igc-combo\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot header - Renders a container before the list of options.\n * @slot footer - Renders a container after the list of options.\n * @slot helper-text - Renders content below the input.\n * @slot toggle-icon - Renders content inside the suffix container.\n * @slot clear-icon - Renders content inside the suffix container.\n *\n * @fires igcFocus - Emitted when the select gains focus.\n * @fires igcBlur - Emitted when the select loses focus.\n * @fires igcChange - Emitted when the control's selection has changed.\n * @fires igcOpening - Emitted just before the list of options is opened.\n * @fires igcOpened - Emitted after the list of options is opened.\n * @fires igcClosing - Emitter just before the list of options is closed.\n * @fires igcClosed - Emitted after the list of options is closed.\n *\n * @csspart label - The encapsulated text label.\n * @csspart input - The main input field.\n * @csspart native-input - The native input of the main input field.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart toggle-icon - The toggle icon wrapper.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart case-icon - The case icon wrapper.\n * @csspart helper-text - The helper text wrapper.\n * @csspart search-input - The search input field.\n * @csspart list-wrapper - The list of options wrapper.\n * @csspart list - The list of options box.\n * @csspart item - Represents each item in the list of options.\n * @csspart group-header - Represents each header in the list of options.\n * @csspart active - Appended to the item parts list when the item is active.\n * @csspart selected - Appended to the item parts list when the item is selected.\n * @csspart checkbox - Represents each checkbox of each list item.\n * @csspart checkbox-indicator - Represents the checkbox indicator of each list item.\n * @csspart checked - Appended to checkbox parts list when checkbox is checked.\n * @csspart header - The container holding the header content.\n * @csspart footer - The container holding the footer content.\n * @csspart empty - The container holding the empty content.\n */\n@themes(all)\n@blazorAdditionalDependencies('IgcIconComponent, IgcInputComponent')\n@blazorIndirectRender\nexport default class IgcComboComponent<\n T extends object = any,\n> extends FormAssociatedRequiredMixin(\n EventEmitterMixin<IgcComboEventMap, Constructor<LitElement>>(LitElement)\n) {\n public static readonly tagName = 'igc-combo';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcComboComponent,\n IgcIconComponent,\n IgcComboListComponent,\n IgcComboItemComponent,\n IgcComboHeaderComponent,\n IgcInputComponent,\n IgcPopoverComponent\n );\n }\n\n private _value: ComboValue<T>[] = [];\n\n @state()\n private _activeDescendant!: string;\n\n @state()\n private _displayValue = '';\n\n private _filteringOptions: FilteringOptions<T> = {\n filterKey: this.displayKey,\n caseSensitive: false,\n matchDiacritics: false,\n };\n\n protected override validators: Validator<this>[] = [\n {\n key: 'valueMissing',\n message: messages.required,\n isValid: () =>\n this.required\n ? Array.isArray(this.value) && this.value.length > 0\n : true,\n },\n ];\n\n protected navigationController = new NavigationController<T>(this);\n protected selectionController = new SelectionController<T>(this);\n protected dataController = new DataController<T>(this);\n private declare readonly [themeSymbol]: Theme;\n\n @queryAssignedElements({ slot: 'helper-text' })\n protected helperText!: Array<HTMLElement>;\n\n @queryAssignedElements({ slot: 'suffix' })\n protected inputSuffix!: Array<HTMLElement>;\n\n @queryAssignedElements({ slot: 'prefix' })\n protected inputPrefix!: Array<HTMLElement>;\n\n @query('[part=\"search-input\"]')\n protected input!: IgcInputComponent;\n\n @query('igc-input#target')\n private target!: IgcInputComponent;\n\n @query('igc-combo-list')\n private list!: IgcComboListComponent;\n\n /** The data source used to generate the list of options. */\n /* treatAsRef */\n @property({ attribute: false })\n public data: Array<T> = [];\n\n /**\n * The outlined attribute of the control.\n * @attr outlined\n */\n @property({ reflect: true, type: Boolean })\n public outlined = false;\n\n /**\n * Enables single selection mode and moves item filtering to the main input.\n * @attr single-select\n */\n @property({ attribute: 'single-select', reflect: true, type: Boolean })\n public singleSelect = false;\n\n /**\n * The autofocus attribute of the control.\n * @attr autofocus\n */\n @property({ type: Boolean })\n public override autofocus!: boolean;\n\n /**\n * Focuses the list of options when the menu opens.\n * @attr autofocus-list\n */\n @property({ attribute: 'autofocus-list', type: Boolean })\n public autofocusList = false;\n\n /**\n * The label attribute of the control.\n * @attr label\n */\n @property({ type: String })\n public label!: string;\n\n /**\n * The placeholder attribute of the control.\n * @attr placeholder\n */\n @property({ type: String })\n public placeholder!: string;\n\n /**\n * The placeholder attribute of the search input.\n * @attr placeholder-search\n */\n @property({ attribute: 'placeholder-search', type: String })\n public placeholderSearch = 'Search';\n\n /**\n * Sets the open state of the component.\n * @attr open\n */\n @property({ type: Boolean })\n public open = false;\n\n /** @hidden @internal */\n @property({ type: Boolean })\n public flip = true;\n\n /**\n * The key in the data source used when selecting items.\n * @attr value-key\n */\n @property({ attribute: 'value-key', reflect: false })\n public valueKey?: Keys<T>;\n\n /**\n * The key in the data source used to display items in the list.\n * @attr display-key\n */\n @property({ attribute: 'display-key', reflect: false })\n public displayKey?: Keys<T> = this.valueKey;\n\n /**\n * The key in the data source used to group items in the list.\n * @attr group-key\n */\n @property({ attribute: 'group-key', reflect: false })\n public groupKey?: Keys<T> = this.displayKey;\n\n /**\n * Sorts the items in each group by ascending or descending order.\n * @attr group-sorting\n * @type {\"asc\" | \"desc\" | \"none\"}\n */\n @property({ attribute: 'group-sorting', reflect: false })\n public groupSorting: GroupingDirection = 'asc';\n\n /**\n * An object that configures the filtering of the combo.\n * @attr filtering-options\n * @type {FilteringOptions<T>}\n * @param filterKey - The key in the data source used when filtering the list of options.\n * @param caseSensitive - Determines whether the filtering operation should be case sensitive.\n * @param matchDiacritics -If true, the filter distinguishes between accented letters and their base letters.\n */\n @property({ attribute: 'filtering-options', type: Object })\n public get filteringOptions(): FilteringOptions<T> {\n return this._filteringOptions;\n }\n\n public set filteringOptions(value: Partial<FilteringOptions<T>>) {\n this._filteringOptions = { ...this._filteringOptions, ...value };\n this.requestUpdate('pipeline');\n }\n\n /**\n * Enables the case sensitive search icon in the filtering input.\n * @attr case-sensitive-icon\n */\n @property({ type: Boolean, attribute: 'case-sensitive-icon', reflect: false })\n public caseSensitiveIcon = false;\n\n /**\n * Disables the filtering of the list of options.\n * @attr disable-filtering\n */\n @property({ type: Boolean, attribute: 'disable-filtering', reflect: false })\n public disableFiltering = false;\n\n /* blazorSuppress */\n /**\n * The template used for the content of each combo item.\n * @type {ComboItemTemplate<T>}\n */\n @property({ attribute: false })\n public itemTemplate: ComboItemTemplate<T> = ({ item }) => {\n const template = this.displayKey ? `${item[this.displayKey]}` : `${item}`;\n return html`${template}`;\n };\n\n /* blazorSuppress */\n /**\n * The template used for the content of each combo group header.\n * @type {ComboItemTemplate<T>}\n */\n @property({ attribute: false })\n public groupHeaderTemplate: ComboItemTemplate<T> = ({ item }) => {\n return html`${this.groupKey && item[this.groupKey]}`;\n };\n\n /**\n * Sets the component's positioning strategy.\n * @hidden @internal @private\n */\n public positionStrategy: 'absolute' | 'fixed' = 'fixed';\n\n /**\n * Whether the dropdown's width should be the same as the target's one.\n * @hidden @internal @private\n */\n public sameWidth = true;\n\n @state()\n protected dataState: Array<ComboRecord<T>> = [];\n\n @watch('data')\n protected dataChanged() {\n if (this.data.length === 0) return;\n this.dataState = structuredClone(this.data) as ComboRecord<T>[];\n\n if (this.hasUpdated) {\n this.pipeline();\n }\n\n this.requestUpdate('value');\n }\n\n @watch('valueKey')\n protected updateDisplayKey() {\n this.displayKey = this.displayKey ?? this.valueKey;\n }\n\n @watch('displayKey')\n protected updateFilterKey() {\n if (!this.filteringOptions.filterKey) {\n this.filteringOptions = { filterKey: this.displayKey };\n }\n }\n\n @watch('groupKey')\n @watch('groupSorting')\n @watch('pipeline')\n protected async pipeline() {\n this.dataState = await this.dataController.apply([...this.data]);\n }\n\n @watch('open')\n protected toggleDirectiveChange() {\n this._rootClickController.update();\n }\n\n @watch('disableFiltering')\n protected updateOnDisableFiltering() {\n this.resetSearchTerm();\n this.pipeline();\n }\n\n private _rootClickController = addRootClickHandler(this, {\n hideCallback: async () => {\n if (!this.handleClosing()) return;\n this.open = false;\n\n await this.updateComplete;\n this.emitEvent('igcClosed');\n },\n });\n\n constructor() {\n super();\n\n this.addEventListener('focus', () => {\n this.emitEvent('igcFocus');\n });\n\n this.addEventListener('blur', () => {\n const { selected } = this.selectionController;\n\n if (selected.size === 0) {\n this._displayValue = '';\n this.resetSearchTerm();\n }\n\n this.invalid = !this.checkValidity();\n this.emitEvent('igcBlur');\n });\n\n this.addEventListener(\n 'keydown',\n this.navigationController.navigateHost.bind(this.navigationController)\n );\n }\n\n protected resetSearchTerm() {\n this.dataController.searchTerm = '';\n }\n\n @watch('singleSelect', { waitUntilFirstUpdate: true })\n protected resetState() {\n this.selectionController.selected.clear();\n this.updateValue();\n this.resetSearchTerm();\n this.navigationController.active = -1;\n }\n\n @watch('required', { waitUntilFirstUpdate: true })\n protected override async requiredChange() {\n // Wait for the underlying igc-input to update\n await this.updateComplete;\n\n this.updateValidity();\n this.invalid = !this.checkValidity();\n }\n\n @watch('value')\n protected selectItems() {\n if (!this._value || this.value.length === 0) {\n this.selectionController.deselect([]);\n } else {\n this.selectionController.deselect([]);\n this.selectionController.select(this._value as Item<T>[]);\n }\n\n this.updateValue();\n }\n\n /**\n * Sets the value (selected items). The passed value must be a valid JSON array.\n * If the data source is an array of complex objects, the `valueKey` attribute must be set.\n * Note that when `displayKey` is not explicitly set, it will fall back to the value of `valueKey`.\n *\n * @attr value\n *\n * @example\n * ```tsx\n * <igc-combo\n * .data=${[\n * {\n * id: 'BG01',\n * name: 'Sofia'\n * },\n * {\n * id: 'BG02',\n * name: 'Plovdiv'\n * }\n * ]}\n * display-key='name'\n * value-key='id'\n * value='[\"BG01\", \"BG02\"]'>\n * </igc-combo>\n * ```\n */\n /* blazorPrimitiveValue */\n /* blazorByValueArray */\n /* @tsTwoWayProperty (true, \"Change\", \"Detail.NewValue\", false) */\n public set value(items: ComboValue<T>[]) {\n const oldValue = this._value;\n this._value = items;\n this.requestUpdate('value', oldValue);\n }\n\n /**\n * Returns the current selection as a list of comma separated values,\n * represented by the value key, when provided.\n */\n @property({ attribute: true, type: Array })\n public get value(): ComboValue<T>[] {\n return this._value;\n }\n\n protected override setFormValue(): void {\n if (!this.name) {\n return;\n }\n\n const items = this._value;\n\n if (items.length < 1) {\n super.setFormValue(null);\n return;\n }\n\n const data = new FormData();\n\n if (this.singleSelect) {\n data.set(this.name, `${items[0]}`);\n } else {\n for (const item of items) {\n data.append(this.name, `${item}`);\n }\n }\n\n super.setFormValue(data);\n }\n\n protected async updateValue() {\n if (this.data.length === 0) return;\n const selected = Array.from(this.selectionController.selected);\n\n this._value = this.selectionController.getValue(selected, this.valueKey!);\n this._displayValue = this.selectionController\n .getValue(selected, this.displayKey!)\n .join(', ');\n\n if (this.target && this.singleSelect) {\n this.target.value = this._displayValue;\n }\n\n this.setFormValue();\n this.updateValidity();\n this.setInvalidState();\n\n await this.updateComplete;\n this.list.requestUpdate();\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.updateValidity();\n }\n\n /* alternateName: focusComponent */\n /** Sets focus on the component. */\n public override focus(options?: FocusOptions) {\n this.target.focus(options);\n }\n\n /* alternateName: blurComponent */\n /** Removes focus from the component. */\n public override blur() {\n this.target.blur();\n super.blur();\n }\n\n protected normalizeSelection(items: Item<T> | Item<T>[] = []): Item<T>[] {\n return Array.isArray(items) ? items : [items];\n }\n\n /**\n * Returns the current selection as an array of objects as provided in the `data` source.\n */\n public get selection(): Array<T> {\n return Array.from(this.selectionController.selected.values());\n }\n\n /**\n * Selects option(s) in the list by either reference or valueKey.\n * If not argument is provided all items will be selected.\n * @param { Item<T> | Items<T> } items - One or more items to be selected. Multiple items should be passed as an array.\n * When valueKey is specified, the corresponding value should be used in place of the item reference.\n * @example\n * ```typescript\n * const combo<IgcComboComponent<T>> = document.querySelector('igc-combo');\n *\n * // Select one item at a time by reference when valueKey is not specified.\n * combo.select(combo.data[0]);\n *\n * // Select multiple items at a time by reference when valueKey is not specified.\n * combo.select([combo.data[0], combo.data[1]]);\n *\n * // Select one item at a time when valueKey is specified.\n * combo.select('BG01');\n *\n * // Select multiple items at a time when valueKey is specified.\n * combo.select(['BG01', 'BG02']);\n * ```\n */\n public select(items?: Item<T> | Item<T>[]) {\n const _items = this.normalizeSelection(items);\n this.selectionController.select(_items, false);\n this.updateValue();\n }\n\n /**\n * Deselects option(s) in the list by either reference or valueKey.\n * If not argument is provided all items will be deselected.\n * @param { Item<T> | Items<T> } items - One or more items to be deselected. Multiple items should be passed as an array.\n * When valueKey is specified, the corresponding value should be used in place of the item reference.\n * @example\n * ```typescript\n * const combo<IgcComboComponent<T>> = document.querySelector('igc-combo');\n *\n * // Deselect one item at a time by reference when valueKey is not specified.\n * combo.deselect(combo.data[0]);\n *\n * // Deselect multiple items at a time by reference when valueKey is not specified.\n * combo.deselect([combo.data[0], combo.data[1]]);\n *\n * // Deselect one item at a time when valueKey is specified.\n * combo.deselect('BG01');\n *\n * // Deselect multiple items at a time when valueKey is specified.\n * combo.deselect(['BG01', 'BG02']);\n * ```\n */\n public deselect(items?: Item<T> | Item<T>[]) {\n const _items = this.normalizeSelection(items);\n this.selectionController.deselect(_items, false);\n this.updateValue();\n }\n\n protected async handleMainInput(e: CustomEvent) {\n this._show();\n this.dataController.searchTerm = e.detail;\n\n // wait for the dataState to update after filtering\n await this.updateComplete;\n\n const matchIndex = this.dataState.findIndex((i) => !i.header);\n this.navigationController.active = e.detail.length > 0 ? matchIndex : -1;\n\n // update the list after changing the active item\n this.list.requestUpdate();\n\n // clear the selection upon typing\n this.clearSingleSelection();\n }\n\n protected handleSearchInput(e: CustomEvent) {\n this.dataController.searchTerm = e.detail;\n }\n\n protected handleOpening() {\n const args = { cancelable: true };\n return this.emitEvent('igcOpening', args);\n }\n\n protected handleClosing(): boolean {\n const args = { cancelable: true };\n return this.emitEvent('igcClosing', args);\n }\n\n protected async _show(emit = true) {\n if (this.open) return;\n if (emit && !this.handleOpening()) return;\n this.open = true;\n\n await this.updateComplete;\n emit && this.emitEvent('igcOpened');\n\n if (!this.singleSelect) {\n this.list.focus();\n }\n\n if (!this.autofocusList) {\n this.input.focus();\n }\n }\n\n /** Shows the list of options. */\n public show() {\n this._show(false);\n }\n\n protected async _hide(emit = true) {\n if (!this.open) return;\n if (emit && !this.handleClosing()) return;\n this.open = false;\n\n await this.updateComplete;\n emit && this.emitEvent('igcClosed');\n this.navigationController.active = -1;\n }\n\n /** Hides the list of options. */\n public hide() {\n this._hide(false);\n }\n\n /** @hidden @internal */\n public _toggle(emit = true) {\n this.open ? this._hide(emit) : this._show(emit);\n }\n\n /** Toggles the list of options. */\n public toggle() {\n this._toggle(false);\n }\n\n protected itemRenderer: ComboRenderFunction<T> = (\n item: ComboRecord<T>,\n index: number\n ): TemplateResult => {\n const record = item;\n const dataItem = this.data.at(record.dataIndex);\n const active = this.navigationController.active === index;\n const selected = this.selectionController.selected.has(dataItem!);\n const headerTemplate = html`<igc-combo-header part=\"group-header\"\n >${this.groupHeaderTemplate({ item: record.value })}</igc-combo-header\n >`;\n\n const itemPosition = index + 1;\n const itemId = this.id\n ? `${this.id}-item-${itemPosition}`\n : `item-${itemPosition}`;\n\n if (active) {\n this._activeDescendant = itemId;\n }\n\n const itemTemplate = html`<igc-combo-item\n id=${itemId}\n part=${partNameMap({ item: true, selected, active })}\n aria-setsize=${this.dataState.length}\n aria-posinset=${itemPosition}\n exportparts=\"checkbox, checkbox-indicator, checked\"\n @click=${this.itemClickHandler.bind(this)}\n .index=${index}\n ?active=${active}\n ?selected=${selected}\n ?hide-checkbox=${this.singleSelect}\n >${this.itemTemplate({ item: record.value })}</igc-combo-item\n >`;\n\n return html`${this.groupKey && record.header\n ? headerTemplate\n : itemTemplate}`;\n };\n\n protected listKeydownHandler(event: KeyboardEvent) {\n const target = event\n .composedPath()\n .find(\n (el) => el instanceof IgcComboListComponent\n ) as IgcComboListComponent;\n\n if (target) {\n this.navigationController.navigateList(event, target);\n }\n }\n\n protected itemClickHandler(event: MouseEvent) {\n const input = this.singleSelect ? this.target : this.input;\n\n const target = event\n .composedPath()\n .find(\n (el) => el instanceof IgcComboItemComponent\n ) as IgcComboItemComponent;\n\n this.toggleSelect(target.index);\n input.focus();\n\n if (this.singleSelect) {\n this._hide();\n }\n }\n\n protected toggleSelect(index: number) {\n const { dataIndex } = this.dataState.at(index)!;\n\n this.selectionController.changeSelection(dataIndex);\n this.navigationController.active = index;\n this.updateValue();\n }\n\n protected selectByIndex(index: number) {\n const { dataIndex } = this.dataState.at(index)!;\n\n this.selectionController.selectByIndex(dataIndex);\n this.navigationController.active = index;\n this.updateValue();\n }\n\n protected navigateTo(item: T) {\n this.navigationController.navigateTo(item, this.list);\n }\n\n protected clearSingleSelection() {\n const { selected } = this.selectionController;\n const selection = selected.values().next().value;\n\n if (selection) {\n const item = this.valueKey ? selection[this.valueKey] : selection;\n this.selectionController.deselect([item], selected.size > 0);\n this._value = [];\n }\n }\n\n protected handleClearIconClick(e: MouseEvent) {\n e.stopPropagation();\n\n if (this.singleSelect) {\n this.resetSearchTerm();\n this.clearSingleSelection();\n } else {\n this.selectionController.deselect([], true);\n }\n\n this.updateValue();\n this.navigationController.active = -1;\n }\n\n protected handleMainInputKeydown(e: KeyboardEvent) {\n this.navigationController.navigateMainInput(e, this.list);\n }\n\n protected handleSearchInputKeydown(e: KeyboardEvent) {\n this.navigationController.navigateSearchInput(e, this.list);\n }\n\n protected toggleCaseSensitivity() {\n this.filteringOptions = {\n caseSensitive: !this.filteringOptions.caseSensitive,\n };\n }\n\n protected get hasPrefixes() {\n return this.inputPrefix.length > 0;\n }\n\n protected get hasSuffixes() {\n return this.inputSuffix.length > 0;\n }\n\n private _stopPropagation(e: Event) {\n e.stopPropagation();\n }\n\n private renderToggleIcon() {\n const openIcon =\n this[themeSymbol] === 'material' ? 'keyboard_arrow_up' : 'arrow_drop_up';\n const closeIcon =\n this[themeSymbol] === 'material'\n ? 'keyboard_arrow_down'\n : 'arrow_drop_down';\n\n return html`\n <span\n slot=\"suffix\"\n part=\"${partNameMap({\n 'toggle-icon': true,\n filled: this.value.length > 0,\n })}\"\n >\n <slot name=\"toggle-icon\">\n <igc-icon\n name=${this.open ? openIcon : closeIcon}\n collection=\"internal\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>\n `;\n }\n\n private renderClearIcon() {\n const { selected } = this.selectionController;\n const icon = this[themeSymbol] === 'material' ? 'chip_cancel' : 'clear';\n\n return html`<span\n slot=\"suffix\"\n part=\"clear-icon\"\n @click=${this.handleClearIconClick}\n ?hidden=${selected.size === 0}\n >\n <slot name=\"clear-icon\">\n <igc-icon\n name=\"${icon}\"\n collection=\"internal\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>`;\n }\n\n private renderMainInput() {\n return html`<igc-input\n id=\"target\"\n slot=\"anchor\"\n role=\"combobox\"\n aria-controls=\"dropdown\"\n aria-owns=\"dropdown\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-describedby=\"helper-text\"\n aria-disabled=${this.disabled}\n exportparts=\"container: input, input: native-input, label, prefix, suffix\"\n @click=${(e: MouseEvent) => {\n e.preventDefault();\n this._toggle(true);\n }}\n placeholder=${ifDefined(this.placeholder)}\n label=${ifDefined(this.label)}\n @igcChange=${this._stopPropagation}\n @igcFocus=${(e: Event) => {\n e.stopPropagation();\n\n requestAnimationFrame(() => {\n this.target.select();\n });\n }}\n @igcBlur=${this._stopPropagation}\n @igcInput=${this.handleMainInput}\n @keydown=${this.handleMainInputKeydown}\n .value=${this._displayValue}\n .disabled=${this.disabled}\n .required=${this.required}\n .invalid=${live(this.invalid)}\n .outlined=${this.outlined}\n .autofocus=${this.autofocus}\n ?readonly=${!this.singleSelect}\n >\n <span slot=${this.hasPrefixes && 'prefix'}>\n <slot name=\"prefix\"></slot>\n </span>\n ${this.renderClearIcon()}\n <span slot=${this.hasSuffixes && 'suffix'}>\n <slot name=\"suffix\"></slot>\n </span>\n ${this.renderToggleIcon()}\n </igc-input>`;\n }\n\n private renderSearchInput() {\n return html`<div\n part=\"filter-input\"\n ?hidden=${this.disableFiltering || this.singleSelect}\n >\n <igc-input\n .value=${this.dataController.searchTerm}\n part=\"search-input\"\n placeholder=${this.placeholderSearch}\n exportparts=\"input: search-input\"\n @igcFocus=${this._stopPropagation}\n @igcBlur=${this._stopPropagation}\n @igcInput=${this.handleSearchInput}\n @keydown=${this.handleSearchInputKeydown}\n >\n <igc-icon\n slot=${this.caseSensitiveIcon && 'suffix'}\n name=\"case_sensitive\"\n collection=\"internal\"\n part=${partNameMap({\n 'case-icon': true,\n active: this.filteringOptions.caseSensitive ?? false,\n })}\n @click=${this.toggleCaseSensitivity}\n ></igc-icon>\n </igc-input>\n </div>`;\n }\n\n private renderEmptyTemplate() {\n return html`<div part=\"empty\" ?hidden=${this.dataState.length > 0}>\n <slot name=\"empty\">The list is empty</slot>\n </div>`;\n }\n\n private renderList() {\n const hasItems = this.dataState.length > 0;\n\n return html`<div\n .inert=${!this.open}\n @keydown=${this.listKeydownHandler}\n part=\"list-wrapper\"\n >\n ${this.renderSearchInput()}\n <div part=\"header\">\n <slot name=\"header\"></slot>\n </div>\n <igc-combo-list\n aria-multiselectable=${!this.singleSelect}\n id=\"dropdown\"\n part=\"list\"\n role=\"listbox\"\n tabindex=\"0\"\n aria-labelledby=\"target\"\n aria-activedescendant=${ifDefined(this._activeDescendant)}\n .items=${this.dataState}\n .renderItem=${this.itemRenderer}\n ?hidden=${!hasItems}\n >\n </igc-combo-list>\n ${this.renderEmptyTemplate()}\n <div part=\"footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>`;\n }\n\n private renderHelperText() {\n return html`<div\n id=\"helper-text\"\n part=\"helper-text\"\n ?hidden=\"${this.helperText.length === 0}\"\n >\n <slot name=\"helper-text\"></slot>\n </div>`;\n }\n\n protected override render() {\n return html`\n <igc-popover ?open=${this.open} flip shift same-width>\n ${this.renderMainInput()} ${this.renderList()}\n </igc-popover>\n ${this.renderHelperText()}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-combo': IgcComboComponent<object>;\n }\n}\n"]}
1
+ {"version":3,"file":"combo.js","sourceRoot":"","sources":["../../../src/components/combo/combo.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, type TemplateResult, html } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { addRootClickHandler } from '../common/controllers/root-click.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { blazorIndirectRender } from '../common/decorators/blazorIndirectRender.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/form-associated-required.js';\nimport { partNameMap } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcInputComponent from '../input/input.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport IgcComboHeaderComponent from './combo-header.js';\nimport IgcComboItemComponent from './combo-item.js';\nimport IgcComboListComponent from './combo-list.js';\nimport { DataController } from './controllers/data.js';\nimport { NavigationController } from './controllers/navigation.js';\nimport { SelectionController } from './controllers/selection.js';\nimport { styles } from './themes/combo.base.css.js';\nimport { styles as shared } from './themes/shared/combo.common.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n ComboItemTemplate,\n ComboRecord,\n ComboRenderFunction,\n ComboValue,\n FilteringOptions,\n GroupingDirection,\n IgcComboEventMap,\n Item,\n Keys,\n} from './types.js';\nimport { comboValidators } from './validators.js';\n\n/* blazorSupportsVisualChildren */\n/**\n * The Combo component is similar to the Select component in that it provides a list of options from which the user can make a selection.\n * In contrast to the Select component, the Combo component displays all options in a virtualized list of items,\n * meaning the combo box can simultaneously show thousands of options, where one or more options can be selected.\n * Additionally, users can create custom item templates, allowing for robust data visualization.\n * The Combo component features case-sensitive filtering, grouping, complex data binding, dynamic addition of values and more.\n *\n * @element igc-combo\n *\n * @slot prefix - Renders content before the input of the combo.\n * @slot suffix - Renders content after the input of the combo.\n * @slot header - Renders a container before the list of options of the combo.\n * @slot footer - Renders a container after the list of options of the combo.\n * @slot helper-text - Renders content below the input of the combo.\n * @slot toggle-icon - Renders content inside the suffix container of the combo.\n * @slot clear-icon - Renders content inside the suffix container of the combo.\n *\n * @fires igcChange - Emitted when the control's selection has changed.\n * @fires igcOpening - Emitted just before the list of options is opened.\n * @fires igcOpened - Emitted after the list of options is opened.\n * @fires igcClosing - Emitter just before the list of options is closed.\n * @fires igcClosed - Emitted after the list of options is closed.\n *\n * @csspart label - The encapsulated text label of the combo.\n * @csspart input - The main input field of the combo.\n * @csspart native-input - The native input of the main input field of the combo.\n * @csspart prefix - The prefix wrapper of the combo.\n * @csspart suffix - The suffix wrapper of the combo.\n * @csspart toggle-icon - The toggle icon wrapper of the combo.\n * @csspart clear-icon - The clear icon wrapper of the combo.\n * @csspart case-icon - The case icon wrapper of the combo.\n * @csspart helper-text - The helper text wrapper of the combo.\n * @csspart search-input - The search input field of the combo.\n * @csspart list-wrapper - The list of options wrapper of the combo.\n * @csspart list - The list of options box of the combo.\n * @csspart item - Represents each item in the list of options of the combo.\n * @csspart group-header - Represents each header in the list of options of the combo.\n * @csspart active - Appended to the item parts list when the item is active of the combo.\n * @csspart selected - Appended to the item parts list when the item is selected of the combo.\n * @csspart checkbox - Represents each checkbox of each list item of the combo.\n * @csspart checkbox-indicator - Represents the checkbox indicator of each list item of the combo.\n * @csspart checked - Appended to checkbox parts list when checkbox is checked in the combo.\n * @csspart header - The container holding the header content of the combo.\n * @csspart footer - The container holding the footer content of the combo.\n * @csspart empty - The container holding the empty content of the combo.\n */\n@themes(all)\n@blazorAdditionalDependencies('IgcIconComponent, IgcInputComponent')\n@blazorIndirectRender\nexport default class IgcComboComponent<\n T extends object = any,\n> extends FormAssociatedRequiredMixin(\n EventEmitterMixin<IgcComboEventMap, Constructor<LitElement>>(LitElement)\n) {\n public static readonly tagName = 'igc-combo';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcComboComponent,\n IgcIconComponent,\n IgcComboListComponent,\n IgcComboItemComponent,\n IgcComboHeaderComponent,\n IgcInputComponent,\n IgcPopoverComponent\n );\n }\n\n private _value: ComboValue<T>[] = [];\n\n @state()\n private _activeDescendant!: string;\n\n @state()\n private _displayValue = '';\n\n private _filteringOptions: FilteringOptions<T> = {\n filterKey: this.displayKey,\n caseSensitive: false,\n matchDiacritics: false,\n };\n\n protected override get __validators() {\n return comboValidators;\n }\n\n protected navigationController = new NavigationController<T>(this);\n protected selectionController = new SelectionController<T>(this);\n protected dataController = new DataController<T>(this);\n\n @queryAssignedElements({ slot: 'helper-text' })\n protected helperText!: Array<HTMLElement>;\n\n @queryAssignedElements({ slot: 'suffix' })\n protected inputSuffix!: Array<HTMLElement>;\n\n @queryAssignedElements({ slot: 'prefix' })\n protected inputPrefix!: Array<HTMLElement>;\n\n @query('[part=\"search-input\"]')\n protected input!: IgcInputComponent;\n\n @query('igc-input#target')\n private target!: IgcInputComponent;\n\n @query('igc-combo-list')\n private list!: IgcComboListComponent;\n\n /** The data source used to generate the list of options. */\n /* treatAsRef */\n @property({ attribute: false })\n public data: Array<T> = [];\n\n /**\n * The outlined attribute of the control.\n * @attr outlined\n */\n @property({ reflect: true, type: Boolean })\n public outlined = false;\n\n /**\n * Enables single selection mode and moves item filtering to the main input.\n * @attr single-select\n */\n @property({ attribute: 'single-select', reflect: true, type: Boolean })\n public singleSelect = false;\n\n /**\n * The autofocus attribute of the control.\n * @attr autofocus\n */\n @property({ type: Boolean })\n public override autofocus!: boolean;\n\n /**\n * Focuses the list of options when the menu opens.\n * @attr autofocus-list\n */\n @property({ attribute: 'autofocus-list', type: Boolean })\n public autofocusList = false;\n\n /**\n * The label attribute of the control.\n * @attr label\n */\n @property({ type: String })\n public label!: string;\n\n /**\n * The placeholder attribute of the control.\n * @attr placeholder\n */\n @property({ type: String })\n public placeholder!: string;\n\n /**\n * The placeholder attribute of the search input.\n * @attr placeholder-search\n */\n @property({ attribute: 'placeholder-search', type: String })\n public placeholderSearch = 'Search';\n\n /**\n * Sets the open state of the component.\n * @attr open\n */\n @property({ type: Boolean })\n public open = false;\n\n /**\n * The key in the data source used when selecting items.\n * @attr value-key\n */\n @property({ attribute: 'value-key', reflect: false })\n public valueKey?: Keys<T>;\n\n /**\n * The key in the data source used to display items in the list.\n * @attr display-key\n */\n @property({ attribute: 'display-key', reflect: false })\n public displayKey?: Keys<T> = this.valueKey;\n\n /**\n * The key in the data source used to group items in the list.\n * @attr group-key\n */\n @property({ attribute: 'group-key', reflect: false })\n public groupKey?: Keys<T> = this.displayKey;\n\n /**\n * Sorts the items in each group by ascending or descending order.\n * @attr group-sorting\n * @type {\"asc\" | \"desc\" | \"none\"}\n */\n @property({ attribute: 'group-sorting', reflect: false })\n public groupSorting: GroupingDirection = 'asc';\n\n /**\n * An object that configures the filtering of the combo.\n * @attr filtering-options\n * @type {FilteringOptions<T>}\n * @param filterKey - The key in the data source used when filtering the list of options.\n * @param caseSensitive - Determines whether the filtering operation should be case sensitive.\n * @param matchDiacritics -If true, the filter distinguishes between accented letters and their base letters.\n */\n @property({ attribute: 'filtering-options', type: Object })\n public get filteringOptions(): FilteringOptions<T> {\n return this._filteringOptions;\n }\n\n public set filteringOptions(value: Partial<FilteringOptions<T>>) {\n this._filteringOptions = { ...this._filteringOptions, ...value };\n this.requestUpdate('pipeline');\n }\n\n /**\n * Enables the case sensitive search icon in the filtering input.\n * @attr case-sensitive-icon\n */\n @property({ type: Boolean, attribute: 'case-sensitive-icon', reflect: false })\n public caseSensitiveIcon = false;\n\n /**\n * Disables the filtering of the list of options.\n * @attr disable-filtering\n */\n @property({ type: Boolean, attribute: 'disable-filtering', reflect: false })\n public disableFiltering = false;\n\n /* blazorSuppress */\n /**\n * The template used for the content of each combo item.\n * @type {ComboItemTemplate<T>}\n */\n @property({ attribute: false })\n public itemTemplate: ComboItemTemplate<T> = ({ item }) => {\n const template = this.displayKey ? `${item[this.displayKey]}` : `${item}`;\n return html`${template}`;\n };\n\n /* blazorSuppress */\n /**\n * The template used for the content of each combo group header.\n * @type {ComboItemTemplate<T>}\n */\n @property({ attribute: false })\n public groupHeaderTemplate: ComboItemTemplate<T> = ({ item }) => {\n return html`${this.groupKey && item[this.groupKey]}`;\n };\n\n @state()\n protected dataState: Array<ComboRecord<T>> = [];\n\n @watch('data')\n protected dataChanged() {\n if (this.data.length === 0) return;\n this.dataState = structuredClone(this.data) as ComboRecord<T>[];\n\n if (this.hasUpdated) {\n this.pipeline();\n }\n\n this.requestUpdate('value');\n }\n\n @watch('valueKey')\n protected updateDisplayKey() {\n this.displayKey = this.displayKey ?? this.valueKey;\n }\n\n @watch('displayKey')\n protected updateFilterKey() {\n if (!this.filteringOptions.filterKey) {\n this.filteringOptions = { filterKey: this.displayKey };\n }\n }\n\n @watch('groupKey')\n @watch('groupSorting')\n @watch('pipeline')\n protected async pipeline() {\n this.dataState = await this.dataController.apply([...this.data]);\n }\n\n @watch('open')\n protected toggleDirectiveChange() {\n this._rootClickController.update();\n }\n\n @watch('disableFiltering')\n protected updateOnDisableFiltering() {\n this.resetSearchTerm();\n this.pipeline();\n }\n\n private _rootClickController = addRootClickHandler(this, {\n hideCallback: async () => {\n if (!this.handleClosing()) return;\n this.open = false;\n\n await this.updateComplete;\n this.emitEvent('igcClosed');\n },\n });\n\n constructor() {\n super();\n\n this.addEventListener('blur', () => {\n const { selected } = this.selectionController;\n\n if (selected.size === 0) {\n this._displayValue = '';\n this.resetSearchTerm();\n }\n\n this.invalid = !this.checkValidity();\n });\n\n this.addEventListener(\n 'keydown',\n this.navigationController.navigateHost.bind(this.navigationController)\n );\n }\n\n protected resetSearchTerm() {\n this.dataController.searchTerm = '';\n }\n\n @watch('singleSelect', { waitUntilFirstUpdate: true })\n protected resetState() {\n this.selectionController.selected.clear();\n this.updateValue();\n this.resetSearchTerm();\n this.navigationController.active = -1;\n }\n\n @watch('required', { waitUntilFirstUpdate: true })\n protected override async requiredChange() {\n // Wait for the underlying igc-input to update\n await this.updateComplete;\n\n this.updateValidity();\n this.invalid = !this.checkValidity();\n }\n\n @watch('value')\n protected selectItems() {\n if (!this._value || this.value.length === 0) {\n this.selectionController.deselect([]);\n } else {\n this.selectionController.deselect([]);\n this.selectionController.select(this._value as Item<T>[]);\n }\n\n this.updateValue();\n }\n\n /**\n * Sets the value (selected items). The passed value must be a valid JSON array.\n * If the data source is an array of complex objects, the `valueKey` attribute must be set.\n * Note that when `displayKey` is not explicitly set, it will fall back to the value of `valueKey`.\n *\n * @attr value\n *\n * @example\n * ```tsx\n * <igc-combo\n * .data=${[\n * {\n * id: 'BG01',\n * name: 'Sofia'\n * },\n * {\n * id: 'BG02',\n * name: 'Plovdiv'\n * }\n * ]}\n * display-key='name'\n * value-key='id'\n * value='[\"BG01\", \"BG02\"]'>\n * </igc-combo>\n * ```\n */\n /* blazorPrimitiveValue */\n /* blazorByValueArray */\n /* blazorGenericType */\n /* @tsTwoWayProperty (true, \"Change\", \"Detail.NewValue\", false) */\n public set value(items: ComboValue<T>[]) {\n const oldValue = this._value;\n this._value = items;\n this.requestUpdate('value', oldValue);\n }\n\n /**\n * Returns the current selection as a list of comma separated values,\n * represented by the value key, when provided.\n */\n @property({ attribute: true, type: Array })\n public get value(): ComboValue<T>[] {\n return this._value;\n }\n\n protected override setFormValue(): void {\n if (!this.name) {\n return;\n }\n\n const items = this._value;\n\n if (items.length < 1) {\n super.setFormValue(null);\n return;\n }\n\n const data = new FormData();\n\n if (this.singleSelect) {\n data.set(this.name, `${items[0]}`);\n } else {\n for (const item of items) {\n data.append(this.name, `${item}`);\n }\n }\n\n super.setFormValue(data);\n }\n\n protected async updateValue() {\n if (this.data.length === 0) return;\n const selected = Array.from(this.selectionController.selected);\n\n this._value = this.selectionController.getValue(selected, this.valueKey!);\n this._displayValue = this.selectionController\n .getValue(selected, this.displayKey!)\n .join(', ');\n\n if (this.target && this.singleSelect) {\n this.target.value = this._displayValue;\n }\n\n this.setFormValue();\n this.updateValidity();\n this.setInvalidState();\n\n await this.updateComplete;\n this.list.requestUpdate();\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.updateValidity();\n }\n\n /* alternateName: focusComponent */\n /** Sets focus on the component. */\n public override focus(options?: FocusOptions) {\n this.target.focus(options);\n }\n\n /* alternateName: blurComponent */\n /** Removes focus from the component. */\n public override blur() {\n this.target.blur();\n super.blur();\n }\n\n protected normalizeSelection(items: Item<T> | Item<T>[] = []): Item<T>[] {\n return Array.isArray(items) ? items : [items];\n }\n\n /**\n * Returns the current selection as an array of objects as provided in the `data` source.\n */\n public get selection(): Array<T> {\n return Array.from(this.selectionController.selected.values());\n }\n\n /**\n * Selects option(s) in the list by either reference or valueKey.\n * If not argument is provided all items will be selected.\n * @param { Item<T> | Items<T> } items - One or more items to be selected. Multiple items should be passed as an array.\n * When valueKey is specified, the corresponding value should be used in place of the item reference.\n * @example\n * ```typescript\n * const combo<IgcComboComponent<T>> = document.querySelector('igc-combo');\n *\n * // Select one item at a time by reference when valueKey is not specified.\n * combo.select(combo.data[0]);\n *\n * // Select multiple items at a time by reference when valueKey is not specified.\n * combo.select([combo.data[0], combo.data[1]]);\n *\n * // Select one item at a time when valueKey is specified.\n * combo.select('BG01');\n *\n * // Select multiple items at a time when valueKey is specified.\n * combo.select(['BG01', 'BG02']);\n * ```\n */\n public select(items?: Item<T> | Item<T>[]) {\n const _items = this.normalizeSelection(items);\n this.selectionController.select(_items, false);\n this.updateValue();\n }\n\n /**\n * Deselects option(s) in the list by either reference or valueKey.\n * If not argument is provided all items will be deselected.\n * @param { Item<T> | Items<T> } items - One or more items to be deselected. Multiple items should be passed as an array.\n * When valueKey is specified, the corresponding value should be used in place of the item reference.\n * @example\n * ```typescript\n * const combo<IgcComboComponent<T>> = document.querySelector('igc-combo');\n *\n * // Deselect one item at a time by reference when valueKey is not specified.\n * combo.deselect(combo.data[0]);\n *\n * // Deselect multiple items at a time by reference when valueKey is not specified.\n * combo.deselect([combo.data[0], combo.data[1]]);\n *\n * // Deselect one item at a time when valueKey is specified.\n * combo.deselect('BG01');\n *\n * // Deselect multiple items at a time when valueKey is specified.\n * combo.deselect(['BG01', 'BG02']);\n * ```\n */\n public deselect(items?: Item<T> | Item<T>[]) {\n const _items = this.normalizeSelection(items);\n this.selectionController.deselect(_items, false);\n this.updateValue();\n }\n\n protected async handleMainInput(e: CustomEvent) {\n this._show();\n this.dataController.searchTerm = e.detail;\n\n // wait for the dataState to update after filtering\n await this.updateComplete;\n\n const matchIndex = this.dataState.findIndex((i) => !i.header);\n this.navigationController.active = e.detail.length > 0 ? matchIndex : -1;\n\n // update the list after changing the active item\n this.list.requestUpdate();\n\n // clear the selection upon typing\n this.clearSingleSelection();\n }\n\n protected handleSearchInput(e: CustomEvent) {\n this.dataController.searchTerm = e.detail;\n }\n\n protected handleOpening() {\n return this.emitEvent('igcOpening', { cancelable: true });\n }\n\n protected handleClosing(): boolean {\n return this.emitEvent('igcClosing', { cancelable: true });\n }\n\n protected async _show(emitEvent = true) {\n if (this.open || (emitEvent && !this.handleOpening())) {\n return false;\n }\n\n this.open = true;\n await this.updateComplete;\n\n if (emitEvent) {\n this.emitEvent('igcOpened');\n }\n\n if (!this.singleSelect) {\n this.list.focus();\n }\n\n if (!this.autofocusList) {\n this.input.focus();\n }\n\n return true;\n }\n\n /** Shows the list of options. */\n public async show(): Promise<boolean> {\n return this._show(false);\n }\n\n protected async _hide(emitEvent = true) {\n if (!this.open || (emitEvent && !this.handleClosing())) {\n return false;\n }\n\n this.open = false;\n await this.updateComplete;\n\n if (emitEvent) {\n this.emitEvent('igcClosed');\n }\n this.navigationController.active = -1;\n return true;\n }\n\n /** Hides the list of options. */\n public async hide(): Promise<boolean> {\n return this._hide(false);\n }\n\n protected _toggle(emit = true) {\n return this.open ? this._hide(emit) : this._show(emit);\n }\n\n /** Toggles the list of options. */\n public async toggle(): Promise<boolean> {\n return this._toggle(false);\n }\n\n protected itemRenderer: ComboRenderFunction<T> = (\n item: ComboRecord<T>,\n index: number\n ): TemplateResult => {\n const record = item;\n const dataItem = this.data.at(record.dataIndex);\n const active = this.navigationController.active === index;\n const selected = this.selectionController.selected.has(dataItem!);\n const headerTemplate = html`<igc-combo-header part=\"group-header\"\n >${this.groupHeaderTemplate({ item: record.value })}</igc-combo-header\n >`;\n\n const itemPosition = index + 1;\n const itemId = this.id\n ? `${this.id}-item-${itemPosition}`\n : `item-${itemPosition}`;\n\n if (active) {\n this._activeDescendant = itemId;\n }\n\n const itemTemplate = html`<igc-combo-item\n id=${itemId}\n part=${partNameMap({ item: true, selected, active })}\n aria-setsize=${this.dataState.length}\n aria-posinset=${itemPosition}\n exportparts=\"checkbox, checkbox-indicator, checked\"\n @click=${this.itemClickHandler.bind(this)}\n .index=${index}\n ?active=${active}\n ?selected=${selected}\n ?hide-checkbox=${this.singleSelect}\n >${this.itemTemplate({ item: record.value })}</igc-combo-item\n >`;\n\n return html`${this.groupKey && record.header\n ? headerTemplate\n : itemTemplate}`;\n };\n\n protected listKeydownHandler(event: KeyboardEvent) {\n const target = event\n .composedPath()\n .find(\n (el) => el instanceof IgcComboListComponent\n ) as IgcComboListComponent;\n\n if (target) {\n this.navigationController.navigateList(event, target);\n }\n }\n\n protected itemClickHandler(event: MouseEvent) {\n const input = this.singleSelect ? this.target : this.input;\n\n const target = event\n .composedPath()\n .find(\n (el) => el instanceof IgcComboItemComponent\n ) as IgcComboItemComponent;\n\n this.toggleSelect(target.index);\n input.focus();\n\n if (this.singleSelect) {\n this._hide();\n }\n }\n\n protected toggleSelect(index: number) {\n const { dataIndex } = this.dataState.at(index)!;\n\n this.selectionController.changeSelection(dataIndex);\n this.navigationController.active = index;\n this.updateValue();\n }\n\n protected selectByIndex(index: number) {\n const { dataIndex } = this.dataState.at(index)!;\n\n this.selectionController.selectByIndex(dataIndex);\n this.navigationController.active = index;\n this.updateValue();\n }\n\n protected navigateTo(item: T) {\n this.navigationController.navigateTo(item, this.list);\n }\n\n protected clearSingleSelection() {\n const { selected } = this.selectionController;\n const selection = selected.values().next().value;\n\n if (selection) {\n const item = this.valueKey ? selection[this.valueKey] : selection;\n this.selectionController.deselect([item], selected.size > 0);\n this._value = [];\n }\n }\n\n protected handleClearIconClick(e: MouseEvent) {\n e.stopPropagation();\n\n if (this.singleSelect) {\n this.resetSearchTerm();\n this.clearSingleSelection();\n } else {\n this.selectionController.deselect([], true);\n }\n\n this.updateValue();\n this.navigationController.active = -1;\n }\n\n protected handleMainInputKeydown(e: KeyboardEvent) {\n this.navigationController.navigateMainInput(e, this.list);\n }\n\n protected handleSearchInputKeydown(e: KeyboardEvent) {\n this.navigationController.navigateSearchInput(e, this.list);\n }\n\n protected toggleCaseSensitivity() {\n this.filteringOptions = {\n caseSensitive: !this.filteringOptions.caseSensitive,\n };\n }\n\n protected get hasPrefixes() {\n return this.inputPrefix.length > 0;\n }\n\n protected get hasSuffixes() {\n return this.inputSuffix.length > 0;\n }\n\n private _stopPropagation(e: Event) {\n e.stopPropagation();\n }\n\n private renderToggleIcon() {\n return html`\n <span\n slot=\"suffix\"\n part=\"${partNameMap({\n 'toggle-icon': true,\n filled: this.value.length > 0,\n })}\"\n >\n <slot name=\"toggle-icon\">\n <igc-icon\n name=${this.open ? 'input_collapse' : 'input_expand'}\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>\n `;\n }\n\n private renderClearIcon() {\n const { selected } = this.selectionController;\n\n return html`<span\n slot=\"suffix\"\n part=\"clear-icon\"\n @click=${this.handleClearIconClick}\n ?hidden=${selected.size === 0}\n >\n <slot name=\"clear-icon\">\n <igc-icon\n name=\"input_clear\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>`;\n }\n\n private renderMainInput() {\n return html`<igc-input\n id=\"target\"\n slot=\"anchor\"\n role=\"combobox\"\n aria-controls=\"dropdown\"\n aria-owns=\"dropdown\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-describedby=\"helper-text\"\n aria-disabled=${this.disabled}\n exportparts=\"container: input, input: native-input, label, prefix, suffix\"\n @click=${(e: MouseEvent) => {\n e.preventDefault();\n this._toggle(true);\n }}\n placeholder=${ifDefined(this.placeholder)}\n label=${ifDefined(this.label)}\n @igcChange=${this._stopPropagation}\n @focus=${() => {\n requestAnimationFrame(() => {\n this.target.select();\n });\n }}\n @igcInput=${this.handleMainInput}\n @keydown=${this.handleMainInputKeydown}\n .value=${this._displayValue}\n .disabled=${this.disabled}\n .required=${this.required}\n .invalid=${live(this.invalid)}\n .outlined=${this.outlined}\n .autofocus=${this.autofocus}\n ?readonly=${!this.singleSelect}\n >\n <span slot=${this.hasPrefixes && 'prefix'}>\n <slot name=\"prefix\"></slot>\n </span>\n ${this.renderClearIcon()}\n <span slot=${this.hasSuffixes && 'suffix'}>\n <slot name=\"suffix\"></slot>\n </span>\n ${this.renderToggleIcon()}\n </igc-input>`;\n }\n\n private renderSearchInput() {\n return html`<div\n part=\"filter-input\"\n ?hidden=${this.disableFiltering || this.singleSelect}\n >\n <igc-input\n .value=${this.dataController.searchTerm}\n part=\"search-input\"\n placeholder=${this.placeholderSearch}\n exportparts=\"input: search-input\"\n @igcInput=${this.handleSearchInput}\n @keydown=${this.handleSearchInputKeydown}\n >\n <igc-icon\n slot=${this.caseSensitiveIcon && 'suffix'}\n name=\"case_sensitive\"\n collection=\"default\"\n part=${partNameMap({\n 'case-icon': true,\n active: this.filteringOptions.caseSensitive ?? false,\n })}\n @click=${this.toggleCaseSensitivity}\n ></igc-icon>\n </igc-input>\n </div>`;\n }\n\n private renderEmptyTemplate() {\n return html`<div part=\"empty\" ?hidden=${this.dataState.length > 0}>\n <slot name=\"empty\">The list is empty</slot>\n </div>`;\n }\n\n private renderList() {\n const hasItems = this.dataState.length > 0;\n\n return html`<div\n .inert=${!this.open}\n @keydown=${this.listKeydownHandler}\n part=\"list-wrapper\"\n >\n ${this.renderSearchInput()}\n <div part=\"header\">\n <slot name=\"header\"></slot>\n </div>\n <igc-combo-list\n aria-multiselectable=${!this.singleSelect}\n id=\"dropdown\"\n part=\"list\"\n role=\"listbox\"\n tabindex=\"0\"\n aria-labelledby=\"target\"\n aria-activedescendant=${ifDefined(this._activeDescendant)}\n .items=${this.dataState}\n .renderItem=${this.itemRenderer}\n ?hidden=${!hasItems}\n >\n </igc-combo-list>\n ${this.renderEmptyTemplate()}\n <div part=\"footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>`;\n }\n\n private renderHelperText() {\n return html`<div\n id=\"helper-text\"\n part=\"helper-text\"\n ?hidden=\"${this.helperText.length === 0}\"\n >\n <slot name=\"helper-text\"></slot>\n </div>`;\n }\n\n protected override render() {\n return html`\n <igc-popover ?open=${this.open} flip shift same-width>\n ${this.renderMainInput()} ${this.renderList()}\n </igc-popover>\n ${this.renderHelperText()}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-combo': IgcComboComponent<object>;\n }\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;pointer-events:none}::slotted(*){font:inherit}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;pointer-events:none}::slotted(*){font:inherit}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important}`;
3
3
  //# sourceMappingURL=combo-header.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"combo-header.base.css.js","sourceRoot":"","sources":["../../../../src/components/combo/themes/combo-header.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,0hDAA0hD,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;pointer-events:none}::slotted(*){font:inherit}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important}`;\n"]}
1
+ {"version":3,"file":"combo-header.base.css.js","sourceRoot":"","sources":["../../../../src/components/combo/themes/combo-header.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,0hDAA0hD,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;white-space:nowrap;position:relative;pointer-events:none}::slotted(*){font:inherit}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important}`;\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;white-space:nowrap;position:relative;cursor:pointer;outline-style:none;padding-inline:max(var(--is-large, 1)*max(1.5rem, -1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, --ig-spacing)),var(--is-medium, 1)*max(0.75rem, -1 * 0.75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, --ig-spacing)),var(--is-small, 1)*max(0.375rem, -1 * 0.375rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, --ig-spacing)));padding-block:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, --ig-spacing)),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, --ig-spacing)),var(--is-small, 1)*max(0.125rem, -1 * 0.125rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, --ig-spacing)))}:host([disabled]){cursor:default;pointer-events:none}::slotted(*){font:inherit}[part=content]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[part=prefix],[part=suffix]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}[name=prefix]::slotted(*){--component-size: var(--dropdown-size) !important;-webkit-margin-end:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)));margin-inline-end:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)))}[name=suffix]::slotted(*){--component-size: var(--dropdown-size) !important;-webkit-margin-start:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)));margin-inline-start:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)))}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important;gap:.5rem}igc-checkbox{pointer-events:none}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;white-space:nowrap;position:relative;cursor:pointer;outline-style:none;padding-inline:max(var(--is-large, 1)*max(1.5rem, -1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, --ig-spacing)),var(--is-medium, 1)*max(0.75rem, -1 * 0.75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, --ig-spacing)),var(--is-small, 1)*max(0.375rem, -1 * 0.375rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, --ig-spacing)));padding-block:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, --ig-spacing)),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, --ig-spacing)),var(--is-small, 1)*max(0.125rem, -1 * 0.125rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, --ig-spacing)))}:host([disabled]){cursor:default;pointer-events:none}::slotted(*){font:inherit}[part=content]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[part=prefix],[part=suffix]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}[name=prefix]::slotted(*){--component-size: var(--dropdown-size) !important;-webkit-margin-end:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)));margin-inline-end:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)))}[name=suffix]::slotted(*){--component-size: var(--dropdown-size) !important;-webkit-margin-start:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)));margin-inline-start:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)))}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important;gap:.5rem}igc-checkbox{pointer-events:none}`;
3
3
  //# sourceMappingURL=combo-item.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"combo-item.base.css.js","sourceRoot":"","sources":["../../../../src/components/combo/themes/combo-item.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,kuIAAkuI,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;white-space:nowrap;position:relative;cursor:pointer;outline-style:none;padding-inline:max(var(--is-large, 1)*max(1.5rem, -1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, --ig-spacing)),var(--is-medium, 1)*max(0.75rem, -1 * 0.75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, --ig-spacing)),var(--is-small, 1)*max(0.375rem, -1 * 0.375rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, --ig-spacing)));padding-block:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, --ig-spacing)),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, --ig-spacing)),var(--is-small, 1)*max(0.125rem, -1 * 0.125rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, --ig-spacing)))}:host([disabled]){cursor:default;pointer-events:none}::slotted(*){font:inherit}[part=content]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[part=prefix],[part=suffix]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}[name=prefix]::slotted(*){--component-size: var(--dropdown-size) !important;-webkit-margin-end:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)));margin-inline-end:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)))}[name=suffix]::slotted(*){--component-size: var(--dropdown-size) !important;-webkit-margin-start:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)));margin-inline-start:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)))}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important;gap:.5rem}igc-checkbox{pointer-events:none}`;\n"]}
1
+ {"version":3,"file":"combo-item.base.css.js","sourceRoot":"","sources":["../../../../src/components/combo/themes/combo-item.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,kuIAAkuI,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;white-space:nowrap;position:relative;cursor:pointer;outline-style:none;padding-inline:max(var(--is-large, 1)*max(1.5rem, -1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, --ig-spacing)),var(--is-medium, 1)*max(0.75rem, -1 * 0.75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, --ig-spacing)),var(--is-small, 1)*max(0.375rem, -1 * 0.375rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, --ig-spacing)));padding-block:max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, --ig-spacing)),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, --ig-spacing)),var(--is-small, 1)*max(0.125rem, -1 * 0.125rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, --ig-spacing)))}:host([disabled]){cursor:default;pointer-events:none}::slotted(*){font:inherit}[part=content]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[part=prefix],[part=suffix]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}[name=prefix]::slotted(*){--component-size: var(--dropdown-size) !important;-webkit-margin-end:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)));margin-inline-end:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)))}[name=suffix]::slotted(*){--component-size: var(--dropdown-size) !important;-webkit-margin-start:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)));margin-inline-start:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, --ig-spacing)),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, --ig-spacing)),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, --ig-spacing)))}:host{--component-size: var(--ig-size, var(--default-size));--default-size: var(--combo-size) !important;gap:.5rem}igc-checkbox{pointer-events:none}`;\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host([hidden]),[hidden]{display:none !important}:host{display:block;font-family:var(--ig-font-family)}:host igc-icon,:host ::slotted(igc-icon),:host igc-input:not([part=search-input]){--component-size: var(--combo-size) !important}:host>igc-input::part(input){text-overflow:ellipsis;cursor:pointer}:host(:not([single-select]))>igc-input::part(input)::-moz-selection{background:rgba(0,0,0,0)}:host(:not([single-select]))>igc-input::part(input)::selection{background:rgba(0,0,0,0)}[part=helper-text]{line-height:1}[part=helper-text] ::slotted([slot=helper-text]){font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom);line-height:inherit}[part=clear-icon],[part=toggle-icon],[part~=case-icon]{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer}[part=list-wrapper]{border-radius:clamp(0rem,calc(var(--ig-radius-factor, 1) * 0.25rem),0.25rem);width:100%;background:hsla(var(--ig-surface-500), var(--ig-surface-a));-webkit-box-shadow:var(--ig-elevation-8);box-shadow:var(--ig-elevation-8);overflow:hidden;outline-style:none}[part=list-wrapper] igc-input{--ig-size: var(--ig-size-small);--ig-theme: material}[part=list-wrapper] igc-input::part(container){background:rgba(0,0,0,0);-webkit-border-start:0;border-inline-start:0;border-inline-end-color:rgba(0,0,0,0);-webkit-border-before:0;border-block-start:0;border-radius:0}[part=list-wrapper] igc-input::part(start){display:none}[part=list-wrapper] igc-input::part(input){border-radius:0;padding:0;-webkit-border-start:0;border-inline-start:0;border-inline-end-color:rgba(0,0,0,0);-webkit-border-before:0;border-block-start:0;-webkit-box-shadow:none;box-shadow:none}[part=list-wrapper] igc-input::part(input)::-moz-selection{background:hsla(var(--ig-primary-100), var(--ig-primary-a))}[part=list-wrapper] igc-input::part(input)::selection{background:hsla(var(--ig-primary-100), var(--ig-primary-a))}[part=list-wrapper] [part="case-icon active"]{color:hsla(var(--ig-primary-500), var(--ig-primary-a))}[part=filter-input]{padding-inline:max(var(--is-large, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, --ig-spacing)),var(--is-medium, 1)*max(8px, -1 * 8px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, --ig-spacing)),var(--is-small, 1)*max(4px, -1 * 4px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, --ig-spacing)));padding-block:max(var(--is-large, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-large, var(--ig-spacing-block, --ig-spacing)),var(--is-medium, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-medium, var(--ig-spacing-block, --ig-spacing)),var(--is-small, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-small, var(--ig-spacing-block, --ig-spacing)));z-index:26}[part=list]{min-height:12.5rem !important;outline-style:none}[part=empty]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:1rem 1.5rem;font-size:.8125rem}[part~=group-header],[part~=item]{inset-inline-start:0}:host(:disabled),:host([disabled]){pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host(:disabled) igc-input::part(input)::-moz-selection, :host([disabled]) igc-input::part(input)::-moz-selection{background:rgba(0,0,0,0)}:host(:disabled) igc-input::part(input)::selection,:host([disabled]) igc-input::part(input)::selection{background:rgba(0,0,0,0)}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:block;font-family:var(--ig-font-family)}:host igc-icon,:host ::slotted(igc-icon),:host igc-input:not([part=search-input]){--component-size: var(--combo-size) !important}:host>igc-input::part(input){text-overflow:ellipsis;cursor:pointer}:host(:not([single-select]))>igc-input::part(input)::-moz-selection{background:rgba(0,0,0,0)}:host(:not([single-select]))>igc-input::part(input)::selection{background:rgba(0,0,0,0)}[part=helper-text]{line-height:1}[part=helper-text] ::slotted([slot=helper-text]){font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom);line-height:inherit}[part=clear-icon],[part=toggle-icon],[part~=case-icon]{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer}[part=list-wrapper]{border-radius:clamp(0rem,calc(var(--ig-radius-factor, 1) * 0.25rem),0.25rem);width:100%;background:hsla(var(--ig-surface-500), var(--ig-surface-a));-webkit-box-shadow:var(--ig-elevation-8);box-shadow:var(--ig-elevation-8);overflow:hidden;outline-style:none}[part=list-wrapper] igc-input{--ig-size: var(--ig-size-small);--ig-theme: material}[part=list-wrapper] igc-input::part(container){background:rgba(0,0,0,0);-webkit-border-start:0;border-inline-start:0;border-inline-end-color:rgba(0,0,0,0);-webkit-border-before:0;border-block-start:0;border-radius:0}[part=list-wrapper] igc-input::part(start){display:none}[part=list-wrapper] igc-input::part(input){border-radius:0;padding:0;-webkit-border-start:0;border-inline-start:0;border-inline-end-color:rgba(0,0,0,0);-webkit-border-before:0;border-block-start:0;-webkit-box-shadow:none;box-shadow:none}[part=list-wrapper] igc-input::part(input)::-moz-selection{background:hsla(var(--ig-primary-100), var(--ig-primary-a))}[part=list-wrapper] igc-input::part(input)::selection{background:hsla(var(--ig-primary-100), var(--ig-primary-a))}[part=list-wrapper] [part="case-icon active"]{color:hsla(var(--ig-primary-500), var(--ig-primary-a))}[part=filter-input]{padding-inline:max(var(--is-large, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, --ig-spacing)),var(--is-medium, 1)*max(8px, -1 * 8px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, --ig-spacing)),var(--is-small, 1)*max(4px, -1 * 4px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, --ig-spacing)));padding-block:max(var(--is-large, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-large, var(--ig-spacing-block, --ig-spacing)),var(--is-medium, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-medium, var(--ig-spacing-block, --ig-spacing)),var(--is-small, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-small, var(--ig-spacing-block, --ig-spacing)));z-index:26}[part=list]{min-height:12.5rem !important;outline-style:none}[part=empty]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:1rem 1.5rem;font-size:.8125rem}[part~=group-header],[part~=item]{inset-inline-start:0}:host(:disabled),:host([disabled]){pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host(:disabled) igc-input::part(input)::-moz-selection, :host([disabled]) igc-input::part(input)::-moz-selection{background:rgba(0,0,0,0)}:host(:disabled) igc-input::part(input)::selection,:host([disabled]) igc-input::part(input)::selection{background:rgba(0,0,0,0)}`;
3
3
  //# sourceMappingURL=combo.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"combo.base.css.js","sourceRoot":"","sources":["../../../../src/components/combo/themes/combo.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,miJAAmiJ,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host([hidden]),[hidden]{display:none !important}:host{display:block;font-family:var(--ig-font-family)}:host igc-icon,:host ::slotted(igc-icon),:host igc-input:not([part=search-input]){--component-size: var(--combo-size) !important}:host>igc-input::part(input){text-overflow:ellipsis;cursor:pointer}:host(:not([single-select]))>igc-input::part(input)::-moz-selection{background:rgba(0,0,0,0)}:host(:not([single-select]))>igc-input::part(input)::selection{background:rgba(0,0,0,0)}[part=helper-text]{line-height:1}[part=helper-text] ::slotted([slot=helper-text]){font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom);line-height:inherit}[part=clear-icon],[part=toggle-icon],[part~=case-icon]{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer}[part=list-wrapper]{border-radius:clamp(0rem,calc(var(--ig-radius-factor, 1) * 0.25rem),0.25rem);width:100%;background:hsla(var(--ig-surface-500), var(--ig-surface-a));-webkit-box-shadow:var(--ig-elevation-8);box-shadow:var(--ig-elevation-8);overflow:hidden;outline-style:none}[part=list-wrapper] igc-input{--ig-size: var(--ig-size-small);--ig-theme: material}[part=list-wrapper] igc-input::part(container){background:rgba(0,0,0,0);-webkit-border-start:0;border-inline-start:0;border-inline-end-color:rgba(0,0,0,0);-webkit-border-before:0;border-block-start:0;border-radius:0}[part=list-wrapper] igc-input::part(start){display:none}[part=list-wrapper] igc-input::part(input){border-radius:0;padding:0;-webkit-border-start:0;border-inline-start:0;border-inline-end-color:rgba(0,0,0,0);-webkit-border-before:0;border-block-start:0;-webkit-box-shadow:none;box-shadow:none}[part=list-wrapper] igc-input::part(input)::-moz-selection{background:hsla(var(--ig-primary-100), var(--ig-primary-a))}[part=list-wrapper] igc-input::part(input)::selection{background:hsla(var(--ig-primary-100), var(--ig-primary-a))}[part=list-wrapper] [part=\"case-icon active\"]{color:hsla(var(--ig-primary-500), var(--ig-primary-a))}[part=filter-input]{padding-inline:max(var(--is-large, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, --ig-spacing)),var(--is-medium, 1)*max(8px, -1 * 8px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, --ig-spacing)),var(--is-small, 1)*max(4px, -1 * 4px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, --ig-spacing)));padding-block:max(var(--is-large, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-large, var(--ig-spacing-block, --ig-spacing)),var(--is-medium, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-medium, var(--ig-spacing-block, --ig-spacing)),var(--is-small, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-small, var(--ig-spacing-block, --ig-spacing)));z-index:26}[part=list]{min-height:12.5rem !important;outline-style:none}[part=empty]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:1rem 1.5rem;font-size:.8125rem}[part~=group-header],[part~=item]{inset-inline-start:0}:host(:disabled),:host([disabled]){pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host(:disabled) igc-input::part(input)::-moz-selection, :host([disabled]) igc-input::part(input)::-moz-selection{background:rgba(0,0,0,0)}:host(:disabled) igc-input::part(input)::selection,:host([disabled]) igc-input::part(input)::selection{background:rgba(0,0,0,0)}`;\n"]}
1
+ {"version":3,"file":"combo.base.css.js","sourceRoot":"","sources":["../../../../src/components/combo/themes/combo.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,miJAAmiJ,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:block;font-family:var(--ig-font-family)}:host igc-icon,:host ::slotted(igc-icon),:host igc-input:not([part=search-input]){--component-size: var(--combo-size) !important}:host>igc-input::part(input){text-overflow:ellipsis;cursor:pointer}:host(:not([single-select]))>igc-input::part(input)::-moz-selection{background:rgba(0,0,0,0)}:host(:not([single-select]))>igc-input::part(input)::selection{background:rgba(0,0,0,0)}[part=helper-text]{line-height:1}[part=helper-text] ::slotted([slot=helper-text]){font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom);line-height:inherit}[part=clear-icon],[part=toggle-icon],[part~=case-icon]{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer}[part=list-wrapper]{border-radius:clamp(0rem,calc(var(--ig-radius-factor, 1) * 0.25rem),0.25rem);width:100%;background:hsla(var(--ig-surface-500), var(--ig-surface-a));-webkit-box-shadow:var(--ig-elevation-8);box-shadow:var(--ig-elevation-8);overflow:hidden;outline-style:none}[part=list-wrapper] igc-input{--ig-size: var(--ig-size-small);--ig-theme: material}[part=list-wrapper] igc-input::part(container){background:rgba(0,0,0,0);-webkit-border-start:0;border-inline-start:0;border-inline-end-color:rgba(0,0,0,0);-webkit-border-before:0;border-block-start:0;border-radius:0}[part=list-wrapper] igc-input::part(start){display:none}[part=list-wrapper] igc-input::part(input){border-radius:0;padding:0;-webkit-border-start:0;border-inline-start:0;border-inline-end-color:rgba(0,0,0,0);-webkit-border-before:0;border-block-start:0;-webkit-box-shadow:none;box-shadow:none}[part=list-wrapper] igc-input::part(input)::-moz-selection{background:hsla(var(--ig-primary-100), var(--ig-primary-a))}[part=list-wrapper] igc-input::part(input)::selection{background:hsla(var(--ig-primary-100), var(--ig-primary-a))}[part=list-wrapper] [part=\"case-icon active\"]{color:hsla(var(--ig-primary-500), var(--ig-primary-a))}[part=filter-input]{padding-inline:max(var(--is-large, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, --ig-spacing)),var(--is-medium, 1)*max(8px, -1 * 8px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, --ig-spacing)),var(--is-small, 1)*max(4px, -1 * 4px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, --ig-spacing)));padding-block:max(var(--is-large, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-large, var(--ig-spacing-block, --ig-spacing)),var(--is-medium, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-medium, var(--ig-spacing-block, --ig-spacing)),var(--is-small, 1)*max(8px, -1 * 8px)*var(--ig-spacing-block-small, var(--ig-spacing-block, --ig-spacing)));z-index:26}[part=list]{min-height:12.5rem !important;outline-style:none}[part=empty]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:1rem 1.5rem;font-size:.8125rem}[part~=group-header],[part~=item]{inset-inline-start:0}:host(:disabled),:host([disabled]){pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host(:disabled) igc-input::part(input)::-moz-selection, :host([disabled]) igc-input::part(input)::-moz-selection{background:rgba(0,0,0,0)}:host(:disabled) igc-input::part(input)::selection,:host([disabled]) igc-input::part(input)::selection{background:rgba(0,0,0,0)}`;\n"]}
@@ -32,8 +32,8 @@ export interface IgcComboChangeEventArgs<T extends object = any> {
32
32
  }
33
33
  export interface IgcComboEventMap {
34
34
  igcChange: CustomEvent<IgcComboChangeEventArgs>;
35
- igcFocus: CustomEvent<void>;
36
- igcBlur: CustomEvent<void>;
35
+ focus: FocusEvent;
36
+ blur: FocusEvent;
37
37
  igcOpening: CustomEvent<void>;
38
38
  igcOpened: CustomEvent<void>;
39
39
  igcClosing: CustomEvent<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/combo/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { RenderItemFunction } from '@lit-labs/virtualizer/virtualize.js';\nimport type { ReactiveControllerHost, TemplateResult } from 'lit';\n\nimport type IgcComboComponent from './combo.js';\n\nexport type Keys<T> = keyof T;\nexport type Values<T> = T[keyof T];\nexport type Item<T extends object> = T | Values<T>;\n\nexport type ComboRecord<T extends object> = {\n value: T;\n header: boolean;\n dataIndex: number;\n};\n\nexport type ComboHost<T extends object> = ReactiveControllerHost &\n IgcComboComponent<T>;\n\nexport type GroupingDirection = 'asc' | 'desc' | 'none';\nexport type ComboChangeType = 'selection' | 'deselection' | 'addition';\nexport type ComboRenderFunction<T extends object> = RenderItemFunction<\n ComboRecord<T>\n>;\nexport type ComboValue<T> = T | Values<T>;\n\nexport interface FilteringOptions<T extends object> {\n filterKey: Keys<T> | undefined;\n caseSensitive?: boolean;\n matchDiacritics?: boolean;\n}\n\nexport interface GroupingOptions<T extends object> {\n groupKey?: Keys<T>;\n valueKey?: Keys<T>;\n displayKey?: Keys<T>;\n direction: GroupingDirection;\n}\n\n/* marshalByValue */\nexport interface IgcComboChangeEventArgs<T extends object = any> {\n newValue: ComboValue<T>[];\n /* primitiveValue */\n items: T[];\n /* blazorAlternateName: changeType */\n type: ComboChangeType;\n}\n\nexport interface IgcComboEventMap {\n igcChange: CustomEvent<IgcComboChangeEventArgs>;\n igcFocus: CustomEvent<void>;\n igcBlur: CustomEvent<void>;\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n}\n\nexport type ComboItemTemplate<T extends object> = (\n props: ComboTemplateProps<T>\n) => TemplateResult;\nexport interface ComboTemplateProps<T extends object> {\n item: T;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/combo/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { RenderItemFunction } from '@lit-labs/virtualizer/virtualize.js';\nimport type { ReactiveControllerHost, TemplateResult } from 'lit';\n\nimport type IgcComboComponent from './combo.js';\n\nexport type Keys<T> = keyof T;\nexport type Values<T> = T[keyof T];\nexport type Item<T extends object> = T | Values<T>;\n\nexport type ComboRecord<T extends object> = {\n value: T;\n header: boolean;\n dataIndex: number;\n};\n\nexport type ComboHost<T extends object> = ReactiveControllerHost &\n IgcComboComponent<T>;\n\nexport type GroupingDirection = 'asc' | 'desc' | 'none';\nexport type ComboChangeType = 'selection' | 'deselection' | 'addition';\nexport type ComboRenderFunction<T extends object> = RenderItemFunction<\n ComboRecord<T>\n>;\nexport type ComboValue<T> = T | Values<T>;\n\nexport interface FilteringOptions<T extends object> {\n filterKey: Keys<T> | undefined;\n caseSensitive?: boolean;\n matchDiacritics?: boolean;\n}\n\nexport interface GroupingOptions<T extends object> {\n groupKey?: Keys<T>;\n valueKey?: Keys<T>;\n displayKey?: Keys<T>;\n direction: GroupingDirection;\n}\n\n/* marshalByValue */\nexport interface IgcComboChangeEventArgs<T extends object = any> {\n newValue: ComboValue<T>[];\n /* primitiveValue */\n items: T[];\n /* blazorAlternateName: changeType */\n type: ComboChangeType;\n}\n\nexport interface IgcComboEventMap {\n igcChange: CustomEvent<IgcComboChangeEventArgs>;\n // For analyzer meta only:\n focus: FocusEvent;\n blur: FocusEvent;\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n}\n\nexport type ComboItemTemplate<T extends object> = (\n props: ComboTemplateProps<T>\n) => TemplateResult;\nexport interface ComboTemplateProps<T extends object> {\n item: T;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { Validator } from '../common/validators.js';
2
+ import type IgcComboComponent from './combo.js';
3
+ export declare const comboValidators: Validator<IgcComboComponent>[];
@@ -0,0 +1,9 @@
1
+ import messages from '../common/localization/validation-en.js';
2
+ export const comboValidators = [
3
+ {
4
+ key: 'valueMissing',
5
+ message: messages.required,
6
+ isValid: ({ required, value }) => required ? Array.isArray(value) && value.length > 0 : true,
7
+ },
8
+ ];
9
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/components/combo/validators.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yCAAyC,CAAC;AAI/D,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC7D;QACE,GAAG,EAAE,cAAc;QACnB,OAAO,EAAE,QAAQ,CAAC,QAAQ;QAC1B,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAC/B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;KAC7D;CACF,CAAC","sourcesContent":["import messages from '../common/localization/validation-en.js';\nimport type { Validator } from '../common/validators.js';\nimport type IgcComboComponent from './combo.js';\n\nexport const comboValidators: Validator<IgcComboComponent>[] = [\n {\n key: 'valueMissing',\n message: messages.required,\n isValid: ({ required, value }) =>\n required ? Array.isArray(value) && value.length > 0 : true,\n },\n];\n"]}
@@ -40,6 +40,7 @@ export type KeyBindingSkipCallback = (node: Element, event: KeyboardEvent) => bo
40
40
  export type KeyBindingTrigger = 'keydown' | 'keyup' | 'keydownRepeat';
41
41
  /**
42
42
  * Configuration object for the controller.
43
+ * @ignore
43
44
  */
44
45
  export interface KeyBindingControllerOptions {
45
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"key-bindings.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/key-bindings.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAoB,CAAC;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG,YAAqB,CAAC;AAChD,MAAM,CAAC,MAAM,OAAO,GAAG,SAAkB,CAAC;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAoB,CAAC;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAgB,CAAC;AACzC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAY,CAAC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,QAAiB,CAAC;AAC3C,MAAM,CAAC,MAAM,OAAO,GAAG,MAAe,CAAC;AACvC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAc,CAAC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,QAAiB,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,MAAM,GAAG,KAAc,CAAC;AAGrC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAc,CAAC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAe,CAAC;AACvC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAe,CAAC;AACvC,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAgB,CAAC;AAmGzC,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CACrE,CAAC;AAEF,MAAM,cAAc,GAAgC;IAClD,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;CACtC,CAAC;AAEF,SAAS,aAAa,CAAC,IAAuB;IAC5C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,KAAY;IAC7B,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;AAClC,CAAC;AAED,SAAS,OAAO,CAAC,KAAY;IAC3B,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AAChC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAA8B;IACtD,OAAO,QAAQ;QACb,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAC;QAClE,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,QAA8B;IACpD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvD,CAAC;AAED,SAAS,sBAAsB,CAAC,QAA8B;IAC5D,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAuB;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9C,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB;IAQxB,IAAc,QAAQ;QACpB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAClD,CAAC;IASM,cAAc,CAAC,OAAgB;QACpC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAEhC,OAAO;YACL,WAAW,EAAE,GAAG,EAAE;gBAChB,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC5D,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC1D,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,YACE,IAAsC,EACtC,OAAqC;QAjC/B,aAAQ,GAAG,IAAI,GAAG,EAAc,CAAC;QACjC,gBAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QAkCtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,GAAG,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAKO,mBAAmB,CAAC,OAAmB,EAAE,KAAoB;QACnE,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;YACpC,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;YACrC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,OAAmB,EAAE,KAAoB;QACzD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtD,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,KAA4B,CAAC,CAAC,CACtE,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,OAAmB,EAAE,KAAoB;QAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,WAAW,CAAC,KAAoB;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CACP,CAAC,MAAM,EAAE,EAAE,CACT,SAAS,CAAC,MAAM,CAAC;oBACjB,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CACpD;gBACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAiB,EAAE,KAAK,CAAC,CAAC;YAE1D,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAEzC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAExC,IAAI,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;oBACtD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAKM,GAAG,CACR,GAAsB,EACtB,EAAqB,EACrB,OAA2B;QAE3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChB,GAAG,SAAS,CAAC,GAAG,CAAC;YACjB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE;SAC3D,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAQM,kBAAkB,CACvB,EAAqB,EACrB,OAA2B;QAE3B,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,aAAa;QAClB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;CACF;AAMD,MAAM,UAAU,cAAc,CAC5B,OAAyC,EACzC,OAAqC;IAErC,OAAO,IAAI,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { Ref } from 'lit/directives/ref.js';\n\nimport { isElement } from '../util.js';\n\n/* Common keys */\nexport const arrowLeft = 'ArrowLeft' as const;\nexport const arrowRight = 'ArrowRight' as const;\nexport const arrowUp = 'ArrowUp' as const;\nexport const arrowDown = 'ArrowDown' as const;\nexport const enterKey = 'Enter' as const;\nexport const spaceBar = ' ' as const;\nexport const escapeKey = 'Escape' as const;\nexport const homeKey = 'Home' as const;\nexport const endKey = 'End' as const;\nexport const pageUpKey = 'PageUp' as const;\nexport const pageDownKey = 'PageDown' as const;\nexport const tabKey = 'Tab' as const;\n\n/* Modifiers */\nexport const altKey = 'Alt' as const;\nexport const ctrlKey = 'Ctrl' as const;\nexport const metaKey = 'Meta' as const;\nexport const shiftKey = 'Shift' as const;\n\n/* Types */\nexport type KeyBindingHandler = (event: KeyboardEvent) => void;\nexport type KeyBindingObserverCleanup = { unsubscribe: () => void };\n\n/**\n * Whether the current event should be ignored by the controller.\n *\n * @param node - The event target\n * @param event - The event object\n *\n * When `true` is returned, the current event is ignored.\n */\nexport type KeyBindingSkipCallback = (\n node: Element,\n event: KeyboardEvent\n) => boolean;\n\n/**\n * The event type which will trigger the bound handler.\n *\n * @remarks\n * `keydownRepeat` is similar to `keydown` with the exception\n * that after the handler is invoked the pressed state of the key is reset\n * in the controller.\n */\nexport type KeyBindingTrigger = 'keydown' | 'keyup' | 'keydownRepeat';\n\n/**\n * Configuration object for the controller.\n */\nexport interface KeyBindingControllerOptions {\n /**\n * By default, the controller listens for keypress events in the context of the host element.\n * If you pass a `ref`, you can limit the observation to a certain DOM part of the host scope.\n */\n ref?: Ref;\n /**\n * Option to ignore key press events.\n *\n * If passed an array of CSS selectors, it will ignore key presses originating from elements in the event composed path\n * that match one of the selectors.\n * Otherwise you can pass a {@link KeyBindingSkipCallback} function.\n *\n * Defaults to `['input', 'textarea', 'select']`.\n *\n * @example\n * ```ts\n * {\n * // Skip events originating from elements with `readonly` attribute\n * skip: ['[readonly]']\n * }\n * ...\n * {\n * // Same as above but with a callback\n * skip: (node: Element) => node.hasAttribute('readonly')\n * }\n * ```\n */\n skip?: string[] | KeyBindingSkipCallback;\n /**\n * A set of KeyBindingOptions configuration which is applied to every handler\n * that is added to the controller.\n *\n * Any additional KeyBindingOptions values passed when `set` is called\n * will be merged with `bindingDefaults`.\n */\n bindingDefaults?: KeyBindingOptions;\n}\n\n/**\n * Configuration object for customizing the behavior of\n * the registered handler.\n */\nexport interface KeyBindingOptions {\n /**\n * The event type(s) on which the handler will be invoked.\n *\n * Defaults to `keydown` if not set.\n */\n triggers?: KeyBindingTrigger[];\n /**\n * Whether to call `preventDefault` on the target event before the handler is invoked.\n */\n preventDefault?: boolean;\n /**\n * Whether to call `stopPropagation` on the target event before the handler is invoked.\n */\n stopPropagation?: boolean;\n}\n\ninterface KeyBinding {\n keys: string[];\n handler: KeyBindingHandler;\n options?: KeyBindingOptions;\n modifiers?: string[];\n}\n\nconst __modifiers = new Set<string>(\n [altKey, ctrlKey, metaKey, shiftKey].map((key) => key.toLowerCase())\n);\n\nconst defaultOptions: KeyBindingControllerOptions = {\n skip: ['input', 'textarea', 'select'],\n};\n\nfunction normalizeKeys(keys: string | string[]) {\n return (Array.isArray(keys) ? keys : [keys]).map((key) => key.toLowerCase());\n}\n\nfunction isModifier(key: string) {\n return __modifiers.has(key);\n}\n\nfunction isKeydown(event: Event) {\n return event.type === 'keydown';\n}\n\nfunction isKeyup(event: Event) {\n return event.type === 'keyup';\n}\n\nfunction isKeydownTrigger(triggers?: KeyBindingTrigger[]) {\n return triggers\n ? triggers.includes('keydown') || isKeydownRepeatTrigger(triggers)\n : false;\n}\n\nfunction isKeyupTrigger(triggers?: KeyBindingTrigger[]) {\n return triggers ? triggers.includes('keyup') : false;\n}\n\nfunction isKeydownRepeatTrigger(triggers?: KeyBindingTrigger[]) {\n return triggers ? triggers.includes('keydownRepeat') : false;\n}\n\nexport function parseKeys(keys: string | string[]) {\n const parsed = normalizeKeys(keys);\n return {\n keys: parsed.filter((key) => !isModifier(key)),\n modifiers: parsed.filter((key) => isModifier(key)),\n };\n}\n\nclass KeyBindingController implements ReactiveController {\n protected _host: ReactiveControllerHost & Element;\n protected _ref?: Ref;\n protected _observedElement?: Element;\n protected _options?: KeyBindingControllerOptions;\n private bindings = new Set<KeyBinding>();\n private pressedKeys = new Set<string>();\n\n protected get _element() {\n if (this._observedElement) {\n return this._observedElement;\n }\n return this._ref ? this._ref.value : this._host;\n }\n\n /**\n * Sets the controller to listen for keyboard events on an arbitrary `element` in the page context.\n * All the configuration and event handlers are applied as well.\n *\n * Returns an object with an `unsubscribe` function which should be called when the observing of keyboard\n * events on the `element` should cease.\n */\n public observeElement(element: Element): KeyBindingObserverCleanup {\n element.addEventListener('keydown', this);\n element.addEventListener('keyup', this);\n this._observedElement = element;\n\n return {\n unsubscribe: () => {\n this._observedElement?.removeEventListener('keydown', this);\n this._observedElement?.removeEventListener('keyup', this);\n this._observedElement = undefined;\n },\n };\n }\n\n constructor(\n host: ReactiveControllerHost & Element,\n options?: KeyBindingControllerOptions\n ) {\n this._host = host;\n this._ref = options?.ref;\n this._options = { ...defaultOptions, ...options };\n host.addController(this);\n }\n\n /**\n * Checks and executes any event modifiers that are present in the matched binding.\n */\n private eventModifiersMatch(binding: KeyBinding, event: KeyboardEvent) {\n if (binding.options?.preventDefault) {\n event.preventDefault();\n }\n\n if (binding.options?.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n private keysMatch(binding: KeyBinding, event: KeyboardEvent) {\n const modifiers = binding.modifiers ?? [];\n return (\n binding.keys.every((key) => this.pressedKeys.has(key)) &&\n modifiers.every((mod) => !!event[`${mod}Key` as keyof KeyboardEvent])\n );\n }\n\n private bindingMatches(binding: KeyBinding, event: KeyboardEvent) {\n const triggers = binding.options?.triggers ?? ['keydown'];\n\n if (!this.keysMatch(binding, event)) {\n return false;\n }\n\n if (isKeydown(event) && isKeydownTrigger(triggers)) {\n return true;\n }\n\n if (isKeyup(event) && isKeyupTrigger(triggers)) {\n return true;\n }\n\n return false;\n }\n\n public handleEvent(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n const path = event.composedPath();\n const skip = this._options?.skip;\n\n if (!this._element || !path.includes(this._element)) {\n return;\n }\n\n if (skip) {\n const shouldSkip = Array.isArray(skip)\n ? path.some(\n (target) =>\n isElement(target) &&\n skip.some((selector) => target.matches(selector))\n )\n : skip.call(this._host, event.target as Element, event);\n\n if (shouldSkip) {\n return;\n }\n }\n\n if (isModifier(key)) {\n this.pressedKeys.clear();\n }\n\n if (isKeydown(event) && !isModifier(key)) {\n this.pressedKeys.add(key);\n }\n\n for (const binding of this.bindings) {\n if (this.bindingMatches(binding, event)) {\n this.eventModifiersMatch(binding, event);\n\n binding.handler.call(this._host, event);\n\n if (isKeydownRepeatTrigger(binding.options?.triggers)) {\n this.pressedKeys.delete(key);\n }\n }\n }\n\n if (isKeyup(event) && !isModifier(key)) {\n this.pressedKeys.delete(key);\n }\n }\n\n /**\n * Registers a keybinding handler.\n */\n public set(\n key: string | string[],\n fn: KeyBindingHandler,\n options?: KeyBindingOptions\n ) {\n this.bindings.add({\n ...parseKeys(key),\n handler: fn,\n options: { ...this._options?.bindingDefaults, ...options },\n });\n\n return this;\n }\n\n /**\n * Register a handler function which is called when the target receives a key\n * which \"activates\" it.\n *\n * In the browser context this is usually either an Enter and/or Space keypress.\n */\n public setActivateHandler(\n fn: KeyBindingHandler,\n options?: KeyBindingOptions\n ) {\n for (const key of [enterKey, spaceBar]) {\n this.set(key, fn, options);\n }\n\n return this;\n }\n\n public hostConnected(): void {\n this._host.addEventListener('keyup', this);\n this._host.addEventListener('keydown', this);\n }\n\n public hostDisconnected(): void {\n this._host.removeEventListener('keyup', this);\n this._host.removeEventListener('keydown', this);\n }\n}\n\n/**\n * Creates a keybinding controller and adds to it to the passed `element`\n * with the provided `options`.\n */\nexport function addKeybindings(\n element: ReactiveControllerHost & Element,\n options?: KeyBindingControllerOptions\n) {\n return new KeyBindingController(element, options);\n}\n"]}
1
+ {"version":3,"file":"key-bindings.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/key-bindings.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { Ref } from 'lit/directives/ref.js';\n\nimport { isElement } from '../util.js';\n\n/* Common keys */\nexport const arrowLeft = 'ArrowLeft' as const;\nexport const arrowRight = 'ArrowRight' as const;\nexport const arrowUp = 'ArrowUp' as const;\nexport const arrowDown = 'ArrowDown' as const;\nexport const enterKey = 'Enter' as const;\nexport const spaceBar = ' ' as const;\nexport const escapeKey = 'Escape' as const;\nexport const homeKey = 'Home' as const;\nexport const endKey = 'End' as const;\nexport const pageUpKey = 'PageUp' as const;\nexport const pageDownKey = 'PageDown' as const;\nexport const tabKey = 'Tab' as const;\n\n/* Modifiers */\nexport const altKey = 'Alt' as const;\nexport const ctrlKey = 'Ctrl' as const;\nexport const metaKey = 'Meta' as const;\nexport const shiftKey = 'Shift' as const;\n\n/* Types */\nexport type KeyBindingHandler = (event: KeyboardEvent) => void;\nexport type KeyBindingObserverCleanup = { unsubscribe: () => void };\n\n/**\n * Whether the current event should be ignored by the controller.\n *\n * @param node - The event target\n * @param event - The event object\n *\n * When `true` is returned, the current event is ignored.\n */\nexport type KeyBindingSkipCallback = (\n node: Element,\n event: KeyboardEvent\n) => boolean;\n\n/**\n * The event type which will trigger the bound handler.\n *\n * @remarks\n * `keydownRepeat` is similar to `keydown` with the exception\n * that after the handler is invoked the pressed state of the key is reset\n * in the controller.\n */\nexport type KeyBindingTrigger = 'keydown' | 'keyup' | 'keydownRepeat';\n\n/**\n * Configuration object for the controller.\n * @ignore\n */\nexport interface KeyBindingControllerOptions {\n /**\n * By default, the controller listens for keypress events in the context of the host element.\n * If you pass a `ref`, you can limit the observation to a certain DOM part of the host scope.\n */\n ref?: Ref;\n /**\n * Option to ignore key press events.\n *\n * If passed an array of CSS selectors, it will ignore key presses originating from elements in the event composed path\n * that match one of the selectors.\n * Otherwise you can pass a {@link KeyBindingSkipCallback} function.\n *\n * Defaults to `['input', 'textarea', 'select']`.\n *\n * @example\n * ```ts\n * {\n * // Skip events originating from elements with `readonly` attribute\n * skip: ['[readonly]']\n * }\n * ...\n * {\n * // Same as above but with a callback\n * skip: (node: Element) => node.hasAttribute('readonly')\n * }\n * ```\n */\n skip?: string[] | KeyBindingSkipCallback;\n /**\n * A set of KeyBindingOptions configuration which is applied to every handler\n * that is added to the controller.\n *\n * Any additional KeyBindingOptions values passed when `set` is called\n * will be merged with `bindingDefaults`.\n */\n bindingDefaults?: KeyBindingOptions;\n}\n\n/**\n * Configuration object for customizing the behavior of\n * the registered handler.\n */\nexport interface KeyBindingOptions {\n /**\n * The event type(s) on which the handler will be invoked.\n *\n * Defaults to `keydown` if not set.\n */\n triggers?: KeyBindingTrigger[];\n /**\n * Whether to call `preventDefault` on the target event before the handler is invoked.\n */\n preventDefault?: boolean;\n /**\n * Whether to call `stopPropagation` on the target event before the handler is invoked.\n */\n stopPropagation?: boolean;\n}\n\ninterface KeyBinding {\n keys: string[];\n handler: KeyBindingHandler;\n options?: KeyBindingOptions;\n modifiers?: string[];\n}\n\nconst __modifiers = new Set<string>(\n [altKey, ctrlKey, metaKey, shiftKey].map((key) => key.toLowerCase())\n);\n\nconst defaultOptions: KeyBindingControllerOptions = {\n skip: ['input', 'textarea', 'select'],\n};\n\nfunction normalizeKeys(keys: string | string[]) {\n return (Array.isArray(keys) ? keys : [keys]).map((key) => key.toLowerCase());\n}\n\nfunction isModifier(key: string) {\n return __modifiers.has(key);\n}\n\nfunction isKeydown(event: Event) {\n return event.type === 'keydown';\n}\n\nfunction isKeyup(event: Event) {\n return event.type === 'keyup';\n}\n\nfunction isKeydownTrigger(triggers?: KeyBindingTrigger[]) {\n return triggers\n ? triggers.includes('keydown') || isKeydownRepeatTrigger(triggers)\n : false;\n}\n\nfunction isKeyupTrigger(triggers?: KeyBindingTrigger[]) {\n return triggers ? triggers.includes('keyup') : false;\n}\n\nfunction isKeydownRepeatTrigger(triggers?: KeyBindingTrigger[]) {\n return triggers ? triggers.includes('keydownRepeat') : false;\n}\n\nexport function parseKeys(keys: string | string[]) {\n const parsed = normalizeKeys(keys);\n return {\n keys: parsed.filter((key) => !isModifier(key)),\n modifiers: parsed.filter((key) => isModifier(key)),\n };\n}\n\nclass KeyBindingController implements ReactiveController {\n protected _host: ReactiveControllerHost & Element;\n protected _ref?: Ref;\n protected _observedElement?: Element;\n protected _options?: KeyBindingControllerOptions;\n private bindings = new Set<KeyBinding>();\n private pressedKeys = new Set<string>();\n\n protected get _element() {\n if (this._observedElement) {\n return this._observedElement;\n }\n return this._ref ? this._ref.value : this._host;\n }\n\n /**\n * Sets the controller to listen for keyboard events on an arbitrary `element` in the page context.\n * All the configuration and event handlers are applied as well.\n *\n * Returns an object with an `unsubscribe` function which should be called when the observing of keyboard\n * events on the `element` should cease.\n */\n public observeElement(element: Element): KeyBindingObserverCleanup {\n element.addEventListener('keydown', this);\n element.addEventListener('keyup', this);\n this._observedElement = element;\n\n return {\n unsubscribe: () => {\n this._observedElement?.removeEventListener('keydown', this);\n this._observedElement?.removeEventListener('keyup', this);\n this._observedElement = undefined;\n },\n };\n }\n\n constructor(\n host: ReactiveControllerHost & Element,\n options?: KeyBindingControllerOptions\n ) {\n this._host = host;\n this._ref = options?.ref;\n this._options = { ...defaultOptions, ...options };\n host.addController(this);\n }\n\n /**\n * Checks and executes any event modifiers that are present in the matched binding.\n */\n private eventModifiersMatch(binding: KeyBinding, event: KeyboardEvent) {\n if (binding.options?.preventDefault) {\n event.preventDefault();\n }\n\n if (binding.options?.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n private keysMatch(binding: KeyBinding, event: KeyboardEvent) {\n const modifiers = binding.modifiers ?? [];\n return (\n binding.keys.every((key) => this.pressedKeys.has(key)) &&\n modifiers.every((mod) => !!event[`${mod}Key` as keyof KeyboardEvent])\n );\n }\n\n private bindingMatches(binding: KeyBinding, event: KeyboardEvent) {\n const triggers = binding.options?.triggers ?? ['keydown'];\n\n if (!this.keysMatch(binding, event)) {\n return false;\n }\n\n if (isKeydown(event) && isKeydownTrigger(triggers)) {\n return true;\n }\n\n if (isKeyup(event) && isKeyupTrigger(triggers)) {\n return true;\n }\n\n return false;\n }\n\n public handleEvent(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n const path = event.composedPath();\n const skip = this._options?.skip;\n\n if (!this._element || !path.includes(this._element)) {\n return;\n }\n\n if (skip) {\n const shouldSkip = Array.isArray(skip)\n ? path.some(\n (target) =>\n isElement(target) &&\n skip.some((selector) => target.matches(selector))\n )\n : skip.call(this._host, event.target as Element, event);\n\n if (shouldSkip) {\n return;\n }\n }\n\n if (isModifier(key)) {\n this.pressedKeys.clear();\n }\n\n if (isKeydown(event) && !isModifier(key)) {\n this.pressedKeys.add(key);\n }\n\n for (const binding of this.bindings) {\n if (this.bindingMatches(binding, event)) {\n this.eventModifiersMatch(binding, event);\n\n binding.handler.call(this._host, event);\n\n if (isKeydownRepeatTrigger(binding.options?.triggers)) {\n this.pressedKeys.delete(key);\n }\n }\n }\n\n if (isKeyup(event) && !isModifier(key)) {\n this.pressedKeys.delete(key);\n }\n }\n\n /**\n * Registers a keybinding handler.\n */\n public set(\n key: string | string[],\n fn: KeyBindingHandler,\n options?: KeyBindingOptions\n ) {\n this.bindings.add({\n ...parseKeys(key),\n handler: fn,\n options: { ...this._options?.bindingDefaults, ...options },\n });\n\n return this;\n }\n\n /**\n * Register a handler function which is called when the target receives a key\n * which \"activates\" it.\n *\n * In the browser context this is usually either an Enter and/or Space keypress.\n */\n public setActivateHandler(\n fn: KeyBindingHandler,\n options?: KeyBindingOptions\n ) {\n for (const key of [enterKey, spaceBar]) {\n this.set(key, fn, options);\n }\n\n return this;\n }\n\n public hostConnected(): void {\n this._host.addEventListener('keyup', this);\n this._host.addEventListener('keydown', this);\n }\n\n public hostDisconnected(): void {\n this._host.removeEventListener('keyup', this);\n this._host.removeEventListener('keydown', this);\n }\n}\n\n/**\n * Creates a keybinding controller and adds to it to the passed `element`\n * with the provided `options`.\n */\nexport function addKeybindings(\n element: ReactiveControllerHost & Element,\n options?: KeyBindingControllerOptions\n) {\n return new KeyBindingController(element, options);\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import type { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ /** @ignore */
2
3
  export interface MutationControllerConfig<T> {
3
4
  /** The callback function to run when a mutation occurs. */
4
5
  callback: MutationControllerCallback<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-observer.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/mutation-observer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\nimport { isElement } from '../util.js';\n\nexport interface MutationControllerConfig<T> {\n /** The callback function to run when a mutation occurs. */\n callback: MutationControllerCallback<T>;\n /** The underlying mutation observer configuration parameters. */\n config: MutationObserverInit;\n /**\n * The element to observe.\n * If left out, the observer will listen on the host component itself.\n */\n target?: Element;\n /**\n * A filter configuration.\n * See {@link MutationControllerFilter|this} for additional information.\n */\n filter?: MutationControllerFilter<T>;\n}\n\ntype MutationControllerCallback<T> = (\n params: MutationControllerParams<T>\n) => unknown;\n\n/**\n * Filter configuration to return elements that either match\n * an array of selector strings or a predicate function.\n */\ntype MutationControllerFilter<T> = string[] | ((node: T) => boolean);\n\ntype MutationChange<T> = {\n /** Elements that have attribute(s) changes. */\n attributes: T[];\n /** Elements that have been added. */\n added: T[];\n /** Elements that have been removed. */\n removed: T[];\n};\n\nexport type MutationControllerParams<T> = {\n /** The original mutation records from the underlying observer. */\n records: MutationRecord[];\n /** The aggregated changes. */\n changes: MutationChange<T>;\n /** The observer controller instance. */\n observer: MutationController<T>;\n};\n\nfunction mutationFilter<T>(nodes: T[], filter?: MutationControllerFilter<T>) {\n if (!filter) {\n return nodes;\n }\n\n return Array.isArray(filter)\n ? nodes.filter((node) =>\n filter.some((selector) => isElement(node) && node.matches(selector))\n )\n : nodes.filter((node) => filter(node));\n}\n\nclass MutationController<T> implements ReactiveController {\n private _host: ReactiveControllerHost & Element;\n private _observer: MutationObserver;\n private _target: Element;\n private _config: MutationObserverInit;\n private _callback: MutationControllerCallback<T>;\n private _filter?: MutationControllerFilter<T>;\n\n constructor(\n host: ReactiveControllerHost & Element,\n options: MutationControllerConfig<T>\n ) {\n this._host = host;\n this._callback = options.callback;\n this._config = options.config;\n this._target = options.target ?? this._host;\n this._filter = options.filter ?? [];\n\n this._observer = new MutationObserver((records) => {\n this.disconnect();\n this._callback.call(this._host, this._process(records));\n this.observe();\n });\n\n host.addController(this);\n }\n\n public hostConnected() {\n this.observe();\n }\n\n public hostDisconnected() {\n this.disconnect();\n }\n\n private _process(records: MutationRecord[]): MutationControllerParams<T> {\n const changes: MutationChange<T> = {\n attributes: [],\n added: [],\n removed: [],\n };\n const filter = this._filter;\n\n for (const record of records) {\n if (record.type === 'attributes') {\n changes.attributes.push(\n ...mutationFilter([record.target as T], filter)\n );\n } else if (record.type === 'childList') {\n changes.added.push(\n ...mutationFilter(Array.from(record.addedNodes) as T[], filter)\n );\n changes.removed.push(\n ...mutationFilter(Array.from(record.removedNodes) as T[], filter)\n );\n }\n }\n\n return { records, changes, observer: this };\n }\n\n /**\n * Begin receiving notifications of changes to the DOM based\n * on the configured {@link MutationControllerConfig.target|target} and observer {@link MutationControllerConfig.config|options}.\n */\n public observe() {\n this._observer.observe(this._target, this._config);\n }\n\n /** Stop watching for mutations. */\n public disconnect() {\n this._observer.disconnect();\n }\n}\n\n/**\n * Creates and attaches a mutation controller with `config` to the passed in `host`.\n *\n * Automatically starts/stops observing for mutation changes\n * in the respective component connect/disconnect callbacks.\n *\n * The mutation observer is disconnected before invoking the passed in callback and re-attached\n * after that in order to not loop itself in endless stream of changes.\n */\nexport function createMutationController<T>(\n host: ReactiveControllerHost & Element,\n config: MutationControllerConfig<T>\n) {\n return new MutationController(host, config);\n}\n"]}
1
+ {"version":3,"file":"mutation-observer.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/mutation-observer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\nimport { isElement } from '../util.js';\n\n/** @ignore */\nexport interface MutationControllerConfig<T> {\n /** The callback function to run when a mutation occurs. */\n callback: MutationControllerCallback<T>;\n /** The underlying mutation observer configuration parameters. */\n config: MutationObserverInit;\n /**\n * The element to observe.\n * If left out, the observer will listen on the host component itself.\n */\n target?: Element;\n /**\n * A filter configuration.\n * See {@link MutationControllerFilter|this} for additional information.\n */\n filter?: MutationControllerFilter<T>;\n}\n\ntype MutationControllerCallback<T> = (\n params: MutationControllerParams<T>\n) => unknown;\n\n/**\n * Filter configuration to return elements that either match\n * an array of selector strings or a predicate function.\n */\ntype MutationControllerFilter<T> = string[] | ((node: T) => boolean);\n\ntype MutationChange<T> = {\n /** Elements that have attribute(s) changes. */\n attributes: T[];\n /** Elements that have been added. */\n added: T[];\n /** Elements that have been removed. */\n removed: T[];\n};\n\nexport type MutationControllerParams<T> = {\n /** The original mutation records from the underlying observer. */\n records: MutationRecord[];\n /** The aggregated changes. */\n changes: MutationChange<T>;\n /** The observer controller instance. */\n observer: MutationController<T>;\n};\n\nfunction mutationFilter<T>(nodes: T[], filter?: MutationControllerFilter<T>) {\n if (!filter) {\n return nodes;\n }\n\n return Array.isArray(filter)\n ? nodes.filter((node) =>\n filter.some((selector) => isElement(node) && node.matches(selector))\n )\n : nodes.filter((node) => filter(node));\n}\n\nclass MutationController<T> implements ReactiveController {\n private _host: ReactiveControllerHost & Element;\n private _observer: MutationObserver;\n private _target: Element;\n private _config: MutationObserverInit;\n private _callback: MutationControllerCallback<T>;\n private _filter?: MutationControllerFilter<T>;\n\n constructor(\n host: ReactiveControllerHost & Element,\n options: MutationControllerConfig<T>\n ) {\n this._host = host;\n this._callback = options.callback;\n this._config = options.config;\n this._target = options.target ?? this._host;\n this._filter = options.filter ?? [];\n\n this._observer = new MutationObserver((records) => {\n this.disconnect();\n this._callback.call(this._host, this._process(records));\n this.observe();\n });\n\n host.addController(this);\n }\n\n public hostConnected() {\n this.observe();\n }\n\n public hostDisconnected() {\n this.disconnect();\n }\n\n private _process(records: MutationRecord[]): MutationControllerParams<T> {\n const changes: MutationChange<T> = {\n attributes: [],\n added: [],\n removed: [],\n };\n const filter = this._filter;\n\n for (const record of records) {\n if (record.type === 'attributes') {\n changes.attributes.push(\n ...mutationFilter([record.target as T], filter)\n );\n } else if (record.type === 'childList') {\n changes.added.push(\n ...mutationFilter(Array.from(record.addedNodes) as T[], filter)\n );\n changes.removed.push(\n ...mutationFilter(Array.from(record.removedNodes) as T[], filter)\n );\n }\n }\n\n return { records, changes, observer: this };\n }\n\n /**\n * Begin receiving notifications of changes to the DOM based\n * on the configured {@link MutationControllerConfig.target|target} and observer {@link MutationControllerConfig.config|options}.\n */\n public observe() {\n this._observer.observe(this._target, this._config);\n }\n\n /** Stop watching for mutations. */\n public disconnect() {\n this._observer.disconnect();\n }\n}\n\n/**\n * Creates and attaches a mutation controller with `config` to the passed in `host`.\n *\n * Automatically starts/stops observing for mutation changes\n * in the respective component connect/disconnect callbacks.\n *\n * The mutation observer is disconnected before invoking the passed in callback and re-attached\n * after that in order to not loop itself in endless stream of changes.\n */\nexport function createMutationController<T>(\n host: ReactiveControllerHost & Element,\n config: MutationControllerConfig<T>\n) {\n return new MutationController(host, config);\n}\n"]}
@@ -8,14 +8,16 @@ type RootClickControllerHost = ReactiveControllerHost & HTMLElement & {
8
8
  keepOpenOnOutsideClick?: boolean;
9
9
  hide(): void;
10
10
  };
11
- declare class RootClickController implements ReactiveController {
11
+ export declare class RootClickController implements ReactiveController {
12
12
  private readonly host;
13
13
  private config?;
14
+ disabled: boolean;
14
15
  constructor(host: RootClickControllerHost, config?: RootClickControllerConfig | undefined);
15
16
  private addEventListeners;
16
17
  private removeEventListeners;
17
18
  private configureListeners;
18
- handleEvent(event: MouseEvent): void;
19
+ private shouldHide;
20
+ handleEvent(event: PointerEvent): void;
19
21
  private hide;
20
22
  update(config?: RootClickControllerConfig): void;
21
23
  hostConnected(): void;