@oscarpalmer/oui 0.42.0 → 0.43.0

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 (173) hide show
  1. package/dist/css/grid.css +38 -0
  2. package/dist/js/color-picker/color-picker.constants.d.mts +1 -1
  3. package/dist/js/color-picker/color-picker.constants.mjs +1 -2
  4. package/dist/js/color-picker/color-picker.dom.d.mts +2 -4
  5. package/dist/js/color-picker/color-picker.dom.mjs +1 -2
  6. package/dist/js/color-picker/color-picker.event.d.mts +2 -4
  7. package/dist/js/color-picker/color-picker.event.mjs +6 -7
  8. package/dist/js/color-picker/color-picker.form.d.mts +2 -4
  9. package/dist/js/color-picker/color-picker.form.mjs +2 -3
  10. package/dist/js/color-picker/color-picker.misc.d.mts +1 -1
  11. package/dist/js/color-picker/color-picker.misc.mjs +1 -2
  12. package/dist/js/color-picker/color-picker.model.d.mts +1 -1
  13. package/dist/js/color-picker/color-picker.model.mjs +1 -2
  14. package/dist/js/color-picker/color-picker.output.d.mts +2 -4
  15. package/dist/js/color-picker/color-picker.output.mjs +4 -5
  16. package/dist/js/color-picker/color-picker.state.d.mts +2 -4
  17. package/dist/js/color-picker/color-picker.state.mjs +4 -5
  18. package/dist/js/color-picker/index.d.mts +5 -7
  19. package/dist/js/color-picker/index.mjs +3 -4
  20. package/dist/js/{color-picker.constants-BZgXQr5o.d.mts → color-picker.constants-DdttC4ab.d.mts} +3 -8
  21. package/dist/js/{color-picker.misc-BIS3R6jk.d.mts → color-picker.misc-BH_tFyWR.d.mts} +1 -3
  22. package/dist/js/combobox/combobox.constants.d.mts +2 -2
  23. package/dist/js/combobox/combobox.constants.mjs +3 -3
  24. package/dist/js/combobox/combobox.dom.d.mts +2 -4
  25. package/dist/js/combobox/combobox.dom.mjs +3 -3
  26. package/dist/js/combobox/combobox.event.d.mts +3 -5
  27. package/dist/js/combobox/combobox.event.mjs +1 -1
  28. package/dist/js/combobox/combobox.misc.d.mts +1 -1
  29. package/dist/js/combobox/combobox.misc.mjs +1 -1
  30. package/dist/js/combobox/combobox.model.d.mts +1 -1
  31. package/dist/js/combobox/combobox.state.d.mts +3 -5
  32. package/dist/js/combobox/combobox.state.mjs +1 -1
  33. package/dist/js/combobox/index.d.mts +7 -9
  34. package/dist/js/combobox/index.mjs +3 -4
  35. package/dist/js/{combobox.constants-Hb3bqqQJ.d.mts → combobox.constants-CDnBNJC0.d.mts} +3 -4
  36. package/dist/js/{combobox.misc-DRDFk6X8.d.mts → combobox.misc-Csh9lm9_.d.mts} +1 -3
  37. package/dist/js/{combobox.model-gjEI2VqZ.d.mts → combobox.model-BRGQDuRl.d.mts} +2 -4
  38. package/dist/js/{combobox.state-AstCICiH.mjs → combobox.state-Bjt0dwe3.mjs} +29 -29
  39. package/dist/js/dialog/dialog.model.d.mts +1 -1
  40. package/dist/js/dialog/dialog.model.mjs +1 -2
  41. package/dist/js/dialog/index.d.mts +1 -3
  42. package/dist/js/dialog/index.mjs +2 -3
  43. package/dist/js/{dialog.model-Dv_h9Kns.d.mts → dialog.model-cYq7rTKL.d.mts} +2 -4
  44. package/dist/js/floatable/floatable.embedded.d.mts +1 -1
  45. package/dist/js/floatable/floatable.embedded.mjs +1 -2
  46. package/dist/js/floatable/floatable.model.d.mts +1 -1
  47. package/dist/js/floatable/floatable.model.mjs +1 -2
  48. package/dist/js/floatable/floatable.standalone.d.mts +2 -2
  49. package/dist/js/{floatable.embedded-ncshL3Sa.d.mts → floatable.embedded-Cr1KX6GZ.d.mts} +1 -3
  50. package/dist/js/{floatable.model-DXsQgoU7.d.mts → floatable.model-jS5Ui5Av.d.mts} +0 -2
  51. package/dist/js/focus-trap/focus-trap.embedded.d.mts +1 -1
  52. package/dist/js/focus-trap/focus-trap.embedded.mjs +4 -5
  53. package/dist/js/focus-trap/focus-trap.model.d.mts +2 -2
  54. package/dist/js/focus-trap/focus-trap.model.mjs +3 -3
  55. package/dist/js/focus-trap/focus-trap.standalone.d.mts +2 -2
  56. package/dist/js/{focus-trap.embedded-DpcPkP7c.d.mts → focus-trap.embedded-BVXcd4OO.d.mts} +1 -3
  57. package/dist/js/{focus-trap.model-CpltX5B5.d.mts → focus-trap.model-wg0iAZ7x.d.mts} +2 -3
  58. package/dist/js/grid/grid.dom.d.mts +7 -0
  59. package/dist/js/grid/grid.dom.mjs +171 -0
  60. package/dist/js/grid/grid.event.d.mts +7 -0
  61. package/dist/js/grid/grid.event.mjs +1 -0
  62. package/dist/js/grid/grid.misc.d.mts +6 -0
  63. package/dist/js/grid/grid.misc.mjs +1 -0
  64. package/dist/js/grid/grid.model.d.mts +2 -0
  65. package/dist/js/grid/grid.model.mjs +39 -0
  66. package/dist/js/grid/index.d.mts +22 -0
  67. package/dist/js/grid/index.mjs +48 -0
  68. package/dist/js/grid.event-K_pG2vmS.mjs +192 -0
  69. package/dist/js/grid.model-SiNst5db.d.mts +90 -0
  70. package/dist/js/index.d.mts +22 -21
  71. package/dist/js/index.mjs +5 -3
  72. package/dist/js/internal/attributable.d.mts +1 -3
  73. package/dist/js/internal/attributable.mjs +3 -3
  74. package/dist/js/internal/draggable/draggable.model.d.mts +2 -2
  75. package/dist/js/internal/draggable/draggable.model.mjs +3 -3
  76. package/dist/js/internal/draggable/index.d.mts +2 -4
  77. package/dist/js/internal/draggable/index.mjs +18 -14
  78. package/dist/js/internal/l10n/index.d.mts +2 -4
  79. package/dist/js/internal/l10n/index.mjs +30 -22
  80. package/dist/js/internal/l10n/l10n.model.d.mts +1 -1
  81. package/dist/js/internal/l10n/l10n.model.mjs +1 -2
  82. package/dist/js/internal/misc.d.mts +2 -3
  83. package/dist/js/internal/misc.mjs +5 -3
  84. package/dist/js/internal/navigable/index.d.mts +2 -4
  85. package/dist/js/internal/navigable/index.mjs +1 -2
  86. package/dist/js/internal/navigable/navigable.model.d.mts +1 -1
  87. package/dist/js/internal/navigable/navigable.model.mjs +1 -2
  88. package/dist/js/internal/option-list/option-list.constants.d.mts +3 -5
  89. package/dist/js/internal/option-list/option-list.constants.mjs +3 -4
  90. package/dist/js/internal/option-list/option-list.data.d.mts +2 -4
  91. package/dist/js/internal/option-list/option-list.data.mjs +1 -1
  92. package/dist/js/internal/option-list/option-list.dom.d.mts +3 -5
  93. package/dist/js/internal/option-list/option-list.dom.mjs +1 -1
  94. package/dist/js/internal/option-list/option-list.event.d.mts +3 -5
  95. package/dist/js/internal/option-list/option-list.event.mjs +4 -5
  96. package/dist/js/internal/option-list/option-list.form.d.mts +3 -5
  97. package/dist/js/internal/option-list/option-list.form.mjs +2 -3
  98. package/dist/js/internal/option-list/option-list.misc.d.mts +3 -5
  99. package/dist/js/internal/option-list/option-list.misc.mjs +1 -1
  100. package/dist/js/internal/option-list/option-list.model.d.mts +2 -2
  101. package/dist/js/internal/option-list/option-list.model.mjs +7 -1
  102. package/dist/js/internal/option-list/option-list.state.d.mts +3 -5
  103. package/dist/js/internal/option-list/option-list.state.mjs +2 -3
  104. package/dist/js/l10n/index.d.mts +1 -1
  105. package/dist/js/{l10n.model-D1E1u35L.d.mts → l10n.model-DxwLXnFl.d.mts} +0 -2
  106. package/dist/js/listbox/index.d.mts +6 -8
  107. package/dist/js/listbox/index.mjs +3 -4
  108. package/dist/js/listbox/listbox.constants.d.mts +1 -1
  109. package/dist/js/listbox/listbox.constants.mjs +1 -2
  110. package/dist/js/listbox/listbox.dom.d.mts +2 -4
  111. package/dist/js/listbox/listbox.dom.mjs +1 -1
  112. package/dist/js/listbox/listbox.event.d.mts +3 -5
  113. package/dist/js/listbox/listbox.event.mjs +1 -1
  114. package/dist/js/listbox/listbox.misc.d.mts +1 -1
  115. package/dist/js/listbox/listbox.misc.mjs +1 -1
  116. package/dist/js/listbox/listbox.model.d.mts +1 -1
  117. package/dist/js/listbox/listbox.state.d.mts +3 -5
  118. package/dist/js/listbox/listbox.state.mjs +1 -1
  119. package/dist/js/{listbox.constants-DOBMwKup.d.mts → listbox.constants-1yMPRl2C.d.mts} +1 -3
  120. package/dist/js/{listbox.misc-DwfB4Mu_.d.mts → listbox.misc-CkW28nUS.d.mts} +1 -3
  121. package/dist/js/{listbox.model-C0MYWXZe.d.mts → listbox.model-CUA_DaR9.d.mts} +1 -3
  122. package/dist/js/{listbox.state-BrN296BM.mjs → listbox.state-DO58GDqc.mjs} +8 -12
  123. package/dist/js/menu/index.mjs +2 -3
  124. package/dist/js/menu/menu.model.d.mts +3 -5
  125. package/dist/js/menu/menu.model.mjs +1 -2
  126. package/dist/js/movable/movable.embedded.d.mts +1 -1
  127. package/dist/js/movable/movable.embedded.mjs +3 -4
  128. package/dist/js/movable/movable.model.d.mts +2 -2
  129. package/dist/js/movable/movable.model.mjs +3 -3
  130. package/dist/js/movable/movable.standalone.d.mts +2 -2
  131. package/dist/js/{movable.embedded-C1bDTLGs.d.mts → movable.embedded-HjPPob-Z.d.mts} +1 -3
  132. package/dist/js/{movable.model-D9nnPWKk.d.mts → movable.model-CQ3AbTrq.d.mts} +13 -7
  133. package/dist/js/{navigable.model-BqoR6iBv.d.mts → navigable.model-CrzJqKE7.d.mts} +0 -2
  134. package/dist/js/{option-list.data-CgMyUwPc.mjs → option-list.data-Be6wopy9.mjs} +7 -10
  135. package/dist/js/{option-list.model-CCPUlPeX.d.mts → option-list.model-DNZq-X0d.d.mts} +7 -4
  136. package/dist/js/popover/index.d.mts +1 -3
  137. package/dist/js/popover/index.mjs +3 -4
  138. package/dist/js/popover/popover.model.d.mts +1 -1
  139. package/dist/js/popover/popover.model.mjs +1 -2
  140. package/dist/js/{popover.model-DiLdz0Hc.d.mts → popover.model-CrrIdSmS.d.mts} +2 -4
  141. package/dist/js/resizable/resizable.embedded.d.mts +2 -2
  142. package/dist/js/resizable/resizable.embedded.mjs +113 -38
  143. package/dist/js/resizable/resizable.model.d.mts +2 -2
  144. package/dist/js/resizable/resizable.model.mjs +8 -3
  145. package/dist/js/resizable/resizable.standalone.d.mts +3 -3
  146. package/dist/js/resizable/resizable.standalone.mjs +3 -1
  147. package/dist/js/{resizable.embedded-D9mb-Wm_.d.mts → resizable.embedded-DQclAEP-.d.mts} +3 -4
  148. package/dist/js/{resizable.model-vCxaFdOA.d.mts → resizable.model-BOufXDXx.d.mts} +18 -3
  149. package/dist/js/sortable/sortable.embedded.d.mts +1 -1
  150. package/dist/js/sortable/sortable.embedded.mjs +5 -6
  151. package/dist/js/sortable/sortable.model.d.mts +2 -2
  152. package/dist/js/sortable/sortable.model.mjs +4 -3
  153. package/dist/js/sortable/sortable.standalone.d.mts +2 -2
  154. package/dist/js/{sortable.embedded-CrEGff9k.d.mts → sortable.embedded-B5LPz-c_.d.mts} +1 -3
  155. package/dist/js/splitter/index.d.mts +2 -4
  156. package/dist/js/splitter/index.mjs +4 -4
  157. package/dist/js/splitter/splitter.model.d.mts +1 -1
  158. package/dist/js/splitter/splitter.model.mjs +1 -2
  159. package/dist/js/{splitter.model-C24W6eZ7.d.mts → splitter.model-DQDbIe4P.d.mts} +0 -2
  160. package/dist/js/tabs/index.d.mts +2 -4
  161. package/dist/js/tabs/index.mjs +10 -11
  162. package/dist/js/tabs/tabs.model.d.mts +1 -1
  163. package/dist/js/tabs/tabs.model.mjs +1 -2
  164. package/dist/js/{tabs.model-BHPy7fPo.d.mts → tabs.model-CvylbR2o.d.mts} +1 -3
  165. package/dist/js/toolbar/index.mjs +1 -2
  166. package/dist/js/toolbar/toolbar.model.d.mts +2 -4
  167. package/dist/js/toolbar/toolbar.model.mjs +1 -2
  168. package/dist/js/tooltip/index.d.mts +1 -3
  169. package/dist/js/tooltip/index.mjs +1 -2
  170. package/dist/js/tooltip/tooltip.model.d.mts +1 -1
  171. package/dist/js/tooltip/tooltip.model.mjs +1 -2
  172. package/dist/js/{tooltip.model-BpNStw5z.d.mts → tooltip.model-BI3UK-VU.d.mts} +1 -3
  173. package/package.json +11 -8
