@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
package/dist/tree.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sources":["../../src/tree/TreeItemElement.ts","../../src/tree/TreeElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { 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 AttachInternals,\r\n customElement,\r\n DesignToken,\r\n Disabled,\r\n hasAssignedNodes,\r\n M3eFocusRingElement,\r\n M3eRippleElement,\r\n M3eStateLayerElement,\r\n MutationController,\r\n Role,\r\n Selected,\r\n setCustomState,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { selectionManager } from \"@m3e/web/core/a11y\";\r\n\r\nimport type { M3eTreeElement } from \"./TreeElement\";\r\n\r\n/**\r\n * An expandable item in a tree.\r\n *\r\n * @description\r\n * The `m3e-tree-item` component represents a single item within an `m3e-tree`.\r\n * It supports nested child items, expand/collapse behavior, selection,\r\n * disabled state, and interaction styling. Items may contain a child group\r\n * that hosts additional `m3e-tree-item` elements.\r\n *\r\n * @tag m3e-tree-item\r\n *\r\n * @slot - Renders the nested child items.\r\n * @slot label - Renders the label of the item.\r\n * @slot icon - Renders the icon of the item.\r\n * @slot selected-icon - Renders the icon of the item when selected.\r\n * @slot toggle-icon - Renders the toggle icon.\r\n * @slot open-toggle-icon - Renders the toggle icon when selected.\r\n *\r\n * @attr disabled - Whether the element is disabled.\r\n * @attr indeterminate - Whether the element's checked state is indeterminate.\r\n * @attr open - Whether the item is expanded.\r\n * @attr selected - Whether the item is selected.\r\n *\r\n * @fires opening - Emitted when the item begins to open.\r\n * @fires opened - Emitted when the item has opened.\r\n * @fires closing - Emitted when the item begins to close.\r\n * @fires closed - Emitted when the item has closed.\r\n * @fires click - Emitted when the element is clicked.\r\n *\r\n * @cssprop --m3e-tree-item-font-size - Font size for the item label.\r\n * @cssprop --m3e-tree-item-font-weight - Font weight for the item label.\r\n * @cssprop --m3e-tree-item-line-height - Line height for the item label.\r\n * @cssprop --m3e-tree-item-tracking - Letter spacing for the item label.\r\n * @cssprop --m3e-tree-item-padding - Inline padding for the item.\r\n * @cssprop --m3e-tree-item-height - Height of the item.\r\n * @cssprop --m3e-tree-item-shape - Border radius of the item and focus ring.\r\n * @cssprop --m3e-tree-item-icon-size - Size of the icon.\r\n * @cssprop --m3e-tree-item-inset - Indentation for nested items.\r\n * @cssprop --m3e-tree-item-label-color - Text color for the item label.\r\n * @cssprop --m3e-tree-item-selected-label-color - Text color for selected item label.\r\n * @cssprop --m3e-tree-item-selected-container-color - Background color for selected item.\r\n * @cssprop --m3e-tree-item-selected-container-focus-color - Focus color for selected item container.\r\n * @cssprop --m3e-tree-item-selected-container-hover-color - Hover color for selected item container.\r\n * @cssprop --m3e-tree-item-selected-ripple-color - Ripple color for selected item.\r\n * @cssprop --m3e-tree-item-unselected-container-focus-color - Focus color for unselected item container.\r\n * @cssprop --m3e-tree-item-unselected-container-hover-color - Hover color for unselected item container.\r\n * @cssprop --m3e-tree-item-unselected-ripple-color - Ripple color for unselected item.\r\n * @cssprop --m3e-tree-item-disabled-color - Text color for disabled item.\r\n * @cssprop --m3e-tree-item-disabled-color-opacity - Opacity for disabled item text color.\r\n */\r\n@customElement(\"m3e-tree-item\")\r\nexport class M3eTreeItemElement extends Selected(Disabled(AttachInternals(Role(LitElement, \"treeitem\"), true))) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n flex: none;\r\n outline: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n .base {\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n height: calc(var(--m3e-tree-item-height, 3rem) + ${DesignToken.density.calc(-3)});\r\n padding-inline: var(--m3e-tree-item-padding, 1rem);\r\n font-size: var(--m3e-tree-item-font-size, ${DesignToken.typescale.standard.label.large.fontSize});\r\n font-weight: var(--m3e-tree-item-font-weight, ${DesignToken.typescale.standard.label.large.fontWeight});\r\n line-height: var(--m3e-tree-item-line-height, ${DesignToken.typescale.standard.label.large.lineHeight});\r\n letter-spacing: var(--m3e-tree-item-tracking, ${DesignToken.typescale.standard.label.large.tracking});\r\n transition: ${unsafeCSS(\r\n `color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard},\r\n background-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n .base,\r\n .focus-ring {\r\n border-radius: var(--m3e-tree-item-shape, ${DesignToken.shape.corner.none});\r\n }\r\n .label {\r\n flex: 1 1 auto;\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n overflow: hidden;\r\n vertical-align: middle;\r\n }\r\n .checkbox {\r\n flex: none;\r\n margin-inline-end: 0.5rem;\r\n }\r\n .icon,\r\n .toggle {\r\n flex: none;\r\n align-items: center;\r\n justify-content: center;\r\n position: relative;\r\n vertical-align: middle;\r\n margin-inline-end: 0.5rem;\r\n }\r\n .toggle {\r\n display: var(--_tree-item-toggle-display, none);\r\n }\r\n :host(:not(:is(:state(--with-icon), :--with-icon))) .icon {\r\n display: none;\r\n }\r\n .inset {\r\n margin-inline-start: calc(var(--m3e-tree-item-inset, 2rem) * var(--_tree-item-level, 0));\r\n }\r\n :host([open]) .toggle-icon {\r\n transform: rotate(90deg);\r\n }\r\n :host(:not(:is(:state(--with-items), :--with-items))) .toggle {\r\n visibility: hidden;\r\n }\r\n :host(:not(:is(:state(--with-items), :--with-items))) .group {\r\n display: none;\r\n }\r\n ::slotted([slot=\"selected-icon\"]),\r\n ::slotted([slot=\"icon\"]),\r\n ::slotted([slot=\"toggle-icon\"]),\r\n ::slotted([slot=\"open-toggle-icon\"]),\r\n .toggle-icon {\r\n vertical-align: middle;\r\n width: 1em;\r\n height: 1em;\r\n font-size: var(--m3e-tree-item-icon-size, 1.5rem);\r\n }\r\n .toggle-icon {\r\n transition: ${unsafeCSS(`transform var(--m3e-collapsible-animation-duration, ${DesignToken.motion.duration.medium1})\r\n ${DesignToken.motion.easing.standard}`)};\r\n }\r\n :host(:is(:state(--with-open-toggle-icon), :--with-open-toggle-icon)[open]) slot[name=\"toggle-icon\"],\r\n :host(:is(:state(--with-open-toggle-icon), :--with-open-toggle-icon):not([open])) slot[name=\"open-toggle-icon\"] {\r\n display: none;\r\n }\r\n :host(:not(:disabled)) .base {\r\n cursor: pointer;\r\n }\r\n :host(:not(:disabled)) .base {\r\n color: var(--m3e-tree-item-label-color, ${DesignToken.color.onSurfaceVariant});\r\n }\r\n :host(:disabled) .base {\r\n color: color-mix(\r\n in srgb,\r\n var(--m3e-tree-item-disabled-color, ${DesignToken.color.onSurface})\r\n var(--m3e-tree-item-disabled-color-opacity, 38%),\r\n transparent\r\n );\r\n }\r\n :host([selected]:not(:disabled)) .base {\r\n color: var(--m3e-tree-item-selected-label-color, ${DesignToken.color.onSecondaryContainer});\r\n background-color: var(--m3e-tree-item-selected-container-color, ${DesignToken.color.secondaryContainer});\r\n --m3e-state-layer-focus-color: var(\r\n --m3e-tree-item-selected-container-focus-color,\r\n ${DesignToken.color.onSecondaryContainer}\r\n );\r\n --m3e-state-layer-hover-color: var(\r\n --m3e-tree-item-selected-container-hover-color,\r\n ${DesignToken.color.onSecondaryContainer}\r\n );\r\n --m3e-ripple-color: var(--m3e-tree-item-selected-ripple-color, ${DesignToken.color.onSecondaryContainer});\r\n }\r\n :host(:not([selected]):not(:disabled)) .base {\r\n --m3e-state-layer-focus-color: var(\r\n --m3e-tree-item-unselected-container-focus-color,\r\n ${DesignToken.color.onSurface}\r\n );\r\n --m3e-state-layer-hover-color: var(\r\n --m3e-tree-item-unselected-container-hover-color,\r\n ${DesignToken.color.onSurface}\r\n );\r\n --m3e-ripple-color: var(--m3e-tree-item-unselected-ripple-color, ${DesignToken.color.onSurface});\r\n }\r\n .state-layer {\r\n margin-inline: auto;\r\n }\r\n ::slotted(a[slot=\"label\"]) {\r\n all: unset;\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base,\r\n .toggle,\r\n .state-layer {\r\n transition: none !important;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n .base,\r\n .state-layer {\r\n transition: none !important;\r\n }\r\n\r\n :host(:disabled) .base {\r\n color: GrayText;\r\n }\r\n :host(:not(:disabled)) .base {\r\n color: CanvasText;\r\n background-color: Canvas;\r\n }\r\n :host([selected]:not(:is(:state(--multi), :--multi)):not(:disabled)) slot[name=\"icon\"],\r\n :host([selected]:not(:is(:state(--multi), :--multi)):not(:disabled)) slot[name=\"label\"] {\r\n color: Highlight;\r\n }\r\n }\r\n `;\r\n\r\n /** @internal */ @query(\".state-layer\") readonly stateLayer?: M3eStateLayerElement;\r\n /** @internal */ @query(\".focus-ring\") readonly focusRing?: M3eFocusRingElement;\r\n /** @internal */ @query(\".ripple\") readonly ripple?: M3eRippleElement;\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n\r\n /** @private */ @state() private _hasChildItems = false;\r\n /** @private */ @state() private _multi = false;\r\n /** @private */\r\n readonly #treeMutationController = new MutationController(this, {\r\n target: null,\r\n skipInitial: true,\r\n config: {\r\n attributeFilter: [\"multi\"],\r\n },\r\n callback: () => this.#handleTreeChange(),\r\n });\r\n\r\n /** @private */ #items: M3eTreeItemElement[] = [];\r\n /** @private */ #tree: M3eTreeElement | null = null;\r\n /** @private */ #path = new Array<M3eTreeItemElement>();\r\n /** @private */ #link: HTMLAnchorElement | null = null;\r\n\r\n /**\r\n * Whether the item is expanded.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n\r\n /**\r\n * A value indicating whether the element's selected / checked state is indeterminate.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) indeterminate = false;\r\n\r\n /** A reference to the nested `HTMLAnchorElement`. */\r\n get link(): HTMLAnchorElement | null {\r\n return this.#link;\r\n }\r\n\r\n /** A reference to the element used to present the label of the item. */\r\n get label(): HTMLElement | null {\r\n return this._base ?? null;\r\n }\r\n\r\n /** Whether the item is visible. */\r\n get visible(): boolean {\r\n return !this.#path.some((x) => !x.open);\r\n }\r\n\r\n /** The full path of the item, starting with the top-most ancestor, including this item. */\r\n get path(): ReadonlyArray<M3eTreeItemElement> {\r\n return [...this.#path, this];\r\n }\r\n\r\n /** Whether the item has child items. */\r\n get hasChildItems(): boolean {\r\n return this._hasChildItems;\r\n }\r\n\r\n /** The parenting item. */\r\n get parentItem(): M3eTreeItemElement | null {\r\n return this.#path[this.#path.length - 1] ?? null;\r\n }\r\n\r\n /** The items that immediately descend from this item. */\r\n get childItems(): readonly M3eTreeItemElement[] {\r\n return this.#items;\r\n }\r\n\r\n /** The one-based level of the item. */\r\n get level(): number {\r\n return this.#path.length + 1;\r\n }\r\n\r\n /**\r\n * Expands this item, and optionally, all descendants.\r\n * @param {boolean} [descendants=false] Whether to expand all descendants.\r\n */\r\n expand(descendants: boolean = false): void {\r\n if (this.hasChildItems) {\r\n this.open = true;\r\n if (descendants) {\r\n this.childItems.forEach((x) => x.expand(true));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Collapses this item, and optionally, all descendants.\r\n * @param {boolean} [descendants=false] Whether to collapse all descendants.\r\n */\r\n collapse(descendants: boolean = false): void {\r\n if (this.hasChildItems) {\r\n this.open = false;\r\n if (descendants) {\r\n this.childItems.forEach((x) => x.collapse(true));\r\n }\r\n }\r\n }\r\n\r\n /** Toggles the expanded state of the item. */\r\n toggle(): void {\r\n if (this.hasChildItems) {\r\n this.open = !this.open;\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n this.#path.length = 0;\r\n for (\r\n let item = this.parentElement?.closest(\"m3e-tree-item\");\r\n item;\r\n item = item.parentElement?.closest(\"m3e-tree-item\")\r\n ) {\r\n this.#path.push(item);\r\n }\r\n this.#path.reverse();\r\n\r\n this.style.setProperty(\"--_tree-item-level\", `${this.level - 1}`);\r\n this.#tree = this.closest(\"m3e-tree\");\r\n if (this.#tree) {\r\n this.#treeMutationController.observe(this.#tree);\r\n this.#handleTreeChange();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this.#path.length = 0;\r\n\r\n if (this.#tree) {\r\n this.#treeMutationController.unobserve(this.#tree);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues): void {\r\n super.update(changedProperties);\r\n\r\n if (\r\n changedProperties.has(\"selected\") ||\r\n changedProperties.has(\"indeterminate\") ||\r\n changedProperties.has(\"_multi\")\r\n ) {\r\n if (this.#tree?.multi) {\r\n this.ariaSelected = null;\r\n this.ariaChecked = this.indeterminate ? \"mixed\" : `${this.selected}`;\r\n } else {\r\n this.ariaSelected = `${this.selected}`;\r\n }\r\n }\r\n\r\n if (changedProperties.has(\"selected\")) {\r\n for (const icon of this.querySelectorAll(\r\n \":scope > m3e-icon[slot]:not([slot='toggle-icon']):not([slot='open-toggle-icon'])\",\r\n )) {\r\n icon.toggleAttribute(\"filled\", this.selected);\r\n }\r\n }\r\n\r\n if (changedProperties.has(\"open\") || changedProperties.has(\"_hasChildItems\")) {\r\n this.ariaExpanded = this._hasChildItems ? `${this.open}` : null;\r\n }\r\n\r\n if ((changedProperties.has(\"_hasChildItems\") && this.disabled) || changedProperties.has(\"disabled\")) {\r\n this.#items.forEach((x) => (x.disabled = this.disabled));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n\r\n const base = this._base;\r\n if (base) {\r\n [this.focusRing, this.stateLayer, this.ripple].forEach((x) => x?.attach(base));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\" @click=\"${this.#handleClick}\">\r\n <m3e-state-layer class=\"state-layer\" ?disabled=\"${this.disabled}\"></m3e-state-layer>\r\n <m3e-focus-ring class=\"focus-ring\" inward ?disabled=\"${this.disabled}\"></m3e-focus-ring>\r\n <m3e-ripple class=\"ripple\" ?disabled=\"${this.disabled}\"></m3e-ripple>\r\n <div aria-hidden=\"true\" class=\"inset\"></div>\r\n <div aria-hidden=\"true\" class=\"toggle\">\r\n <slot name=\"toggle-icon\">\r\n <svg class=\"toggle-icon\" viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\" />\r\n </svg>\r\n </slot>\r\n <slot name=\"open-toggle-icon\" @slotchange=\"${this.#handleOpenToggleIconSlotChange}\"></slot>\r\n </div>\r\n ${this._multi\r\n ? html`<m3e-pseudo-checkbox\r\n class=\"checkbox\"\r\n ?checked=\"${this.selected}\"\r\n ?indeterminate=\"${this.indeterminate}\"\r\n ?disabled=\"${this.disabled}\"\r\n @click=\"${this.#handleCheckboxClick}\"\r\n >\r\n </m3e-pseudo-checkbox>`\r\n : nothing}\r\n <div class=\"icon\" aria-hidden=\"true\">${this.#renderIcon()}</div>\r\n <div class=\"label\">\r\n <slot name=\"label\" @slotchange=\"${this.#handleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n <m3e-collapsible\r\n class=\"group\"\r\n role=\"group\"\r\n aria-hidden=\"${ifDefined(this._hasChildItems ? undefined : \"true\")}\"\r\n ?open=\"${this.open}\"\r\n @opening=\"${this.#handleCollapsibleEvent}\"\r\n @opened=\"${this.#handleCollapsibleEvent}\"\r\n @closing=\"${this.#handleCollapsibleEvent}\"\r\n @closed=\"${this.#handleCollapsibleEvent}\"\r\n >\r\n <slot @slotchange=\"${this.#handleItemSlotChange}\"></slot>\r\n </m3e-collapsible>`;\r\n }\r\n\r\n /** @private */\r\n #renderIcon(): unknown {\r\n const icon = html`<slot name=\"icon\" @slotchange=\"${this.#handleIconSlotChange}\"></slot>`;\r\n return this.selected && !this.hasChildItems\r\n ? html`<slot name=\"selected-icon\" @slotchange=\"${this.#handleIconSlotChange}\">${icon}</slot>`\r\n : icon;\r\n }\r\n\r\n /** @private */\r\n #handleOpenToggleIconSlotChange(e: Event): void {\r\n setCustomState(this, \"--with-open-toggle-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleIconSlotChange(e: Event): void {\r\n setCustomState(this, \"--with-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleSlotChange(e: Event): void {\r\n this.#link =\r\n (<HTMLSlotElement>e.target).assignedElements({ flatten: true }).find((x) => x instanceof HTMLAnchorElement) ??\r\n null;\r\n\r\n this.#link?.setAttribute(\"tabindex\", \"-1\");\r\n }\r\n\r\n /** @private */\r\n #handleItemSlotChange(e: Event): void {\r\n this.#items = (<HTMLSlotElement>e.target)\r\n .assignedElements({ flatten: true })\r\n .filter((x) => x instanceof M3eTreeItemElement);\r\n\r\n const hadChildItems = this._hasChildItems;\r\n this._hasChildItems = this.#items.length > 0;\r\n setCustomState(this, \"--with-items\", this._hasChildItems);\r\n\r\n if (hadChildItems || this._hasChildItems) {\r\n if (this._multi && this.#tree?.cascade) {\r\n let anySelected = false,\r\n anyDeselected = false;\r\n\r\n for (const child of this.querySelectorAll(\"m3e-tree-item\")) {\r\n anySelected = anySelected || child.selected;\r\n anyDeselected = anyDeselected || !child.selected;\r\n if (anySelected && anyDeselected) {\r\n break;\r\n }\r\n }\r\n if (anyDeselected) {\r\n this.#tree?.[selectionManager].deselect(this);\r\n this.indeterminate = anySelected;\r\n } else {\r\n this.#tree?.[selectionManager].select(this, false);\r\n this.indeterminate = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTreeChange(): void {\r\n this._multi = this.#tree?.multi === true;\r\n setCustomState(this, \"--multi\", this._multi);\r\n }\r\n\r\n /** @private */\r\n #handleClick(): void {\r\n if (this.disabled) return;\r\n\r\n this.#tree?.[selectionManager].setActiveItem(this);\r\n if (!this._hasChildItems) {\r\n if (this._multi) {\r\n if (this.selected) {\r\n this.#tree?.deselect(this);\r\n } else {\r\n this.#tree?.select(this);\r\n }\r\n } else {\r\n this.#tree?.select(this);\r\n }\r\n this.#link?.click();\r\n } else {\r\n if (!this._multi) {\r\n this.#tree?.select(this);\r\n }\r\n this.toggle();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleCheckboxClick(e: Event): void {\r\n e.stopPropagation();\r\n\r\n if (!this.selected) {\r\n this.#tree?.select(this);\r\n } else {\r\n this.#tree?.deselect(this);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleCollapsibleEvent(e: Event): void {\r\n e.stopPropagation();\r\n this.dispatchEvent(new Event(e.type, { bubbles: true }));\r\n }\r\n}\r\n\r\ninterface M3eTreeItemElementEventMap extends HTMLElementEventMap {\r\n opening: Event;\r\n opened: Event;\r\n closing: Event;\r\n closed: Event;\r\n}\r\n\r\nexport interface M3eTreeItemElement {\r\n addEventListener<K extends keyof M3eTreeItemElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTreeItemElement, ev: M3eTreeItemElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eTreeItemElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTreeItemElement, ev: M3eTreeItemElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-tree-item\": M3eTreeItemElement;\r\n }\r\n}\r\n","import { css, CSSResultGroup, html, LitElement, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n customElement,\r\n DesignToken,\r\n FocusController,\r\n forcedColorsActive,\r\n PressedController,\r\n registerStyleSheet,\r\n Role,\r\n scrollIntoViewIfNeeded,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { SelectionManager, selectionManager } from \"@m3e/web/core/a11y\";\r\nimport { M3eDirectionality } from \"@m3e/web/core/bidi\";\r\n\r\nimport { M3eTreeItemElement } from \"./TreeItemElement\";\r\n\r\n/**\r\n * Presents hierarchical data in a tree structure.\r\n *\r\n * @description\r\n * The `m3e-tree` component presents hierarchical data in a structure that users can\r\n * navigate, with nested levels that open and collapse as needed.\r\n *\r\n * @example\r\n * The following example illustrates a simple tree with nested child items.\r\n * ```html\r\n * <m3e-tree>\r\n * <m3e-tree-item open>\r\n * <span slot=\"label\">Getting Started</span>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Overview</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Installation</span>\r\n * </m3e-tree-item>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Components</span>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Button</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Card</span>\r\n * </m3e-tree-item>\r\n * </m3e-tree-item>\r\n * </m3e-tree>\r\n * ```\r\n *\r\n * @example\r\n * The next example demonstrates multi-selection with cascading selection state.\r\n * ```html\r\n * <m3e-tree multi cascade>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Fruits</span>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Apples</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Oranges</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Bananas</span>\r\n * </m3e-tree-item>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Vegetables</span>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Carrots</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Broccoli</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Spinach</span>\r\n * </m3e-tree-item>\r\n * </m3e-tree-item>\r\n * </m3e-tree>\r\n * ```\r\n *\r\n * @tag m3e-tree\r\n *\r\n * @slot - Renders the items of the tree.\r\n *\r\n * @attr multi - Whether multiple items can be selected.\r\n * @attr cascade -Whether multiple item selection cascades to child items.\r\n *\r\n * @fires change - Emitted when the selected state changes.\r\n *\r\n * @cssprop --m3e-tree-scrollbar-width - Width of the tree scrollbar.\r\n * @cssprop --m3e-tree-scrollbar-color - Color of the tree scrollbar.\r\n */\r\n@customElement(\"m3e-tree\")\r\nexport class M3eTreeElement extends Role(LitElement, \"tree\") {\r\n static {\r\n // NOTE: unsafeCSS used here due to linting error with use of '>'.\r\n registerStyleSheet(css`\r\n ${unsafeCSS(`m3e-tree:has(> m3e-tree-item:is(:state(--with-items), :--with-items)) {\r\n --_tree-item-toggle-display: flex;\r\n }`)}\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 outline: none;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n min-height: 0;\r\n scrollbar-width: ${DesignToken.scrollbar.width};\r\n scrollbar-color: ${DesignToken.scrollbar.color};\r\n }\r\n .base {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n min-height: inherit;\r\n box-sizing: border-box;\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n /** @private */ #ignoreFocusVisible = false;\r\n /** @private */ #ignoreFocus = false;\r\n\r\n /** @private */\r\n readonly [selectionManager] = new SelectionManager<M3eTreeItemElement>()\r\n .withVerticalOrientation()\r\n .withHomeAndEnd()\r\n .withPageUpAndDown()\r\n .withTypeahead()\r\n .withSkipPredicate((x) => x.disabled || !x.visible)\r\n .disableRovingTabIndex()\r\n .onActiveItemChange(() => {\r\n if (this[selectionManager].activeItem) {\r\n this.#activateItem(this[selectionManager].activeItem);\r\n }\r\n });\r\n\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #keyUpHandler = () => this.#handleKeyUp();\r\n /** @private */ readonly #pointerDownHandler = (e: Event) => this.#handlePointerDown(e);\r\n\r\n constructor() {\r\n super();\r\n\r\n new PressedController(this, { callback: (pressed) => (this.#ignoreFocus = pressed) });\r\n new FocusController(this, {\r\n callback: () => {\r\n if (!this.#ignoreFocus) {\r\n this.#updateFocusVisible();\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Whether multiple items can be selected.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) multi = false;\r\n\r\n /**\r\n * Whether multiple item selection cascades to child items.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) cascade = false;\r\n\r\n /** The selected items of the tree. */\r\n get selected(): readonly M3eTreeItemElement[] {\r\n return this[selectionManager].selectedItems;\r\n }\r\n\r\n /** All the items of the tree. */\r\n get items(): readonly M3eTreeItemElement[] {\r\n return this[selectionManager].items;\r\n }\r\n\r\n /**\r\n * Expands all items, and optionally, all descendants.\r\n * @param {boolean} [descendants=false] Whether to expand all descendants.\r\n */\r\n expand(descendants?: boolean): void;\r\n\r\n /**\r\n * Expands the specified items, and optionally, all descendants.\r\n * @param {M3eTreeItemElement[]} items The items to expand.\r\n * @param {boolean} [descendants=false] Whether to expand all descendants.\r\n */\r\n expand(items: M3eTreeItemElement[], descendants?: boolean): void;\r\n\r\n /** @internal */\r\n expand(itemsOrDescendants?: M3eTreeItemElement[] | boolean, maybeDescendants: boolean = false): void {\r\n const items = Array.isArray(itemsOrDescendants) ? itemsOrDescendants : this[selectionManager].items;\r\n const descendants = typeof itemsOrDescendants === \"boolean\" ? itemsOrDescendants : maybeDescendants;\r\n items.forEach((x) => x.expand(descendants));\r\n }\r\n\r\n /**\r\n * Collapses all items, and optionally, all descendants.\r\n * @param {boolean} [descendants=false] Whether to collapse all descendants.\r\n */\r\n collapse(descendants?: boolean): void;\r\n\r\n /**\r\n * Collapses the specified items, and optionally, all descendants.\r\n * @param {M3eTreeItemElement[]} items The items to collapse.\r\n * @param {boolean} [descendants=false] Whether to collapse all descendants.\r\n */\r\n collapse(items: M3eTreeItemElement[], descendants?: boolean): void;\r\n\r\n /** @internal */\r\n collapse(itemsOrDescendants?: M3eTreeItemElement[] | boolean, maybeDescendants: boolean = false): void {\r\n const items = Array.isArray(itemsOrDescendants) ? itemsOrDescendants : this[selectionManager].items;\r\n const descendants = typeof itemsOrDescendants === \"boolean\" ? itemsOrDescendants : maybeDescendants;\r\n\r\n items.forEach((x) => x.collapse(descendants));\r\n const activeItem = this[selectionManager].activeItem;\r\n if (activeItem && !activeItem.visible) {\r\n for (let parent = activeItem.parentItem; parent; parent = parent.parentItem) {\r\n if (parent.visible) {\r\n this[selectionManager].setActiveItem(parent);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Selects the specified item.\r\n * @param {M3eTreeItemElement} item The item to select.\r\n * @param {boolean} [activate=false] A value indicating whether to activate the item.\r\n */\r\n select(item: M3eTreeItemElement, activate: boolean = false): void {\r\n this[selectionManager].select(item, activate);\r\n item.indeterminate = false;\r\n if (this.multi && this.cascade) {\r\n if (item.hasChildItems) {\r\n item.childItems.forEach((x) => this.select(x));\r\n }\r\n\r\n this.#cascadeAncestorSelected(item);\r\n }\r\n if (activate) {\r\n this.#activateItem(item);\r\n }\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /**\r\n * Deselects the specified item.\r\n * @param {M3eTreeItemElement} item The item to deselect.\r\n */\r\n deselect(item: M3eTreeItemElement): void {\r\n this[selectionManager].deselect(item);\r\n item.indeterminate = false;\r\n if (this.multi && this.cascade) {\r\n if (item.hasChildItems) {\r\n item.childItems.forEach((x) => this.deselect(x));\r\n }\r\n\r\n this.#cascadeAncestorSelected(item);\r\n }\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n this.setAttribute(\"tabindex\", \"0\");\r\n\r\n this.addEventListener(\"keydown\", this.#keyDownHandler);\r\n this.addEventListener(\"keyup\", this.#keyUpHandler);\r\n this.addEventListener(\"pointerdown\", this.#pointerDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.removeEventListener(\"keyup\", this.#keyUpHandler);\r\n this.removeEventListener(\"pointerdown\", this.#pointerDownHandler);\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(\"multi\")) {\r\n this[selectionManager].multi = this.multi;\r\n if (this.multi) {\r\n this.setAttribute(\"aria-multiselectable\", \"true\");\r\n } else {\r\n this.removeAttribute(\"aria-multiselectable\");\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n <slot @slotchange=\"${this.#handleSlotChange}\"></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleSlotChange(): void {\r\n const { added } = this[selectionManager].setItems([...this.querySelectorAll(\"m3e-tree-item\")]);\r\n for (const item of added) {\r\n item.id = item.id || `m3e-tree-item-${M3eTreeElement.__nextId++}`;\r\n }\r\n if (this[selectionManager].activeItem) {\r\n this.setAttribute(\"aria-activedescendant\", this[selectionManager].activeItem.id);\r\n this.#updateFocusVisible();\r\n } else {\r\n this.removeAttribute(\"aria-activedescendant\");\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n this.#ignoreFocusVisible = false;\r\n this.#updateFocusVisible();\r\n\r\n const item = this[selectionManager].activeItem;\r\n if (e.defaultPrevented || !item || item.disabled) return;\r\n\r\n switch (e.key) {\r\n case \"Enter\":\r\n if (!this.multi) {\r\n if (!item.selected) {\r\n this.select(item);\r\n item.link?.click();\r\n }\r\n } else {\r\n if (item.ripple && !item.ripple.visible) {\r\n item.ripple.centered = true;\r\n item.ripple.show(0, 0, true);\r\n item.ripple.centered = false;\r\n }\r\n item.link?.click();\r\n }\r\n break;\r\n\r\n case \" \":\r\n e.preventDefault();\r\n\r\n if (this.multi) {\r\n if (item.selected) {\r\n this.deselect(item);\r\n } else {\r\n this.select(item);\r\n }\r\n } else {\r\n if (item.ripple && !item.ripple.visible) {\r\n item.ripple.centered = true;\r\n item.ripple.show(0, 0, true);\r\n item.ripple.centered = false;\r\n }\r\n this.select(item);\r\n item.link?.click();\r\n }\r\n\r\n break;\r\n\r\n case \"*\":\r\n e.preventDefault();\r\n item.expand(true);\r\n break;\r\n\r\n case \"Left\":\r\n case \"ArrowLeft\":\r\n e.preventDefault();\r\n if (M3eDirectionality.current === \"ltr\") {\r\n if (item.hasChildItems && item.open) {\r\n requestAnimationFrame(() => item.collapse());\r\n } else {\r\n const parent = item.parentItem;\r\n if (parent) {\r\n this[selectionManager].setActiveItem(parent);\r\n }\r\n }\r\n } else if (item.hasChildItems && !item.open) {\r\n item.expand();\r\n }\r\n\r\n break;\r\n\r\n case \"Right\":\r\n case \"ArrowRight\":\r\n e.preventDefault();\r\n if (M3eDirectionality.current === \"rtl\") {\r\n if (item.hasChildItems && item.open) {\r\n requestAnimationFrame(() => item.collapse());\r\n } else {\r\n const parent = item.parentItem;\r\n if (parent) {\r\n this[selectionManager].setActiveItem(parent);\r\n }\r\n }\r\n } else if (item.hasChildItems && !item.open) {\r\n item.expand();\r\n }\r\n break;\r\n\r\n default:\r\n this[selectionManager].onKeyDown(e);\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyUp(): void {\r\n const item = this[selectionManager].activeItem;\r\n if (item && !item.disabled && item.ripple?.visible) {\r\n item.ripple.hide();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handlePointerDown(e: Event): void {\r\n if (!e.defaultPrevented && !this.#ignoreFocusVisible && !forcedColorsActive()) {\r\n this.#ignoreFocusVisible = true;\r\n\r\n const item = e\r\n .composedPath()\r\n .reverse()\r\n .find((x) => x instanceof M3eTreeItemElement);\r\n\r\n if (item && !item.disabled) {\r\n this.#updateItemFocusVisible(item, true, false);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #activateItem(item: M3eTreeItemElement): void {\r\n this.setAttribute(\"aria-activedescendant\", item.id);\r\n if (item.label) {\r\n scrollIntoViewIfNeeded(item.label, this, { block: \"nearest\", behavior: \"smooth\" });\r\n }\r\n this.#updateFocusVisible();\r\n }\r\n\r\n /** @private */\r\n #updateFocusVisible(): void {\r\n const focusWithin = this.matches(\":focus-within\");\r\n const focused = focusWithin || this.matches(\":focus\");\r\n const focusVisible =\r\n focused &&\r\n !this.#ignoreFocusVisible &&\r\n (forcedColorsActive() ||\r\n this.matches(\":focus-visible\") ||\r\n (focusWithin && this.querySelector(\"a:focus-visible\") !== null));\r\n\r\n this[selectionManager].items.forEach((x) => {\r\n const active = x === this[selectionManager].activeItem;\r\n this.#updateItemFocusVisible(x, active && focused, active && focusVisible);\r\n });\r\n }\r\n\r\n /** @private */\r\n #updateItemFocusVisible(item: M3eTreeItemElement, focused: boolean, focusVisible: boolean): void {\r\n if (focused && focusVisible) {\r\n item.stateLayer?.show(\"focused\");\r\n } else {\r\n item.stateLayer?.hide(\"focused\");\r\n }\r\n if (focusVisible) {\r\n item.focusRing?.show();\r\n } else {\r\n item.focusRing?.hide();\r\n }\r\n }\r\n\r\n /** @private */\r\n #cascadeAncestorSelected(item: M3eTreeItemElement): void {\r\n for (let parent = item.parentItem; parent; parent = parent.parentItem) {\r\n let hasSelected = false,\r\n hasDeselected = false;\r\n\r\n for (const child of parent.querySelectorAll(\"m3e-tree-item\")) {\r\n hasSelected = hasSelected || child.selected;\r\n hasDeselected = hasDeselected || !child.selected;\r\n if (hasSelected && hasDeselected) {\r\n break;\r\n }\r\n }\r\n if (hasDeselected) {\r\n this[selectionManager].deselect(parent);\r\n parent.indeterminate = hasSelected;\r\n } else {\r\n this[selectionManager].select(parent, false);\r\n parent.indeterminate = false;\r\n }\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-tree\": M3eTreeElement;\r\n }\r\n}\r\n"],"names":["M3eTreeItemElement","Selected","Disabled","AttachInternals","Role","LitElement","constructor","_hasChildItems","_multi","_M3eTreeItemElement_treeMutationController","set","MutationController","target","skipInitial","config","attributeFilter","callback","__classPrivateFieldGet","_M3eTreeItemElement_instances","_M3eTreeItemElement_handleTreeChange","call","_M3eTreeItemElement_items","_M3eTreeItemElement_tree","_M3eTreeItemElement_path","Array","_M3eTreeItemElement_link","open","indeterminate","link","label","_base","visible","some","x","path","hasChildItems","parentItem","length","childItems","level","expand","descendants","forEach","collapse","toggle","connectedCallback","item","parentElement","closest","push","reverse","style","setProperty","__classPrivateFieldSet","observe","disconnectedCallback","unobserve","update","changedProperties","has","multi","ariaSelected","ariaChecked","selected","icon","querySelectorAll","toggleAttribute","ariaExpanded","disabled","firstUpdated","_changedProperties","base","focusRing","stateLayer","ripple","attach","render","html","_M3eTreeItemElement_handleClick","_M3eTreeItemElement_handleOpenToggleIconSlotChange","_M3eTreeItemElement_handleCheckboxClick","nothing","_M3eTreeItemElement_renderIcon","_M3eTreeItemElement_handleSlotChange","ifDefined","undefined","_M3eTreeItemElement_handleCollapsibleEvent","_M3eTreeItemElement_handleItemSlotChange","_M3eTreeItemElement_handleIconSlotChange","e","setCustomState","hasAssignedNodes","assignedElements","flatten","find","HTMLAnchorElement","setAttribute","filter","M3eTreeItemElement_1","hadChildItems","cascade","anySelected","anyDeselected","child","selectionManager","deselect","select","setActiveItem","click","stopPropagation","dispatchEvent","Event","type","bubbles","styles","css","DesignToken","density","calc","typescale","standard","large","fontSize","fontWeight","lineHeight","tracking","unsafeCSS","motion","duration","short4","easing","shape","corner","none","medium1","color","onSurfaceVariant","onSurface","onSecondaryContainer","secondaryContainer","__decorate","query","prototype","state","property","Boolean","reflect","customElement","M3eTreeElement","M3eTreeElement_1","_M3eTreeElement_ignoreFocusVisible","_M3eTreeElement_ignoreFocus","_b","SelectionManager","withVerticalOrientation","withHomeAndEnd","withPageUpAndDown","withTypeahead","withSkipPredicate","disableRovingTabIndex","onActiveItemChange","activeItem","_M3eTreeElement_instances","_M3eTreeElement_activateItem","_M3eTreeElement_keyDownHandler","_M3eTreeElement_keyUpHandler","_M3eTreeElement_handleKeyUp","_M3eTreeElement_pointerDownHandler","PressedController","pressed","FocusController","_M3eTreeElement_updateFocusVisible","selectedItems","items","itemsOrDescendants","maybeDescendants","isArray","parent","activate","_M3eTreeElement_cascadeAncestorSelected","addEventListener","removeEventListener","willUpdate","removeAttribute","_M3eTreeElement_handleSlotChange","added","setItems","id","__nextId","defaultPrevented","key","centered","show","preventDefault","M3eDirectionality","current","requestAnimationFrame","onKeyDown","hide","forcedColorsActive","composedPath","_M3eTreeElement_updateItemFocusVisible","scrollIntoViewIfNeeded","block","behavior","focusWithin","matches","focused","focusVisible","querySelector","active","hasSelected","hasDeselected","registerStyleSheet","scrollbar","width"],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sources":["../../src/tree/TreeItemElement.ts","../../src/tree/TreeElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { 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 AttachInternals,\r\n customElement,\r\n DesignToken,\r\n Disabled,\r\n hasAssignedNodes,\r\n M3eFocusRingElement,\r\n M3eRippleElement,\r\n M3eStateLayerElement,\r\n MutationController,\r\n Role,\r\n Selected,\r\n setCustomState,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { selectionManager } from \"@m3e/web/core/a11y\";\r\n\r\nimport type { M3eTreeElement } from \"./TreeElement\";\r\n\r\n/**\r\n * An expandable item in a tree.\r\n *\r\n * @description\r\n * The `m3e-tree-item` component represents a single item within an `m3e-tree`.\r\n * It supports nested child items, expand/collapse behavior, selection,\r\n * disabled state, and interaction styling. Items may contain a child group\r\n * that hosts additional `m3e-tree-item` elements.\r\n *\r\n * @tag m3e-tree-item\r\n *\r\n * @slot - Renders the nested child items.\r\n * @slot label - Renders the label of the item.\r\n * @slot icon - Renders the icon of the item.\r\n * @slot selected-icon - Renders the icon of the item when selected.\r\n * @slot toggle-icon - Renders the toggle icon.\r\n * @slot open-toggle-icon - Renders the toggle icon when selected.\r\n *\r\n * @attr disabled - Whether the element is disabled.\r\n * @attr indeterminate - Whether the element's checked state is indeterminate.\r\n * @attr open - Whether the item is expanded.\r\n * @attr selected - Whether the item is selected.\r\n *\r\n * @fires opening - Dispatched when the item begins to open.\r\n * @fires opened - Dispatched when the item has opened.\r\n * @fires closing - Dispatched when the item begins to close.\r\n * @fires closed - Dispatched when the item has closed.\r\n * @fires click - Dispatched when the element is clicked.\r\n *\r\n * @cssprop --m3e-tree-item-font-size - Font size for the item label.\r\n * @cssprop --m3e-tree-item-font-weight - Font weight for the item label.\r\n * @cssprop --m3e-tree-item-line-height - Line height for the item label.\r\n * @cssprop --m3e-tree-item-tracking - Letter spacing for the item label.\r\n * @cssprop --m3e-tree-item-padding - Inline padding for the item.\r\n * @cssprop --m3e-tree-item-height - Height of the item.\r\n * @cssprop --m3e-tree-item-shape - Border radius of the item and focus ring.\r\n * @cssprop --m3e-tree-item-icon-size - Size of the icon.\r\n * @cssprop --m3e-tree-item-inset - Indentation for nested items.\r\n * @cssprop --m3e-tree-item-label-color - Text color for the item label.\r\n * @cssprop --m3e-tree-item-selected-label-color - Text color for selected item label.\r\n * @cssprop --m3e-tree-item-selected-container-color - Background color for selected item.\r\n * @cssprop --m3e-tree-item-selected-container-focus-color - Focus color for selected item container.\r\n * @cssprop --m3e-tree-item-selected-container-hover-color - Hover color for selected item container.\r\n * @cssprop --m3e-tree-item-selected-ripple-color - Ripple color for selected item.\r\n * @cssprop --m3e-tree-item-unselected-container-focus-color - Focus color for unselected item container.\r\n * @cssprop --m3e-tree-item-unselected-container-hover-color - Hover color for unselected item container.\r\n * @cssprop --m3e-tree-item-unselected-ripple-color - Ripple color for unselected item.\r\n * @cssprop --m3e-tree-item-disabled-color - Text color for disabled item.\r\n * @cssprop --m3e-tree-item-disabled-color-opacity - Opacity for disabled item text color.\r\n */\r\n@customElement(\"m3e-tree-item\")\r\nexport class M3eTreeItemElement extends Selected(Disabled(AttachInternals(Role(LitElement, \"treeitem\"), true))) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n flex: none;\r\n outline: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n .base {\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n height: calc(var(--m3e-tree-item-height, 3rem) + ${DesignToken.density.calc(-3)});\r\n padding-inline: var(--m3e-tree-item-padding, 1rem);\r\n font-size: var(--m3e-tree-item-font-size, ${DesignToken.typescale.standard.label.large.fontSize});\r\n font-weight: var(--m3e-tree-item-font-weight, ${DesignToken.typescale.standard.label.large.fontWeight});\r\n line-height: var(--m3e-tree-item-line-height, ${DesignToken.typescale.standard.label.large.lineHeight});\r\n letter-spacing: var(--m3e-tree-item-tracking, ${DesignToken.typescale.standard.label.large.tracking});\r\n transition: ${unsafeCSS(\r\n `color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard},\r\n background-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n .base,\r\n .focus-ring {\r\n border-radius: var(--m3e-tree-item-shape, ${DesignToken.shape.corner.none});\r\n }\r\n .label {\r\n flex: 1 1 auto;\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n overflow: hidden;\r\n vertical-align: middle;\r\n }\r\n .checkbox {\r\n flex: none;\r\n margin-inline-end: 0.5rem;\r\n }\r\n .icon,\r\n .toggle {\r\n flex: none;\r\n align-items: center;\r\n justify-content: center;\r\n position: relative;\r\n vertical-align: middle;\r\n margin-inline-end: 0.5rem;\r\n }\r\n .toggle {\r\n display: var(--_tree-item-toggle-display, none);\r\n }\r\n :host(:not(:is(:state(--with-icon), :--with-icon))) .icon {\r\n display: none;\r\n }\r\n .inset {\r\n margin-inline-start: calc(var(--m3e-tree-item-inset, 2rem) * var(--_tree-item-level, 0));\r\n }\r\n :host([open]) .toggle-icon {\r\n transform: rotate(90deg);\r\n }\r\n :host(:not(:is(:state(--with-items), :--with-items))) .toggle {\r\n visibility: hidden;\r\n }\r\n :host(:not(:is(:state(--with-items), :--with-items))) .group {\r\n display: none;\r\n }\r\n ::slotted([slot=\"selected-icon\"]),\r\n ::slotted([slot=\"icon\"]),\r\n ::slotted([slot=\"toggle-icon\"]),\r\n ::slotted([slot=\"open-toggle-icon\"]),\r\n .toggle-icon {\r\n vertical-align: middle;\r\n width: 1em;\r\n height: 1em;\r\n font-size: var(--m3e-tree-item-icon-size, 1.5rem);\r\n }\r\n .toggle-icon {\r\n transition: ${unsafeCSS(`transform var(--m3e-collapsible-animation-duration, ${DesignToken.motion.duration.medium1})\r\n ${DesignToken.motion.easing.standard}`)};\r\n }\r\n :host(:is(:state(--with-open-toggle-icon), :--with-open-toggle-icon)[open]) slot[name=\"toggle-icon\"],\r\n :host(:is(:state(--with-open-toggle-icon), :--with-open-toggle-icon):not([open])) slot[name=\"open-toggle-icon\"] {\r\n display: none;\r\n }\r\n :host(:not(:disabled)) .base {\r\n cursor: pointer;\r\n }\r\n :host(:not(:disabled)) .base {\r\n color: var(--m3e-tree-item-label-color, ${DesignToken.color.onSurfaceVariant});\r\n }\r\n :host(:disabled) .base {\r\n color: color-mix(\r\n in srgb,\r\n var(--m3e-tree-item-disabled-color, ${DesignToken.color.onSurface})\r\n var(--m3e-tree-item-disabled-color-opacity, 38%),\r\n transparent\r\n );\r\n }\r\n :host([selected]:not(:disabled)) .base {\r\n color: var(--m3e-tree-item-selected-label-color, ${DesignToken.color.onSecondaryContainer});\r\n background-color: var(--m3e-tree-item-selected-container-color, ${DesignToken.color.secondaryContainer});\r\n --m3e-state-layer-focus-color: var(\r\n --m3e-tree-item-selected-container-focus-color,\r\n ${DesignToken.color.onSecondaryContainer}\r\n );\r\n --m3e-state-layer-hover-color: var(\r\n --m3e-tree-item-selected-container-hover-color,\r\n ${DesignToken.color.onSecondaryContainer}\r\n );\r\n --m3e-ripple-color: var(--m3e-tree-item-selected-ripple-color, ${DesignToken.color.onSecondaryContainer});\r\n }\r\n :host(:not([selected]):not(:disabled)) .base {\r\n --m3e-state-layer-focus-color: var(\r\n --m3e-tree-item-unselected-container-focus-color,\r\n ${DesignToken.color.onSurface}\r\n );\r\n --m3e-state-layer-hover-color: var(\r\n --m3e-tree-item-unselected-container-hover-color,\r\n ${DesignToken.color.onSurface}\r\n );\r\n --m3e-ripple-color: var(--m3e-tree-item-unselected-ripple-color, ${DesignToken.color.onSurface});\r\n }\r\n .state-layer {\r\n margin-inline: auto;\r\n }\r\n ::slotted(a[slot=\"label\"]) {\r\n all: unset;\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base,\r\n .toggle,\r\n .state-layer {\r\n transition: none !important;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n .base,\r\n .state-layer {\r\n transition: none !important;\r\n }\r\n\r\n :host(:disabled) .base {\r\n color: GrayText;\r\n }\r\n :host(:not(:disabled)) .base {\r\n color: CanvasText;\r\n background-color: Canvas;\r\n }\r\n :host([selected]:not(:is(:state(--multi), :--multi)):not(:disabled)) slot[name=\"icon\"],\r\n :host([selected]:not(:is(:state(--multi), :--multi)):not(:disabled)) slot[name=\"label\"] {\r\n color: Highlight;\r\n }\r\n }\r\n `;\r\n\r\n /** @internal */ @query(\".state-layer\") readonly stateLayer?: M3eStateLayerElement;\r\n /** @internal */ @query(\".focus-ring\") readonly focusRing?: M3eFocusRingElement;\r\n /** @internal */ @query(\".ripple\") readonly ripple?: M3eRippleElement;\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n\r\n /** @private */ @state() private _hasChildItems = false;\r\n /** @private */ @state() private _multi = false;\r\n /** @private */\r\n readonly #treeMutationController = new MutationController(this, {\r\n target: null,\r\n skipInitial: true,\r\n config: {\r\n attributeFilter: [\"multi\"],\r\n },\r\n callback: () => this.#handleTreeChange(),\r\n });\r\n\r\n /** @private */ #items: M3eTreeItemElement[] = [];\r\n /** @private */ #tree: M3eTreeElement | null = null;\r\n /** @private */ #path = new Array<M3eTreeItemElement>();\r\n /** @private */ #link: HTMLAnchorElement | null = null;\r\n\r\n /**\r\n * Whether the item is expanded.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n\r\n /**\r\n * A value indicating whether the element's selected / checked state is indeterminate.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) indeterminate = false;\r\n\r\n /** A reference to the nested `HTMLAnchorElement`. */\r\n get link(): HTMLAnchorElement | null {\r\n return this.#link;\r\n }\r\n\r\n /** A reference to the element used to present the label of the item. */\r\n get label(): HTMLElement | null {\r\n return this._base ?? null;\r\n }\r\n\r\n /** Whether the item is visible. */\r\n get visible(): boolean {\r\n return !this.#path.some((x) => !x.open);\r\n }\r\n\r\n /** The full path of the item, starting with the top-most ancestor, including this item. */\r\n get path(): ReadonlyArray<M3eTreeItemElement> {\r\n return [...this.#path, this];\r\n }\r\n\r\n /** Whether the item has child items. */\r\n get hasChildItems(): boolean {\r\n return this._hasChildItems;\r\n }\r\n\r\n /** The parenting item. */\r\n get parentItem(): M3eTreeItemElement | null {\r\n return this.#path[this.#path.length - 1] ?? null;\r\n }\r\n\r\n /** The items that immediately descend from this item. */\r\n get childItems(): readonly M3eTreeItemElement[] {\r\n return this.#items;\r\n }\r\n\r\n /** The one-based level of the item. */\r\n get level(): number {\r\n return this.#path.length + 1;\r\n }\r\n\r\n /**\r\n * Expands this item, and optionally, all descendants.\r\n * @param {boolean} [descendants=false] Whether to expand all descendants.\r\n */\r\n expand(descendants: boolean = false): void {\r\n if (this.hasChildItems) {\r\n this.open = true;\r\n if (descendants) {\r\n this.childItems.forEach((x) => x.expand(true));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Collapses this item, and optionally, all descendants.\r\n * @param {boolean} [descendants=false] Whether to collapse all descendants.\r\n */\r\n collapse(descendants: boolean = false): void {\r\n if (this.hasChildItems) {\r\n this.open = false;\r\n if (descendants) {\r\n this.childItems.forEach((x) => x.collapse(true));\r\n }\r\n }\r\n }\r\n\r\n /** Toggles the expanded state of the item. */\r\n toggle(): void {\r\n if (this.hasChildItems) {\r\n this.open = !this.open;\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n this.#path.length = 0;\r\n for (\r\n let item = this.parentElement?.closest(\"m3e-tree-item\");\r\n item;\r\n item = item.parentElement?.closest(\"m3e-tree-item\")\r\n ) {\r\n this.#path.push(item);\r\n }\r\n this.#path.reverse();\r\n\r\n this.style.setProperty(\"--_tree-item-level\", `${this.level - 1}`);\r\n this.#tree = this.closest(\"m3e-tree\");\r\n if (this.#tree) {\r\n this.#treeMutationController.observe(this.#tree);\r\n this.#handleTreeChange();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this.#path.length = 0;\r\n\r\n if (this.#tree) {\r\n this.#treeMutationController.unobserve(this.#tree);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues): void {\r\n super.update(changedProperties);\r\n\r\n if (\r\n changedProperties.has(\"selected\") ||\r\n changedProperties.has(\"indeterminate\") ||\r\n changedProperties.has(\"_multi\")\r\n ) {\r\n if (this.#tree?.multi) {\r\n this.ariaSelected = null;\r\n this.ariaChecked = this.indeterminate ? \"mixed\" : `${this.selected}`;\r\n } else {\r\n this.ariaSelected = `${this.selected}`;\r\n }\r\n }\r\n\r\n if (changedProperties.has(\"selected\")) {\r\n for (const icon of this.querySelectorAll(\r\n \":scope > m3e-icon[slot]:not([slot='toggle-icon']):not([slot='open-toggle-icon'])\",\r\n )) {\r\n icon.toggleAttribute(\"filled\", this.selected);\r\n }\r\n }\r\n\r\n if (changedProperties.has(\"open\") || changedProperties.has(\"_hasChildItems\")) {\r\n this.ariaExpanded = this._hasChildItems ? `${this.open}` : null;\r\n }\r\n\r\n if ((changedProperties.has(\"_hasChildItems\") && this.disabled) || changedProperties.has(\"disabled\")) {\r\n this.#items.forEach((x) => (x.disabled = this.disabled));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n\r\n const base = this._base;\r\n if (base) {\r\n [this.focusRing, this.stateLayer, this.ripple].forEach((x) => x?.attach(base));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\" @click=\"${this.#handleClick}\">\r\n <m3e-state-layer class=\"state-layer\" ?disabled=\"${this.disabled}\"></m3e-state-layer>\r\n <m3e-focus-ring class=\"focus-ring\" inward ?disabled=\"${this.disabled}\"></m3e-focus-ring>\r\n <m3e-ripple class=\"ripple\" ?disabled=\"${this.disabled}\"></m3e-ripple>\r\n <div aria-hidden=\"true\" class=\"inset\"></div>\r\n <div aria-hidden=\"true\" class=\"toggle\">\r\n <slot name=\"toggle-icon\">\r\n <svg class=\"toggle-icon\" viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\" />\r\n </svg>\r\n </slot>\r\n <slot name=\"open-toggle-icon\" @slotchange=\"${this.#handleOpenToggleIconSlotChange}\"></slot>\r\n </div>\r\n ${this._multi\r\n ? html`<m3e-pseudo-checkbox\r\n class=\"checkbox\"\r\n ?checked=\"${this.selected}\"\r\n ?indeterminate=\"${this.indeterminate}\"\r\n ?disabled=\"${this.disabled}\"\r\n @click=\"${this.#handleCheckboxClick}\"\r\n >\r\n </m3e-pseudo-checkbox>`\r\n : nothing}\r\n <div class=\"icon\" aria-hidden=\"true\">${this.#renderIcon()}</div>\r\n <div class=\"label\">\r\n <slot name=\"label\" @slotchange=\"${this.#handleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n <m3e-collapsible\r\n class=\"group\"\r\n role=\"group\"\r\n aria-hidden=\"${ifDefined(this._hasChildItems ? undefined : \"true\")}\"\r\n ?open=\"${this.open}\"\r\n @opening=\"${this.#handleCollapsibleEvent}\"\r\n @opened=\"${this.#handleCollapsibleEvent}\"\r\n @closing=\"${this.#handleCollapsibleEvent}\"\r\n @closed=\"${this.#handleCollapsibleEvent}\"\r\n >\r\n <slot @slotchange=\"${this.#handleItemSlotChange}\"></slot>\r\n </m3e-collapsible>`;\r\n }\r\n\r\n /** @private */\r\n #renderIcon(): unknown {\r\n const icon = html`<slot name=\"icon\" @slotchange=\"${this.#handleIconSlotChange}\"></slot>`;\r\n return this.selected && !this.hasChildItems\r\n ? html`<slot name=\"selected-icon\" @slotchange=\"${this.#handleIconSlotChange}\">${icon}</slot>`\r\n : icon;\r\n }\r\n\r\n /** @private */\r\n #handleOpenToggleIconSlotChange(e: Event): void {\r\n setCustomState(this, \"--with-open-toggle-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleIconSlotChange(e: Event): void {\r\n setCustomState(this, \"--with-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleSlotChange(e: Event): void {\r\n this.#link =\r\n (<HTMLSlotElement>e.target).assignedElements({ flatten: true }).find((x) => x instanceof HTMLAnchorElement) ??\r\n null;\r\n\r\n this.#link?.setAttribute(\"tabindex\", \"-1\");\r\n }\r\n\r\n /** @private */\r\n #handleItemSlotChange(e: Event): void {\r\n this.#items = (<HTMLSlotElement>e.target)\r\n .assignedElements({ flatten: true })\r\n .filter((x) => x instanceof M3eTreeItemElement);\r\n\r\n const hadChildItems = this._hasChildItems;\r\n this._hasChildItems = this.#items.length > 0;\r\n setCustomState(this, \"--with-items\", this._hasChildItems);\r\n\r\n if (hadChildItems || this._hasChildItems) {\r\n if (this._multi && this.#tree?.cascade) {\r\n let anySelected = false,\r\n anyDeselected = false;\r\n\r\n for (const child of this.querySelectorAll(\"m3e-tree-item\")) {\r\n anySelected = anySelected || child.selected;\r\n anyDeselected = anyDeselected || !child.selected;\r\n if (anySelected && anyDeselected) {\r\n break;\r\n }\r\n }\r\n if (anyDeselected) {\r\n this.#tree?.[selectionManager].deselect(this);\r\n this.indeterminate = anySelected;\r\n } else {\r\n this.#tree?.[selectionManager].select(this, false);\r\n this.indeterminate = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTreeChange(): void {\r\n this._multi = this.#tree?.multi === true;\r\n setCustomState(this, \"--multi\", this._multi);\r\n }\r\n\r\n /** @private */\r\n #handleClick(): void {\r\n if (this.disabled) return;\r\n\r\n this.#tree?.[selectionManager].setActiveItem(this);\r\n if (!this._hasChildItems) {\r\n if (this._multi) {\r\n if (this.selected) {\r\n this.#tree?.deselect(this);\r\n } else {\r\n this.#tree?.select(this);\r\n }\r\n } else {\r\n this.#tree?.select(this);\r\n }\r\n this.#link?.click();\r\n } else {\r\n if (!this._multi) {\r\n this.#tree?.select(this);\r\n }\r\n this.toggle();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleCheckboxClick(e: Event): void {\r\n e.stopPropagation();\r\n\r\n if (!this.selected) {\r\n this.#tree?.select(this);\r\n } else {\r\n this.#tree?.deselect(this);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleCollapsibleEvent(e: Event): void {\r\n e.stopPropagation();\r\n this.dispatchEvent(new Event(e.type, { bubbles: true }));\r\n }\r\n}\r\n\r\ninterface M3eTreeItemElementEventMap extends HTMLElementEventMap {\r\n opening: Event;\r\n opened: Event;\r\n closing: Event;\r\n closed: Event;\r\n}\r\n\r\nexport interface M3eTreeItemElement {\r\n addEventListener<K extends keyof M3eTreeItemElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTreeItemElement, ev: M3eTreeItemElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eTreeItemElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTreeItemElement, ev: M3eTreeItemElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-tree-item\": M3eTreeItemElement;\r\n }\r\n}\r\n","import { css, CSSResultGroup, html, LitElement, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n customElement,\r\n DesignToken,\r\n FocusController,\r\n forcedColorsActive,\r\n PressedController,\r\n registerStyleSheet,\r\n Role,\r\n scrollIntoViewIfNeeded,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { SelectionManager, selectionManager } from \"@m3e/web/core/a11y\";\r\nimport { M3eDirectionality } from \"@m3e/web/core/bidi\";\r\n\r\nimport { M3eTreeItemElement } from \"./TreeItemElement\";\r\n\r\n/**\r\n * Presents hierarchical data in a tree structure.\r\n *\r\n * @description\r\n * The `m3e-tree` component presents hierarchical data in a structure that users can\r\n * navigate, with nested levels that open and collapse as needed.\r\n *\r\n * @example\r\n * The following example illustrates a simple tree with nested child items.\r\n * ```html\r\n * <m3e-tree>\r\n * <m3e-tree-item open>\r\n * <span slot=\"label\">Getting Started</span>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Overview</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Installation</span>\r\n * </m3e-tree-item>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Components</span>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Button</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Card</span>\r\n * </m3e-tree-item>\r\n * </m3e-tree-item>\r\n * </m3e-tree>\r\n * ```\r\n *\r\n * @example\r\n * The next example demonstrates multi-selection with cascading selection state.\r\n * ```html\r\n * <m3e-tree multi cascade>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Fruits</span>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Apples</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Oranges</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Bananas</span>\r\n * </m3e-tree-item>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Vegetables</span>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Carrots</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Broccoli</span>\r\n * </m3e-tree-item>\r\n * <m3e-tree-item>\r\n * <span slot=\"label\">Spinach</span>\r\n * </m3e-tree-item>\r\n * </m3e-tree-item>\r\n * </m3e-tree>\r\n * ```\r\n *\r\n * @tag m3e-tree\r\n *\r\n * @slot - Renders the items of the tree.\r\n *\r\n * @attr multi - Whether multiple items can be selected.\r\n * @attr cascade -Whether multiple item selection cascades to child items.\r\n *\r\n * @fires change - Dispatched when the selected state changes.\r\n *\r\n * @cssprop --m3e-tree-scrollbar-width - Width of the tree scrollbar.\r\n * @cssprop --m3e-tree-scrollbar-color - Color of the tree scrollbar.\r\n */\r\n@customElement(\"m3e-tree\")\r\nexport class M3eTreeElement extends Role(LitElement, \"tree\") {\r\n static {\r\n // NOTE: unsafeCSS used here due to linting error with use of '>'.\r\n registerStyleSheet(css`\r\n ${unsafeCSS(`m3e-tree:has(> m3e-tree-item:is(:state(--with-items), :--with-items)) {\r\n --_tree-item-toggle-display: flex;\r\n }`)}\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 outline: none;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n min-height: 0;\r\n scrollbar-width: ${DesignToken.scrollbar.width};\r\n scrollbar-color: ${DesignToken.scrollbar.color};\r\n }\r\n .base {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n min-height: inherit;\r\n box-sizing: border-box;\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n /** @private */ #ignoreFocusVisible = false;\r\n /** @private */ #ignoreFocus = false;\r\n\r\n /** @private */\r\n readonly [selectionManager] = new SelectionManager<M3eTreeItemElement>()\r\n .withVerticalOrientation()\r\n .withHomeAndEnd()\r\n .withPageUpAndDown()\r\n .withTypeahead()\r\n .withSkipPredicate((x) => x.disabled || !x.visible)\r\n .disableRovingTabIndex()\r\n .onActiveItemChange(() => {\r\n if (this[selectionManager].activeItem) {\r\n this.#activateItem(this[selectionManager].activeItem);\r\n }\r\n });\r\n\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #keyUpHandler = () => this.#handleKeyUp();\r\n /** @private */ readonly #pointerDownHandler = (e: Event) => this.#handlePointerDown(e);\r\n\r\n constructor() {\r\n super();\r\n\r\n new PressedController(this, { callback: (pressed) => (this.#ignoreFocus = pressed) });\r\n new FocusController(this, {\r\n callback: () => {\r\n if (!this.#ignoreFocus) {\r\n this.#updateFocusVisible();\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Whether multiple items can be selected.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) multi = false;\r\n\r\n /**\r\n * Whether multiple item selection cascades to child items.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) cascade = false;\r\n\r\n /** The selected items of the tree. */\r\n get selected(): readonly M3eTreeItemElement[] {\r\n return this[selectionManager].selectedItems;\r\n }\r\n\r\n /** All the items of the tree. */\r\n get items(): readonly M3eTreeItemElement[] {\r\n return this[selectionManager].items;\r\n }\r\n\r\n /**\r\n * Expands all items, and optionally, all descendants.\r\n * @param {boolean} [descendants=false] Whether to expand all descendants.\r\n */\r\n expand(descendants?: boolean): void;\r\n\r\n /**\r\n * Expands the specified items, and optionally, all descendants.\r\n * @param {M3eTreeItemElement[]} items The items to expand.\r\n * @param {boolean} [descendants=false] Whether to expand all descendants.\r\n */\r\n expand(items: M3eTreeItemElement[], descendants?: boolean): void;\r\n\r\n /** @internal */\r\n expand(itemsOrDescendants?: M3eTreeItemElement[] | boolean, maybeDescendants: boolean = false): void {\r\n const items = Array.isArray(itemsOrDescendants) ? itemsOrDescendants : this[selectionManager].items;\r\n const descendants = typeof itemsOrDescendants === \"boolean\" ? itemsOrDescendants : maybeDescendants;\r\n items.forEach((x) => x.expand(descendants));\r\n }\r\n\r\n /**\r\n * Collapses all items, and optionally, all descendants.\r\n * @param {boolean} [descendants=false] Whether to collapse all descendants.\r\n */\r\n collapse(descendants?: boolean): void;\r\n\r\n /**\r\n * Collapses the specified items, and optionally, all descendants.\r\n * @param {M3eTreeItemElement[]} items The items to collapse.\r\n * @param {boolean} [descendants=false] Whether to collapse all descendants.\r\n */\r\n collapse(items: M3eTreeItemElement[], descendants?: boolean): void;\r\n\r\n /** @internal */\r\n collapse(itemsOrDescendants?: M3eTreeItemElement[] | boolean, maybeDescendants: boolean = false): void {\r\n const items = Array.isArray(itemsOrDescendants) ? itemsOrDescendants : this[selectionManager].items;\r\n const descendants = typeof itemsOrDescendants === \"boolean\" ? itemsOrDescendants : maybeDescendants;\r\n\r\n items.forEach((x) => x.collapse(descendants));\r\n const activeItem = this[selectionManager].activeItem;\r\n if (activeItem && !activeItem.visible) {\r\n for (let parent = activeItem.parentItem; parent; parent = parent.parentItem) {\r\n if (parent.visible) {\r\n this[selectionManager].setActiveItem(parent);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Selects the specified item.\r\n * @param {M3eTreeItemElement} item The item to select.\r\n * @param {boolean} [activate=false] A value indicating whether to activate the item.\r\n */\r\n select(item: M3eTreeItemElement, activate: boolean = false): void {\r\n this[selectionManager].select(item, activate);\r\n item.indeterminate = false;\r\n if (this.multi && this.cascade) {\r\n if (item.hasChildItems) {\r\n item.childItems.forEach((x) => this.select(x));\r\n }\r\n\r\n this.#cascadeAncestorSelected(item);\r\n }\r\n if (activate) {\r\n this.#activateItem(item);\r\n }\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /**\r\n * Deselects the specified item.\r\n * @param {M3eTreeItemElement} item The item to deselect.\r\n */\r\n deselect(item: M3eTreeItemElement): void {\r\n this[selectionManager].deselect(item);\r\n item.indeterminate = false;\r\n if (this.multi && this.cascade) {\r\n if (item.hasChildItems) {\r\n item.childItems.forEach((x) => this.deselect(x));\r\n }\r\n\r\n this.#cascadeAncestorSelected(item);\r\n }\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n this.setAttribute(\"tabindex\", \"0\");\r\n\r\n this.addEventListener(\"keydown\", this.#keyDownHandler);\r\n this.addEventListener(\"keyup\", this.#keyUpHandler);\r\n this.addEventListener(\"pointerdown\", this.#pointerDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.removeEventListener(\"keyup\", this.#keyUpHandler);\r\n this.removeEventListener(\"pointerdown\", this.#pointerDownHandler);\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(\"multi\")) {\r\n this[selectionManager].multi = this.multi;\r\n if (this.multi) {\r\n this.setAttribute(\"aria-multiselectable\", \"true\");\r\n } else {\r\n this.removeAttribute(\"aria-multiselectable\");\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n <slot @slotchange=\"${this.#handleSlotChange}\"></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleSlotChange(): void {\r\n const { added } = this[selectionManager].setItems([...this.querySelectorAll(\"m3e-tree-item\")]);\r\n for (const item of added) {\r\n item.id = item.id || `m3e-tree-item-${M3eTreeElement.__nextId++}`;\r\n }\r\n if (this[selectionManager].activeItem) {\r\n this.setAttribute(\"aria-activedescendant\", this[selectionManager].activeItem.id);\r\n this.#updateFocusVisible();\r\n } else {\r\n this.removeAttribute(\"aria-activedescendant\");\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n this.#ignoreFocusVisible = false;\r\n this.#updateFocusVisible();\r\n\r\n const item = this[selectionManager].activeItem;\r\n if (e.defaultPrevented || !item || item.disabled) return;\r\n\r\n switch (e.key) {\r\n case \"Enter\":\r\n if (!this.multi) {\r\n if (!item.selected) {\r\n this.select(item);\r\n item.link?.click();\r\n }\r\n } else {\r\n if (item.ripple && !item.ripple.visible) {\r\n item.ripple.centered = true;\r\n item.ripple.show(0, 0, true);\r\n item.ripple.centered = false;\r\n }\r\n item.link?.click();\r\n }\r\n break;\r\n\r\n case \" \":\r\n e.preventDefault();\r\n\r\n if (this.multi) {\r\n if (item.selected) {\r\n this.deselect(item);\r\n } else {\r\n this.select(item);\r\n }\r\n } else {\r\n if (item.ripple && !item.ripple.visible) {\r\n item.ripple.centered = true;\r\n item.ripple.show(0, 0, true);\r\n item.ripple.centered = false;\r\n }\r\n this.select(item);\r\n item.link?.click();\r\n }\r\n\r\n break;\r\n\r\n case \"*\":\r\n e.preventDefault();\r\n item.expand(true);\r\n break;\r\n\r\n case \"Left\":\r\n case \"ArrowLeft\":\r\n e.preventDefault();\r\n if (M3eDirectionality.current === \"ltr\") {\r\n if (item.hasChildItems && item.open) {\r\n requestAnimationFrame(() => item.collapse());\r\n } else {\r\n const parent = item.parentItem;\r\n if (parent) {\r\n this[selectionManager].setActiveItem(parent);\r\n }\r\n }\r\n } else if (item.hasChildItems && !item.open) {\r\n item.expand();\r\n }\r\n\r\n break;\r\n\r\n case \"Right\":\r\n case \"ArrowRight\":\r\n e.preventDefault();\r\n if (M3eDirectionality.current === \"rtl\") {\r\n if (item.hasChildItems && item.open) {\r\n requestAnimationFrame(() => item.collapse());\r\n } else {\r\n const parent = item.parentItem;\r\n if (parent) {\r\n this[selectionManager].setActiveItem(parent);\r\n }\r\n }\r\n } else if (item.hasChildItems && !item.open) {\r\n item.expand();\r\n }\r\n break;\r\n\r\n default:\r\n this[selectionManager].onKeyDown(e);\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyUp(): void {\r\n const item = this[selectionManager].activeItem;\r\n if (item && !item.disabled && item.ripple?.visible) {\r\n item.ripple.hide();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handlePointerDown(e: Event): void {\r\n if (!e.defaultPrevented && !this.#ignoreFocusVisible && !forcedColorsActive()) {\r\n this.#ignoreFocusVisible = true;\r\n\r\n const item = e\r\n .composedPath()\r\n .reverse()\r\n .find((x) => x instanceof M3eTreeItemElement);\r\n\r\n if (item && !item.disabled) {\r\n this.#updateItemFocusVisible(item, true, false);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #activateItem(item: M3eTreeItemElement): void {\r\n this.setAttribute(\"aria-activedescendant\", item.id);\r\n if (item.label) {\r\n scrollIntoViewIfNeeded(item.label, this, { block: \"nearest\", behavior: \"smooth\" });\r\n }\r\n this.#updateFocusVisible();\r\n }\r\n\r\n /** @private */\r\n #updateFocusVisible(): void {\r\n const focusWithin = this.matches(\":focus-within\");\r\n const focused = focusWithin || this.matches(\":focus\");\r\n const focusVisible =\r\n focused &&\r\n !this.#ignoreFocusVisible &&\r\n (forcedColorsActive() ||\r\n this.matches(\":focus-visible\") ||\r\n (focusWithin && this.querySelector(\"a:focus-visible\") !== null));\r\n\r\n this[selectionManager].items.forEach((x) => {\r\n const active = x === this[selectionManager].activeItem;\r\n this.#updateItemFocusVisible(x, active && focused, active && focusVisible);\r\n });\r\n }\r\n\r\n /** @private */\r\n #updateItemFocusVisible(item: M3eTreeItemElement, focused: boolean, focusVisible: boolean): void {\r\n if (focused && focusVisible) {\r\n item.stateLayer?.show(\"focused\");\r\n } else {\r\n item.stateLayer?.hide(\"focused\");\r\n }\r\n if (focusVisible) {\r\n item.focusRing?.show();\r\n } else {\r\n item.focusRing?.hide();\r\n }\r\n }\r\n\r\n /** @private */\r\n #cascadeAncestorSelected(item: M3eTreeItemElement): void {\r\n for (let parent = item.parentItem; parent; parent = parent.parentItem) {\r\n let hasSelected = false,\r\n hasDeselected = false;\r\n\r\n for (const child of parent.querySelectorAll(\"m3e-tree-item\")) {\r\n hasSelected = hasSelected || child.selected;\r\n hasDeselected = hasDeselected || !child.selected;\r\n if (hasSelected && hasDeselected) {\r\n break;\r\n }\r\n }\r\n if (hasDeselected) {\r\n this[selectionManager].deselect(parent);\r\n parent.indeterminate = hasSelected;\r\n } else {\r\n this[selectionManager].select(parent, false);\r\n parent.indeterminate = false;\r\n }\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-tree\": M3eTreeElement;\r\n }\r\n}\r\n"],"names":["M3eTreeItemElement","Selected","Disabled","AttachInternals","Role","LitElement","constructor","_hasChildItems","_multi","_M3eTreeItemElement_treeMutationController","set","MutationController","target","skipInitial","config","attributeFilter","callback","__classPrivateFieldGet","_M3eTreeItemElement_instances","_M3eTreeItemElement_handleTreeChange","call","_M3eTreeItemElement_items","_M3eTreeItemElement_tree","_M3eTreeItemElement_path","Array","_M3eTreeItemElement_link","open","indeterminate","link","label","_base","visible","some","x","path","hasChildItems","parentItem","length","childItems","level","expand","descendants","forEach","collapse","toggle","connectedCallback","item","parentElement","closest","push","reverse","style","setProperty","__classPrivateFieldSet","observe","disconnectedCallback","unobserve","update","changedProperties","has","multi","ariaSelected","ariaChecked","selected","icon","querySelectorAll","toggleAttribute","ariaExpanded","disabled","firstUpdated","_changedProperties","base","focusRing","stateLayer","ripple","attach","render","html","_M3eTreeItemElement_handleClick","_M3eTreeItemElement_handleOpenToggleIconSlotChange","_M3eTreeItemElement_handleCheckboxClick","nothing","_M3eTreeItemElement_renderIcon","_M3eTreeItemElement_handleSlotChange","ifDefined","undefined","_M3eTreeItemElement_handleCollapsibleEvent","_M3eTreeItemElement_handleItemSlotChange","_M3eTreeItemElement_handleIconSlotChange","e","setCustomState","hasAssignedNodes","assignedElements","flatten","find","HTMLAnchorElement","setAttribute","filter","M3eTreeItemElement_1","hadChildItems","cascade","anySelected","anyDeselected","child","selectionManager","deselect","select","setActiveItem","click","stopPropagation","dispatchEvent","Event","type","bubbles","styles","css","DesignToken","density","calc","typescale","standard","large","fontSize","fontWeight","lineHeight","tracking","unsafeCSS","motion","duration","short4","easing","shape","corner","none","medium1","color","onSurfaceVariant","onSurface","onSecondaryContainer","secondaryContainer","__decorate","query","prototype","state","property","Boolean","reflect","customElement","M3eTreeElement","M3eTreeElement_1","_M3eTreeElement_ignoreFocusVisible","_M3eTreeElement_ignoreFocus","_b","SelectionManager","withVerticalOrientation","withHomeAndEnd","withPageUpAndDown","withTypeahead","withSkipPredicate","disableRovingTabIndex","onActiveItemChange","activeItem","_M3eTreeElement_instances","_M3eTreeElement_activateItem","_M3eTreeElement_keyDownHandler","_M3eTreeElement_keyUpHandler","_M3eTreeElement_handleKeyUp","_M3eTreeElement_pointerDownHandler","PressedController","pressed","FocusController","_M3eTreeElement_updateFocusVisible","selectedItems","items","itemsOrDescendants","maybeDescendants","isArray","parent","activate","_M3eTreeElement_cascadeAncestorSelected","addEventListener","removeEventListener","willUpdate","removeAttribute","_M3eTreeElement_handleSlotChange","added","setItems","id","__nextId","defaultPrevented","key","centered","show","preventDefault","M3eDirectionality","current","requestAnimationFrame","onKeyDown","hide","forcedColorsActive","composedPath","_M3eTreeElement_updateItemFocusVisible","scrollIntoViewIfNeeded","block","behavior","focusWithin","matches","focused","focusVisible","querySelector","active","hasSelected","hasDeselected","registerStyleSheet","scrollbar","width"],"mappings":"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"}