igniteui-webcomponents 7.3.2 → 7.4.1

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 (478) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/animations/easings.d.ts +21 -31
  3. package/animations/easings.js +21 -34
  4. package/animations/easings.js.map +1 -1
  5. package/animations/player.d.ts +8 -16
  6. package/animations/player.js +5 -8
  7. package/animations/player.js.map +1 -1
  8. package/animations/view-transition.d.ts +10 -10
  9. package/animations/view-transition.js +26 -37
  10. package/animations/view-transition.js.map +1 -1
  11. package/components/breadcrumb/breadcrumb.d.ts +74 -0
  12. package/components/breadcrumb/breadcrumb.js +107 -0
  13. package/components/breadcrumb/breadcrumb.js.map +1 -0
  14. package/components/breadcrumb/breadcrumbs.d.ts +60 -0
  15. package/components/breadcrumb/breadcrumbs.js +50 -0
  16. package/components/breadcrumb/breadcrumbs.js.map +1 -0
  17. package/components/breadcrumb/themes/breadcrumb.base.css.js +3 -0
  18. package/components/breadcrumb/themes/breadcrumb.base.css.js.map +1 -0
  19. package/components/breadcrumb/themes/breadcrumbs.base.css.d.ts +1 -0
  20. package/components/{resize-container/themes/resize-container.base.css.js → breadcrumb/themes/breadcrumbs.base.css.js} +2 -2
  21. package/components/breadcrumb/themes/breadcrumbs.base.css.js.map +1 -0
  22. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.d.ts +1 -0
  23. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js +3 -0
  24. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js.map +1 -0
  25. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.d.ts +1 -0
  26. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js +3 -0
  27. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js.map +1 -0
  28. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.d.ts +1 -0
  29. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js +3 -0
  30. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js.map +1 -0
  31. package/components/breadcrumb/themes/dark/breadcrumb.material.css.d.ts +1 -0
  32. package/components/breadcrumb/themes/dark/breadcrumb.material.css.js +3 -0
  33. package/components/breadcrumb/themes/dark/breadcrumb.material.css.js.map +1 -0
  34. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.d.ts +1 -0
  35. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js +3 -0
  36. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js.map +1 -0
  37. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.d.ts +1 -0
  38. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js +3 -0
  39. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js.map +1 -0
  40. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.d.ts +1 -0
  41. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js +3 -0
  42. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js.map +1 -0
  43. package/components/breadcrumb/themes/light/breadcrumb.material.css.d.ts +1 -0
  44. package/components/breadcrumb/themes/light/breadcrumb.material.css.js +3 -0
  45. package/components/breadcrumb/themes/light/breadcrumb.material.css.js.map +1 -0
  46. package/components/breadcrumb/themes/light/breadcrumb.shared.css.d.ts +1 -0
  47. package/components/breadcrumb/themes/light/breadcrumb.shared.css.js +3 -0
  48. package/components/breadcrumb/themes/light/breadcrumb.shared.css.js.map +1 -0
  49. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.d.ts +1 -0
  50. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js +3 -0
  51. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js.map +1 -0
  52. package/components/breadcrumb/themes/shared/breadcrumb.common.css.d.ts +1 -0
  53. package/components/breadcrumb/themes/shared/breadcrumb.common.css.js +3 -0
  54. package/components/breadcrumb/themes/shared/breadcrumb.common.css.js.map +1 -0
  55. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.d.ts +1 -0
  56. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js +3 -0
  57. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js.map +1 -0
  58. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.d.ts +1 -0
  59. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js +3 -0
  60. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js.map +1 -0
  61. package/components/breadcrumb/themes/shared/breadcrumb.material.css.d.ts +1 -0
  62. package/components/breadcrumb/themes/shared/breadcrumb.material.css.js +3 -0
  63. package/components/breadcrumb/themes/shared/breadcrumb.material.css.js.map +1 -0
  64. package/components/breadcrumb/themes/themes.d.ts +2 -0
  65. package/components/breadcrumb/themes/themes.js +50 -0
  66. package/components/breadcrumb/themes/themes.js.map +1 -0
  67. package/components/button/button.d.ts +0 -2
  68. package/components/button/button.js.map +1 -1
  69. package/components/button-group/button-group.d.ts +42 -12
  70. package/components/button-group/button-group.js +82 -34
  71. package/components/button-group/button-group.js.map +1 -1
  72. package/components/button-group/toggle-button.d.ts +6 -1
  73. package/components/button-group/toggle-button.js +28 -2
  74. package/components/button-group/toggle-button.js.map +1 -1
  75. package/components/calendar/base.js +2 -1
  76. package/components/calendar/base.js.map +1 -1
  77. package/components/calendar/calendar.d.ts +2 -3
  78. package/components/calendar/calendar.js.map +1 -1
  79. package/components/calendar/days-view/days-view.d.ts +2 -2
  80. package/components/calendar/days-view/days-view.js.map +1 -1
  81. package/components/carousel/carousel-indicator.js +1 -0
  82. package/components/carousel/carousel-indicator.js.map +1 -1
  83. package/components/carousel/carousel-slide.d.ts +1 -1
  84. package/components/carousel/carousel-slide.js.map +1 -1
  85. package/components/carousel/carousel.d.ts +3 -3
  86. package/components/carousel/carousel.js.map +1 -1
  87. package/components/chat/chat-input.d.ts +1 -2
  88. package/components/chat/chat-input.js +1 -1
  89. package/components/chat/chat-input.js.map +1 -1
  90. package/components/chat/chat-state.d.ts +8 -9
  91. package/components/chat/chat-state.js.map +1 -1
  92. package/components/chat/chat.d.ts +1 -3
  93. package/components/chat/chat.js +2 -2
  94. package/components/chat/chat.js.map +1 -1
  95. package/components/chat/message-attachments.d.ts +6 -15
  96. package/components/chat/message-attachments.js.map +1 -1
  97. package/components/chat/utils.d.ts +0 -1
  98. package/components/chat/utils.js +1 -1
  99. package/components/chat/utils.js.map +1 -1
  100. package/components/checkbox/checkbox-base.d.ts +3 -1
  101. package/components/checkbox/checkbox-base.js +4 -0
  102. package/components/checkbox/checkbox-base.js.map +1 -1
  103. package/components/checkbox/checkbox.js +4 -12
  104. package/components/checkbox/checkbox.js.map +1 -1
  105. package/components/checkbox/switch.js +1 -8
  106. package/components/checkbox/switch.js.map +1 -1
  107. package/components/chip/chip.d.ts +2 -2
  108. package/components/chip/chip.js.map +1 -1
  109. package/components/color-picker/color-picker.d.ts +35 -34
  110. package/components/color-picker/color-picker.js +12 -7
  111. package/components/color-picker/color-picker.js.map +1 -1
  112. package/components/color-picker/common.d.ts +0 -2
  113. package/components/color-picker/common.js +2 -2
  114. package/components/color-picker/common.js.map +1 -1
  115. package/components/color-picker/converters.js.map +1 -1
  116. package/components/color-picker/picker-canvas.js.map +1 -1
  117. package/components/combo/combo.d.ts +24 -24
  118. package/components/combo/combo.js +21 -26
  119. package/components/combo/combo.js.map +1 -1
  120. package/components/combo/controllers/data.d.ts +7 -10
  121. package/components/combo/controllers/data.js.map +1 -1
  122. package/components/date-picker/date-picker.base.d.ts +22 -27
  123. package/components/date-picker/date-picker.base.js +9 -3
  124. package/components/date-picker/date-picker.base.js.map +1 -1
  125. package/components/date-picker/date-picker.d.ts +1 -1
  126. package/components/date-picker/date-picker.js +5 -3
  127. package/components/date-picker/date-picker.js.map +1 -1
  128. package/components/date-range-picker/date-range-input.d.ts +0 -2
  129. package/components/date-range-picker/date-range-input.js +0 -6
  130. package/components/date-range-picker/date-range-input.js.map +1 -1
  131. package/components/date-range-picker/date-range-picker.d.ts +22 -31
  132. package/components/date-range-picker/date-range-picker.js +7 -7
  133. package/components/date-range-picker/date-range-picker.js.map +1 -1
  134. package/components/date-range-picker/i18n.d.ts +21 -0
  135. package/components/date-range-picker/i18n.js +10 -0
  136. package/components/date-range-picker/i18n.js.map +1 -0
  137. package/components/date-range-picker/predefined-ranges-area.d.ts +3 -3
  138. package/components/date-range-picker/predefined-ranges-area.js +2 -5
  139. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  140. package/components/date-range-picker/validators.d.ts +0 -4
  141. package/components/date-range-picker/validators.js +4 -4
  142. package/components/date-range-picker/validators.js.map +1 -1
  143. package/components/date-time-input/date-time-input.base.d.ts +42 -40
  144. package/components/date-time-input/date-time-input.base.js +9 -5
  145. package/components/date-time-input/date-time-input.base.js.map +1 -1
  146. package/components/date-time-input/date-time-input.d.ts +1 -11
  147. package/components/date-time-input/date-time-input.js +0 -6
  148. package/components/date-time-input/date-time-input.js.map +1 -1
  149. package/components/date-time-input/datetime-mask-parser.d.ts +0 -10
  150. package/components/date-time-input/datetime-mask-parser.js +1 -1
  151. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  152. package/components/dialog/dialog.js.map +1 -1
  153. package/components/dropdown/dropdown-group.d.ts +2 -10
  154. package/components/dropdown/dropdown-group.js +2 -27
  155. package/components/dropdown/dropdown-group.js.map +1 -1
  156. package/components/dropdown/dropdown.d.ts +17 -23
  157. package/components/dropdown/dropdown.js +5 -17
  158. package/components/dropdown/dropdown.js.map +1 -1
  159. package/components/file-input/file-input.d.ts +7 -2
  160. package/components/file-input/file-input.js +4 -0
  161. package/components/file-input/file-input.js.map +1 -1
  162. package/components/icon/icon.d.ts +1 -1
  163. package/components/icon/icon.registry.d.ts +6 -6
  164. package/components/icon/icon.registry.js.map +1 -1
  165. package/components/input/input-base.d.ts +2 -2
  166. package/components/input/input-base.js +3 -5
  167. package/components/input/input-base.js.map +1 -1
  168. package/components/input/input.d.ts +3 -3
  169. package/components/input/input.js.map +1 -1
  170. package/components/mask-input/mask-history.d.ts +22 -18
  171. package/components/mask-input/mask-history.js.map +1 -1
  172. package/components/mask-input/mask-input.d.ts +1 -1
  173. package/components/mask-input/mask-parser.d.ts +11 -13
  174. package/components/mask-input/mask-parser.js.map +1 -1
  175. package/components/popover/popover.d.ts +45 -34
  176. package/components/popover/popover.js +54 -122
  177. package/components/popover/popover.js.map +1 -1
  178. package/components/popover/position/arrow.d.ts +19 -0
  179. package/components/popover/position/arrow.js +33 -0
  180. package/components/popover/position/arrow.js.map +1 -0
  181. package/components/popover/position/floating.d.ts +40 -0
  182. package/components/popover/position/floating.js +146 -0
  183. package/components/popover/position/floating.js.map +1 -0
  184. package/components/popover/position/native.d.ts +45 -0
  185. package/components/popover/position/native.js +158 -0
  186. package/components/popover/position/native.js.map +1 -0
  187. package/components/popover/position/strategy.d.ts +37 -0
  188. package/components/popover/position/strategy.js +21 -0
  189. package/components/popover/position/strategy.js.map +1 -0
  190. package/components/popover/position/types.d.ts +26 -0
  191. package/components/popover/position/types.js +15 -0
  192. package/components/popover/position/types.js.map +1 -0
  193. package/components/popover/themes/light/popover.base.css.js +1 -1
  194. package/components/popover/themes/light/popover.base.css.js.map +1 -1
  195. package/components/progress/circular-progress.d.ts +0 -5
  196. package/components/progress/circular-progress.js.map +1 -1
  197. package/components/qr-code/qr-code.d.ts +1 -1
  198. package/components/radio/radio.d.ts +6 -4
  199. package/components/radio/radio.js +24 -25
  200. package/components/radio/radio.js.map +1 -1
  201. package/components/radio-group/radio-group.js.map +1 -1
  202. package/components/rating/rating.d.ts +9 -6
  203. package/components/rating/rating.js +17 -18
  204. package/components/rating/rating.js.map +1 -1
  205. package/components/select/select-group.d.ts +5 -10
  206. package/components/select/select-group.js +10 -34
  207. package/components/select/select-group.js.map +1 -1
  208. package/components/select/select.d.ts +12 -20
  209. package/components/select/select.js +5 -15
  210. package/components/select/select.js.map +1 -1
  211. package/components/slider/range-slider.d.ts +0 -1
  212. package/components/slider/range-slider.js +6 -11
  213. package/components/slider/range-slider.js.map +1 -1
  214. package/components/slider/slider-base.d.ts +4 -1
  215. package/components/slider/slider-base.js +20 -18
  216. package/components/slider/slider-base.js.map +1 -1
  217. package/components/slider/slider.d.ts +2 -0
  218. package/components/slider/slider.js +5 -1
  219. package/components/slider/slider.js.map +1 -1
  220. package/components/splitter/splitter.d.ts +6 -6
  221. package/components/splitter/splitter.js.map +1 -1
  222. package/components/textarea/textarea.d.ts +2 -5
  223. package/components/textarea/textarea.js +3 -5
  224. package/components/textarea/textarea.js.map +1 -1
  225. package/components/tile-manager/tile-manager.d.ts +6 -7
  226. package/components/tile-manager/tile-manager.js.map +1 -1
  227. package/components/tile-manager/tile.d.ts +3 -3
  228. package/components/tile-manager/tile.js.map +1 -1
  229. package/components/toast/toast.d.ts +0 -2
  230. package/components/toast/toast.js.map +1 -1
  231. package/components/tooltip/controller.js.map +1 -1
  232. package/components/tooltip/service.js +4 -5
  233. package/components/tooltip/service.js.map +1 -1
  234. package/components/tooltip/tooltip.d.ts +34 -13
  235. package/components/tooltip/tooltip.js +8 -4
  236. package/components/tooltip/tooltip.js.map +1 -1
  237. package/components/tree/tree-item.d.ts +6 -6
  238. package/components/tree/tree-item.js.map +1 -1
  239. package/components/tree/tree.navigation.d.ts +5 -6
  240. package/components/tree/tree.navigation.js.map +1 -1
  241. package/components/tree/tree.selection.js.map +1 -1
  242. package/components/types.d.ts +1 -1
  243. package/components/types.js.map +1 -1
  244. package/components/validation-container/validation-container.js +2 -1
  245. package/components/validation-container/validation-container.js.map +1 -1
  246. package/components/virtualization/engine.d.ts +40 -9
  247. package/components/virtualization/engine.js +126 -61
  248. package/components/virtualization/engine.js.map +1 -1
  249. package/components/virtualization/recycle.d.ts +13 -0
  250. package/components/virtualization/recycle.js +152 -0
  251. package/components/virtualization/recycle.js.map +1 -0
  252. package/components/virtualization/virtualization.d.ts +84 -65
  253. package/components/virtualization/virtualization.js +20 -16
  254. package/components/virtualization/virtualization.js.map +1 -1
  255. package/custom-elements.json +18455 -19551
  256. package/igniteui-webcomponents.css-data.json +2 -2
  257. package/igniteui-webcomponents.html-data.json +1 -1
  258. package/index.d.ts +3 -1
  259. package/index.js +2 -0
  260. package/index.js.map +1 -1
  261. package/internals/abort-handler.d.ts +13 -25
  262. package/internals/abort-handler.js +4 -6
  263. package/internals/abort-handler.js.map +1 -1
  264. package/internals/context.d.ts +13 -7
  265. package/internals/context.js +2 -1
  266. package/internals/context.js.map +1 -1
  267. package/internals/controllers/adopt-styles.d.ts +19 -20
  268. package/internals/controllers/adopt-styles.js +3 -8
  269. package/internals/controllers/adopt-styles.js.map +1 -1
  270. package/internals/controllers/aria-projection.d.ts +100 -61
  271. package/internals/controllers/aria-projection.js +81 -31
  272. package/internals/controllers/aria-projection.js.map +1 -1
  273. package/internals/controllers/async-consumer.js.map +1 -1
  274. package/internals/controllers/command.d.ts +15 -30
  275. package/internals/controllers/command.js +2 -7
  276. package/internals/controllers/command.js.map +1 -1
  277. package/internals/controllers/context-provider.d.ts +7 -13
  278. package/internals/controllers/context-provider.js.map +1 -1
  279. package/internals/controllers/focus-ring.d.ts +10 -30
  280. package/internals/controllers/focus-ring.js +6 -12
  281. package/internals/controllers/focus-ring.js.map +1 -1
  282. package/internals/controllers/fullscreen.d.ts +7 -23
  283. package/internals/controllers/fullscreen.js +3 -9
  284. package/internals/controllers/fullscreen.js.map +1 -1
  285. package/internals/controllers/gestures.d.ts +10 -29
  286. package/internals/controllers/gestures.js +1 -3
  287. package/internals/controllers/gestures.js.map +1 -1
  288. package/internals/controllers/group.d.ts +13 -30
  289. package/internals/controllers/group.js.map +1 -1
  290. package/internals/controllers/host-listeners.d.ts +28 -0
  291. package/internals/controllers/host-listeners.js +27 -0
  292. package/internals/controllers/host-listeners.js.map +1 -0
  293. package/internals/controllers/id-resolver.d.ts +8 -9
  294. package/internals/controllers/id-resolver.js +6 -14
  295. package/internals/controllers/id-resolver.js.map +1 -1
  296. package/internals/controllers/internals.d.ts +53 -104
  297. package/internals/controllers/internals.js +40 -13
  298. package/internals/controllers/internals.js.map +1 -1
  299. package/internals/controllers/key-bindings.d.ts +61 -158
  300. package/internals/controllers/key-bindings.js +68 -67
  301. package/internals/controllers/key-bindings.js.map +1 -1
  302. package/internals/controllers/keys.d.ts +32 -0
  303. package/internals/controllers/keys.js +20 -0
  304. package/internals/controllers/keys.js.map +1 -0
  305. package/internals/controllers/mutation-observer.d.ts +14 -37
  306. package/internals/controllers/mutation-observer.js +1 -1
  307. package/internals/controllers/mutation-observer.js.map +1 -1
  308. package/internals/controllers/resize-observer.d.ts +9 -19
  309. package/internals/controllers/resize-observer.js.map +1 -1
  310. package/internals/controllers/root-click.d.ts +11 -42
  311. package/internals/controllers/root-click.js +4 -6
  312. package/internals/controllers/root-click.js.map +1 -1
  313. package/internals/controllers/roving-focus.d.ts +16 -35
  314. package/internals/controllers/roving-focus.js.map +1 -1
  315. package/internals/controllers/slot.d.ts +25 -54
  316. package/internals/controllers/slot.js +6 -6
  317. package/internals/controllers/slot.js.map +1 -1
  318. package/internals/controllers/toggle.d.ts +44 -48
  319. package/internals/controllers/toggle.js.map +1 -1
  320. package/internals/date/compare.js.map +1 -1
  321. package/internals/date/converters.d.ts +10 -7
  322. package/internals/date/converters.js.map +1 -1
  323. package/internals/date/model.d.ts +9 -16
  324. package/internals/date/model.js +22 -25
  325. package/internals/date/model.js.map +1 -1
  326. package/internals/decorators/blazorAdditionalDependencies.d.ts +4 -2
  327. package/internals/decorators/blazorAdditionalDependencies.js.map +1 -1
  328. package/internals/decorators/blazorDeepImport.d.ts +1 -3
  329. package/internals/decorators/blazorDeepImport.js.map +1 -1
  330. package/internals/decorators/blazorInclude.d.ts +3 -2
  331. package/internals/decorators/blazorInclude.js.map +1 -1
  332. package/internals/decorators/blazorIndirectRender.d.ts +1 -3
  333. package/internals/decorators/blazorIndirectRender.js.map +1 -1
  334. package/internals/decorators/blazorSuppressComponent.d.ts +1 -3
  335. package/internals/decorators/blazorSuppressComponent.js.map +1 -1
  336. package/internals/decorators/coerced-property.d.ts +14 -20
  337. package/internals/decorators/coerced-property.js.map +1 -1
  338. package/internals/decorators/shadow-options.d.ts +2 -5
  339. package/internals/decorators/shadow-options.js.map +1 -1
  340. package/internals/definitions/defineAllComponents.js +2 -0
  341. package/internals/definitions/defineAllComponents.js.map +1 -1
  342. package/internals/directives/drag.d.ts +51 -81
  343. package/internals/directives/drag.js +27 -89
  344. package/internals/directives/drag.js.map +1 -1
  345. package/internals/directives/pointer-operation.d.ts +75 -0
  346. package/internals/directives/pointer-operation.js +92 -0
  347. package/internals/directives/pointer-operation.js.map +1 -0
  348. package/internals/directives/resize.d.ts +36 -64
  349. package/internals/directives/resize.js +18 -85
  350. package/internals/directives/resize.js.map +1 -1
  351. package/internals/i18n/EN/calendar.resources.d.ts +8 -2
  352. package/internals/i18n/EN/calendar.resources.js +2 -2
  353. package/internals/i18n/EN/calendar.resources.js.map +1 -1
  354. package/internals/i18n/EN/chat.resources.d.ts +8 -2
  355. package/internals/i18n/EN/chat.resources.js +3 -10
  356. package/internals/i18n/EN/chat.resources.js.map +1 -1
  357. package/internals/i18n/EN/date-picker.resources.d.ts +6 -4
  358. package/internals/i18n/EN/date-picker.resources.js +1 -7
  359. package/internals/i18n/EN/date-picker.resources.js.map +1 -1
  360. package/internals/i18n/EN/date-range-picker.resources.d.ts +9 -2
  361. package/internals/i18n/EN/date-range-picker.resources.js +2 -2
  362. package/internals/i18n/EN/date-range-picker.resources.js.map +1 -1
  363. package/internals/i18n/i18n-controller.d.ts +44 -46
  364. package/internals/i18n/i18n-controller.js +46 -33
  365. package/internals/i18n/i18n-controller.js.map +1 -1
  366. package/internals/i18n/utils.d.ts +9 -4
  367. package/internals/i18n/utils.js +4 -27
  368. package/internals/i18n/utils.js.map +1 -1
  369. package/internals/mixins/alert.d.ts +10 -25
  370. package/internals/mixins/alert.js.map +1 -1
  371. package/internals/mixins/combo-box.d.ts +21 -11
  372. package/internals/mixins/combo-box.js +16 -22
  373. package/internals/mixins/combo-box.js.map +1 -1
  374. package/internals/mixins/event-emitter.js +9 -11
  375. package/internals/mixins/event-emitter.js.map +1 -1
  376. package/internals/mixins/forms/associated-required.d.ts +4 -4
  377. package/internals/mixins/forms/associated-required.js.map +1 -1
  378. package/internals/mixins/forms/associated.d.ts +4 -2
  379. package/internals/mixins/forms/associated.js +42 -19
  380. package/internals/mixins/forms/associated.js.map +1 -1
  381. package/internals/mixins/forms/form-transformers.js.map +1 -1
  382. package/internals/mixins/forms/types.d.ts +27 -78
  383. package/internals/mixins/forms/types.js.map +1 -1
  384. package/internals/mixins/group.d.ts +18 -0
  385. package/internals/mixins/group.js +37 -0
  386. package/internals/mixins/group.js.map +1 -0
  387. package/internals/mixins/i18n.d.ts +10 -16
  388. package/internals/mixins/i18n.js.map +1 -1
  389. package/internals/mixins/mask-behavior.d.ts +8 -22
  390. package/internals/mixins/mask-behavior.js +1 -2
  391. package/internals/mixins/mask-behavior.js.map +1 -1
  392. package/internals/mixins/option.d.ts +1 -2
  393. package/internals/mixins/option.js +2 -1
  394. package/internals/mixins/option.js.map +1 -1
  395. package/internals/part-map.d.ts +4 -2
  396. package/internals/part-map.js +1 -1
  397. package/internals/part-map.js.map +1 -1
  398. package/internals/templates/input-shell.d.ts +8 -17
  399. package/internals/templates/input-shell.js +4 -1
  400. package/internals/templates/input-shell.js.map +1 -1
  401. package/internals/templates/masked-input.d.ts +7 -8
  402. package/internals/templates/masked-input.js.map +1 -1
  403. package/internals/templates/slotted-icon.d.ts +7 -12
  404. package/internals/templates/slotted-icon.js.map +1 -1
  405. package/internals/templates/toggle-shell.d.ts +19 -19
  406. package/internals/templates/toggle-shell.js +12 -8
  407. package/internals/templates/toggle-shell.js.map +1 -1
  408. package/internals/timing.d.ts +5 -14
  409. package/internals/timing.js.map +1 -1
  410. package/internals/utils/arrays.d.ts +21 -21
  411. package/internals/utils/arrays.js +14 -0
  412. package/internals/utils/arrays.js.map +1 -1
  413. package/internals/utils/dom.d.ts +53 -41
  414. package/internals/utils/dom.js +3 -4
  415. package/internals/utils/dom.js.map +1 -1
  416. package/internals/utils/events.d.ts +29 -16
  417. package/internals/utils/events.js +9 -1
  418. package/internals/utils/events.js.map +1 -1
  419. package/internals/utils/lit.d.ts +5 -2
  420. package/internals/utils/lit.js.map +1 -1
  421. package/internals/utils/math.d.ts +8 -6
  422. package/internals/utils/math.js.map +1 -1
  423. package/internals/utils/objects.d.ts +3 -20
  424. package/internals/utils/objects.js +1 -39
  425. package/internals/utils/objects.js.map +1 -1
  426. package/internals/utils/strings.d.ts +9 -11
  427. package/internals/utils/strings.js.map +1 -1
  428. package/internals/utils/types.d.ts +16 -3
  429. package/internals/utils/types.js +3 -0
  430. package/internals/utils/types.js.map +1 -1
  431. package/internals/validators.d.ts +9 -8
  432. package/internals/validators.js +12 -6
  433. package/internals/validators.js.map +1 -1
  434. package/package.json +1 -1
  435. package/skills/README.md +4 -3
  436. package/skills/igniteui-wc-choose-components/SKILL.md +2 -1
  437. package/skills/igniteui-wc-customize-component-theme/SKILL.md +2 -1
  438. package/skills/igniteui-wc-figma-to-app/SKILL.md +328 -0
  439. package/skills/igniteui-wc-figma-to-app/references/asset-extraction.md +343 -0
  440. package/skills/igniteui-wc-figma-to-app/references/design-provenance.md +199 -0
  441. package/skills/igniteui-wc-figma-to-app/references/design-token-bridge.md +489 -0
  442. package/skills/igniteui-wc-figma-to-app/references/figma-component-map.md +370 -0
  443. package/skills/igniteui-wc-figma-to-app/references/figma-exploration.md +222 -0
  444. package/skills/igniteui-wc-figma-to-app/references/mcp-setup.md +363 -0
  445. package/skills/igniteui-wc-figma-to-app/references/project-setup.md +105 -0
  446. package/skills/igniteui-wc-figma-to-app/references/theme-generation.md +180 -0
  447. package/skills/igniteui-wc-figma-to-app/references/validation-patterns.md +370 -0
  448. package/skills/igniteui-wc-generate-from-image-design/SKILL.md +2 -1
  449. package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +3 -3
  450. package/skills/igniteui-wc-grids/SKILL.md +133 -0
  451. package/skills/igniteui-wc-integrate-with-framework/SKILL.md +2 -1
  452. package/skills/igniteui-wc-migrate-grid-lite-to-premium/SKILL.md +2 -1
  453. package/skills/igniteui-wc-optimize-bundle-size/SKILL.md +2 -1
  454. package/theming/config.d.ts +14 -5
  455. package/theming/config.js +38 -18
  456. package/theming/config.js.map +1 -1
  457. package/theming/context.d.ts +1 -23
  458. package/theming/context.js.map +1 -1
  459. package/theming/theming-controller.d.ts +2 -32
  460. package/theming/theming-controller.js +15 -21
  461. package/theming/theming-controller.js.map +1 -1
  462. package/theming/theming-event.d.ts +0 -7
  463. package/theming/theming-event.js +0 -13
  464. package/theming/theming-event.js.map +1 -1
  465. package/theming/types.d.ts +1 -8
  466. package/theming/types.js.map +1 -1
  467. package/web-types.json +3 -3
  468. package/animations/presets/slide/index.d.ts +0 -3
  469. package/animations/presets/slide/index.js +0 -16
  470. package/animations/presets/slide/index.js.map +0 -1
  471. package/components/resize-container/themes/resize-container.base.css.js.map +0 -1
  472. package/internals/controllers/root-scroll.d.ts +0 -31
  473. package/internals/controllers/root-scroll.js +0 -71
  474. package/internals/controllers/root-scroll.js.map +0 -1
  475. package/theming/utils.d.ts +0 -11
  476. package/theming/utils.js +0 -20
  477. package/theming/utils.js.map +0 -1
  478. /package/components/{resize-container/themes/resize-container.base.css.d.ts → breadcrumb/themes/breadcrumb.base.css.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"slider-base.js","sourceRoot":"","sources":["../../../src/components/slider/slider-base.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n LitElement,\n nothing,\n type PropertyValues,\n type TemplateResult,\n} 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 { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n pageDownKey,\n pageUpKey,\n} from '#internals/controllers/key-bindings.js';\nimport { blazorDeepImport } from '#internals/decorators/blazorDeepImport.js';\nimport { coercedProperty } from '#internals/decorators/coerced-property.js';\nimport { createTimer } from '#internals/timing.js';\nimport { isLTR } from '#internals/utils/dom.js';\nimport { addSafeEventListener } from '#internals/utils/events.js';\nimport { asNumber, asPercent, clamp } from '#internals/utils/math.js';\nimport { formatString } from '#internals/utils/strings.js';\nimport { isDefined } from '#internals/utils/types.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type {\n SliderTickLabelRotation,\n SliderTickOrientation,\n} from '../types.js';\nimport { styles as shared } from './themes/shared/slider.common.css.js';\nimport { styles } from './themes/slider.base.css.js';\nimport { all } from './themes/themes.js';\n\n@blazorDeepImport\nexport class IgcSliderBaseComponent extends LitElement {\n public static override styles = [styles, shared];\n\n @query(`[part~='thumb']`)\n protected thumb!: HTMLElement;\n\n @query(`[part='base']`, true)\n protected base!: HTMLDivElement;\n\n @queryAssignedElements({ selector: 'igc-slider-label' })\n private labelElements!: HTMLElement[];\n\n private _min = 0;\n private _max = 100;\n private _lowerBound?: number;\n private _upperBound?: number;\n private startValue?: number;\n private pointerCaptured = false;\n protected activeThumb?: HTMLElement;\n\n private readonly _thumbLabelTimer = createTimer(() => {\n this.thumbLabelsVisible = false;\n }, 750);\n\n @state()\n protected thumbLabelsVisible = false;\n\n @state()\n protected labels: string[] = [];\n\n protected get hasLabels() {\n return this.labels?.length > 0;\n }\n\n protected get distance() {\n return this.max - this.min;\n }\n\n /**\n * The minimum value of the slider scale. Defaults to 0.\n *\n * If `min` is greater than `max` the call is a no-op.\n *\n * If `labels` are provided (projected), then `min` is always set to 0.\n *\n * If `lowerBound` ends up being less than than the current `min` value,\n * it is automatically assigned the new `min` value.\n * @attr\n */\n @property({ type: Number })\n public set min(value: number) {\n if (!isDefined(value) || value > this.max) {\n return;\n }\n\n this._min = this.hasLabels ? 0 : value;\n\n if (isDefined(this._lowerBound) && this._lowerBound! < value) {\n this._lowerBound = value;\n }\n }\n\n public get min(): number {\n return this._min;\n }\n\n /**\n * The maximum value of the slider scale. Defaults to 100.\n *\n * If `max` is less than `min` the call is a no-op.\n *\n * If `labels` are provided (projected), then `max` is always set to\n * the number of labels.\n *\n * If `upperBound` ends up being greater than than the current `max` value,\n * it is automatically assigned the new `max` value.\n * @attr\n */\n @property({ type: Number })\n public set max(value: number) {\n if (!isDefined(value) || value < this._min) {\n return;\n }\n\n this._max = this.hasLabels ? this.labels.length - 1 : value;\n\n if (isDefined(this._upperBound) && this._upperBound! > value) {\n this._upperBound = value;\n }\n }\n\n public get max(): number {\n return this._max;\n }\n\n /**\n * The lower bound of the slider value. If not set, the `min` value is applied.\n * @attr lower-bound\n */\n @property({ type: Number, attribute: 'lower-bound' })\n public set lowerBound(value: number) {\n if (!isDefined(value)) return;\n this._lowerBound = Math.min(this._upperBound ?? value, value);\n }\n\n public get lowerBound(): number {\n const current = this._lowerBound ?? this._min;\n const upper = Math.min(this._upperBound ?? this._max, this._max);\n\n return clamp(current, this._min, upper);\n }\n\n /**\n * The upper bound of the slider value. If not set, the `max` value is applied.\n * @attr upper-bound\n */\n @property({ type: Number, attribute: 'upper-bound' })\n public set upperBound(value: number) {\n if (!isDefined(value)) return;\n this._upperBound = Math.max(this._lowerBound ?? value, value);\n }\n\n public get upperBound(): number {\n const current = this._upperBound ?? this._max;\n const lower = Math.max(this._lowerBound ?? this._min, this.min);\n\n return clamp(current, lower, this._max);\n }\n\n /**\n * Disables the UI interactions of the slider.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /**\n * Marks the slider track as discrete so it displays the steps.\n * If the `step` is 0, the slider will remain continuos even if `discreteTrack` is `true`.\n * @attr discrete-track\n */\n @property({ type: Boolean, attribute: 'discrete-track' })\n public discreteTrack = false;\n\n /**\n * Hides the thumb tooltip.\n * @attr hide-tooltip\n */\n @property({ type: Boolean, attribute: 'hide-tooltip' })\n public hideTooltip = false;\n\n /**\n * Specifies the granularity that the value must adhere to.\n *\n * If set to 0 no stepping is implied and any value in the range is allowed.\n * If `labels` are provided (projected) then the step is always assumed to be 1 since it is a discrete slider.\n *\n * @attr\n */\n @property({ type: Number })\n @coercedProperty<number, IgcSliderBaseComponent>({\n transform: ({ value, host, previous }) =>\n host.hasLabels ? 1 : asNumber(value, previous ?? 1),\n })\n public step = 1;\n\n /**\n * The number of primary ticks. It defaults to 0 which means no primary ticks are displayed.\n * @attr primary-ticks\n */\n @property({ type: Number, attribute: 'primary-ticks' })\n public primaryTicks = 0;\n\n /**\n * The number of secondary ticks. It defaults to 0 which means no secondary ticks are displayed.\n * @attr secondary-ticks\n */\n @property({ type: Number, attribute: 'secondary-ticks' })\n public secondaryTicks = 0;\n\n /**\n * Changes the orientation of the ticks.\n * @attr tick-orientation\n */\n @property({ attribute: 'tick-orientation' })\n public tickOrientation: SliderTickOrientation = 'end';\n\n /**\n * Hides the primary tick labels.\n * @attr hide-primary-labels\n */\n @property({ type: Boolean, attribute: 'hide-primary-labels' })\n public hidePrimaryLabels = false;\n\n /**\n * Hides the secondary tick labels.\n * @attr hide-secondary-labels\n */\n @property({ type: Boolean, attribute: 'hide-secondary-labels' })\n public hideSecondaryLabels = false;\n\n /**\n * The locale used to format the thumb and tick label values in the slider.\n * @attr\n */\n @property()\n public locale = 'en';\n\n /**\n * String format used for the thumb and tick label values in the slider.\n * @attr value-format\n */\n @property({ attribute: 'value-format' })\n public valueFormat?: string;\n\n /**\n * Number format options used for the thumb and tick label values in the slider.\n */\n /* blazorSuppress */\n @property({ attribute: false })\n public valueFormatOptions?: Intl.NumberFormatOptions;\n\n /**\n * The degrees for the rotation of the tick labels. Defaults to 0.\n * @attr tick-label-rotation\n */\n @property({ type: Number, reflect: true, attribute: 'tick-label-rotation' })\n public tickLabelRotation: SliderTickLabelRotation = 0;\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n const constraintsChanged =\n changedProperties.has('min') ||\n changedProperties.has('max') ||\n changedProperties.has('lowerBound') ||\n changedProperties.has('upperBound') ||\n changedProperties.has('step');\n\n // The initial update included - attributes are applied in markup order, so\n // a value can arrive validated against a constraint that is not final yet.\n if (constraintsChanged) {\n this.normalizeValue();\n }\n }\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addSafeEventListener(this, 'pointerdown', this.pointerDown);\n addSafeEventListener(this, 'pointermove', this.pointerMove);\n addSafeEventListener(this, 'lostpointercapture', this.lostPointerCapture);\n addSafeEventListener(this, 'keyup', this.handleKeyUp);\n\n addKeybindings(this, {\n skip: () => this.disabled,\n })\n .set(arrowLeft, () => this.handleArrowKeys(isLTR(this) ? -1 : 1))\n .set(arrowRight, () => this.handleArrowKeys(isLTR(this) ? 1 : -1))\n .set(arrowUp, () => this.handleArrowKeys(1))\n .set(arrowDown, () => this.handleArrowKeys(-1))\n .set(homeKey, () =>\n this.handleKeyboardIncrement(this.lowerBound - this.activeValue)\n )\n .set(endKey, () =>\n this.handleKeyboardIncrement(this.upperBound - this.activeValue)\n )\n .set(pageUpKey, () => this.handlePageKeys(1))\n .set(pageDownKey, () => this.handlePageKeys(-1));\n }\n\n private handleArrowKeys(delta: -1 | 1) {\n const step = this.step ? this.step : 1;\n this.handleKeyboardIncrement(step * delta);\n }\n\n private handlePageKeys(delta: -1 | 1) {\n const step = this.step ? this.step : 1;\n this.handleKeyboardIncrement(\n delta * Math.max((this.upperBound - this.lowerBound) / 10, step)\n );\n }\n\n private handleKeyboardIncrement(increment: number) {\n if (increment) {\n const updated = this.updateValue(increment);\n this.showThumbLabels();\n this.hideThumbLabels();\n\n if (updated) {\n this.emitChangeEvent();\n }\n }\n }\n\n private handleKeyUp() {\n this.activeThumb?.part.add('focused');\n }\n\n protected handleSlotChange() {\n this.labels = this.labelElements.map((label) => label.textContent ?? '');\n if (this.hasLabels) {\n this.min = 0;\n this.max = this.labels.length - 1;\n this.step = 1;\n }\n }\n\n /* c8 ignore next 3 */\n protected get activeValue() {\n return 0;\n }\n\n /* c8 ignore next */\n protected normalizeValue(): void {}\n\n /* c8 ignore next 3 */\n protected getTrackStyle(): StyleInfo {\n return {};\n }\n\n /* c8 ignore next 3 */\n protected updateValue(_increment: number): boolean {\n return false;\n }\n\n /* c8 ignore next 3 */\n protected renderThumbs(): TemplateResult<1> {\n return html``;\n }\n\n /* c8 ignore next */\n protected emitInputEvent() {}\n\n /* c8 ignore next */\n protected emitChangeEvent() {}\n\n protected validateValue(value: number) {\n return this.normalizeByStep(clamp(value, this.lowerBound, this.upperBound));\n }\n\n protected formatValue(value: number) {\n const strValue = value.toLocaleString(this.locale, this.valueFormatOptions);\n return this.valueFormat\n ? formatString(this.valueFormat, strValue)\n : strValue;\n }\n\n private normalizeByStep(value: number) {\n return this.step ? value - ((value - this.lowerBound) % this.step) : value;\n }\n\n protected closestHandle(_event: PointerEvent): HTMLElement {\n return this.thumb;\n }\n\n private totalTickCount() {\n const primaryTicks = this.hasLabels\n ? this.primaryTicks > 0\n ? this.labels.length\n : 0\n : this.primaryTicks === 1\n ? 2\n : this.primaryTicks;\n\n return primaryTicks > 0\n ? (primaryTicks - 1) * this.secondaryTicks + primaryTicks\n : this.secondaryTicks > 0\n ? this.secondaryTicks\n : 0;\n }\n\n private tickValue(idx: number) {\n const tickCount = this.totalTickCount();\n const distance = this.distance;\n const labelStep = tickCount > 1 ? distance / (tickCount - 1) : distance;\n const labelVal = labelStep * idx;\n\n return this.min + labelVal;\n }\n\n private isPrimary(idx: number) {\n return this.primaryTicks <= 0\n ? false\n : idx % (this.secondaryTicks + 1) === 0;\n }\n\n protected showThumbLabels() {\n if (this.disabled || this.hideTooltip) {\n return;\n }\n\n this._thumbLabelTimer.stop();\n this.thumbLabelsVisible = true;\n }\n\n protected hideThumbLabels() {\n if (this.pointerCaptured || !this.thumbLabelsVisible) {\n return;\n }\n\n this._thumbLabelTimer.start();\n }\n\n private calculateTrackUpdate(mouseX: number): number {\n const { width, left } = this.activeThumb!.getBoundingClientRect();\n const { width: trackWidth } = this.base.getBoundingClientRect();\n\n const thumbX = left + width / 2;\n const scale = trackWidth / this.distance;\n const change = isLTR(this) ? mouseX - thumbX : thumbX - mouseX;\n\n if (this.step) {\n const stepDistance = scale * this.step;\n\n // If the thumb scale range (slider update) is less than a half step,\n // the position stays the same.\n if (Math.abs(change) < stepDistance / 2) {\n return 0;\n }\n\n return Math.round(change / stepDistance) * this.step;\n }\n return change / scale;\n }\n\n private updateSlider(mouseX: number) {\n if (this.disabled || !this.activeThumb) {\n return;\n }\n\n const increment = this.calculateTrackUpdate(mouseX);\n if (increment !== 0) {\n this.updateValue(increment);\n }\n }\n\n private pointerDown(event: PointerEvent) {\n const thumb = this.closestHandle(event);\n thumb.focus();\n\n this.startValue = this.activeValue;\n this.updateSlider(event.clientX);\n\n this.setPointerCapture(event.pointerId);\n this.pointerCaptured = true;\n this.showThumbLabels();\n event.preventDefault();\n this.activeThumb?.part.remove('focused');\n }\n\n private pointerMove(event: PointerEvent) {\n if (this.pointerCaptured) {\n this.updateSlider(event.clientX);\n }\n }\n\n private lostPointerCapture() {\n this.pointerCaptured = false;\n this.hideThumbLabels();\n\n if (this.startValue! !== this.activeValue) {\n this.emitChangeEvent();\n }\n this.startValue = undefined;\n }\n\n protected handleThumbFocus(event: FocusEvent) {\n this.activeThumb = event.target as HTMLElement;\n }\n\n /**\n * The `aria-valuetext` of a thumb when neither projected labels nor value\n * formatting apply. Returning `undefined` omits the attribute.\n */\n protected _thumbAriaValueText(_thumbId?: string): string | undefined {\n return undefined;\n }\n\n protected handleThumbBlur() {\n this.activeThumb?.part.remove('focused');\n this.activeThumb = undefined;\n }\n\n protected *_renderTicks() {\n const total = this.totalTickCount();\n const secondaryTicks = this.secondaryTicks + 1;\n\n for (let i = 0; i < total; i++) {\n const primary = this.isPrimary(i);\n const shown = primary ? this.hidePrimaryLabels : this.hideSecondaryLabels;\n const labelInner = this.hasLabels\n ? primary\n ? this.labels[Math.round(i / secondaryTicks)]\n : nothing\n : this.formatValue(this.tickValue(i));\n\n yield html`<div part=\"tick-group\">\n <div part=\"tick\" data-primary=${primary}>\n ${\n shown\n ? nothing\n : html`\n <div part=\"tick-label\">\n <span part=\"tick-label-inner\">${labelInner}</span>\n </div>\n `\n }\n </div>\n </div>`;\n }\n }\n\n protected renderTicks() {\n return html`<div part=\"ticks\">${this._renderTicks()}</div>`;\n }\n\n protected renderThumb(value: number, ariaLabel?: string, thumbId?: string) {\n const percent = `${asPercent(value - this.min, this.distance)}%`;\n const thumbStyles = { insetInlineStart: percent };\n const tooltipStyles = {\n insetInlineStart: percent,\n opacity: this.thumbLabelsVisible ? 1 : 0,\n };\n\n const textValue = this.hasLabels\n ? this.labels[value]\n : this.valueFormat || this.valueFormatOptions\n ? this.formatValue(value)\n : this._thumbAriaValueText(thumbId);\n\n return html`\n <div\n part=\"thumb\"\n id=${ifDefined(thumbId)}\n tabindex=${this.disabled ? -1 : 0}\n style=${styleMap(thumbStyles)}\n role=\"slider\"\n aria-valuemin=${this.lowerBound}\n aria-valuemax=${this.upperBound}\n aria-valuenow=${value}\n aria-valuetext=${ifDefined(textValue)}\n aria-label=${ifDefined(ariaLabel)}\n aria-disabled=${this.disabled}\n @pointerenter=${this.showThumbLabels}\n @pointerleave=${this.hideThumbLabels}\n @focus=${this.handleThumbFocus}\n @blur=${this.handleThumbBlur}\n ></div>\n ${\n this.hideTooltip\n ? nothing\n : html`\n <div part=\"thumb-label\" style=${styleMap(tooltipStyles)}>\n <div part=\"thumb-label-inner\">\n ${this.hasLabels ? this.labels[value] : this.formatValue(value)}\n </div>\n </div>\n `\n }\n `;\n }\n\n private renderSteps() {\n if (!this.discreteTrack || !this.step) {\n return nothing;\n }\n\n const interval = (100 * Math.SQRT2 * this.step) / this.distance;\n\n return html`\n <div part=\"steps\">\n <svg width=\"100%\" height=\"100%\" style=\"display: flex\">\n <line\n x1=\"0\"\n y1=\"1\"\n x2=\"100%\"\n y2=\"1\"\n stroke=\"currentColor\"\n stroke-dasharray=\"0, calc(${interval}%)\"\n stroke-linecap=\"round\"\n stroke-width=\"2px\"\n ></line>\n </svg>\n </div>\n `;\n }\n\n protected override render() {\n const isStart = this.tickOrientation === 'start';\n const isMirrored = this.tickOrientation === 'mirror';\n\n return html`\n <div part=\"base\">\n ${isStart || isMirrored ? html`${this.renderTicks()}` : nothing}\n <div part=\"track\">\n <div part=\"inactive\"></div>\n <div part=\"fill\" style=${styleMap(this.getTrackStyle())}></div>\n ${this.renderSteps()}\n </div>\n ${!isStart ? html`${this.renderTicks()}` : nothing}\n <div part=\"thumbs\">${this.renderThumbs()}</div>\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"slider-base.js","sourceRoot":"","sources":["../../../src/components/slider/slider-base.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n LitElement,\n nothing,\n type PropertyValues,\n type TemplateResult,\n} 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 { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport {\n type ResolvedNaming,\n ariaBindings,\n} from '#internals/controllers/aria-projection.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n pageDownKey,\n pageUpKey,\n} from '#internals/controllers/key-bindings.js';\nimport { blazorDeepImport } from '#internals/decorators/blazorDeepImport.js';\nimport { coercedProperty } from '#internals/decorators/coerced-property.js';\nimport { createTimer } from '#internals/timing.js';\nimport { isLTR } from '#internals/utils/dom.js';\nimport { addSafeEventListener } from '#internals/utils/events.js';\nimport { asNumber, asPercent, clamp } from '#internals/utils/math.js';\nimport { formatString } from '#internals/utils/strings.js';\nimport { isDefined } from '#internals/utils/types.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type {\n SliderTickLabelRotation,\n SliderTickOrientation,\n} from '../types.js';\nimport { styles as shared } from './themes/shared/slider.common.css.js';\nimport { styles } from './themes/slider.base.css.js';\nimport { all } from './themes/themes.js';\n\n@blazorDeepImport\nexport class IgcSliderBaseComponent extends LitElement {\n public static override styles = [styles, shared];\n\n @query(`[part~='thumb']`)\n protected thumb!: HTMLElement;\n\n @query(`[part='base']`, true)\n protected base!: HTMLDivElement;\n\n @queryAssignedElements({ selector: 'igc-slider-label' })\n private labelElements!: HTMLElement[];\n\n private _min = 0;\n private _max = 100;\n private _lowerBound?: number;\n private _upperBound?: number;\n private startValue?: number;\n private pointerCaptured = false;\n /** The number format of the current update. See {@link formatValue}. */\n private _numberFormat?: Intl.NumberFormat;\n protected activeThumb?: HTMLElement;\n\n private readonly _thumbLabelTimer = createTimer(() => {\n this.thumbLabelsVisible = false;\n }, 750);\n\n @state()\n protected thumbLabelsVisible = false;\n\n @state()\n protected labels: string[] = [];\n\n protected get hasLabels() {\n return this.labels.length > 0;\n }\n\n protected get distance() {\n return this.max - this.min;\n }\n\n /**\n * The minimum value of the slider scale. Defaults to 0.\n *\n * If `min` is greater than `max` the call is a no-op.\n *\n * If `labels` are provided (projected), then `min` is always set to 0.\n *\n * If `lowerBound` ends up being less than than the current `min` value,\n * it is automatically assigned the new `min` value.\n * @attr\n */\n @property({ type: Number })\n public set min(value: number) {\n if (!isDefined(value) || value > this.max) {\n return;\n }\n\n this._min = this.hasLabels ? 0 : value;\n\n if (isDefined(this._lowerBound) && this._lowerBound! < value) {\n this._lowerBound = value;\n }\n }\n\n public get min(): number {\n return this._min;\n }\n\n /**\n * The maximum value of the slider scale. Defaults to 100.\n *\n * If `max` is less than `min` the call is a no-op.\n *\n * If `labels` are provided (projected), then `max` is always set to\n * the number of labels.\n *\n * If `upperBound` ends up being greater than than the current `max` value,\n * it is automatically assigned the new `max` value.\n * @attr\n */\n @property({ type: Number })\n public set max(value: number) {\n if (!isDefined(value) || value < this._min) {\n return;\n }\n\n this._max = this.hasLabels ? this.labels.length - 1 : value;\n\n if (isDefined(this._upperBound) && this._upperBound! > value) {\n this._upperBound = value;\n }\n }\n\n public get max(): number {\n return this._max;\n }\n\n /**\n * The lower bound of the slider value. If not set, the `min` value is applied.\n * @attr lower-bound\n */\n @property({ type: Number, attribute: 'lower-bound' })\n public set lowerBound(value: number) {\n if (!isDefined(value)) return;\n this._lowerBound = Math.min(this._upperBound ?? value, value);\n }\n\n public get lowerBound(): number {\n const current = this._lowerBound ?? this._min;\n const upper = Math.min(this._upperBound ?? this._max, this._max);\n\n return clamp(current, this._min, upper);\n }\n\n /**\n * The upper bound of the slider value. If not set, the `max` value is applied.\n * @attr upper-bound\n */\n @property({ type: Number, attribute: 'upper-bound' })\n public set upperBound(value: number) {\n if (!isDefined(value)) return;\n this._upperBound = Math.max(this._lowerBound ?? value, value);\n }\n\n public get upperBound(): number {\n const current = this._upperBound ?? this._max;\n const lower = Math.max(this._lowerBound ?? this._min, this.min);\n\n return clamp(current, lower, this._max);\n }\n\n /**\n * Disables the UI interactions of the slider.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /**\n * Marks the slider track as discrete so it displays the steps.\n * If the `step` is 0, the slider will remain continuos even if `discreteTrack` is `true`.\n * @attr discrete-track\n */\n @property({ type: Boolean, attribute: 'discrete-track' })\n public discreteTrack = false;\n\n /**\n * Hides the thumb tooltip.\n * @attr hide-tooltip\n */\n @property({ type: Boolean, attribute: 'hide-tooltip' })\n public hideTooltip = false;\n\n /**\n * Specifies the granularity that the value must adhere to.\n *\n * If set to 0 no stepping is implied and any value in the range is allowed.\n * If `labels` are provided (projected) then the step is always assumed to be 1 since it is a discrete slider.\n *\n * @attr\n */\n @property({ type: Number })\n @coercedProperty<number, IgcSliderBaseComponent>({\n transform: ({ value, host, previous }) =>\n host.hasLabels ? 1 : asNumber(value, previous ?? 1),\n })\n public step = 1;\n\n /**\n * The number of primary ticks. It defaults to 0 which means no primary ticks are displayed.\n * @attr primary-ticks\n */\n @property({ type: Number, attribute: 'primary-ticks' })\n public primaryTicks = 0;\n\n /**\n * The number of secondary ticks. It defaults to 0 which means no secondary ticks are displayed.\n * @attr secondary-ticks\n */\n @property({ type: Number, attribute: 'secondary-ticks' })\n public secondaryTicks = 0;\n\n /**\n * Changes the orientation of the ticks.\n * @attr tick-orientation\n */\n @property({ attribute: 'tick-orientation' })\n public tickOrientation: SliderTickOrientation = 'end';\n\n /**\n * Hides the primary tick labels.\n * @attr hide-primary-labels\n */\n @property({ type: Boolean, attribute: 'hide-primary-labels' })\n public hidePrimaryLabels = false;\n\n /**\n * Hides the secondary tick labels.\n * @attr hide-secondary-labels\n */\n @property({ type: Boolean, attribute: 'hide-secondary-labels' })\n public hideSecondaryLabels = false;\n\n /**\n * The locale used to format the thumb and tick label values in the slider.\n * @attr\n */\n @property()\n public locale = 'en';\n\n /**\n * String format used for the thumb and tick label values in the slider.\n * @attr value-format\n */\n @property({ attribute: 'value-format' })\n public valueFormat?: string;\n\n /**\n * Number format options used for the thumb and tick label values in the slider.\n */\n /* blazorSuppress */\n @property({ attribute: false })\n public valueFormatOptions?: Intl.NumberFormatOptions;\n\n /**\n * The degrees for the rotation of the tick labels. Defaults to 0.\n * @attr tick-label-rotation\n */\n @property({ type: Number, reflect: true, attribute: 'tick-label-rotation' })\n public tickLabelRotation: SliderTickLabelRotation = 0;\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n // `valueFormatOptions` can change in place, so each update formats anew.\n this._numberFormat = undefined;\n\n const constraintsChanged =\n changedProperties.has('min') ||\n changedProperties.has('max') ||\n changedProperties.has('lowerBound') ||\n changedProperties.has('upperBound') ||\n changedProperties.has('step');\n\n // The initial update included - attributes are applied in markup order, so\n // a value can arrive validated against a constraint that is not final yet.\n if (constraintsChanged) {\n this.normalizeValue();\n }\n }\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addSafeEventListener(this, 'pointerdown', this.pointerDown);\n addSafeEventListener(this, 'pointermove', this.pointerMove);\n addSafeEventListener(this, 'lostpointercapture', this.lostPointerCapture);\n addSafeEventListener(this, 'keyup', this.handleKeyUp);\n\n addKeybindings(this, {\n skip: () => this.disabled,\n })\n .set(arrowLeft, () => this.handleArrowKeys(isLTR(this) ? -1 : 1))\n .set(arrowRight, () => this.handleArrowKeys(isLTR(this) ? 1 : -1))\n .set(arrowUp, () => this.handleArrowKeys(1))\n .set(arrowDown, () => this.handleArrowKeys(-1))\n .set(homeKey, () =>\n this.handleKeyboardIncrement(this.lowerBound - this.activeValue)\n )\n .set(endKey, () =>\n this.handleKeyboardIncrement(this.upperBound - this.activeValue)\n )\n .set(pageUpKey, () => this.handlePageKeys(1))\n .set(pageDownKey, () => this.handlePageKeys(-1));\n }\n\n private handleArrowKeys(delta: -1 | 1) {\n this.handleKeyboardIncrement((this.step || 1) * delta);\n }\n\n private handlePageKeys(delta: -1 | 1) {\n const step = this.step || 1;\n this.handleKeyboardIncrement(\n delta * Math.max((this.upperBound - this.lowerBound) / 10, step)\n );\n }\n\n private handleKeyboardIncrement(increment: number) {\n if (increment) {\n const updated = this.updateValue(increment);\n this.showThumbLabels();\n this.hideThumbLabels();\n\n if (updated) {\n this.emitChangeEvent();\n }\n }\n }\n\n private handleKeyUp() {\n this.activeThumb?.part.add('focused');\n }\n\n protected handleSlotChange() {\n this.labels = this.labelElements.map((label) => label.textContent ?? '');\n if (this.hasLabels) {\n this.min = 0;\n this.max = this.labels.length - 1;\n this.step = 1;\n }\n }\n\n /* c8 ignore next 3 */\n protected get activeValue() {\n return 0;\n }\n\n /* c8 ignore next */\n protected normalizeValue(): void {}\n\n /* c8 ignore next 3 */\n protected getTrackStyle(): StyleInfo {\n return {};\n }\n\n /* c8 ignore next 3 */\n protected updateValue(_increment: number): boolean {\n return false;\n }\n\n /* c8 ignore next 3 */\n protected renderThumbs(): TemplateResult<1> {\n return html``;\n }\n\n /* c8 ignore next */\n protected emitInputEvent() {}\n\n /* c8 ignore next */\n protected emitChangeEvent() {}\n\n protected validateValue(value: number) {\n return this.normalizeByStep(clamp(value, this.lowerBound, this.upperBound));\n }\n\n protected formatValue(value: number) {\n this._numberFormat ??= new Intl.NumberFormat(\n this.locale,\n this.valueFormatOptions\n );\n const strValue = this._numberFormat.format(value);\n return this.valueFormat\n ? formatString(this.valueFormat, strValue)\n : strValue;\n }\n\n private normalizeByStep(value: number) {\n return this.step ? value - ((value - this.lowerBound) % this.step) : value;\n }\n\n protected closestHandle(_event: PointerEvent): HTMLElement {\n return this.thumb;\n }\n\n private totalTickCount() {\n const primaryTicks = this.hasLabels\n ? this.primaryTicks > 0\n ? this.labels.length\n : 0\n : this.primaryTicks === 1\n ? 2\n : this.primaryTicks;\n\n return primaryTicks > 0\n ? (primaryTicks - 1) * this.secondaryTicks + primaryTicks\n : this.secondaryTicks > 0\n ? this.secondaryTicks\n : 0;\n }\n\n private tickValue(idx: number, tickCount: number) {\n const distance = this.distance;\n const labelStep = tickCount > 1 ? distance / (tickCount - 1) : distance;\n\n return this.min + labelStep * idx;\n }\n\n private isPrimary(idx: number) {\n return this.primaryTicks > 0 && idx % (this.secondaryTicks + 1) === 0;\n }\n\n protected showThumbLabels() {\n if (this.disabled || this.hideTooltip) {\n return;\n }\n\n this._thumbLabelTimer.stop();\n this.thumbLabelsVisible = true;\n }\n\n protected hideThumbLabels() {\n if (this.pointerCaptured || !this.thumbLabelsVisible) {\n return;\n }\n\n this._thumbLabelTimer.start();\n }\n\n private calculateTrackUpdate(mouseX: number): number {\n const { width, left } = this.activeThumb!.getBoundingClientRect();\n const { width: trackWidth } = this.base.getBoundingClientRect();\n\n const thumbX = left + width / 2;\n const scale = trackWidth / this.distance;\n const change = isLTR(this) ? mouseX - thumbX : thumbX - mouseX;\n\n if (this.step) {\n const stepDistance = scale * this.step;\n\n // If the thumb scale range (slider update) is less than a half step,\n // the position stays the same.\n if (Math.abs(change) < stepDistance / 2) {\n return 0;\n }\n\n return Math.round(change / stepDistance) * this.step;\n }\n return change / scale;\n }\n\n private updateSlider(mouseX: number) {\n if (this.disabled || !this.activeThumb) {\n return;\n }\n\n const increment = this.calculateTrackUpdate(mouseX);\n if (increment !== 0) {\n this.updateValue(increment);\n }\n }\n\n private pointerDown(event: PointerEvent) {\n const thumb = this.closestHandle(event);\n thumb.focus();\n\n this.startValue = this.activeValue;\n this.updateSlider(event.clientX);\n\n this.setPointerCapture(event.pointerId);\n this.pointerCaptured = true;\n this.showThumbLabels();\n event.preventDefault();\n this.activeThumb?.part.remove('focused');\n }\n\n private pointerMove(event: PointerEvent) {\n if (this.pointerCaptured) {\n this.updateSlider(event.clientX);\n }\n }\n\n private lostPointerCapture() {\n this.pointerCaptured = false;\n this.hideThumbLabels();\n\n if (this.startValue! !== this.activeValue) {\n this.emitChangeEvent();\n }\n this.startValue = undefined;\n }\n\n protected handleThumbFocus(event: FocusEvent) {\n this.activeThumb = event.target as HTMLElement;\n }\n\n /**\n * The `aria-valuetext` of a thumb when neither projected labels nor value\n * formatting apply. Returning `undefined` omits the attribute.\n */\n protected _thumbAriaValueText(_thumbId?: string): string | undefined {\n return undefined;\n }\n\n protected handleThumbBlur() {\n this.activeThumb?.part.remove('focused');\n this.activeThumb = undefined;\n }\n\n protected *_renderTicks() {\n const total = this.totalTickCount();\n const secondaryTicks = this.secondaryTicks + 1;\n\n for (let i = 0; i < total; i++) {\n const primary = this.isPrimary(i);\n const shown = primary ? this.hidePrimaryLabels : this.hideSecondaryLabels;\n const labelInner = this.hasLabels\n ? primary\n ? this.labels[Math.round(i / secondaryTicks)]\n : nothing\n : this.formatValue(this.tickValue(i, total));\n\n yield html`<div part=\"tick-group\">\n <div part=\"tick\" data-primary=${primary}>\n ${\n shown\n ? nothing\n : html`\n <div part=\"tick-label\">\n <span part=\"tick-label-inner\">${labelInner}</span>\n </div>\n `\n }\n </div>\n </div>`;\n }\n }\n\n protected renderTicks() {\n return html`<div part=\"ticks\">${this._renderTicks()}</div>`;\n }\n\n protected renderThumb(\n value: number,\n aria: Partial<ResolvedNaming>,\n thumbId?: string\n ) {\n const percent = `${asPercent(value - this.min, this.distance)}%`;\n const thumbStyles = { insetInlineStart: percent };\n const tooltipStyles = {\n insetInlineStart: percent,\n opacity: this.thumbLabelsVisible ? 1 : 0,\n };\n\n const textValue = this.hasLabels\n ? this.labels[value]\n : this.valueFormat || this.valueFormatOptions\n ? this.formatValue(value)\n : this._thumbAriaValueText(thumbId);\n\n return html`\n <div\n ${ariaBindings(aria)}\n part=\"thumb\"\n id=${ifDefined(thumbId)}\n tabindex=${this.disabled ? -1 : 0}\n style=${styleMap(thumbStyles)}\n role=\"slider\"\n aria-valuemin=${this.lowerBound}\n aria-valuemax=${this.upperBound}\n aria-valuenow=${value}\n aria-valuetext=${ifDefined(textValue)}\n aria-disabled=${this.disabled}\n @pointerenter=${this.showThumbLabels}\n @pointerleave=${this.hideThumbLabels}\n @focus=${this.handleThumbFocus}\n @blur=${this.handleThumbBlur}\n ></div>\n ${\n this.hideTooltip\n ? nothing\n : html`\n <div\n part=\"thumb-label\"\n aria-hidden=\"true\"\n style=${styleMap(tooltipStyles)}\n >\n <div part=\"thumb-label-inner\">\n ${this.hasLabels ? this.labels[value] : this.formatValue(value)}\n </div>\n </div>\n `\n }\n `;\n }\n\n private renderSteps() {\n if (!this.discreteTrack || !this.step) {\n return nothing;\n }\n\n const interval = (100 * Math.SQRT2 * this.step) / this.distance;\n\n return html`\n <div part=\"steps\">\n <svg width=\"100%\" height=\"100%\" style=\"display: flex\">\n <line\n x1=\"0\"\n y1=\"1\"\n x2=\"100%\"\n y2=\"1\"\n stroke=\"currentColor\"\n stroke-dasharray=\"0, calc(${interval}%)\"\n stroke-linecap=\"round\"\n stroke-width=\"2px\"\n ></line>\n </svg>\n </div>\n `;\n }\n\n protected override render() {\n const isStart = this.tickOrientation === 'start';\n const isMirrored = this.tickOrientation === 'mirror';\n\n return html`\n <div part=\"base\">\n ${isStart || isMirrored ? this.renderTicks() : nothing}\n <div part=\"track\">\n <div part=\"inactive\"></div>\n <div part=\"fill\" style=${styleMap(this.getTrackStyle())}></div>\n ${this.renderSteps()}\n </div>\n ${isStart ? nothing : this.renderTicks()}\n <div part=\"thumbs\">${this.renderThumbs()}</div>\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n `;\n }\n}\n"]}
@@ -62,6 +62,8 @@ export default class IgcSliderComponent extends IgcSliderComponent_base {
62
62
  * @param stepDecrement Optional step decrement. If no parameter is passed, it defaults to 1.
63
63
  */
64
64
  stepDown(stepDecrement?: number): void;
65
+ /** Focuses the thumb, as a native range input label does. */
66
+ protected _handleLabelActivation(): void;
65
67
  protected renderThumbs(): import("lit-html").TemplateResult<1>;
66
68
  }
67
69
  declare global {
@@ -5,6 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { property } from 'lit/decorators.js';
8
+ import { resolveNaming } from '#internals/controllers/aria-projection.js';
8
9
  import { registerComponent } from '#internals/definitions/register.js';
9
10
  import { EventEmitterMixin } from '#internals/mixins/event-emitter.js';
10
11
  import { FormAssociatedMixin } from '#internals/mixins/forms/associated.js';
@@ -69,8 +70,11 @@ export default class IgcSliderComponent extends FormAssociatedMixin(EventEmitter
69
70
  stepDown(stepDecrement = 1) {
70
71
  this.value = this.value - stepDecrement * this.step;
71
72
  }
73
+ _handleLabelActivation() {
74
+ this.thumb.focus();
75
+ }
72
76
  renderThumbs() {
73
- return this.renderThumb(this.value, this.ariaLabel);
77
+ return this.renderThumb(this.value, resolveNaming(this, false));
74
78
  }
75
79
  }
76
80
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","sourceRoot":"","sources":["../../../src/components/slider/slider.ts"],"names":[],"mappings":"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","sourcesContent":["import { property } from 'lit/decorators.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormAssociatedMixin } from '#internals/mixins/forms/associated.js';\nimport { FormValueNumberTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { asNumber, asPercent, clamp } from '#internals/utils/math.js';\nimport { IgcSliderBaseComponent } from './slider-base.js';\nimport IgcSliderLabelComponent from './slider-label.js';\n\nexport interface IgcSliderComponentEventMap {\n /**\n * Emitted when a value is changed via thumb drag or keyboard interaction.\n */\n igcInput: CustomEvent<number>;\n /**\n * Emitted when a value change is committed on a thumb drag end or keyboard interaction.\n */\n igcChange: CustomEvent<number>;\n}\n\n/**\n * A slider component used to select numeric value within a range.\n *\n * @element igc-slider\n *\n * @fires igcInput - Emitted when a value is changed via thumb drag or keyboard interaction.\n * @fires igcChange - Emitted when a value change is committed on a thumb drag end or keyboard interaction.\n *\n * @csspart base - The base wrapper of the slider.\n * @csspart ticks - The ticks container.\n * @csspart tick-group - The tick group container.\n * @csspart tick - The tick element.\n * @csspart tick-label - The tick label element.\n * @csspart tick-label-inner - The inner element of the tick label.\n * @csspart thumbs - The thumbs container.\n * @csspart thumb - The thumb element.\n * @csspart thumb-label - The thumb tooltip label container.\n * @csspart thumb-label-inner - The thumb tooltip label inner element.\n * @csspart track - The track container.\n * @csspart steps - The track steps element.\n * @csspart inactive - The inactive element of the track.\n * @csspart fill - The filled part of the track.\n */\nexport default class IgcSliderComponent extends FormAssociatedMixin(\n EventEmitterMixin<\n IgcSliderComponentEventMap,\n Constructor<IgcSliderBaseComponent>\n >(IgcSliderBaseComponent)\n) {\n public static readonly tagName = 'igc-slider';\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcSliderComponent, IgcSliderLabelComponent);\n }\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: 0,\n transformers: FormValueNumberTransformers,\n });\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The current value of the component.\n * @attr\n */\n @property({ type: Number })\n public set value(value: number) {\n this._formValue.setValueAndFormState(\n this.validateValue(asNumber(value, this._formValue.value))\n );\n }\n\n public get value(): number {\n return this._formValue.value;\n }\n\n protected override get activeValue(): number {\n return this.value;\n }\n\n protected override normalizeValue(): void {\n const value = this.validateValue(this.value);\n\n if (value === this.value) {\n return;\n }\n\n // A clamp into the current scale is not an edit of the control, so the\n // form state that it was in carries over.\n const pristine = this._pristine;\n this.value = value;\n this._pristine = pristine;\n }\n\n protected override getTrackStyle() {\n return {\n width: `${asPercent(this.value - this.min, this.distance)}%`,\n };\n }\n\n protected override updateValue(increment: number) {\n const value = clamp(\n this.value + increment,\n this.lowerBound,\n this.upperBound\n );\n\n if (this.value === value) {\n return false;\n }\n\n this.value = value;\n this.emitInputEvent();\n return true;\n }\n\n protected override emitInputEvent() {\n this._emitTouchedEvent('igcInput', { detail: this.value });\n }\n\n protected override emitChangeEvent() {\n this._emitTouchedEvent('igcChange', { detail: this.value });\n }\n\n /**\n * Increments the value of the slider by `stepIncrement * step`, where `stepIncrement` defaults to 1.\n * @param stepIncrement Optional step increment. If no parameter is passed, it defaults to 1.\n */\n public stepUp(stepIncrement = 1) {\n this.value = this.value + stepIncrement * this.step;\n }\n\n /**\n * Decrements the value of the slider by `stepDecrement * step`, where `stepDecrement` defaults to 1.\n * @param stepDecrement Optional step decrement. If no parameter is passed, it defaults to 1.\n */\n public stepDown(stepDecrement = 1) {\n this.value = this.value - stepDecrement * this.step;\n }\n\n protected override renderThumbs() {\n return this.renderThumb(this.value, this.ariaLabel!);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-slider': IgcSliderComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"slider.js","sourceRoot":"","sources":["../../../src/components/slider/slider.ts"],"names":[],"mappings":"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","sourcesContent":["import { property } from 'lit/decorators.js';\nimport { resolveNaming } from '#internals/controllers/aria-projection.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormAssociatedMixin } from '#internals/mixins/forms/associated.js';\nimport { FormValueNumberTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { asNumber, asPercent, clamp } from '#internals/utils/math.js';\nimport { IgcSliderBaseComponent } from './slider-base.js';\nimport IgcSliderLabelComponent from './slider-label.js';\n\nexport interface IgcSliderComponentEventMap {\n /**\n * Emitted when a value is changed via thumb drag or keyboard interaction.\n */\n igcInput: CustomEvent<number>;\n /**\n * Emitted when a value change is committed on a thumb drag end or keyboard interaction.\n */\n igcChange: CustomEvent<number>;\n}\n\n/**\n * A slider component used to select numeric value within a range.\n *\n * @element igc-slider\n *\n * @fires igcInput - Emitted when a value is changed via thumb drag or keyboard interaction.\n * @fires igcChange - Emitted when a value change is committed on a thumb drag end or keyboard interaction.\n *\n * @csspart base - The base wrapper of the slider.\n * @csspart ticks - The ticks container.\n * @csspart tick-group - The tick group container.\n * @csspart tick - The tick element.\n * @csspart tick-label - The tick label element.\n * @csspart tick-label-inner - The inner element of the tick label.\n * @csspart thumbs - The thumbs container.\n * @csspart thumb - The thumb element.\n * @csspart thumb-label - The thumb tooltip label container.\n * @csspart thumb-label-inner - The thumb tooltip label inner element.\n * @csspart track - The track container.\n * @csspart steps - The track steps element.\n * @csspart inactive - The inactive element of the track.\n * @csspart fill - The filled part of the track.\n */\nexport default class IgcSliderComponent extends FormAssociatedMixin(\n EventEmitterMixin<\n IgcSliderComponentEventMap,\n Constructor<IgcSliderBaseComponent>\n >(IgcSliderBaseComponent)\n) {\n public static readonly tagName = 'igc-slider';\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcSliderComponent, IgcSliderLabelComponent);\n }\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: 0,\n transformers: FormValueNumberTransformers,\n });\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The current value of the component.\n * @attr\n */\n @property({ type: Number })\n public set value(value: number) {\n this._formValue.setValueAndFormState(\n this.validateValue(asNumber(value, this._formValue.value))\n );\n }\n\n public get value(): number {\n return this._formValue.value;\n }\n\n protected override get activeValue(): number {\n return this.value;\n }\n\n protected override normalizeValue(): void {\n const value = this.validateValue(this.value);\n\n if (value === this.value) {\n return;\n }\n\n // A clamp into the current scale is not an edit of the control, so the\n // form state that it was in carries over.\n const pristine = this._pristine;\n this.value = value;\n this._pristine = pristine;\n }\n\n protected override getTrackStyle() {\n return {\n width: `${asPercent(this.value - this.min, this.distance)}%`,\n };\n }\n\n protected override updateValue(increment: number) {\n const value = clamp(\n this.value + increment,\n this.lowerBound,\n this.upperBound\n );\n\n if (this.value === value) {\n return false;\n }\n\n this.value = value;\n this.emitInputEvent();\n return true;\n }\n\n protected override emitInputEvent() {\n this._emitTouchedEvent('igcInput', { detail: this.value });\n }\n\n protected override emitChangeEvent() {\n this._emitTouchedEvent('igcChange', { detail: this.value });\n }\n\n /**\n * Increments the value of the slider by `stepIncrement * step`, where `stepIncrement` defaults to 1.\n * @param stepIncrement Optional step increment. If no parameter is passed, it defaults to 1.\n */\n public stepUp(stepIncrement = 1) {\n this.value = this.value + stepIncrement * this.step;\n }\n\n /**\n * Decrements the value of the slider by `stepDecrement * step`, where `stepDecrement` defaults to 1.\n * @param stepDecrement Optional step decrement. If no parameter is passed, it defaults to 1.\n */\n public stepDown(stepDecrement = 1) {\n this.value = this.value - stepDecrement * this.step;\n }\n\n /** Focuses the thumb, as a native range input label does. */\n protected override _handleLabelActivation(): void {\n this.thumb.focus();\n }\n\n protected override renderThumbs() {\n return this.renderThumb(this.value, resolveNaming(this, false));\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-slider': IgcSliderComponent;\n }\n}\n"]}
@@ -271,9 +271,9 @@ export default class IgcSplitterComponent extends IgcSplitterComponent_base {
271
271
  private _getFlex;
272
272
  private _handleResizePanes;
273
273
  /**
274
- * A complete resize for a non-pointer gesture. Sharing `_calcNewSizes` with
275
- * the drag path is what keeps both panes' constraints honoured and the
276
- * emitted sizes equal to the ones that actually render.
274
+ * A complete resize for a gesture that is not a pointer drag. `_calcNewSizes`
275
+ * is shared with the drag path, which keeps the constraints of both panes and
276
+ * makes the emitted sizes equal to the rendered ones.
277
277
  */
278
278
  private _runResize;
279
279
  private _preventDefaultForEvent;
@@ -294,9 +294,9 @@ export default class IgcSplitterComponent extends IgcSplitterComponent_base {
294
294
  private _rectSize;
295
295
  private _calcNewSizes;
296
296
  /**
297
- * Reads the container and bar extents once per update pass - both
298
- * `_updatePanes` and `_updateBarAria` need them, and the style writes in
299
- * between would force a reflow for every repeated read.
297
+ * Reads the container and bar extents one time per update pass. Both
298
+ * `_updatePanes` and `_updateBarAria` need them, and the style writes between
299
+ * them would force a reflow for each read.
300
300
  */
301
301
  private _measure;
302
302
  /** The content box of the flex container - the basis for every percentage. */
@@ -1 +1 @@
1
- {"version":3,"file":"splitter.js","sourceRoot":"","sources":["../../../src/components/splitter/splitter.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, type PropertyValues } from 'lit';\nimport { eventOptions, property, query, state } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { addInternalsController } from '#internals/controllers/internals.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n endKey,\n homeKey,\n} from '#internals/controllers/key-bindings.js';\nimport { createResizeObserverController } from '#internals/controllers/resize-observer.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { partMap } from '#internals/part-map.js';\nimport { isLTR, resolveCssLength } from '#internals/utils/dom.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport {\n asNumber,\n asPercent,\n clamp,\n roundPrecise,\n} from '#internals/utils/math.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type { SplitterOrientation } from '../types.js';\nimport IgcVisuallyHiddenComponent from '../visually-hidden/visually-hidden.js';\nimport { styles as shared } from './themes/shared/splitter.common.css.js';\nimport { styles } from './themes/splitter.base.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n IgcSplitterComponentEventMap,\n IgcSplitterLayoutChangedEventArgs,\n IgcSplitterResizeEventArgs,\n IgcSplitterResizeEventDetail,\n PanePosition,\n PaneResizeSnapshot,\n SplitterPaneState,\n SplitterResizeState,\n} from './types.js';\n\nconst KEYBOARD_RESIZE_STEP = 10;\n\nconst PANES = ['start', 'end'] as const satisfies readonly PanePosition[];\n\n/** A number carrying a percentage sign or one of the CSS length units. */\nconst CSS_LENGTH =\n /^[+-]?(\\d+\\.?\\d*|\\.\\d+)(%|px|em|rem|ch|ex|cap|ic|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|q|in|pt|pc)$/i;\n\n/** A bare number, with no unit at all. */\nconst UNITLESS_NUMBER = /^[+-]?(\\d+\\.?\\d*|\\.\\d+)$/;\n\nconst DEFAULT_RESIZE_STATE: SplitterResizeState = {\n startPane: null,\n endPane: null,\n dragStartPosition: { x: 0, y: 0 },\n dragPointerId: -1,\n};\n\n/**\n * A splitter component that provides a resizable split-pane layout, dividing the view\n * into two panels - *start* and *end* - separated by a draggable bar.\n *\n * Panels can be resized by dragging the bar, using keyboard shortcuts, or collapsed/expanded\n * using the built-in collapse buttons or the programmatic `toggle()` API.\n * Nested splitters are supported for more complex layouts.\n *\n * @example\n * ```html\n * <!-- Basic horizontal splitter -->\n * <igc-splitter>\n * <div slot=\"start\">Start panel</div>\n * <div slot=\"end\">End panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```html\n * <!-- Vertical splitter with size constraints -->\n * <igc-splitter orientation=\"vertical\" start-min-size=\"100px\" end-min-size=\"100px\">\n * <div slot=\"start\">Top panel</div>\n * <div slot=\"end\">Bottom panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```html\n * <!-- Nested splitters for a multi-pane layout -->\n * <igc-splitter style=\"height: 600px;\">\n * <igc-splitter slot=\"start\" orientation=\"vertical\">\n * <div slot=\"start\">Top left</div>\n * <div slot=\"end\">Bottom left</div>\n * </igc-splitter>\n * <div slot=\"end\">Right panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```ts\n * // Programmatically collapse/expand a pane\n * const splitter = document.querySelector('igc-splitter');\n * splitter.toggle('start'); // collapse start pane\n * splitter.toggle('start'); // expand start pane\n * ```\n *\n * ## Keyboard interactions\n *\n * When the splitter bar is focused:\n *\n * | Key | Action |\n * |---|---|\n * | `Arrow Left` / `Arrow Right` | Resize panes (horizontal orientation) |\n * | `Arrow Up` / `Arrow Down` | Resize panes (vertical orientation) |\n * | `Home` | Snap start pane to its minimum size |\n * | `End` | Snap start pane to its maximum size |\n * | `Ctrl + Arrow Left` / `Ctrl + Arrow Up` | Collapse or expand the start pane |\n * | `Ctrl + Arrow Right` / `Ctrl + Arrow Down` | Collapse or expand the end pane |\n *\n * @element igc-splitter\n *\n * @fires igcResizeStart - Emitted once when a resize operation begins (pointer drag or keyboard).\n * @fires igcResizing - Emitted continuously while a pane is being resized.\n * @fires igcResizeEnd - Emitted once when a resize operation completes.\n * @fires igcLayoutChanged - Emitted after a user-driven resize or expansion change, with a full\n * snapshot of the current layout (pane sizes and collapsed states).\n *\n * @slot start - Content projected into the start (left/top) panel.\n * @slot end - Content projected into the end (right/bottom) panel.\n *\n * @csspart splitter-bar - The resizable bar element between the two panels.\n * @csspart drag-handle - The drag handle icon/element on the splitter bar.\n * @csspart start-pane - The container for the start panel content.\n * @csspart end-pane - The container for the end panel content.\n * @csspart start-collapse-btn - The button to collapse the start panel.\n * @csspart end-collapse-btn - The button to collapse the end panel.\n * @csspart start-expand-btn - The button to expand the start panel when collapsed.\n * @csspart end-expand-btn - The button to expand the end panel when collapsed.\n *\n * @remarks\n * The bar holds two expander elements, one on either side of the drag handle,\n * and each carries whichever part name applies to the current collapsed state.\n * A part name is therefore not tied to a fixed side: with the end pane\n * collapsed, `end-expand-btn` lands on the *first* of the two.\n */\nexport default class IgcSplitterComponent extends EventEmitterMixin<\n IgcSplitterComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-splitter';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcSplitterComponent, IgcVisuallyHiddenComponent);\n }\n\n //#region Private Properties\n\n private readonly _internals = addInternalsController(this);\n\n private readonly _separatorRef = createRef<HTMLElement>();\n\n private readonly _startPaneState: SplitterPaneState = {\n size: 'auto',\n styles: {},\n };\n private readonly _endPaneState: SplitterPaneState = {\n size: 'auto',\n styles: {},\n };\n\n @state()\n private _collapsedPane: PanePosition | null = null;\n\n private _resizeState: SplitterResizeState = { ...DEFAULT_RESIZE_STATE };\n\n private _measurement: { container: number; bar: number } | null = null;\n\n /** Container extent at the last resize notification we acted on. */\n private _observedSize = -1;\n\n @query('[part~=\"base\"]')\n private readonly _base!: HTMLElement;\n\n @query('[part~=\"start-pane\"]', true)\n private readonly _startPane!: HTMLElement;\n\n @query('[part~=\"end-pane\"]', true)\n private readonly _endPane!: HTMLElement;\n\n private get _separator(): HTMLElement | undefined {\n return this._separatorRef.value;\n }\n\n private get _isDragging(): boolean {\n return this._resizeState.dragPointerId !== -1;\n }\n\n private get _resizeDisallowed(): boolean {\n return this.disableResize || this._collapsedPane != null;\n }\n\n private get _isHorizontal(): boolean {\n return this.orientation === 'horizontal';\n }\n\n private get _separatorCursor(): string {\n if (this._resizeDisallowed) {\n return 'default';\n }\n return this._isHorizontal ? 'col-resize' : 'row-resize';\n }\n\n //#endregion\n\n //#region Public Properties\n\n /**\n * The orientation of the splitter, which determines the direction of resizing and collapsing.\n *\n * Changing the orientation after the initial render clears the pane sizes and\n * their min/max constraints, along with the corresponding attributes - a size\n * authored for one axis rarely makes sense on the other.\n * @attr orientation\n * @default 'horizontal'\n */\n @property({ reflect: true })\n public orientation: SplitterOrientation = 'horizontal';\n\n /**\n * Whether collapsing either pane is disabled. When `true`, this also hides\n * the expand/collapse buttons on the splitter bar.\n * @attr disable-collapse\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-collapse' })\n public disableCollapse = false;\n\n /**\n * Whether resizing the panes by dragging the splitter bar or using keyboard\n * shortcuts is disabled. When `true`, this also hides the drag handle on the\n * splitter bar.\n * @attr disable-resize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-resize' })\n public disableResize = false;\n\n /**\n * Whether the expand/collapse buttons on the splitter bar are hidden.\n *\n * Note that the buttons will also be hidden if `disable-collapse` is true or\n * if a pane is currently collapsed.\n * @attr hide-collapse-buttons\n * @default false\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'hide-collapse-buttons',\n })\n public hideCollapseButtons = false;\n\n /**\n * Whether the drag handle on the splitter bar is hidden.\n *\n * Note that the drag handle will also be hidden if `disable-resize` is true.\n * @attr hide-drag-handle\n * @default false\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'hide-drag-handle',\n })\n public hideDragHandle = false;\n\n /**\n * The minimum size of the start pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `100px` or `20%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 removes the constraint.\n * @attr start-min-size\n */\n @property({ attribute: 'start-min-size' })\n public set startMinSize(value: string | undefined) {\n this._startPaneState.minSize = this._normalizeValue(value);\n }\n\n public get startMinSize(): string | undefined {\n return this._startPaneState.minSize;\n }\n\n /**\n * The minimum size of the end pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `100px` or `20%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 removes the constraint.\n * @attr end-min-size\n */\n @property({ attribute: 'end-min-size' })\n public set endMinSize(value: string | undefined) {\n this._endPaneState.minSize = this._normalizeValue(value);\n }\n\n public get endMinSize(): string | undefined {\n return this._endPaneState.minSize;\n }\n\n /**\n * The maximum size of the start pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `500px` or `80%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 removes the constraint.\n * @attr start-max-size\n */\n @property({ attribute: 'start-max-size' })\n public set startMaxSize(value: string | undefined) {\n this._startPaneState.maxSize = this._normalizeValue(value);\n }\n\n public get startMaxSize(): string | undefined {\n return this._startPaneState.maxSize;\n }\n\n /**\n * The maximum size of the end pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `500px` or `80%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 removes the constraint.\n * @attr end-max-size\n */\n @property({ attribute: 'end-max-size' })\n public set endMaxSize(value: string | undefined) {\n this._endPaneState.maxSize = this._normalizeValue(value);\n }\n\n public get endMaxSize(): string | undefined {\n return this._endPaneState.maxSize;\n }\n\n /**\n * The size of the start pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `200px` or `50%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 falls back to automatic sizing.\n * @attr start-size\n */\n @property({ attribute: 'start-size' })\n public set startSize(value: string | undefined) {\n this._setPaneSize('start', value);\n }\n\n public get startSize(): string | undefined {\n return this._startPaneState.size;\n }\n\n /**\n * The size of the end pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `200px` or `50%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 falls back to automatic sizing.\n * @attr end-size\n */\n @property({ attribute: 'end-size' })\n public set endSize(value: string | undefined) {\n this._setPaneSize('end', value);\n }\n\n public get endSize(): string | undefined {\n return this._endPaneState.size;\n }\n\n /**\n * Whether the start pane is currently collapsed. Set this property to\n * collapse or expand the pane programmatically.\n * @attr start-collapsed\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'start-collapsed' })\n public set startCollapsed(value: boolean) {\n this._setCollapsed('start', value);\n }\n\n public get startCollapsed(): boolean {\n return this._isCollapsed('start');\n }\n\n /**\n * Whether the end pane is currently collapsed. Set this property to\n * collapse or expand the pane programmatically.\n * @attr end-collapsed\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'end-collapsed' })\n public set endCollapsed(value: boolean) {\n this._setCollapsed('end', value);\n }\n\n public get endCollapsed(): boolean {\n return this._isCollapsed('end');\n }\n\n //#endregion\n\n //#region Lifecycle\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addSlotController(this, { slots: setSlots('start', 'end') });\n\n createResizeObserverController(this, {\n callback: () => this._handleContainerResize(),\n });\n\n addKeybindings(this, {\n ref: this._separatorRef,\n })\n .set(arrowUp, () => this._handleResizePanes(-1, 'vertical'))\n .set(arrowDown, () => this._handleResizePanes(1, 'vertical'))\n .set(arrowLeft, () => this._handleResizePanes(-1, 'horizontal'))\n .set(arrowRight, () => this._handleResizePanes(1, 'horizontal'))\n .set(homeKey, () => this._handleMinMaxResize('min'))\n .set(endKey, () => this._handleMinMaxResize('max'))\n .set([ctrlKey, arrowUp], () =>\n this._handleArrowsExpandCollapse('start', 'vertical')\n )\n .set([ctrlKey, arrowDown], () =>\n this._handleArrowsExpandCollapse('end', 'vertical')\n )\n .set([ctrlKey, arrowLeft], () =>\n this._handleArrowsExpandCollapse('start', 'horizontal')\n )\n .set([ctrlKey, arrowRight], () =>\n this._handleArrowsExpandCollapse('end', 'horizontal')\n );\n }\n\n protected override update(changed: PropertyValues<this>): void {\n this._measurement = null;\n\n if (changed.get('orientation') != null) {\n this._resetPaneSizes();\n }\n\n if (this.hasUpdated) {\n this._updatePanes();\n }\n\n super.update(changed);\n }\n\n protected override updated(): void {\n // Layout has just been committed; the `update()` measurements are stale.\n this._measurement = null;\n this._updateBarAria();\n }\n\n public override disconnectedCallback(): void {\n this._endDrag();\n super.disconnectedCallback();\n }\n\n //#endregion\n\n //#region Resize Event Handlers\n\n private _handleBarPointerDown(e: PointerEvent): void {\n if (e.button !== 0 || this._isDragging) {\n return;\n }\n\n e.preventDefault();\n\n this._resizeState = {\n ...this._resizeState,\n dragPointerId: e.pointerId,\n dragStartPosition: { x: e.clientX, y: e.clientY },\n };\n\n this._resizeStart();\n this._separator?.setPointerCapture(this._resizeState.dragPointerId);\n }\n\n private _getDragDelta(e: PointerEvent): number {\n const deltaX = e.clientX - this._resizeState.dragStartPosition.x;\n const deltaY = e.clientY - this._resizeState.dragStartPosition.y;\n return this._resolveDelta(deltaX, deltaY);\n }\n\n private _handleBarPointerMove(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n const delta = this._getDragDelta(e);\n\n if (delta !== 0) {\n this._resizing(delta);\n }\n }\n\n private _handleEndDrag(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n this._resizeEnd(this._getDragDelta(e));\n this._endDrag();\n }\n\n /** A cancelled gesture reverts, but still reports an end for the start it emitted. */\n private _handleCancelDrag(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n this._resizeEnd(0);\n this._endDrag();\n }\n\n private _endDrag(): void {\n const { dragPointerId } = this._resizeState;\n\n // `releasePointerCapture` throws for a pointer that is no longer active.\n if (this._separator?.hasPointerCapture(dragPointerId)) {\n this._separator.releasePointerCapture(dragPointerId);\n }\n\n this._resizeState = { ...DEFAULT_RESIZE_STATE };\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * Toggles the collapsed state of the specified pane.\n *\n * Does not emit `igcLayoutChanged` - that event reports user-driven changes,\n * and a programmatic call is already known to the caller.\n */\n public toggle(position: PanePosition): void {\n this._applyCollapse(this._collapsedPane === position ? null : position);\n }\n\n //#endregion\n\n //#region Internal API\n\n private _applyCollapse(target: PanePosition | null): void {\n if (this._collapsedPane === null && target !== null) {\n this._savePaneSizes();\n }\n\n const wasStartCollapsed = this._isCollapsed('start');\n const wasEndCollapsed = this._isCollapsed('end');\n\n this._collapsedPane = target;\n\n // `toggle()`, the expanders and Ctrl + arrow bypass the decorated accessors,\n // and one assignment can change both flags. Request both so Lit reflects\n // them from their getters instead of leaving one stale.\n this.requestUpdate('startCollapsed', wasStartCollapsed);\n this.requestUpdate('endCollapsed', wasEndCollapsed);\n\n this._internals.setState('start-collapsed', this._isCollapsed('start'));\n this._internals.setState('end-collapsed', this._isCollapsed('end'));\n\n this._restoreSizesOnExpandCollapse();\n }\n\n private _setPaneSize(pane: PanePosition, value: string | undefined): void {\n this._getPaneState(pane).size = this._normalizeValue(value, 'auto');\n\n // A size authored while collapsed outranks the pre-collapse snapshot. The\n // whole snapshot goes - keeping the other pane's share would over-subscribe\n // the container and leave both panes shrinking to fit.\n if (this._collapsedPane !== null) {\n for (const target of PANES) {\n this._getPaneState(target).savedSize = undefined;\n }\n }\n }\n\n /** Drops the authored sizes and their attributes, which would otherwise diverge. */\n private _resetPaneSizes(): void {\n for (const pane of PANES) {\n const state = this._getPaneState(pane);\n state.size = 'auto';\n state.minSize = undefined;\n state.maxSize = undefined;\n state.savedSize = undefined;\n\n for (const suffix of ['size', 'min-size', 'max-size']) {\n this.removeAttribute(`${pane}-${suffix}`);\n }\n }\n }\n\n private _setCollapsed(pane: PanePosition, value: boolean): void {\n if (this._isCollapsed(pane) === value) {\n return;\n }\n this._applyCollapse(value ? pane : null);\n }\n\n private _savePaneSizes(): void {\n // Not measurable yet (collapsed before the first render) - keep the\n // explicit size rather than lose it to the 'auto' reset.\n if (this._getTotalSize() === 0) {\n this._startPaneState.savedSize = this._startPaneState.size;\n this._endPaneState.savedSize = this._endPaneState.size;\n return;\n }\n // Higher precision than the ARIA percent so restored layouts don't drift.\n const [start, end] = this._rectSize();\n this._startPaneState.savedSize = `${this._asPercentOfContainer(start, 2)}%`;\n this._endPaneState.savedSize = `${this._asPercentOfContainer(end, 2)}%`;\n }\n\n /* Reset sizes on collapse; restore saved sizes on expand */\n private _restoreSizesOnExpandCollapse(): void {\n if (this._collapsedPane !== null) {\n this._startPaneState.size = 'auto';\n this._endPaneState.size = 'auto';\n } else {\n this._startPaneState.size =\n this._startPaneState.savedSize ?? this.startSize;\n this._endPaneState.size = this._endPaneState.savedSize ?? this.endSize;\n }\n }\n\n /**\n * The container is what the browser resolves a percentage `flex-basis`\n * against, so a value measured this way survives a round trip through CSS.\n */\n private _asPercentOfContainer(size: number, precision = 0): number {\n const containerSize = this._getContainerSize();\n return containerSize === 0\n ? 0\n : roundPrecise(asPercent(size, containerSize), precision);\n }\n\n /** Resolves a CSS length to pixels, percentages against the container. */\n private _toPixels(value: string): number {\n if (value.endsWith('%')) {\n return (asNumber(value) / 100) * this._getContainerSize();\n }\n\n return this._base ? resolveCssLength(this._base, value) : 0;\n }\n\n private _getStartPaneSizePercent(): number {\n if (!this._startPane || this._isCollapsed('start')) {\n return 0;\n }\n\n if (this._isCollapsed('end')) {\n return 100;\n }\n\n return this._asPercentOfContainer(this._rectSize()[0]);\n }\n\n private _getMinMaxAsPercent(type: 'min' | 'max'): number {\n const value = type === 'min' ? this.startMinSize : this.startMaxSize;\n\n if (!value) {\n return type === 'min' ? 0 : 100;\n }\n\n return this._asPercentOfContainer(this._toPixels(value));\n }\n\n private _isCollapsed(which: PanePosition): boolean {\n return this._collapsedPane === which;\n }\n\n private _otherPane(pane: PanePosition): PanePosition {\n return pane === 'start' ? 'end' : 'start';\n }\n\n private _updateBarAria(): void {\n const separator = this._separator;\n\n if (separator) {\n const value = this._getStartPaneSizePercent();\n\n separator.ariaValueNow = value.toString();\n separator.ariaValueText = `${value}%`;\n separator.ariaValueMin = this._getMinMaxAsPercent('min').toString();\n separator.ariaValueMax = this._getMinMaxAsPercent('max').toString();\n }\n }\n\n private _getPaneState(which: PanePosition): SplitterPaneState {\n return which === 'start' ? this._startPaneState : this._endPaneState;\n }\n\n private _isPercentageSize(which: PanePosition): boolean {\n const { size } = this._getPaneState(which);\n return !!size && size.includes('%');\n }\n\n private _isAutoSize(which: PanePosition): boolean {\n return this._getPaneState(which).size === 'auto';\n }\n\n private _normalizeValue(\n value: string | undefined,\n fallback?: 'auto'\n ): string | undefined {\n const trimmed = value?.trim();\n if (!trimmed || trimmed === 'auto') {\n return fallback;\n }\n\n const numericValue = asNumber(trimmed, -1);\n if (numericValue < 0) return fallback;\n if (trimmed.includes('%') && numericValue > 100) return fallback;\n\n // Zero is the one length that needs no unit; any other bare number is\n // invalid CSS and would silently drop the whole `flex` shorthand.\n const isUnitlessZero = numericValue === 0 && UNITLESS_NUMBER.test(trimmed);\n\n return isUnitlessZero || CSS_LENGTH.test(trimmed) ? trimmed : fallback;\n }\n\n private _getFlex(which: PanePosition, forceAuto = false): string {\n const isAuto = forceAuto || this._isAutoSize(which);\n const size = isAuto ? '0px' : this._getPaneState(which).size;\n return `${isAuto ? 1 : 0} 1 ${size}`;\n }\n\n private _handleResizePanes(\n direction: -1 | 1,\n validOrientation: SplitterOrientation\n ): void {\n if (this._resizeDisallowed || this.orientation !== validOrientation) {\n return;\n }\n const delta = this._resolveDelta(\n KEYBOARD_RESIZE_STEP,\n KEYBOARD_RESIZE_STEP,\n direction\n );\n\n this._runResize(delta);\n }\n\n /**\n * A complete resize for a non-pointer gesture. Sharing `_calcNewSizes` with\n * the drag path is what keeps both panes' constraints honoured and the\n * emitted sizes equal to the ones that actually render.\n */\n private _runResize(delta: number): void {\n this._resizeStart();\n this._resizing(delta);\n this._resizeEnd(delta);\n this._endDrag();\n }\n\n @eventOptions({ passive: false })\n private _preventDefaultForEvent(e: Event): void {\n e.preventDefault();\n }\n\n private _resolveDelta(\n deltaX: number,\n deltaY: number,\n direction?: -1 | 1\n ): number {\n const isHorizontal = this._isHorizontal;\n const rtlMultiplier = isHorizontal && !isLTR(this) ? -1 : 1;\n const delta = isHorizontal ? deltaX : deltaY;\n return delta * rtlMultiplier * (direction ?? 1);\n }\n\n /** Snaps the start pane to its minimum or maximum size. */\n private _handleMinMaxResize(type: 'min' | 'max'): void {\n if (this._resizeDisallowed) {\n return;\n }\n\n const targetStartSizePx =\n this._getConstraintInPx('start', type) ??\n (type === 'min' ? 0 : this._getTotalSize());\n\n this._runResize(targetStartSizePx - this._rectSize()[0]);\n }\n\n private _handleExpanderAction(pane: PanePosition): void {\n const other = this._otherPane(pane);\n this._toggleWithEvent(this._collapsedPane === other ? other : pane);\n }\n\n private _toggleWithEvent(position: PanePosition): void {\n this.toggle(position);\n this._emitLayoutChanged();\n }\n\n // Both sizes render as 'auto' while collapsed, so report the pre-collapse\n // ones instead - those are what a consumer needs to restore the layout.\n private _reportedSize(pane: PanePosition): string {\n const state = this._getPaneState(pane);\n return (\n (this._collapsedPane !== null ? state.savedSize : state.size) ?? 'auto'\n );\n }\n\n private _emitLayoutChanged(): void {\n const detail: IgcSplitterLayoutChangedEventArgs = {\n startSize: this._reportedSize('start'),\n endSize: this._reportedSize('end'),\n startCollapsed: this.startCollapsed,\n endCollapsed: this.endCollapsed,\n };\n this.emitEvent('igcLayoutChanged', { detail });\n }\n\n private _handleArrowsExpandCollapse(\n target: PanePosition,\n validOrientation: SplitterOrientation\n ): void {\n if (this.disableCollapse || this.orientation !== validOrientation) {\n return;\n }\n const isFlipped = validOrientation === 'horizontal' && !isLTR(this);\n this._handleExpanderAction(isFlipped ? this._otherPane(target) : target);\n }\n\n private _resizeStart(): void {\n const [startSize, endSize] = this._rectSize();\n\n this._resizeState.startPane = this._createPaneState('start', startSize);\n this._resizeState.endPane = this._createPaneState('end', endSize);\n\n this.emitEvent('igcResizeStart', {\n detail: { startPanelSize: startSize, endPanelSize: endSize },\n });\n }\n\n private _createPaneState(\n pane: PanePosition,\n size: number\n ): PaneResizeSnapshot {\n return {\n initialSize: size,\n isPercentageBased: this._isPercentageSize(pane) || this._isAutoSize(pane),\n minSizePx: this._getConstraintInPx(pane, 'min'),\n maxSizePx: this._getConstraintInPx(pane, 'max'),\n };\n }\n\n private _getConstraintInPx(\n pane: PanePosition,\n type: 'min' | 'max'\n ): number | undefined {\n const { minSize, maxSize } = this._getPaneState(pane);\n const value = type === 'max' ? maxSize : minSize;\n\n return value ? this._toPixels(value) : undefined;\n }\n\n private _resizing(delta: number): void {\n if (!this._resizeState.startPane || !this._resizeState.endPane) {\n return;\n }\n\n const [startPaneSize, endPaneSize] = this._calcNewSizes(delta);\n\n this.startSize = `${startPaneSize}px`;\n this.endSize = `${endPaneSize}px`;\n\n this.emitEvent('igcResizing', {\n detail: {\n startPanelSize: startPaneSize,\n endPanelSize: endPaneSize,\n delta,\n },\n });\n }\n\n private _computeSize(\n pane: PaneResizeSnapshot,\n paneSize: number,\n containerSize: number\n ): string {\n return pane.isPercentageBased\n ? `${asPercent(paneSize, containerSize)}%`\n : `${roundPrecise(paneSize, 0)}px`;\n }\n\n private _resizeEnd(delta: number): void {\n const { startPane, endPane } = this._resizeState;\n\n if (!startPane || !endPane) {\n return;\n }\n\n // A cancelled gesture reverts to the sizes captured at `_resizeStart`.\n const [startPaneSize, endPaneSize] =\n delta === 0\n ? [startPane.initialSize, endPane.initialSize]\n : this._calcNewSizes(delta);\n const containerSize = this._getContainerSize();\n\n this.startSize = this._computeSize(startPane, startPaneSize, containerSize);\n this.endSize = this._computeSize(endPane, endPaneSize, containerSize);\n\n this.emitEvent('igcResizeEnd', {\n detail: {\n startPanelSize: startPaneSize,\n endPanelSize: endPaneSize,\n delta,\n },\n });\n this._emitLayoutChanged();\n }\n\n private _rectSize(): [number, number] {\n const axis = this._isHorizontal ? 'width' : 'height';\n const startPaneRect = this._startPane.getBoundingClientRect();\n const endPaneRect = this._endPane.getBoundingClientRect();\n\n return [startPaneRect[axis], endPaneRect[axis]];\n }\n\n private _calcNewSizes(delta: number): [number, number] {\n if (!this._resizeState.startPane || !this._resizeState.endPane)\n return [0, 0];\n\n const start = this._resizeState.startPane;\n const end = this._resizeState.endPane;\n const minStart = start.minSizePx || 0;\n const minEnd = end.minSizePx || 0;\n const maxStart =\n start.maxSizePx || start.initialSize + end.initialSize - minEnd;\n const maxEnd =\n end.maxSizePx || start.initialSize + end.initialSize - minStart;\n\n const maxPosDelta = Math.min(\n maxStart - start.initialSize,\n end.initialSize - minEnd\n );\n const maxNegDelta = Math.min(\n start.initialSize - minStart,\n maxEnd - end.initialSize\n );\n const finalDelta = clamp(delta, -maxNegDelta, maxPosDelta);\n\n return [start.initialSize + finalDelta, end.initialSize - finalDelta];\n }\n\n /**\n * Reads the container and bar extents once per update pass - both\n * `_updatePanes` and `_updateBarAria` need them, and the style writes in\n * between would force a reflow for every repeated read.\n */\n private _measure(): { container: number; bar: number } {\n const axis = this._isHorizontal ? 'width' : 'height';\n\n this._measurement ??= {\n container: this._base ? this._base.getBoundingClientRect()[axis] : 0,\n bar: this._separator\n ? roundPrecise(this._separator.getBoundingClientRect()[axis])\n : 0,\n };\n\n return this._measurement;\n }\n\n /** The content box of the flex container - the basis for every percentage. */\n private _getContainerSize(): number {\n return this._measure().container;\n }\n\n /** The space left for the panes once the bar has taken its own. */\n private _getTotalSize(): number {\n const { container, bar } = this._measure();\n return container === 0 ? 0 : container - bar;\n }\n\n private _handleContainerResize(): void {\n this._measurement = null;\n const size = this._getContainerSize();\n\n if (size !== this._observedSize) {\n this._observedSize = size;\n this.requestUpdate();\n }\n }\n\n private _updatePanes(): void {\n const isCollapsed = this._collapsedPane !== null;\n\n // A collapsed pane renders as `auto` with its constraints lifted, while the\n // authored values stay untouched so they survive the round trip.\n for (const pane of PANES) {\n const { minSize, maxSize } = this._getPaneState(pane);\n\n this._setPaneMinMaxSizes(\n pane,\n isCollapsed ? '0' : minSize,\n isCollapsed ? '100%' : maxSize\n );\n this._updatePaneStyles(pane, { flex: this._getFlex(pane, isCollapsed) });\n }\n }\n\n private _updatePaneStyles(pane: PanePosition, styles: StyleInfo): void {\n Object.assign(this._getPaneState(pane).styles, styles);\n }\n\n private _setPaneMinMaxSizes(\n pane: PanePosition,\n minSize?: string,\n maxSize?: string\n ): void {\n const min = this._ensureMinConstraintIsWithinBounds(pane, minSize) ?? 0;\n const max = maxSize ?? '100%';\n\n this._updatePaneStyles(\n pane,\n this._isHorizontal\n ? { minWidth: min, maxWidth: max, minHeight: 0, maxHeight: '100%' }\n : { minWidth: 0, maxWidth: '100%', minHeight: min, maxHeight: max }\n );\n }\n\n private _ensureMinConstraintIsWithinBounds(\n pane: PanePosition,\n minSize?: string\n ): string | undefined {\n const total = this._getTotalSize();\n\n if (!minSize || total <= 0) {\n return minSize;\n }\n\n const minPx = this._getConstraintInPx(pane, 'min') ?? 0;\n const otherMinPx =\n this._getConstraintInPx(this._otherPane(pane), 'min') ?? 0;\n\n // Dropping a constraint the panes cannot both satisfy keeps content from\n // overflowing. It is reapplied once the container grows to accommodate it.\n return minPx + otherMinPx > total ? undefined : minSize;\n }\n\n private _handleExpanderClick(pane: PanePosition, event: PointerEvent): void {\n // Keep the bar from starting a resize\n event.stopPropagation();\n this._handleExpanderAction(pane);\n }\n\n //#endregion\n\n //#region Rendering\n\n private _resolvePartNames(expander: PanePosition): Record<string, boolean> {\n const other = this._otherPane(expander);\n const otherIsCollapsed = this._isCollapsed(other);\n\n return {\n [`${other}-expand-btn`]: otherIsCollapsed,\n [`${expander}-collapse-btn`]: !otherIsCollapsed,\n };\n }\n\n private _renderBarControls() {\n const dragHandleHidden = this.hideDragHandle || this.disableResize;\n const hidden = this.disableCollapse || this.hideCollapseButtons;\n const prevButtonHidden = hidden || this._isCollapsed('start');\n const nextButtonHidden = hidden || this._isCollapsed('end');\n\n return html`\n <div\n part=\"${partMap(this._resolvePartNames('start'))}\"\n ?hidden=${prevButtonHidden}\n @pointerdown=${(e: PointerEvent) =>\n this._handleExpanderClick('start', e)}\n ></div>\n <div part=\"drag-handle\" ?hidden=${dragHandleHidden}></div>\n <div\n part=\"${partMap(this._resolvePartNames('end'))}\"\n ?hidden=${nextButtonHidden}\n @pointerdown=${(e: PointerEvent) => this._handleExpanderClick('end', e)}\n ></div>\n `;\n }\n\n private _renderAccessibleLabel() {\n return html`\n <igc-visually-hidden id=\"splitter-label\"\n >Resize panes</igc-visually-hidden\n >\n <igc-visually-hidden id=\"splitter-state\">\n ${\n this._isCollapsed('start')\n ? 'Start pane collapsed'\n : 'Start pane expanded'\n }\n and\n ${this._isCollapsed('end') ? 'End pane collapsed' : 'End pane expanded'}\n </igc-visually-hidden>\n `;\n }\n\n private _renderSeparator() {\n const canResize = !this._resizeDisallowed;\n\n return html`\n <div\n ${ref(this._separatorRef)}\n part=\"splitter-bar\"\n role=\"separator\"\n tabindex=${this.disableCollapse && this.disableResize ? -1 : 0}\n aria-controls=\"start-pane end-pane\"\n aria-labelledby=\"splitter-label\"\n aria-describedby=\"splitter-state\"\n aria-orientation=${this.orientation}\n style=${styleMap({ '--cursor': this._separatorCursor })}\n @touchstart=${bindIf(canResize, this._preventDefaultForEvent)}\n @contextmenu=${bindIf(canResize, this._preventDefaultForEvent)}\n @pointerdown=${bindIf(canResize, this._handleBarPointerDown)}\n @pointermove=${this._handleBarPointerMove}\n @pointerup=${this._handleEndDrag}\n @lostpointercapture=${this._handleEndDrag}\n @pointercancel=${this._handleCancelDrag}\n >\n ${this._renderBarControls()}\n </div>\n `;\n }\n\n protected override render() {\n return html`\n ${this._renderAccessibleLabel()}\n <div part=\"base\">\n <div\n part=\"start-pane\"\n id=\"start-pane\"\n style=${styleMap(this._startPaneState.styles)}\n >\n <slot name=\"start\"></slot>\n </div>\n ${this._renderSeparator()}\n <div\n part=\"end-pane\"\n id=\"end-pane\"\n style=${styleMap(this._endPaneState.styles)}\n >\n <slot name=\"end\"></slot>\n </div>\n </div>\n `;\n }\n\n //#endregion\n}\n\nexport type {\n IgcSplitterComponentEventMap,\n IgcSplitterLayoutChangedEventArgs,\n IgcSplitterResizeEventArgs,\n IgcSplitterResizeEventDetail,\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-splitter': IgcSplitterComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"splitter.js","sourceRoot":"","sources":["../../../src/components/splitter/splitter.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, type PropertyValues } from 'lit';\nimport { eventOptions, property, query, state } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { addInternalsController } from '#internals/controllers/internals.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n endKey,\n homeKey,\n} from '#internals/controllers/key-bindings.js';\nimport { createResizeObserverController } from '#internals/controllers/resize-observer.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { partMap } from '#internals/part-map.js';\nimport { isLTR, resolveCssLength } from '#internals/utils/dom.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport {\n asNumber,\n asPercent,\n clamp,\n roundPrecise,\n} from '#internals/utils/math.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type { SplitterOrientation } from '../types.js';\nimport IgcVisuallyHiddenComponent from '../visually-hidden/visually-hidden.js';\nimport { styles as shared } from './themes/shared/splitter.common.css.js';\nimport { styles } from './themes/splitter.base.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n IgcSplitterComponentEventMap,\n IgcSplitterLayoutChangedEventArgs,\n IgcSplitterResizeEventArgs,\n IgcSplitterResizeEventDetail,\n PanePosition,\n PaneResizeSnapshot,\n SplitterPaneState,\n SplitterResizeState,\n} from './types.js';\n\nconst KEYBOARD_RESIZE_STEP = 10;\n\nconst PANES = ['start', 'end'] as const satisfies readonly PanePosition[];\n\n/** A number carrying a percentage sign or one of the CSS length units. */\nconst CSS_LENGTH =\n /^[+-]?(\\d+\\.?\\d*|\\.\\d+)(%|px|em|rem|ch|ex|cap|ic|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|q|in|pt|pc)$/i;\n\n/** A bare number, with no unit at all. */\nconst UNITLESS_NUMBER = /^[+-]?(\\d+\\.?\\d*|\\.\\d+)$/;\n\nconst DEFAULT_RESIZE_STATE: SplitterResizeState = {\n startPane: null,\n endPane: null,\n dragStartPosition: { x: 0, y: 0 },\n dragPointerId: -1,\n};\n\n/**\n * A splitter component that provides a resizable split-pane layout, dividing the view\n * into two panels - *start* and *end* - separated by a draggable bar.\n *\n * Panels can be resized by dragging the bar, using keyboard shortcuts, or collapsed/expanded\n * using the built-in collapse buttons or the programmatic `toggle()` API.\n * Nested splitters are supported for more complex layouts.\n *\n * @example\n * ```html\n * <!-- Basic horizontal splitter -->\n * <igc-splitter>\n * <div slot=\"start\">Start panel</div>\n * <div slot=\"end\">End panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```html\n * <!-- Vertical splitter with size constraints -->\n * <igc-splitter orientation=\"vertical\" start-min-size=\"100px\" end-min-size=\"100px\">\n * <div slot=\"start\">Top panel</div>\n * <div slot=\"end\">Bottom panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```html\n * <!-- Nested splitters for a multi-pane layout -->\n * <igc-splitter style=\"height: 600px;\">\n * <igc-splitter slot=\"start\" orientation=\"vertical\">\n * <div slot=\"start\">Top left</div>\n * <div slot=\"end\">Bottom left</div>\n * </igc-splitter>\n * <div slot=\"end\">Right panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```ts\n * // Programmatically collapse/expand a pane\n * const splitter = document.querySelector('igc-splitter');\n * splitter.toggle('start'); // collapse start pane\n * splitter.toggle('start'); // expand start pane\n * ```\n *\n * ## Keyboard interactions\n *\n * When the splitter bar is focused:\n *\n * | Key | Action |\n * |---|---|\n * | `Arrow Left` / `Arrow Right` | Resize panes (horizontal orientation) |\n * | `Arrow Up` / `Arrow Down` | Resize panes (vertical orientation) |\n * | `Home` | Snap start pane to its minimum size |\n * | `End` | Snap start pane to its maximum size |\n * | `Ctrl + Arrow Left` / `Ctrl + Arrow Up` | Collapse or expand the start pane |\n * | `Ctrl + Arrow Right` / `Ctrl + Arrow Down` | Collapse or expand the end pane |\n *\n * @element igc-splitter\n *\n * @fires igcResizeStart - Emitted once when a resize operation begins (pointer drag or keyboard).\n * @fires igcResizing - Emitted continuously while a pane is being resized.\n * @fires igcResizeEnd - Emitted once when a resize operation completes.\n * @fires igcLayoutChanged - Emitted after a user-driven resize or expansion change, with a full\n * snapshot of the current layout (pane sizes and collapsed states).\n *\n * @slot start - Content projected into the start (left/top) panel.\n * @slot end - Content projected into the end (right/bottom) panel.\n *\n * @csspart splitter-bar - The resizable bar element between the two panels.\n * @csspart drag-handle - The drag handle icon/element on the splitter bar.\n * @csspart start-pane - The container for the start panel content.\n * @csspart end-pane - The container for the end panel content.\n * @csspart start-collapse-btn - The button to collapse the start panel.\n * @csspart end-collapse-btn - The button to collapse the end panel.\n * @csspart start-expand-btn - The button to expand the start panel when collapsed.\n * @csspart end-expand-btn - The button to expand the end panel when collapsed.\n *\n * @remarks\n * The bar holds two expander elements, one on either side of the drag handle,\n * and each carries whichever part name applies to the current collapsed state.\n * A part name is therefore not tied to a fixed side: with the end pane\n * collapsed, `end-expand-btn` lands on the *first* of the two.\n */\nexport default class IgcSplitterComponent extends EventEmitterMixin<\n IgcSplitterComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-splitter';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcSplitterComponent, IgcVisuallyHiddenComponent);\n }\n\n //#region Private Properties\n\n private readonly _internals = addInternalsController(this);\n\n private readonly _separatorRef = createRef<HTMLElement>();\n\n private readonly _startPaneState: SplitterPaneState = {\n size: 'auto',\n styles: {},\n };\n private readonly _endPaneState: SplitterPaneState = {\n size: 'auto',\n styles: {},\n };\n\n @state()\n private _collapsedPane: PanePosition | null = null;\n\n private _resizeState: SplitterResizeState = { ...DEFAULT_RESIZE_STATE };\n\n private _measurement: { container: number; bar: number } | null = null;\n\n /** Container extent at the last resize notification we acted on. */\n private _observedSize = -1;\n\n @query('[part~=\"base\"]')\n private readonly _base!: HTMLElement;\n\n @query('[part~=\"start-pane\"]', true)\n private readonly _startPane!: HTMLElement;\n\n @query('[part~=\"end-pane\"]', true)\n private readonly _endPane!: HTMLElement;\n\n private get _separator(): HTMLElement | undefined {\n return this._separatorRef.value;\n }\n\n private get _isDragging(): boolean {\n return this._resizeState.dragPointerId !== -1;\n }\n\n private get _resizeDisallowed(): boolean {\n return this.disableResize || this._collapsedPane != null;\n }\n\n private get _isHorizontal(): boolean {\n return this.orientation === 'horizontal';\n }\n\n private get _separatorCursor(): string {\n if (this._resizeDisallowed) {\n return 'default';\n }\n return this._isHorizontal ? 'col-resize' : 'row-resize';\n }\n\n //#endregion\n\n //#region Public Properties\n\n /**\n * The orientation of the splitter, which determines the direction of resizing and collapsing.\n *\n * Changing the orientation after the initial render clears the pane sizes and\n * their min/max constraints, along with the corresponding attributes - a size\n * authored for one axis rarely makes sense on the other.\n * @attr orientation\n * @default 'horizontal'\n */\n @property({ reflect: true })\n public orientation: SplitterOrientation = 'horizontal';\n\n /**\n * Whether collapsing either pane is disabled. When `true`, this also hides\n * the expand/collapse buttons on the splitter bar.\n * @attr disable-collapse\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-collapse' })\n public disableCollapse = false;\n\n /**\n * Whether resizing the panes by dragging the splitter bar or using keyboard\n * shortcuts is disabled. When `true`, this also hides the drag handle on the\n * splitter bar.\n * @attr disable-resize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-resize' })\n public disableResize = false;\n\n /**\n * Whether the expand/collapse buttons on the splitter bar are hidden.\n *\n * Note that the buttons will also be hidden if `disable-collapse` is true or\n * if a pane is currently collapsed.\n * @attr hide-collapse-buttons\n * @default false\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'hide-collapse-buttons',\n })\n public hideCollapseButtons = false;\n\n /**\n * Whether the drag handle on the splitter bar is hidden.\n *\n * Note that the drag handle will also be hidden if `disable-resize` is true.\n * @attr hide-drag-handle\n * @default false\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'hide-drag-handle',\n })\n public hideDragHandle = false;\n\n /**\n * The minimum size of the start pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `100px` or `20%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 removes the constraint.\n * @attr start-min-size\n */\n @property({ attribute: 'start-min-size' })\n public set startMinSize(value: string | undefined) {\n this._startPaneState.minSize = this._normalizeValue(value);\n }\n\n public get startMinSize(): string | undefined {\n return this._startPaneState.minSize;\n }\n\n /**\n * The minimum size of the end pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `100px` or `20%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 removes the constraint.\n * @attr end-min-size\n */\n @property({ attribute: 'end-min-size' })\n public set endMinSize(value: string | undefined) {\n this._endPaneState.minSize = this._normalizeValue(value);\n }\n\n public get endMinSize(): string | undefined {\n return this._endPaneState.minSize;\n }\n\n /**\n * The maximum size of the start pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `500px` or `80%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 removes the constraint.\n * @attr start-max-size\n */\n @property({ attribute: 'start-max-size' })\n public set startMaxSize(value: string | undefined) {\n this._startPaneState.maxSize = this._normalizeValue(value);\n }\n\n public get startMaxSize(): string | undefined {\n return this._startPaneState.maxSize;\n }\n\n /**\n * The maximum size of the end pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `500px` or `80%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 removes the constraint.\n * @attr end-max-size\n */\n @property({ attribute: 'end-max-size' })\n public set endMaxSize(value: string | undefined) {\n this._endPaneState.maxSize = this._normalizeValue(value);\n }\n\n public get endMaxSize(): string | undefined {\n return this._endPaneState.maxSize;\n }\n\n /**\n * The size of the start pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `200px` or `50%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 falls back to automatic sizing.\n * @attr start-size\n */\n @property({ attribute: 'start-size' })\n public set startSize(value: string | undefined) {\n this._setPaneSize('start', value);\n }\n\n public get startSize(): string | undefined {\n return this._startPaneState.size;\n }\n\n /**\n * The size of the end pane.\n *\n * Accepts a CSS length with an explicit unit, e.g. `200px` or `50%`, or a\n * unitless `0`. Setting `auto`, any other unitless or unparsable value, a\n * negative value, or a percentage above 100 falls back to automatic sizing.\n * @attr end-size\n */\n @property({ attribute: 'end-size' })\n public set endSize(value: string | undefined) {\n this._setPaneSize('end', value);\n }\n\n public get endSize(): string | undefined {\n return this._endPaneState.size;\n }\n\n /**\n * Whether the start pane is currently collapsed. Set this property to\n * collapse or expand the pane programmatically.\n * @attr start-collapsed\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'start-collapsed' })\n public set startCollapsed(value: boolean) {\n this._setCollapsed('start', value);\n }\n\n public get startCollapsed(): boolean {\n return this._isCollapsed('start');\n }\n\n /**\n * Whether the end pane is currently collapsed. Set this property to\n * collapse or expand the pane programmatically.\n * @attr end-collapsed\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'end-collapsed' })\n public set endCollapsed(value: boolean) {\n this._setCollapsed('end', value);\n }\n\n public get endCollapsed(): boolean {\n return this._isCollapsed('end');\n }\n\n //#endregion\n\n //#region Lifecycle\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addSlotController(this, { slots: setSlots('start', 'end') });\n\n createResizeObserverController(this, {\n callback: () => this._handleContainerResize(),\n });\n\n addKeybindings(this, {\n ref: this._separatorRef,\n })\n .set(arrowUp, () => this._handleResizePanes(-1, 'vertical'))\n .set(arrowDown, () => this._handleResizePanes(1, 'vertical'))\n .set(arrowLeft, () => this._handleResizePanes(-1, 'horizontal'))\n .set(arrowRight, () => this._handleResizePanes(1, 'horizontal'))\n .set(homeKey, () => this._handleMinMaxResize('min'))\n .set(endKey, () => this._handleMinMaxResize('max'))\n .set([ctrlKey, arrowUp], () =>\n this._handleArrowsExpandCollapse('start', 'vertical')\n )\n .set([ctrlKey, arrowDown], () =>\n this._handleArrowsExpandCollapse('end', 'vertical')\n )\n .set([ctrlKey, arrowLeft], () =>\n this._handleArrowsExpandCollapse('start', 'horizontal')\n )\n .set([ctrlKey, arrowRight], () =>\n this._handleArrowsExpandCollapse('end', 'horizontal')\n );\n }\n\n protected override update(changed: PropertyValues<this>): void {\n this._measurement = null;\n\n if (changed.get('orientation') != null) {\n this._resetPaneSizes();\n }\n\n if (this.hasUpdated) {\n this._updatePanes();\n }\n\n super.update(changed);\n }\n\n protected override updated(): void {\n // Layout has just been committed; the `update()` measurements are stale.\n this._measurement = null;\n this._updateBarAria();\n }\n\n public override disconnectedCallback(): void {\n this._endDrag();\n super.disconnectedCallback();\n }\n\n //#endregion\n\n //#region Resize Event Handlers\n\n private _handleBarPointerDown(e: PointerEvent): void {\n if (e.button !== 0 || this._isDragging) {\n return;\n }\n\n e.preventDefault();\n\n this._resizeState = {\n ...this._resizeState,\n dragPointerId: e.pointerId,\n dragStartPosition: { x: e.clientX, y: e.clientY },\n };\n\n this._resizeStart();\n this._separator?.setPointerCapture(this._resizeState.dragPointerId);\n }\n\n private _getDragDelta(e: PointerEvent): number {\n const deltaX = e.clientX - this._resizeState.dragStartPosition.x;\n const deltaY = e.clientY - this._resizeState.dragStartPosition.y;\n return this._resolveDelta(deltaX, deltaY);\n }\n\n private _handleBarPointerMove(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n const delta = this._getDragDelta(e);\n\n if (delta !== 0) {\n this._resizing(delta);\n }\n }\n\n private _handleEndDrag(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n this._resizeEnd(this._getDragDelta(e));\n this._endDrag();\n }\n\n /** A cancelled gesture reverts, but still reports an end for the start it emitted. */\n private _handleCancelDrag(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n this._resizeEnd(0);\n this._endDrag();\n }\n\n private _endDrag(): void {\n const { dragPointerId } = this._resizeState;\n\n // `releasePointerCapture` throws for a pointer that is no longer active.\n if (this._separator?.hasPointerCapture(dragPointerId)) {\n this._separator.releasePointerCapture(dragPointerId);\n }\n\n this._resizeState = { ...DEFAULT_RESIZE_STATE };\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * Toggles the collapsed state of the specified pane.\n *\n * Does not emit `igcLayoutChanged` - that event reports user-driven changes,\n * and a programmatic call is already known to the caller.\n */\n public toggle(position: PanePosition): void {\n this._applyCollapse(this._collapsedPane === position ? null : position);\n }\n\n //#endregion\n\n //#region Internal API\n\n private _applyCollapse(target: PanePosition | null): void {\n if (this._collapsedPane === null && target !== null) {\n this._savePaneSizes();\n }\n\n const wasStartCollapsed = this._isCollapsed('start');\n const wasEndCollapsed = this._isCollapsed('end');\n\n this._collapsedPane = target;\n\n // `toggle()`, the expanders and Ctrl + arrow do not use the decorated\n // accessors, and one assignment can change both flags. Request both, so that\n // Lit reads them from their getters and leaves neither stale.\n this.requestUpdate('startCollapsed', wasStartCollapsed);\n this.requestUpdate('endCollapsed', wasEndCollapsed);\n\n this._internals.setState('start-collapsed', this._isCollapsed('start'));\n this._internals.setState('end-collapsed', this._isCollapsed('end'));\n\n this._restoreSizesOnExpandCollapse();\n }\n\n private _setPaneSize(pane: PanePosition, value: string | undefined): void {\n this._getPaneState(pane).size = this._normalizeValue(value, 'auto');\n\n // A size set while collapsed wins over the snapshot from before the\n // collapse. Drop the full snapshot. The share of the other pane would\n // over-subscribe the container and shrink both panes.\n if (this._collapsedPane !== null) {\n for (const target of PANES) {\n this._getPaneState(target).savedSize = undefined;\n }\n }\n }\n\n /** Drops the authored sizes and their attributes, which would otherwise diverge. */\n private _resetPaneSizes(): void {\n for (const pane of PANES) {\n const state = this._getPaneState(pane);\n state.size = 'auto';\n state.minSize = undefined;\n state.maxSize = undefined;\n state.savedSize = undefined;\n\n for (const suffix of ['size', 'min-size', 'max-size']) {\n this.removeAttribute(`${pane}-${suffix}`);\n }\n }\n }\n\n private _setCollapsed(pane: PanePosition, value: boolean): void {\n if (this._isCollapsed(pane) === value) {\n return;\n }\n this._applyCollapse(value ? pane : null);\n }\n\n private _savePaneSizes(): void {\n // Not measurable yet (collapsed before the first render) - keep the\n // explicit size rather than lose it to the 'auto' reset.\n if (this._getTotalSize() === 0) {\n this._startPaneState.savedSize = this._startPaneState.size;\n this._endPaneState.savedSize = this._endPaneState.size;\n return;\n }\n // Higher precision than the ARIA percent so restored layouts don't drift.\n const [start, end] = this._rectSize();\n this._startPaneState.savedSize = `${this._asPercentOfContainer(start, 2)}%`;\n this._endPaneState.savedSize = `${this._asPercentOfContainer(end, 2)}%`;\n }\n\n /* Reset sizes on collapse; restore saved sizes on expand */\n private _restoreSizesOnExpandCollapse(): void {\n if (this._collapsedPane !== null) {\n this._startPaneState.size = 'auto';\n this._endPaneState.size = 'auto';\n } else {\n this._startPaneState.size =\n this._startPaneState.savedSize ?? this.startSize;\n this._endPaneState.size = this._endPaneState.savedSize ?? this.endSize;\n }\n }\n\n /**\n * The container is what the browser resolves a percentage `flex-basis`\n * against, so a value measured this way survives a round trip through CSS.\n */\n private _asPercentOfContainer(size: number, precision = 0): number {\n const containerSize = this._getContainerSize();\n return containerSize === 0\n ? 0\n : roundPrecise(asPercent(size, containerSize), precision);\n }\n\n /** Resolves a CSS length to pixels, percentages against the container. */\n private _toPixels(value: string): number {\n if (value.endsWith('%')) {\n return (asNumber(value) / 100) * this._getContainerSize();\n }\n\n return this._base ? resolveCssLength(this._base, value) : 0;\n }\n\n private _getStartPaneSizePercent(): number {\n if (!this._startPane || this._isCollapsed('start')) {\n return 0;\n }\n\n if (this._isCollapsed('end')) {\n return 100;\n }\n\n return this._asPercentOfContainer(this._rectSize()[0]);\n }\n\n private _getMinMaxAsPercent(type: 'min' | 'max'): number {\n const value = type === 'min' ? this.startMinSize : this.startMaxSize;\n\n if (!value) {\n return type === 'min' ? 0 : 100;\n }\n\n return this._asPercentOfContainer(this._toPixels(value));\n }\n\n private _isCollapsed(which: PanePosition): boolean {\n return this._collapsedPane === which;\n }\n\n private _otherPane(pane: PanePosition): PanePosition {\n return pane === 'start' ? 'end' : 'start';\n }\n\n private _updateBarAria(): void {\n const separator = this._separator;\n\n if (separator) {\n const value = this._getStartPaneSizePercent();\n\n separator.ariaValueNow = value.toString();\n separator.ariaValueText = `${value}%`;\n separator.ariaValueMin = this._getMinMaxAsPercent('min').toString();\n separator.ariaValueMax = this._getMinMaxAsPercent('max').toString();\n }\n }\n\n private _getPaneState(which: PanePosition): SplitterPaneState {\n return which === 'start' ? this._startPaneState : this._endPaneState;\n }\n\n private _isPercentageSize(which: PanePosition): boolean {\n const { size } = this._getPaneState(which);\n return !!size && size.includes('%');\n }\n\n private _isAutoSize(which: PanePosition): boolean {\n return this._getPaneState(which).size === 'auto';\n }\n\n private _normalizeValue(\n value: string | undefined,\n fallback?: 'auto'\n ): string | undefined {\n const trimmed = value?.trim();\n if (!trimmed || trimmed === 'auto') {\n return fallback;\n }\n\n const numericValue = asNumber(trimmed, -1);\n if (numericValue < 0) return fallback;\n if (trimmed.includes('%') && numericValue > 100) return fallback;\n\n // Zero is the one length that needs no unit; any other bare number is\n // invalid CSS and would silently drop the whole `flex` shorthand.\n const isUnitlessZero = numericValue === 0 && UNITLESS_NUMBER.test(trimmed);\n\n return isUnitlessZero || CSS_LENGTH.test(trimmed) ? trimmed : fallback;\n }\n\n private _getFlex(which: PanePosition, forceAuto = false): string {\n const isAuto = forceAuto || this._isAutoSize(which);\n const size = isAuto ? '0px' : this._getPaneState(which).size;\n return `${isAuto ? 1 : 0} 1 ${size}`;\n }\n\n private _handleResizePanes(\n direction: -1 | 1,\n validOrientation: SplitterOrientation\n ): void {\n if (this._resizeDisallowed || this.orientation !== validOrientation) {\n return;\n }\n const delta = this._resolveDelta(\n KEYBOARD_RESIZE_STEP,\n KEYBOARD_RESIZE_STEP,\n direction\n );\n\n this._runResize(delta);\n }\n\n /**\n * A complete resize for a gesture that is not a pointer drag. `_calcNewSizes`\n * is shared with the drag path, which keeps the constraints of both panes and\n * makes the emitted sizes equal to the rendered ones.\n */\n private _runResize(delta: number): void {\n this._resizeStart();\n this._resizing(delta);\n this._resizeEnd(delta);\n this._endDrag();\n }\n\n @eventOptions({ passive: false })\n private _preventDefaultForEvent(e: Event): void {\n e.preventDefault();\n }\n\n private _resolveDelta(\n deltaX: number,\n deltaY: number,\n direction?: -1 | 1\n ): number {\n const isHorizontal = this._isHorizontal;\n const rtlMultiplier = isHorizontal && !isLTR(this) ? -1 : 1;\n const delta = isHorizontal ? deltaX : deltaY;\n return delta * rtlMultiplier * (direction ?? 1);\n }\n\n /** Snaps the start pane to its minimum or maximum size. */\n private _handleMinMaxResize(type: 'min' | 'max'): void {\n if (this._resizeDisallowed) {\n return;\n }\n\n const targetStartSizePx =\n this._getConstraintInPx('start', type) ??\n (type === 'min' ? 0 : this._getTotalSize());\n\n this._runResize(targetStartSizePx - this._rectSize()[0]);\n }\n\n private _handleExpanderAction(pane: PanePosition): void {\n const other = this._otherPane(pane);\n this._toggleWithEvent(this._collapsedPane === other ? other : pane);\n }\n\n private _toggleWithEvent(position: PanePosition): void {\n this.toggle(position);\n this._emitLayoutChanged();\n }\n\n // Both sizes render as 'auto' while collapsed, so report the pre-collapse\n // ones instead - those are what a consumer needs to restore the layout.\n private _reportedSize(pane: PanePosition): string {\n const state = this._getPaneState(pane);\n return (\n (this._collapsedPane !== null ? state.savedSize : state.size) ?? 'auto'\n );\n }\n\n private _emitLayoutChanged(): void {\n const detail: IgcSplitterLayoutChangedEventArgs = {\n startSize: this._reportedSize('start'),\n endSize: this._reportedSize('end'),\n startCollapsed: this.startCollapsed,\n endCollapsed: this.endCollapsed,\n };\n this.emitEvent('igcLayoutChanged', { detail });\n }\n\n private _handleArrowsExpandCollapse(\n target: PanePosition,\n validOrientation: SplitterOrientation\n ): void {\n if (this.disableCollapse || this.orientation !== validOrientation) {\n return;\n }\n const isFlipped = validOrientation === 'horizontal' && !isLTR(this);\n this._handleExpanderAction(isFlipped ? this._otherPane(target) : target);\n }\n\n private _resizeStart(): void {\n const [startSize, endSize] = this._rectSize();\n\n this._resizeState.startPane = this._createPaneState('start', startSize);\n this._resizeState.endPane = this._createPaneState('end', endSize);\n\n this.emitEvent('igcResizeStart', {\n detail: { startPanelSize: startSize, endPanelSize: endSize },\n });\n }\n\n private _createPaneState(\n pane: PanePosition,\n size: number\n ): PaneResizeSnapshot {\n return {\n initialSize: size,\n isPercentageBased: this._isPercentageSize(pane) || this._isAutoSize(pane),\n minSizePx: this._getConstraintInPx(pane, 'min'),\n maxSizePx: this._getConstraintInPx(pane, 'max'),\n };\n }\n\n private _getConstraintInPx(\n pane: PanePosition,\n type: 'min' | 'max'\n ): number | undefined {\n const { minSize, maxSize } = this._getPaneState(pane);\n const value = type === 'max' ? maxSize : minSize;\n\n return value ? this._toPixels(value) : undefined;\n }\n\n private _resizing(delta: number): void {\n if (!this._resizeState.startPane || !this._resizeState.endPane) {\n return;\n }\n\n const [startPaneSize, endPaneSize] = this._calcNewSizes(delta);\n\n this.startSize = `${startPaneSize}px`;\n this.endSize = `${endPaneSize}px`;\n\n this.emitEvent('igcResizing', {\n detail: {\n startPanelSize: startPaneSize,\n endPanelSize: endPaneSize,\n delta,\n },\n });\n }\n\n private _computeSize(\n pane: PaneResizeSnapshot,\n paneSize: number,\n containerSize: number\n ): string {\n return pane.isPercentageBased\n ? `${asPercent(paneSize, containerSize)}%`\n : `${roundPrecise(paneSize, 0)}px`;\n }\n\n private _resizeEnd(delta: number): void {\n const { startPane, endPane } = this._resizeState;\n\n if (!startPane || !endPane) {\n return;\n }\n\n // A cancelled gesture reverts to the sizes captured at `_resizeStart`.\n const [startPaneSize, endPaneSize] =\n delta === 0\n ? [startPane.initialSize, endPane.initialSize]\n : this._calcNewSizes(delta);\n const containerSize = this._getContainerSize();\n\n this.startSize = this._computeSize(startPane, startPaneSize, containerSize);\n this.endSize = this._computeSize(endPane, endPaneSize, containerSize);\n\n this.emitEvent('igcResizeEnd', {\n detail: {\n startPanelSize: startPaneSize,\n endPanelSize: endPaneSize,\n delta,\n },\n });\n this._emitLayoutChanged();\n }\n\n private _rectSize(): [number, number] {\n const axis = this._isHorizontal ? 'width' : 'height';\n const startPaneRect = this._startPane.getBoundingClientRect();\n const endPaneRect = this._endPane.getBoundingClientRect();\n\n return [startPaneRect[axis], endPaneRect[axis]];\n }\n\n private _calcNewSizes(delta: number): [number, number] {\n if (!this._resizeState.startPane || !this._resizeState.endPane)\n return [0, 0];\n\n const start = this._resizeState.startPane;\n const end = this._resizeState.endPane;\n const minStart = start.minSizePx || 0;\n const minEnd = end.minSizePx || 0;\n const maxStart =\n start.maxSizePx || start.initialSize + end.initialSize - minEnd;\n const maxEnd =\n end.maxSizePx || start.initialSize + end.initialSize - minStart;\n\n const maxPosDelta = Math.min(\n maxStart - start.initialSize,\n end.initialSize - minEnd\n );\n const maxNegDelta = Math.min(\n start.initialSize - minStart,\n maxEnd - end.initialSize\n );\n const finalDelta = clamp(delta, -maxNegDelta, maxPosDelta);\n\n return [start.initialSize + finalDelta, end.initialSize - finalDelta];\n }\n\n /**\n * Reads the container and bar extents one time per update pass. Both\n * `_updatePanes` and `_updateBarAria` need them, and the style writes between\n * them would force a reflow for each read.\n */\n private _measure(): { container: number; bar: number } {\n const axis = this._isHorizontal ? 'width' : 'height';\n\n this._measurement ??= {\n container: this._base ? this._base.getBoundingClientRect()[axis] : 0,\n bar: this._separator\n ? roundPrecise(this._separator.getBoundingClientRect()[axis])\n : 0,\n };\n\n return this._measurement;\n }\n\n /** The content box of the flex container - the basis for every percentage. */\n private _getContainerSize(): number {\n return this._measure().container;\n }\n\n /** The space left for the panes once the bar has taken its own. */\n private _getTotalSize(): number {\n const { container, bar } = this._measure();\n return container === 0 ? 0 : container - bar;\n }\n\n private _handleContainerResize(): void {\n this._measurement = null;\n const size = this._getContainerSize();\n\n if (size !== this._observedSize) {\n this._observedSize = size;\n this.requestUpdate();\n }\n }\n\n private _updatePanes(): void {\n const isCollapsed = this._collapsedPane !== null;\n\n // A collapsed pane renders as `auto` with its constraints lifted, while the\n // authored values stay untouched so they survive the round trip.\n for (const pane of PANES) {\n const { minSize, maxSize } = this._getPaneState(pane);\n\n this._setPaneMinMaxSizes(\n pane,\n isCollapsed ? '0' : minSize,\n isCollapsed ? '100%' : maxSize\n );\n this._updatePaneStyles(pane, { flex: this._getFlex(pane, isCollapsed) });\n }\n }\n\n private _updatePaneStyles(pane: PanePosition, styles: StyleInfo): void {\n Object.assign(this._getPaneState(pane).styles, styles);\n }\n\n private _setPaneMinMaxSizes(\n pane: PanePosition,\n minSize?: string,\n maxSize?: string\n ): void {\n const min = this._ensureMinConstraintIsWithinBounds(pane, minSize) ?? 0;\n const max = maxSize ?? '100%';\n\n this._updatePaneStyles(\n pane,\n this._isHorizontal\n ? { minWidth: min, maxWidth: max, minHeight: 0, maxHeight: '100%' }\n : { minWidth: 0, maxWidth: '100%', minHeight: min, maxHeight: max }\n );\n }\n\n private _ensureMinConstraintIsWithinBounds(\n pane: PanePosition,\n minSize?: string\n ): string | undefined {\n const total = this._getTotalSize();\n\n if (!minSize || total <= 0) {\n return minSize;\n }\n\n const minPx = this._getConstraintInPx(pane, 'min') ?? 0;\n const otherMinPx =\n this._getConstraintInPx(this._otherPane(pane), 'min') ?? 0;\n\n // Dropping a constraint the panes cannot both satisfy keeps content from\n // overflowing. It is reapplied once the container grows to accommodate it.\n return minPx + otherMinPx > total ? undefined : minSize;\n }\n\n private _handleExpanderClick(pane: PanePosition, event: PointerEvent): void {\n // Keep the bar from starting a resize\n event.stopPropagation();\n this._handleExpanderAction(pane);\n }\n\n //#endregion\n\n //#region Rendering\n\n private _resolvePartNames(expander: PanePosition): Record<string, boolean> {\n const other = this._otherPane(expander);\n const otherIsCollapsed = this._isCollapsed(other);\n\n return {\n [`${other}-expand-btn`]: otherIsCollapsed,\n [`${expander}-collapse-btn`]: !otherIsCollapsed,\n };\n }\n\n private _renderBarControls() {\n const dragHandleHidden = this.hideDragHandle || this.disableResize;\n const hidden = this.disableCollapse || this.hideCollapseButtons;\n const prevButtonHidden = hidden || this._isCollapsed('start');\n const nextButtonHidden = hidden || this._isCollapsed('end');\n\n return html`\n <div\n part=\"${partMap(this._resolvePartNames('start'))}\"\n ?hidden=${prevButtonHidden}\n @pointerdown=${(e: PointerEvent) =>\n this._handleExpanderClick('start', e)}\n ></div>\n <div part=\"drag-handle\" ?hidden=${dragHandleHidden}></div>\n <div\n part=\"${partMap(this._resolvePartNames('end'))}\"\n ?hidden=${nextButtonHidden}\n @pointerdown=${(e: PointerEvent) => this._handleExpanderClick('end', e)}\n ></div>\n `;\n }\n\n private _renderAccessibleLabel() {\n return html`\n <igc-visually-hidden id=\"splitter-label\"\n >Resize panes</igc-visually-hidden\n >\n <igc-visually-hidden id=\"splitter-state\">\n ${\n this._isCollapsed('start')\n ? 'Start pane collapsed'\n : 'Start pane expanded'\n }\n and\n ${this._isCollapsed('end') ? 'End pane collapsed' : 'End pane expanded'}\n </igc-visually-hidden>\n `;\n }\n\n private _renderSeparator() {\n const canResize = !this._resizeDisallowed;\n\n return html`\n <div\n ${ref(this._separatorRef)}\n part=\"splitter-bar\"\n role=\"separator\"\n tabindex=${this.disableCollapse && this.disableResize ? -1 : 0}\n aria-controls=\"start-pane end-pane\"\n aria-labelledby=\"splitter-label\"\n aria-describedby=\"splitter-state\"\n aria-orientation=${this.orientation}\n style=${styleMap({ '--cursor': this._separatorCursor })}\n @touchstart=${bindIf(canResize, this._preventDefaultForEvent)}\n @contextmenu=${bindIf(canResize, this._preventDefaultForEvent)}\n @pointerdown=${bindIf(canResize, this._handleBarPointerDown)}\n @pointermove=${this._handleBarPointerMove}\n @pointerup=${this._handleEndDrag}\n @lostpointercapture=${this._handleEndDrag}\n @pointercancel=${this._handleCancelDrag}\n >\n ${this._renderBarControls()}\n </div>\n `;\n }\n\n protected override render() {\n return html`\n ${this._renderAccessibleLabel()}\n <div part=\"base\">\n <div\n part=\"start-pane\"\n id=\"start-pane\"\n style=${styleMap(this._startPaneState.styles)}\n >\n <slot name=\"start\"></slot>\n </div>\n ${this._renderSeparator()}\n <div\n part=\"end-pane\"\n id=\"end-pane\"\n style=${styleMap(this._endPaneState.styles)}\n >\n <slot name=\"end\"></slot>\n </div>\n </div>\n `;\n }\n\n //#endregion\n}\n\nexport type {\n IgcSplitterComponentEventMap,\n IgcSplitterLayoutChangedEventArgs,\n IgcSplitterResizeEventArgs,\n IgcSplitterResizeEventDetail,\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-splitter': IgcSplitterComponent;\n }\n}\n"]}
@@ -26,7 +26,7 @@ declare const IgcTextareaComponent_base: Constructor<import("../../internals/mix
26
26
  * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).
27
27
  *
28
28
  * @fires igcInput - Emitted when the control receives user input.
29
- * @fires igcChange - Emitted when the a change to the control value is committed by the user.
29
+ * @fires igcChange - Emitted when a change to the control value is committed by the user.
30
30
  *
31
31
  * @csspart container - The main wrapper that holds all main input elements of the textarea.
32
32
  * @csspart input - The native input element of the textarea.
@@ -42,10 +42,7 @@ export default class IgcTextareaComponent extends IgcTextareaComponent_base {
42
42
  private readonly _inputId;
43
43
  private readonly _themes;
44
44
  private readonly _slots;
45
- /**
46
- * Receives ARIA semantics projected by a composite host onto the inner
47
- * native textarea. See {@link addAriaTarget}.
48
- */
45
+ /** Names and describes the native textarea. See {@link addAriaTarget}. */
49
46
  private readonly _ariaTarget;
50
47
  private readonly _input?;
51
48
  protected get __validators(): import("../../internals/validators.js").Validator<IgcTextareaComponent>[];