@m3e/web 2.1.1 → 2.1.2

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 (262) hide show
  1. package/dist/all.js +605 -1296
  2. package/dist/all.js.map +1 -1
  3. package/dist/all.min.js +54 -114
  4. package/dist/all.min.js.map +1 -1
  5. package/dist/app-bar.js +2 -34
  6. package/dist/app-bar.js.map +1 -1
  7. package/dist/app-bar.min.js +1 -1
  8. package/dist/app-bar.min.js.map +1 -1
  9. package/dist/autocomplete.js +17 -40
  10. package/dist/autocomplete.js.map +1 -1
  11. package/dist/autocomplete.min.js +1 -1
  12. package/dist/autocomplete.min.js.map +1 -1
  13. package/dist/avatar.js +1 -28
  14. package/dist/avatar.js.map +1 -1
  15. package/dist/avatar.min.js +1 -1
  16. package/dist/avatar.min.js.map +1 -1
  17. package/dist/badge.js +1 -39
  18. package/dist/badge.js.map +1 -1
  19. package/dist/badge.min.js +1 -1
  20. package/dist/badge.min.js.map +1 -1
  21. package/dist/bottom-sheet.js +22 -58
  22. package/dist/bottom-sheet.js.map +1 -1
  23. package/dist/bottom-sheet.min.js +1 -1
  24. package/dist/bottom-sheet.min.js.map +1 -1
  25. package/dist/button-group.js +2 -34
  26. package/dist/button-group.js.map +1 -1
  27. package/dist/button-group.min.js +1 -1
  28. package/dist/button-group.min.js.map +1 -1
  29. package/dist/button.js +2 -34
  30. package/dist/button.js.map +1 -1
  31. package/dist/button.min.js +1 -1
  32. package/dist/button.min.js.map +1 -1
  33. package/dist/card.js +4 -34
  34. package/dist/card.js.map +1 -1
  35. package/dist/card.min.js +1 -1
  36. package/dist/card.min.js.map +1 -1
  37. package/dist/checkbox.js +2 -34
  38. package/dist/checkbox.js.map +1 -1
  39. package/dist/checkbox.min.js +1 -1
  40. package/dist/checkbox.min.js.map +1 -1
  41. package/dist/chips.js +2 -40
  42. package/dist/chips.js.map +1 -1
  43. package/dist/chips.min.js +1 -1
  44. package/dist/chips.min.js.map +1 -1
  45. package/dist/core-a11y.js +1 -39
  46. package/dist/core-a11y.js.map +1 -1
  47. package/dist/core-a11y.min.js +4 -4
  48. package/dist/core-a11y.min.js.map +1 -1
  49. package/dist/core-anchoring.js +164 -177
  50. package/dist/core-anchoring.js.map +1 -1
  51. package/dist/core-anchoring.min.js +1 -1
  52. package/dist/core-anchoring.min.js.map +1 -1
  53. package/dist/core-bidi.js +1 -31
  54. package/dist/core-bidi.js.map +1 -1
  55. package/dist/core-bidi.min.js +2 -3
  56. package/dist/core-bidi.min.js.map +1 -1
  57. package/dist/core.js +53 -40
  58. package/dist/core.js.map +1 -1
  59. package/dist/core.min.js +1 -1
  60. package/dist/core.min.js.map +1 -1
  61. package/dist/css-custom-data.json +517 -512
  62. package/dist/custom-elements.json +5201 -4336
  63. package/dist/dialog.js +3 -41
  64. package/dist/dialog.js.map +1 -1
  65. package/dist/dialog.min.js +1 -1
  66. package/dist/dialog.min.js.map +1 -1
  67. package/dist/divider.js +1 -28
  68. package/dist/divider.js.map +1 -1
  69. package/dist/divider.min.js +1 -1
  70. package/dist/divider.min.js.map +1 -1
  71. package/dist/drawer-container.js +18 -48
  72. package/dist/drawer-container.js.map +1 -1
  73. package/dist/drawer-container.min.js +1 -1
  74. package/dist/drawer-container.min.js.map +1 -1
  75. package/dist/expansion-panel.js +8 -41
  76. package/dist/expansion-panel.js.map +1 -1
  77. package/dist/expansion-panel.min.js +1 -1
  78. package/dist/expansion-panel.min.js.map +1 -1
  79. package/dist/fab-menu.js +3 -47
  80. package/dist/fab-menu.js.map +1 -1
  81. package/dist/fab-menu.min.js +1 -1
  82. package/dist/fab-menu.min.js.map +1 -1
  83. package/dist/fab.js +1 -33
  84. package/dist/fab.js.map +1 -1
  85. package/dist/fab.min.js +1 -1
  86. package/dist/fab.min.js.map +1 -1
  87. package/dist/form-field.js +19 -49
  88. package/dist/form-field.js.map +1 -1
  89. package/dist/form-field.min.js +3 -4
  90. package/dist/form-field.min.js.map +1 -1
  91. package/dist/heading.js +1 -28
  92. package/dist/heading.js.map +1 -1
  93. package/dist/heading.min.js +1 -1
  94. package/dist/heading.min.js.map +1 -1
  95. package/dist/html-custom-data.json +192 -171
  96. package/dist/icon-button.js +2 -34
  97. package/dist/icon-button.js.map +1 -1
  98. package/dist/icon-button.min.js +1 -1
  99. package/dist/icon-button.min.js.map +1 -1
  100. package/dist/icon.js +1 -28
  101. package/dist/icon.js.map +1 -1
  102. package/dist/icon.min.js +1 -1
  103. package/dist/icon.min.js.map +1 -1
  104. package/dist/index.js.map +1 -1
  105. package/dist/index.min.js +7 -0
  106. package/dist/index.min.js.map +1 -0
  107. package/dist/list.js +17 -46
  108. package/dist/list.js.map +1 -1
  109. package/dist/list.min.js +1 -1
  110. package/dist/list.min.js.map +1 -1
  111. package/dist/loading-indicator.js +8 -31
  112. package/dist/loading-indicator.js.map +1 -1
  113. package/dist/loading-indicator.min.js +1 -1
  114. package/dist/loading-indicator.min.js.map +1 -1
  115. package/dist/menu.js +3 -47
  116. package/dist/menu.js.map +1 -1
  117. package/dist/menu.min.js +1 -1
  118. package/dist/menu.min.js.map +1 -1
  119. package/dist/nav-bar.js +3 -41
  120. package/dist/nav-bar.js.map +1 -1
  121. package/dist/nav-bar.min.js +1 -1
  122. package/dist/nav-bar.min.js.map +1 -1
  123. package/dist/nav-menu.js +2 -40
  124. package/dist/nav-menu.js.map +1 -1
  125. package/dist/nav-menu.min.js +1 -1
  126. package/dist/nav-menu.min.js.map +1 -1
  127. package/dist/nav-rail.js +1 -33
  128. package/dist/nav-rail.js.map +1 -1
  129. package/dist/nav-rail.min.js +1 -1
  130. package/dist/nav-rail.min.js.map +1 -1
  131. package/dist/option.js +3 -59
  132. package/dist/option.js.map +1 -1
  133. package/dist/option.min.js +1 -1
  134. package/dist/option.min.js.map +1 -1
  135. package/dist/paginator.js +2 -34
  136. package/dist/paginator.js.map +1 -1
  137. package/dist/paginator.min.js +2 -3
  138. package/dist/paginator.min.js.map +1 -1
  139. package/dist/progress-indicator.js +41 -63
  140. package/dist/progress-indicator.js.map +1 -1
  141. package/dist/progress-indicator.min.js +32 -32
  142. package/dist/progress-indicator.min.js.map +1 -1
  143. package/dist/radio-group.js +1 -39
  144. package/dist/radio-group.js.map +1 -1
  145. package/dist/radio-group.min.js +1 -1
  146. package/dist/radio-group.min.js.map +1 -1
  147. package/dist/segmented-button.js +2 -40
  148. package/dist/segmented-button.js.map +1 -1
  149. package/dist/segmented-button.min.js +1 -1
  150. package/dist/segmented-button.min.js.map +1 -1
  151. package/dist/select.js +16 -40
  152. package/dist/select.js.map +1 -1
  153. package/dist/select.min.js +1 -1
  154. package/dist/select.min.js.map +1 -1
  155. package/dist/shape.js +1 -28
  156. package/dist/shape.js.map +1 -1
  157. package/dist/shape.min.js +1 -1
  158. package/dist/shape.min.js.map +1 -1
  159. package/dist/slide-group.js +9 -42
  160. package/dist/slide-group.js.map +1 -1
  161. package/dist/slide-group.min.js +1 -1
  162. package/dist/slide-group.min.js.map +1 -1
  163. package/dist/slider.js +1 -39
  164. package/dist/slider.js.map +1 -1
  165. package/dist/slider.min.js +1 -1
  166. package/dist/slider.min.js.map +1 -1
  167. package/dist/snackbar.js +2 -40
  168. package/dist/snackbar.js.map +1 -1
  169. package/dist/snackbar.min.js +1 -1
  170. package/dist/snackbar.min.js.map +1 -1
  171. package/dist/split-button.js +1 -39
  172. package/dist/split-button.js.map +1 -1
  173. package/dist/split-button.min.js +1 -1
  174. package/dist/split-button.min.js.map +1 -1
  175. package/dist/src/autocomplete/AutocompleteElement.d.ts +6 -0
  176. package/dist/src/autocomplete/AutocompleteElement.d.ts.map +1 -1
  177. package/dist/src/bottom-sheet/BottomSheetElement.d.ts +3 -3
  178. package/dist/src/bottom-sheet/BottomSheetElement.d.ts.map +1 -1
  179. package/dist/src/card/CardElement.d.ts +1 -0
  180. package/dist/src/card/CardElement.d.ts.map +1 -1
  181. package/dist/src/card/styles/CardVariantToken.d.ts +1 -1
  182. package/dist/src/card/styles/CardVariantToken.d.ts.map +1 -1
  183. package/dist/src/core/anchoring/FloatingPanelElement.d.ts +6 -3
  184. package/dist/src/core/anchoring/FloatingPanelElement.d.ts.map +1 -1
  185. package/dist/src/core/anchoring/FloatingPanelScrollStrategy.d.ts +3 -0
  186. package/dist/src/core/anchoring/FloatingPanelScrollStrategy.d.ts.map +1 -0
  187. package/dist/src/core/anchoring/index.d.ts +1 -0
  188. package/dist/src/core/anchoring/index.d.ts.map +1 -1
  189. package/dist/src/core/shared/mixins/ReconnectedCallback.d.ts +15 -0
  190. package/dist/src/core/shared/mixins/ReconnectedCallback.d.ts.map +1 -0
  191. package/dist/src/core/shared/mixins/SuppressInitialAnimation.d.ts +11 -0
  192. package/dist/src/core/shared/mixins/SuppressInitialAnimation.d.ts.map +1 -0
  193. package/dist/src/core/shared/mixins/index.d.ts +2 -0
  194. package/dist/src/core/shared/mixins/index.d.ts.map +1 -1
  195. package/dist/src/drawer-container/DrawerContainerElement.d.ts +4 -2
  196. package/dist/src/drawer-container/DrawerContainerElement.d.ts.map +1 -1
  197. package/dist/src/expansion-panel/ExpansionPanelElement.d.ts +3 -1
  198. package/dist/src/expansion-panel/ExpansionPanelElement.d.ts.map +1 -1
  199. package/dist/src/fab-menu/FabMenuElement.d.ts +1 -3
  200. package/dist/src/fab-menu/FabMenuElement.d.ts.map +1 -1
  201. package/dist/src/form-field/FormFieldElement.d.ts +4 -2
  202. package/dist/src/form-field/FormFieldElement.d.ts.map +1 -1
  203. package/dist/src/list/ActionListElement.d.ts.map +1 -1
  204. package/dist/src/list/ListItemElement.d.ts +3 -1
  205. package/dist/src/list/ListItemElement.d.ts.map +1 -1
  206. package/dist/src/loading-indicator/LoadingIndicatorElement.d.ts +3 -1
  207. package/dist/src/loading-indicator/LoadingIndicatorElement.d.ts.map +1 -1
  208. package/dist/src/menu/MenuElement.d.ts +1 -3
  209. package/dist/src/menu/MenuElement.d.ts.map +1 -1
  210. package/dist/src/nav-bar/NavBarElement.d.ts +1 -1
  211. package/dist/src/nav-bar/NavBarElement.d.ts.map +1 -1
  212. package/dist/src/option/OptionPanelElement.d.ts +0 -4
  213. package/dist/src/option/OptionPanelElement.d.ts.map +1 -1
  214. package/dist/src/progress-indicator/CircularProgressIndicatorElement.d.ts +2 -0
  215. package/dist/src/progress-indicator/CircularProgressIndicatorElement.d.ts.map +1 -1
  216. package/dist/src/progress-indicator/LinearProgressIndicatorElement.d.ts +2 -0
  217. package/dist/src/progress-indicator/LinearProgressIndicatorElement.d.ts.map +1 -1
  218. package/dist/src/progress-indicator/ProgressElementIndicatorBase.d.ts +1 -1
  219. package/dist/src/progress-indicator/ProgressElementIndicatorBase.d.ts.map +1 -1
  220. package/dist/src/select/SelectElement.d.ts +6 -0
  221. package/dist/src/select/SelectElement.d.ts.map +1 -1
  222. package/dist/src/slide-group/SlideGroupElement.d.ts +5 -1
  223. package/dist/src/slide-group/SlideGroupElement.d.ts.map +1 -1
  224. package/dist/src/stepper/StepperElement.d.ts +1 -1
  225. package/dist/src/stepper/StepperElement.d.ts.map +1 -1
  226. package/dist/src/toc/TocElement.d.ts +1 -1
  227. package/dist/src/toc/TocElement.d.ts.map +1 -1
  228. package/dist/src/tooltip/TooltipElementBase.d.ts +3 -1
  229. package/dist/src/tooltip/TooltipElementBase.d.ts.map +1 -1
  230. package/dist/stepper.js +3 -41
  231. package/dist/stepper.js.map +1 -1
  232. package/dist/stepper.min.js +1 -1
  233. package/dist/stepper.min.js.map +1 -1
  234. package/dist/switch.js +1 -33
  235. package/dist/switch.js.map +1 -1
  236. package/dist/switch.min.js +1 -1
  237. package/dist/switch.min.js.map +1 -1
  238. package/dist/tabs.js +1 -39
  239. package/dist/tabs.js.map +1 -1
  240. package/dist/tabs.min.js +1 -1
  241. package/dist/tabs.min.js.map +1 -1
  242. package/dist/textarea-autosize.js +1 -39
  243. package/dist/textarea-autosize.js.map +1 -1
  244. package/dist/textarea-autosize.min.js +2 -3
  245. package/dist/textarea-autosize.min.js.map +1 -1
  246. package/dist/theme.js +1 -39
  247. package/dist/theme.js.map +1 -1
  248. package/dist/theme.min.js +19 -19
  249. package/dist/theme.min.js.map +1 -1
  250. package/dist/toc.js +4 -42
  251. package/dist/toc.js.map +1 -1
  252. package/dist/toc.min.js +1 -1
  253. package/dist/toc.min.js.map +1 -1
  254. package/dist/toolbar.js +1 -39
  255. package/dist/toolbar.js.map +1 -1
  256. package/dist/toolbar.min.js +1 -1
  257. package/dist/toolbar.min.js.map +1 -1
  258. package/dist/tooltip.js +15 -46
  259. package/dist/tooltip.js.map +1 -1
  260. package/dist/tooltip.min.js +1 -1
  261. package/dist/tooltip.min.js.map +1 -1
  262. package/package.json +3 -2
