@m3e/core 1.0.0-rc.2 → 1.0.0-rc.4

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 (226) hide show
  1. package/dist/a11y.js.map +1 -1
  2. package/dist/a11y.min.js.map +1 -1
  3. package/dist/css-custom-data.json +20 -0
  4. package/dist/custom-elements.json +263 -50
  5. package/dist/html-custom-data.json +22 -0
  6. package/dist/index.js +242 -15
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.min.js +43 -32
  9. package/dist/index.min.js.map +1 -1
  10. package/dist/src/a11y/AriaDescriber.d.ts +31 -0
  11. package/dist/src/a11y/AriaDescriber.d.ts.map +1 -0
  12. package/dist/src/a11y/FocusTrapElement.d.ts +25 -0
  13. package/dist/src/a11y/FocusTrapElement.d.ts.map +1 -0
  14. package/dist/src/a11y/InteractivityChecker.d.ts +22 -0
  15. package/dist/src/a11y/InteractivityChecker.d.ts.map +1 -0
  16. package/dist/src/a11y/LiveAnnouncer.d.ts +56 -0
  17. package/dist/src/a11y/LiveAnnouncer.d.ts.map +1 -0
  18. package/dist/src/a11y/aria-reference.d.ts +30 -0
  19. package/dist/src/a11y/aria-reference.d.ts.map +1 -0
  20. package/dist/src/a11y/index.d.ts +8 -0
  21. package/dist/src/a11y/index.d.ts.map +1 -0
  22. package/dist/src/a11y/keycodes/KeyCode.d.ts +118 -0
  23. package/dist/src/a11y/keycodes/KeyCode.d.ts.map +1 -0
  24. package/dist/src/a11y/keycodes/ModifierKeys.d.ts +5 -0
  25. package/dist/src/a11y/keycodes/ModifierKeys.d.ts.map +1 -0
  26. package/dist/src/a11y/keycodes/getKeyCode.d.ts +7 -0
  27. package/dist/src/a11y/keycodes/getKeyCode.d.ts.map +1 -0
  28. package/dist/src/a11y/keycodes/hasModifierKey.d.ts +9 -0
  29. package/dist/src/a11y/keycodes/hasModifierKey.d.ts.map +1 -0
  30. package/dist/src/a11y/keycodes/index.d.ts +6 -0
  31. package/dist/src/a11y/keycodes/index.d.ts.map +1 -0
  32. package/dist/src/a11y/keycodes/isModifierAllowed.d.ts +9 -0
  33. package/dist/src/a11y/keycodes/isModifierAllowed.d.ts.map +1 -0
  34. package/dist/src/a11y/list-key/FocusKeyManager.d.ts +17 -0
  35. package/dist/src/a11y/list-key/FocusKeyManager.d.ts.map +1 -0
  36. package/dist/src/a11y/list-key/ListKeyManager.d.ts +114 -0
  37. package/dist/src/a11y/list-key/ListKeyManager.d.ts.map +1 -0
  38. package/dist/src/a11y/list-key/ListManager.d.ts +37 -0
  39. package/dist/src/a11y/list-key/ListManager.d.ts.map +1 -0
  40. package/dist/src/a11y/list-key/RadioKeyManager.d.ts +20 -0
  41. package/dist/src/a11y/list-key/RadioKeyManager.d.ts.map +1 -0
  42. package/dist/src/a11y/list-key/RovingTabIndexManager.d.ts +22 -0
  43. package/dist/src/a11y/list-key/RovingTabIndexManager.d.ts.map +1 -0
  44. package/dist/src/a11y/list-key/SelectionManager.d.ts +46 -0
  45. package/dist/src/a11y/list-key/SelectionManager.d.ts.map +1 -0
  46. package/dist/src/a11y/list-key/Typeahead.d.ts +64 -0
  47. package/dist/src/a11y/list-key/Typeahead.d.ts.map +1 -0
  48. package/dist/src/a11y/list-key/index.d.ts +8 -0
  49. package/dist/src/a11y/list-key/index.d.ts.map +1 -0
  50. package/dist/src/a11y/visuallyHide.d.ts +6 -0
  51. package/dist/src/a11y/visuallyHide.d.ts.map +1 -0
  52. package/dist/src/anchoring/AnchorOptions.d.ts +15 -0
  53. package/dist/src/anchoring/AnchorOptions.d.ts.map +1 -0
  54. package/dist/src/anchoring/AnchorPosition.d.ts +3 -0
  55. package/dist/src/anchoring/AnchorPosition.d.ts.map +1 -0
  56. package/dist/src/anchoring/index.d.ts +4 -0
  57. package/dist/src/anchoring/index.d.ts.map +1 -0
  58. package/dist/src/anchoring/positionAnchor.d.ts +12 -0
  59. package/dist/src/anchoring/positionAnchor.d.ts.map +1 -0
  60. package/dist/src/bidi/Directionality.d.ts +27 -0
  61. package/dist/src/bidi/Directionality.d.ts.map +1 -0
  62. package/dist/src/bidi/index.d.ts +2 -0
  63. package/dist/src/bidi/index.d.ts.map +1 -0
  64. package/dist/src/index.d.ts +2 -0
  65. package/dist/src/index.d.ts.map +1 -0
  66. package/dist/src/layout/Breakpoint.d.ts +26 -0
  67. package/dist/src/layout/Breakpoint.d.ts.map +1 -0
  68. package/dist/src/layout/BreakpointObserver.d.ts +18 -0
  69. package/dist/src/layout/BreakpointObserver.d.ts.map +1 -0
  70. package/dist/src/layout/index.d.ts +3 -0
  71. package/dist/src/layout/index.d.ts.map +1 -0
  72. package/dist/src/platform/Platform.d.ts +34 -0
  73. package/dist/src/platform/Platform.d.ts.map +1 -0
  74. package/dist/src/platform/index.d.ts +2 -0
  75. package/dist/src/platform/index.d.ts.map +1 -0
  76. package/dist/src/shared/controllers/FocusController.d.ts +30 -0
  77. package/dist/src/shared/controllers/FocusController.d.ts.map +1 -0
  78. package/dist/src/shared/controllers/HoverController.d.ts +40 -0
  79. package/dist/src/shared/controllers/HoverController.d.ts.map +1 -0
  80. package/dist/src/shared/controllers/IntersectionController.d.ts +40 -0
  81. package/dist/src/shared/controllers/IntersectionController.d.ts.map +1 -0
  82. package/dist/src/shared/controllers/LongPressController.d.ts +32 -0
  83. package/dist/src/shared/controllers/LongPressController.d.ts.map +1 -0
  84. package/dist/src/shared/controllers/MonitorControllerBase.d.ts +62 -0
  85. package/dist/src/shared/controllers/MonitorControllerBase.d.ts.map +1 -0
  86. package/dist/src/shared/controllers/MutationController.d.ts +37 -0
  87. package/dist/src/shared/controllers/MutationController.d.ts.map +1 -0
  88. package/dist/src/shared/controllers/PressedController.d.ts +47 -0
  89. package/dist/src/shared/controllers/PressedController.d.ts.map +1 -0
  90. package/dist/src/shared/controllers/ResizeController.d.ts +40 -0
  91. package/dist/src/shared/controllers/ResizeController.d.ts.map +1 -0
  92. package/dist/src/shared/controllers/ScrollController.d.ts +34 -0
  93. package/dist/src/shared/controllers/ScrollController.d.ts.map +1 -0
  94. package/dist/src/shared/controllers/index.d.ts +9 -0
  95. package/dist/src/shared/controllers/index.d.ts.map +1 -0
  96. package/dist/src/shared/decorators/debounce.d.ts +7 -0
  97. package/dist/src/shared/decorators/debounce.d.ts.map +1 -0
  98. package/dist/src/shared/decorators/index.d.ts +2 -0
  99. package/dist/src/shared/decorators/index.d.ts.map +1 -0
  100. package/dist/src/shared/directives/index.d.ts +2 -0
  101. package/dist/src/shared/directives/index.d.ts.map +1 -0
  102. package/dist/src/shared/directives/safeStyleMap.d.ts +44 -0
  103. package/dist/src/shared/directives/safeStyleMap.d.ts.map +1 -0
  104. package/dist/src/shared/index.d.ts +8 -0
  105. package/dist/src/shared/index.d.ts.map +1 -0
  106. package/dist/src/shared/mixins/AttachInternals.d.ts +24 -0
  107. package/dist/src/shared/mixins/AttachInternals.d.ts.map +1 -0
  108. package/dist/src/shared/mixins/Checked.d.ts +24 -0
  109. package/dist/src/shared/mixins/Checked.d.ts.map +1 -0
  110. package/dist/src/shared/mixins/CheckedIndeterminate.d.ts +25 -0
  111. package/dist/src/shared/mixins/CheckedIndeterminate.d.ts.map +1 -0
  112. package/dist/src/shared/mixins/CheckedOrSelected.d.ts +23 -0
  113. package/dist/src/shared/mixins/CheckedOrSelected.d.ts.map +1 -0
  114. package/dist/src/shared/mixins/ConstraintValidation.d.ts +48 -0
  115. package/dist/src/shared/mixins/ConstraintValidation.d.ts.map +1 -0
  116. package/dist/src/shared/mixins/Constructor.d.ts +3 -0
  117. package/dist/src/shared/mixins/Constructor.d.ts.map +1 -0
  118. package/dist/src/shared/mixins/Dirty.d.ts +27 -0
  119. package/dist/src/shared/mixins/Dirty.d.ts.map +1 -0
  120. package/dist/src/shared/mixins/Disabled.d.ts +25 -0
  121. package/dist/src/shared/mixins/Disabled.d.ts.map +1 -0
  122. package/dist/src/shared/mixins/DisabledInteractive.d.ts +25 -0
  123. package/dist/src/shared/mixins/DisabledInteractive.d.ts.map +1 -0
  124. package/dist/src/shared/mixins/EventAttribute.d.ts +11 -0
  125. package/dist/src/shared/mixins/EventAttribute.d.ts.map +1 -0
  126. package/dist/src/shared/mixins/Focusable.d.ts +11 -0
  127. package/dist/src/shared/mixins/Focusable.d.ts.map +1 -0
  128. package/dist/src/shared/mixins/FormAssociated.d.ts +34 -0
  129. package/dist/src/shared/mixins/FormAssociated.d.ts.map +1 -0
  130. package/dist/src/shared/mixins/FormSubmitter.d.ts +34 -0
  131. package/dist/src/shared/mixins/FormSubmitter.d.ts.map +1 -0
  132. package/dist/src/shared/mixins/HtmlFor.d.ts +30 -0
  133. package/dist/src/shared/mixins/HtmlFor.d.ts.map +1 -0
  134. package/dist/src/shared/mixins/KeyboardClick.d.ts +11 -0
  135. package/dist/src/shared/mixins/KeyboardClick.d.ts.map +1 -0
  136. package/dist/src/shared/mixins/Labelled.d.ts +26 -0
  137. package/dist/src/shared/mixins/Labelled.d.ts.map +1 -0
  138. package/dist/src/shared/mixins/LinkButton.d.ts +46 -0
  139. package/dist/src/shared/mixins/LinkButton.d.ts.map +1 -0
  140. package/dist/src/shared/mixins/ReadOnly.d.ts +25 -0
  141. package/dist/src/shared/mixins/ReadOnly.d.ts.map +1 -0
  142. package/dist/src/shared/mixins/Required.d.ts +26 -0
  143. package/dist/src/shared/mixins/Required.d.ts.map +1 -0
  144. package/dist/src/shared/mixins/RequiredConstraintValidation.d.ts +21 -0
  145. package/dist/src/shared/mixins/RequiredConstraintValidation.d.ts.map +1 -0
  146. package/dist/src/shared/mixins/Role.d.ts +13 -0
  147. package/dist/src/shared/mixins/Role.d.ts.map +1 -0
  148. package/dist/src/shared/mixins/Selected.d.ts +24 -0
  149. package/dist/src/shared/mixins/Selected.d.ts.map +1 -0
  150. package/dist/src/shared/mixins/Touched.d.ts +27 -0
  151. package/dist/src/shared/mixins/Touched.d.ts.map +1 -0
  152. package/dist/src/shared/mixins/Vertical.d.ts +24 -0
  153. package/dist/src/shared/mixins/Vertical.d.ts.map +1 -0
  154. package/dist/src/shared/mixins/hasKeys.d.ts +9 -0
  155. package/dist/src/shared/mixins/hasKeys.d.ts.map +1 -0
  156. package/dist/src/shared/mixins/index.d.ts +25 -0
  157. package/dist/src/shared/mixins/index.d.ts.map +1 -0
  158. package/dist/src/shared/primitives/CollapsibleElement.d.ts +58 -0
  159. package/dist/src/shared/primitives/CollapsibleElement.d.ts.map +1 -0
  160. package/dist/src/shared/primitives/ElevationElement.d.ts +87 -0
  161. package/dist/src/shared/primitives/ElevationElement.d.ts.map +1 -0
  162. package/dist/src/shared/primitives/ElevationLevel.d.ts +3 -0
  163. package/dist/src/shared/primitives/ElevationLevel.d.ts.map +1 -0
  164. package/dist/src/shared/primitives/ElevationToken.d.ts +15 -0
  165. package/dist/src/shared/primitives/ElevationToken.d.ts.map +1 -0
  166. package/dist/src/shared/primitives/FocusRingElement.d.ts +77 -0
  167. package/dist/src/shared/primitives/FocusRingElement.d.ts.map +1 -0
  168. package/dist/src/shared/primitives/FocusRingToken.d.ts +17 -0
  169. package/dist/src/shared/primitives/FocusRingToken.d.ts.map +1 -0
  170. package/dist/src/shared/primitives/PseudoCheckboxElement.d.ts +49 -0
  171. package/dist/src/shared/primitives/PseudoCheckboxElement.d.ts.map +1 -0
  172. package/dist/src/shared/primitives/PseudoRadioElement.d.ts +40 -0
  173. package/dist/src/shared/primitives/PseudoRadioElement.d.ts.map +1 -0
  174. package/dist/src/shared/primitives/RippleElement.d.ts +109 -0
  175. package/dist/src/shared/primitives/RippleElement.d.ts.map +1 -0
  176. package/dist/src/shared/primitives/RippleToken.d.ts +12 -0
  177. package/dist/src/shared/primitives/RippleToken.d.ts.map +1 -0
  178. package/dist/src/shared/primitives/ScrollContainerElement.d.ts +61 -0
  179. package/dist/src/shared/primitives/ScrollContainerElement.d.ts.map +1 -0
  180. package/dist/src/shared/primitives/ScrollDividers.d.ts +3 -0
  181. package/dist/src/shared/primitives/ScrollDividers.d.ts.map +1 -0
  182. package/dist/src/shared/primitives/SlideElement.d.ts +46 -0
  183. package/dist/src/shared/primitives/SlideElement.d.ts.map +1 -0
  184. package/dist/src/shared/primitives/StateLayerElement.d.ts +76 -0
  185. package/dist/src/shared/primitives/StateLayerElement.d.ts.map +1 -0
  186. package/dist/src/shared/primitives/StateLayerToken.d.ts +13 -0
  187. package/dist/src/shared/primitives/StateLayerToken.d.ts.map +1 -0
  188. package/dist/src/shared/primitives/TextHighlightElement.d.ts +81 -0
  189. package/dist/src/shared/primitives/TextHighlightElement.d.ts.map +1 -0
  190. package/dist/src/shared/primitives/TextOverflowElement.d.ts +38 -0
  191. package/dist/src/shared/primitives/TextOverflowElement.d.ts.map +1 -0
  192. package/dist/src/shared/primitives/index.d.ts +14 -0
  193. package/dist/src/shared/primitives/index.d.ts.map +1 -0
  194. package/dist/src/shared/tokens/ColorToken.d.ts +96 -0
  195. package/dist/src/shared/tokens/ColorToken.d.ts.map +1 -0
  196. package/dist/src/shared/tokens/DensityToken.d.ts +15 -0
  197. package/dist/src/shared/tokens/DensityToken.d.ts.map +1 -0
  198. package/dist/src/shared/tokens/DesignToken.d.ts +366 -0
  199. package/dist/src/shared/tokens/DesignToken.d.ts.map +1 -0
  200. package/dist/src/shared/tokens/ElevationToken.d.ts +16 -0
  201. package/dist/src/shared/tokens/ElevationToken.d.ts.map +1 -0
  202. package/dist/src/shared/tokens/MotionToken.d.ts +69 -0
  203. package/dist/src/shared/tokens/MotionToken.d.ts.map +1 -0
  204. package/dist/src/shared/tokens/ScrollbarToken.d.ts +10 -0
  205. package/dist/src/shared/tokens/ScrollbarToken.d.ts.map +1 -0
  206. package/dist/src/shared/tokens/ShapeToken.d.ts +79 -0
  207. package/dist/src/shared/tokens/ShapeToken.d.ts.map +1 -0
  208. package/dist/src/shared/tokens/StateToken.d.ts +10 -0
  209. package/dist/src/shared/tokens/StateToken.d.ts.map +1 -0
  210. package/dist/src/shared/tokens/TypescaleToken.d.ts +220 -0
  211. package/dist/src/shared/tokens/TypescaleToken.d.ts.map +1 -0
  212. package/dist/src/shared/tokens/index.d.ts +2 -0
  213. package/dist/src/shared/tokens/index.d.ts.map +1 -0
  214. package/dist/src/shared/utils/getTextContent.d.ts +8 -0
  215. package/dist/src/shared/utils/getTextContent.d.ts.map +1 -0
  216. package/dist/src/shared/utils/guid.d.ts +6 -0
  217. package/dist/src/shared/utils/guid.d.ts.map +1 -0
  218. package/dist/src/shared/utils/hasAssignedNodes.d.ts +7 -0
  219. package/dist/src/shared/utils/hasAssignedNodes.d.ts.map +1 -0
  220. package/dist/src/shared/utils/index.d.ts +6 -0
  221. package/dist/src/shared/utils/index.d.ts.map +1 -0
  222. package/dist/src/shared/utils/prefersReducedMotion.d.ts +6 -0
  223. package/dist/src/shared/utils/prefersReducedMotion.d.ts.map +1 -0
  224. package/dist/src/shared/utils/scrollIntoViewIfNeeded.d.ts +8 -0
  225. package/dist/src/shared/utils/scrollIntoViewIfNeeded.d.ts.map +1 -0
  226. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -519,7 +519,9 @@ _PressedController_capture = new WeakMap(), _PressedController_callback = new We