@@ -1,5 +1,6 @@
1
1
  import { attributable } from "../internal/attributable.mjs";
2
- import { RESIZABLE_ATTRIBUTE, RESIZABLE_ATTRIBUTE_DIRECTION, RESIZABLE_MESSAGE_ELEMENT, RESIZABLE_MESSAGE_HANDLE, RESIZABLE_MESSAGE_HEIGHT, RESIZABLE_MESSAGE_WIDTH, RESIZABLE_SELECTOR_HANDLE, RESIZABLE_SELECTOR_HANDLE_SCOPED, RESIZABLE_SYMBOL, resizableHorizontals, resizableItems, resizableStyles, resizableVerticals } from "./resizable.model.mjs";
2
+ import { ignoreEvent } from "../internal/misc.mjs";
3
+ import { OuiResizableEvent, RESIZABLE_ATTRIBUTE, RESIZABLE_ATTRIBUTE_DIRECTION, RESIZABLE_ATTRIBUTE_STEP, RESIZABLE_EVENT_BEGIN, RESIZABLE_EVENT_CANCEL, RESIZABLE_EVENT_END, RESIZABLE_EVENT_RESIZE, RESIZABLE_MESSAGE_ELEMENT, RESIZABLE_MESSAGE_HANDLE, RESIZABLE_MESSAGE_HEIGHT, RESIZABLE_MESSAGE_WIDTH, RESIZABLE_SELECTOR_HANDLE, RESIZABLE_SELECTOR_HANDLE_SCOPED, RESIZABLE_SYMBOL, resizableHorizontals, resizableItems, resizableStyles, resizableVerticals } from "./resizable.model.mjs";
3
4
  import { getAttribute, setAttribute } from "@oscarpalmer/toretto/attribute";
4
5
  import { dispatch, getEventPosition, on } from "@oscarpalmer/toretto/event";
5
6
  import { findAncestor } from "@oscarpalmer/toretto/find";
@@ -7,11 +8,14 @@ import { isPlainObject } from "@oscarpalmer/atoms/is";
7
8
  import { isHTMLOrSVGElement } from "@oscarpalmer/toretto/is";
8
9
  import { setStyles, toggleStyles } from "@oscarpalmer/toretto/style";
9
10
  import { getNumber } from "@oscarpalmer/atoms/number";
11
+ import { noop } from "@oscarpalmer/atoms/function";
10
12
  import { supportsTouch } from "@oscarpalmer/toretto/touch";
11
- //#region src/js/resizable/resizable.embedded.ts
13
+ import { round } from "@oscarpalmer/atoms/math";
14
+ // src/js/resizable/resizable.embedded.ts
12
15
  function OuiResizable(state) {
13
16
  this[RESIZABLE_SYMBOL] = state;
14
17
  }
18
+ OuiResizable.prototype.configure = configureResizable;
15
19
  OuiResizable.prototype.destroy = destroyResizable;
16
20
  OuiResizable.prototype.reset = resetResizable;
17
21
  OuiResizable.prototype.set = setResizable;