@@ -3,49 +3,12 @@
3
3
  * Copyright (c) 2025 matraic
4
4
  * See LICENSE file in the project root for full license text.
5
5
  */
6
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from 'tslib';
6
7
  import { LitElement, html, unsafeCSS, css } from 'lit';
7
- import { AttachInternals, addCustomState, deleteCustomState, DesignToken, customElement, setCustomState } from '@m3e/web/core';
8
+ import { property } from 'lit/decorators.js';
9
+ import { SuppressInitialAnimation, AttachInternals, ScrollController, DesignToken, customElement, setCustomState } from '@m3e/web/core';
8
10
  import { M3eDirectionality } from '@m3e/web/core/bidi';
9
11
 
10
- /******************************************************************************
11
- Copyright (c) Microsoft Corporation.
12
-
13
- Permission to use, copy, modify, and/or distribute this software for any
14
- purpose with or without fee is hereby granted.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
17
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
18
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
19
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
20
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
21
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22
- PERFORMANCE OF THIS SOFTWARE.
23
- ***************************************************************************** */
24
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
25
-
26
- function __decorate(decorators, target, key, desc) {
27
- var c = arguments.length,
28
- r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
29
- d;
30
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
31
- return c > 3 && r && Object.defineProperty(target, key, r), r;
32
- }
33
- function __classPrivateFieldGet(receiver, state, kind, f) {
34
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
35
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
36
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
37
- }
38
- function __classPrivateFieldSet(receiver, state, value, kind, f) {
39
- if (kind === "m") throw new TypeError("Private method is not writable");
40
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
41
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
42
- return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
43
- }
44
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
45
- var e = new Error(message);
46
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
47
- };
48
-
49
12
  /**
50
13
  * Custom positioning reference element.
51
14
  * @see https://floating-ui.com/docs/virtual-elements
@@ -65,10 +28,6 @@ const oppositeSideMap = {
65
28
  bottom: 'top',
66
29
  top: 'bottom'
67
30
  };
68
- const oppositeAlignmentMap = {
69
- start: 'end',
70
- end: 'start'
71
- };
72
31
  function clamp(start, value, end) {
73
32
  return max(start, min(value, end));
74
33
  }
@@ -87,9 +46,9 @@ function getOppositeAxis(axis) {
87
46
  function getAxisLength(axis) {
88
47
  return axis === 'y' ? 'height' : 'width';
89
48
  }
90
- const yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);
91
49
  function getSideAxis(placement) {
92
- return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
50
+ const firstChar = placement[0];
51
+ return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';
93
52
  }
94
53
  function getAlignmentAxis(placement) {
95
54
  return getOppositeAxis(getSideAxis(placement));
@@ -112,7 +71,7 @@ function getExpandedPlacements(placement) {
112
71
  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
113
72
  }
114
73
  function getOppositeAlignmentPlacement(placement) {
115
- return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
74
+ return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');
116
75
  }
117
76
  const lrPlacement = ['left', 'right'];
118
77
  const rlPlacement = ['right', 'left'];
@@ -143,7 +102,8 @@ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
143
102
  return list;
144
103
  }
145
104
  function getOppositePlacement(placement) {
146
- return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);
105
+ const side = getSide(placement);
106
+ return oppositeSideMap[side] + placement.slice(side.length);
147
107
  }
148
108
  function expandPaddingObject(padding) {
149
109
  return {
@@ -237,6 +197,74 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
237
197
  return coords;
238
198
  }
239
199
 
200
+ /**
201
+ * Resolves with an object of overflow side offsets that determine how much the
202
+ * element is overflowing a given clipping boundary on each side.
203
+ * - positive = overflowing the boundary by that number of pixels
204
+ * - negative = how many pixels left before it will overflow
205
+ * - 0 = lies flush with the boundary
206
+ * @see https://floating-ui.com/docs/detectOverflow
207
+ */
208
+ async function detectOverflow(state, options) {
209
+ var _await$platform$isEle;
210
+ if (options === void 0) {
211
+ options = {};
212
+ }
213
+ const {
214
+ x,
215
+ y,
216
+ platform,
217
+ rects,
218
+ elements,
219
+ strategy
220
+ } = state;
221
+ const {
222
+ boundary = 'clippingAncestors',
223
+ rootBoundary = 'viewport',
224
+ elementContext = 'floating',
225
+ altBoundary = false,
226
+ padding = 0
227
+ } = evaluate(options, state);
228
+ const paddingObject = getPaddingObject(padding);
229
+ const altContext = elementContext === 'floating' ? 'reference' : 'floating';
230
+ const element = elements[altBoundary ? altContext : elementContext];
231
+ const clippingClientRect = rectToClientRect(await platform.getClippingRect({
232
+ element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
233
+ boundary,
234
+ rootBoundary,
235
+ strategy
236
+ }));
237
+ const rect = elementContext === 'floating' ? {
238
+ x,
239
+ y,
240
+ width: rects.floating.width,
241
+ height: rects.floating.height
242
+ } : rects.reference;
243
+ const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
244
+ const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
245
+ x: 1,
246
+ y: 1
247
+ } : {
248
+ x: 1,
249
+ y: 1
250
+ };
251
+ const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
252
+ elements,
253
+ rect,
254
+ offsetParent,
255
+ strategy
256
+ }) : rect);
257
+ return {
258
+ top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
259
+ bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
260
+ left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
261
+ right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
262
+ };
263
+ }
264
+
265
+ // Maximum number of resets that can occur before bailing to avoid infinite reset loops.
266
+ const MAX_RESET_COUNT = 50;
267
+
240
268
  /**
241
269
  * Computes the `x` and `y` coordinates that will place the floating element
242
270
  * next to a given reference element.
@@ -251,7 +279,10 @@ const computePosition$1 = async (reference, floating, config) => {
251
279
  middleware = [],
252
280
  platform
253
281
  } = config;
254
- const validMiddleware = middleware.filter(Boolean);
282
+ const platformWithDetectOverflow = platform.detectOverflow ? platform : {
283
+ ...platform,
284
+ detectOverflow
285
+ };
255
286
  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
256
287
  let rects = await platform.getElementRects({
257
288
  reference,
@@ -263,13 +294,17 @@ const computePosition$1 = async (reference, floating, config) => {
263
294
  y
264
295
  } = computeCoordsFromPlacement(rects, placement, rtl);
265
296
  let statefulPlacement = placement;
266
- let middlewareData = {};
267
297
  let resetCount = 0;
268
- for (let i = 0; i < validMiddleware.length; i++) {
298
+ const middlewareData = {};
299
+ for (let i = 0; i < middleware.length; i++) {
300
+ const currentMiddleware = middleware[i];
301
+ if (!currentMiddleware) {
302
+ continue;
303
+ }
269
304
  const {
270
305
  name,
271
306
  fn
272
- } = validMiddleware[i];
307
+ } = currentMiddleware;
273
308
  const {
274
309
  x: nextX,
275
310
  y: nextY,
@@ -283,7 +318,7 @@ const computePosition$1 = async (reference, floating, config) => {
283
318
  strategy,
284
319
  middlewareData,
285
320
  rects,
286
- platform,
321
+ platform: platformWithDetectOverflow,
287
322
  elements: {
288
323
  reference,
289
324
  floating
@@ -291,14 +326,11 @@ const computePosition$1 = async (reference, floating, config) => {
291
326
  });
292
327
  x = nextX != null ? nextX : x;
293
328
  y = nextY != null ? nextY : y;
294
- middlewareData = {
295
- ...middlewareData,
296
- [name]: {
297
- ...middlewareData[name],
298
- ...data
299
- }
329
+ middlewareData[name] = {
330
+ ...middlewareData[name],
331
+ ...data
300
332
  };
301
- if (reset && resetCount <= 50) {
333
+ if (reset && resetCount < MAX_RESET_COUNT) {
302
334
  resetCount++;
303
335
  if (typeof reset === 'object') {
304
336
  if (reset.placement) {
@@ -328,71 +360,6 @@ const computePosition$1 = async (reference, floating, config) => {
328
360
  };
329
361
  };
330
362
 
331
- /**
332
- * Resolves with an object of overflow side offsets that determine how much the
333
- * element is overflowing a given clipping boundary on each side.
334
- * - positive = overflowing the boundary by that number of pixels
335
- * - negative = how many pixels left before it will overflow
336
- * - 0 = lies flush with the boundary
337
- * @see https://floating-ui.com/docs/detectOverflow
338
- */
339
- async function detectOverflow(state, options) {
340
- var _await$platform$isEle;
341
- if (options === void 0) {
342
- options = {};
343
- }
344
- const {
345
- x,
346
- y,
347
- platform,
348
- rects,
349
- elements,
350
- strategy
351
- } = state;
352
- const {
353
- boundary = 'clippingAncestors',
354
- rootBoundary = 'viewport',
355
- elementContext = 'floating',
356
- altBoundary = false,
357
- padding = 0
358
- } = evaluate(options, state);
359
- const paddingObject = getPaddingObject(padding);
360
- const altContext = elementContext === 'floating' ? 'reference' : 'floating';
361
- const element = elements[altBoundary ? altContext : elementContext];
362
- const clippingClientRect = rectToClientRect(await platform.getClippingRect({
363
- element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
364
- boundary,
365
- rootBoundary,
366
- strategy
367
- }));
368
- const rect = elementContext === 'floating' ? {
369
- x,
370
- y,
371
- width: rects.floating.width,
372
- height: rects.floating.height
373
- } : rects.reference;
374
- const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
375
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
376
- x: 1,
377
- y: 1
378
- } : {
379
- x: 1,
380
- y: 1
381
- };
382
- const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
383
- elements,
384
- rect,
385
- offsetParent,
386
- strategy
387
- }) : rect);
388
- return {
389
- top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
390
- bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
391
- left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
392
- right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
393
- };
394
- }
395
-
396
363
  /**
397
364
  * Optimizes the visibility of the floating element by flipping the `placement`
398
365
  * in order to keep it in view when the preferred placement(s) will overflow the
@@ -443,7 +410,7 @@ const flip$1 = function (options) {
443
410
  fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
444
411
  }
445
412
  const placements = [initialPlacement, ...fallbackPlacements];
446
- const overflow = await detectOverflow(state, detectOverflowOptions);
413
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
447
414
  const overflows = [];
448
415
  let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
449
416
  if (checkMainAxis) {
@@ -758,7 +725,8 @@ const shift$1 = function (options) {
758
725
  const {
759
726
  x,
760
727
  y,
761
- placement
728
+ placement,
729
+ platform
762
730
  } = state;
763
731
  const {
764
732
  mainAxis: checkMainAxis = true,
@@ -781,7 +749,7 @@ const shift$1 = function (options) {
781
749
  x,
782
750
  y
783
751
  };
784
- const overflow = await detectOverflow(state, detectOverflowOptions);
752
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
785
753
  const crossAxis = getSideAxis(getSide(placement));
786
754
  const mainAxis = getOppositeAxis(crossAxis);
787
755
  let mainAxisCoord = coords[mainAxis];
@@ -864,7 +832,6 @@ function isShadowRoot(value) {
864
832
  }
865
833
  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
866
834
  }
867
- const invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);
868
835
  function isOverflowElement(element) {
869
836
  const {
870
837
  overflow,
@@ -872,32 +839,35 @@ function isOverflowElement(element) {
872
839
  overflowY,
873
840
  display
874
841
  } = getComputedStyle$1(element);
875
- return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
842
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';
876
843
  }
877
- const tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);
878
844
  function isTableElement(element) {
879
- return tableElements.has(getNodeName(element));
845
+ return /^(table|td|th)$/.test(getNodeName(element));
880
846
  }
881
- const topLayerSelectors = [':popover-open', ':modal'];
882
847
  function isTopLayer(element) {
883
- return topLayerSelectors.some(selector => {
884
- try {
885
- return element.matches(selector);
886
- } catch (_e) {
887
- return false;
848
+ try {
849
+ if (element.matches(':popover-open')) {
850
+ return true;
888
851
  }
889
- });
852
+ } catch (_e) {
853
+ // no-op
854
+ }
855
+ try {
856
+ return element.matches(':modal');
857
+ } catch (_e) {
858
+ return false;
859
+ }
890
860
  }
891
- const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
892
- const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
893
- const containValues = ['paint', 'layout', 'strict', 'content'];
861
+ const willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
862
+ const containRe = /paint|layout|strict|content/;
863
+ const isNotNone = value => !!value && value !== 'none';
864
+ let isWebKitValue;
894
865
  function isContainingBlock(elementOrCss) {
895
- const webkit = isWebKit();
896
866
  const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
897
867
 
898
868
  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
899
869
  // https://drafts.csswg.org/css-transforms-2/#individual-transforms
900
- return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));
870
+ return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');
901
871
  }
902
872
  function getContainingBlock(element) {
903
873
  let currentNode = getParentNode(element);
@@ -912,12 +882,13 @@ function getContainingBlock(element) {
912
882
  return null;
913
883
  }
914
884
  function isWebKit() {
915
- if (typeof CSS === 'undefined' || !CSS.supports) return false;
916
- return CSS.supports('-webkit-backdrop-filter', 'none');
885
+ if (isWebKitValue == null) {
886
+ isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');
887
+ }
888
+ return isWebKitValue;
917
889
  }
918
- const lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);
919
890
  function isLastTraversableNode(node) {
920
- return lastTraversableNodeNames.has(getNodeName(node));
891
+ return /^(html|body|#document)$/.test(getNodeName(node));
921
892
  }
922
893
  function getComputedStyle$1(element) {
923
894
  return getWindow(element).getComputedStyle(element);
@@ -973,8 +944,9 @@ function getOverflowAncestors(node, list, traverseIframes) {
973
944
  if (isBody) {
974
945
  const frameElement = getFrameElement(win);
975
946
  return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
947
+ } else {
948
+ return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
976
949
  }
977
- return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
978
950
  }
979
951
  function getFrameElement(win) {
980
952
  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
@@ -1151,7 +1123,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
1151
1123
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
1152
1124
  scroll = getNodeScroll(offsetParent);
1153
1125
  }
1154
- if (isHTMLElement(offsetParent)) {
1126
+ if (isOffsetParentAnElement) {
1155
1127
  const offsetRect = getBoundingClientRect(offsetParent);
1156
1128
  scale = getScale(offsetParent);
1157
1129
  offsets.x = offsetRect.x + offsetParent.clientLeft;
@@ -1239,7 +1211,6 @@ function getViewportRect(element, strategy) {
1239
1211
  };
1240
1212
  }
1241
1213
 
1242
- const absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);
1243
1214
  // Returns the inner client rect, subtracting scrollbars if present.
1244
1215
  function getInnerBoundingClientRect(element, strategy) {
1245
1216
  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
@@ -1304,7 +1275,7 @@ function getClippingElementAncestors(element, cache) {
1304
1275
  if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
1305
1276
  currentContainingBlockComputedStyle = null;
1306
1277
  }
1307
- const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
1278
+ const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
1308
1279
  if (shouldDropCurrentNode) {
1309
1280
  // Drop non-containing blocks.
1310
1281
  result = result.filter(ancestor => ancestor !== currentNode);
@@ -1329,20 +1300,23 @@ function getClippingRect(_ref) {
1329
1300
  } = _ref;
1330
1301
  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
1331
1302
  const clippingAncestors = [...elementClippingAncestors, rootBoundary];
1332
- const firstClippingAncestor = clippingAncestors[0];
1333
- const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
1334
- const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
1335
- accRect.top = max(rect.top, accRect.top);
1336
- accRect.right = min(rect.right, accRect.right);
1337
- accRect.bottom = min(rect.bottom, accRect.bottom);
1338
- accRect.left = max(rect.left, accRect.left);
1339
- return accRect;
1340
- }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
1303
+ const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
1304
+ let top = firstRect.top;
1305
+ let right = firstRect.right;
1306
+ let bottom = firstRect.bottom;
1307
+ let left = firstRect.left;
1308
+ for (let i = 1; i < clippingAncestors.length; i++) {
1309
+ const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);
1310
+ top = max(rect.top, top);
1311
+ right = min(rect.right, right);
1312
+ bottom = min(rect.bottom, bottom);
1313
+ left = max(rect.left, left);
1314
+ }
1341
1315
  return {
1342
- width: clippingRect.right - clippingRect.left,
1343
- height: clippingRect.bottom - clippingRect.top,
1344
- x: clippingRect.left,
1345
- y: clippingRect.top
1316
+ width: right - left,
1317
+ height: bottom - top,
1318
+ x: left,
1319
+ y: top
1346
1320
  };
1347
1321
  }
1348
1322
 
@@ -1593,7 +1567,7 @@ function autoUpdate(reference, floating, update, options) {
1593
1567
  animationFrame = false
1594
1568
  } = options;
1595
1569
  const referenceEl = unwrapElement(reference);
1596
- const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];
1570
+ const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];
1597
1571
  ancestors.forEach(ancestor => {
1598
1572
  ancestorScroll && ancestor.addEventListener('scroll', update, {
1599
1573
  passive: true
@@ -1606,7 +1580,7 @@ function autoUpdate(reference, floating, update, options) {
1606
1580
  if (elementResize) {
1607
1581
  resizeObserver = new ResizeObserver(_ref => {
1608
1582
  let [firstEntry] = _ref;
1609
- if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
1583
+ if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
1610
1584
  // Prevent update loops when using the `size` middleware.
1611
1585
  // https://github.com/floating-ui/floating-ui/issues/1740
1612
1586
  resizeObserver.unobserve(floating);
@@ -1621,7 +1595,9 @@ function autoUpdate(reference, floating, update, options) {
1621
1595
  if (referenceEl && !animationFrame) {
1622
1596
  resizeObserver.observe(referenceEl);
1623
1597
  }
1624
- resizeObserver.observe(floating);
1598
+ if (floating) {
1599
+ resizeObserver.observe(floating);
1600
+ }
1625
1601
  }
1626
1602
  let frameId;
1627
1603
  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
@@ -1786,12 +1762,14 @@ async function positionAnchor(target, anchor, options, update) {
1786
1762
  return autoUpdate(anchor, target, async () => await computeAnchorPosition());
1787
1763
  }
1788
1764
 
1789
- var _M3eFloatingPanelElement_instances, _M3eFloatingPanelElement_trigger, _M3eFloatingPanelElement_anchor, _M3eFloatingPanelElement_anchorCleanup, _M3eFloatingPanelElement_documentClickHandler, _M3eFloatingPanelElement_toggleHandler, _M3eFloatingPanelElement_handleDocumentClick;
1765
+ var _M3eFloatingPanelElement_instances, _M3eFloatingPanelElement_trigger, _M3eFloatingPanelElement_anchor, _M3eFloatingPanelElement_anchorCleanup, _M3eFloatingPanelElement_documentClickHandler, _M3eFloatingPanelElement_toggleHandler, _M3eFloatingPanelElement_scrollController, _M3eFloatingPanelElement_handleDocumentClick;
1790
1766
  /**
1791
1767
  * A lightweight, generic floating surface used to present content above the page.
1792
1768
  *
1793
1769
  * @tag m3e-floating-panel
1794
1770
  *
1771
+ * @attr scroll-strategy - The strategy that controls how the panel behaves when its trigger scrolls.
1772
+ *
1795
1773
  * @slot - Renders the contents of the panel.
1796
1774
  *
1797
1775
  * @fires beforetoggle - Dispatched before the toggle state changes.
@@ -1806,7 +1784,7 @@ var _M3eFloatingPanelElement_instances, _M3eFloatingPanelElement_trigger, _M3eFl
1806
1784
  * @cssprop --m3e-floating-panel-container-color - Background color of the panel container.
1807
1785
  * @cssprop --m3e-floating-panel-container-elevation - Box shadow elevation of the panel container.
1808
1786
  */