519
519
  }
520
520
  }
521
521
  }, _PressedController_handleKeyDown = function _PressedController_handleKeyDown(e) {
522
- const target = e.target;
522
+ if (e.target !== e.currentTarget)
523
+ return;
524
+ const target = e.currentTarget;
523
525
  if (!__classPrivateFieldGet(this, _PressedController_pressedTargets, "f").has(target) && __classPrivateFieldGet(this, _PressedController_isPressedKey, "f")?.call(this, e.key)) {
524
526
  if (e.key === " ") {
525
527
  e.preventDefault();
@@ -982,10 +984,17 @@ function Selected(base) {
982
984
  if (this.role === "button") {
983
985
  this.ariaPressed = `${this.selected}`;
984
986
  this.ariaSelected = null;
987
+ this.ariaChecked = null;
988
+ }
989
+ else if (this.role === "radio") {
990
+ this.ariaChecked = `${this.selected}`;
991
+ this.ariaSelected = null;
992
+ this.ariaPressed = null;
985
993
  }
986
994
  else if (this.role && this.role !== "none" && this.role !== "presentation") {
987
995
  this.ariaSelected = `${this.selected}`;
988
996
  this.ariaPressed = null;
997
+ this.ariaChecked = null;
989
998
  }
990
999
  }
991
1000
  }
@@ -1116,12 +1125,12 @@ function Touched(base) {
1116
1125
  connectedCallback() {
1117
1126
  this.markAsUntouched();
1118
1127
  super.connectedCallback();
1119
- this.addEventListener("focusout", this[_eventHandler$1]);
1128
+ this.addEventListener("focusout", this[_eventHandler$1], { capture: true });
1120
1129
  }
1121
1130
  /** @inheritdoc */
1122
1131
  disconnectedCallback() {
1123
1132
  super.disconnectedCallback();
1124
- this.removeEventListener("focusout", this[_eventHandler$1]);
1133
+ this.removeEventListener("focusout", this[_eventHandler$1], { capture: true });
1125
1134
  }
1126
1135
  /** Marks the element as touched. */
1127
1136
  markAsTouched() {
@@ -1873,6 +1882,8 @@ function DisabledInteractive(base) {
1873
1882
  return _DisabledInteractiveMixin;
1874
1883
  }
1875
1884
 
1885
+ /** A symbol through which to update labels to reflect a control's current state. */
1886
+ const updateLabels = Symbol("updateLabels");
1876
1887
  /**
1877
1888
  * Determines whether a value is a `LabelledMixin`.
1878
1889
  * @param {unknown} value The value to test.
@@ -1881,7 +1892,6 @@ function DisabledInteractive(base) {
1881
1892
  function isLabelledMixin(value) {
1882
1893
  return hasKeys(value, "labels") && isAttachInternalsMixin(value);
1883
1894
  }
1884
- const _updateLabels = Symbol("_updateLabels");
1885
1895
  const _eventHandler = Symbol("_eventHandler");
1886
1896
  /**
1887
1897
  * Mixin to augment an element with support for labelling.
@@ -1897,7 +1907,7 @@ function Labelled(base) {
1897
1907
  /** @private */
1898
1908
  this[_a] = (e) => {
1899
1909
  if (!e.defaultPrevented) {
1900
- this[_updateLabels]();
1910
+ this[updateLabels]();
1901
1911
  }
1902
1912
  };
1903
1913
  }
@@ -1920,18 +1930,19 @@ function Labelled(base) {
1920
1930
  /** @inheritdoc */
1921
1931
  update(changedProperties) {
1922
1932
  super.update(changedProperties);
1923
- this[_updateLabels]();
1933
+ this[updateLabels]();
1924
1934
  }
1925
- /** @private */
1926
- [(_a = _eventHandler, _updateLabels)]() {
1935
+ /** @internal */
1936
+ [(_a = _eventHandler, updateLabels)]() {
1927
1937
  const focusable = this.hasAttribute("tabindex");
1928
1938
  const disabled = (isDisabledMixin(this) && this.disabled) || (isDisabledInteractiveMixin(this) && this.disabledInteractive);
1929
- for (const label of this.labels) {
1939
+ const invalid = isTouchedMixin(this) && this.touched && (this.ariaInvalid || this.classList.contains("-invalid"));
1940
+ for (const label of this.labels ?? []) {
1930
1941
  label.style.userSelect = focusable ? "none" : "";
1931
- label.style.cursor = !disabled ? "pointer" : "";
1942
+ label.style.cursor = !disabled && focusable ? "pointer" : "";
1932
1943
  label.style.color = disabled
1933
1944
  ? `color-mix(in srgb, ${DesignToken.color.onSurface} 38%, transparent)`
1934
- : isTouchedMixin(this) && this.touched && this.ariaInvalid
1945
+ : invalid
1935
1946
  ? `${DesignToken.color.error}`
1936
1947
  : "";
1937
1948
  }
@@ -2168,6 +2179,9 @@ function ConstraintValidation(base) {
2168
2179
  this[internals].setValidity(validity, validityMessage);
2169
2180
  this.ariaInvalid = invalid ? "true" : null;
2170
2181
  this.classList.toggle("-invalid", invalid === true);
2182
+ if (isLabelledMixin(this)) {
2183
+ this[updateLabels]?.();
2184
+ }
2171
2185
  }
2172
2186
  }
2173
2187
  __ConstraintValidation_getNativeMessage = function __ConstraintValidation_getNativeMessage(flags) {
@@ -2230,7 +2244,7 @@ function ConstraintValidation(base) {
2230
2244
  */
2231
2245
  function EventAttribute(base, ...types) {
2232
2246
  class _EventAttribute extends base {
2233
- /** @inheritdoc */
2247
+ /** @internal */
2234
2248
  dispatchEvent(event) {
2235
2249
  if (types.includes(event.type)) {
2236
2250
  const eventAttribute = this.getAttribute(`on${event.type}`);
@@ -2321,7 +2335,9 @@ function FormSubmitter(base) {
2321
2335
  this.type = "button";
2322
2336
  /** @private */
2323
2337
  this[_a] = async (e) => {
2324
- if ((isDisabledMixin(this) && this.disabled) || (isDisabledInteractiveMixin(this) && this.disabledInteractive)) {
2338
+ if (e.defaultPrevented ||
2339
+ (isDisabledMixin(this) && this.disabled) ||
2340
+ (isDisabledInteractiveMixin(this) && this.disabledInteractive)) {
2325
2341
  return;
2326
2342
  }
2327
2343
  const form = this[internals].form;
@@ -2387,6 +2403,8 @@ function FormSubmitter(base) {
2387
2403
  }
2388
2404
  }
2389
2405
  _a = _clickHandler$1;
2406
+ /** Indicates that this custom element participates in form submission, validation, and form state restoration. */
2407
+ _FormSubmitterMixin.formAssociated = true;
2390
2408
  __decorate([
2391
2409
  n$1()
2392
2410
  ], _FormSubmitterMixin.prototype, "name", null);
@@ -2501,7 +2519,10 @@ function KeyboardClick(base, allowEnter = true) {
2501
2519
  }
2502
2520
  }
2503
2521
  __KeyboardClickMixin_keyUpHandler = new WeakMap(), __KeyboardClickMixin_instances = new WeakSet(), __KeyboardClickMixin_handleKeyUp = function __KeyboardClickMixin_handleKeyUp(e) {
2504
- if ((isDisabledMixin(this) && this.disabled) || (isDisabledInteractiveMixin(this) && this.disabledInteractive)) {
2522
+ if (e.defaultPrevented ||
2523
+ e.target !== e.currentTarget ||
2524
+ (isDisabledMixin(this) && this.disabled) ||
2525
+ (isDisabledInteractiveMixin(this) && this.disabledInteractive)) {
2505
2526
  return;
2506
2527
  }
2507
2528
  if (e.key === " " || (allowEnter && e.key === "Enter")) {
@@ -4507,5 +4528,211 @@ M3eTextOverflowElement = __decorate([
4507
4528
  t$2("m3e-text-overflow")
4508
4529
  ], M3eTextOverflowElement);
4509
4530
 
4510
- export { AttachInternals, Checked, CheckedIndeterminate, ConstraintValidation, DesignToken, Dirty, Disabled, DisabledInteractive, EventAttribute, FocusController, Focusable, FormAssociated, FormSubmitter, HoverController, HtmlFor, IntersectionController, KeyboardClick, Labelled, LinkButton, LongPressController, M3eCollapsibleElement, M3eElevationElement, M3eFocusRingElement, M3ePseudoCheckboxElement, M3ePseudoRadioElement, M3eRippleElement, M3eScrollContainerElement, M3eSlide, M3eStateLayerElement, M3eTextOverflowElement, MutationController, PressedController, ReadOnly, Required, RequiredConstraintValidation, ResizeController, Role, ScrollController, Selected, Touched, Vertical, checkOrSelect, debounce, defaultValue, formValue, getTextContent, guid, hasAssignedNodes, hasKeys, internals, isAttachInternalsMixin, isCheckedIndeterminateMixin, isCheckedMixin, isCheckedOrSelected, isCheckedOrSelectedMixin, isConstraintValidationMixin, isDirtyMixin, isDisabledInteractiveMixin, isDisabledMixin, isFormAssociatedMixin, isFormSubmitterMixin, isHtmlForMixin, isLabelledMixin, isLinkButtonMixin, isReadOnlyMixin, isRequiredConstraintValidationMixin, isRequiredMixin, isSelectedMixin, isTouchedMixin, isVerticalMixin, prefersReducedMotion, renderPseudoLink, safeStyleMap, scrollIntoViewIfNeeded, validate };
4531
+ var _M3eTextHighlightElement_instances, _M3eTextHighlightElement_id, _M3eTextHighlightElement_ranges, _M3eTextHighlightElement_styles, _M3eTextHighlightElement_isTextNode, _M3eTextHighlightElement_findTextNodes, _M3eTextHighlightElement_highlight;
4532
+ var M3eTextHighlightElement_1;
4533
+ /**
4534
+ * Highlights text which matches a given search term.
4535
+ *
4536
+ * @description
4537
+ * Highlights all text ranges in slotted content that match a given search term using the CSS Custom Highlight API.
4538
+ *
4539
+ * @example
4540
+ * The following example illustrates highlighting "Lor".
4541
+ * ```html
4542
+ * <m3e-text-highlight term="Lor">
4543
+ * <p>
4544
+ * Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
4545
+ * ut labore et dolore magna aliqua.
4546
+ * </p>
4547
+ * </m3e-text-highlight>
4548
+ * ```
4549
+ *
4550
+ * @tag m3e-text-highlight
4551
+ *
4552
+ * @slot - Renders the content to highlight.
4553
+ *
4554
+ * @attr case-sensitive - A value indicating whether matching is case sensitive.
4555
+ * @attr disabled - A value indicating whether text highlighting is disabled.
4556
+ * @attr term - The term to highlight.
4557
+ *
4558
+ * @fires highlight - Emitted when content is highlighted.
4559
+ *
4560
+ * @cssprop --m3e-text-highlight-container-color - Background color applied to highlighted text ranges.
4561
+ * @cssprop --m3e-text-highlight-color - Foreground color of highlighted text content.
4562
+ * @cssprop --m3e-text-highlight-decoration - Optional text decoration (e.g., underline, line-through) for highlighted text.
4563
+ * @cssprop --m3e-text-highlight-shadow - Optional text shadow for emphasis or contrast.
4564
+ */
4565
+ let M3eTextHighlightElement = M3eTextHighlightElement_1 = class M3eTextHighlightElement extends LitElement {
4566
+ constructor() {
4567
+ super();
4568
+ _M3eTextHighlightElement_instances.add(this);
4569
+ /** @private */ _M3eTextHighlightElement_id.set(this, `m3e-text-highlight-${M3eTextHighlightElement_1.__nextId++}`);
4570
+ /** @private */ _M3eTextHighlightElement_ranges.set(this, new Array());
4571
+ /** @private */ _M3eTextHighlightElement_styles.set(this, null);
4572
+ /**
4573
+ * A value indicating whether text highlighting is disabled.
4574
+ * @default false
4575
+ */
4576
+ this.disabled = false;
4577
+ /**
4578
+ * The term to highlight.
4579
+ * @default ""
4580
+ */
4581
+ this.term = "";
4582
+ /**
4583
+ * A value indicating whether matching is case sensitive.
4584
+ * @default false
4585
+ */
4586
+ this.caseSensitive = false;
4587
+ if (this.isSupported) {
4588
+ __classPrivateFieldSet(this, _M3eTextHighlightElement_styles, new CSSStyleSheet(), "f");
4589
+ __classPrivateFieldGet(this, _M3eTextHighlightElement_styles, "f").replaceSync(css `
4590
+ ::highlight(${unsafeCSS(__classPrivateFieldGet(this, _M3eTextHighlightElement_id, "f"))}) {
4591
+ background-color: var(--m3e-text-highlight-container-color, ${DesignToken.color.secondaryContainer});
4592
+ color: var(--m3e-text-highlight-color, ${DesignToken.color.onSecondaryContainer});
4593
+ text-decoration: var(--m3e-text-highlight-decoration);
4594
+ text-shadow: var(--m3e-text-highlight-shadow);
4595
+ }
4596
+ `.toString());
4597
+ }
4598
+ }
4599
+ /** A value indicating whether text highlighting is supported by the browser. */
4600
+ get isSupported() {
4601
+ return !isServer && CSS.highlights ? true : false;
4602
+ }
4603
+ /** The ranges that match the current term. */
4604
+ get ranges() {
4605
+ return __classPrivateFieldGet(this, _M3eTextHighlightElement_ranges, "f");
4606
+ }
4607
+ /** @inheritdoc */
4608
+ firstUpdated(_changedProperties) {
4609
+ super.firstUpdated(_changedProperties);
4610
+ if (this.shadowRoot && __classPrivateFieldGet(this, _M3eTextHighlightElement_styles, "f") && !this.shadowRoot.adoptedStyleSheets.includes(__classPrivateFieldGet(this, _M3eTextHighlightElement_styles, "f"))) {
4611
+ this.shadowRoot.adoptedStyleSheets.push(__classPrivateFieldGet(this, _M3eTextHighlightElement_styles, "f"));
4612
+ }
4613
+ }
4614
+ /** @inheritdoc */
4615
+ updated(_changedProperties) {
4616
+ super.updated(_changedProperties);
4617
+ if (_changedProperties.has("term") ||
4618
+ _changedProperties.has("caseSensitive") ||
4619
+ _changedProperties.has("disabled")) {
4620
+ __classPrivateFieldGet(this, _M3eTextHighlightElement_instances, "m", _M3eTextHighlightElement_highlight).call(this);
4621
+ }
4622
+ }
4623
+ /** @inheritdoc */
4624
+ render() {
4625
+ return html `<slot @slotchange="${__classPrivateFieldGet(this, _M3eTextHighlightElement_instances, "m", _M3eTextHighlightElement_highlight)}"></slot>`;
4626
+ }
4627
+ };
4628
+ _M3eTextHighlightElement_id = new WeakMap();
4629
+ _M3eTextHighlightElement_ranges = new WeakMap();
4630
+ _M3eTextHighlightElement_styles = new WeakMap();
4631
+ _M3eTextHighlightElement_instances = new WeakSet();
4632
+ _M3eTextHighlightElement_isTextNode = function _M3eTextHighlightElement_isTextNode(node) {
4633
+ return /^(\\s|\\n)+$/gi.test(node.data) ? false : true;
4634
+ };
4635
+ _M3eTextHighlightElement_findTextNodes = function _M3eTextHighlightElement_findTextNodes(parent, nodes) {
4636
+ if (parent instanceof HTMLSlotElement) {
4637
+ parent.assignedElements({ flatten: true }).forEach((x) => {
4638
+ switch (x.nodeType) {
4639
+ case Node.TEXT_NODE:
4640
+ if (__classPrivateFieldGet(this, _M3eTextHighlightElement_instances, "m", _M3eTextHighlightElement_isTextNode).call(this, x)) {
4641
+ nodes.push(x);
4642
+ }
4643
+ break;
4644
+ case Node.ELEMENT_NODE:
4645
+ __classPrivateFieldGet(this, _M3eTextHighlightElement_instances, "m", _M3eTextHighlightElement_findTextNodes).call(this, x, nodes);
4646
+ break;
4647
+ }
4648
+ });
4649
+ }
4650
+ else {
4651
+ parent.childNodes.forEach((x) => {
4652
+ switch (x.nodeType) {
4653
+ case Node.TEXT_NODE:
4654
+ if (__classPrivateFieldGet(this, _M3eTextHighlightElement_instances, "m", _M3eTextHighlightElement_isTextNode).call(this, x)) {
4655
+ nodes.push(x);
4656
+ }
4657
+ break;
4658
+ case Node.ELEMENT_NODE:
4659
+ __classPrivateFieldGet(this, _M3eTextHighlightElement_instances, "m", _M3eTextHighlightElement_findTextNodes).call(this, x, nodes);
4660
+ break;
4661
+ }
4662
+ });
4663
+ }
4664
+ };
4665
+ _M3eTextHighlightElement_highlight = function _M3eTextHighlightElement_highlight() {
4666
+ if (!this.isSupported || !this.isConnected)
4667
+ return;
4668
+ CSS.highlights.delete(__classPrivateFieldGet(this, _M3eTextHighlightElement_id, "f"));
4669
+ __classPrivateFieldGet(this, _M3eTextHighlightElement_ranges, "f").length = 0;
4670
+ if (this.disabled)
4671
+ return;
4672
+ if (!this.term) {
4673
+ this.dispatchEvent(new CustomEvent("highlight", {
4674
+ detail: [...__classPrivateFieldGet(this, _M3eTextHighlightElement_ranges, "f")],
4675
+ bubbles: false,
4676
+ composed: false,
4677
+ }));
4678
+ return;
4679
+ }
4680
+ const texts = new Array();
4681
+ __classPrivateFieldGet(this, _M3eTextHighlightElement_instances, "m", _M3eTextHighlightElement_findTextNodes).call(this, this, texts);
4682
+ const term = !this.caseSensitive ? this.term.toLowerCase() : this.term;
4683
+ __classPrivateFieldSet(this, _M3eTextHighlightElement_ranges, texts
4684
+ .map((x) => {
4685
+ return {
4686
+ el: x,
4687
+ text: (!this.caseSensitive ? x.textContent?.toLowerCase() : x.textContent) ?? "",
4688
+ };
4689
+ })
4690
+ .map(({ el, text }) => {
4691
+ const indices = new Array();
4692
+ let startPos = 0;
4693
+ while (startPos < text.length) {
4694
+ const index = text.indexOf(term, startPos);
4695
+ if (index === -1)
4696
+ break;
4697
+ indices.push(index);
4698
+ startPos = index + term.length;
4699
+ }
4700
+ return indices.map((index) => {
4701
+ const range = new Range();
4702
+ range.setStart(el, index);
4703
+ range.setEnd(el, index + term.length);
4704
+ return range;
4705
+ });
4706
+ })
4707
+ .flat(), "f");
4708
+ if (__classPrivateFieldGet(this, _M3eTextHighlightElement_ranges, "f").length > 0) {
4709
+ CSS.highlights.set(__classPrivateFieldGet(this, _M3eTextHighlightElement_id, "f"), new Highlight(...__classPrivateFieldGet(this, _M3eTextHighlightElement_ranges, "f")));
4710
+ }
4711
+ this.dispatchEvent(new CustomEvent("highlight", {
4712
+ detail: [...__classPrivateFieldGet(this, _M3eTextHighlightElement_ranges, "f")],
4713
+ bubbles: false,
4714
+ composed: false,
4715
+ }));
4716
+ };
4717
+ /** The styles of the element. */
4718
+ M3eTextHighlightElement.styles = css `
4719
+ :host {
4720
+ display: contents;
4721
+ }
4722
+ `;
4723
+ /** @private */ M3eTextHighlightElement.__nextId = 0;
4724
+ __decorate([
4725
+ n$1({ type: Boolean, reflect: true })
4726
+ ], M3eTextHighlightElement.prototype, "disabled", void 0);
4727
+ __decorate([
4728
+ n$1()
4729
+ ], M3eTextHighlightElement.prototype, "term", void 0);
4730
+ __decorate([
4731
+ n$1({ attribute: "case-sensitive", type: Boolean })
4732
+ ], M3eTextHighlightElement.prototype, "caseSensitive", void 0);
4733
+ M3eTextHighlightElement = M3eTextHighlightElement_1 = __decorate([
4734
+ t$2("m3e-text-highlight")
4735
+ ], M3eTextHighlightElement);
4736
+
4737
+ export { AttachInternals, Checked, CheckedIndeterminate, ConstraintValidation, DesignToken, Dirty, Disabled, DisabledInteractive, EventAttribute, FocusController, Focusable, FormAssociated, FormSubmitter, HoverController, HtmlFor, IntersectionController, KeyboardClick, Labelled, LinkButton, LongPressController, M3eCollapsibleElement, M3eElevationElement, M3eFocusRingElement, M3ePseudoCheckboxElement, M3ePseudoRadioElement, M3eRippleElement, M3eScrollContainerElement, M3eSlide, M3eStateLayerElement, M3eTextHighlightElement, M3eTextOverflowElement, MutationController, PressedController, ReadOnly, Required, RequiredConstraintValidation, ResizeController, Role, ScrollController, Selected, Touched, Vertical, checkOrSelect, debounce, defaultValue, formValue, getTextContent, guid, hasAssignedNodes, hasKeys, internals, isAttachInternalsMixin, isCheckedIndeterminateMixin, isCheckedMixin, isCheckedOrSelected, isCheckedOrSelectedMixin, isConstraintValidationMixin, isDirtyMixin, isDisabledInteractiveMixin, isDisabledMixin, isFormAssociatedMixin, isFormSubmitterMixin, isHtmlForMixin, isLabelledMixin, isLinkButtonMixin, isReadOnlyMixin, isRequiredConstraintValidationMixin, isRequiredMixin, isSelectedMixin, isTouchedMixin, isVerticalMixin, prefersReducedMotion, renderPseudoLink, safeStyleMap, scrollIntoViewIfNeeded, updateLabels, validate };
4511
4738
  //# sourceMappingURL=index.js.map