@@ -20,7 +24,7 @@ function addResizable(element, options) {
20
24
  if (item == null) {
21
25
  const handle = element.querySelector(RESIZABLE_SELECTOR_HANDLE_SCOPED);
22
26
  if (!isHTMLOrSVGElement(handle)) return;
23
- const state = getState(element, handle, options);
27
+ const state = createState(element, handle, options);
24
28
  item = {
25
29
  instance: new OuiResizable(state),
26
30
  state
@@ -36,7 +40,22 @@ function cancelResize(item) {
36
40
  width: `${item.state.width}px`
37
41
  });
38
42
  resetResizableStyles();
39
- dispatch(item.state.element, "oui:resizable:cancel");
43
+ const detail = {
44
+ height: item.state.height,
45
+ width: item.state.width
46
+ };
47
+ const cancel = new OuiResizableEvent(RESIZABLE_EVENT_CANCEL, { detail });
48
+ item.state.options.onCancel(item.state.element, detail, cancel);
49
+ dispatch(item.state.element, cancel);
50
+ }
51
+ function configureResizable(options) {
52
+ const state = this[RESIZABLE_SYMBOL];
53
+ const keys = Object.keys(options);
54
+ for (const key of keys) {
55
+ const value = options[key];
56
+ if (typeof value === typeof state.options[key]) state.options[key] = value;
57
+ }
58
+ this.set();
40
59
  }
41
60
  /**
42
61
  * Creates _(or retrieves)_ a _OuiResizable_ instance for an element
@@ -49,6 +68,22 @@ function createResizable(element, options) {
49
68
  if (!isHTMLOrSVGElement(element.querySelector(":scope > [oui-resizable-handle]"))) throw new Error(RESIZABLE_MESSAGE_HANDLE);
50
69
  return addResizable(element, options ?? {});
51
70
  }
71
+ function createState(element, handle, input) {
72
+ setAttribute(element, RESIZABLE_ATTRIBUTE, "");
73
+ const options = getValidOptions(element, input);
74
+ const [width, height] = getAndSetDimensions(element, options);
75
+ const [horizontal, vertical] = getDirections(element);
76
+ return {
77
+ element,
78
+ handle,
79
+ height,
80
+ horizontal,
81
+ options,
82
+ vertical,
83
+ width,
84
+ styles: toggleStyles(element, resizableStyles)
85
+ };
86
+ }
52
87
  function destroyResizable() {
53
88
  const state = this[RESIZABLE_SYMBOL];
54
89
  state.element = void 0;
@@ -57,11 +92,12 @@ function destroyResizable() {
57
92
  state.styles = void 0;
58
93
  }
59
94
  function getAndSetDimensions(element, options, input) {
95
+ const { maximumHeight, maximumWidth, minimumHeight, minimumWidth } = options;
60
96
  let { height, width } = input ?? element.getBoundingClientRect();
61
- if (options.maximumWidth > -1 && width > options.maximumWidth) width = options.maximumWidth;
62
- else if (options.minimumWidth > -1 && width < options.minimumWidth) width = options.minimumWidth;
63
- if (options.maximumHeight > -1 && height > options.maximumHeight) height = options.maximumHeight;
64
- else if (options.minimumHeight > -1 && height < options.minimumHeight) height = options.minimumHeight;
97
+ if (maximumWidth > -1 && width > maximumWidth) width = maximumWidth;
98
+ else if (minimumWidth > -1 && width < minimumWidth) width = minimumWidth;
99
+ if (maximumHeight > -1 && height > maximumHeight) height = maximumHeight;
100
+ else if (minimumHeight > -1 && height < minimumHeight) height = minimumHeight;
65
101
  if (element.checkVisibility()) setStyles(element, {
66
102
  height: `${height}px`,
67
103
  width: `${width}px`
@@ -78,9 +114,12 @@ function getProperties(element, widthProperty, heightProperty) {
78
114
  const computed = getComputedStyle(element);
79
115
  return [computed[widthProperty], computed[heightProperty]];
80
116
  }
117
+ function getResizable(element) {
118
+ return resizableItems.get(element)?.instance;
119
+ }
81
120
  function getRestrictions(maximum, minimum) {
82
- const [maximumWidth, maximumHeight] = getXAndY.apply(null, typeof maximum === "string" ? [maximum] : maximum);
83
- const [minimumWidth, minimumHeight] = getXAndY.apply(null, typeof minimum === "string" ? [minimum] : minimum);
121
+ const [maximumWidth, maximumHeight] = getXAndY(maximum);
122
+ const [minimumWidth, minimumHeight] = getXAndY(minimum);
84
123
  if (maximumWidth > -1 && minimumWidth > -1 && maximumWidth <= minimumWidth) throw new Error(RESIZABLE_MESSAGE_WIDTH);
85
124
  if (maximumHeight > -1 && minimumHeight > -1 && maximumHeight <= minimumHeight) throw new Error(RESIZABLE_MESSAGE_HEIGHT);
86
125
  return {
@@ -90,28 +129,25 @@ function getRestrictions(maximum, minimum) {
90
129
  minimumWidth
91
130
  };
92
131
  }
93
- function getState(element, handle, input) {
94
- setAttribute(element, RESIZABLE_ATTRIBUTE, "");
95
- const options = getValidOptions(element, input);
96
- const [width, height] = getAndSetDimensions(element, options);
97
- const [horizontal, vertical] = getDirections(element);
98
- return {
99
- element,
100
- handle,
101
- height,
102
- horizontal,
103
- options,
104
- vertical,
105
- width,
106
- styles: toggleStyles(element, resizableStyles)
107
- };
108
- }
109
132
  function getValidOptions(element, input) {
110
133
  const original = isPlainObject(input) ? input : {};
111
- return { ...getRestrictions(input == null ? getAttribute(element, "oui-resizable-maximum") ?? getProperties(element, "maxWidth", "maxHeight") : [original.maximumWidth, original.maximumHeight], input == null ? getAttribute(element, "oui-resizable-minimum") ?? getProperties(element, "minWidth", "minHeight") : [original.minimumWidth, original.minimumHeight]) };
134
+ const [stepWidth, stepHeight] = getXAndY(input == null ? getAttribute(element, RESIZABLE_ATTRIBUTE_STEP) : [original.stepWidth, original.stepHeight]);
135
+ return {
136
+ ...getRestrictions(input == null ? getAttribute(element, "oui-resizable-maximum") ?? getProperties(element, "maxWidth", "maxHeight") : [original.maximumWidth, original.maximumHeight], input == null ? getAttribute(element, "oui-resizable-minimum") ?? getProperties(element, "minWidth", "minHeight") : [original.minimumWidth, original.minimumHeight]),
137
+ onBegin: typeof original.onBegin === "function" ? original.onBegin : noop,
138
+ onCancel: typeof original.onCancel === "function" ? original.onCancel : noop,
139
+ onEnd: typeof original.onEnd === "function" ? original.onEnd : noop,
140
+ onResize: typeof original.onResize === "function" ? original.onResize : noop,
141
+ stepHeight,
142
+ stepWidth
143
+ };
112
144
  }
113
- function getXAndY(first, second) {
114
- const [x, y] = typeof first === "string" && second == null ? first.split(",") : [first, second];
145
+ function getXAndY(value) {
146
+ let first;
147
+ let second;
148
+ if (Array.isArray(value)) [first, second] = value;
149
+ else first = value;
150
+ const [x, y] = typeof first === "string" && second == null ? splitXAndY(first) : [first, second];
115
151
  let xAsNumber = typeof x === "string" ? Number.parseFloat(x) : getNumber(x);
116
152
  let yAsNumber = typeof y === "string" ? Number.parseFloat(y) : getNumber(y);
117
153
  if (Number.isNaN(xAsNumber) || xAsNumber <= 0) xAsNumber = -1;
@@ -122,15 +158,27 @@ function onKeydown(event) {
122
158
  if (current != null && event.key === "Escape") cancelResize(current);
123
159
  }
124
160
  function onPointerdown(event) {
125
- if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey || (supportsTouch.value ? event.type === "mousedown" : event.type === "touchstart" || event.button !== 0)) return;
161
+ if (ignoreEvent(event, supportsTouch.value)) return;
126
162
  const handle = findAncestor(event, RESIZABLE_SELECTOR_HANDLE);
127
163
  const element = handle && findAncestor(handle, "[oui-resizable]");
128
164
  const stored = element && resizableItems.get(element);
129
165
  const position = getEventPosition(event);
130
166
  if (stored == null || position == null) return;
131
167
  if (supportsTouch.value) event.preventDefault();
132
- if (dispatch(element, "oui:resizable:begin").defaultPrevented) return;
168
+ const detail = {
169
+ height: stored.state.height,
170
+ width: stored.state.width
171
+ };
172
+ const begin = new OuiResizableEvent(RESIZABLE_EVENT_BEGIN, { detail });
173
+ stored.state.options.onBegin(stored.state.element, detail, begin);
174
+ dispatch(element, begin);
175
+ if (begin.defaultPrevented) return;
176
+ event.stopPropagation();
133
177
  current = stored;
178
+ last = {
179
+ height: stored.state.height,
180
+ width: stored.state.width
181
+ };
134
182
  start = position;
135
183
  current.state.styles.set();
136
184
  styleToggler.set();
@@ -139,19 +187,41 @@ function onPointermove(event) {
139
187
  if (current == null) return;
140
188
  const { x, y } = getEventPosition(event) ?? {};
141
189
  if (x == null || y == null) return;
142
- let width = current.state.horizontal ? current.state.width + (x - (start?.x ?? 0)) : current.state.width;
143
- let height = current.state.vertical ? current.state.height + (y - (start?.y ?? 0)) : current.state.height;
190
+ const { stepHeight, stepWidth } = current.state.options;
191
+ let deltaX = current.state.horizontal ? x - (start?.x ?? 0) : 0;
192
+ let deltaY = current.state.vertical ? y - (start?.y ?? 0) : 0;
193
+ if (stepWidth > -1) deltaX = round(deltaX / stepWidth) * stepWidth;
194
+ if (stepHeight > -1) deltaY = round(deltaY / stepHeight) * stepHeight;
195
+ let width = current.state.width + deltaX;
196
+ let height = current.state.height + deltaY;
144
197
  [width, height] = getAndSetDimensions(current.state.element, current.state.options, {
145
198
  height,
146
199
  width
147
200
  });
148
- if (dispatch(current.state.element, "oui:resizable:resize", { detail: {
201
+ if (last?.height === height && last?.width === width) return;
202
+ last = {
149
203
  height,
150
204
  width
151
- } }).defaultPrevented) cancelResize(current);
205
+ };
206
+ const detail = {
207
+ height,
208
+ width
209
+ };
210
+ const resize = new OuiResizableEvent(RESIZABLE_EVENT_RESIZE, { detail });
211
+ current.state.options.onResize(current.state.element, detail, resize);
212
+ dispatch(current.state.element, resize);
213
+ if (resize.defaultPrevented) cancelResize(current);
152
214
  }
153
215
  function onPointerup() {
154
- if (current == null || dispatch(current.state.element, "oui:resizable:end").defaultPrevented) {
216
+ if (current == null) return;
217
+ const detail = {
218
+ height: last?.height ?? current.state.height,
219
+ width: last?.width ?? current.state.width
220
+ };
221
+ const end = new OuiResizableEvent(RESIZABLE_EVENT_END, { detail });
222
+ current.state.options.onEnd(current.state.element, detail, end);
223
+ dispatch(current.state.element, end);
224
+ if (end.defaultPrevented) {
155
225
  cancelResize(current);
156
226
  return;
157
227
  }
@@ -174,6 +244,7 @@ function resetResizableStyles() {
174
244
  current?.state.styles.remove();
175
245
  styleToggler.remove();
176
246
  current = void 0;
247
+ last = void 0;
177
248
  start = void 0;
178
249
  }
179
250
  function setResizable() {
@@ -182,8 +253,13 @@ function setResizable() {
182
253
  state.width = width;
183
254
  state.height = height;
184
255
  }
256
+ function splitXAndY(value) {
257
+ const parts = value.split(",");
258
+ return [parts[0], parts.length > 1 ? parts[1] : parts[0]];
259
+ }
185
260
  const styleToggler = toggleStyles(document.body, resizableStyles);
186
261
  let current;
262
+ let last;
187
263
  let start;
188
264
  on(document, "keydown", onKeydown);
189
265
  on(document, "mousedown", onPointerdown);
@@ -192,5 +268,4 @@ on(document, "pointerup", onPointerup);
192
268
  on(document, "touchcancel", onPointerup);
193
269
  on(document, "touchstart", onPointerdown, { passive: false });
194
270
  attributable(RESIZABLE_ATTRIBUTE, addResizable, removeResizable);
195
- //#endregion
196
- export { createResizable };
271
+ export { createResizable, getResizable };
@@ -1,2 +1,2 @@
1
- import { S as resizableVerticals, _ as RESIZABLE_SELECTOR_HANDLE_SCOPED, a as OuiResizableState, b as resizableItems, c as RESIZABLE_ATTRIBUTE_HANDLE, d as RESIZABLE_MESSAGE_ELEMENT, f as RESIZABLE_MESSAGE_HANDLE, g as RESIZABLE_SELECTOR_HANDLE, h as RESIZABLE_SELECTOR, i as OuiResizableItem, l as RESIZABLE_ATTRIBUTE_MAXIMUM, m as RESIZABLE_MESSAGE_WIDTH, n as OuiResizable, o as RESIZABLE_ATTRIBUTE, p as RESIZABLE_MESSAGE_HEIGHT, r as OuiResizableDirection, s as RESIZABLE_ATTRIBUTE_DIRECTION, t as CreateOuiResizableOptions, u as RESIZABLE_ATTRIBUTE_MINIMUM, v as RESIZABLE_SYMBOL, x as resizableStyles, y as resizableHorizontals } from "../resizable.model-vCxaFdOA.mjs";
2
- export { CreateOuiResizableOptions, OuiResizable, OuiResizableDirection, OuiResizableItem, OuiResizableState, RESIZABLE_ATTRIBUTE, RESIZABLE_ATTRIBUTE_DIRECTION, RESIZABLE_ATTRIBUTE_HANDLE, RESIZABLE_ATTRIBUTE_MAXIMUM, RESIZABLE_ATTRIBUTE_MINIMUM, RESIZABLE_MESSAGE_ELEMENT, RESIZABLE_MESSAGE_HANDLE, RESIZABLE_MESSAGE_HEIGHT, RESIZABLE_MESSAGE_WIDTH, RESIZABLE_SELECTOR, RESIZABLE_SELECTOR_HANDLE, RESIZABLE_SELECTOR_HANDLE_SCOPED, RESIZABLE_SYMBOL, resizableHorizontals, resizableItems, resizableStyles, resizableVerticals };
1
+ import { C as RESIZABLE_SELECTOR_HANDLE, D as resizableItems, E as resizableHorizontals, O as resizableStyles, S as RESIZABLE_SELECTOR, T as RESIZABLE_SYMBOL, _ as RESIZABLE_EVENT_RESIZE, a as OuiResizableEventDetail, b as RESIZABLE_MESSAGE_HEIGHT, c as RESIZABLE_ATTRIBUTE, d as RESIZABLE_ATTRIBUTE_MAXIMUM, f as RESIZABLE_ATTRIBUTE_MINIMUM, g as RESIZABLE_EVENT_END, h as RESIZABLE_EVENT_CANCEL, i as OuiResizableEvent, k as resizableVerticals, l as RESIZABLE_ATTRIBUTE_DIRECTION, m as RESIZABLE_EVENT_BEGIN, n as OuiResizable, o as OuiResizableItem, p as RESIZABLE_ATTRIBUTE_STEP, r as OuiResizableDirection, s as OuiResizableState, t as CreateOuiResizableOptions, u as RESIZABLE_ATTRIBUTE_HANDLE, v as RESIZABLE_MESSAGE_ELEMENT, w as RESIZABLE_SELECTOR_HANDLE_SCOPED, x as RESIZABLE_MESSAGE_WIDTH, y as RESIZABLE_MESSAGE_HANDLE } from "../resizable.model-BOufXDXx.mjs";
2
+ export { CreateOuiResizableOptions, OuiResizable, OuiResizableDirection, OuiResizableEvent, OuiResizableEventDetail, OuiResizableItem, OuiResizableState, RESIZABLE_ATTRIBUTE, RESIZABLE_ATTRIBUTE_DIRECTION, RESIZABLE_ATTRIBUTE_HANDLE, RESIZABLE_ATTRIBUTE_MAXIMUM, RESIZABLE_ATTRIBUTE_MINIMUM, RESIZABLE_ATTRIBUTE_STEP, RESIZABLE_EVENT_BEGIN, RESIZABLE_EVENT_CANCEL, RESIZABLE_EVENT_END, RESIZABLE_EVENT_RESIZE, RESIZABLE_MESSAGE_ELEMENT, RESIZABLE_MESSAGE_HANDLE, RESIZABLE_MESSAGE_HEIGHT, RESIZABLE_MESSAGE_WIDTH, RESIZABLE_SELECTOR, RESIZABLE_SELECTOR_HANDLE, RESIZABLE_SELECTOR_HANDLE_SCOPED, RESIZABLE_SYMBOL, resizableHorizontals, resizableItems, resizableStyles, resizableVerticals };
@@ -1,9 +1,15 @@
1
- //#region src/js/resizable/resizable.model.ts
1
+ // src/js/resizable/resizable.model.ts
2
+ var OuiResizableEvent = class extends CustomEvent {};
2
3
  const RESIZABLE_ATTRIBUTE = "oui-resizable";
3
4
  const RESIZABLE_ATTRIBUTE_DIRECTION = `${RESIZABLE_ATTRIBUTE}-direction`;
4
5
  const RESIZABLE_ATTRIBUTE_HANDLE = `${RESIZABLE_ATTRIBUTE}-handle`;
5
6
  const RESIZABLE_ATTRIBUTE_MAXIMUM = `${RESIZABLE_ATTRIBUTE}-maximum`;
6
7
  const RESIZABLE_ATTRIBUTE_MINIMUM = `${RESIZABLE_ATTRIBUTE}-minimum`;
8
+ const RESIZABLE_ATTRIBUTE_STEP = `${RESIZABLE_ATTRIBUTE}-step`;
9
+ const RESIZABLE_EVENT_BEGIN = `${RESIZABLE_ATTRIBUTE}:begin`;
10
+ const RESIZABLE_EVENT_CANCEL = `${RESIZABLE_ATTRIBUTE}:cancel`;
11
+ const RESIZABLE_EVENT_RESIZE = `${RESIZABLE_ATTRIBUTE}:resize`;
12
+ const RESIZABLE_EVENT_END = `${RESIZABLE_ATTRIBUTE}:end`;
7
13
  const RESIZABLE_MESSAGE_ELEMENT = "The element must be an instance of HTMLElement or SVGElement";
8
14
  const RESIZABLE_MESSAGE_HEIGHT = "The maximum height must be greater than the minimum height";
9
15
  const RESIZABLE_MESSAGE_HANDLE = `The element must contain a child with the attribute "${RESIZABLE_ATTRIBUTE_HANDLE}"`;
@@ -20,5 +26,4 @@ const resizableStyles = {
20
26
  webkitUserSelect: "none"
21
27
  };
22
28
  const resizableVerticals = /* @__PURE__ */ new Set(["vertical", "y"]);
23
- //#endregion
24
- export { RESIZABLE_ATTRIBUTE, RESIZABLE_ATTRIBUTE_DIRECTION, RESIZABLE_ATTRIBUTE_HANDLE, RESIZABLE_ATTRIBUTE_MAXIMUM, RESIZABLE_ATTRIBUTE_MINIMUM, RESIZABLE_MESSAGE_ELEMENT, RESIZABLE_MESSAGE_HANDLE, RESIZABLE_MESSAGE_HEIGHT, RESIZABLE_MESSAGE_WIDTH, RESIZABLE_SELECTOR, RESIZABLE_SELECTOR_HANDLE, RESIZABLE_SELECTOR_HANDLE_SCOPED, RESIZABLE_SYMBOL, resizableHorizontals, resizableItems, resizableStyles, resizableVerticals };
29
+ export { OuiResizableEvent, RESIZABLE_ATTRIBUTE, RESIZABLE_ATTRIBUTE_DIRECTION, RESIZABLE_ATTRIBUTE_HANDLE, RESIZABLE_ATTRIBUTE_MAXIMUM, RESIZABLE_ATTRIBUTE_MINIMUM, RESIZABLE_ATTRIBUTE_STEP, RESIZABLE_EVENT_BEGIN, RESIZABLE_EVENT_CANCEL, RESIZABLE_EVENT_END, RESIZABLE_EVENT_RESIZE, RESIZABLE_MESSAGE_ELEMENT, RESIZABLE_MESSAGE_HANDLE, RESIZABLE_MESSAGE_HEIGHT, RESIZABLE_MESSAGE_WIDTH, RESIZABLE_SELECTOR, RESIZABLE_SELECTOR_HANDLE, RESIZABLE_SELECTOR_HANDLE_SCOPED, RESIZABLE_SYMBOL, resizableHorizontals, resizableItems, resizableStyles, resizableVerticals };
@@ -1,3 +1,3 @@
1
- import { n as OuiResizable, t as CreateOuiResizableOptions } from "../resizable.model-vCxaFdOA.mjs";
2
- import { t as createResizable } from "../resizable.embedded-D9mb-Wm_.mjs";
3
- export { type CreateOuiResizableOptions, type OuiResizable, createResizable as createOuiResizable };
1
+ import { t as createResizable } from "../resizable.embedded-DQclAEP-.mjs";
2
+ import { i as OuiResizableEvent, n as OuiResizable, t as CreateOuiResizableOptions } from "../resizable.model-BOufXDXx.mjs";
3
+ export { type CreateOuiResizableOptions, type OuiResizable, OuiResizableEvent, createResizable as createOuiResizable };
@@ -1 +1,3 @@
1
- export { createResizable as createOuiResizable } from "./resizable.embedded.mjs";
1
+ import { createResizable } from "./resizable.embedded.mjs";
2
+ import { OuiResizableEvent } from "./resizable.model.mjs";
3
+ export { OuiResizableEvent, createResizable as createOuiResizable };
@@ -1,5 +1,4 @@
1
- import { n as OuiResizable, t as CreateOuiResizableOptions } from "./resizable.model-vCxaFdOA.mjs";
2
- //#region src/js/resizable/resizable.embedded.d.ts
1
+ import { n as OuiResizable, t as CreateOuiResizableOptions } from "./resizable.model-BOufXDXx.mjs";
3
2
  /**
4
3
  * Creates _(or retrieves)_ a _OuiResizable_ instance for an element
5
4
  *
@@ -7,5 +6,5 @@ import { n as OuiResizable, t as CreateOuiResizableOptions } from "./resizable.m
7
6
  * @returns _OuiResizable_ instance
8
7
  */
9
8
  declare function createResizable(element: Element, options?: CreateOuiResizableOptions): OuiResizable;
10
- //#endregion
11
- export { createResizable as t };
9
+ declare function getResizable(element: HTMLElement): OuiResizable | undefined;
10
+ export { getResizable as n, createResizable as t };
@@ -1,17 +1,28 @@
1
1
  import { StyleToggler } from "@oscarpalmer/toretto/style";
2
- //#region src/js/resizable/resizable.model.d.ts
3
2
  type CreateOuiResizableOptions = {
4
3
  maximumHeight?: number;
5
4
  maximumWidth?: number;
6
5
  minimumHeight?: number;
7
6
  minimumWidth?: number;
7
+ onBegin?: (element: Element, size: OuiResizableEventDetail, event: OuiResizableEvent) => void;
8
+ onCancel?: (element: Element, size: OuiResizableEventDetail, event: OuiResizableEvent) => void;
9
+ onEnd?: (element: Element, size: OuiResizableEventDetail, event: OuiResizableEvent) => void;
10
+ onResize?: (element: Element, size: OuiResizableEventDetail, event: OuiResizableEvent) => void;
11
+ stepHeight?: number;
12
+ stepWidth?: number;
8
13
  };
9
14
  type OuiResizable = {
10
15
  [RESIZABLE_SYMBOL]: OuiResizableState;
16
+ configure(options: CreateOuiResizableOptions): void;
11
17
  destroy(): void;
12
18
  reset(): void;
13
19
  set(): void;
14
20
  };
21
+ declare class OuiResizableEvent extends CustomEvent<OuiResizableEventDetail> {}
22
+ type OuiResizableEventDetail = {
23
+ height: number;
24
+ width: number;
25
+ };
15
26
  type OuiResizableDirection = "horizontal" | "vertical" | "x" | "y";
16
27
  type OuiResizableItem = {
17
28
  instance: OuiResizable;
@@ -32,6 +43,11 @@ declare const RESIZABLE_ATTRIBUTE_DIRECTION: string;
32
43
  declare const RESIZABLE_ATTRIBUTE_HANDLE: string;
33
44
  declare const RESIZABLE_ATTRIBUTE_MAXIMUM: string;
34
45
  declare const RESIZABLE_ATTRIBUTE_MINIMUM: string;
46
+ declare const RESIZABLE_ATTRIBUTE_STEP: string;
47
+ declare const RESIZABLE_EVENT_BEGIN: string;
48
+ declare const RESIZABLE_EVENT_CANCEL: string;
49
+ declare const RESIZABLE_EVENT_RESIZE: string;
50
+ declare const RESIZABLE_EVENT_END: string;
35
51
  declare const RESIZABLE_MESSAGE_ELEMENT = "The element must be an instance of HTMLElement or SVGElement";
36
52
  declare const RESIZABLE_MESSAGE_HEIGHT = "The maximum height must be greater than the minimum height";
37
53
  declare const RESIZABLE_MESSAGE_HANDLE: string;
@@ -48,5 +64,4 @@ declare const resizableStyles: {
48
64
  webkitUserSelect: string;
49
65
  };
50
66
  declare const resizableVerticals: Set<OuiResizableDirection>;
51
- //#endregion
52
- export { resizableVerticals as S, RESIZABLE_SELECTOR_HANDLE_SCOPED as _, OuiResizableState as a, resizableItems as b, RESIZABLE_ATTRIBUTE_HANDLE as c, RESIZABLE_MESSAGE_ELEMENT as d, RESIZABLE_MESSAGE_HANDLE as f, RESIZABLE_SELECTOR_HANDLE as g, RESIZABLE_SELECTOR as h, OuiResizableItem as i, RESIZABLE_ATTRIBUTE_MAXIMUM as l, RESIZABLE_MESSAGE_WIDTH as m, OuiResizable as n, RESIZABLE_ATTRIBUTE as o, RESIZABLE_MESSAGE_HEIGHT as p, OuiResizableDirection as r, RESIZABLE_ATTRIBUTE_DIRECTION as s, CreateOuiResizableOptions as t, RESIZABLE_ATTRIBUTE_MINIMUM as u, RESIZABLE_SYMBOL as v, resizableStyles as x, resizableHorizontals as y };
67
+ export { RESIZABLE_SELECTOR_HANDLE as C, resizableItems as D, resizableHorizontals as E, resizableStyles as O, RESIZABLE_SELECTOR as S, RESIZABLE_SYMBOL as T, RESIZABLE_EVENT_RESIZE as _, OuiResizableEventDetail as a, RESIZABLE_MESSAGE_HEIGHT as b, RESIZABLE_ATTRIBUTE as c, RESIZABLE_ATTRIBUTE_MAXIMUM as d, RESIZABLE_ATTRIBUTE_MINIMUM as f, RESIZABLE_EVENT_END as g, RESIZABLE_EVENT_CANCEL as h, OuiResizableEvent as i, resizableVerticals as k, RESIZABLE_ATTRIBUTE_DIRECTION as l, RESIZABLE_EVENT_BEGIN as m, OuiResizable as n, OuiResizableItem as o, RESIZABLE_ATTRIBUTE_STEP as p, OuiResizableDirection as r, OuiResizableState as s, CreateOuiResizableOptions as t, RESIZABLE_ATTRIBUTE_HANDLE as u, RESIZABLE_MESSAGE_ELEMENT as v, RESIZABLE_SELECTOR_HANDLE_SCOPED as w, RESIZABLE_MESSAGE_WIDTH as x, RESIZABLE_MESSAGE_HANDLE as y };
@@ -1,2 +1,2 @@
1
- import { t as createSortable } from "../sortable.embedded-CrEGff9k.mjs";
1
+ import { t as createSortable } from "../sortable.embedded-B5LPz-c_.mjs";
2
2
  export { createSortable };
@@ -1,14 +1,14 @@
1
1
  import { attributable } from "../internal/attributable.mjs";
2
2
  import { DRAGGABLE_SYMBOL, draggableGlobals } from "../internal/draggable/draggable.model.mjs";
3
3
  import { addDraggable, destroyDraggable, getDraggableElement, getDraggableStates, initializeDraggable, removeDraggable } from "../internal/draggable/index.mjs";
4
- import { SORTABLE_ATTRIBUTE, SORTABLE_ATTRIBUTE_ACTIVE, SORTABLE_ATTRIBUTE_CONNECTIONS, SORTABLE_ATTRIBUTE_CONTAINER, SORTABLE_ATTRIBUTE_DIRECTION, SORTABLE_ATTRIBUTE_HORIZONTAL, SORTABLE_ATTRIBUTE_ORIGIN, SORTABLE_ATTRIBUTE_PLACEHOLDER_DRAG, SORTABLE_ATTRIBUTE_PLACEHOLDER_POSITION, SORTABLE_ATTRIBUTE_VERTICAL, SORTABLE_CONTAINERS, SORTABLE_MESSAGE, SORTABLE_SELECTOR_ITEM, sortablePlaceholder } from "./sortable.model.mjs";
4
+ import { SORTABLE_ATTRIBUTE, SORTABLE_ATTRIBUTE_ACTIVE, SORTABLE_ATTRIBUTE_CONNECTIONS, SORTABLE_ATTRIBUTE_CONTAINER, SORTABLE_ATTRIBUTE_DIRECTION, SORTABLE_ATTRIBUTE_HORIZONTAL, SORTABLE_ATTRIBUTE_ORIGIN, SORTABLE_ATTRIBUTE_PLACEHOLDER_DRAG, SORTABLE_ATTRIBUTE_PLACEHOLDER_POSITION, SORTABLE_ATTRIBUTE_VERTICAL, SORTABLE_CONTAINERS, SORTABLE_EVENT_END, SORTABLE_EVENT_PLACEHOLDER, SORTABLE_MESSAGE, SORTABLE_SELECTOR_ITEM, sortablePlaceholder } from "./sortable.model.mjs";
5
5
  import { getAttribute, setAttribute, setAttributes } from "@oscarpalmer/toretto/attribute";
6
6
  import { dispatch, getEventPosition } from "@oscarpalmer/toretto/event";
7
7
  import { findAncestor, getElementFromPosition } from "@oscarpalmer/toretto/find";
8
8
  import { isHTMLOrSVGElement } from "@oscarpalmer/toretto/is";
9
9
  import { setStyle } from "@oscarpalmer/toretto/style";
10
10
  import { createElement } from "@oscarpalmer/toretto/create";
11
- //#region src/js/sortable/sortable.embedded.ts
11
+ // src/js/sortable/sortable.embedded.ts
12
12
  function OuiSortable(element, options) {
13
13
  this[DRAGGABLE_SYMBOL] = initializeDraggable(this, "sortable", "sort", SORTABLE_ATTRIBUTE, element, {
14
14
  container: {
@@ -147,9 +147,9 @@ function onEnd(event, item, reset) {
147
147
  bubbles: false,
148
148
  cancelable: true
149
149
  };
150
- const dispatchedFrom = dispatch(item.instance.element, "sortable:end", options);
150
+ const dispatchedFrom = dispatch(item.instance.element, SORTABLE_EVENT_END, options);
151
151
  let dispatchedTo;
152
- if (item.instance !== instance && instance != null) dispatchedTo = dispatch(instance.element, "sortable:end", options);
152
+ if (item.instance !== instance && instance != null) dispatchedTo = dispatch(instance.element, SORTABLE_EVENT_END, options);
153
153
  setTimeout(() => {
154
154
  afterEnd(insert, item, [dispatchedFrom, dispatchedTo], {
155
155
  origin,
@@ -210,7 +210,7 @@ function setPlaceholder(item, origin) {
210
210
  const element = getDragPlaceholder();
211
211
  if (sortablePlaceholder.drag.default != null) sortablePlaceholder.drag.default.innerHTML = "";
212
212
  updatePlaceholder(item, element);
213
- const dispatched = dispatch(item.instance.element, "sortable:placeholder", { detail: {
213
+ const dispatched = dispatch(item.instance.element, SORTABLE_EVENT_PLACEHOLDER, { detail: {
214
214
  origin,
215
215
  parent: item.instance.element,
216
216
  placeholder: element,
@@ -257,5 +257,4 @@ const bound = {
257
257
  const addSortable = addDraggable.bind(bound);
258
258
  const removeSortable = removeDraggable.bind(bound);
259
259
  attributable(SORTABLE_ATTRIBUTE, addSortable, removeSortable);
260
- //#endregion
261
260
  export { createSortable };
@@ -1,2 +1,2 @@
1
- import { $ as OuiSortable, _t as sortablePlaceholder, at as SORTABLE_ATTRIBUTE_CONNECTIONS, ct as SORTABLE_ATTRIBUTE_HORIZONTAL, dt as SORTABLE_ATTRIBUTE_PLACEHOLDER_POSITION, et as OuiSortablePlaceholder, ft as SORTABLE_ATTRIBUTE_VERTICAL, gt as SORTABLE_SELECTOR_ITEM, ht as SORTABLE_SELECTOR, it as SORTABLE_ATTRIBUTE_ACTIVE, lt as SORTABLE_ATTRIBUTE_ORIGIN, mt as SORTABLE_MESSAGE, nt as OuiSortableState, ot as SORTABLE_ATTRIBUTE_CONTAINER, pt as SORTABLE_CONTAINERS, rt as SORTABLE_ATTRIBUTE, st as SORTABLE_ATTRIBUTE_DIRECTION, tt as OuiSortablePlaceholderDrag, ut as SORTABLE_ATTRIBUTE_PLACEHOLDER_DRAG } from "../movable.model-D9nnPWKk.mjs";
2
- export { OuiSortable, OuiSortablePlaceholder, OuiSortablePlaceholderDrag, OuiSortableState, SORTABLE_ATTRIBUTE, SORTABLE_ATTRIBUTE_ACTIVE, SORTABLE_ATTRIBUTE_CONNECTIONS, SORTABLE_ATTRIBUTE_CONTAINER, SORTABLE_ATTRIBUTE_DIRECTION, SORTABLE_ATTRIBUTE_HORIZONTAL, SORTABLE_ATTRIBUTE_ORIGIN, SORTABLE_ATTRIBUTE_PLACEHOLDER_DRAG, SORTABLE_ATTRIBUTE_PLACEHOLDER_POSITION, SORTABLE_ATTRIBUTE_VERTICAL, SORTABLE_CONTAINERS, SORTABLE_MESSAGE, SORTABLE_SELECTOR, SORTABLE_SELECTOR_ITEM, sortablePlaceholder };
1
+ import { St as sortablePlaceholder, _t as SORTABLE_EVENT_END, at as OuiSortableState, bt as SORTABLE_SELECTOR, ct as SORTABLE_ATTRIBUTE_CONNECTIONS, dt as SORTABLE_ATTRIBUTE_HORIZONTAL, ft as SORTABLE_ATTRIBUTE_ORIGIN, gt as SORTABLE_CONTAINERS, ht as SORTABLE_ATTRIBUTE_VERTICAL, it as OuiSortablePlaceholderDrag, lt as SORTABLE_ATTRIBUTE_CONTAINER, mt as SORTABLE_ATTRIBUTE_PLACEHOLDER_POSITION, nt as OuiSortable, ot as SORTABLE_ATTRIBUTE, pt as SORTABLE_ATTRIBUTE_PLACEHOLDER_DRAG, rt as OuiSortablePlaceholder, st as SORTABLE_ATTRIBUTE_ACTIVE, ut as SORTABLE_ATTRIBUTE_DIRECTION, vt as SORTABLE_EVENT_PLACEHOLDER, xt as SORTABLE_SELECTOR_ITEM, yt as SORTABLE_MESSAGE } from "../movable.model-CQ3AbTrq.mjs";
2
+ export { OuiSortable, OuiSortablePlaceholder, OuiSortablePlaceholderDrag, OuiSortableState, SORTABLE_ATTRIBUTE, SORTABLE_ATTRIBUTE_ACTIVE, SORTABLE_ATTRIBUTE_CONNECTIONS, SORTABLE_ATTRIBUTE_CONTAINER, SORTABLE_ATTRIBUTE_DIRECTION, SORTABLE_ATTRIBUTE_HORIZONTAL, SORTABLE_ATTRIBUTE_ORIGIN, SORTABLE_ATTRIBUTE_PLACEHOLDER_DRAG, SORTABLE_ATTRIBUTE_PLACEHOLDER_POSITION, SORTABLE_ATTRIBUTE_VERTICAL, SORTABLE_CONTAINERS, SORTABLE_EVENT_END, SORTABLE_EVENT_PLACEHOLDER, SORTABLE_MESSAGE, SORTABLE_SELECTOR, SORTABLE_SELECTOR_ITEM, sortablePlaceholder };
@@ -1,4 +1,4 @@
1
- //#region src/js/sortable/sortable.model.ts
1
+ // src/js/sortable/sortable.model.ts
2
2
  const SORTABLE_ATTRIBUTE = "oui-sortable";
3
3
  const SORTABLE_ATTRIBUTE_ACTIVE = `${SORTABLE_ATTRIBUTE}-active`;
4
4
  const SORTABLE_ATTRIBUTE_CONNECTIONS = `${SORTABLE_ATTRIBUTE}-connections`;
@@ -10,6 +10,8 @@ const SORTABLE_ATTRIBUTE_PLACEHOLDER_DRAG = `${SORTABLE_ATTRIBUTE}-placeholder-d
10
10
  const SORTABLE_ATTRIBUTE_PLACEHOLDER_POSITION = `${SORTABLE_ATTRIBUTE}-placeholder-position`;
11
11
  const SORTABLE_ATTRIBUTE_VERTICAL = `${SORTABLE_ATTRIBUTE}-vertical`;
12
12
  const SORTABLE_CONTAINERS = /* @__PURE__ */ new Map();
13
+ const SORTABLE_EVENT_END = `${SORTABLE_ATTRIBUTE}:end`;
14
+ const SORTABLE_EVENT_PLACEHOLDER = `${SORTABLE_ATTRIBUTE}:placeholder`;
13
15
  const SORTABLE_MESSAGE = "The element must be an instance of HTMLElement or SVGElement";
14
16
  const SORTABLE_SELECTOR = `[${SORTABLE_ATTRIBUTE}]`;
15
17
  const SORTABLE_SELECTOR_ITEM = `[${SORTABLE_ATTRIBUTE}] > *`;
@@ -20,5 +22,4 @@ const sortablePlaceholder = {
20
22
  },
21
23
  position: void 0
22
24
  };
23
- //#endregion
24
- export { SORTABLE_ATTRIBUTE, SORTABLE_ATTRIBUTE_ACTIVE, SORTABLE_ATTRIBUTE_CONNECTIONS, SORTABLE_ATTRIBUTE_CONTAINER, SORTABLE_ATTRIBUTE_DIRECTION, SORTABLE_ATTRIBUTE_HORIZONTAL, SORTABLE_ATTRIBUTE_ORIGIN, SORTABLE_ATTRIBUTE_PLACEHOLDER_DRAG, SORTABLE_ATTRIBUTE_PLACEHOLDER_POSITION, SORTABLE_ATTRIBUTE_VERTICAL, SORTABLE_CONTAINERS, SORTABLE_MESSAGE, SORTABLE_SELECTOR, SORTABLE_SELECTOR_ITEM, sortablePlaceholder };
25
+ export { SORTABLE_ATTRIBUTE, SORTABLE_ATTRIBUTE_ACTIVE, SORTABLE_ATTRIBUTE_CONNECTIONS, SORTABLE_ATTRIBUTE_CONTAINER, SORTABLE_ATTRIBUTE_DIRECTION, SORTABLE_ATTRIBUTE_HORIZONTAL, SORTABLE_ATTRIBUTE_ORIGIN, SORTABLE_ATTRIBUTE_PLACEHOLDER_DRAG, SORTABLE_ATTRIBUTE_PLACEHOLDER_POSITION, SORTABLE_ATTRIBUTE_VERTICAL, SORTABLE_CONTAINERS, SORTABLE_EVENT_END, SORTABLE_EVENT_PLACEHOLDER, SORTABLE_MESSAGE, SORTABLE_SELECTOR, SORTABLE_SELECTOR_ITEM, sortablePlaceholder };
@@ -1,3 +1,3 @@
1
- import { $ as OuiSortable, p as CreateOuiDraggableOptions } from "../movable.model-D9nnPWKk.mjs";
2
- import { t as createSortable } from "../sortable.embedded-CrEGff9k.mjs";
1
+ import { m as CreateOuiDraggableOptions, nt as OuiSortable } from "../movable.model-CQ3AbTrq.mjs";
2
+ import { t as createSortable } from "../sortable.embedded-B5LPz-c_.mjs";
3
3
  export { type CreateOuiDraggableOptions as CreateOuiSortableOptions, type OuiSortable, createSortable };
@@ -1,5 +1,4 @@
1
- import { $ as OuiSortable, p as CreateOuiDraggableOptions } from "./movable.model-D9nnPWKk.mjs";
2
- //#region src/js/sortable/sortable.embedded.d.ts
1
+ import { m as CreateOuiDraggableOptions, nt as OuiSortable } from "./movable.model-CQ3AbTrq.mjs";
3
2
  /**
4
3
  * Creates _(or retrieves)_ a _OuiSortable_ instance for an element
5
4
  *
@@ -7,5 +6,4 @@ import { $ as OuiSortable, p as CreateOuiDraggableOptions } from "./movable.mode
7
6
  * @returns _OuiSortable_ instance
8
7
  */
9
8
  declare function createSortable(element: Element, options?: CreateOuiDraggableOptions): OuiSortable;
10
- //#endregion
11
9
  export { createSortable as t };
@@ -1,5 +1,4 @@
1
- import { D as SPLITTER_SYMBOL, O as SPLITTER_TAGNAME, n as OuiSplitter } from "../splitter.model-C24W6eZ7.mjs";
2
- //#region src/js/splitter/index.d.ts
1
+ import { D as SPLITTER_SYMBOL, O as SPLITTER_TAGNAME, n as OuiSplitter } from "../splitter.model-DQDbIe4P.mjs";
3
2
  declare global {
4
3
  interface HTMLElementTagNameMap {
5
4
  [SPLITTER_TAGNAME]: OuiSplitterElement;
@@ -46,5 +45,4 @@ export declare class OuiSplitterElement extends HTMLElement {
46
45
  connectedCallback(): void;
47
46
  disconnectedCallback(): void;
48
47
  attributeChangedCallback(name: string): void;
49
- }
50
- //#endregion
48
+ }
@@ -1,3 +1,4 @@
1
+ import { ignoreEvent } from "../internal/misc.mjs";
1
2
  import { SPLITTER_ATTRIBUTE_ACTIVE, SPLITTER_ATTRIBUTE_HANDLE, SPLITTER_ATTRIBUTE_HORIZONTAL, SPLITTER_ATTRIBUTE_SEPARATOR, SPLITTER_ATTRIBUTE_SIZE, SPLITTER_ATTRIBUTE_TYPE, SPLITTER_KEYS_ABSOLUTE, SPLITTER_KEYS_ALL, SPLITTER_KEYS_HORIZONTAL, SPLITTER_KEYS_NEGATIVE, SPLITTER_KEYS_VERTICAL, SPLITTER_MESSAGE, SPLITTER_METHODS_OBSERVE, SPLITTER_NAVIGATION_MAXIMUM_PERCENTAGE, SPLITTER_NAVIGATION_MINIMUM_PERCENTAGE, SPLITTER_NAVIGATION_MODIFIER, SPLITTER_SELECTOR_HANDLE, SPLITTER_SYMBOL, SPLITTER_TAGNAME, splitterStyling } from "./splitter.model.mjs";
2
3
  import { setAria } from "@oscarpalmer/toretto/aria";
3
4
  import { getAttribute, setAttribute } from "@oscarpalmer/toretto/attribute";
@@ -8,9 +9,9 @@ import { setStyle } from "@oscarpalmer/toretto/style";
8
9
  import { filter } from "@oscarpalmer/atoms/array/filter";
9
10
  import { clamp } from "@oscarpalmer/atoms/number";
10
11
  import { supportsTouch } from "@oscarpalmer/toretto/touch";
11
- import { createElement } from "@oscarpalmer/toretto/create";
12
12
  import { round } from "@oscarpalmer/atoms/math";
13
- //#region src/js/splitter/index.ts
13
+ import { createElement } from "@oscarpalmer/toretto/create";
14
+ // src/js/splitter/index.ts
14
15
  function OuiSplitter(element, panels) {
15
16
  this.element = element;
16
17
  this.panels = panels;
@@ -214,7 +215,7 @@ function onObservation(entries) {
214
215
  });
215
216
  }
216
217
  function onPointerdown(event) {
217
- if (supportsTouch.value ? event.type === "mousedown" : event.type === "touchstart") return;
218
+ if (ignoreEvent(event, supportsTouch.value)) return;
218
219
  const handle = findAncestor(event, SPLITTER_SELECTOR_HANDLE);
219
220
  if (handle == null) return;
220
221
  splitter = findAncestor(handle, SPLITTER_TAGNAME)?.[SPLITTER_SYMBOL];
@@ -280,5 +281,4 @@ on(document, "pointerup", onPointerup);
280
281
  on(document, "touchcancel", onPointerup);
281
282
  on(document, "touchstart", onPointerdown, { passive: false });
282
283
  customElements.define(SPLITTER_TAGNAME, OuiSplitterElement);
283
- //#endregion
284
284
  export { OuiSplitterElement };
@@ -1,2 +1,2 @@
1
- import { A as splitterStyling, C as SPLITTER_NAVIGATION_MAXIMUM_TOTAL, D as SPLITTER_SYMBOL, E as SPLITTER_SELECTOR_HANDLE, O as SPLITTER_TAGNAME, S as SPLITTER_NAVIGATION_MAXIMUM_PERCENTAGE, T as SPLITTER_NAVIGATION_MODIFIER, _ as SPLITTER_KEYS_NEGATIVE, a as OuiSplitterValuesNow, b as SPLITTER_METHODS_CONNECT, c as SPLITTER_ATTRIBUTE_HORIZONTAL, d as SPLITTER_ATTRIBUTE_SEPARATOR, f as SPLITTER_ATTRIBUTE_SIZE, g as SPLITTER_KEYS_HORIZONTAL, h as SPLITTER_KEYS_ALL, i as OuiSplitterValues, k as SPLITTER_VALUE_DECIMALS, l as SPLITTER_ATTRIBUTE_MAX, m as SPLITTER_KEYS_ABSOLUTE, n as OuiSplitter, o as SPLITTER_ATTRIBUTE_ACTIVE, p as SPLITTER_ATTRIBUTE_TYPE, r as OuiSplitterTypes, s as SPLITTER_ATTRIBUTE_HANDLE, t as GenericOuiSplitterElement, u as SPLITTER_ATTRIBUTE_MIN, v as SPLITTER_KEYS_VERTICAL, w as SPLITTER_NAVIGATION_MINIMUM_PERCENTAGE, x as SPLITTER_METHODS_OBSERVE, y as SPLITTER_MESSAGE } from "../splitter.model-C24W6eZ7.mjs";
1
+ import { A as splitterStyling, C as SPLITTER_NAVIGATION_MAXIMUM_TOTAL, D as SPLITTER_SYMBOL, E as SPLITTER_SELECTOR_HANDLE, O as SPLITTER_TAGNAME, S as SPLITTER_NAVIGATION_MAXIMUM_PERCENTAGE, T as SPLITTER_NAVIGATION_MODIFIER, _ as SPLITTER_KEYS_NEGATIVE, a as OuiSplitterValuesNow, b as SPLITTER_METHODS_CONNECT, c as SPLITTER_ATTRIBUTE_HORIZONTAL, d as SPLITTER_ATTRIBUTE_SEPARATOR, f as SPLITTER_ATTRIBUTE_SIZE, g as SPLITTER_KEYS_HORIZONTAL, h as SPLITTER_KEYS_ALL, i as OuiSplitterValues, k as SPLITTER_VALUE_DECIMALS, l as SPLITTER_ATTRIBUTE_MAX, m as SPLITTER_KEYS_ABSOLUTE, n as OuiSplitter, o as SPLITTER_ATTRIBUTE_ACTIVE, p as SPLITTER_ATTRIBUTE_TYPE, r as OuiSplitterTypes, s as SPLITTER_ATTRIBUTE_HANDLE, t as GenericOuiSplitterElement, u as SPLITTER_ATTRIBUTE_MIN, v as SPLITTER_KEYS_VERTICAL, w as SPLITTER_NAVIGATION_MINIMUM_PERCENTAGE, x as SPLITTER_METHODS_OBSERVE, y as SPLITTER_MESSAGE } from "../splitter.model-DQDbIe4P.mjs";
2
2
  export { GenericOuiSplitterElement, OuiSplitter, OuiSplitterTypes, OuiSplitterValues, OuiSplitterValuesNow, SPLITTER_ATTRIBUTE_ACTIVE, SPLITTER_ATTRIBUTE_HANDLE, SPLITTER_ATTRIBUTE_HORIZONTAL, SPLITTER_ATTRIBUTE_MAX, SPLITTER_ATTRIBUTE_MIN, SPLITTER_ATTRIBUTE_SEPARATOR, SPLITTER_ATTRIBUTE_SIZE, SPLITTER_ATTRIBUTE_TYPE, SPLITTER_KEYS_ABSOLUTE, SPLITTER_KEYS_ALL, SPLITTER_KEYS_HORIZONTAL, SPLITTER_KEYS_NEGATIVE, SPLITTER_KEYS_VERTICAL, SPLITTER_MESSAGE, SPLITTER_METHODS_CONNECT, SPLITTER_METHODS_OBSERVE, SPLITTER_NAVIGATION_MAXIMUM_PERCENTAGE, SPLITTER_NAVIGATION_MAXIMUM_TOTAL, SPLITTER_NAVIGATION_MINIMUM_PERCENTAGE, SPLITTER_NAVIGATION_MODIFIER, SPLITTER_SELECTOR_HANDLE, SPLITTER_SYMBOL, SPLITTER_TAGNAME, SPLITTER_VALUE_DECIMALS, splitterStyling };
@@ -1,5 +1,5 @@
1
1
  import { toggleStyles } from "@oscarpalmer/toretto/style";
2
- //#region src/js/splitter/splitter.model.ts
2
+ // src/js/splitter/splitter.model.ts
3
3
  const SPLITTER_TAGNAME = "oui-splitter";
4
4
  const SPLITTER_ATTRIBUTE_ACTIVE = `${SPLITTER_TAGNAME}-active`;
5
5
  const SPLITTER_ATTRIBUTE_HANDLE = `${SPLITTER_TAGNAME}-handle`;
@@ -33,5 +33,4 @@ const splitterStyling = toggleStyles(document.body, {
33
33
  userSelect: "none",
34
34
  webkitUserSelect: "none"
35
35
  });
36
- //#endregion
37
36
  export { SPLITTER_ATTRIBUTE_ACTIVE, SPLITTER_ATTRIBUTE_HANDLE, SPLITTER_ATTRIBUTE_HORIZONTAL, SPLITTER_ATTRIBUTE_MAX, SPLITTER_ATTRIBUTE_MIN, SPLITTER_ATTRIBUTE_SEPARATOR, SPLITTER_ATTRIBUTE_SIZE, SPLITTER_ATTRIBUTE_TYPE, SPLITTER_KEYS_ABSOLUTE, SPLITTER_KEYS_ALL, SPLITTER_KEYS_HORIZONTAL, SPLITTER_KEYS_NEGATIVE, SPLITTER_KEYS_VERTICAL, SPLITTER_MESSAGE, SPLITTER_METHODS_CONNECT, SPLITTER_METHODS_OBSERVE, SPLITTER_NAVIGATION_MAXIMUM_PERCENTAGE, SPLITTER_NAVIGATION_MAXIMUM_TOTAL, SPLITTER_NAVIGATION_MINIMUM_PERCENTAGE, SPLITTER_NAVIGATION_MODIFIER, SPLITTER_SELECTOR_HANDLE, SPLITTER_SYMBOL, SPLITTER_TAGNAME, SPLITTER_VALUE_DECIMALS, splitterStyling };
@@ -1,5 +1,4 @@
1
1
  import { StyleToggler } from "@oscarpalmer/toretto/style";
2
- //#region src/js/splitter/splitter.model.d.ts
3
2
  type GenericOuiSplitterElement = {
4
3
  [SPLITTER_SYMBOL]: OuiSplitter;
5
4
  } & HTMLElement;
@@ -53,5 +52,4 @@ declare const SPLITTER_SELECTOR_HANDLE: string;
53
52
  declare const SPLITTER_SYMBOL: unique symbol;
54
53
  declare const SPLITTER_VALUE_DECIMALS = 6;
55
54
  declare const splitterStyling: StyleToggler;
56
- //#endregion
57
55
  export { splitterStyling as A, SPLITTER_NAVIGATION_MAXIMUM_TOTAL as C, SPLITTER_SYMBOL as D, SPLITTER_SELECTOR_HANDLE as E, SPLITTER_TAGNAME as O, SPLITTER_NAVIGATION_MAXIMUM_PERCENTAGE as S, SPLITTER_NAVIGATION_MODIFIER as T, SPLITTER_KEYS_NEGATIVE as _, OuiSplitterValuesNow as a, SPLITTER_METHODS_CONNECT as b, SPLITTER_ATTRIBUTE_HORIZONTAL as c, SPLITTER_ATTRIBUTE_SEPARATOR as d, SPLITTER_ATTRIBUTE_SIZE as f, SPLITTER_KEYS_HORIZONTAL as g, SPLITTER_KEYS_ALL as h, OuiSplitterValues as i, SPLITTER_VALUE_DECIMALS as k, SPLITTER_ATTRIBUTE_MAX as l, SPLITTER_KEYS_ABSOLUTE as m, OuiSplitter as n, SPLITTER_ATTRIBUTE_ACTIVE as o, SPLITTER_ATTRIBUTE_TYPE as p, OuiSplitterTypes as r, SPLITTER_ATTRIBUTE_HANDLE as s, GenericOuiSplitterElement as t, SPLITTER_ATTRIBUTE_MIN as u, SPLITTER_KEYS_VERTICAL as v, SPLITTER_NAVIGATION_MINIMUM_PERCENTAGE as w, SPLITTER_METHODS_OBSERVE as x, SPLITTER_MESSAGE as y };
@@ -1,5 +1,4 @@
1
- import { a as OuiTabsState, c as TABS_SYMBOL, r as OuiTabsEvent } from "../tabs.model-BHPy7fPo.mjs";
2
- //#region src/js/tabs/index.d.ts
1
+ import { a as OuiTabsState, c as TABS_SYMBOL, r as OuiTabsEvent } from "../tabs.model-CvylbR2o.mjs";
3
2
  declare global {
4
3
  interface HTMLElementTagNameMap {
5
4
  [TAGNAME]: OuiTabsElement;
@@ -9,7 +8,7 @@ export interface OuiTabsElement {
9
8
  [TABS_SYMBOL]: OuiTabsState;
10
9
  }
11
10
  export declare class OuiTabsElement extends HTMLElement {
12
- static observedAttributes: string[];
11
+ static readonly observedAttributes: string[];
13
12
  get active(): number;
14
13
  set active(value: number);
15
14
  get panel(): Element;
@@ -20,5 +19,4 @@ export declare class OuiTabsElement extends HTMLElement {
20
19
  disconnectedCallback(): void;
21
20
  }
22
21
  declare const TAGNAME = "oui-tabs";
23
- //#endregion
24
22
  export { OuiTabsEvent };