1809
- let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachInternals(LitElement) {
1787
+ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends SuppressInitialAnimation(AttachInternals(LitElement)) {
1810
1788
  constructor() {
1811
1789
  super(...arguments);
1812
1790
  _M3eFloatingPanelElement_instances.add(this);
@@ -1823,9 +1801,15 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
1823
1801
  if (e.newState === "closed") {
1824
1802
  __classPrivateFieldGet(this, _M3eFloatingPanelElement_anchorCleanup, "f")?.call(this);
1825
1803
  __classPrivateFieldSet(this, _M3eFloatingPanelElement_anchorCleanup, undefined, "f");
1826
- __classPrivateFieldSet(this, _M3eFloatingPanelElement_anchor, undefined, "f");
1827
1804
  }
1828
1805
  });
1806
+ /** @private */
1807
+ _M3eFloatingPanelElement_scrollController.set(this, new ScrollController(this, {
1808
+ target: null,
1809
+ callback: () => this.hide(false)
1810
+ }));
1811
+ /** The strategy that controls how the panel behaves when its trigger scrolls. */
1812
+ this.scrollStrategy = "hide";
1829
1813
  }
1830
1814
  /** Whether the panel is open. */
1831
1815
  get isOpen() {
@@ -1838,7 +1822,6 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
1838
1822
  /** @inheritdoc */
1839
1823
  connectedCallback() {
1840
1824
  super.connectedCallback();
1841
- addCustomState(this, "-no-animate");
1842
1825
  this.setAttribute("popover", "manual");
1843
1826
  this.addEventListener("toggle", __classPrivateFieldGet(this, _M3eFloatingPanelElement_toggleHandler, "f"));
1844
1827
  document.addEventListener("click", __classPrivateFieldGet(this, _M3eFloatingPanelElement_documentClickHandler, "f"));
@@ -1879,6 +1862,9 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
1879
1862
  __classPrivateFieldSet(this, _M3eFloatingPanelElement_trigger, trigger, "f");
1880
1863
  __classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f").ariaExpanded = "true";
1881
1864
  __classPrivateFieldSet(this, _M3eFloatingPanelElement_anchor, anchor, "f");
1865
+ if (this.scrollStrategy === "hide") {
1866
+ __classPrivateFieldGet(this, _M3eFloatingPanelElement_scrollController, "f").observe(__classPrivateFieldGet(this, _M3eFloatingPanelElement_anchor, "f") ?? __classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f"));
1867
+ }
1882
1868
  }
1883
1869
  /**
1884
1870
  * Hides the panel.
@@ -1891,7 +1877,9 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
1891
1877
  if (restoreFocus) {
1892
1878
  __classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f").focus();
1893
1879
  }
1880
+ __classPrivateFieldGet(this, _M3eFloatingPanelElement_scrollController, "f").unobserve(__classPrivateFieldGet(this, _M3eFloatingPanelElement_anchor, "f") ?? __classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f"));
1894
1881
  __classPrivateFieldSet(this, _M3eFloatingPanelElement_trigger, undefined, "f");
1882
+ __classPrivateFieldSet(this, _M3eFloatingPanelElement_anchor, undefined, "f");
1895
1883
  }
1896
1884
  }
1897
1885
  /**
@@ -1908,11 +1896,6 @@ let M3eFloatingPanelElement = class M3eFloatingPanelElement extends AttachIntern
1908
1896
  }
1909
1897
  }
1910
1898
  /** @inheritdoc */
1911
- firstUpdated(_changedProperties) {
1912
- super.firstUpdated(_changedProperties);
1913
- requestAnimationFrame(() => deleteCustomState(this, "-no-animate"));
1914
- }
1915
- /** @inheritdoc */
1916
1899
  render() {
1917
1900
  return html`<div class="base"><slot></slot></div>`;
1918
1901
  }
@@ -1922,6 +1905,7 @@ _M3eFloatingPanelElement_anchor = new WeakMap();
1922
1905
  _M3eFloatingPanelElement_anchorCleanup = new WeakMap();
1923
1906
  _M3eFloatingPanelElement_documentClickHandler = new WeakMap();
1924
1907
  _M3eFloatingPanelElement_toggleHandler = new WeakMap();
1908
+ _M3eFloatingPanelElement_scrollController = new WeakMap();
1925
1909
  _M3eFloatingPanelElement_instances = new WeakSet();
1926
1910
  _M3eFloatingPanelElement_handleDocumentClick = function _M3eFloatingPanelElement_handleDocumentClick(e) {
1927
1911
  if (this.isOpen && !e.composedPath().some(x => x === this || x === __classPrivateFieldGet(this, _M3eFloatingPanelElement_trigger, "f") || x === __classPrivateFieldGet(this, _M3eFloatingPanelElement_anchor, "f"))) {
@@ -1933,6 +1917,9 @@ M3eFloatingPanelElement.styles = css`:host { position: absolute; flex-direction:
1933
1917
  transform ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard},
1934
1918
  overlay ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete,
1935
1919
  display ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete`)}; } :host { transform: scaleY(0.8); } :host(:popover-open) { transform: scaleY(1); display: block; opacity: 1; } :host::backdrop { background-color: transparent; } :host(:state(-bottom)) { transform-origin: top; } :host(:state(-top)) { transform-origin: bottom; } @starting-style { :host(:popover-open) { transform: scaleY(0.8); } } @media (prefers-reduced-motion) { :host(:not(:state(-no-animate))) { transition: none; } } @media (forced-colors: active) { :host { background-color: Menu; color: MenuText; outline: 1px solid MenuText; } }`;
1920
+ __decorate([property({
1921
+ attribute: "scroll-strategy"
1922
+ })], M3eFloatingPanelElement.prototype, "scrollStrategy", void 0);
1936
1923
  M3eFloatingPanelElement = __decorate([customElement("m3e-floating-panel")], M3eFloatingPanelElement);
1937
1924
 
1938
1925
  export { M3eFloatingPanelElement, positionAnchor };