@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":"bottom-sheet.js","sources":["../../src/bottom-sheet/BottomSheetActionElement.ts","../../src/bottom-sheet/BottomSheetElement.ts","../../src/bottom-sheet/BottomSheetTriggerElement.ts"],"sourcesContent":["import { ActionElementBase, customElement } from \"@m3e/web/core\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to close a parenting bottom sheet.\r\n * @tag m3e-bottom-sheet-action\r\n *\r\n * @slot - Renders the content of the action.\r\n */\r\n@customElement(\"m3e-bottom-sheet-action\")\r\nexport class M3eBottomSheetActionElement extends ActionElementBase {\r\n /** @inheritdoc */\r\n protected override _onClick(): void {\r\n this.closest(\"m3e-bottom-sheet\")?.hide();\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-bottom-sheet-action\": M3eBottomSheetActionElement;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, nothing, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n AttachInternals,\r\n customElement,\r\n computeCssSize,\r\n DesignToken,\r\n focusWhenReady,\r\n hasCustomState,\r\n prefersReducedMotion,\r\n ResizeController,\r\n ScrollLockController,\r\n setCustomState,\r\n spaceSeparatedStringConverter,\r\n VelocityTracker,\r\n SuppressInitialAnimation,\r\n ReconnectedCallback,\r\n registerStyleSheet,\r\n InertController,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { isModifierAllowed, M3eInteractivityChecker } from \"@m3e/web/core/a11y\";\r\nimport \"@m3e/web/core/a11y\";\r\n\r\n/**\r\n * A sheet used to show secondary content anchored to the bottom of the screen.\r\n *\r\n * @description\r\n * The `m3e-bottom-sheet` component implements a Material 3 bottom sheet with\r\n * gesture‑driven resizing, detent snapping, and adaptive motion. It behaves as\r\n * a heavy surface: transitions use non‑bouncy, decelerating motion.\r\n *\r\n * The sheet supports direct manipulation through vertical drag gestures.\r\n * Movement below an 8px threshold is ignored to ensure reliable tap‑to‑cycle\r\n * behavior on the handle. Once activated, dragging updates the sheet height\r\n * with friction near the minimum height to prevent abrupt collapse.\r\n *\r\n * When detents are defined, the sheet snaps to the nearest detent on release.\r\n * If hideable, downward gestures may dismiss the sheet using either velocity\r\n * or a small distance threshold below the collapsed detent. When no detents\r\n * are present, the sheet behaves as a simple open/hidden surface with a\r\n * bottom‑measured hide threshold.\r\n *\r\n * @example\r\n * The following example shows a modal bottom sheet with a drag handle,\r\n * three detents (`fit`, `half`, and `full`), and an action list. The sheet\r\n * is opened using a dedicated `m3e-bottom-sheet-trigger` associated by ID.\r\n * ```html\r\n * <m3e-button>\r\n * <m3e-bottom-sheet-trigger for=\"bottomSheet\">\r\n * Open Bottom sheet\r\n * </m3e-bottom-sheet-trigger>\r\n * </m3e-button>\r\n *\r\n * <m3e-bottom-sheet id=\"bottomSheet\" modal handle hideable detents=\"fit half full\">\r\n * <m3e-action-list>\r\n * <m3e-list-action autofocus>\r\n * <m3e-bottom-sheet-action>Google Keep</m3e-bottom-sheet-action>\r\n * <span slot=\"supporting-text\">Add to a note</span>\r\n * </m3e-list-action>\r\n * <m3e-list-action>\r\n * <m3e-bottom-sheet-action>Google Docs</m3e-bottom-sheet-action>\r\n * <span slot=\"supporting-text\">Embed in a document</span>\r\n * </m3e-list-action>\r\n * </m3e-action-list>\r\n * </m3e-bottom-sheet>\r\n * ```\r\n *\r\n * @tag m3e-bottom-sheet\r\n *\r\n * @slot - Renders the content of the sheet.\r\n * @slot header - Renders the header of the sheet.\r\n *\r\n * @attr detent - The zero‑based index of the detent the sheet should open to.\r\n * @attr detents - Detents (discrete height states) the sheet can snap to.\r\n * @attr handle - Whether to display a drag handle and enable the top region of the sheet as a gesture surface for dragging between detents.\r\n * @attr handle-label - The accessible label given to the drag handle.\r\n * @attr hideable - Whether the bottom sheet can hide when its swiped down.\r\n * @attr hide-friction - The friction coefficient to hide the sheet.\r\n * @attr modal - Whether the bottom sheet behaves as modal.\r\n * @attr open - Whether the bottom sheet is open.\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 *\r\n * @fires opening - Emitted when the sheet begins to open.\r\n * @fires opened - Emitted when the sheet has opened.\r\n * @fires cancel - Emitted when the sheet is cancelled.\r\n * @fires closing - Emitted when the sheet begins to close.\r\n * @fires closed - Emitted when the sheet has closed.\r\n *\r\n * @cssprop --m3e-bottom-sheet-width - The width of the sheet.\r\n * @cssprop --m3e-bottom-sheet-max-width - The maximum width of the sheet.\r\n * @cssprop --m3e-bottom-sheet-container-color - The background color of the sheet container.\r\n * @cssprop --m3e-bottom-sheet-elevation - The elevation level when not modal.\r\n * @cssprop --m3e-bottom-sheet-modal-elevation - The elevation level when modal.\r\n * @cssprop --m3e-bottom-sheet-full-elevation - The elevation level when full height.\r\n * @cssprop --m3e-bottom-sheet-z-index - The z-index of the non-modal sheet.\r\n * @cssprop --m3e-bottom-sheet-minimized-container-shape - The border radius when minimized.\r\n * @cssprop --m3e-bottom-sheet-container-shape - The border radius of the sheet container.\r\n * @cssprop --m3e-bottom-sheet-full-container-shape - The border radius when full height.\r\n * @cssprop --m3e-bottom-sheet-scrim-color - The color of the scrim overlay.\r\n * @cssprop --m3e-bottom-sheet-scrim-opacity - The opacity of the scrim overlay.\r\n * @cssprop --m3e-bottom-sheet-peek-height - The visible height when minimized.\r\n * @cssprop --m3e-bottom-sheet-compact-top-space - The top space in compact mode.\r\n * @cssprop --m3e-bottom-sheet-top-space - The top space in standard mode.\r\n * @cssprop --m3e-bottom-sheet-padding-block - The vertical padding.\r\n * @cssprop --m3e-bottom-sheet-padding-inline - The horizontal padding.\r\n * @cssprop --m3e-bottom-sheet-handle-container-height - The height of the drag handle container.\r\n * @cssprop --m3e-bottom-sheet-handle-width - The width of the drag handle.\r\n * @cssprop --m3e-bottom-sheet-handle-height - The height of the drag handle.\r\n * @cssprop --m3e-bottom-sheet-handle-shape - The border radius of the handle.\r\n * @cssprop --m3e-bottom-sheet-handle-color - The color of the drag handle.\r\n * @cssprop --m3e-bottom-sheet-handle-focus-ring-offset - The offset of the focus ring around the handle.\r\n * @cssprop --m3e-bottom-sheet-color - The foreground (text) color of the sheet.\r\n * @cssprop --m3e-bottom-sheet-content-font-size - Font size for the sheet content.\r\n * @cssprop --m3e-bottom-sheet-content-font-weight - Font weight for the sheet content.\r\n * @cssprop --m3e-bottom-sheet-content-line-height - Line height for the sheet content.\r\n * @cssprop --m3e-bottom-sheet-content-tracking - Letter spacing (tracking) for the sheet content.\r\n * @cssprop --m3e-bottom-sheet-header-font-size - Font size for the sheet header.\r\n * @cssprop --m3e-bottom-sheet-header-font-weight - Font weight for the sheet header.\r\n * @cssprop --m3e-bottom-sheet-header-line-height - Line height for the sheet header.\r\n * @cssprop --m3e-bottom-sheet-header-tracking - Letter spacing (tracking) for the sheet header.\r\n */\r\n@customElement(\"m3e-bottom-sheet\")\r\nexport class M3eBottomSheetElement extends ReconnectedCallback(SuppressInitialAnimation(AttachInternals(LitElement))) {\r\n static {\r\n registerStyleSheet(css`\r\n @property --_bottom-sheet-height {\r\n syntax: \"<length>\";\r\n inherits: false;\r\n initial-value: 50vh;\r\n }\r\n m3e-bottom-sheet > [slot=\"header\"] {\r\n margin-block-end: var(--m3e-bottom-sheet-padding-block, 0.5rem);\r\n margin-inline: var(--m3e-bottom-sheet-padding-inline, 1rem);\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 position: fixed;\r\n left: 50%;\r\n top: calc(100vh - var(--_bottom-sheet-height));\r\n margin: 0;\r\n padding: 0;\r\n outline: none;\r\n overflow: hidden;\r\n border: none;\r\n box-sizing: border-box;\r\n width: var(--m3e-bottom-sheet-width, 100%);\r\n max-width: var(--m3e-bottom-sheet-max-width, 40rem);\r\n height: var(--_bottom-sheet-height);\r\n color: var(--m3e-bottom-sheet-color, ${DesignToken.color.onSurface});\r\n background-color: var(--m3e-bottom-sheet-container-color, ${DesignToken.color.surfaceContainerLow});\r\n }\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) {\r\n transition: ${unsafeCSS(\r\n `transform ${DesignToken.motion.duration.medium2} ${DesignToken.motion.easing.standardDecelerate},\r\n border-radius ${DesignToken.motion.duration.medium2} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n :host(:not([modal]):not(:is(:state(--full), :--full))) .elevation {\r\n --m3e-elevation-level: var(--m3e-bottom-sheet-elevation, ${DesignToken.elevation.level1});\r\n }\r\n :host([modal]:not(:is(:state(--full), :--full))) .elevation {\r\n --m3e-elevation-level: var(--m3e-bottom-sheet-modal-elevation, ${DesignToken.elevation.level1});\r\n }\r\n :host(:is(:state(--full), :--full)) .elevation {\r\n --m3e-elevation-level: var(--m3e-bottom-sheet-full-elevation, ${DesignToken.elevation.level1});\r\n }\r\n :host(:not([modal])) {\r\n z-index: var(--m3e-bottom-sheet-z-index, 10);\r\n }\r\n :host(:not([modal]):not([open])),\r\n :host([modal]:not(:popover-open)) {\r\n border-radius: var(--m3e-bottom-sheet-minimized-container-shape, ${DesignToken.shape.corner.none});\r\n transform: translateX(-50%) translateY(100%);\r\n }\r\n :host(:not([modal])[open]:not(:is(:state(--full), :--full))),\r\n :host([modal]:not(:is(:state(--full), :--full)):popover-open) {\r\n border-radius: var(--m3e-bottom-sheet-container-shape, ${DesignToken.shape.corner.extraLargeTop});\r\n }\r\n :host(:not([modal])[open]:is(:state(--full), :--full)),\r\n :host([modal]:is(:state(--full), :--full):popover-open) {\r\n border-radius: var(--m3e-bottom-sheet-full-container-shape, ${DesignToken.shape.corner.extraLargeTop});\r\n }\r\n :host(:not([modal])[open]),\r\n :host([modal]:popover-open) {\r\n transform: translateX(-50%) translateY(0);\r\n }\r\n :host([modal]:not(:is(:state(--no-animate), :--no-animate)))::backdrop {\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard}, \r\n overlay ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete,\r\n visibility ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n :host([modal]:popover-open)::backdrop {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-bottom-sheet-scrim-color, ${DesignToken.color.scrim}) var(--m3e-bottom-sheet-scrim-opacity, 32%),\r\n transparent\r\n );\r\n }\r\n :host([modal]:popover-open:not(:is(:state(--no-animate), :--no-animate)))::backdrop {\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard}, \r\n overlay ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete,\r\n visibility ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n @starting-style {\r\n :host([modal]:popover-open)::backdrop {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-bottom-sheet-scrim-color, ${DesignToken.color.scrim}) 0%,\r\n transparent\r\n );\r\n }\r\n }\r\n .base {\r\n display: flex;\r\n border-radius: inherit;\r\n flex-direction: column;\r\n height: 100%;\r\n --_bottom-sheet-peek-height: var(--m3e-bottom-sheet-peek-height, 0);\r\n --_bottom-sheet-top-space: var(--m3e-bottom-sheet-compact-top-space, 4.5rem);\r\n }\r\n @media (max-height: 640px) {\r\n .base {\r\n --_bottom-sheet-top-space: var(--m3e-bottom-sheet-top-space, 3.5rem);\r\n }\r\n }\r\n .body {\r\n flex: 1 1 auto;\r\n overflow-y: auto;\r\n scrollbar-width: ${DesignToken.scrollbar.thinWidth};\r\n scrollbar-color: ${DesignToken.scrollbar.color};\r\n padding-block-end: var(--m3e-bottom-sheet-padding-block, 0.5rem);\r\n padding-inline: var(--m3e-bottom-sheet-padding-inline, 1rem);\r\n font-size: var(--m3e-bottom-sheet-content-font-size, ${DesignToken.typescale.standard.body.medium.fontSize});\r\n font-weight: var(\r\n --m3e-bottom-sheet-content-font-weight,\r\n ${DesignToken.typescale.standard.body.medium.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-bottom-sheet-content-line-height,\r\n ${DesignToken.typescale.standard.body.medium.lineHeight}\r\n );\r\n letter-spacing: var(--m3e-bottom-sheet-content-tracking, ${DesignToken.typescale.standard.body.medium.tracking});\r\n }\r\n .content {\r\n height: fit-content;\r\n }\r\n :host(:not([handle])) .header {\r\n display: none;\r\n }\r\n :host(:not([handle])) .body,\r\n .header {\r\n border-top-left-radius: inherit;\r\n border-top-right-radius: inherit;\r\n padding-block-start: var(--m3e-bottom-sheet-padding-block, 0.5rem);\r\n font-size: var(--m3e-bottom-sheet-header-font-size, ${DesignToken.typescale.standard.title.large.fontSize});\r\n font-weight: var(--m3e-bottom-sheet-header-font-weight, ${DesignToken.typescale.standard.title.large.fontWeight});\r\n line-height: var(--m3e-bottom-sheet-header-line-height, ${DesignToken.typescale.standard.title.large.lineHeight});\r\n letter-spacing: var(--m3e-bottom-sheet-header-tracking, ${DesignToken.typescale.standard.title.large.tracking});\r\n }\r\n .header {\r\n cursor: grab;\r\n touch-action: none;\r\n outline: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n box-sizing: border-box;\r\n flex: none;\r\n display: flex;\r\n flex-direction: column;\r\n min-height: 3rem;\r\n --m3e-app-bar-container-color: var(--m3e-bottom-sheet-container-color, ${DesignToken.color.surfaceContainerLow});\r\n }\r\n .handle-row {\r\n position: relative;\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n opacity: 1;\r\n visibility: visible;\r\n height: var(--m3e-bottom-sheet-handle-container-height, 1.5rem);\r\n }\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .handle-row {\r\n transition: ${unsafeCSS(\r\n `opacity ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard},\r\n padding ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard},\r\n height ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard},\r\n visibility ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n .handle {\r\n position: relative;\r\n width: var(--m3e-bottom-sheet-handle-width, 2rem);\r\n height: var(--m3e-bottom-sheet-handle-height, 4px);\r\n border-radius: var(--m3e-bottom-sheet-handle-shape, ${DesignToken.shape.corner.full});\r\n background-color: var(--m3e-bottom-sheet-handle-color, ${DesignToken.color.onSurfaceVariant});\r\n }\r\n .handle-touch {\r\n position: absolute;\r\n aspect-ratio: 1 / 1;\r\n height: 3rem;\r\n left: calc(0px - calc(calc(3rem - var(--m3e-bottom-sheet-handle-width, 2rem)) / 2));\r\n right: calc(0px - calc(calc(3rem - var(--m3e-bottom-sheet-handle-width, 2rem)) / 2));\r\n top: calc(\r\n 0px - calc(\r\n calc(3rem - var(--m3e-bottom-sheet-handle-container-height, 1.5rem)) - calc(\r\n var(--m3e-bottom-sheet-handle-height, 4px) / 2\r\n )\r\n )\r\n );\r\n }\r\n @media (prefers-reduced-motion) {\r\n :host(:not(:is(:state(--no-animate), :--no-animate))),\r\n :host([modal]:not(:is(:state(--no-animate), :--no-animate)))::backdrop,\r\n :host([modal]:popover-open:not(:is(:state(--no-animate), :--no-animate)))::backdrop,\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .handle-row {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n :host([modal]:not(:is(:state(--no-animate), :--no-animate)))::backdrop,\r\n :host([modal]:popover-open:not(:is(:state(--no-animate), :--no-animate)))::backdrop {\r\n transition: none;\r\n }\r\n .base {\r\n border-style: solid;\r\n border-width: 1px;\r\n border-color: CanvasText;\r\n }\r\n .handle {\r\n background-color: ButtonText;\r\n }\r\n }\r\n `;\r\n\r\n /** @private */ private static __openSheet?: M3eBottomSheetElement;\r\n\r\n /** @private */ readonly #documentClickHandler = (e: Event) => this.#handleDocumentClick(e);\r\n /** @private */ readonly #documentKeyDownHandler = (e: KeyboardEvent) => this.#handleDocumentKeyDown(e);\r\n /** @private */ readonly #windowResizeHandler = () => this.#handleWindowResize();\r\n /** @private */ readonly #velocityTracker = new VelocityTracker();\r\n /** @private */ readonly #scrollLockController = new ScrollLockController(this);\r\n /** @private */ readonly #inertController = new InertController(this);\r\n\r\n /** @private */\r\n readonly #resizeController = new ResizeController(this, {\r\n target: null,\r\n skipInitial: true,\r\n callback: (x) => this.#handleSectionResize(x),\r\n });\r\n\r\n /** @private */ #trigger: Element | null = null;\r\n /** @private */ #dragState?: {\r\n startY: number;\r\n startHeight: number;\r\n effectiveMaxHeight: number;\r\n maxHeight: number;\r\n minHeight: number;\r\n };\r\n /** @private */ #dragged = false;\r\n /** @private */ #activeDetent = 0;\r\n /** @private */ #requestDetent?: number;\r\n /** @private */ #cachedContentHeight = 0;\r\n /** @private */ #cachedHeaderHeight = 0;\r\n /** @private */ #snapAnimation?: Animation;\r\n\r\n /**\r\n * Whether the bottom sheet behaves as modal.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) modal = false;\r\n\r\n /**\r\n * Whether the bottom sheet is open.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n\r\n /**\r\n * Whether to display a drag handle and enable the top region of the sheet as a gesture\r\n * surface for dragging between detents.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) handle = false;\r\n\r\n /**\r\n * The accessible label given to the drag handle.\r\n * @default \"Drag handle\"\r\n */\r\n @property({ attribute: \"handle-label\" }) handleLabel = \"Drag handle\";\r\n\r\n /**\r\n * Detents (discrete height states) the sheet can snap to.\r\n * @default []\r\n */\r\n @property({ attribute: \"detents\", converter: spaceSeparatedStringConverter }) detents: string[] = [];\r\n\r\n /**\r\n * The zero‑based index of the detent the sheet should open to.\r\n * @default 0\r\n */\r\n @property({ type: Number }) detent = 0;\r\n\r\n /**\r\n * Whether the bottom sheet can hide when its swiped down.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) hideable = false;\r\n\r\n /**\r\n * The friction coefficient to hide the sheet.\r\n * @default 0.5\r\n */\r\n @property({ attribute: \"hide-friction\", type: Number }) hideFriction = 0.5;\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 * Shows the sheet.\r\n * @param {number} detent The zero‑based index of the detent the sheet should open to.\r\n */\r\n show(detent: number = this.detent): void {\r\n if (!this.open) {\r\n this.#requestDetent = detent;\r\n this.open = true;\r\n } else if (detent !== undefined && this.#activeDetent !== detent) {\r\n this.#snapToDetent(detent);\r\n }\r\n }\r\n\r\n /** Hides the sheet. */\r\n hide(): void {\r\n this.open = false;\r\n }\r\n\r\n /**\r\n * Toggles the opened state of the sheet.\r\n * @param {number} detent The zero‑based index of the detent the sheet should open to.\r\n */\r\n toggle(detent?: number): void {\r\n if (this.open) {\r\n this.hide();\r\n } else {\r\n this.show(detent);\r\n }\r\n }\r\n\r\n /** Moves the sheet to the next detent. */\r\n cycle(): void {\r\n if (!this.open) {\r\n this.show();\r\n } else if (this.detents.length > 0) {\r\n if (this.#activeDetent < this.detents.length - 1) {\r\n this.#activeDetent++;\r\n this.#snapToDetent(this.#activeDetent);\r\n } else if (this.hideable) {\r\n this.hide();\r\n }\r\n } else {\r\n this.hide();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"modal\")) {\r\n this.role = this.modal ? \"dialog\" : \"region\";\r\n this.ariaModal = this.modal ? \"true\" : null;\r\n this.popover = this.modal ? \"manual\" : null;\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override reconnectedCallback(): void {\r\n super.reconnectedCallback();\r\n this.#initialize();\r\n }\r\n\r\n /** @inheritdoc */\r\n 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 updated(_changedProperties: PropertyValues): void {\r\n super.updated(_changedProperties);\r\n\r\n if (_changedProperties.has(\"open\")) {\r\n if (this.open) {\r\n if (!this.dispatchEvent(new Event(\"opening\", { cancelable: true }))) {\r\n this.open = false;\r\n return;\r\n }\r\n\r\n // Only one sheet can be open at a time.\r\n if (M3eBottomSheetElement.__openSheet !== this) {\r\n M3eBottomSheetElement.__openSheet?.hide();\r\n }\r\n M3eBottomSheetElement.__openSheet = this;\r\n\r\n this.inert = false;\r\n\r\n window.addEventListener(\"resize\", this.#windowResizeHandler);\r\n\r\n // If there are detents (regardless of handle) open to the requested, default (or first) detent.\r\n // Otherwise, open to fit unless its greater than half.\r\n\r\n if (this.detents.length > 0) {\r\n this.#activeDetent = Math.min(Math.max(0, this.#requestDetent ?? this.detent), this.detents.length - 1);\r\n this.#updateHeight(this.#computeDetentHeight(this.detents[this.#activeDetent]));\r\n } else {\r\n this.#updateHeight(Math.min(this.#computeDetentHeight(\"fit\"), this.#computeDetentHeight(\"half\")));\r\n }\r\n this.#requestDetent = undefined;\r\n } else {\r\n if (!this.dispatchEvent(new Event(\"closing\", { cancelable: true }))) {\r\n this.open = true;\r\n return;\r\n }\r\n\r\n // The following ensures layout is stable so that first tab isn't \"skipped\"\r\n requestAnimationFrame(() => (this.inert = true));\r\n\r\n window.removeEventListener(\"resize\", this.#windowResizeHandler);\r\n\r\n if (M3eBottomSheetElement.__openSheet === this) {\r\n M3eBottomSheetElement.__openSheet = undefined;\r\n }\r\n }\r\n\r\n if (this.modal) {\r\n if (this.open) {\r\n this.#trigger = document.activeElement;\r\n this.#inertController.lock();\r\n this.#scrollLockController.lock();\r\n this.showPopover();\r\n requestAnimationFrame(() => {\r\n document.addEventListener(\"click\", this.#documentClickHandler);\r\n document.addEventListener(\"keydown\", this.#documentKeyDownHandler);\r\n });\r\n\r\n let focusable: HTMLElement | null | undefined = this.querySelector<HTMLElement>(\"[autofocus]\");\r\n if (!focusable || !M3eInteractivityChecker.isFocusable(focusable)) {\r\n focusable = this.shadowRoot?.querySelector(\".handle\");\r\n }\r\n if (focusable) {\r\n focusWhenReady(focusable);\r\n }\r\n } else {\r\n this.#snapToHeight(0).then(() => {\r\n this.#inertController.unlock();\r\n this.#scrollLockController.unlock();\r\n document.removeEventListener(\"click\", this.#documentClickHandler);\r\n document.removeEventListener(\"keydown\", this.#documentKeyDownHandler);\r\n this.hidePopover();\r\n if (this.#trigger instanceof HTMLElement) {\r\n this.#trigger.focus();\r\n }\r\n this.#trigger = null;\r\n });\r\n }\r\n }\r\n\r\n this.dispatchEvent(new Event(this.open ? \"opened\" : \"closed\"));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<m3e-focus-trap ?disabled=\"${!this.modal}\">\r\n <div class=\"base\">\r\n <m3e-elevation class=\"elevation\"></m3e-elevation>\r\n <div\r\n class=\"header\"\r\n @pointerdown=\"${this.#handleHeaderPointerDown}\"\r\n @pointermove=\"${this.#handleHeaderPointerMove}\"\r\n @pointerup=\"${this.#handleHeaderPointerUp}\"\r\n >\r\n ${this.handle\r\n ? html`<div class=\"handle-row\">\r\n <div\r\n id=\"handle\"\r\n class=\"handle\"\r\n role=\"button\"\r\n aria-label=\"${this.handleLabel}\"\r\n tabindex=\"0\"\r\n @click=\"${this.#handleDragHandleClick}\"\r\n @keydown=\"${this.#handleDragHandleKeyDown}\"\r\n >\r\n <m3e-focus-ring class=\"focus-ring\" for=\"handle\"></m3e-focus-ring>\r\n <div class=\"handle-touch\" aria-hidden=\"true\"></div>\r\n </div>\r\n </div>`\r\n : nothing}\r\n <slot name=\"header\"></slot>\r\n </div>\r\n <div class=\"body\">\r\n <div class=\"content\">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n </div>\r\n </m3e-focus-trap>`;\r\n }\r\n\r\n /** @private */\r\n #initialize(): void {\r\n const content = this.shadowRoot?.querySelector<HTMLElement>(\".content\");\r\n if (content) {\r\n this.#cachedContentHeight = content.clientHeight;\r\n this.#resizeController.observe(content);\r\n }\r\n\r\n const header = this.shadowRoot?.querySelector<HTMLElement>(\".header\");\r\n if (header) {\r\n this.#cachedHeaderHeight = header.clientHeight;\r\n this.#resizeController.observe(header);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleHeaderPointerDown(e: PointerEvent): void {\r\n if (e.target instanceof HTMLElement && M3eInteractivityChecker.isFocusable(e.target)) {\r\n return;\r\n }\r\n\r\n (<HTMLElement>e.target).setPointerCapture(e.pointerId);\r\n (<HTMLElement>e.target).style.cursor = \"grabbing\";\r\n\r\n this.#velocityTracker.reset();\r\n this.#velocityTracker.add(e.clientY);\r\n\r\n const maxHeight = this.#computeMaxHeight();\r\n const effectiveMaxHeight =\r\n this.detents.length > 0 ? Math.max(...this.detents.map((x) => this.#computeDetentHeight(x))) : maxHeight;\r\n\r\n this.#dragState = {\r\n startY: e.clientY,\r\n startHeight: this.clientHeight,\r\n effectiveMaxHeight,\r\n maxHeight,\r\n minHeight: this.#computeMinHeight(),\r\n };\r\n this.#dragged = false;\r\n }\r\n\r\n /** @private */\r\n #handleHeaderPointerMove(e: PointerEvent): void {\r\n if (!this.#dragState) {\r\n return;\r\n }\r\n\r\n const minDragThreshold = 8;\r\n if (Math.abs(e.clientY - this.#dragState.startY) <= minDragThreshold) {\r\n // Ignore movement under threshold\r\n return;\r\n }\r\n\r\n (e.getCoalescedEvents?.() ?? [e]).forEach((x) => this.#velocityTracker.add(x.clientY, e.timeStamp));\r\n\r\n let newHeight = this.#dragState.startHeight - (e.clientY - this.#dragState.startY);\r\n if (newHeight < this.#dragState.minHeight) {\r\n if (this.hideable) {\r\n const overshoot = (this.#dragState.minHeight - newHeight) * this.hideFriction;\r\n newHeight = this.#dragState.minHeight - overshoot;\r\n } else {\r\n const overshoot = this.#dragState.minHeight - newHeight;\r\n const overshootLimit = this.#dragState.maxHeight * (this.overshootLimit / 100);\r\n const compressed = (overshootLimit * overshoot) / (overshoot + overshootLimit);\r\n newHeight = this.#dragState.minHeight - compressed;\r\n }\r\n } else if (newHeight > this.#dragState.effectiveMaxHeight) {\r\n const overshoot = newHeight - this.#dragState.effectiveMaxHeight;\r\n const overshootLimit = this.#dragState.maxHeight * (this.overshootLimit / 100);\r\n const compressed = (overshootLimit * overshoot) / (overshoot + overshootLimit);\r\n newHeight = this.#dragState.effectiveMaxHeight + compressed;\r\n }\r\n\r\n this.#updateHeight(newHeight);\r\n this.#dragged = true;\r\n }\r\n\r\n /** @private */\r\n #handleHeaderPointerUp(e: PointerEvent): void {\r\n if (!this.#dragState) return;\r\n\r\n try {\r\n (<HTMLElement>e.target).releasePointerCapture(e.pointerId);\r\n (<HTMLElement>e.target).style.cursor = \"\";\r\n\r\n if (!this.#dragged) return;\r\n\r\n const significantVelocityThreshold = e.pointerType === \"touch\" ? 1200 : 500;\r\n const velocity = this.#velocityTracker.getVelocity();\r\n\r\n this.#velocityTracker.reset();\r\n\r\n if (this.hideable && velocity >= significantVelocityThreshold) {\r\n if (this.dispatchEvent(new Event(\"cancel\", { cancelable: true }))) {\r\n this.hide();\r\n }\r\n } else if (Math.abs(velocity) >= significantVelocityThreshold) {\r\n if (this.detents.length > 0) {\r\n const nextDetent = this.#getNextHigherDetent();\r\n if (nextDetent !== this.#activeDetent) {\r\n this.#snapToDetent(nextDetent);\r\n }\r\n } else {\r\n this.#snapToHeight(this.#computeDetentHeight(\"full\"));\r\n }\r\n } else {\r\n const hideDistanceThreshold = 20;\r\n if (this.hideable) {\r\n const collapsed = this.#dragState.minHeight;\r\n if (this.clientHeight < collapsed - hideDistanceThreshold) {\r\n this.hide();\r\n return;\r\n }\r\n }\r\n\r\n if (this.detents.length > 0) {\r\n this.#snapToDetent(this.#getClosestDetent());\r\n } else if (this.clientHeight < this.#dragState.minHeight) {\r\n this.#snapToHeight(this.#dragState.minHeight);\r\n } else if (this.clientHeight > this.#dragState.effectiveMaxHeight) {\r\n this.#snapToHeight(this.#dragState.effectiveMaxHeight);\r\n }\r\n }\r\n } finally {\r\n this.#dragState = undefined;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDocumentClick(e: Event): void {\r\n if (\r\n this.open &&\r\n this.modal &&\r\n !e.composedPath().includes(this) &&\r\n this.dispatchEvent(new Event(\"cancel\", { cancelable: true }))\r\n ) {\r\n this.hide();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDocumentKeyDown(e: KeyboardEvent): void {\r\n if (this.open && this.modal && e.key === \"Escape\" && !e.shiftKey && !e.ctrlKey) {\r\n e.preventDefault();\r\n\r\n if (this.dispatchEvent(new Event(\"cancel\", { cancelable: true }))) {\r\n this.hide();\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleWindowResize(): void {\r\n if (this.detents.length > 0 && this.detents[this.#activeDetent] === \"half\") {\r\n this.#updateHeight(this.#computeDetentHeight(\"half\"));\r\n return;\r\n }\r\n\r\n const maxHeight = this.#computeMaxHeight();\r\n if (hasCustomState(this, \"--full\")) {\r\n this.#updateHeight(maxHeight);\r\n } else if (this.clientHeight > maxHeight) {\r\n this.#updateHeight(maxHeight);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDragHandleClick(): void {\r\n if (!this.#dragged) {\r\n this.cycle();\r\n }\r\n this.#dragged = false;\r\n }\r\n\r\n /** @private */\r\n #handleDragHandleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented || !isModifierAllowed(e)) return;\r\n\r\n switch (e.key) {\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n e.preventDefault();\r\n if (this.detents.length > 0) {\r\n const nextDetent = this.#getNextHigherDetent();\r\n if (nextDetent !== this.#activeDetent) {\r\n this.#snapToDetent(nextDetent);\r\n }\r\n } else {\r\n this.#snapToHeight(this.#computeDetentHeight(\"full\"));\r\n }\r\n break;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n e.preventDefault();\r\n if (this.detents.length > 0) {\r\n const nextDetent = this.#getNextLowerDetent();\r\n if (nextDetent !== this.#activeDetent) {\r\n this.#snapToDetent(nextDetent);\r\n } else if (this.hideable) {\r\n this.hide();\r\n }\r\n } else if (this.hideable) {\r\n this.hide();\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #getNextHigherDetent(): number {\r\n const currentHeight = this.clientHeight;\r\n let nextHeight = Infinity;\r\n let nextDetent = this.#activeDetent;\r\n for (let i = 0; i < this.detents.length; i++) {\r\n if (i === this.#activeDetent) continue;\r\n const detentHeight = this.#computeDetentHeight(this.detents[i]);\r\n if (detentHeight > currentHeight && detentHeight < nextHeight) {\r\n nextHeight = detentHeight;\r\n nextDetent = i;\r\n }\r\n }\r\n return nextDetent;\r\n }\r\n\r\n /** @private */\r\n #getNextLowerDetent(): number {\r\n const currentHeight = this.clientHeight;\r\n let nextHeight = -Infinity;\r\n let nextDetent = this.#activeDetent;\r\n for (let i = 0; i < this.detents.length; i++) {\r\n if (i === this.#activeDetent) continue;\r\n const detentHeight = this.#computeDetentHeight(this.detents[i]);\r\n if (detentHeight < currentHeight && detentHeight > nextHeight) {\r\n nextHeight = detentHeight;\r\n nextDetent = i;\r\n }\r\n }\r\n return nextDetent;\r\n }\r\n\r\n /** @private */\r\n #getClosestDetent(): number {\r\n const currentHeight = this.clientHeight;\r\n let closestDetent = this.#activeDetent;\r\n let closestDistance = Infinity;\r\n\r\n for (let i = 0; i < this.detents.length; i++) {\r\n const detentHeight = this.#computeDetentHeight(this.detents[i]);\r\n const distance = Math.abs(currentHeight - detentHeight);\r\n\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 #computeDetentHeight(detent: string): number {\r\n switch (detent) {\r\n case \"collapsed\":\r\n return this.#computeMinHeight();\r\n case \"half\":\r\n return this.#computeMaxHeight() * 0.5;\r\n case \"full\":\r\n return this.#computeMaxHeight();\r\n case \"fit\":\r\n return this.#computeFitHeight();\r\n }\r\n\r\n if (detent.endsWith(\"%\")) {\r\n return this.#computeMaxHeight() * (parseFloat(detent) / 100);\r\n }\r\n\r\n if (detent.endsWith(\"px\")) {\r\n return parseFloat(detent);\r\n }\r\n\r\n return this.#computeMinHeight();\r\n }\r\n\r\n /** @private */\r\n #computeMaxHeight(): number {\r\n const base = this.shadowRoot?.querySelector<HTMLElement>(\".base\");\r\n return window.innerHeight - (base ? computeCssSize(base, \"var(--_bottom-sheet-top-space)\") : 0);\r\n }\r\n\r\n /** @private */\r\n #computeMinHeight(): number {\r\n return this.detents.includes(\"fit\") && !this.detents.includes(\"collapsed\")\r\n ? this.#computeFitHeight()\r\n : this.#computePeekHeight();\r\n }\r\n\r\n /** @private */\r\n #computePeekHeight(): number {\r\n const base = this.shadowRoot?.querySelector<HTMLElement>(\".base\");\r\n return this.#cachedHeaderHeight + (base ? computeCssSize(base, \"var(--_bottom-sheet-peek-height)\") : 0);\r\n }\r\n\r\n /** @private */\r\n #computeFitHeight(): number {\r\n const body = this.shadowRoot?.querySelector<HTMLElement>(\".body\");\r\n if (!body) {\r\n return 0;\r\n }\r\n\r\n const bodyStyle = getComputedStyle(body);\r\n return (\r\n this.#cachedHeaderHeight +\r\n this.#cachedContentHeight +\r\n parseFloat(bodyStyle.paddingBlockStart) +\r\n parseFloat(bodyStyle.paddingBlockEnd)\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleSectionResize(entries: ResizeObserverEntry[]): void {\r\n const oldCachedContentHeight = this.#cachedContentHeight;\r\n const oldCachedHeaderHeight = this.#cachedHeaderHeight;\r\n\r\n for (const entry of entries) {\r\n if (entry.target.classList.contains(\"content\")) {\r\n this.#cachedContentHeight = (<ResizeObserverSize>(\r\n (Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0] : entry.borderBoxSize)\r\n )).blockSize;\r\n } else if (entry.target.classList.contains(\"header\")) {\r\n this.#cachedHeaderHeight = (<ResizeObserverSize>(\r\n (Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0] : entry.borderBoxSize)\r\n )).blockSize;\r\n }\r\n }\r\n\r\n if (\r\n this.open &&\r\n this.detents.length > 0 &&\r\n (oldCachedContentHeight !== this.#cachedContentHeight || oldCachedHeaderHeight !== this.#cachedHeaderHeight)\r\n ) {\r\n switch (this.detents[this.#activeDetent]) {\r\n case \"fit\":\r\n this.#updateHeight(this.#computeFitHeight());\r\n break;\r\n\r\n case \"collapsed\":\r\n this.#updateHeight(this.#computeMinHeight());\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #snapToDetent(detent: number): void {\r\n if (detent >= 0 && detent < this.detents.length) {\r\n this.#activeDetent = detent;\r\n this.#snapToHeight(this.#computeDetentHeight(this.detents[detent]));\r\n }\r\n }\r\n\r\n /** @private */\r\n async #snapToHeight(height: number): Promise<void> {\r\n if (this.#snapAnimation) {\r\n this.#updateHeight(this.clientHeight);\r\n this.#snapAnimation?.cancel();\r\n this.#snapAnimation = undefined;\r\n }\r\n\r\n if (!prefersReducedMotion()) {\r\n this.#snapAnimation = this.animate(\r\n [{ \"--_bottom-sheet-height\": `${this.clientHeight}px` }, { \"--_bottom-sheet-height\": `${height}px` }],\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.#updateHeight(height);\r\n this.#snapAnimation = undefined;\r\n };\r\n await this.#snapAnimation.finished;\r\n } else {\r\n this.#updateHeight(height);\r\n }\r\n }\r\n\r\n /** @private */\r\n #updateHeight(height: number): void {\r\n this.style.setProperty(\"--_bottom-sheet-height\", `${height}px`);\r\n setCustomState(this, \"--full\", height === this.#computeMaxHeight());\r\n const content = this.shadowRoot?.querySelector<HTMLElement>(\".content\");\r\n if (content) {\r\n content.inert = height <= this.#computePeekHeight();\r\n }\r\n }\r\n}\r\n\r\ninterface M3eBottomSheetElementEventMap extends HTMLElementEventMap {\r\n opening: Event;\r\n opened: Event;\r\n closing: Event;\r\n closed: Event;\r\n cancel: Event;\r\n}\r\n\r\nexport interface M3eBottomSheetElement {\r\n addEventListener<K extends keyof M3eBottomSheetElementEventMap>(\r\n type: K,\r\n listener: (this: M3eBottomSheetElement, ev: M3eBottomSheetElementEventMap[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 M3eBottomSheetElementEventMap>(\r\n type: K,\r\n listener: (this: M3eBottomSheetElement, ev: M3eBottomSheetElementEventMap[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-bottom-sheet\": M3eBottomSheetElement;\r\n }\r\n}\r\n","import { property } from \"lit/decorators.js\";\r\n\r\nimport { ActionElementBase, customElement, HtmlFor } from \"@m3e/web/core\";\r\nimport { addAriaReferencedId, removeAriaReferencedId } from \"@m3e/web/core/a11y\";\r\n\r\nimport { M3eBottomSheetElement } from \"./BottomSheetElement\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to trigger a bottom sheet.\r\n * @tag m3e-bottom-sheet-trigger\r\n *\r\n * @slot - Renders the content of the trigger.\r\n *\r\n * @attr detent - The zero‑based index of the detent the sheet should open to.\r\n * @attr secondary - Marks this trigger as a secondary trigger for accessibility. Secondary triggers do not receive ARIA ownership.\r\n */\r\n@customElement(\"m3e-bottom-sheet-trigger\")\r\nexport class M3eBottomSheetTriggerElement extends HtmlFor(ActionElementBase) {\r\n /**\r\n * The zero‑based index of the detent the sheet should open to.\r\n * @default undefined\r\n */\r\n @property({ type: Number }) detent?: number;\r\n\r\n /**\r\n * Marks this trigger as a secondary trigger for accessibility. Secondary triggers do not receive ARIA ownership.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) secondary = false;\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (control instanceof M3eBottomSheetElement) {\r\n super.attach(control);\r\n\r\n if (this.parentElement) {\r\n if (!control.modal) {\r\n if (!this.secondary) {\r\n this.parentElement.ariaExpanded = \"false\";\r\n addAriaReferencedId(this.parentElement, \"aria-controls\", control.id);\r\n if (this.parentElement.id) {\r\n addAriaReferencedId(control, \"aria-labelledby\", this.parentElement.id);\r\n }\r\n }\r\n } else {\r\n this.parentElement.ariaHasPopup = \"dialog\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control && this.parentElement && !this.secondary) {\r\n removeAriaReferencedId(this.parentElement, \"aria-controls\", this.control.id);\r\n }\r\n super.detach();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override _onClick(): void {\r\n if (this.control instanceof M3eBottomSheetElement) {\r\n if (this.control.modal) {\r\n this.control.show(this.detent);\r\n } else {\r\n this.control.toggle(this.detent);\r\n if (!this.secondary && this.parentElement) {\r\n this.parentElement.ariaExpanded = `${this.control.open}`;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-bottom-sheet-trigger\": M3eBottomSheetTriggerElement;\r\n }\r\n}\r\n"],"names":["M3eBottomSheetActionElement","ActionElementBase","_onClick","closest","hide","__decorate","customElement","M3eBottomSheetElement","M3eBottomSheetElement_1","ReconnectedCallback","SuppressInitialAnimation","AttachInternals","LitElement","constructor","_M3eBottomSheetElement_documentClickHandler","set","e","__classPrivateFieldGet","call","_M3eBottomSheetElement_documentKeyDownHandler","_M3eBottomSheetElement_windowResizeHandler","_M3eBottomSheetElement_instances","_M3eBottomSheetElement_handleWindowResize","_M3eBottomSheetElement_velocityTracker","VelocityTracker","_M3eBottomSheetElement_scrollLockController","ScrollLockController","_M3eBottomSheetElement_inertController","InertController","_M3eBottomSheetElement_resizeController","ResizeController","target","skipInitial","callback","x","_M3eBottomSheetElement_handleSectionResize","_M3eBottomSheetElement_trigger","_M3eBottomSheetElement_dragState","_M3eBottomSheetElement_dragged","_M3eBottomSheetElement_activeDetent","_M3eBottomSheetElement_requestDetent","_M3eBottomSheetElement_cachedContentHeight","_M3eBottomSheetElement_cachedHeaderHeight","_M3eBottomSheetElement_snapAnimation","modal","open","handle","handleLabel","detents","detent","hideable","hideFriction","overshootLimit","show","__classPrivateFieldSet","undefined","_M3eBottomSheetElement_snapToDetent","toggle","cycle","length","_a","update","changedProperties","has","role","ariaModal","popover","reconnectedCallback","_M3eBottomSheetElement_initialize","firstUpdated","_changedProperties","updated","dispatchEvent","Event","cancelable","__openSheet","inert","window","addEventListener","Math","min","max","_M3eBottomSheetElement_updateHeight","_M3eBottomSheetElement_computeDetentHeight","requestAnimationFrame","removeEventListener","document","activeElement","lock","showPopover","focusable","querySelector","M3eInteractivityChecker","isFocusable","shadowRoot","focusWhenReady","_M3eBottomSheetElement_snapToHeight","then","unlock","hidePopover","HTMLElement","focus","render","html","_M3eBottomSheetElement_handleHeaderPointerDown","_M3eBottomSheetElement_handleHeaderPointerMove","_M3eBottomSheetElement_handleHeaderPointerUp","_M3eBottomSheetElement_handleDragHandleClick","_M3eBottomSheetElement_handleDragHandleKeyDown","nothing","content","clientHeight","observe","header","setPointerCapture","pointerId","style","cursor","reset","add","clientY","maxHeight","effectiveMaxHeight","map","startY","startHeight","minHeight","_M3eBottomSheetElement_computeMinHeight","minDragThreshold","abs","getCoalescedEvents","forEach","timeStamp","newHeight","overshoot","compressed","releasePointerCapture","significantVelocityThreshold","pointerType","velocity","getVelocity","nextDetent","hideDistanceThreshold","collapsed","_M3eBottomSheetElement_getClosestDetent","composedPath","includes","key","shiftKey","ctrlKey","preventDefault","hasCustomState","defaultPrevented","isModifierAllowed","currentHeight","nextHeight","Infinity","i","detentHeight","closestDetent","closestDistance","distance","_M3eBottomSheetElement_computeMaxHeight","_M3eBottomSheetElement_computeFitHeight","endsWith","parseFloat","base","innerHeight","computeCssSize","body","bodyStyle","getComputedStyle","paddingBlockStart","paddingBlockEnd","entries","oldCachedContentHeight","oldCachedHeaderHeight","entry","classList","contains","Array","isArray","borderBoxSize","blockSize","height","cancel","prefersReducedMotion","animate","duration","easing","onfinish","finished","setProperty","setCustomState","_M3eBottomSheetElement_computePeekHeight","registerStyleSheet","css","styles","DesignToken","color","onSurface","surfaceContainerLow","unsafeCSS","motion","medium2","standardDecelerate","standard","elevation","level1","shape","corner","none","extraLargeTop","short3","scrim","long2","scrollbar","thinWidth","typescale","medium","fontSize","fontWeight","lineHeight","tracking","title","large","full","onSurfaceVariant","property","type","Boolean","reflect","prototype","attribute","converter","spaceSeparatedStringConverter","Number","M3eBottomSheetTriggerElement","HtmlFor","secondary","attach","control","parentElement","ariaExpanded","addAriaReferencedId","id","ariaHasPopup","detach","removeAriaReferencedId"],"mappings":"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"}
1
+ {"version":3,"file":"bottom-sheet.js","sources":["../../src/bottom-sheet/BottomSheetActionElement.ts","../../src/bottom-sheet/BottomSheetElement.ts","../../src/bottom-sheet/BottomSheetTriggerElement.ts"],"sourcesContent":["import { ActionElementBase, customElement } from \"@m3e/web/core\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to close a parenting bottom sheet.\r\n * @tag m3e-bottom-sheet-action\r\n *\r\n * @slot - Renders the content of the action.\r\n */\r\n@customElement(\"m3e-bottom-sheet-action\")\r\nexport class M3eBottomSheetActionElement extends ActionElementBase {\r\n /** @inheritdoc */\r\n protected override _onClick(): void {\r\n this.closest(\"m3e-bottom-sheet\")?.hide();\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-bottom-sheet-action\": M3eBottomSheetActionElement;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, nothing, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n AttachInternals,\r\n customElement,\r\n computeCssSize,\r\n DesignToken,\r\n focusWhenReady,\r\n hasCustomState,\r\n prefersReducedMotion,\r\n ResizeController,\r\n ScrollLockController,\r\n setCustomState,\r\n spaceSeparatedStringConverter,\r\n VelocityTracker,\r\n SuppressInitialAnimation,\r\n ReconnectedCallback,\r\n registerStyleSheet,\r\n InertController,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { isModifierAllowed, M3eInteractivityChecker } from \"@m3e/web/core/a11y\";\r\nimport \"@m3e/web/core/a11y\";\r\n\r\n/**\r\n * A sheet used to show secondary content anchored to the bottom of the screen.\r\n *\r\n * @description\r\n * The `m3e-bottom-sheet` component implements a Material 3 bottom sheet with\r\n * gesture‑driven resizing, detent snapping, and adaptive motion. It behaves as\r\n * a heavy surface: transitions use non‑bouncy, decelerating motion.\r\n *\r\n * The sheet supports direct manipulation through vertical drag gestures.\r\n * Movement below an 8px threshold is ignored to ensure reliable tap‑to‑cycle\r\n * behavior on the handle. Once activated, dragging updates the sheet height\r\n * with friction near the minimum height to prevent abrupt collapse.\r\n *\r\n * When detents are defined, the sheet snaps to the nearest detent on release.\r\n * If hideable, downward gestures may dismiss the sheet using either velocity\r\n * or a small distance threshold below the collapsed detent. When no detents\r\n * are present, the sheet behaves as a simple open/hidden surface with a\r\n * bottom‑measured hide threshold.\r\n *\r\n * @example\r\n * The following example shows a modal bottom sheet with a drag handle,\r\n * three detents (`fit`, `half`, and `full`), and an action list. The sheet\r\n * is opened using a dedicated `m3e-bottom-sheet-trigger` associated by ID.\r\n * ```html\r\n * <m3e-button>\r\n * <m3e-bottom-sheet-trigger for=\"bottomSheet\">\r\n * Open Bottom sheet\r\n * </m3e-bottom-sheet-trigger>\r\n * </m3e-button>\r\n *\r\n * <m3e-bottom-sheet id=\"bottomSheet\" modal handle hideable detents=\"fit half full\">\r\n * <m3e-action-list>\r\n * <m3e-list-action autofocus>\r\n * <m3e-bottom-sheet-action>Google Keep</m3e-bottom-sheet-action>\r\n * <span slot=\"supporting-text\">Add to a note</span>\r\n * </m3e-list-action>\r\n * <m3e-list-action>\r\n * <m3e-bottom-sheet-action>Google Docs</m3e-bottom-sheet-action>\r\n * <span slot=\"supporting-text\">Embed in a document</span>\r\n * </m3e-list-action>\r\n * </m3e-action-list>\r\n * </m3e-bottom-sheet>\r\n * ```\r\n *\r\n * @tag m3e-bottom-sheet\r\n *\r\n * @slot - Renders the content of the sheet.\r\n * @slot header - Renders the header of the sheet.\r\n *\r\n * @attr detent - The zero‑based index of the detent the sheet should open to.\r\n * @attr detents - Detents (discrete height states) the sheet can snap to.\r\n * @attr handle - Whether to display a drag handle and enable the top region of the sheet as a gesture surface for dragging between detents.\r\n * @attr handle-label - The accessible label given to the drag handle.\r\n * @attr hideable - Whether the bottom sheet can hide when its swiped down.\r\n * @attr hide-friction - The friction coefficient to hide the sheet.\r\n * @attr modal - Whether the bottom sheet behaves as modal.\r\n * @attr open - Whether the bottom sheet is open.\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 *\r\n * @fires opening - Dispatched when the sheet begins to open.\r\n * @fires opened - Dispatched when the sheet has opened.\r\n * @fires cancel - Dispatched when the sheet is cancelled.\r\n * @fires closing - Dispatched when the sheet begins to close.\r\n * @fires closed - Dispatched when the sheet has closed.\r\n *\r\n * @cssprop --m3e-bottom-sheet-width - The width of the sheet.\r\n * @cssprop --m3e-bottom-sheet-max-width - The maximum width of the sheet.\r\n * @cssprop --m3e-bottom-sheet-container-color - The background color of the sheet container.\r\n * @cssprop --m3e-bottom-sheet-elevation - The elevation level when not modal.\r\n * @cssprop --m3e-bottom-sheet-modal-elevation - The elevation level when modal.\r\n * @cssprop --m3e-bottom-sheet-full-elevation - The elevation level when full height.\r\n * @cssprop --m3e-bottom-sheet-z-index - The z-index of the non-modal sheet.\r\n * @cssprop --m3e-bottom-sheet-minimized-container-shape - The border radius when minimized.\r\n * @cssprop --m3e-bottom-sheet-container-shape - The border radius of the sheet container.\r\n * @cssprop --m3e-bottom-sheet-full-container-shape - The border radius when full height.\r\n * @cssprop --m3e-bottom-sheet-scrim-color - The color of the scrim overlay.\r\n * @cssprop --m3e-bottom-sheet-scrim-opacity - The opacity of the scrim overlay.\r\n * @cssprop --m3e-bottom-sheet-peek-height - The visible height when minimized.\r\n * @cssprop --m3e-bottom-sheet-compact-top-space - The top space in compact mode.\r\n * @cssprop --m3e-bottom-sheet-top-space - The top space in standard mode.\r\n * @cssprop --m3e-bottom-sheet-padding-block - The vertical padding.\r\n * @cssprop --m3e-bottom-sheet-padding-inline - The horizontal padding.\r\n * @cssprop --m3e-bottom-sheet-handle-container-height - The height of the drag handle container.\r\n * @cssprop --m3e-bottom-sheet-handle-width - The width of the drag handle.\r\n * @cssprop --m3e-bottom-sheet-handle-height - The height of the drag handle.\r\n * @cssprop --m3e-bottom-sheet-handle-shape - The border radius of the handle.\r\n * @cssprop --m3e-bottom-sheet-handle-color - The color of the drag handle.\r\n * @cssprop --m3e-bottom-sheet-handle-focus-ring-offset - The offset of the focus ring around the handle.\r\n * @cssprop --m3e-bottom-sheet-color - The foreground (text) color of the sheet.\r\n * @cssprop --m3e-bottom-sheet-content-font-size - Font size for the sheet content.\r\n * @cssprop --m3e-bottom-sheet-content-font-weight - Font weight for the sheet content.\r\n * @cssprop --m3e-bottom-sheet-content-line-height - Line height for the sheet content.\r\n * @cssprop --m3e-bottom-sheet-content-tracking - Letter spacing (tracking) for the sheet content.\r\n * @cssprop --m3e-bottom-sheet-header-font-size - Font size for the sheet header.\r\n * @cssprop --m3e-bottom-sheet-header-font-weight - Font weight for the sheet header.\r\n * @cssprop --m3e-bottom-sheet-header-line-height - Line height for the sheet header.\r\n * @cssprop --m3e-bottom-sheet-header-tracking - Letter spacing (tracking) for the sheet header.\r\n */\r\n@customElement(\"m3e-bottom-sheet\")\r\nexport class M3eBottomSheetElement extends ReconnectedCallback(SuppressInitialAnimation(AttachInternals(LitElement))) {\r\n static {\r\n registerStyleSheet(css`\r\n @property --_bottom-sheet-height {\r\n syntax: \"<length>\";\r\n inherits: false;\r\n initial-value: 50vh;\r\n }\r\n m3e-bottom-sheet > [slot=\"header\"] {\r\n margin-block-end: var(--m3e-bottom-sheet-padding-block, 0.5rem);\r\n margin-inline: var(--m3e-bottom-sheet-padding-inline, 1rem);\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 position: fixed;\r\n left: 50%;\r\n top: calc(100vh - var(--_bottom-sheet-height));\r\n margin: 0;\r\n padding: 0;\r\n outline: none;\r\n overflow: hidden;\r\n border: none;\r\n box-sizing: border-box;\r\n width: var(--m3e-bottom-sheet-width, 100%);\r\n max-width: var(--m3e-bottom-sheet-max-width, 40rem);\r\n height: var(--_bottom-sheet-height);\r\n color: var(--m3e-bottom-sheet-color, ${DesignToken.color.onSurface});\r\n background-color: var(--m3e-bottom-sheet-container-color, ${DesignToken.color.surfaceContainerLow});\r\n }\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) {\r\n transition: ${unsafeCSS(\r\n `transform ${DesignToken.motion.duration.medium2} ${DesignToken.motion.easing.standardDecelerate},\r\n border-radius ${DesignToken.motion.duration.medium2} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n :host(:not([modal]):not(:is(:state(--full), :--full))) .elevation {\r\n --m3e-elevation-level: var(--m3e-bottom-sheet-elevation, ${DesignToken.elevation.level1});\r\n }\r\n :host([modal]:not(:is(:state(--full), :--full))) .elevation {\r\n --m3e-elevation-level: var(--m3e-bottom-sheet-modal-elevation, ${DesignToken.elevation.level1});\r\n }\r\n :host(:is(:state(--full), :--full)) .elevation {\r\n --m3e-elevation-level: var(--m3e-bottom-sheet-full-elevation, ${DesignToken.elevation.level1});\r\n }\r\n :host(:not([modal])) {\r\n z-index: var(--m3e-bottom-sheet-z-index, 10);\r\n }\r\n :host(:not([modal]):not([open])),\r\n :host([modal]:not(:popover-open)) {\r\n border-radius: var(--m3e-bottom-sheet-minimized-container-shape, ${DesignToken.shape.corner.none});\r\n transform: translateX(-50%) translateY(100%);\r\n }\r\n :host(:not([modal])[open]:not(:is(:state(--full), :--full))),\r\n :host([modal]:not(:is(:state(--full), :--full)):popover-open) {\r\n border-radius: var(--m3e-bottom-sheet-container-shape, ${DesignToken.shape.corner.extraLargeTop});\r\n }\r\n :host(:not([modal])[open]:is(:state(--full), :--full)),\r\n :host([modal]:is(:state(--full), :--full):popover-open) {\r\n border-radius: var(--m3e-bottom-sheet-full-container-shape, ${DesignToken.shape.corner.extraLargeTop});\r\n }\r\n :host(:not([modal])[open]),\r\n :host([modal]:popover-open) {\r\n transform: translateX(-50%) translateY(0);\r\n }\r\n :host([modal]:not(:is(:state(--no-animate), :--no-animate)))::backdrop {\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard}, \r\n overlay ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete,\r\n visibility ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n :host([modal]:popover-open)::backdrop {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-bottom-sheet-scrim-color, ${DesignToken.color.scrim}) var(--m3e-bottom-sheet-scrim-opacity, 32%),\r\n transparent\r\n );\r\n }\r\n :host([modal]:popover-open:not(:is(:state(--no-animate), :--no-animate)))::backdrop {\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard}, \r\n overlay ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete,\r\n visibility ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n @starting-style {\r\n :host([modal]:popover-open)::backdrop {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-bottom-sheet-scrim-color, ${DesignToken.color.scrim}) 0%,\r\n transparent\r\n );\r\n }\r\n }\r\n .base {\r\n display: flex;\r\n border-radius: inherit;\r\n flex-direction: column;\r\n height: 100%;\r\n --_bottom-sheet-peek-height: var(--m3e-bottom-sheet-peek-height, 0);\r\n --_bottom-sheet-top-space: var(--m3e-bottom-sheet-compact-top-space, 4.5rem);\r\n }\r\n @media (max-height: 640px) {\r\n .base {\r\n --_bottom-sheet-top-space: var(--m3e-bottom-sheet-top-space, 3.5rem);\r\n }\r\n }\r\n .body {\r\n flex: 1 1 auto;\r\n overflow-y: auto;\r\n scrollbar-width: ${DesignToken.scrollbar.thinWidth};\r\n scrollbar-color: ${DesignToken.scrollbar.color};\r\n padding-block-end: var(--m3e-bottom-sheet-padding-block, 0.5rem);\r\n padding-inline: var(--m3e-bottom-sheet-padding-inline, 1rem);\r\n font-size: var(--m3e-bottom-sheet-content-font-size, ${DesignToken.typescale.standard.body.medium.fontSize});\r\n font-weight: var(\r\n --m3e-bottom-sheet-content-font-weight,\r\n ${DesignToken.typescale.standard.body.medium.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-bottom-sheet-content-line-height,\r\n ${DesignToken.typescale.standard.body.medium.lineHeight}\r\n );\r\n letter-spacing: var(--m3e-bottom-sheet-content-tracking, ${DesignToken.typescale.standard.body.medium.tracking});\r\n }\r\n .content {\r\n height: fit-content;\r\n }\r\n :host(:not([handle])) .header {\r\n display: none;\r\n }\r\n :host(:not([handle])) .body,\r\n .header {\r\n border-top-left-radius: inherit;\r\n border-top-right-radius: inherit;\r\n padding-block-start: var(--m3e-bottom-sheet-padding-block, 0.5rem);\r\n font-size: var(--m3e-bottom-sheet-header-font-size, ${DesignToken.typescale.standard.title.large.fontSize});\r\n font-weight: var(--m3e-bottom-sheet-header-font-weight, ${DesignToken.typescale.standard.title.large.fontWeight});\r\n line-height: var(--m3e-bottom-sheet-header-line-height, ${DesignToken.typescale.standard.title.large.lineHeight});\r\n letter-spacing: var(--m3e-bottom-sheet-header-tracking, ${DesignToken.typescale.standard.title.large.tracking});\r\n }\r\n .header {\r\n cursor: grab;\r\n touch-action: none;\r\n outline: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n box-sizing: border-box;\r\n flex: none;\r\n display: flex;\r\n flex-direction: column;\r\n min-height: 3rem;\r\n --m3e-app-bar-container-color: var(--m3e-bottom-sheet-container-color, ${DesignToken.color.surfaceContainerLow});\r\n }\r\n .handle-row {\r\n position: relative;\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n opacity: 1;\r\n visibility: visible;\r\n height: var(--m3e-bottom-sheet-handle-container-height, 1.5rem);\r\n }\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .handle-row {\r\n transition: ${unsafeCSS(\r\n `opacity ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard},\r\n padding ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard},\r\n height ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard},\r\n visibility ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n .handle {\r\n position: relative;\r\n width: var(--m3e-bottom-sheet-handle-width, 2rem);\r\n height: var(--m3e-bottom-sheet-handle-height, 4px);\r\n border-radius: var(--m3e-bottom-sheet-handle-shape, ${DesignToken.shape.corner.full});\r\n background-color: var(--m3e-bottom-sheet-handle-color, ${DesignToken.color.onSurfaceVariant});\r\n }\r\n .handle-touch {\r\n position: absolute;\r\n aspect-ratio: 1 / 1;\r\n height: 3rem;\r\n left: calc(0px - calc(calc(3rem - var(--m3e-bottom-sheet-handle-width, 2rem)) / 2));\r\n right: calc(0px - calc(calc(3rem - var(--m3e-bottom-sheet-handle-width, 2rem)) / 2));\r\n top: calc(\r\n 0px - calc(\r\n calc(3rem - var(--m3e-bottom-sheet-handle-container-height, 1.5rem)) - calc(\r\n var(--m3e-bottom-sheet-handle-height, 4px) / 2\r\n )\r\n )\r\n );\r\n }\r\n @media (prefers-reduced-motion) {\r\n :host(:not(:is(:state(--no-animate), :--no-animate))),\r\n :host([modal]:not(:is(:state(--no-animate), :--no-animate)))::backdrop,\r\n :host([modal]:popover-open:not(:is(:state(--no-animate), :--no-animate)))::backdrop,\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .handle-row {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n :host([modal]:not(:is(:state(--no-animate), :--no-animate)))::backdrop,\r\n :host([modal]:popover-open:not(:is(:state(--no-animate), :--no-animate)))::backdrop {\r\n transition: none;\r\n }\r\n .base {\r\n border-style: solid;\r\n border-width: 1px;\r\n border-color: CanvasText;\r\n }\r\n .handle {\r\n background-color: ButtonText;\r\n }\r\n }\r\n `;\r\n\r\n /** @private */ private static __openSheet?: M3eBottomSheetElement;\r\n\r\n /** @private */ readonly #documentClickHandler = (e: Event) => this.#handleDocumentClick(e);\r\n /** @private */ readonly #documentKeyDownHandler = (e: KeyboardEvent) => this.#handleDocumentKeyDown(e);\r\n /** @private */ readonly #windowResizeHandler = () => this.#handleWindowResize();\r\n /** @private */ readonly #velocityTracker = new VelocityTracker();\r\n /** @private */ readonly #scrollLockController = new ScrollLockController(this);\r\n /** @private */ readonly #inertController = new InertController(this);\r\n\r\n /** @private */\r\n readonly #resizeController = new ResizeController(this, {\r\n target: null,\r\n skipInitial: true,\r\n callback: (x) => this.#handleSectionResize(x),\r\n });\r\n\r\n /** @private */ #trigger: Element | null = null;\r\n /** @private */ #dragState?: {\r\n startY: number;\r\n startHeight: number;\r\n effectiveMaxHeight: number;\r\n maxHeight: number;\r\n minHeight: number;\r\n };\r\n /** @private */ #dragged = false;\r\n /** @private */ #activeDetent = 0;\r\n /** @private */ #requestDetent?: number;\r\n /** @private */ #cachedContentHeight = 0;\r\n /** @private */ #cachedHeaderHeight = 0;\r\n /** @private */ #snapAnimation?: Animation;\r\n\r\n /**\r\n * Whether the bottom sheet behaves as modal.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) modal = false;\r\n\r\n /**\r\n * Whether the bottom sheet is open.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n\r\n /**\r\n * Whether to display a drag handle and enable the top region of the sheet as a gesture\r\n * surface for dragging between detents.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) handle = false;\r\n\r\n /**\r\n * The accessible label given to the drag handle.\r\n * @default \"Drag handle\"\r\n */\r\n @property({ attribute: \"handle-label\" }) handleLabel = \"Drag handle\";\r\n\r\n /**\r\n * Detents (discrete height states) the sheet can snap to.\r\n * @default []\r\n */\r\n @property({ attribute: \"detents\", converter: spaceSeparatedStringConverter }) detents: string[] = [];\r\n\r\n /**\r\n * The zero‑based index of the detent the sheet should open to.\r\n * @default 0\r\n */\r\n @property({ type: Number }) detent = 0;\r\n\r\n /**\r\n * Whether the bottom sheet can hide when its swiped down.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) hideable = false;\r\n\r\n /**\r\n * The friction coefficient to hide the sheet.\r\n * @default 0.5\r\n */\r\n @property({ attribute: \"hide-friction\", type: Number }) hideFriction = 0.5;\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 * Shows the sheet.\r\n * @param {number} detent The zero‑based index of the detent the sheet should open to.\r\n */\r\n show(detent: number = this.detent): void {\r\n if (!this.open) {\r\n this.#requestDetent = detent;\r\n this.open = true;\r\n } else if (detent !== undefined && this.#activeDetent !== detent) {\r\n this.#snapToDetent(detent);\r\n }\r\n }\r\n\r\n /** Hides the sheet. */\r\n hide(): void {\r\n this.open = false;\r\n }\r\n\r\n /**\r\n * Toggles the opened state of the sheet.\r\n * @param {number} detent The zero‑based index of the detent the sheet should open to.\r\n */\r\n toggle(detent?: number): void {\r\n if (this.open) {\r\n this.hide();\r\n } else {\r\n this.show(detent);\r\n }\r\n }\r\n\r\n /** Moves the sheet to the next detent. */\r\n cycle(): void {\r\n if (!this.open) {\r\n this.show();\r\n } else if (this.detents.length > 0) {\r\n if (this.#activeDetent < this.detents.length - 1) {\r\n this.#activeDetent++;\r\n this.#snapToDetent(this.#activeDetent);\r\n } else if (this.hideable) {\r\n this.hide();\r\n }\r\n } else {\r\n this.hide();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"modal\")) {\r\n this.role = this.modal ? \"dialog\" : \"region\";\r\n this.ariaModal = this.modal ? \"true\" : null;\r\n this.popover = this.modal ? \"manual\" : null;\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override reconnectedCallback(): void {\r\n super.reconnectedCallback();\r\n this.#initialize();\r\n }\r\n\r\n /** @inheritdoc */\r\n 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 updated(_changedProperties: PropertyValues): void {\r\n super.updated(_changedProperties);\r\n\r\n if (_changedProperties.has(\"open\")) {\r\n if (this.open) {\r\n if (!this.dispatchEvent(new Event(\"opening\", { cancelable: true }))) {\r\n this.open = false;\r\n return;\r\n }\r\n\r\n // Only one sheet can be open at a time.\r\n if (M3eBottomSheetElement.__openSheet !== this) {\r\n M3eBottomSheetElement.__openSheet?.hide();\r\n }\r\n M3eBottomSheetElement.__openSheet = this;\r\n\r\n this.inert = false;\r\n\r\n window.addEventListener(\"resize\", this.#windowResizeHandler);\r\n\r\n // If there are detents (regardless of handle) open to the requested, default (or first) detent.\r\n // Otherwise, open to fit unless its greater than half.\r\n\r\n if (this.detents.length > 0) {\r\n this.#activeDetent = Math.min(Math.max(0, this.#requestDetent ?? this.detent), this.detents.length - 1);\r\n this.#updateHeight(this.#computeDetentHeight(this.detents[this.#activeDetent]));\r\n } else {\r\n this.#updateHeight(Math.min(this.#computeDetentHeight(\"fit\"), this.#computeDetentHeight(\"half\")));\r\n }\r\n this.#requestDetent = undefined;\r\n } else {\r\n if (!this.dispatchEvent(new Event(\"closing\", { cancelable: true }))) {\r\n this.open = true;\r\n return;\r\n }\r\n\r\n // The following ensures layout is stable so that first tab isn't \"skipped\"\r\n requestAnimationFrame(() => (this.inert = true));\r\n\r\n window.removeEventListener(\"resize\", this.#windowResizeHandler);\r\n\r\n if (M3eBottomSheetElement.__openSheet === this) {\r\n M3eBottomSheetElement.__openSheet = undefined;\r\n }\r\n }\r\n\r\n if (this.modal) {\r\n if (this.open) {\r\n this.#trigger = document.activeElement;\r\n this.#inertController.lock();\r\n this.#scrollLockController.lock();\r\n this.showPopover();\r\n requestAnimationFrame(() => {\r\n document.addEventListener(\"click\", this.#documentClickHandler);\r\n document.addEventListener(\"keydown\", this.#documentKeyDownHandler);\r\n });\r\n\r\n let focusable: HTMLElement | null | undefined = this.querySelector<HTMLElement>(\"[autofocus]\");\r\n if (!focusable || !M3eInteractivityChecker.isFocusable(focusable)) {\r\n focusable = this.shadowRoot?.querySelector(\".handle\");\r\n }\r\n if (focusable) {\r\n focusWhenReady(focusable);\r\n }\r\n } else {\r\n this.#snapToHeight(0).then(() => {\r\n this.#inertController.unlock();\r\n this.#scrollLockController.unlock();\r\n document.removeEventListener(\"click\", this.#documentClickHandler);\r\n document.removeEventListener(\"keydown\", this.#documentKeyDownHandler);\r\n this.hidePopover();\r\n if (this.#trigger instanceof HTMLElement) {\r\n this.#trigger.focus();\r\n }\r\n this.#trigger = null;\r\n });\r\n }\r\n }\r\n\r\n this.dispatchEvent(new Event(this.open ? \"opened\" : \"closed\"));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<m3e-focus-trap ?disabled=\"${!this.modal}\">\r\n <div class=\"base\">\r\n <m3e-elevation class=\"elevation\"></m3e-elevation>\r\n <div\r\n class=\"header\"\r\n @pointerdown=\"${this.#handleHeaderPointerDown}\"\r\n @pointermove=\"${this.#handleHeaderPointerMove}\"\r\n @pointerup=\"${this.#handleHeaderPointerUp}\"\r\n >\r\n ${this.handle\r\n ? html`<div class=\"handle-row\">\r\n <div\r\n id=\"handle\"\r\n class=\"handle\"\r\n role=\"button\"\r\n aria-label=\"${this.handleLabel}\"\r\n tabindex=\"0\"\r\n @click=\"${this.#handleDragHandleClick}\"\r\n @keydown=\"${this.#handleDragHandleKeyDown}\"\r\n >\r\n <m3e-focus-ring class=\"focus-ring\" for=\"handle\"></m3e-focus-ring>\r\n <div class=\"handle-touch\" aria-hidden=\"true\"></div>\r\n </div>\r\n </div>`\r\n : nothing}\r\n <slot name=\"header\"></slot>\r\n </div>\r\n <div class=\"body\">\r\n <div class=\"content\">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n </div>\r\n </m3e-focus-trap>`;\r\n }\r\n\r\n /** @private */\r\n #initialize(): void {\r\n const content = this.shadowRoot?.querySelector<HTMLElement>(\".content\");\r\n if (content) {\r\n this.#cachedContentHeight = content.clientHeight;\r\n this.#resizeController.observe(content);\r\n }\r\n\r\n const header = this.shadowRoot?.querySelector<HTMLElement>(\".header\");\r\n if (header) {\r\n this.#cachedHeaderHeight = header.clientHeight;\r\n this.#resizeController.observe(header);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleHeaderPointerDown(e: PointerEvent): void {\r\n if (e.target instanceof HTMLElement && M3eInteractivityChecker.isFocusable(e.target)) {\r\n return;\r\n }\r\n\r\n (<HTMLElement>e.target).setPointerCapture(e.pointerId);\r\n (<HTMLElement>e.target).style.cursor = \"grabbing\";\r\n\r\n this.#velocityTracker.reset();\r\n this.#velocityTracker.add(e.clientY);\r\n\r\n const maxHeight = this.#computeMaxHeight();\r\n const effectiveMaxHeight =\r\n this.detents.length > 0 ? Math.max(...this.detents.map((x) => this.#computeDetentHeight(x))) : maxHeight;\r\n\r\n this.#dragState = {\r\n startY: e.clientY,\r\n startHeight: this.clientHeight,\r\n effectiveMaxHeight,\r\n maxHeight,\r\n minHeight: this.#computeMinHeight(),\r\n };\r\n this.#dragged = false;\r\n }\r\n\r\n /** @private */\r\n #handleHeaderPointerMove(e: PointerEvent): void {\r\n if (!this.#dragState) {\r\n return;\r\n }\r\n\r\n const minDragThreshold = 8;\r\n if (Math.abs(e.clientY - this.#dragState.startY) <= minDragThreshold) {\r\n // Ignore movement under threshold\r\n return;\r\n }\r\n\r\n (e.getCoalescedEvents?.() ?? [e]).forEach((x) => this.#velocityTracker.add(x.clientY, e.timeStamp));\r\n\r\n let newHeight = this.#dragState.startHeight - (e.clientY - this.#dragState.startY);\r\n if (newHeight < this.#dragState.minHeight) {\r\n if (this.hideable) {\r\n const overshoot = (this.#dragState.minHeight - newHeight) * this.hideFriction;\r\n newHeight = this.#dragState.minHeight - overshoot;\r\n } else {\r\n const overshoot = this.#dragState.minHeight - newHeight;\r\n const overshootLimit = this.#dragState.maxHeight * (this.overshootLimit / 100);\r\n const compressed = (overshootLimit * overshoot) / (overshoot + overshootLimit);\r\n newHeight = this.#dragState.minHeight - compressed;\r\n }\r\n } else if (newHeight > this.#dragState.effectiveMaxHeight) {\r\n const overshoot = newHeight - this.#dragState.effectiveMaxHeight;\r\n const overshootLimit = this.#dragState.maxHeight * (this.overshootLimit / 100);\r\n const compressed = (overshootLimit * overshoot) / (overshoot + overshootLimit);\r\n newHeight = this.#dragState.effectiveMaxHeight + compressed;\r\n }\r\n\r\n this.#updateHeight(newHeight);\r\n this.#dragged = true;\r\n }\r\n\r\n /** @private */\r\n #handleHeaderPointerUp(e: PointerEvent): void {\r\n if (!this.#dragState) return;\r\n\r\n try {\r\n (<HTMLElement>e.target).releasePointerCapture(e.pointerId);\r\n (<HTMLElement>e.target).style.cursor = \"\";\r\n\r\n if (!this.#dragged) return;\r\n\r\n const significantVelocityThreshold = e.pointerType === \"touch\" ? 1200 : 500;\r\n const velocity = this.#velocityTracker.getVelocity();\r\n\r\n this.#velocityTracker.reset();\r\n\r\n if (this.hideable && velocity >= significantVelocityThreshold) {\r\n if (this.dispatchEvent(new Event(\"cancel\", { cancelable: true }))) {\r\n this.hide();\r\n }\r\n } else if (Math.abs(velocity) >= significantVelocityThreshold) {\r\n if (this.detents.length > 0) {\r\n const nextDetent = this.#getNextHigherDetent();\r\n if (nextDetent !== this.#activeDetent) {\r\n this.#snapToDetent(nextDetent);\r\n }\r\n } else {\r\n this.#snapToHeight(this.#computeDetentHeight(\"full\"));\r\n }\r\n } else {\r\n const hideDistanceThreshold = 20;\r\n if (this.hideable) {\r\n const collapsed = this.#dragState.minHeight;\r\n if (this.clientHeight < collapsed - hideDistanceThreshold) {\r\n this.hide();\r\n return;\r\n }\r\n }\r\n\r\n if (this.detents.length > 0) {\r\n this.#snapToDetent(this.#getClosestDetent());\r\n } else if (this.clientHeight < this.#dragState.minHeight) {\r\n this.#snapToHeight(this.#dragState.minHeight);\r\n } else if (this.clientHeight > this.#dragState.effectiveMaxHeight) {\r\n this.#snapToHeight(this.#dragState.effectiveMaxHeight);\r\n }\r\n }\r\n } finally {\r\n this.#dragState = undefined;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDocumentClick(e: Event): void {\r\n if (\r\n this.open &&\r\n this.modal &&\r\n !e.composedPath().includes(this) &&\r\n this.dispatchEvent(new Event(\"cancel\", { cancelable: true }))\r\n ) {\r\n this.hide();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDocumentKeyDown(e: KeyboardEvent): void {\r\n if (this.open && this.modal && e.key === \"Escape\" && !e.shiftKey && !e.ctrlKey) {\r\n e.preventDefault();\r\n\r\n if (this.dispatchEvent(new Event(\"cancel\", { cancelable: true }))) {\r\n this.hide();\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleWindowResize(): void {\r\n if (this.detents.length > 0 && this.detents[this.#activeDetent] === \"half\") {\r\n this.#updateHeight(this.#computeDetentHeight(\"half\"));\r\n return;\r\n }\r\n\r\n const maxHeight = this.#computeMaxHeight();\r\n if (hasCustomState(this, \"--full\")) {\r\n this.#updateHeight(maxHeight);\r\n } else if (this.clientHeight > maxHeight) {\r\n this.#updateHeight(maxHeight);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDragHandleClick(): void {\r\n if (!this.#dragged) {\r\n this.cycle();\r\n }\r\n this.#dragged = false;\r\n }\r\n\r\n /** @private */\r\n #handleDragHandleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented || !isModifierAllowed(e)) return;\r\n\r\n switch (e.key) {\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n e.preventDefault();\r\n if (this.detents.length > 0) {\r\n const nextDetent = this.#getNextHigherDetent();\r\n if (nextDetent !== this.#activeDetent) {\r\n this.#snapToDetent(nextDetent);\r\n }\r\n } else {\r\n this.#snapToHeight(this.#computeDetentHeight(\"full\"));\r\n }\r\n break;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n e.preventDefault();\r\n if (this.detents.length > 0) {\r\n const nextDetent = this.#getNextLowerDetent();\r\n if (nextDetent !== this.#activeDetent) {\r\n this.#snapToDetent(nextDetent);\r\n } else if (this.hideable) {\r\n this.hide();\r\n }\r\n } else if (this.hideable) {\r\n this.hide();\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #getNextHigherDetent(): number {\r\n const currentHeight = this.clientHeight;\r\n let nextHeight = Infinity;\r\n let nextDetent = this.#activeDetent;\r\n for (let i = 0; i < this.detents.length; i++) {\r\n if (i === this.#activeDetent) continue;\r\n const detentHeight = this.#computeDetentHeight(this.detents[i]);\r\n if (detentHeight > currentHeight && detentHeight < nextHeight) {\r\n nextHeight = detentHeight;\r\n nextDetent = i;\r\n }\r\n }\r\n return nextDetent;\r\n }\r\n\r\n /** @private */\r\n #getNextLowerDetent(): number {\r\n const currentHeight = this.clientHeight;\r\n let nextHeight = -Infinity;\r\n let nextDetent = this.#activeDetent;\r\n for (let i = 0; i < this.detents.length; i++) {\r\n if (i === this.#activeDetent) continue;\r\n const detentHeight = this.#computeDetentHeight(this.detents[i]);\r\n if (detentHeight < currentHeight && detentHeight > nextHeight) {\r\n nextHeight = detentHeight;\r\n nextDetent = i;\r\n }\r\n }\r\n return nextDetent;\r\n }\r\n\r\n /** @private */\r\n #getClosestDetent(): number {\r\n const currentHeight = this.clientHeight;\r\n let closestDetent = this.#activeDetent;\r\n let closestDistance = Infinity;\r\n\r\n for (let i = 0; i < this.detents.length; i++) {\r\n const detentHeight = this.#computeDetentHeight(this.detents[i]);\r\n const distance = Math.abs(currentHeight - detentHeight);\r\n\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 #computeDetentHeight(detent: string): number {\r\n switch (detent) {\r\n case \"collapsed\":\r\n return this.#computeMinHeight();\r\n case \"half\":\r\n return this.#computeMaxHeight() * 0.5;\r\n case \"full\":\r\n return this.#computeMaxHeight();\r\n case \"fit\":\r\n return this.#computeFitHeight();\r\n }\r\n\r\n if (detent.endsWith(\"%\")) {\r\n return this.#computeMaxHeight() * (parseFloat(detent) / 100);\r\n }\r\n\r\n if (detent.endsWith(\"px\")) {\r\n return parseFloat(detent);\r\n }\r\n\r\n return this.#computeMinHeight();\r\n }\r\n\r\n /** @private */\r\n #computeMaxHeight(): number {\r\n const base = this.shadowRoot?.querySelector<HTMLElement>(\".base\");\r\n return window.innerHeight - (base ? computeCssSize(base, \"var(--_bottom-sheet-top-space)\") : 0);\r\n }\r\n\r\n /** @private */\r\n #computeMinHeight(): number {\r\n return this.detents.includes(\"fit\") && !this.detents.includes(\"collapsed\")\r\n ? this.#computeFitHeight()\r\n : this.#computePeekHeight();\r\n }\r\n\r\n /** @private */\r\n #computePeekHeight(): number {\r\n const base = this.shadowRoot?.querySelector<HTMLElement>(\".base\");\r\n return this.#cachedHeaderHeight + (base ? computeCssSize(base, \"var(--_bottom-sheet-peek-height)\") : 0);\r\n }\r\n\r\n /** @private */\r\n #computeFitHeight(): number {\r\n const body = this.shadowRoot?.querySelector<HTMLElement>(\".body\");\r\n if (!body) {\r\n return 0;\r\n }\r\n\r\n const bodyStyle = getComputedStyle(body);\r\n return (\r\n this.#cachedHeaderHeight +\r\n this.#cachedContentHeight +\r\n parseFloat(bodyStyle.paddingBlockStart) +\r\n parseFloat(bodyStyle.paddingBlockEnd)\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleSectionResize(entries: ResizeObserverEntry[]): void {\r\n const oldCachedContentHeight = this.#cachedContentHeight;\r\n const oldCachedHeaderHeight = this.#cachedHeaderHeight;\r\n\r\n for (const entry of entries) {\r\n if (entry.target.classList.contains(\"content\")) {\r\n this.#cachedContentHeight = (<ResizeObserverSize>(\r\n (Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0] : entry.borderBoxSize)\r\n )).blockSize;\r\n } else if (entry.target.classList.contains(\"header\")) {\r\n this.#cachedHeaderHeight = (<ResizeObserverSize>(\r\n (Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0] : entry.borderBoxSize)\r\n )).blockSize;\r\n }\r\n }\r\n\r\n if (\r\n this.open &&\r\n this.detents.length > 0 &&\r\n (oldCachedContentHeight !== this.#cachedContentHeight || oldCachedHeaderHeight !== this.#cachedHeaderHeight)\r\n ) {\r\n switch (this.detents[this.#activeDetent]) {\r\n case \"fit\":\r\n this.#updateHeight(this.#computeFitHeight());\r\n break;\r\n\r\n case \"collapsed\":\r\n this.#updateHeight(this.#computeMinHeight());\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #snapToDetent(detent: number): void {\r\n if (detent >= 0 && detent < this.detents.length) {\r\n this.#activeDetent = detent;\r\n this.#snapToHeight(this.#computeDetentHeight(this.detents[detent]));\r\n }\r\n }\r\n\r\n /** @private */\r\n async #snapToHeight(height: number): Promise<void> {\r\n if (this.#snapAnimation) {\r\n this.#updateHeight(this.clientHeight);\r\n this.#snapAnimation?.cancel();\r\n this.#snapAnimation = undefined;\r\n }\r\n\r\n if (!prefersReducedMotion()) {\r\n this.#snapAnimation = this.animate(\r\n [{ \"--_bottom-sheet-height\": `${this.clientHeight}px` }, { \"--_bottom-sheet-height\": `${height}px` }],\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.#updateHeight(height);\r\n this.#snapAnimation = undefined;\r\n };\r\n await this.#snapAnimation.finished;\r\n } else {\r\n this.#updateHeight(height);\r\n }\r\n }\r\n\r\n /** @private */\r\n #updateHeight(height: number): void {\r\n this.style.setProperty(\"--_bottom-sheet-height\", `${height}px`);\r\n setCustomState(this, \"--full\", height === this.#computeMaxHeight());\r\n const content = this.shadowRoot?.querySelector<HTMLElement>(\".content\");\r\n if (content) {\r\n content.inert = height <= this.#computePeekHeight();\r\n }\r\n }\r\n}\r\n\r\ninterface M3eBottomSheetElementEventMap extends HTMLElementEventMap {\r\n opening: Event;\r\n opened: Event;\r\n closing: Event;\r\n closed: Event;\r\n cancel: Event;\r\n}\r\n\r\nexport interface M3eBottomSheetElement {\r\n addEventListener<K extends keyof M3eBottomSheetElementEventMap>(\r\n type: K,\r\n listener: (this: M3eBottomSheetElement, ev: M3eBottomSheetElementEventMap[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 M3eBottomSheetElementEventMap>(\r\n type: K,\r\n listener: (this: M3eBottomSheetElement, ev: M3eBottomSheetElementEventMap[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-bottom-sheet\": M3eBottomSheetElement;\r\n }\r\n}\r\n","import { property } from \"lit/decorators.js\";\r\n\r\nimport { ActionElementBase, customElement, HtmlFor } from \"@m3e/web/core\";\r\nimport { addAriaReferencedId, removeAriaReferencedId } from \"@m3e/web/core/a11y\";\r\n\r\nimport { M3eBottomSheetElement } from \"./BottomSheetElement\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to trigger a bottom sheet.\r\n * @tag m3e-bottom-sheet-trigger\r\n *\r\n * @slot - Renders the content of the trigger.\r\n *\r\n * @attr detent - The zero‑based index of the detent the sheet should open to.\r\n * @attr secondary - Marks this trigger as a secondary trigger for accessibility. Secondary triggers do not receive ARIA ownership.\r\n */\r\n@customElement(\"m3e-bottom-sheet-trigger\")\r\nexport class M3eBottomSheetTriggerElement extends HtmlFor(ActionElementBase) {\r\n /**\r\n * The zero‑based index of the detent the sheet should open to.\r\n * @default undefined\r\n */\r\n @property({ type: Number }) detent?: number;\r\n\r\n /**\r\n * Marks this trigger as a secondary trigger for accessibility. Secondary triggers do not receive ARIA ownership.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) secondary = false;\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (control instanceof M3eBottomSheetElement) {\r\n super.attach(control);\r\n\r\n if (this.parentElement) {\r\n if (!control.modal) {\r\n if (!this.secondary) {\r\n this.parentElement.ariaExpanded = \"false\";\r\n addAriaReferencedId(this.parentElement, \"aria-controls\", control.id);\r\n if (this.parentElement.id) {\r\n addAriaReferencedId(control, \"aria-labelledby\", this.parentElement.id);\r\n }\r\n }\r\n } else {\r\n this.parentElement.ariaHasPopup = \"dialog\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control && this.parentElement && !this.secondary) {\r\n removeAriaReferencedId(this.parentElement, \"aria-controls\", this.control.id);\r\n }\r\n super.detach();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override _onClick(): void {\r\n if (this.control instanceof M3eBottomSheetElement) {\r\n if (this.control.modal) {\r\n this.control.show(this.detent);\r\n } else {\r\n this.control.toggle(this.detent);\r\n if (!this.secondary && this.parentElement) {\r\n this.parentElement.ariaExpanded = `${this.control.open}`;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-bottom-sheet-trigger\": M3eBottomSheetTriggerElement;\r\n }\r\n}\r\n"],"names":["M3eBottomSheetActionElement","ActionElementBase","_onClick","closest","hide","__decorate","customElement","M3eBottomSheetElement","M3eBottomSheetElement_1","ReconnectedCallback","SuppressInitialAnimation","AttachInternals","LitElement","constructor","_M3eBottomSheetElement_documentClickHandler","set","e","__classPrivateFieldGet","call","_M3eBottomSheetElement_documentKeyDownHandler","_M3eBottomSheetElement_windowResizeHandler","_M3eBottomSheetElement_instances","_M3eBottomSheetElement_handleWindowResize","_M3eBottomSheetElement_velocityTracker","VelocityTracker","_M3eBottomSheetElement_scrollLockController","ScrollLockController","_M3eBottomSheetElement_inertController","InertController","_M3eBottomSheetElement_resizeController","ResizeController","target","skipInitial","callback","x","_M3eBottomSheetElement_handleSectionResize","_M3eBottomSheetElement_trigger","_M3eBottomSheetElement_dragState","_M3eBottomSheetElement_dragged","_M3eBottomSheetElement_activeDetent","_M3eBottomSheetElement_requestDetent","_M3eBottomSheetElement_cachedContentHeight","_M3eBottomSheetElement_cachedHeaderHeight","_M3eBottomSheetElement_snapAnimation","modal","open","handle","handleLabel","detents","detent","hideable","hideFriction","overshootLimit","show","__classPrivateFieldSet","undefined","_M3eBottomSheetElement_snapToDetent","toggle","cycle","length","_a","update","changedProperties","has","role","ariaModal","popover","reconnectedCallback","_M3eBottomSheetElement_initialize","firstUpdated","_changedProperties","updated","dispatchEvent","Event","cancelable","__openSheet","inert","window","addEventListener","Math","min","max","_M3eBottomSheetElement_updateHeight","_M3eBottomSheetElement_computeDetentHeight","requestAnimationFrame","removeEventListener","document","activeElement","lock","showPopover","focusable","querySelector","M3eInteractivityChecker","isFocusable","shadowRoot","focusWhenReady","_M3eBottomSheetElement_snapToHeight","then","unlock","hidePopover","HTMLElement","focus","render","html","_M3eBottomSheetElement_handleHeaderPointerDown","_M3eBottomSheetElement_handleHeaderPointerMove","_M3eBottomSheetElement_handleHeaderPointerUp","_M3eBottomSheetElement_handleDragHandleClick","_M3eBottomSheetElement_handleDragHandleKeyDown","nothing","content","clientHeight","observe","header","setPointerCapture","pointerId","style","cursor","reset","add","clientY","maxHeight","effectiveMaxHeight","map","startY","startHeight","minHeight","_M3eBottomSheetElement_computeMinHeight","minDragThreshold","abs","getCoalescedEvents","forEach","timeStamp","newHeight","overshoot","compressed","releasePointerCapture","significantVelocityThreshold","pointerType","velocity","getVelocity","nextDetent","hideDistanceThreshold","collapsed","_M3eBottomSheetElement_getClosestDetent","composedPath","includes","key","shiftKey","ctrlKey","preventDefault","hasCustomState","defaultPrevented","isModifierAllowed","currentHeight","nextHeight","Infinity","i","detentHeight","closestDetent","closestDistance","distance","_M3eBottomSheetElement_computeMaxHeight","_M3eBottomSheetElement_computeFitHeight","endsWith","parseFloat","base","innerHeight","computeCssSize","body","bodyStyle","getComputedStyle","paddingBlockStart","paddingBlockEnd","entries","oldCachedContentHeight","oldCachedHeaderHeight","entry","classList","contains","Array","isArray","borderBoxSize","blockSize","height","cancel","prefersReducedMotion","animate","duration","easing","onfinish","finished","setProperty","setCustomState","_M3eBottomSheetElement_computePeekHeight","registerStyleSheet","css","styles","DesignToken","color","onSurface","surfaceContainerLow","unsafeCSS","motion","medium2","standardDecelerate","standard","elevation","level1","shape","corner","none","extraLargeTop","short3","scrim","long2","scrollbar","thinWidth","typescale","medium","fontSize","fontWeight","lineHeight","tracking","title","large","full","onSurfaceVariant","property","type","Boolean","reflect","prototype","attribute","converter","spaceSeparatedStringConverter","Number","M3eBottomSheetTriggerElement","HtmlFor","secondary","attach","control","parentElement","ariaExpanded","addAriaReferencedId","id","ariaHasPopup","detach","removeAriaReferencedId"],"mappings":"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"}