@m3e/web 2.5.5 → 2.5.7

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 (211) hide show
  1. package/README.md +1 -1
  2. package/dist/all.js +511 -248
  3. package/dist/all.js.map +1 -1
  4. package/dist/all.min.js +31 -31
  5. package/dist/all.min.js.map +1 -1
  6. package/dist/autocomplete.js +3 -3
  7. package/dist/autocomplete.js.map +1 -1
  8. package/dist/autocomplete.min.js.map +1 -1
  9. package/dist/bottom-sheet.js +5 -5
  10. package/dist/bottom-sheet.js.map +1 -1
  11. package/dist/bottom-sheet.min.js.map +1 -1
  12. package/dist/breadcrumb.js +1 -1
  13. package/dist/breadcrumb.js.map +1 -1
  14. package/dist/breadcrumb.min.js.map +1 -1
  15. package/dist/button.js +7 -8
  16. package/dist/button.js.map +1 -1
  17. package/dist/button.min.js +1 -1
  18. package/dist/button.min.js.map +1 -1
  19. package/dist/calendar.js +1 -1
  20. package/dist/calendar.js.map +1 -1
  21. package/dist/calendar.min.js.map +1 -1
  22. package/dist/card.js +1 -1
  23. package/dist/card.js.map +1 -1
  24. package/dist/card.min.js.map +1 -1
  25. package/dist/checkbox.js +10 -9
  26. package/dist/checkbox.js.map +1 -1
  27. package/dist/checkbox.min.js +1 -1
  28. package/dist/checkbox.min.js.map +1 -1
  29. package/dist/chips.js +17 -16
  30. package/dist/chips.js.map +1 -1
  31. package/dist/chips.min.js +1 -1
  32. package/dist/chips.min.js.map +1 -1
  33. package/dist/core.js +5 -5
  34. package/dist/core.js.map +1 -1
  35. package/dist/core.min.js.map +1 -1
  36. package/dist/css-custom-data.json +314 -314
  37. package/dist/custom-elements.json +5222 -4838
  38. package/dist/datepicker.js +26 -2
  39. package/dist/datepicker.js.map +1 -1
  40. package/dist/datepicker.min.js +1 -1
  41. package/dist/datepicker.min.js.map +1 -1
  42. package/dist/dialog.js +5 -5
  43. package/dist/dialog.js.map +1 -1
  44. package/dist/dialog.min.js.map +1 -1
  45. package/dist/drawer-container.js +1 -1
  46. package/dist/drawer-container.js.map +1 -1
  47. package/dist/drawer-container.min.js.map +1 -1
  48. package/dist/expansion-panel.js +5 -5
  49. package/dist/expansion-panel.js.map +1 -1
  50. package/dist/expansion-panel.min.js.map +1 -1
  51. package/dist/fab-menu.js +1 -1
  52. package/dist/fab-menu.js.map +1 -1
  53. package/dist/fab-menu.min.js.map +1 -1
  54. package/dist/fab.js +1 -1
  55. package/dist/fab.js.map +1 -1
  56. package/dist/fab.min.js.map +1 -1
  57. package/dist/html-custom-data.json +296 -291
  58. package/dist/icon-button.js +7 -8
  59. package/dist/icon-button.js.map +1 -1
  60. package/dist/icon-button.min.js +1 -1
  61. package/dist/icon-button.min.js.map +1 -1
  62. package/dist/list.js +17 -16
  63. package/dist/list.js.map +1 -1
  64. package/dist/list.min.js +1 -1
  65. package/dist/list.min.js.map +1 -1
  66. package/dist/menu.js +3 -3
  67. package/dist/menu.js.map +1 -1
  68. package/dist/menu.min.js.map +1 -1
  69. package/dist/nav-bar.js +12 -9
  70. package/dist/nav-bar.js.map +1 -1
  71. package/dist/nav-bar.min.js +1 -1
  72. package/dist/nav-bar.min.js.map +1 -1
  73. package/dist/nav-menu.js +5 -5
  74. package/dist/nav-menu.js.map +1 -1
  75. package/dist/nav-menu.min.js.map +1 -1
  76. package/dist/nav-rail.js +3 -1
  77. package/dist/nav-rail.js.map +1 -1
  78. package/dist/nav-rail.min.js.map +1 -1
  79. package/dist/paginator.js +1 -1
  80. package/dist/paginator.js.map +1 -1
  81. package/dist/paginator.min.js.map +1 -1
  82. package/dist/radio-group.js +12 -9
  83. package/dist/radio-group.js.map +1 -1
  84. package/dist/radio-group.min.js +1 -1
  85. package/dist/radio-group.min.js.map +1 -1
  86. package/dist/segmented-button.js +12 -11
  87. package/dist/segmented-button.js.map +1 -1
  88. package/dist/segmented-button.min.js +1 -1
  89. package/dist/segmented-button.min.js.map +1 -1
  90. package/dist/select.js +9 -9
  91. package/dist/select.js.map +1 -1
  92. package/dist/select.min.js +1 -1
  93. package/dist/select.min.js.map +1 -1
  94. package/dist/slide-group.js +6 -1
  95. package/dist/slide-group.js.map +1 -1
  96. package/dist/slide-group.min.js +1 -1
  97. package/dist/slide-group.min.js.map +1 -1
  98. package/dist/slider.js +46 -25
  99. package/dist/slider.js.map +1 -1
  100. package/dist/slider.min.js +1 -1
  101. package/dist/slider.min.js.map +1 -1
  102. package/dist/split-pane.js +17 -19
  103. package/dist/split-pane.js.map +1 -1
  104. package/dist/split-pane.min.js +1 -1
  105. package/dist/split-pane.min.js.map +1 -1
  106. package/dist/src/autocomplete/AutocompleteElement.d.ts +3 -3
  107. package/dist/src/autocomplete/AutocompleteQueryEventDetail.d.ts +1 -1
  108. package/dist/src/autocomplete/QueryEventDetail.d.ts +1 -1
  109. package/dist/src/bottom-sheet/BottomSheetElement.d.ts +5 -5
  110. package/dist/src/breadcrumb/BreadcrumbItemElement.d.ts +1 -1
  111. package/dist/src/button/ButtonElement.d.ts +2 -1
  112. package/dist/src/button/ButtonElement.d.ts.map +1 -1
  113. package/dist/src/calendar/CalendarElement.d.ts +1 -1
  114. package/dist/src/card/CardElement.d.ts +1 -1
  115. package/dist/src/checkbox/CheckboxElement.d.ts +5 -4
  116. package/dist/src/checkbox/CheckboxElement.d.ts.map +1 -1
  117. package/dist/src/chips/AssistChipElement.d.ts +1 -1
  118. package/dist/src/chips/FilterChipElement.d.ts +4 -3
  119. package/dist/src/chips/FilterChipElement.d.ts.map +1 -1
  120. package/dist/src/chips/FilterChipSetElement.d.ts +3 -2
  121. package/dist/src/chips/FilterChipSetElement.d.ts.map +1 -1
  122. package/dist/src/chips/InputChipElement.d.ts +2 -2
  123. package/dist/src/chips/InputChipSetElement.d.ts +1 -1
  124. package/dist/src/chips/SuggestionChipElement.d.ts +1 -1
  125. package/dist/src/core/shared/primitives/CollapsibleElement.d.ts +4 -4
  126. package/dist/src/core/shared/primitives/TextHighlightElement.d.ts +1 -1
  127. package/dist/src/datepicker/DatepickerElement.d.ts +6 -0
  128. package/dist/src/datepicker/DatepickerElement.d.ts.map +1 -1
  129. package/dist/src/dialog/DialogElement.d.ts +5 -5
  130. package/dist/src/drawer-container/DrawerContainerElement.d.ts +1 -1
  131. package/dist/src/expansion-panel/ExpansionHeaderElement.d.ts +1 -1
  132. package/dist/src/expansion-panel/ExpansionPanelElement.d.ts +4 -4
  133. package/dist/src/fab/FabElement.d.ts +1 -1
  134. package/dist/src/fab-menu/FabMenuItemElement.d.ts +1 -1
  135. package/dist/src/icon-button/IconButtonElement.d.ts +2 -1
  136. package/dist/src/icon-button/IconButtonElement.d.ts.map +1 -1
  137. package/dist/src/list/ExpandableListItemElement.d.ts +4 -4
  138. package/dist/src/list/ListActionElement.d.ts +1 -1
  139. package/dist/src/list/ListOptionElement.d.ts +4 -3
  140. package/dist/src/list/ListOptionElement.d.ts.map +1 -1
  141. package/dist/src/list/SelectionListElement.d.ts +3 -2
  142. package/dist/src/list/SelectionListElement.d.ts.map +1 -1
  143. package/dist/src/menu/MenuItemCheckboxElement.d.ts +1 -1
  144. package/dist/src/menu/MenuItemElement.d.ts +1 -1
  145. package/dist/src/menu/MenuItemRadioElement.d.ts +1 -1
  146. package/dist/src/nav-bar/NavBarElement.d.ts +3 -1
  147. package/dist/src/nav-bar/NavBarElement.d.ts.map +1 -1
  148. package/dist/src/nav-bar/NavItemElement.d.ts +4 -3
  149. package/dist/src/nav-bar/NavItemElement.d.ts.map +1 -1
  150. package/dist/src/nav-menu/NavMenuItemElement.d.ts +5 -5
  151. package/dist/src/nav-rail/NavRailElement.d.ts +3 -1
  152. package/dist/src/nav-rail/NavRailElement.d.ts.map +1 -1
  153. package/dist/src/paginator/PageEventDetail.d.ts +1 -1
  154. package/dist/src/paginator/PaginatorElement.d.ts +1 -1
  155. package/dist/src/paginator/PaginatorPageEventDetail.d.ts +1 -1
  156. package/dist/src/paginator/PaginatorPageEventDetail.d.ts.map +1 -1
  157. package/dist/src/radio-group/RadioElement.d.ts +4 -3
  158. package/dist/src/radio-group/RadioElement.d.ts.map +1 -1
  159. package/dist/src/radio-group/RadioGroupElement.d.ts +3 -1
  160. package/dist/src/radio-group/RadioGroupElement.d.ts.map +1 -1
  161. package/dist/src/search/SearchViewQueryEventDetail.d.ts +1 -1
  162. package/dist/src/segmented-button/ButtonSegmentElement.d.ts +4 -3
  163. package/dist/src/segmented-button/ButtonSegmentElement.d.ts.map +1 -1
  164. package/dist/src/segmented-button/SegmentedButtonElement.d.ts +3 -2
  165. package/dist/src/segmented-button/SegmentedButtonElement.d.ts.map +1 -1
  166. package/dist/src/select/SelectElement.d.ts +3 -2
  167. package/dist/src/select/SelectElement.d.ts.map +1 -1
  168. package/dist/src/slide-group/SlideGroupElement.d.ts.map +1 -1
  169. package/dist/src/slider/SliderElement.d.ts +4 -0
  170. package/dist/src/slider/SliderElement.d.ts.map +1 -1
  171. package/dist/src/slider/SliderThumbElement.d.ts +4 -3
  172. package/dist/src/slider/SliderThumbElement.d.ts.map +1 -1
  173. package/dist/src/split-pane/SplitPaneElement.d.ts +3 -2
  174. package/dist/src/split-pane/SplitPaneElement.d.ts.map +1 -1
  175. package/dist/src/stepper/StepElement.d.ts +4 -3
  176. package/dist/src/stepper/StepElement.d.ts.map +1 -1
  177. package/dist/src/stepper/StepperElement.d.ts +5 -1
  178. package/dist/src/stepper/StepperElement.d.ts.map +1 -1
  179. package/dist/src/switch/SwitchElement.d.ts +4 -3
  180. package/dist/src/switch/SwitchElement.d.ts.map +1 -1
  181. package/dist/src/tabs/TabElement.d.ts +4 -3
  182. package/dist/src/tabs/TabElement.d.ts.map +1 -1
  183. package/dist/src/tabs/TabsElement.d.ts +5 -2
  184. package/dist/src/tabs/TabsElement.d.ts.map +1 -1
  185. package/dist/src/theme/ThemeElement.d.ts.map +1 -1
  186. package/dist/src/toc/TocItemElement.d.ts +1 -1
  187. package/dist/src/tree/TreeElement.d.ts +1 -1
  188. package/dist/src/tree/TreeItemElement.d.ts +5 -5
  189. package/dist/stepper.js +26 -17
  190. package/dist/stepper.js.map +1 -1
  191. package/dist/stepper.min.js +1 -1
  192. package/dist/stepper.min.js.map +1 -1
  193. package/dist/switch.js +9 -8
  194. package/dist/switch.js.map +1 -1
  195. package/dist/switch.min.js +1 -1
  196. package/dist/switch.min.js.map +1 -1
  197. package/dist/tabs.js +198 -24
  198. package/dist/tabs.js.map +1 -1
  199. package/dist/tabs.min.js +1 -1
  200. package/dist/tabs.min.js.map +1 -1
  201. package/dist/theme.js +34 -13
  202. package/dist/theme.js.map +1 -1
  203. package/dist/theme.min.js +23 -23
  204. package/dist/theme.min.js.map +1 -1
  205. package/dist/toc.js +1 -1
  206. package/dist/toc.js.map +1 -1
  207. package/dist/toc.min.js.map +1 -1
  208. package/dist/tree.js +6 -6
  209. package/dist/tree.js.map +1 -1
  210. package/dist/tree.min.js.map +1 -1
  211. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"split-pane.js","sources":["../../src/split-pane/SplitPaneElement.ts"],"sourcesContent":["import { css, CSSResultGroup, html, LitElement, nothing, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { property, query, state } from \"lit/decorators.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport {\r\n addCustomState,\r\n AttachInternals,\r\n customElement,\r\n deleteCustomState,\r\n DesignToken,\r\n Disabled,\r\n FormAssociated,\r\n formValue,\r\n MutationController,\r\n prefersReducedMotion,\r\n PressedController,\r\n ReconnectedCallback,\r\n registerStyleSheet,\r\n setCustomState,\r\n spaceSeparatedStringConverter,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { Breakpoint, M3eBreakpointObserver } from \"@m3e/web/core/layout\";\r\nimport { Direction, M3eDirectionality } from \"@m3e/web/core/bidi\";\r\n\r\nimport { SplitPaneOrientation } from \"./SplitPaneOrientation\";\r\n\r\n/**\r\n * A dual-view layout that separates content with a movable drag handle.\r\n * @description\r\n * The `m3e-split-pane` component delivers a Material 3-inspired split view with a\r\n * movable drag handle, enabling responsive layout composition and pane resizing.\r\n * It supports keyboard interaction, adaptive orientation, and optional detent snapping\r\n * for consistent, accessible content distribution.\r\n *\r\n * @example\r\n * The following example illustrates the basic use of the `m3e-split-pane` with start and end content.\r\n * In this example, the start pane occupies 25% of the available width.\r\n * ```html\r\n * <m3e-split-pane value=\"25\">\r\n * <m3e-card slot=\"start\"></m3e-card>\r\n * <m3e-card slot=\"end\"></m3e-card>\r\n * </m3e-split-pane>\r\n * ```\r\n *\r\n * @example\r\n * The next example demonstrates minimum and maximum constraints, where the start pane\r\n * may shrink to 25% but cannot grow beyond 50% of the available space.\r\n * ```html\r\n * <m3e-split-pane value=\"25\" min=\"25\" max=\"50\">\r\n * <m3e-card slot=\"start\"></m3e-card>\r\n * <m3e-card slot=\"end\"></m3e-card>\r\n * </m3e-split-pane>\r\n * ```\r\n *\r\n * @example\r\n * The next example demonstrates percentage‑based detents, allowing the drag handle to snap at\r\n * 0%, 25%, 50%, 75%, and 100% of the available space.\r\n * ```html\r\n * <m3e-split-pane value=\"50\" detents=\"0 25 50 75 100\">\r\n * <m3e-card slot=\"start\"></m3e-card>\r\n * <m3e-card slot=\"end\"></m3e-card>\r\n * </m3e-split-pane>\r\n * ```\r\n *\r\n * @tag m3e-split-pane\r\n *\r\n * @slot start - Renders content at the logical start side of the pane.\r\n * @slot end - Renders content at the logical end side of the pane.\r\n *\r\n * @attr detents - Detents (discrete sizes) the start pane can snap to.\r\n * @attr label - The accessible label given to the moveable drag handle.\r\n * @attr max - A fractional value, between 0 and 100, indicating the maximum size of the start pane.\r\n * @attr min - A fractional value, between 0 and 100, indicating the minimum size of the start pane.\r\n * @attr orientation - The orientation of the split.\r\n * @attr overshoot-limit - A fractional value, between 0 and 100, indicating the maximum visual overshoot allowed when dragging past the minimum or maximum size.\r\n * @attr step - A fractional value, between 0 and 100, indicating the increment by which to adjust the value when resized via keyboard.\r\n * @attr value - A fractional value, between 0 and 100, indicating the size of the start pane.\r\n * @attr wrap-detents - Whether cycling through detents will wrap.\r\n *\r\n * @fires input - Fired continuously while the user adjusts the drag handle.\r\n * @fires change - Fired when the user finishes adjusting the drag handle.\r\n *\r\n * @cssprop --m3e-split-pane-drag-handle-hover-color - Color used for the drag handle hover state.\r\n * @cssprop --m3e-split-pane-drag-handle-hover-opacity - Opacity used for the drag handle hover state.\r\n * @cssprop --m3e-split-pane-drag-handle-focus-color - Color used for the drag handle focus state.\r\n * @cssprop --m3e-split-pane-drag-handle-focus-opacity - Opacity used for the drag handle focus state.\r\n * @cssprop --m3e-split-pane-drag-handle-color - Background color of the drag handle when not pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-shape - Corner shape of the drag handle when not pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-pressed-color - Background color of the drag handle when pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-pressed-shape - Corner shape of the drag handle when pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-container-width - Width of the drag handle container.\r\n * @cssprop --m3e-split-pane-drag-handle-width - Thickness of the drag handle when not pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-height - Length of the drag handle when not pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-pressed-width - Thickness of the drag handle when pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-pressed-height - Length of the drag handle when pressed.\r\n */\r\n@customElement(\"m3e-split-pane\")\r\nexport class M3eSplitPaneElement extends FormAssociated(Disabled(ReconnectedCallback(AttachInternals(LitElement)))) {\r\n static {\r\n registerStyleSheet(css`\r\n @property --_split-pane-value {\r\n syntax: \"<length-percentage>\";\r\n inherits: true;\r\n initial-value: 50%;\r\n }\r\n `);\r\n }\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n }\r\n .base {\r\n display: flex;\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) .base {\r\n flex-direction: row;\r\n }\r\n :host(:is(:state(--vertical), :--vertical)) .base {\r\n flex-direction: column;\r\n }\r\n :host(:is(:state(--with-start), :--with-start):is(:state(--with-end), :--with-end)) .start {\r\n flex: 0 1 calc(var(--_split-pane-value) - calc(var(--m3e-split-pane-drag-handle-container-width, 1.5rem) / 2));\r\n }\r\n :host(:not(:is(:state(--with-end), :--with-end))) .start {\r\n flex: 1 1 auto;\r\n }\r\n :host(:is(:state(--with-end), :--with-end)) .end {\r\n flex: 1 1 auto;\r\n }\r\n :host(:not(:is(:state(--with-end), :--with-end))) .end {\r\n display: none;\r\n }\r\n :host(:not(:is(:state(--animating), :--animating))) .start[inert],\r\n :host(:not(:is(:state(--animating), :--animating))) .end[inert] {\r\n visibility: hidden;\r\n }\r\n .drag-handle {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n outline: none;\r\n touch-action: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n\r\n --m3e-state-layer-hover-color: var(--m3e-split-pane-drag-handle-hover-color, ${DesignToken.color.onSurface});\r\n --m3e-state-layer-hover-opacity: var(--m3e-split-pane-drag-handle-hover-opacity, 8%);\r\n --m3e-state-layer-focus-color: var(--m3e-split-pane-drag-handle-focus-color, ${DesignToken.color.onSurface});\r\n --m3e-state-layer-focus-opacity: var(--m3e-split-pane-drag-handle-focus-opacity, 10%);\r\n }\r\n :host(:is(:not(:is(:state(--with-start), :--with-start)), :not(:is(:state(--with-end), :--with-end))))\r\n .drag-handle {\r\n display: none;\r\n }\r\n :host(:not(:is(:state(--pressed), :--pressed))) .drag-handle:not([aria-disabled]) {\r\n cursor: grab;\r\n }\r\n :host(:is(:state(--pressed), :--pressed)) .drag-handle:not([aria-disabled]) {\r\n cursor: grabbing;\r\n }\r\n .handle {\r\n position: relative;\r\n transition: ${unsafeCSS(`background-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard},\r\n width ${DesignToken.motion.spring.fastEffects}, height ${DesignToken.motion.spring.fastEffects}`)};\r\n }\r\n .touch {\r\n z-index: 1;\r\n position: absolute;\r\n height: 3rem;\r\n width: 3rem;\r\n margin: auto;\r\n touch-action: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n :host(:not(:is(:state(--pressed), :--pressed))) .handle {\r\n background-color: var(--m3e-split-pane-drag-handle-color, ${DesignToken.color.outline});\r\n border-radius: var(--m3e-split-pane-drag-handle-shape, ${DesignToken.shape.corner.full});\r\n }\r\n :host(:is(:state(--pressed), :--pressed)) .handle {\r\n background-color: var(--m3e-split-pane-drag-handle-pressed-color, ${DesignToken.color.onSurface});\r\n border-radius: var(--m3e-split-pane-drag-handle-pressed-shape, ${DesignToken.shape.corner.medium});\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) .drag-handle {\r\n flex-direction: column;\r\n width: var(--m3e-split-pane-drag-handle-container-width, 1.5rem);\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical)):not(:is(:state(--pressed), :--pressed))) .handle {\r\n width: var(--m3e-split-pane-drag-handle-width, 0.25rem);\r\n height: var(--m3e-split-pane-drag-handle-height, 3rem);\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical)):is(:state(--pressed), :--pressed)) .handle {\r\n width: var(--m3e-split-pane-drag-handle-pressed-width, 0.75rem);\r\n height: var(--m3e-split-pane-drag-handle-pressed-height, 3.25rem);\r\n }\r\n :host(:is(:state(--vertical), :--vertical)) .drag-handle {\r\n height: var(--m3e-split-pane-drag-handle-container-width, 1.5rem);\r\n }\r\n :host(:is(:state(--vertical), :--vertical):not(:is(:state(--pressed), :--pressed))) .handle {\r\n width: var(--m3e-split-pane-drag-handle-height, 3rem);\r\n height: var(--m3e-split-pane-drag-handle-width, 0.25rem);\r\n }\r\n :host(:is(:state(--vertical), :--vertical):is(:state(--pressed), :--pressed)) .handle {\r\n width: var(--m3e-split-pane-drag-handle-pressed-height, 3.25rem);\r\n height: var(--m3e-split-pane-drag-handle-pressed-width, 0.75rem);\r\n }\r\n @media (prefers-reduced-motion) {\r\n .handle {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n :host(:is(:state(--pressed), :--pressed)) .handle,\r\n :host(:not(:is(:state(--pressed), :--pressed))) .handle {\r\n background-color: ButtonText;\r\n }\r\n }\r\n `;\r\n\r\n /** @private */ @state() _orientation?: Exclude<SplitPaneOrientation, \"auto\">;\r\n /** @private */ #breakpointUnobserve?: () => void;\r\n\r\n /** @private */ @query(\".base\") private _base!: HTMLElement;\r\n /** @private */ @query(\".drag-handle\") private _dragHandle!: HTMLElement;\r\n\r\n /** @private */ #dragState?: { startPos: number; startValue: number; cachedSize: number; min: number; max: number };\r\n /** @private */ #valueChanged = false;\r\n /** @private */ #snapAnimation?: Animation;\r\n\r\n /** @private */\r\n readonly #pressedController = new PressedController(this, {\r\n target: null,\r\n isPressedKey: (key) => key === \" \",\r\n minPressedDuration: 150,\r\n callback: (pressed) => setCustomState(this, \"--pressed\", pressed && !this.disabled),\r\n });\r\n\r\n /** @private */\r\n readonly #startMutationController = new MutationController(this, {\r\n target: null,\r\n config: { attributeFilter: [\"hidden\"] },\r\n callback: () => this.#updatePaneVisibility(\"start\"),\r\n });\r\n\r\n /** @private */\r\n readonly #endMutationController = new MutationController(this, {\r\n target: null,\r\n config: { attributeFilter: [\"hidden\"] },\r\n callback: () => this.#updatePaneVisibility(\"end\"),\r\n });\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the size of the start pane.\r\n * @default 50\r\n */\r\n @property({ type: Number }) value = 50;\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the minimum size of the start pane.\r\n * @default 0\r\n */\r\n @property({ type: Number }) min = 0;\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the maximum size of the start pane.\r\n * @default 100\r\n */\r\n @property({ type: Number }) max = 100;\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the maximum visual overshoot allowed when dragging past the minimum or maximum size.\r\n * @default 4\r\n */\r\n @property({ attribute: \"overshoot-limit\", type: Number }) overshootLimit = 4;\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the increment by which to adjust the value when resized via keyboard.\r\n * @default 1\r\n */\r\n @property({ type: Number }) step = 1;\r\n\r\n /**\r\n * Detents (discrete sizes) the start pane can snap to.\r\n * @default []\r\n */\r\n @property({ attribute: \"detents\", converter: spaceSeparatedStringConverter }) detents: string[] = [];\r\n\r\n /**\r\n * Whether cycling through detents will wrap.\r\n * @default false\r\n */\r\n @property({ attribute: \"wrap-detents\", type: Boolean }) wrapDetents = false;\r\n\r\n /**\r\n * The orientation of the split.\r\n * @default \"horizontal\"\r\n */\r\n @property() orientation: SplitPaneOrientation = \"horizontal\";\r\n\r\n /**\r\n * The accessible label given to the movable drag handle.\r\n * @default \"Resize panes\"\r\n */\r\n @property() label: string = \"Resize panes\";\r\n\r\n /** A function used to generates human readable text for the accessible value (`aria-valuetext`) of the drag handle. */\r\n @property() valueFormatter?: (\r\n value: number,\r\n orientation: Omit<SplitPaneOrientation, \"auto\">,\r\n dir: Direction,\r\n ) => string | undefined = (value, orientation, dir) => {\r\n value = Math.round(value);\r\n if (value >= 48 && value <= 52) {\r\n return \"Panes equally sized\";\r\n }\r\n\r\n switch (value) {\r\n case 0:\r\n return orientation === \"horizontal\"\r\n ? dir === \"ltr\"\r\n ? \"Left pane collapsed\"\r\n : \"Right pane collapsed\"\r\n : \"Top pane collapsed\";\r\n case 100:\r\n return orientation === \"horizontal\"\r\n ? dir === \"ltr\"\r\n ? \"Right pane collapsed\"\r\n : \"Left pane collapsed\"\r\n : \"Bottom pane collapsed\";\r\n default:\r\n return orientation === \"horizontal\"\r\n ? dir === \"ltr\"\r\n ? `Left pane ${value}%, right pane ${100 - value}%`\r\n : `Left pane ${100 - value}%, right pane ${value}%`\r\n : `Top pane ${value}%, bottom pane ${100 - value}%`;\r\n }\r\n };\r\n\r\n /** The current orientation of the split. */\r\n get currentOrientation(): Exclude<SplitPaneOrientation, \"auto\"> {\r\n return this._orientation ?? (this.orientation !== \"vertical\" ? \"horizontal\" : \"vertical\");\r\n }\r\n\r\n /** @inheritdoc */\r\n override get [formValue](): string | File | FormData | null {\r\n return this.value?.toString() ?? null;\r\n }\r\n\r\n /**\r\n * Moves the drag handle to the collapsed position. If detents exist, snaps to the collapsed detent.\r\n * If no detents exist, moves to the minimum allowed value.\r\n */\r\n collapse(): void {\r\n this.snapToValue(this.min);\r\n }\r\n\r\n /**\r\n * Moves the drag handle to the expanded position. If detents exist, snaps to the expanded detent.\r\n * If no detents exist, moves to the maximum allowed value.\r\n */\r\n expand(): void {\r\n this.snapToValue(this.max);\r\n }\r\n\r\n /**\r\n * Moves the drag handle to the specified position. If detents exist, snaps to the closest detent.\r\n * If no detents exist, moves to the specified value.\r\n * @param {number} value A fractional value, between 0 and 100, indicating the size of the start pane.\r\n */\r\n snapToValue(value: number): void {\r\n const detent = this.#getClosestDetent(value);\r\n value = detent > -1 ? this.#computeDetent(this.detents[detent])! : value;\r\n if (!this.#snapAnimation) {\r\n this.#snapToValue(value);\r\n } else {\r\n this.#changeValue(value);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this.#clearOrientation();\r\n this.#pressedController.unobserve(this._dragHandle);\r\n }\r\n\r\n /** @inheritdoc */\r\n override reconnectedCallback(): void {\r\n super.reconnectedCallback();\r\n\r\n this.#initialize();\r\n\r\n if (this.orientation === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\r\n super.willUpdate(changedProperties);\r\n\r\n if (changedProperties.has(\"orientation\")) {\r\n this.#breakpointUnobserve?.();\r\n\r\n if (this.orientation === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n } else {\r\n this._orientation = undefined;\r\n this.#updateOrientation();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override updated(_changedProperties: PropertyValues): void {\r\n super.updated(_changedProperties);\r\n if (_changedProperties.has(\"value\")) {\r\n this._base.style.setProperty(\"--_split-pane-value\", `${this.value}%`);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues): void {\r\n super.firstUpdated(_changedProperties);\r\n this.#initialize();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n <div class=\"start\" id=\"start\" ?inert=\"${this.value <= 0}\">\r\n <slot name=\"start\" @slotchange=\"${this.#handleStartSlotChange}\"></slot>\r\n </div>\r\n ${this.#renderDragHandle()}\r\n <div class=\"end\" ?inert=\"${this.value >= 100}\">\r\n <slot name=\"end\" @slotchange=\"${this.#handleEndSlotChange}\"></slot>\r\n </div>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderDragHandle(): unknown {\r\n return html`<div\r\n id=\"drag-handle\"\r\n class=\"drag-handle\"\r\n role=\"separator\"\r\n tabindex=\"${ifDefined(this.disabled ? undefined : 0)}\"\r\n aria-label=\"${this.label}\"\r\n aria-controls=\"start\"\r\n aria-disabled=\"${ifDefined(this.disabled ? \"true\" : undefined)}\"\r\n aria-orientation=\"${this.currentOrientation === \"horizontal\" ? \"vertical\" : \"horizontal\"}\"\r\n aria-valuemin=\"${this.min}\"\r\n aria-valuemax=\"${this.max}\"\r\n aria-valuenow=\"${this.value}\"\r\n aria-valuetext=\"${ifDefined(\r\n this.valueFormatter?.(this.value, this.currentOrientation, M3eDirectionality.current),\r\n )}\"\r\n @pointerdown=\"${this.#handlePointerDown}\"\r\n @pointerup=\"${this.#handlePointerUp}\"\r\n @pointermove=\"${this.#handlePointerMove}\"\r\n @keydown=\"${this.#handleKeyDown}\"\r\n @dblclick=\"${this.#cycleDetent}\"\r\n >\r\n ${this.disabled\r\n ? nothing\r\n : html`<div class=\"handle\">\r\n <m3e-focus-ring for=\"drag-handle\"></m3e-focus-ring>\r\n <m3e-state-layer for=\"drag-handle\"></m3e-state-layer>\r\n </div>\r\n <div class=\"touch\"></div>`}\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleStartSlotChange(e: Event): void {\r\n this.#handleSlotChange(e.target as HTMLSlotElement, this.#startMutationController, \"--with-start\");\r\n }\r\n\r\n /** @private */\r\n #handleEndSlotChange(e: Event): void {\r\n this.#handleSlotChange(e.target as HTMLSlotElement, this.#endMutationController, \"--with-end\");\r\n }\r\n\r\n /** @private */\r\n #handleSlotChange(slot: HTMLSlotElement, mutationController: MutationController, state: string): void {\r\n for (const target of mutationController.targets) {\r\n mutationController.unobserve(target);\r\n }\r\n\r\n const assignedElements = new Array<Element>();\r\n setCustomState(this, state, this.#hasVisibleElements(slot, assignedElements));\r\n\r\n for (const element of assignedElements) {\r\n if (element instanceof HTMLElement) {\r\n mutationController.observe(element);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #updatePaneVisibility(pane: \"start\" | \"end\"): void {\r\n setCustomState(\r\n this,\r\n `--with-${pane}`,\r\n this.#hasVisibleElements(this.shadowRoot?.querySelector<HTMLSlotElement>(`slot[name='${pane}']`)),\r\n );\r\n }\r\n\r\n /** @private */\r\n #hasVisibleElements(slot?: HTMLSlotElement | null, assignedElements?: Element[]): boolean {\r\n assignedElements = assignedElements ?? [];\r\n assignedElements.push(...(slot?.assignedElements({ flatten: true }) ?? []));\r\n return assignedElements.length > 0 && !assignedElements.every((x) => x.hasAttribute(\"hidden\"));\r\n }\r\n\r\n /** @private */\r\n #initialize() {\r\n this.#pressedController.observe(this._dragHandle);\r\n }\r\n\r\n /** @private */\r\n #initBreakpointMonitoring(): void {\r\n this.#breakpointUnobserve = M3eBreakpointObserver.observe([Breakpoint.XSmall], (matches) => {\r\n this._orientation = matches.get(Breakpoint.XSmall) ? \"vertical\" : \"horizontal\";\r\n this.#updateOrientation();\r\n });\r\n }\r\n\r\n /** @private */\r\n #updateOrientation(): void {\r\n setCustomState(this, \"--vertical\", this.currentOrientation === \"vertical\");\r\n }\r\n\r\n /** @private */\r\n #clearOrientation(): void {\r\n deleteCustomState(this, \"--vertical\");\r\n this._orientation = undefined;\r\n this.#breakpointUnobserve?.();\r\n this.#breakpointUnobserve = undefined;\r\n }\r\n\r\n /** @private */\r\n #handlePointerDown(e: PointerEvent): void {\r\n if (e.pointerType === \"mouse\" && e.button > 1) return;\r\n if (this.disabled) return;\r\n\r\n this._dragHandle.setPointerCapture(e.pointerId);\r\n this.#valueChanged = false;\r\n\r\n let min = this.min;\r\n if (min === 0 && this.detents.length > 0) {\r\n const detent = this.#getClosestDetent(0);\r\n if (detent > -1) {\r\n min = this.#computeDetent(this.detents[detent]) ?? this.min;\r\n }\r\n }\r\n\r\n let max = this.max;\r\n if (max === 100 && this.detents.length > 0) {\r\n const detent = this.#getClosestDetent(100);\r\n if (detent > -1) {\r\n max = this.#computeDetent(this.detents[detent]) ?? this.max;\r\n }\r\n }\r\n\r\n this.#dragState = {\r\n startPos: this.currentOrientation === \"vertical\" ? e.clientY : e.clientX,\r\n startValue: this.value,\r\n cachedSize: this.currentOrientation === \"vertical\" ? this.clientHeight : this.clientWidth,\r\n min,\r\n max,\r\n };\r\n }\r\n\r\n /** @private */\r\n #handlePointerMove(e: PointerEvent): void {\r\n if (!this._dragHandle.hasPointerCapture(e.pointerId) || !this.#dragState) return;\r\n\r\n const pos = this.currentOrientation === \"vertical\" ? e.clientY : e.clientX;\r\n\r\n let delta =\r\n this.#dragState.cachedSize > 0 ? ((pos - this.#dragState.startPos) / this.#dragState.cachedSize) * 100 : 0;\r\n if (M3eDirectionality.current === \"rtl\" && this.currentOrientation !== \"vertical\") {\r\n delta = -delta;\r\n }\r\n\r\n let value = this.#dragState.startValue + delta;\r\n if (value < this.#dragState.min) {\r\n const overshoot = this.#dragState.min - value;\r\n const compressed = (this.overshootLimit * overshoot) / (overshoot + this.overshootLimit);\r\n value = this.#dragState.min - compressed;\r\n } else if (value > this.#dragState.max) {\r\n const overshoot = value - this.#dragState.max;\r\n const compressed = (this.overshootLimit * overshoot) / (overshoot + this.overshootLimit);\r\n value = this.#dragState.max + compressed;\r\n }\r\n\r\n if (this.#changeValue(value, false, true)) {\r\n this.#valueChanged = true;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handlePointerUp(e: PointerEvent): void {\r\n if (e.pointerType === \"mouse\" && e.button > 1) return;\r\n if (this._dragHandle.hasPointerCapture(e.pointerId)) {\r\n this._dragHandle.releasePointerCapture(e.pointerId);\r\n this.#dragState = undefined;\r\n\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const value = this.#computeDetent(this.detents[detent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value, false);\r\n }\r\n } else if (this.value < this.min) {\r\n this.#snapToValue(this.min, false);\r\n } else if (this.value > this.max) {\r\n this.#snapToValue(this.max, false);\r\n }\r\n\r\n if (this.#valueChanged) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true, composed: true }));\r\n this.#valueChanged = false;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n const ltr = M3eDirectionality.current === \"ltr\" || this.currentOrientation === \"vertical\";\r\n switch (e.key) {\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n case \"Left\":\r\n case \"ArrowLeft\": {\r\n e.preventDefault();\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const nextDetent = ltr ? this.#getNextLowerDetent(detent) : this.#getNextHigherDetent(detent);\r\n if (nextDetent !== detent && !this.#snapAnimation) {\r\n const value = this.#computeDetent(this.detents[nextDetent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n } else if (this.step > 1) {\r\n if (!this.#snapAnimation) {\r\n this.#snapToValue(this.value + (ltr ? -this.step : this.step));\r\n }\r\n } else {\r\n this.#changeValue(this.value + (ltr ? -this.step : this.step));\r\n }\r\n break;\r\n }\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n case \"Right\":\r\n case \"ArrowRight\": {\r\n e.preventDefault();\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const nextDetent = ltr ? this.#getNextHigherDetent(detent) : this.#getNextLowerDetent(detent);\r\n if (nextDetent !== detent && !this.#snapAnimation) {\r\n const value = this.#computeDetent(this.detents[nextDetent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n } else if (this.step > 1) {\r\n if (!this.#snapAnimation) {\r\n this.#snapToValue(this.value + (ltr ? this.step : -this.step));\r\n }\r\n } else {\r\n this.#changeValue(this.value + (ltr ? this.step : -this.step));\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"Home\": {\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n const next = this.#getClosestDetent(this.min);\r\n if (next > -1) {\r\n this.#snapToValue(this.#computeDetent(this.detents[next])!);\r\n } else {\r\n this.#snapToValue(this.min);\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"End\": {\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n const next = this.#getClosestDetent(this.max);\r\n if (next > -1) {\r\n this.#snapToValue(this.#computeDetent(this.detents[next])!);\r\n } else {\r\n this.#snapToValue(this.max);\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"PageUp\": {\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const nextDetent = this.#getNextLowerDetent(detent);\r\n if (nextDetent !== detent) {\r\n const value = this.#computeDetent(this.detents[nextDetent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n } else {\r\n this.#snapToValue(this.value - Math.max(10, this.step));\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"PageDown\": {\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const nextDetent = this.#getNextHigherDetent(detent);\r\n if (nextDetent !== detent) {\r\n const value = this.#computeDetent(this.detents[nextDetent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n } else {\r\n this.#snapToValue(this.value + Math.max(10, this.step));\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"Enter\":\r\n if (!this.#snapAnimation) {\r\n this.#cycleDetent();\r\n }\r\n\r\n break;\r\n\r\n case \" \":\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n this.#cycleDetent();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #changeValue(value: number, emitChange = true, allowOvershoot = false): boolean {\r\n this.#clearSnapAnimation();\r\n\r\n if (!allowOvershoot) {\r\n value = Math.max(this.min, Math.min(this.max, value));\r\n }\r\n\r\n if (value != this.value) {\r\n const prev = this.value;\r\n this.value = value;\r\n\r\n if (this.dispatchEvent(new Event(\"input\", { bubbles: true, composed: true, cancelable: true }))) {\r\n this._base.style.setProperty(\"--_split-pane-value\", `${this.value}%`);\r\n if (emitChange) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true, composed: true }));\r\n }\r\n return true;\r\n } else {\r\n this.value = prev;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /** @private */\r\n #getClosestDetent(value: number): number {\r\n let closestDetent = -1;\r\n let closestDistance = Infinity;\r\n\r\n for (let i = 0; i < this.detents.length; i++) {\r\n const detent = this.#computeDetent(this.detents[i]);\r\n if (detent === undefined) continue;\r\n\r\n const distance = Math.abs(value - detent);\r\n if (distance < closestDistance) {\r\n closestDistance = distance;\r\n closestDetent = i;\r\n }\r\n }\r\n return closestDetent;\r\n }\r\n\r\n /** @private */\r\n #getNextHigherDetent(detentIndex: number): number {\r\n const currentValue = this.#computeDetent(this.detents[detentIndex]);\r\n if (currentValue === undefined) return detentIndex;\r\n\r\n let value = Infinity;\r\n let nextDetent = detentIndex;\r\n for (let i = 0; i < this.detents.length; i++) {\r\n if (i === detentIndex) continue;\r\n const detent = this.#computeDetent(this.detents[i]);\r\n if (detent === undefined) continue;\r\n if (detent > currentValue && detent < value) {\r\n value = detent;\r\n nextDetent = i;\r\n }\r\n }\r\n return nextDetent;\r\n }\r\n\r\n /** @private */\r\n #getNextLowerDetent(detentIndex: number): number {\r\n const currentValue = this.#computeDetent(this.detents[detentIndex]);\r\n if (currentValue === undefined) return detentIndex;\r\n\r\n let value = -Infinity;\r\n let nextDetent = detentIndex;\r\n for (let i = 0; i < this.detents.length; i++) {\r\n if (i === detentIndex) continue;\r\n const detent = this.#computeDetent(this.detents[i]);\r\n if (detent === undefined) continue;\r\n if (detent < currentValue && detent > value) {\r\n value = detent;\r\n nextDetent = i;\r\n }\r\n }\r\n return nextDetent;\r\n }\r\n\r\n /** @private */\r\n #computeDetent(detent: string): number | undefined {\r\n const value = detent.endsWith(\"px\") ? this.clientWidth / parseFloat(detent) : parseFloat(detent);\r\n return !isNaN(value) ? value : undefined;\r\n }\r\n\r\n /** @private */\r\n #clearSnapAnimation(): void {\r\n this.#snapAnimation?.cancel();\r\n this.#snapAnimation = undefined;\r\n }\r\n\r\n /** @private */\r\n #snapToValue(value: number, emitChange = true): void {\r\n this.#clearSnapAnimation();\r\n\r\n value = Math.max(this.min, Math.min(this.max, value));\r\n if (value === this.value) return;\r\n\r\n if (!prefersReducedMotion()) {\r\n addCustomState(this, \"--animating\");\r\n\r\n this.#snapAnimation = this._base.animate(\r\n [{ \"--_split-pane-value\": `${this.value}%` }, { \"--_split-pane-value\": `${value}%` }],\r\n {\r\n duration: 250,\r\n easing: \"cubic-bezier(0.2, 0.0, 0, 1.0)\",\r\n },\r\n );\r\n this.#snapAnimation.onfinish = () => {\r\n this.#changeValue(value, emitChange);\r\n this.#snapAnimation = undefined;\r\n deleteCustomState(this, \"--animating\");\r\n };\r\n } else {\r\n this.#changeValue(value, emitChange);\r\n }\r\n }\r\n\r\n /** @private */\r\n #cycleDetent(): void {\r\n if (this.detents.length === 0) return;\r\n\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent === -1) return;\r\n\r\n let next = this.#getNextHigherDetent(detent);\r\n if (next === detent && this.wrapDetents) {\r\n next = this.#getClosestDetent(0);\r\n if (next === -1) return;\r\n }\r\n\r\n const value = this.#computeDetent(this.detents[next]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-split-pane\": M3eSplitPaneElement;\r\n }\r\n}\r\n"],"names":["M3eSplitPaneElement","FormAssociated","Disabled","ReconnectedCallback","AttachInternals","LitElement","constructor","_M3eSplitPaneElement_breakpointUnobserve","set","_M3eSplitPaneElement_dragState","_M3eSplitPaneElement_valueChanged","_M3eSplitPaneElement_snapAnimation","_M3eSplitPaneElement_pressedController","PressedController","target","isPressedKey","key","minPressedDuration","callback","pressed","setCustomState","disabled","_M3eSplitPaneElement_startMutationController","MutationController","config","attributeFilter","__classPrivateFieldGet","_M3eSplitPaneElement_instances","_M3eSplitPaneElement_updatePaneVisibility","call","_M3eSplitPaneElement_endMutationController","value","min","max","overshootLimit","step","detents","wrapDetents","orientation","label","valueFormatter","dir","Math","round","currentOrientation","_orientation","WeakMap","WeakSet","formValue","toString","collapse","snapToValue","expand","detent","_M3eSplitPaneElement_getClosestDetent","_M3eSplitPaneElement_computeDetent","_M3eSplitPaneElement_snapToValue","_M3eSplitPaneElement_changeValue","disconnectedCallback","_M3eSplitPaneElement_clearOrientation","unobserve","_dragHandle","reconnectedCallback","_M3eSplitPaneElement_initialize","_M3eSplitPaneElement_initBreakpointMonitoring","willUpdate","changedProperties","has","undefined","_M3eSplitPaneElement_updateOrientation","updated","_changedProperties","_base","style","setProperty","firstUpdated","render","html","_M3eSplitPaneElement_handleStartSlotChange","_M3eSplitPaneElement_renderDragHandle","_M3eSplitPaneElement_handleEndSlotChange","ifDefined","M3eDirectionality","current","_M3eSplitPaneElement_handlePointerDown","_M3eSplitPaneElement_handlePointerUp","_M3eSplitPaneElement_handlePointerMove","_M3eSplitPaneElement_handleKeyDown","_M3eSplitPaneElement_cycleDetent","nothing","e","_M3eSplitPaneElement_handleSlotChange","slot","mutationController","state","targets","assignedElements","Array","_M3eSplitPaneElement_hasVisibleElements","element","HTMLElement","observe","pane","shadowRoot","querySelector","push","flatten","length","every","x","hasAttribute","__classPrivateFieldSet","M3eBreakpointObserver","Breakpoint","XSmall","matches","get","deleteCustomState","pointerType","button","setPointerCapture","pointerId","startPos","clientY","clientX","startValue","cachedSize","clientHeight","clientWidth","hasPointerCapture","pos","delta","overshoot","compressed","releasePointerCapture","dispatchEvent","Event","bubbles","composed","ltr","preventDefault","nextDetent","_M3eSplitPaneElement_getNextLowerDetent","_M3eSplitPaneElement_getNextHigherDetent","next","emitChange","allowOvershoot","_M3eSplitPaneElement_clearSnapAnimation","prev","cancelable","closestDetent","closestDistance","Infinity","i","distance","abs","detentIndex","currentValue","endsWith","parseFloat","isNaN","cancel","prefersReducedMotion","addCustomState","animate","duration","easing","onfinish","registerStyleSheet","css","styles","DesignToken","color","onSurface","unsafeCSS","motion","short4","standard","spring","fastEffects","outline","shape","corner","full","medium","__decorate","prototype","query","property","type","Number","attribute","converter","spaceSeparatedStringConverter","Boolean","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"split-pane.js","sources":["../../src/split-pane/SplitPaneElement.ts"],"sourcesContent":["import { css, CSSResultGroup, html, LitElement, nothing, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { property, query, state } from \"lit/decorators.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport {\r\n addCustomState,\r\n AttachInternals,\r\n customElement,\r\n deleteCustomState,\r\n DesignToken,\r\n Disabled,\r\n FormAssociated,\r\n formValue,\r\n MutationController,\r\n prefersReducedMotion,\r\n PressedController,\r\n ReconnectedCallback,\r\n registerStyleSheet,\r\n setCustomState,\r\n spaceSeparatedStringConverter,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { Breakpoint, M3eBreakpointObserver } from \"@m3e/web/core/layout\";\r\nimport { Direction, M3eDirectionality } from \"@m3e/web/core/bidi\";\r\n\r\nimport { SplitPaneOrientation } from \"./SplitPaneOrientation\";\r\n\r\n/**\r\n * A dual-view layout that separates content with a movable drag handle.\r\n * @description\r\n * The `m3e-split-pane` component delivers a Material 3-inspired split view with a\r\n * movable drag handle, enabling responsive layout composition and pane resizing.\r\n * It supports keyboard interaction, adaptive orientation, and optional detent snapping\r\n * for consistent, accessible content distribution.\r\n *\r\n * @example\r\n * The following example illustrates the basic use of the `m3e-split-pane` with start and end content.\r\n * In this example, the start pane occupies 25% of the available width.\r\n * ```html\r\n * <m3e-split-pane value=\"25\">\r\n * <m3e-card slot=\"start\"></m3e-card>\r\n * <m3e-card slot=\"end\"></m3e-card>\r\n * </m3e-split-pane>\r\n * ```\r\n *\r\n * @example\r\n * The next example demonstrates minimum and maximum constraints, where the start pane\r\n * may shrink to 25% but cannot grow beyond 50% of the available space.\r\n * ```html\r\n * <m3e-split-pane value=\"25\" min=\"25\" max=\"50\">\r\n * <m3e-card slot=\"start\"></m3e-card>\r\n * <m3e-card slot=\"end\"></m3e-card>\r\n * </m3e-split-pane>\r\n * ```\r\n *\r\n * @example\r\n * The next example demonstrates percentage‑based detents, allowing the drag handle to snap at\r\n * 0%, 25%, 50%, 75%, and 100% of the available space.\r\n * ```html\r\n * <m3e-split-pane value=\"50\" detents=\"0 25 50 75 100\">\r\n * <m3e-card slot=\"start\"></m3e-card>\r\n * <m3e-card slot=\"end\"></m3e-card>\r\n * </m3e-split-pane>\r\n * ```\r\n *\r\n * @tag m3e-split-pane\r\n *\r\n * @slot start - Renders content at the logical start side of the pane.\r\n * @slot end - Renders content at the logical end side of the pane.\r\n *\r\n * @attr detents - Detents (discrete sizes) the start pane can snap to.\r\n * @attr label - The accessible label given to the moveable drag handle.\r\n * @attr max - A fractional value, between 0 and 100, indicating the maximum size of the start pane.\r\n * @attr min - A fractional value, between 0 and 100, indicating the minimum size of the start pane.\r\n * @attr orientation - The orientation of the split.\r\n * @attr overshoot-limit - A fractional value, between 0 and 100, indicating the maximum visual overshoot allowed when dragging past the minimum or maximum size.\r\n * @attr step - A fractional value, between 0 and 100, indicating the increment by which to adjust the value when resized via keyboard.\r\n * @attr value - A fractional value, between 0 and 100, indicating the size of the start pane.\r\n * @attr wrap-detents - Whether cycling through detents will wrap.\r\n *\r\n * @fires beforeinput - Dispatched continuously before the user adjusts the drag handle.\r\n * @fires input - Dispatched continuously while the user adjusts the drag handle.\r\n * @fires change - Dispatched when the user finishes adjusting the drag handle.\r\n *\r\n * @cssprop --m3e-split-pane-drag-handle-hover-color - Color used for the drag handle hover state.\r\n * @cssprop --m3e-split-pane-drag-handle-hover-opacity - Opacity used for the drag handle hover state.\r\n * @cssprop --m3e-split-pane-drag-handle-focus-color - Color used for the drag handle focus state.\r\n * @cssprop --m3e-split-pane-drag-handle-focus-opacity - Opacity used for the drag handle focus state.\r\n * @cssprop --m3e-split-pane-drag-handle-color - Background color of the drag handle when not pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-shape - Corner shape of the drag handle when not pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-pressed-color - Background color of the drag handle when pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-pressed-shape - Corner shape of the drag handle when pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-container-width - Width of the drag handle container.\r\n * @cssprop --m3e-split-pane-drag-handle-width - Thickness of the drag handle when not pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-height - Length of the drag handle when not pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-pressed-width - Thickness of the drag handle when pressed.\r\n * @cssprop --m3e-split-pane-drag-handle-pressed-height - Length of the drag handle when pressed.\r\n */\r\n@customElement(\"m3e-split-pane\")\r\nexport class M3eSplitPaneElement extends FormAssociated(Disabled(ReconnectedCallback(AttachInternals(LitElement)))) {\r\n static {\r\n registerStyleSheet(css`\r\n @property --_split-pane-value {\r\n syntax: \"<length-percentage>\";\r\n inherits: true;\r\n initial-value: 50%;\r\n }\r\n `);\r\n }\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n }\r\n .base {\r\n display: flex;\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) .base {\r\n flex-direction: row;\r\n }\r\n :host(:is(:state(--vertical), :--vertical)) .base {\r\n flex-direction: column;\r\n }\r\n :host(:is(:state(--with-start), :--with-start):is(:state(--with-end), :--with-end)) .start {\r\n flex: 0 1 calc(var(--_split-pane-value) - calc(var(--m3e-split-pane-drag-handle-container-width, 1.5rem) / 2));\r\n }\r\n :host(:not(:is(:state(--with-end), :--with-end))) .start {\r\n flex: 1 1 auto;\r\n }\r\n :host(:is(:state(--with-end), :--with-end)) .end {\r\n flex: 1 1 auto;\r\n }\r\n :host(:not(:is(:state(--with-end), :--with-end))) .end {\r\n display: none;\r\n }\r\n :host(:not(:is(:state(--animating), :--animating))) .start[inert],\r\n :host(:not(:is(:state(--animating), :--animating))) .end[inert] {\r\n visibility: hidden;\r\n }\r\n .drag-handle {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n outline: none;\r\n touch-action: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n\r\n --m3e-state-layer-hover-color: var(--m3e-split-pane-drag-handle-hover-color, ${DesignToken.color.onSurface});\r\n --m3e-state-layer-hover-opacity: var(--m3e-split-pane-drag-handle-hover-opacity, 8%);\r\n --m3e-state-layer-focus-color: var(--m3e-split-pane-drag-handle-focus-color, ${DesignToken.color.onSurface});\r\n --m3e-state-layer-focus-opacity: var(--m3e-split-pane-drag-handle-focus-opacity, 10%);\r\n }\r\n :host(:is(:not(:is(:state(--with-start), :--with-start)), :not(:is(:state(--with-end), :--with-end))))\r\n .drag-handle {\r\n display: none;\r\n }\r\n :host(:not(:is(:state(--pressed), :--pressed))) .drag-handle:not([aria-disabled]) {\r\n cursor: grab;\r\n }\r\n :host(:is(:state(--pressed), :--pressed)) .drag-handle:not([aria-disabled]) {\r\n cursor: grabbing;\r\n }\r\n .handle {\r\n position: relative;\r\n transition: ${unsafeCSS(`background-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard},\r\n width ${DesignToken.motion.spring.fastEffects}, height ${DesignToken.motion.spring.fastEffects}`)};\r\n }\r\n .touch {\r\n z-index: 1;\r\n position: absolute;\r\n height: 3rem;\r\n width: 3rem;\r\n margin: auto;\r\n touch-action: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n :host(:not(:is(:state(--pressed), :--pressed))) .handle {\r\n background-color: var(--m3e-split-pane-drag-handle-color, ${DesignToken.color.outline});\r\n border-radius: var(--m3e-split-pane-drag-handle-shape, ${DesignToken.shape.corner.full});\r\n }\r\n :host(:is(:state(--pressed), :--pressed)) .handle {\r\n background-color: var(--m3e-split-pane-drag-handle-pressed-color, ${DesignToken.color.onSurface});\r\n border-radius: var(--m3e-split-pane-drag-handle-pressed-shape, ${DesignToken.shape.corner.medium});\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) .drag-handle {\r\n flex-direction: column;\r\n width: var(--m3e-split-pane-drag-handle-container-width, 1.5rem);\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical)):not(:is(:state(--pressed), :--pressed))) .handle {\r\n width: var(--m3e-split-pane-drag-handle-width, 0.25rem);\r\n height: var(--m3e-split-pane-drag-handle-height, 3rem);\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical)):is(:state(--pressed), :--pressed)) .handle {\r\n width: var(--m3e-split-pane-drag-handle-pressed-width, 0.75rem);\r\n height: var(--m3e-split-pane-drag-handle-pressed-height, 3.25rem);\r\n }\r\n :host(:is(:state(--vertical), :--vertical)) .drag-handle {\r\n height: var(--m3e-split-pane-drag-handle-container-width, 1.5rem);\r\n }\r\n :host(:is(:state(--vertical), :--vertical):not(:is(:state(--pressed), :--pressed))) .handle {\r\n width: var(--m3e-split-pane-drag-handle-height, 3rem);\r\n height: var(--m3e-split-pane-drag-handle-width, 0.25rem);\r\n }\r\n :host(:is(:state(--vertical), :--vertical):is(:state(--pressed), :--pressed)) .handle {\r\n width: var(--m3e-split-pane-drag-handle-pressed-height, 3.25rem);\r\n height: var(--m3e-split-pane-drag-handle-pressed-width, 0.75rem);\r\n }\r\n @media (prefers-reduced-motion) {\r\n .handle {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n :host(:is(:state(--pressed), :--pressed)) .handle,\r\n :host(:not(:is(:state(--pressed), :--pressed))) .handle {\r\n background-color: ButtonText;\r\n }\r\n }\r\n `;\r\n\r\n /** @private */ @state() _orientation?: Exclude<SplitPaneOrientation, \"auto\">;\r\n /** @private */ #breakpointUnobserve?: () => void;\r\n\r\n /** @private */ @query(\".base\") private _base!: HTMLElement;\r\n /** @private */ @query(\".drag-handle\") private _dragHandle!: HTMLElement;\r\n\r\n /** @private */ #dragState?: { startPos: number; startValue: number; cachedSize: number; min: number; max: number };\r\n /** @private */ #valueChanged = false;\r\n /** @private */ #snapAnimation?: Animation;\r\n\r\n /** @private */\r\n readonly #pressedController = new PressedController(this, {\r\n target: null,\r\n isPressedKey: (key) => key === \" \",\r\n minPressedDuration: 150,\r\n callback: (pressed) => setCustomState(this, \"--pressed\", pressed && !this.disabled),\r\n });\r\n\r\n /** @private */\r\n readonly #startMutationController = new MutationController(this, {\r\n target: null,\r\n config: { attributeFilter: [\"hidden\"] },\r\n callback: () => this.#updatePaneVisibility(\"start\"),\r\n });\r\n\r\n /** @private */\r\n readonly #endMutationController = new MutationController(this, {\r\n target: null,\r\n config: { attributeFilter: [\"hidden\"] },\r\n callback: () => this.#updatePaneVisibility(\"end\"),\r\n });\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the size of the start pane.\r\n * @default 50\r\n */\r\n @property({ type: Number }) value = 50;\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the minimum size of the start pane.\r\n * @default 0\r\n */\r\n @property({ type: Number }) min = 0;\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the maximum size of the start pane.\r\n * @default 100\r\n */\r\n @property({ type: Number }) max = 100;\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the maximum visual overshoot allowed when dragging past the minimum or maximum size.\r\n * @default 4\r\n */\r\n @property({ attribute: \"overshoot-limit\", type: Number }) overshootLimit = 4;\r\n\r\n /**\r\n * A fractional value, between 0 and 100, indicating the increment by which to adjust the value when resized via keyboard.\r\n * @default 1\r\n */\r\n @property({ type: Number }) step = 1;\r\n\r\n /**\r\n * Detents (discrete sizes) the start pane can snap to.\r\n * @default []\r\n */\r\n @property({ attribute: \"detents\", converter: spaceSeparatedStringConverter }) detents: string[] = [];\r\n\r\n /**\r\n * Whether cycling through detents will wrap.\r\n * @default false\r\n */\r\n @property({ attribute: \"wrap-detents\", type: Boolean }) wrapDetents = false;\r\n\r\n /**\r\n * The orientation of the split.\r\n * @default \"horizontal\"\r\n */\r\n @property() orientation: SplitPaneOrientation = \"horizontal\";\r\n\r\n /**\r\n * The accessible label given to the movable drag handle.\r\n * @default \"Resize panes\"\r\n */\r\n @property() label: string = \"Resize panes\";\r\n\r\n /** A function used to generates human readable text for the accessible value (`aria-valuetext`) of the drag handle. */\r\n @property() valueFormatter?: (\r\n value: number,\r\n orientation: Omit<SplitPaneOrientation, \"auto\">,\r\n dir: Direction,\r\n ) => string | undefined = (value, orientation, dir) => {\r\n value = Math.round(value);\r\n if (value >= 48 && value <= 52) {\r\n return \"Panes equally sized\";\r\n }\r\n\r\n switch (value) {\r\n case 0:\r\n return orientation === \"horizontal\"\r\n ? dir === \"ltr\"\r\n ? \"Left pane collapsed\"\r\n : \"Right pane collapsed\"\r\n : \"Top pane collapsed\";\r\n case 100:\r\n return orientation === \"horizontal\"\r\n ? dir === \"ltr\"\r\n ? \"Right pane collapsed\"\r\n : \"Left pane collapsed\"\r\n : \"Bottom pane collapsed\";\r\n default:\r\n return orientation === \"horizontal\"\r\n ? dir === \"ltr\"\r\n ? `Left pane ${value}%, right pane ${100 - value}%`\r\n : `Left pane ${100 - value}%, right pane ${value}%`\r\n : `Top pane ${value}%, bottom pane ${100 - value}%`;\r\n }\r\n };\r\n\r\n /** The current orientation of the split. */\r\n get currentOrientation(): Exclude<SplitPaneOrientation, \"auto\"> {\r\n return this._orientation ?? (this.orientation !== \"vertical\" ? \"horizontal\" : \"vertical\");\r\n }\r\n\r\n /** @inheritdoc */\r\n override get [formValue](): string | File | FormData | null {\r\n return this.value?.toString() ?? null;\r\n }\r\n\r\n /**\r\n * Moves the drag handle to the collapsed position. If detents exist, snaps to the collapsed detent.\r\n * If no detents exist, moves to the minimum allowed value.\r\n */\r\n collapse(): void {\r\n this.snapToValue(this.min);\r\n }\r\n\r\n /**\r\n * Moves the drag handle to the expanded position. If detents exist, snaps to the expanded detent.\r\n * If no detents exist, moves to the maximum allowed value.\r\n */\r\n expand(): void {\r\n this.snapToValue(this.max);\r\n }\r\n\r\n /**\r\n * Moves the drag handle to the specified position. If detents exist, snaps to the closest detent.\r\n * If no detents exist, moves to the specified value.\r\n * @param {number} value A fractional value, between 0 and 100, indicating the size of the start pane.\r\n */\r\n snapToValue(value: number): void {\r\n const detent = this.#getClosestDetent(value);\r\n value = detent > -1 ? this.#computeDetent(this.detents[detent])! : value;\r\n if (!this.#snapAnimation) {\r\n this.#snapToValue(value);\r\n } else {\r\n this.#changeValue(value);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this.#clearOrientation();\r\n this.#pressedController.unobserve(this._dragHandle);\r\n }\r\n\r\n /** @inheritdoc */\r\n override reconnectedCallback(): void {\r\n super.reconnectedCallback();\r\n\r\n this.#initialize();\r\n\r\n if (this.orientation === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\r\n super.willUpdate(changedProperties);\r\n\r\n if (changedProperties.has(\"orientation\")) {\r\n this.#breakpointUnobserve?.();\r\n\r\n if (this.orientation === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n } else {\r\n this._orientation = undefined;\r\n this.#updateOrientation();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override updated(_changedProperties: PropertyValues): void {\r\n super.updated(_changedProperties);\r\n if (_changedProperties.has(\"value\")) {\r\n this._base.style.setProperty(\"--_split-pane-value\", `${this.value}%`);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues): void {\r\n super.firstUpdated(_changedProperties);\r\n this.#initialize();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n <div class=\"start\" id=\"start\" ?inert=\"${this.value <= 0}\">\r\n <slot name=\"start\" @slotchange=\"${this.#handleStartSlotChange}\"></slot>\r\n </div>\r\n ${this.#renderDragHandle()}\r\n <div class=\"end\" ?inert=\"${this.value >= 100}\">\r\n <slot name=\"end\" @slotchange=\"${this.#handleEndSlotChange}\"></slot>\r\n </div>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderDragHandle(): unknown {\r\n return html`<div\r\n id=\"drag-handle\"\r\n class=\"drag-handle\"\r\n role=\"separator\"\r\n tabindex=\"${ifDefined(this.disabled ? undefined : 0)}\"\r\n aria-label=\"${this.label}\"\r\n aria-controls=\"start\"\r\n aria-disabled=\"${ifDefined(this.disabled ? \"true\" : undefined)}\"\r\n aria-orientation=\"${this.currentOrientation === \"horizontal\" ? \"vertical\" : \"horizontal\"}\"\r\n aria-valuemin=\"${this.min}\"\r\n aria-valuemax=\"${this.max}\"\r\n aria-valuenow=\"${this.value}\"\r\n aria-valuetext=\"${ifDefined(\r\n this.valueFormatter?.(this.value, this.currentOrientation, M3eDirectionality.current),\r\n )}\"\r\n @pointerdown=\"${this.#handlePointerDown}\"\r\n @pointerup=\"${this.#handlePointerUp}\"\r\n @pointermove=\"${this.#handlePointerMove}\"\r\n @keydown=\"${this.#handleKeyDown}\"\r\n @dblclick=\"${this.#cycleDetent}\"\r\n >\r\n ${this.disabled\r\n ? nothing\r\n : html`<div class=\"handle\">\r\n <m3e-focus-ring for=\"drag-handle\"></m3e-focus-ring>\r\n <m3e-state-layer for=\"drag-handle\"></m3e-state-layer>\r\n </div>\r\n <div class=\"touch\"></div>`}\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleStartSlotChange(e: Event): void {\r\n this.#handleSlotChange(e.target as HTMLSlotElement, this.#startMutationController, \"--with-start\");\r\n }\r\n\r\n /** @private */\r\n #handleEndSlotChange(e: Event): void {\r\n this.#handleSlotChange(e.target as HTMLSlotElement, this.#endMutationController, \"--with-end\");\r\n }\r\n\r\n /** @private */\r\n #handleSlotChange(slot: HTMLSlotElement, mutationController: MutationController, state: string): void {\r\n for (const target of mutationController.targets) {\r\n mutationController.unobserve(target);\r\n }\r\n\r\n const assignedElements = new Array<Element>();\r\n setCustomState(this, state, this.#hasVisibleElements(slot, assignedElements));\r\n\r\n for (const element of assignedElements) {\r\n if (element instanceof HTMLElement) {\r\n mutationController.observe(element);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #updatePaneVisibility(pane: \"start\" | \"end\"): void {\r\n setCustomState(\r\n this,\r\n `--with-${pane}`,\r\n this.#hasVisibleElements(this.shadowRoot?.querySelector<HTMLSlotElement>(`slot[name='${pane}']`)),\r\n );\r\n }\r\n\r\n /** @private */\r\n #hasVisibleElements(slot?: HTMLSlotElement | null, assignedElements?: Element[]): boolean {\r\n assignedElements = assignedElements ?? [];\r\n assignedElements.push(...(slot?.assignedElements({ flatten: true }) ?? []));\r\n return assignedElements.length > 0 && !assignedElements.every((x) => x.hasAttribute(\"hidden\"));\r\n }\r\n\r\n /** @private */\r\n #initialize() {\r\n this.#pressedController.observe(this._dragHandle);\r\n }\r\n\r\n /** @private */\r\n #initBreakpointMonitoring(): void {\r\n this.#breakpointUnobserve = M3eBreakpointObserver.observe([Breakpoint.XSmall], (matches) => {\r\n this._orientation = matches.get(Breakpoint.XSmall) ? \"vertical\" : \"horizontal\";\r\n this.#updateOrientation();\r\n });\r\n }\r\n\r\n /** @private */\r\n #updateOrientation(): void {\r\n setCustomState(this, \"--vertical\", this.currentOrientation === \"vertical\");\r\n }\r\n\r\n /** @private */\r\n #clearOrientation(): void {\r\n deleteCustomState(this, \"--vertical\");\r\n this._orientation = undefined;\r\n this.#breakpointUnobserve?.();\r\n this.#breakpointUnobserve = undefined;\r\n }\r\n\r\n /** @private */\r\n #handlePointerDown(e: PointerEvent): void {\r\n if (e.pointerType === \"mouse\" && e.button > 1) return;\r\n if (this.disabled) return;\r\n\r\n this._dragHandle.setPointerCapture(e.pointerId);\r\n this.#valueChanged = false;\r\n\r\n let min = this.min;\r\n if (min === 0 && this.detents.length > 0) {\r\n const detent = this.#getClosestDetent(0);\r\n if (detent > -1) {\r\n min = this.#computeDetent(this.detents[detent]) ?? this.min;\r\n }\r\n }\r\n\r\n let max = this.max;\r\n if (max === 100 && this.detents.length > 0) {\r\n const detent = this.#getClosestDetent(100);\r\n if (detent > -1) {\r\n max = this.#computeDetent(this.detents[detent]) ?? this.max;\r\n }\r\n }\r\n\r\n this.#dragState = {\r\n startPos: this.currentOrientation === \"vertical\" ? e.clientY : e.clientX,\r\n startValue: this.value,\r\n cachedSize: this.currentOrientation === \"vertical\" ? this.clientHeight : this.clientWidth,\r\n min,\r\n max,\r\n };\r\n }\r\n\r\n /** @private */\r\n #handlePointerMove(e: PointerEvent): void {\r\n if (!this._dragHandle.hasPointerCapture(e.pointerId) || !this.#dragState) return;\r\n\r\n const pos = this.currentOrientation === \"vertical\" ? e.clientY : e.clientX;\r\n\r\n let delta =\r\n this.#dragState.cachedSize > 0 ? ((pos - this.#dragState.startPos) / this.#dragState.cachedSize) * 100 : 0;\r\n if (M3eDirectionality.current === \"rtl\" && this.currentOrientation !== \"vertical\") {\r\n delta = -delta;\r\n }\r\n\r\n let value = this.#dragState.startValue + delta;\r\n if (value < this.#dragState.min) {\r\n const overshoot = this.#dragState.min - value;\r\n const compressed = (this.overshootLimit * overshoot) / (overshoot + this.overshootLimit);\r\n value = this.#dragState.min - compressed;\r\n } else if (value > this.#dragState.max) {\r\n const overshoot = value - this.#dragState.max;\r\n const compressed = (this.overshootLimit * overshoot) / (overshoot + this.overshootLimit);\r\n value = this.#dragState.max + compressed;\r\n }\r\n\r\n if (this.#changeValue(value, false, true)) {\r\n this.#valueChanged = true;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handlePointerUp(e: PointerEvent): void {\r\n if (e.pointerType === \"mouse\" && e.button > 1) return;\r\n if (this._dragHandle.hasPointerCapture(e.pointerId)) {\r\n this._dragHandle.releasePointerCapture(e.pointerId);\r\n this.#dragState = undefined;\r\n\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const value = this.#computeDetent(this.detents[detent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value, false);\r\n }\r\n } else if (this.value < this.min) {\r\n this.#snapToValue(this.min, false);\r\n } else if (this.value > this.max) {\r\n this.#snapToValue(this.max, false);\r\n }\r\n\r\n if (this.#valueChanged) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n this.#valueChanged = false;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n const ltr = M3eDirectionality.current === \"ltr\" || this.currentOrientation === \"vertical\";\r\n switch (e.key) {\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n case \"Left\":\r\n case \"ArrowLeft\": {\r\n e.preventDefault();\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const nextDetent = ltr ? this.#getNextLowerDetent(detent) : this.#getNextHigherDetent(detent);\r\n if (nextDetent !== detent && !this.#snapAnimation) {\r\n const value = this.#computeDetent(this.detents[nextDetent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n } else if (this.step > 1) {\r\n if (!this.#snapAnimation) {\r\n this.#snapToValue(this.value + (ltr ? -this.step : this.step));\r\n }\r\n } else {\r\n this.#changeValue(this.value + (ltr ? -this.step : this.step));\r\n }\r\n break;\r\n }\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n case \"Right\":\r\n case \"ArrowRight\": {\r\n e.preventDefault();\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const nextDetent = ltr ? this.#getNextHigherDetent(detent) : this.#getNextLowerDetent(detent);\r\n if (nextDetent !== detent && !this.#snapAnimation) {\r\n const value = this.#computeDetent(this.detents[nextDetent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n } else if (this.step > 1) {\r\n if (!this.#snapAnimation) {\r\n this.#snapToValue(this.value + (ltr ? this.step : -this.step));\r\n }\r\n } else {\r\n this.#changeValue(this.value + (ltr ? this.step : -this.step));\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"Home\": {\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n const next = this.#getClosestDetent(this.min);\r\n if (next > -1) {\r\n this.#snapToValue(this.#computeDetent(this.detents[next])!);\r\n } else {\r\n this.#snapToValue(this.min);\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"End\": {\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n const next = this.#getClosestDetent(this.max);\r\n if (next > -1) {\r\n this.#snapToValue(this.#computeDetent(this.detents[next])!);\r\n } else {\r\n this.#snapToValue(this.max);\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"PageUp\": {\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const nextDetent = this.#getNextLowerDetent(detent);\r\n if (nextDetent !== detent) {\r\n const value = this.#computeDetent(this.detents[nextDetent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n } else {\r\n this.#snapToValue(this.value - Math.max(10, this.step));\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"PageDown\": {\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent >= 0) {\r\n const nextDetent = this.#getNextHigherDetent(detent);\r\n if (nextDetent !== detent) {\r\n const value = this.#computeDetent(this.detents[nextDetent]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n } else {\r\n this.#snapToValue(this.value + Math.max(10, this.step));\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n case \"Enter\":\r\n if (!this.#snapAnimation) {\r\n this.#cycleDetent();\r\n }\r\n\r\n break;\r\n\r\n case \" \":\r\n e.preventDefault();\r\n if (!this.#snapAnimation) {\r\n this.#cycleDetent();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #changeValue(value: number, emitChange = true, allowOvershoot = false): boolean {\r\n this.#clearSnapAnimation();\r\n\r\n if (this.dispatchEvent(new Event(\"beforeinput\", { bubbles: true, cancelable: true }))) {\r\n if (!allowOvershoot) {\r\n value = Math.max(this.min, Math.min(this.max, value));\r\n }\r\n\r\n if (value != this.value) {\r\n this.value = value;\r\n this._base.style.setProperty(\"--_split-pane-value\", `${this.value}%`);\r\n\r\n this.dispatchEvent(new Event(\"input\", { bubbles: true }));\r\n if (emitChange) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /** @private */\r\n #getClosestDetent(value: number): number {\r\n let closestDetent = -1;\r\n let closestDistance = Infinity;\r\n\r\n for (let i = 0; i < this.detents.length; i++) {\r\n const detent = this.#computeDetent(this.detents[i]);\r\n if (detent === undefined) continue;\r\n\r\n const distance = Math.abs(value - detent);\r\n if (distance < closestDistance) {\r\n closestDistance = distance;\r\n closestDetent = i;\r\n }\r\n }\r\n return closestDetent;\r\n }\r\n\r\n /** @private */\r\n #getNextHigherDetent(detentIndex: number): number {\r\n const currentValue = this.#computeDetent(this.detents[detentIndex]);\r\n if (currentValue === undefined) return detentIndex;\r\n\r\n let value = Infinity;\r\n let nextDetent = detentIndex;\r\n for (let i = 0; i < this.detents.length; i++) {\r\n if (i === detentIndex) continue;\r\n const detent = this.#computeDetent(this.detents[i]);\r\n if (detent === undefined) continue;\r\n if (detent > currentValue && detent < value) {\r\n value = detent;\r\n nextDetent = i;\r\n }\r\n }\r\n return nextDetent;\r\n }\r\n\r\n /** @private */\r\n #getNextLowerDetent(detentIndex: number): number {\r\n const currentValue = this.#computeDetent(this.detents[detentIndex]);\r\n if (currentValue === undefined) return detentIndex;\r\n\r\n let value = -Infinity;\r\n let nextDetent = detentIndex;\r\n for (let i = 0; i < this.detents.length; i++) {\r\n if (i === detentIndex) continue;\r\n const detent = this.#computeDetent(this.detents[i]);\r\n if (detent === undefined) continue;\r\n if (detent < currentValue && detent > value) {\r\n value = detent;\r\n nextDetent = i;\r\n }\r\n }\r\n return nextDetent;\r\n }\r\n\r\n /** @private */\r\n #computeDetent(detent: string): number | undefined {\r\n const value = detent.endsWith(\"px\") ? this.clientWidth / parseFloat(detent) : parseFloat(detent);\r\n return !isNaN(value) ? value : undefined;\r\n }\r\n\r\n /** @private */\r\n #clearSnapAnimation(): void {\r\n this.#snapAnimation?.cancel();\r\n this.#snapAnimation = undefined;\r\n }\r\n\r\n /** @private */\r\n #snapToValue(value: number, emitChange = true): void {\r\n this.#clearSnapAnimation();\r\n\r\n value = Math.max(this.min, Math.min(this.max, value));\r\n if (value === this.value) return;\r\n\r\n if (!prefersReducedMotion()) {\r\n addCustomState(this, \"--animating\");\r\n\r\n this.#snapAnimation = this._base.animate(\r\n [{ \"--_split-pane-value\": `${this.value}%` }, { \"--_split-pane-value\": `${value}%` }],\r\n {\r\n duration: 250,\r\n easing: \"cubic-bezier(0.2, 0.0, 0, 1.0)\",\r\n },\r\n );\r\n this.#snapAnimation.onfinish = () => {\r\n this.#changeValue(value, emitChange);\r\n this.#snapAnimation = undefined;\r\n deleteCustomState(this, \"--animating\");\r\n };\r\n } else {\r\n this.#changeValue(value, emitChange);\r\n }\r\n }\r\n\r\n /** @private */\r\n #cycleDetent(): void {\r\n if (this.detents.length === 0) return;\r\n\r\n const detent = this.#getClosestDetent(this.value);\r\n if (detent === -1) return;\r\n\r\n let next = this.#getNextHigherDetent(detent);\r\n if (next === detent && this.wrapDetents) {\r\n next = this.#getClosestDetent(0);\r\n if (next === -1) return;\r\n }\r\n\r\n const value = this.#computeDetent(this.detents[next]);\r\n if (value !== undefined) {\r\n this.#snapToValue(value);\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-split-pane\": M3eSplitPaneElement;\r\n }\r\n}\r\n"],"names":["M3eSplitPaneElement","FormAssociated","Disabled","ReconnectedCallback","AttachInternals","LitElement","constructor","_M3eSplitPaneElement_breakpointUnobserve","set","_M3eSplitPaneElement_dragState","_M3eSplitPaneElement_valueChanged","_M3eSplitPaneElement_snapAnimation","_M3eSplitPaneElement_pressedController","PressedController","target","isPressedKey","key","minPressedDuration","callback","pressed","setCustomState","disabled","_M3eSplitPaneElement_startMutationController","MutationController","config","attributeFilter","__classPrivateFieldGet","_M3eSplitPaneElement_instances","_M3eSplitPaneElement_updatePaneVisibility","call","_M3eSplitPaneElement_endMutationController","value","min","max","overshootLimit","step","detents","wrapDetents","orientation","label","valueFormatter","dir","Math","round","currentOrientation","_orientation","WeakMap","WeakSet","formValue","toString","collapse","snapToValue","expand","detent","_M3eSplitPaneElement_getClosestDetent","_M3eSplitPaneElement_computeDetent","_M3eSplitPaneElement_snapToValue","_M3eSplitPaneElement_changeValue","disconnectedCallback","_M3eSplitPaneElement_clearOrientation","unobserve","_dragHandle","reconnectedCallback","_M3eSplitPaneElement_initialize","_M3eSplitPaneElement_initBreakpointMonitoring","willUpdate","changedProperties","has","undefined","_M3eSplitPaneElement_updateOrientation","updated","_changedProperties","_base","style","setProperty","firstUpdated","render","html","_M3eSplitPaneElement_handleStartSlotChange","_M3eSplitPaneElement_renderDragHandle","_M3eSplitPaneElement_handleEndSlotChange","ifDefined","M3eDirectionality","current","_M3eSplitPaneElement_handlePointerDown","_M3eSplitPaneElement_handlePointerUp","_M3eSplitPaneElement_handlePointerMove","_M3eSplitPaneElement_handleKeyDown","_M3eSplitPaneElement_cycleDetent","nothing","e","_M3eSplitPaneElement_handleSlotChange","slot","mutationController","state","targets","assignedElements","Array","_M3eSplitPaneElement_hasVisibleElements","element","HTMLElement","observe","pane","shadowRoot","querySelector","push","flatten","length","every","x","hasAttribute","__classPrivateFieldSet","M3eBreakpointObserver","Breakpoint","XSmall","matches","get","deleteCustomState","pointerType","button","setPointerCapture","pointerId","startPos","clientY","clientX","startValue","cachedSize","clientHeight","clientWidth","hasPointerCapture","pos","delta","overshoot","compressed","releasePointerCapture","dispatchEvent","Event","bubbles","ltr","preventDefault","nextDetent","_M3eSplitPaneElement_getNextLowerDetent","_M3eSplitPaneElement_getNextHigherDetent","next","emitChange","allowOvershoot","_M3eSplitPaneElement_clearSnapAnimation","cancelable","closestDetent","closestDistance","Infinity","i","distance","abs","detentIndex","currentValue","endsWith","parseFloat","isNaN","cancel","prefersReducedMotion","addCustomState","animate","duration","easing","onfinish","registerStyleSheet","css","styles","DesignToken","color","onSurface","unsafeCSS","motion","short4","standard","spring","fastEffects","outline","shape","corner","full","medium","__decorate","prototype","query","property","type","Number","attribute","converter","spaceSeparatedStringConverter","Boolean","customElement"],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * Copyright (c) 2025–2026 matraic
4
4
  * See LICENSE file in the project root for full license text.
5
5
  */
6
- import{__classPrivateFieldGet as t,__classPrivateFieldSet as e,__decorate as i}from"tslib";import{LitElement as s,html as a,nothing as h,css as n,unsafeCSS as l}from"lit";import{state as r,query as o,property as c}from"lit/decorators.js";import{ifDefined as d}from"lit/directives/if-defined.js";import{FormAssociated as p,Disabled as m,ReconnectedCallback as u,AttachInternals as v,PressedController as f,setCustomState as g,MutationController as b,formValue as w,deleteCustomState as y,prefersReducedMotion as $,addCustomState as x,registerStyleSheet as k,DesignToken as _,spaceSeparatedStringConverter as M,customElement as z}from"@m3e/web/core";import{M3eBreakpointObserver as D,Breakpoint as L}from"@m3e/web/core/layout";import{M3eDirectionality as P}from"@m3e/web/core/bidi";var E,S,W,H,O,T,C,F,N,U,A,R,V,I,X,j,B,q,Y,K,G,J,Q,Z,tt,et,it,st,at,ht;let nt=class extends(p(m(u(v(s))))){constructor(){super(...arguments),E.add(this),S.set(this,void 0),W.set(this,void 0),H.set(this,!1),O.set(this,void 0),T.set(this,new f(this,{target:null,isPressedKey:t=>" "===t,minPressedDuration:150,callback:t=>g(this,"--pressed",t&&!this.disabled)})),C.set(this,new b(this,{target:null,config:{attributeFilter:["hidden"]},callback:()=>t(this,E,"m",V).call(this,"start")})),F.set(this,new b(this,{target:null,config:{attributeFilter:["hidden"]},callback:()=>t(this,E,"m",V).call(this,"end")})),this.value=50,this.min=0,this.max=100,this.overshootLimit=4,this.step=1,this.detents=[],this.wrapDetents=!1,this.orientation="horizontal",this.label="Resize panes",this.valueFormatter=(t,e,i)=>{if((t=Math.round(t))>=48&&t<=52)return"Panes equally sized";switch(t){case 0:return"horizontal"===e?"ltr"===i?"Left pane collapsed":"Right pane collapsed":"Top pane collapsed";case 100:return"horizontal"===e?"ltr"===i?"Right pane collapsed":"Left pane collapsed":"Bottom pane collapsed";default:return"horizontal"===e?"ltr"===i?`Left pane ${t}%, right pane ${100-t}%`:`Left pane ${100-t}%, right pane ${t}%`:`Top pane ${t}%, bottom pane ${100-t}%`}}}get currentOrientation(){return this._orientation??("vertical"!==this.orientation?"horizontal":"vertical")}get[(S=new WeakMap,W=new WeakMap,H=new WeakMap,O=new WeakMap,T=new WeakMap,C=new WeakMap,F=new WeakMap,E=new WeakSet,w)](){return this.value?.toString()??null}collapse(){this.snapToValue(this.min)}expand(){this.snapToValue(this.max)}snapToValue(e){const i=t(this,E,"m",Z).call(this,e);e=i>-1?t(this,E,"m",it).call(this,this.detents[i]):e,t(this,O,"f")?t(this,E,"m",Q).call(this,e):t(this,E,"m",at).call(this,e)}disconnectedCallback(){super.disconnectedCallback(),t(this,E,"m",q).call(this),t(this,T,"f").unobserve(this._dragHandle)}reconnectedCallback(){super.reconnectedCallback(),t(this,E,"m",X).call(this),"auto"===this.orientation&&t(this,E,"m",j).call(this)}willUpdate(e){super.willUpdate(e),e.has("orientation")&&(t(this,S,"f")?.call(this),"auto"===this.orientation?t(this,E,"m",j).call(this):(this._orientation=void 0,t(this,E,"m",B).call(this)))}updated(t){super.updated(t),t.has("value")&&this._base.style.setProperty("--_split-pane-value",`${this.value}%`)}firstUpdated(e){super.firstUpdated(e),t(this,E,"m",X).call(this)}render(){return a`<div class="base"><div class="start" id="start" ?inert="${this.value<=0}"><slot name="start" @slotchange="${t(this,E,"m",U)}"></slot></div>${t(this,E,"m",N).call(this)}<div class="end" ?inert="${this.value>=100}"><slot name="end" @slotchange="${t(this,E,"m",A)}"></slot></div></div>`}};N=function(){return a`<div id="drag-handle" class="drag-handle" role="separator" tabindex="${d(this.disabled?void 0:0)}" aria-label="${this.label}" aria-controls="start" aria-disabled="${d(this.disabled?"true":void 0)}" aria-orientation="${"horizontal"===this.currentOrientation?"vertical":"horizontal"}" aria-valuemin="${this.min}" aria-valuemax="${this.max}" aria-valuenow="${this.value}" aria-valuetext="${d(this.valueFormatter?.(this.value,this.currentOrientation,P.current))}" @pointerdown="${t(this,E,"m",Y)}" @pointerup="${t(this,E,"m",G)}" @pointermove="${t(this,E,"m",K)}" @keydown="${t(this,E,"m",J)}" @dblclick="${t(this,E,"m",ht)}">${this.disabled?h:a`<div class="handle"><m3e-focus-ring for="drag-handle"></m3e-focus-ring><m3e-state-layer for="drag-handle"></m3e-state-layer></div><div class="touch"></div>`}</div>`},U=function(e){t(this,E,"m",R).call(this,e.target,t(this,C,"f"),"--with-start")},A=function(e){t(this,E,"m",R).call(this,e.target,t(this,F,"f"),"--with-end")},R=function(e,i,s){for(const t of i.targets)i.unobserve(t);const a=new Array;g(this,s,t(this,E,"m",I).call(this,e,a));for(const t of a)t instanceof HTMLElement&&i.observe(t)},V=function(e){g(this,`--with-${e}`,t(this,E,"m",I).call(this,this.shadowRoot?.querySelector(`slot[name='${e}']`)))},I=function(t,e){return(e=e??[]).push(...t?.assignedElements({flatten:!0})??[]),e.length>0&&!e.every(t=>t.hasAttribute("hidden"))},X=function(){t(this,T,"f").observe(this._dragHandle)},j=function(){e(this,S,D.observe([L.XSmall],e=>{this._orientation=e.get(L.XSmall)?"vertical":"horizontal",t(this,E,"m",B).call(this)}),"f")},B=function(){g(this,"--vertical","vertical"===this.currentOrientation)},q=function(){y(this,"--vertical"),this._orientation=void 0,t(this,S,"f")?.call(this),e(this,S,void 0,"f")},Y=function(i){if("mouse"===i.pointerType&&i.button>1)return;if(this.disabled)return;this._dragHandle.setPointerCapture(i.pointerId),e(this,H,!1,"f");let s=this.min;if(0===s&&this.detents.length>0){const e=t(this,E,"m",Z).call(this,0);e>-1&&(s=t(this,E,"m",it).call(this,this.detents[e])??this.min)}let a=this.max;if(100===a&&this.detents.length>0){const e=t(this,E,"m",Z).call(this,100);e>-1&&(a=t(this,E,"m",it).call(this,this.detents[e])??this.max)}e(this,W,{startPos:"vertical"===this.currentOrientation?i.clientY:i.clientX,startValue:this.value,cachedSize:"vertical"===this.currentOrientation?this.clientHeight:this.clientWidth,min:s,max:a},"f")},K=function(i){if(!this._dragHandle.hasPointerCapture(i.pointerId)||!t(this,W,"f"))return;const s="vertical"===this.currentOrientation?i.clientY:i.clientX;let a=t(this,W,"f").cachedSize>0?(s-t(this,W,"f").startPos)/t(this,W,"f").cachedSize*100:0;"rtl"===P.current&&"vertical"!==this.currentOrientation&&(a=-a);let h=t(this,W,"f").startValue+a;if(h<t(this,W,"f").min){const e=t(this,W,"f").min-h,i=this.overshootLimit*e/(e+this.overshootLimit);h=t(this,W,"f").min-i}else if(h>t(this,W,"f").max){const e=h-t(this,W,"f").max,i=this.overshootLimit*e/(e+this.overshootLimit);h=t(this,W,"f").max+i}t(this,E,"m",Q).call(this,h,!1,!0)&&e(this,H,!0,"f")},G=function(i){if(!("mouse"===i.pointerType&&i.button>1)&&this._dragHandle.hasPointerCapture(i.pointerId)){this._dragHandle.releasePointerCapture(i.pointerId),e(this,W,void 0,"f");const s=t(this,E,"m",Z).call(this,this.value);if(s>=0){const e=t(this,E,"m",it).call(this,this.detents[s]);void 0!==e&&t(this,E,"m",at).call(this,e,!1)}else this.value<this.min?t(this,E,"m",at).call(this,this.min,!1):this.value>this.max&&t(this,E,"m",at).call(this,this.max,!1);t(this,H,"f")&&(this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),e(this,H,!1,"f"))}},J=function(e){const i="ltr"===P.current||"vertical"===this.currentOrientation;switch(e.key){case"Up":case"ArrowUp":case"Left":case"ArrowLeft":{e.preventDefault();const s=t(this,E,"m",Z).call(this,this.value);if(s>=0){const e=i?t(this,E,"m",et).call(this,s):t(this,E,"m",tt).call(this,s);if(e!==s&&!t(this,O,"f")){const i=t(this,E,"m",it).call(this,this.detents[e]);void 0!==i&&t(this,E,"m",at).call(this,i)}}else this.step>1?t(this,O,"f")||t(this,E,"m",at).call(this,this.value+(i?-this.step:this.step)):t(this,E,"m",Q).call(this,this.value+(i?-this.step:this.step));break}case"Down":case"ArrowDown":case"Right":case"ArrowRight":{e.preventDefault();const s=t(this,E,"m",Z).call(this,this.value);if(s>=0){const e=i?t(this,E,"m",tt).call(this,s):t(this,E,"m",et).call(this,s);if(e!==s&&!t(this,O,"f")){const i=t(this,E,"m",it).call(this,this.detents[e]);void 0!==i&&t(this,E,"m",at).call(this,i)}}else this.step>1?t(this,O,"f")||t(this,E,"m",at).call(this,this.value+(i?this.step:-this.step)):t(this,E,"m",Q).call(this,this.value+(i?this.step:-this.step));break}case"Home":if(e.preventDefault(),!t(this,O,"f")){const e=t(this,E,"m",Z).call(this,this.min);e>-1?t(this,E,"m",at).call(this,t(this,E,"m",it).call(this,this.detents[e])):t(this,E,"m",at).call(this,this.min)}break;case"End":if(e.preventDefault(),!t(this,O,"f")){const e=t(this,E,"m",Z).call(this,this.max);e>-1?t(this,E,"m",at).call(this,t(this,E,"m",it).call(this,this.detents[e])):t(this,E,"m",at).call(this,this.max)}break;case"PageUp":if(e.preventDefault(),!t(this,O,"f")){const e=t(this,E,"m",Z).call(this,this.value);if(e>=0){const i=t(this,E,"m",et).call(this,e);if(i!==e){const e=t(this,E,"m",it).call(this,this.detents[i]);void 0!==e&&t(this,E,"m",at).call(this,e)}}else t(this,E,"m",at).call(this,this.value-Math.max(10,this.step))}break;case"PageDown":if(e.preventDefault(),!t(this,O,"f")){const e=t(this,E,"m",Z).call(this,this.value);if(e>=0){const i=t(this,E,"m",tt).call(this,e);if(i!==e){const e=t(this,E,"m",it).call(this,this.detents[i]);void 0!==e&&t(this,E,"m",at).call(this,e)}}else t(this,E,"m",at).call(this,this.value+Math.max(10,this.step))}break;case"Enter":t(this,O,"f")||t(this,E,"m",ht).call(this);break;case" ":e.preventDefault(),t(this,O,"f")||t(this,E,"m",ht).call(this)}},Q=function(e,i=!0,s=!1){if(t(this,E,"m",st).call(this),s||(e=Math.max(this.min,Math.min(this.max,e))),e!=this.value){const t=this.value;if(this.value=e,this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0,cancelable:!0})))return this._base.style.setProperty("--_split-pane-value",`${this.value}%`),i&&this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),!0;this.value=t}return!1},Z=function(e){let i=-1,s=1/0;for(let a=0;a<this.detents.length;a++){const h=t(this,E,"m",it).call(this,this.detents[a]);if(void 0===h)continue;const n=Math.abs(e-h);n<s&&(s=n,i=a)}return i},tt=function(e){const i=t(this,E,"m",it).call(this,this.detents[e]);if(void 0===i)return e;let s=1/0,a=e;for(let h=0;h<this.detents.length;h++){if(h===e)continue;const n=t(this,E,"m",it).call(this,this.detents[h]);void 0!==n&&(n>i&&n<s&&(s=n,a=h))}return a},et=function(e){const i=t(this,E,"m",it).call(this,this.detents[e]);if(void 0===i)return e;let s=-1/0,a=e;for(let h=0;h<this.detents.length;h++){if(h===e)continue;const n=t(this,E,"m",it).call(this,this.detents[h]);void 0!==n&&(n<i&&n>s&&(s=n,a=h))}return a},it=function(t){const e=t.endsWith("px")?this.clientWidth/parseFloat(t):parseFloat(t);return isNaN(e)?void 0:e},st=function(){t(this,O,"f")?.cancel(),e(this,O,void 0,"f")},at=function(i,s=!0){t(this,E,"m",st).call(this),(i=Math.max(this.min,Math.min(this.max,i)))!==this.value&&($()?t(this,E,"m",Q).call(this,i,s):(x(this,"--animating"),e(this,O,this._base.animate([{"--_split-pane-value":`${this.value}%`},{"--_split-pane-value":`${i}%`}],{duration:250,easing:"cubic-bezier(0.2, 0.0, 0, 1.0)"}),"f"),t(this,O,"f").onfinish=()=>{t(this,E,"m",Q).call(this,i,s),e(this,O,void 0,"f"),y(this,"--animating")}))},ht=function(){if(0===this.detents.length)return;const e=t(this,E,"m",Z).call(this,this.value);if(-1===e)return;let i=t(this,E,"m",tt).call(this,e);if(i===e&&this.wrapDetents&&(i=t(this,E,"m",Z).call(this,0),-1===i))return;const s=t(this,E,"m",it).call(this,this.detents[i]);void 0!==s&&t(this,E,"m",at).call(this,s)},k(n`@property --_split-pane-value { syntax: "<length-percentage>"; inherits: true; initial-value: 50%; }</length-percentage>`),nt.styles=n`:host { display: block; } .base { display: flex; width: 100%; height: 100%; overflow: hidden; } :host(:not(:is(:state(--vertical), :--vertical))) .base { flex-direction: row; } :host(:is(:state(--vertical), :--vertical)) .base { flex-direction: column; } :host(:is(:state(--with-start), :--with-start):is(:state(--with-end), :--with-end)) .start { flex: 0 1 calc(var(--_split-pane-value) - calc(var(--m3e-split-pane-drag-handle-container-width, 1.5rem) / 2)); } :host(:not(:is(:state(--with-end), :--with-end))) .start { flex: 1 1 auto; } :host(:is(:state(--with-end), :--with-end)) .end { flex: 1 1 auto; } :host(:not(:is(:state(--with-end), :--with-end))) .end { display: none; } :host(:not(:is(:state(--animating), :--animating))) .start[inert], :host(:not(:is(:state(--animating), :--animating))) .end[inert] { visibility: hidden; } .drag-handle { flex: none; display: flex; align-items: center; justify-content: center; outline: none; touch-action: none; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); --m3e-state-layer-hover-color: var(--m3e-split-pane-drag-handle-hover-color, ${_.color.onSurface}); --m3e-state-layer-hover-opacity: var(--m3e-split-pane-drag-handle-hover-opacity, 8%); --m3e-state-layer-focus-color: var(--m3e-split-pane-drag-handle-focus-color, ${_.color.onSurface}); --m3e-state-layer-focus-opacity: var(--m3e-split-pane-drag-handle-focus-opacity, 10%); } :host(:is(:not(:is(:state(--with-start), :--with-start)), :not(:is(:state(--with-end), :--with-end)))) .drag-handle { display: none; } :host(:not(:is(:state(--pressed), :--pressed))) .drag-handle:not([aria-disabled]) { cursor: grab; } :host(:is(:state(--pressed), :--pressed)) .drag-handle:not([aria-disabled]) { cursor: grabbing; } .handle { position: relative; transition: ${l(`background-color ${_.motion.duration.short4} ${_.motion.easing.standard},\n width ${_.motion.spring.fastEffects}, height ${_.motion.spring.fastEffects}`)}; } .touch { z-index: 1; position: absolute; height: 3rem; width: 3rem; margin: auto; touch-action: none; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } :host(:not(:is(:state(--pressed), :--pressed))) .handle { background-color: var(--m3e-split-pane-drag-handle-color, ${_.color.outline}); border-radius: var(--m3e-split-pane-drag-handle-shape, ${_.shape.corner.full}); } :host(:is(:state(--pressed), :--pressed)) .handle { background-color: var(--m3e-split-pane-drag-handle-pressed-color, ${_.color.onSurface}); border-radius: var(--m3e-split-pane-drag-handle-pressed-shape, ${_.shape.corner.medium}); } :host(:not(:is(:state(--vertical), :--vertical))) .drag-handle { flex-direction: column; width: var(--m3e-split-pane-drag-handle-container-width, 1.5rem); } :host(:not(:is(:state(--vertical), :--vertical)):not(:is(:state(--pressed), :--pressed))) .handle { width: var(--m3e-split-pane-drag-handle-width, 0.25rem); height: var(--m3e-split-pane-drag-handle-height, 3rem); } :host(:not(:is(:state(--vertical), :--vertical)):is(:state(--pressed), :--pressed)) .handle { width: var(--m3e-split-pane-drag-handle-pressed-width, 0.75rem); height: var(--m3e-split-pane-drag-handle-pressed-height, 3.25rem); } :host(:is(:state(--vertical), :--vertical)) .drag-handle { height: var(--m3e-split-pane-drag-handle-container-width, 1.5rem); } :host(:is(:state(--vertical), :--vertical):not(:is(:state(--pressed), :--pressed))) .handle { width: var(--m3e-split-pane-drag-handle-height, 3rem); height: var(--m3e-split-pane-drag-handle-width, 0.25rem); } :host(:is(:state(--vertical), :--vertical):is(:state(--pressed), :--pressed)) .handle { width: var(--m3e-split-pane-drag-handle-pressed-height, 3.25rem); height: var(--m3e-split-pane-drag-handle-pressed-width, 0.75rem); } @media (prefers-reduced-motion) { .handle { transition: none; } } @media (forced-colors: active) { :host(:is(:state(--pressed), :--pressed)) .handle, :host(:not(:is(:state(--pressed), :--pressed))) .handle { background-color: ButtonText; } }`,i([r()],nt.prototype,"_orientation",void 0),i([o(".base")],nt.prototype,"_base",void 0),i([o(".drag-handle")],nt.prototype,"_dragHandle",void 0),i([c({type:Number})],nt.prototype,"value",void 0),i([c({type:Number})],nt.prototype,"min",void 0),i([c({type:Number})],nt.prototype,"max",void 0),i([c({attribute:"overshoot-limit",type:Number})],nt.prototype,"overshootLimit",void 0),i([c({type:Number})],nt.prototype,"step",void 0),i([c({attribute:"detents",converter:M})],nt.prototype,"detents",void 0),i([c({attribute:"wrap-detents",type:Boolean})],nt.prototype,"wrapDetents",void 0),i([c()],nt.prototype,"orientation",void 0),i([c()],nt.prototype,"label",void 0),i([c()],nt.prototype,"valueFormatter",void 0),nt=i([z("m3e-split-pane")],nt);export{nt as M3eSplitPaneElement};
6
+ import{__classPrivateFieldGet as t,__classPrivateFieldSet as e,__decorate as i}from"tslib";import{LitElement as s,html as a,nothing as h,css as n,unsafeCSS as l}from"lit";import{state as r,query as o,property as c}from"lit/decorators.js";import{ifDefined as d}from"lit/directives/if-defined.js";import{FormAssociated as p,Disabled as m,ReconnectedCallback as u,AttachInternals as v,PressedController as f,setCustomState as g,MutationController as b,formValue as w,deleteCustomState as y,prefersReducedMotion as $,addCustomState as x,registerStyleSheet as k,DesignToken as _,spaceSeparatedStringConverter as M,customElement as z}from"@m3e/web/core";import{M3eBreakpointObserver as D,Breakpoint as E}from"@m3e/web/core/layout";import{M3eDirectionality as L}from"@m3e/web/core/bidi";var P,S,W,H,O,T,C,F,N,U,A,R,V,I,X,j,B,q,Y,K,G,J,Q,Z,tt,et,it,st,at,ht;let nt=class extends(p(m(u(v(s))))){constructor(){super(...arguments),P.add(this),S.set(this,void 0),W.set(this,void 0),H.set(this,!1),O.set(this,void 0),T.set(this,new f(this,{target:null,isPressedKey:t=>" "===t,minPressedDuration:150,callback:t=>g(this,"--pressed",t&&!this.disabled)})),C.set(this,new b(this,{target:null,config:{attributeFilter:["hidden"]},callback:()=>t(this,P,"m",V).call(this,"start")})),F.set(this,new b(this,{target:null,config:{attributeFilter:["hidden"]},callback:()=>t(this,P,"m",V).call(this,"end")})),this.value=50,this.min=0,this.max=100,this.overshootLimit=4,this.step=1,this.detents=[],this.wrapDetents=!1,this.orientation="horizontal",this.label="Resize panes",this.valueFormatter=(t,e,i)=>{if((t=Math.round(t))>=48&&t<=52)return"Panes equally sized";switch(t){case 0:return"horizontal"===e?"ltr"===i?"Left pane collapsed":"Right pane collapsed":"Top pane collapsed";case 100:return"horizontal"===e?"ltr"===i?"Right pane collapsed":"Left pane collapsed":"Bottom pane collapsed";default:return"horizontal"===e?"ltr"===i?`Left pane ${t}%, right pane ${100-t}%`:`Left pane ${100-t}%, right pane ${t}%`:`Top pane ${t}%, bottom pane ${100-t}%`}}}get currentOrientation(){return this._orientation??("vertical"!==this.orientation?"horizontal":"vertical")}get[(S=new WeakMap,W=new WeakMap,H=new WeakMap,O=new WeakMap,T=new WeakMap,C=new WeakMap,F=new WeakMap,P=new WeakSet,w)](){return this.value?.toString()??null}collapse(){this.snapToValue(this.min)}expand(){this.snapToValue(this.max)}snapToValue(e){const i=t(this,P,"m",Z).call(this,e);e=i>-1?t(this,P,"m",it).call(this,this.detents[i]):e,t(this,O,"f")?t(this,P,"m",Q).call(this,e):t(this,P,"m",at).call(this,e)}disconnectedCallback(){super.disconnectedCallback(),t(this,P,"m",q).call(this),t(this,T,"f").unobserve(this._dragHandle)}reconnectedCallback(){super.reconnectedCallback(),t(this,P,"m",X).call(this),"auto"===this.orientation&&t(this,P,"m",j).call(this)}willUpdate(e){super.willUpdate(e),e.has("orientation")&&(t(this,S,"f")?.call(this),"auto"===this.orientation?t(this,P,"m",j).call(this):(this._orientation=void 0,t(this,P,"m",B).call(this)))}updated(t){super.updated(t),t.has("value")&&this._base.style.setProperty("--_split-pane-value",`${this.value}%`)}firstUpdated(e){super.firstUpdated(e),t(this,P,"m",X).call(this)}render(){return a`<div class="base"><div class="start" id="start" ?inert="${this.value<=0}"><slot name="start" @slotchange="${t(this,P,"m",U)}"></slot></div>${t(this,P,"m",N).call(this)}<div class="end" ?inert="${this.value>=100}"><slot name="end" @slotchange="${t(this,P,"m",A)}"></slot></div></div>`}};N=function(){return a`<div id="drag-handle" class="drag-handle" role="separator" tabindex="${d(this.disabled?void 0:0)}" aria-label="${this.label}" aria-controls="start" aria-disabled="${d(this.disabled?"true":void 0)}" aria-orientation="${"horizontal"===this.currentOrientation?"vertical":"horizontal"}" aria-valuemin="${this.min}" aria-valuemax="${this.max}" aria-valuenow="${this.value}" aria-valuetext="${d(this.valueFormatter?.(this.value,this.currentOrientation,L.current))}" @pointerdown="${t(this,P,"m",Y)}" @pointerup="${t(this,P,"m",G)}" @pointermove="${t(this,P,"m",K)}" @keydown="${t(this,P,"m",J)}" @dblclick="${t(this,P,"m",ht)}">${this.disabled?h:a`<div class="handle"><m3e-focus-ring for="drag-handle"></m3e-focus-ring><m3e-state-layer for="drag-handle"></m3e-state-layer></div><div class="touch"></div>`}</div>`},U=function(e){t(this,P,"m",R).call(this,e.target,t(this,C,"f"),"--with-start")},A=function(e){t(this,P,"m",R).call(this,e.target,t(this,F,"f"),"--with-end")},R=function(e,i,s){for(const t of i.targets)i.unobserve(t);const a=new Array;g(this,s,t(this,P,"m",I).call(this,e,a));for(const t of a)t instanceof HTMLElement&&i.observe(t)},V=function(e){g(this,`--with-${e}`,t(this,P,"m",I).call(this,this.shadowRoot?.querySelector(`slot[name='${e}']`)))},I=function(t,e){return(e=e??[]).push(...t?.assignedElements({flatten:!0})??[]),e.length>0&&!e.every(t=>t.hasAttribute("hidden"))},X=function(){t(this,T,"f").observe(this._dragHandle)},j=function(){e(this,S,D.observe([E.XSmall],e=>{this._orientation=e.get(E.XSmall)?"vertical":"horizontal",t(this,P,"m",B).call(this)}),"f")},B=function(){g(this,"--vertical","vertical"===this.currentOrientation)},q=function(){y(this,"--vertical"),this._orientation=void 0,t(this,S,"f")?.call(this),e(this,S,void 0,"f")},Y=function(i){if("mouse"===i.pointerType&&i.button>1)return;if(this.disabled)return;this._dragHandle.setPointerCapture(i.pointerId),e(this,H,!1,"f");let s=this.min;if(0===s&&this.detents.length>0){const e=t(this,P,"m",Z).call(this,0);e>-1&&(s=t(this,P,"m",it).call(this,this.detents[e])??this.min)}let a=this.max;if(100===a&&this.detents.length>0){const e=t(this,P,"m",Z).call(this,100);e>-1&&(a=t(this,P,"m",it).call(this,this.detents[e])??this.max)}e(this,W,{startPos:"vertical"===this.currentOrientation?i.clientY:i.clientX,startValue:this.value,cachedSize:"vertical"===this.currentOrientation?this.clientHeight:this.clientWidth,min:s,max:a},"f")},K=function(i){if(!this._dragHandle.hasPointerCapture(i.pointerId)||!t(this,W,"f"))return;const s="vertical"===this.currentOrientation?i.clientY:i.clientX;let a=t(this,W,"f").cachedSize>0?(s-t(this,W,"f").startPos)/t(this,W,"f").cachedSize*100:0;"rtl"===L.current&&"vertical"!==this.currentOrientation&&(a=-a);let h=t(this,W,"f").startValue+a;if(h<t(this,W,"f").min){const e=t(this,W,"f").min-h,i=this.overshootLimit*e/(e+this.overshootLimit);h=t(this,W,"f").min-i}else if(h>t(this,W,"f").max){const e=h-t(this,W,"f").max,i=this.overshootLimit*e/(e+this.overshootLimit);h=t(this,W,"f").max+i}t(this,P,"m",Q).call(this,h,!1,!0)&&e(this,H,!0,"f")},G=function(i){if(!("mouse"===i.pointerType&&i.button>1)&&this._dragHandle.hasPointerCapture(i.pointerId)){this._dragHandle.releasePointerCapture(i.pointerId),e(this,W,void 0,"f");const s=t(this,P,"m",Z).call(this,this.value);if(s>=0){const e=t(this,P,"m",it).call(this,this.detents[s]);void 0!==e&&t(this,P,"m",at).call(this,e,!1)}else this.value<this.min?t(this,P,"m",at).call(this,this.min,!1):this.value>this.max&&t(this,P,"m",at).call(this,this.max,!1);t(this,H,"f")&&(this.dispatchEvent(new Event("change",{bubbles:!0})),e(this,H,!1,"f"))}},J=function(e){const i="ltr"===L.current||"vertical"===this.currentOrientation;switch(e.key){case"Up":case"ArrowUp":case"Left":case"ArrowLeft":{e.preventDefault();const s=t(this,P,"m",Z).call(this,this.value);if(s>=0){const e=i?t(this,P,"m",et).call(this,s):t(this,P,"m",tt).call(this,s);if(e!==s&&!t(this,O,"f")){const i=t(this,P,"m",it).call(this,this.detents[e]);void 0!==i&&t(this,P,"m",at).call(this,i)}}else this.step>1?t(this,O,"f")||t(this,P,"m",at).call(this,this.value+(i?-this.step:this.step)):t(this,P,"m",Q).call(this,this.value+(i?-this.step:this.step));break}case"Down":case"ArrowDown":case"Right":case"ArrowRight":{e.preventDefault();const s=t(this,P,"m",Z).call(this,this.value);if(s>=0){const e=i?t(this,P,"m",tt).call(this,s):t(this,P,"m",et).call(this,s);if(e!==s&&!t(this,O,"f")){const i=t(this,P,"m",it).call(this,this.detents[e]);void 0!==i&&t(this,P,"m",at).call(this,i)}}else this.step>1?t(this,O,"f")||t(this,P,"m",at).call(this,this.value+(i?this.step:-this.step)):t(this,P,"m",Q).call(this,this.value+(i?this.step:-this.step));break}case"Home":if(e.preventDefault(),!t(this,O,"f")){const e=t(this,P,"m",Z).call(this,this.min);e>-1?t(this,P,"m",at).call(this,t(this,P,"m",it).call(this,this.detents[e])):t(this,P,"m",at).call(this,this.min)}break;case"End":if(e.preventDefault(),!t(this,O,"f")){const e=t(this,P,"m",Z).call(this,this.max);e>-1?t(this,P,"m",at).call(this,t(this,P,"m",it).call(this,this.detents[e])):t(this,P,"m",at).call(this,this.max)}break;case"PageUp":if(e.preventDefault(),!t(this,O,"f")){const e=t(this,P,"m",Z).call(this,this.value);if(e>=0){const i=t(this,P,"m",et).call(this,e);if(i!==e){const e=t(this,P,"m",it).call(this,this.detents[i]);void 0!==e&&t(this,P,"m",at).call(this,e)}}else t(this,P,"m",at).call(this,this.value-Math.max(10,this.step))}break;case"PageDown":if(e.preventDefault(),!t(this,O,"f")){const e=t(this,P,"m",Z).call(this,this.value);if(e>=0){const i=t(this,P,"m",tt).call(this,e);if(i!==e){const e=t(this,P,"m",it).call(this,this.detents[i]);void 0!==e&&t(this,P,"m",at).call(this,e)}}else t(this,P,"m",at).call(this,this.value+Math.max(10,this.step))}break;case"Enter":t(this,O,"f")||t(this,P,"m",ht).call(this);break;case" ":e.preventDefault(),t(this,O,"f")||t(this,P,"m",ht).call(this)}},Q=function(e,i=!0,s=!1){return t(this,P,"m",st).call(this),!(!this.dispatchEvent(new Event("beforeinput",{bubbles:!0,cancelable:!0}))||(s||(e=Math.max(this.min,Math.min(this.max,e))),e==this.value))&&(this.value=e,this._base.style.setProperty("--_split-pane-value",`${this.value}%`),this.dispatchEvent(new Event("input",{bubbles:!0})),i&&this.dispatchEvent(new Event("change",{bubbles:!0})),!0)},Z=function(e){let i=-1,s=1/0;for(let a=0;a<this.detents.length;a++){const h=t(this,P,"m",it).call(this,this.detents[a]);if(void 0===h)continue;const n=Math.abs(e-h);n<s&&(s=n,i=a)}return i},tt=function(e){const i=t(this,P,"m",it).call(this,this.detents[e]);if(void 0===i)return e;let s=1/0,a=e;for(let h=0;h<this.detents.length;h++){if(h===e)continue;const n=t(this,P,"m",it).call(this,this.detents[h]);void 0!==n&&(n>i&&n<s&&(s=n,a=h))}return a},et=function(e){const i=t(this,P,"m",it).call(this,this.detents[e]);if(void 0===i)return e;let s=-1/0,a=e;for(let h=0;h<this.detents.length;h++){if(h===e)continue;const n=t(this,P,"m",it).call(this,this.detents[h]);void 0!==n&&(n<i&&n>s&&(s=n,a=h))}return a},it=function(t){const e=t.endsWith("px")?this.clientWidth/parseFloat(t):parseFloat(t);return isNaN(e)?void 0:e},st=function(){t(this,O,"f")?.cancel(),e(this,O,void 0,"f")},at=function(i,s=!0){t(this,P,"m",st).call(this),(i=Math.max(this.min,Math.min(this.max,i)))!==this.value&&($()?t(this,P,"m",Q).call(this,i,s):(x(this,"--animating"),e(this,O,this._base.animate([{"--_split-pane-value":`${this.value}%`},{"--_split-pane-value":`${i}%`}],{duration:250,easing:"cubic-bezier(0.2, 0.0, 0, 1.0)"}),"f"),t(this,O,"f").onfinish=()=>{t(this,P,"m",Q).call(this,i,s),e(this,O,void 0,"f"),y(this,"--animating")}))},ht=function(){if(0===this.detents.length)return;const e=t(this,P,"m",Z).call(this,this.value);if(-1===e)return;let i=t(this,P,"m",tt).call(this,e);if(i===e&&this.wrapDetents&&(i=t(this,P,"m",Z).call(this,0),-1===i))return;const s=t(this,P,"m",it).call(this,this.detents[i]);void 0!==s&&t(this,P,"m",at).call(this,s)},k(n`@property --_split-pane-value { syntax: "<length-percentage>"; inherits: true; initial-value: 50%; }</length-percentage>`),nt.styles=n`:host { display: block; } .base { display: flex; width: 100%; height: 100%; overflow: hidden; } :host(:not(:is(:state(--vertical), :--vertical))) .base { flex-direction: row; } :host(:is(:state(--vertical), :--vertical)) .base { flex-direction: column; } :host(:is(:state(--with-start), :--with-start):is(:state(--with-end), :--with-end)) .start { flex: 0 1 calc(var(--_split-pane-value) - calc(var(--m3e-split-pane-drag-handle-container-width, 1.5rem) / 2)); } :host(:not(:is(:state(--with-end), :--with-end))) .start { flex: 1 1 auto; } :host(:is(:state(--with-end), :--with-end)) .end { flex: 1 1 auto; } :host(:not(:is(:state(--with-end), :--with-end))) .end { display: none; } :host(:not(:is(:state(--animating), :--animating))) .start[inert], :host(:not(:is(:state(--animating), :--animating))) .end[inert] { visibility: hidden; } .drag-handle { flex: none; display: flex; align-items: center; justify-content: center; outline: none; touch-action: none; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); --m3e-state-layer-hover-color: var(--m3e-split-pane-drag-handle-hover-color, ${_.color.onSurface}); --m3e-state-layer-hover-opacity: var(--m3e-split-pane-drag-handle-hover-opacity, 8%); --m3e-state-layer-focus-color: var(--m3e-split-pane-drag-handle-focus-color, ${_.color.onSurface}); --m3e-state-layer-focus-opacity: var(--m3e-split-pane-drag-handle-focus-opacity, 10%); } :host(:is(:not(:is(:state(--with-start), :--with-start)), :not(:is(:state(--with-end), :--with-end)))) .drag-handle { display: none; } :host(:not(:is(:state(--pressed), :--pressed))) .drag-handle:not([aria-disabled]) { cursor: grab; } :host(:is(:state(--pressed), :--pressed)) .drag-handle:not([aria-disabled]) { cursor: grabbing; } .handle { position: relative; transition: ${l(`background-color ${_.motion.duration.short4} ${_.motion.easing.standard},\n width ${_.motion.spring.fastEffects}, height ${_.motion.spring.fastEffects}`)}; } .touch { z-index: 1; position: absolute; height: 3rem; width: 3rem; margin: auto; touch-action: none; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } :host(:not(:is(:state(--pressed), :--pressed))) .handle { background-color: var(--m3e-split-pane-drag-handle-color, ${_.color.outline}); border-radius: var(--m3e-split-pane-drag-handle-shape, ${_.shape.corner.full}); } :host(:is(:state(--pressed), :--pressed)) .handle { background-color: var(--m3e-split-pane-drag-handle-pressed-color, ${_.color.onSurface}); border-radius: var(--m3e-split-pane-drag-handle-pressed-shape, ${_.shape.corner.medium}); } :host(:not(:is(:state(--vertical), :--vertical))) .drag-handle { flex-direction: column; width: var(--m3e-split-pane-drag-handle-container-width, 1.5rem); } :host(:not(:is(:state(--vertical), :--vertical)):not(:is(:state(--pressed), :--pressed))) .handle { width: var(--m3e-split-pane-drag-handle-width, 0.25rem); height: var(--m3e-split-pane-drag-handle-height, 3rem); } :host(:not(:is(:state(--vertical), :--vertical)):is(:state(--pressed), :--pressed)) .handle { width: var(--m3e-split-pane-drag-handle-pressed-width, 0.75rem); height: var(--m3e-split-pane-drag-handle-pressed-height, 3.25rem); } :host(:is(:state(--vertical), :--vertical)) .drag-handle { height: var(--m3e-split-pane-drag-handle-container-width, 1.5rem); } :host(:is(:state(--vertical), :--vertical):not(:is(:state(--pressed), :--pressed))) .handle { width: var(--m3e-split-pane-drag-handle-height, 3rem); height: var(--m3e-split-pane-drag-handle-width, 0.25rem); } :host(:is(:state(--vertical), :--vertical):is(:state(--pressed), :--pressed)) .handle { width: var(--m3e-split-pane-drag-handle-pressed-height, 3.25rem); height: var(--m3e-split-pane-drag-handle-pressed-width, 0.75rem); } @media (prefers-reduced-motion) { .handle { transition: none; } } @media (forced-colors: active) { :host(:is(:state(--pressed), :--pressed)) .handle, :host(:not(:is(:state(--pressed), :--pressed))) .handle { background-color: ButtonText; } }`,i([r()],nt.prototype,"_orientation",void 0),i([o(".base")],nt.prototype,"_base",void 0),i([o(".drag-handle")],nt.prototype,"_dragHandle",void 0),i([c({type:Number})],nt.prototype,"value",void 0),i([c({type:Number})],nt.prototype,"min",void 0),i([c({type:Number})],nt.prototype,"max",void 0),i([c({attribute:"overshoot-limit",type:Number})],nt.prototype,"overshootLimit",void 0),i([c({type:Number})],nt.prototype,"step",void 0),i([c({attribute:"detents",converter:M})],nt.prototype,"detents",void 0),i([c({attribute:"wrap-detents",type:Boolean})],nt.prototype,"wrapDetents",void 0),i([c()],nt.prototype,"orientation",void 0),i([c()],nt.prototype,"label",void 0),i([c()],nt.prototype,"valueFormatter",void 0),nt=i([z("m3e-split-pane")],nt);export{nt as M3eSplitPaneElement};
7
7
  //# sourceMappingURL=split-pane.min.js.map