@oscarpalmer/oui 0.17.0 → 0.19.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 (72) hide show
  1. package/dist/css/badge.css +13 -13
  2. package/dist/css/button.css +9 -9
  3. package/dist/css/color.css +99 -99
  4. package/dist/css/content.css +10 -12
  5. package/dist/css/flex.css +39 -39
  6. package/dist/css/form.css +47 -60
  7. package/dist/css/message.css +10 -6
  8. package/dist/css/reset.css +178 -57
  9. package/dist/css/table.css +4 -4
  10. package/dist/css/tooltip.css +26 -1
  11. package/dist/js/attributable.full.js +36 -0
  12. package/dist/js/attributable.js +30 -45
  13. package/dist/js/floatable.full.js +398 -0
  14. package/dist/js/floatable.js +254 -169
  15. package/dist/js/focus-trap/embedded.full.js +408 -0
  16. package/dist/js/focus-trap/embedded.js +131 -131
  17. package/dist/js/focus-trap/standalone.full.js +447 -0
  18. package/dist/js/focus-trap/standalone.js +4 -4
  19. package/dist/js/index.js +3 -4
  20. package/dist/js/oui.full.js +1573 -0
  21. package/dist/js/popover.full.js +760 -0
  22. package/dist/js/popover.js +84 -163
  23. package/dist/js/splitter.full.js +769 -0
  24. package/dist/js/splitter.js +264 -246
  25. package/dist/js/tooltip.full.js +613 -0
  26. package/dist/js/tooltip.js +160 -151
  27. package/package.json +35 -63
  28. package/src/css/a11y.scss +1 -1
  29. package/src/css/badge.scss +23 -19
  30. package/src/css/button.scss +9 -9
  31. package/src/css/color.scss +99 -99
  32. package/src/css/content.scss +6 -9
  33. package/src/css/flex.scss +21 -20
  34. package/src/css/form.scss +47 -62
  35. package/src/css/message.scss +11 -12
  36. package/src/css/mixins.scss +16 -10
  37. package/src/css/popover.scss +2 -2
  38. package/src/css/reset.scss +181 -55
  39. package/src/css/splitter.scss +15 -13
  40. package/src/css/table.scss +11 -11
  41. package/src/css/tooltip.scss +31 -2
  42. package/src/js/attributable.ts +3 -10
  43. package/src/js/floatable.ts +370 -141
  44. package/src/js/focus-trap/embedded.ts +141 -74
  45. package/src/js/focus-trap/standalone.ts +4 -4
  46. package/src/js/index.ts +1 -0
  47. package/src/js/popover.ts +52 -122
  48. package/src/js/splitter.ts +248 -131
  49. package/src/js/tooltip.ts +143 -68
  50. package/types/floatable.d.ts +17 -10
  51. package/types/focus-trap/embedded.d.ts +18 -5
  52. package/types/index.d.ts +1 -0
  53. package/types/popover.d.ts +2 -0
  54. package/types/splitter.d.ts +13 -1
  55. package/types/tooltip.d.ts +2 -1
  56. package/dist/css/value.css +0 -1
  57. package/dist/js/attributable.cjs +0 -51
  58. package/dist/js/floatable.cjs +0 -176
  59. package/dist/js/focus-trap/embedded.cjs +0 -150
  60. package/dist/js/focus-trap/standalone.cjs +0 -8
  61. package/dist/js/index.cjs +0 -6
  62. package/dist/js/popover.cjs +0 -166
  63. package/dist/js/splitter.cjs +0 -272
  64. package/dist/js/tooltip.cjs +0 -166
  65. package/types/attributable.d.cts +0 -5
  66. package/types/floatable.d.cts +0 -20
  67. package/types/focus-trap/embedded.d.cts +0 -15
  68. package/types/focus-trap/standalone.d.cts +0 -3
  69. package/types/index.d.cts +0 -14
  70. package/types/popover.d.cts +0 -14
  71. package/types/splitter.d.cts +0 -10
  72. package/types/tooltip.d.cts +0 -3
@@ -1,272 +1,290 @@
1
+ import { getPosition, on } from "@oscarpalmer/toretto/event";
2
+ import { findAncestor } from "@oscarpalmer/toretto/find";
3
+ import { clamp } from "@oscarpalmer/atoms/number";
1
4
  import { isNullableOrWhitespace } from "@oscarpalmer/atoms/is";
2
5
  import { round } from "@oscarpalmer/atoms/math";
3
- import { clamp } from "@oscarpalmer/atoms/number";
4
- import { on, getPosition } from "@oscarpalmer/toretto/event";
5
- import { findAncestor } from "@oscarpalmer/toretto/find";
6
- class OuiSplitterElement extends HTMLElement {
7
- #splitter;
8
- constructor() {
9
- super();
10
- const panels = [...this.children].filter(
11
- (child) => child instanceof HTMLElement
12
- );
13
- if (panels.length !== 2) {
14
- throw new Error("oui-splitter must have exactly two panels.");
15
- }
16
- this.#splitter = new Splitter(this, panels);
17
- }
18
- connectedCallback() {
19
- if (this.#splitter.types.auto) {
20
- observer.observe(this);
21
- }
22
- }
23
- disconnectedCallback() {
24
- if (this.#splitter.types.auto) {
25
- observer.unobserve(this);
26
- }
27
- }
28
- }
29
- let index = 0;
30
- class Splitter {
31
- constructor(element, panels) {
32
- this.element = element;
33
- this.panels = panels;
34
- if (isNullableOrWhitespace(element.id)) {
35
- element.id = `oui_splitter_${++index}`;
36
- }
37
- this.values = getValues(element);
38
- this.handle = createHandle();
39
- this.rectangle = element.getBoundingClientRect();
40
- this.separator = createSeparator(this);
41
- this.separator.append(this.handle);
42
- panels[0].insertAdjacentElement("afterend", this.separator);
43
- mapped.set(element, this);
44
- mapped.set(this.handle, this);
45
- setSize(this, this.values.now.current);
46
- this.types = getTypes(this);
47
- if (this.types.horizontal) {
48
- this.element.setAttribute("oui-splitter-horizontal", "");
49
- }
50
- setAriaOrientation(this);
51
- setAriaValue(this);
52
- }
53
- handle;
54
- rectangle;
55
- separator;
56
- types;
57
- values;
58
- }
6
+ import { toggleStyles } from "@oscarpalmer/toretto/style";
7
+ import supportsTouch from "@oscarpalmer/toretto/touch";
8
+ var OuiSplitterElement = class extends HTMLElement {
9
+ static observedAttributes = [
10
+ "max",
11
+ "min",
12
+ "size",
13
+ "type"
14
+ ];
15
+ #splitter;
16
+ get max() {
17
+ return this.#splitter.values.max;
18
+ }
19
+ set max(value) {
20
+ this.setAttribute("max", String(value));
21
+ }
22
+ get min() {
23
+ return this.#splitter.values.min;
24
+ }
25
+ set min(value) {
26
+ this.setAttribute("min", String(value));
27
+ }
28
+ get size() {
29
+ return this.#splitter.values.now.current;
30
+ }
31
+ set size(value) {
32
+ this.setAttribute("size", String(value));
33
+ }
34
+ get type() {
35
+ return this.getAttribute("type") ?? "vertical";
36
+ }
37
+ set type(value) {
38
+ this.setAttribute("type", value);
39
+ }
40
+ constructor() {
41
+ super();
42
+ const panels = [...this.children].filter((child) => child instanceof HTMLElement);
43
+ if (panels.length !== 2) throw new Error(`${SELECTOR} must have exactly two panels.`);
44
+ this.#splitter = new Splitter(this, panels);
45
+ }
46
+ connectedCallback() {
47
+ this.#splitter.updateConnections(1);
48
+ }
49
+ disconnectedCallback() {
50
+ this.#splitter.updateConnections(0);
51
+ }
52
+ attributeChangedCallback(name) {
53
+ switch (name) {
54
+ case "max":
55
+ case "min":
56
+ case "size":
57
+ this.#splitter.updateValues();
58
+ break;
59
+ case "type":
60
+ this.#splitter.updateOrientation();
61
+ break;
62
+ default: break;
63
+ }
64
+ }
65
+ };
66
+ var index = 0;
67
+ var Splitter = class {
68
+ element;
69
+ handle;
70
+ panels;
71
+ rectangle;
72
+ separator;
73
+ types;
74
+ values;
75
+ constructor(element, panels) {
76
+ this.element = element;
77
+ this.panels = panels;
78
+ if (isNullableOrWhitespace(element.id)) element.id = `oui_splitter_${++index}`;
79
+ this.values = getValues(element);
80
+ this.handle = createHandle();
81
+ this.rectangle = element.getBoundingClientRect();
82
+ this.separator = createSeparator(this);
83
+ this.separator.append(this.handle);
84
+ panels[0].insertAdjacentElement("afterend", this.separator);
85
+ this.updateOrientation();
86
+ this.updateValues();
87
+ }
88
+ updateConnections(add) {
89
+ const method = METHODS_CONNECT[add];
90
+ MAPPED_ELEMENTS[method](this.element, this);
91
+ MAPPED_ELEMENTS[method](this.handle, this);
92
+ MAPPED_ELEMENTS[method](this.separator, this);
93
+ if (this.types.auto) RESIZE_OBSERVER[METHODS_OBSERVE[add]](this.element);
94
+ }
95
+ updateOrientation() {
96
+ this.types = getTypes(this);
97
+ if (this.types.auto) RESIZE_OBSERVER.observe(this.element);
98
+ else RESIZE_OBSERVER.unobserve(this.element);
99
+ if (this.types.horizontal) this.element.setAttribute(ATTRIBUTE_HORIZONTAL, "");
100
+ else this.element.removeAttribute(ATTRIBUTE_HORIZONTAL);
101
+ setAriaOrientation(this);
102
+ }
103
+ updateValues() {
104
+ this.values = getValues(this.element);
105
+ requestAnimationFrame(() => {
106
+ setSize(this, this.values.now.current);
107
+ setAriaValue(this);
108
+ });
109
+ }
110
+ };
59
111
  function createHandle() {
60
- const handle = document.createElement("span");
61
- handle.setAttribute("aria-hidden", "true");
62
- handle.setAttribute("oui-splitter-handle", "");
63
- return handle;
112
+ const handle = document.createElement("span");
113
+ handle.setAttribute("aria-hidden", "true");
114
+ handle.setAttribute(ATTRIBUTE_HANDLE, "");
115
+ return handle;
64
116
  }
65
- function createSeparator(splitter2) {
66
- const separator = document.createElement("div");
67
- separator.role = "separator";
68
- separator.tabIndex = 0;
69
- separator.setAttribute("aria-controls", splitter2.element.id);
70
- separator.setAttribute("aria-label", "Resize panels");
71
- separator.setAttribute("oui-splitter-separator", "");
72
- return separator;
117
+ function createSeparator(splitter$1) {
118
+ const separator = document.createElement("div");
119
+ separator.role = "separator";
120
+ separator.tabIndex = 0;
121
+ separator.setAttribute("aria-controls", splitter$1.element.id);
122
+ separator.setAttribute("aria-label", "Resize panels");
123
+ separator.setAttribute(ATTRIBUTE_SEPARATOR, "");
124
+ return separator;
73
125
  }
74
126
  function getContained(min, value, max) {
75
- return round(clamp(value, min, max), 6);
127
+ return round(clamp(value, min, max), VALUE_DECIMALS);
76
128
  }
77
- function getSize(splitter2, value) {
78
- const { height, left, top, width } = splitter2.rectangle;
79
- const offset = value - (splitter2.types.horizontal ? top : left);
80
- const fraction = offset / (splitter2.types.horizontal ? height : width);
81
- return getContained(splitter2.values.min, fraction, splitter2.values.max);
129
+ function getSize(splitter$1, value) {
130
+ const { height, left, top, width } = splitter$1.rectangle;
131
+ const fraction = (value - (splitter$1.types.horizontal ? top : left)) / (splitter$1.types.horizontal ? height : width);
132
+ return getContained(splitter$1.values.min, fraction, splitter$1.values.max);
82
133
  }
83
- function getTypes(splitter2, width, height) {
84
- const type = splitter2.element.getAttribute("type")?.trim() ?? "";
85
- if (type === "horizontal") {
86
- return {
87
- auto: false,
88
- horizontal: true
89
- };
90
- }
91
- if (type === "auto") {
92
- return {
93
- auto: true,
94
- horizontal: (height ?? splitter2.rectangle.height) > (width ?? splitter2.rectangle.width)
95
- };
96
- }
97
- return {
98
- auto: false,
99
- horizontal: false
100
- };
134
+ function getTypes(splitter$1, width, height) {
135
+ const type = splitter$1.element.getAttribute("type")?.trim() ?? "";
136
+ if (type === "horizontal") return {
137
+ auto: false,
138
+ horizontal: true
139
+ };
140
+ if (type === "auto") return {
141
+ auto: true,
142
+ horizontal: (height ?? splitter$1.rectangle.height) > (width ?? splitter$1.rectangle.width)
143
+ };
144
+ return {
145
+ auto: false,
146
+ horizontal: false
147
+ };
101
148
  }
102
149
  function getValue(element, name, defaultValue) {
103
- const value = element.getAttribute(name);
104
- if (isNullableOrWhitespace(value)) {
105
- return defaultValue;
106
- }
107
- const parsed = Number.parseFloat(value);
108
- if (Number.isNaN(parsed)) {
109
- return defaultValue;
110
- }
111
- return parsed < 0 ? defaultValue : parsed > 1 ? parsed / 100 : parsed;
150
+ const value = element.getAttribute(name);
151
+ if (isNullableOrWhitespace(value)) return defaultValue;
152
+ const parsed = Number.parseFloat(value);
153
+ if (Number.isNaN(parsed)) return defaultValue;
154
+ if (parsed < 0) return defaultValue;
155
+ return parsed > 1 ? parsed / NAVIGATION_MAXIMUM_TOTAL : parsed;
112
156
  }
113
157
  function getValues(element) {
114
- const values = {
115
- max: getValue(element, "max", 0.9),
116
- min: getValue(element, "min", 0.1),
117
- now: {
118
- current: 0.5,
119
- previous: 0.5
120
- }
121
- };
122
- const value = getContained(
123
- values.min,
124
- getValue(element, "size", values.now.current),
125
- values.max
126
- );
127
- values.now.current = value;
128
- values.now.previous = value;
129
- return values;
158
+ const values = {
159
+ max: getValue(element, "max", NAVIGATION_MAXIMUM_PERCENTAGE),
160
+ min: getValue(element, "min", NAVIGATION_MINIMUM_PERCENTAGE),
161
+ now: {
162
+ current: .5,
163
+ previous: .5
164
+ }
165
+ };
166
+ const value = getContained(values.min, getValue(element, "size", values.now.current), values.max);
167
+ values.now.current = value;
168
+ values.now.previous = value;
169
+ return values;
130
170
  }
131
171
  function onEnd(reset) {
132
- if (splitter != null) {
133
- splitter.handle.removeAttribute("oui-splitter-active");
134
- splitter.separator.removeAttribute("oui-splitter-active");
135
- if (reset) {
136
- setSize(splitter, splitter.values.now.previous);
137
- } else {
138
- splitter.values.now.previous = splitter.values.now.current;
139
- }
140
- }
141
- splitter = void 0;
172
+ if (splitter == null) return;
173
+ splitter.handle.removeAttribute(ATTRIBUTE_ACTIVE);
174
+ splitter.separator.removeAttribute(ATTRIBUTE_ACTIVE);
175
+ if (reset) setSize(splitter, splitter.values.now.previous);
176
+ else splitter.values.now.previous = splitter.values.now.current;
177
+ splitter = void 0;
178
+ STYLING_TOGGLER.remove();
142
179
  }
143
180
  function onKeydown(event) {
144
- switch (true) {
145
- case allKeys.has(event.key):
146
- onNavigate(event);
147
- break;
148
- case event.key === "Escape":
149
- onEnd(true);
150
- break;
151
- }
181
+ switch (true) {
182
+ case KEYS_ALL.has(event.key):
183
+ onNavigate(event);
184
+ break;
185
+ case event.key === "Escape":
186
+ onEnd(true);
187
+ break;
188
+ default: break;
189
+ }
152
190
  }
153
- function onMousedown(event) {
154
- splitter = mapped.get(
155
- findAncestor(
156
- event.target,
157
- "[oui-splitter-handle]"
158
- )
159
- );
160
- if (splitter == null) {
161
- return;
162
- }
163
- splitter.handle.setAttribute("oui-splitter-active", "");
164
- splitter.separator.setAttribute("oui-splitter-active", "");
165
- splitter.rectangle = splitter.element.getBoundingClientRect();
191
+ function onNavigate(event) {
192
+ const splitter$1 = MAPPED_ELEMENTS.get(findAncestor(event.target, "[oui-splitter-separator]"));
193
+ if (splitter$1 == null) return;
194
+ const { types, values } = splitter$1;
195
+ if (KEYS_ABSOLUTE.has(event.key)) {
196
+ setSize(splitter$1, event.key === "End" ? values.max : values.min, true);
197
+ return;
198
+ }
199
+ if (types.horizontal && !KEYS_HORIZONTAL.has(event.key) || !(types.horizontal || KEYS_VERTICAL.has(event.key))) return;
200
+ const offset = KEYS_NEGATIVE.has(event.key) ? -1 : 1;
201
+ setSize(splitter$1, getContained(values.min, values.now.current + offset * NAVIGATION_MODIFIER, values.max), true);
166
202
  }
167
- function onMousemove(event) {
168
- if (splitter == null) {
169
- return;
170
- }
171
- const position = getPosition(event);
172
- if (position != null) {
173
- splitter.values.now.current = getSize(
174
- splitter,
175
- splitter.types.horizontal ? position.y : position.x
176
- );
177
- setSize(splitter, splitter.values.now.current);
178
- }
203
+ function onObservation(entries) {
204
+ if (frame != null) cancelAnimationFrame(frame);
205
+ frame = requestAnimationFrame(() => {
206
+ for (const entry of entries) {
207
+ const splitter$1 = MAPPED_ELEMENTS.get(entry.target);
208
+ if (splitter$1 == null) return;
209
+ splitter$1.types = getTypes(splitter$1, entry.contentRect.width, entry.contentRect.height);
210
+ if (splitter$1.types.horizontal) splitter$1.element.setAttribute(ATTRIBUTE_HORIZONTAL, "");
211
+ else splitter$1.element.removeAttribute(ATTRIBUTE_HORIZONTAL);
212
+ setAriaOrientation(splitter$1);
213
+ }
214
+ frame = void 0;
215
+ });
179
216
  }
180
- function onMouseup() {
181
- if (splitter != null) {
182
- onEnd(false);
183
- }
217
+ function onPointerdown(event) {
218
+ if (event.type === "mousedown" && supportsTouch.value || event.type === "touchstart" && !supportsTouch.value) return;
219
+ splitter = MAPPED_ELEMENTS.get(findAncestor(event.target, SELECTOR_HANDLE));
220
+ if (splitter == null) return;
221
+ if (supportsTouch.value) event.preventDefault();
222
+ splitter.handle.setAttribute(ATTRIBUTE_ACTIVE, "");
223
+ splitter.separator.setAttribute(ATTRIBUTE_ACTIVE, "");
224
+ splitter.rectangle = splitter.element.getBoundingClientRect();
225
+ STYLING_TOGGLER.set();
184
226
  }
185
- function onNavigate(event) {
186
- const splitter2 = mapped.get(
187
- findAncestor(
188
- event.target,
189
- "[oui-splitter-handle]"
190
- )
191
- );
192
- if (splitter2 == null) {
193
- return;
194
- }
195
- if (absoluteKeys.has(event.key)) {
196
- setSize(
197
- splitter2,
198
- event.key === "End" ? splitter2.values.max : splitter2.values.min,
199
- true
200
- );
201
- return;
202
- }
203
- if (splitter2.types.horizontal && !horizontalKeys.has(event.key) || !splitter2.types.horizontal && !verticalKeys.has(event.key)) {
204
- return;
205
- }
206
- const modifier = negativeKeys.has(event.key) ? -1 : 1;
207
- setSize(splitter2, splitter2.values.now.current + modifier * 0.05, true);
227
+ function onPointermove(event) {
228
+ if (splitter == null) return;
229
+ const position = getPosition(event);
230
+ if (position != null) {
231
+ splitter.values.now.current = getSize(splitter, splitter.types.horizontal ? position.y : position.x);
232
+ setSize(splitter, splitter.values.now.current);
233
+ }
208
234
  }
209
- function onObservation(entries) {
210
- if (frame != null) {
211
- cancelAnimationFrame(frame);
212
- }
213
- frame = requestAnimationFrame(() => {
214
- for (const entry of entries) {
215
- const splitter2 = mapped.get(entry.target);
216
- if (splitter2 == null) {
217
- return;
218
- }
219
- splitter2.types = getTypes(
220
- splitter2,
221
- entry.contentRect.width,
222
- entry.contentRect.height
223
- );
224
- if (splitter2.types.horizontal) {
225
- splitter2.element.setAttribute("oui-splitter-horizontal", "");
226
- } else {
227
- splitter2.element.removeAttribute("oui-splitter-horizontal");
228
- }
229
- setAriaOrientation(splitter2);
230
- }
231
- frame = void 0;
232
- });
235
+ function onPointerup() {
236
+ if (splitter != null) onEnd(false);
233
237
  }
234
- function setAriaOrientation(splitter2) {
235
- splitter2.separator.setAttribute(
236
- "aria-orientation",
237
- splitter2.types.horizontal ? "horizontal" : "vertical"
238
- );
238
+ function setAriaOrientation(splitter$1) {
239
+ splitter$1.separator.setAttribute("aria-orientation", splitter$1.types.horizontal ? "horizontal" : "vertical");
239
240
  }
240
- function setAriaValue(splitter2) {
241
- splitter2.separator.setAttribute("aria-valuemax", String(splitter2.values.max));
242
- splitter2.separator.setAttribute("aria-valuemin", String(splitter2.values.min));
243
- splitter2.separator.setAttribute(
244
- "aria-valuenow",
245
- String(splitter2.values.now.current)
246
- );
241
+ function setAriaValue(splitter$1) {
242
+ splitter$1.separator.setAttribute("aria-valuemax", String(splitter$1.values.max));
243
+ splitter$1.separator.setAttribute("aria-valuemin", String(splitter$1.values.min));
244
+ splitter$1.separator.setAttribute("aria-valuenow", String(splitter$1.values.now.current));
247
245
  }
248
- function setSize(splitter2, size, previous) {
249
- splitter2.values.now.current = size;
250
- if (previous) {
251
- splitter2.values.now.previous = size;
252
- }
253
- splitter2.element.style.setProperty("--oui-splitter-size", `${size}`);
254
- setAriaValue(splitter2);
246
+ function setSize(splitter$1, size, previous) {
247
+ splitter$1.values.now.current = size;
248
+ if (previous) splitter$1.values.now.previous = size;
249
+ splitter$1.element.style.setProperty("--oui-splitter-size", `${size}`);
250
+ setAriaValue(splitter$1);
255
251
  }
256
- const absoluteKeys = /* @__PURE__ */ new Set(["End", "Home"]);
257
- const horizontalKeys = /* @__PURE__ */ new Set(["ArrowDown", "ArrowUp"]);
258
- const mapped = /* @__PURE__ */ new WeakMap();
259
- const observer = new ResizeObserver(onObservation);
260
- const negativeKeys = /* @__PURE__ */ new Set(["ArrowLeft", "ArrowUp"]);
261
- const verticalKeys = /* @__PURE__ */ new Set(["ArrowLeft", "ArrowRight"]);
262
- const allKeys = /* @__PURE__ */ new Set([...absoluteKeys, ...horizontalKeys, ...verticalKeys]);
263
- let frame;
264
- let splitter;
265
- customElements.define("oui-splitter", OuiSplitterElement);
252
+ var SELECTOR = "oui-splitter";
253
+ var ATTRIBUTE_ACTIVE = `${SELECTOR}-active`;
254
+ var ATTRIBUTE_HANDLE = `${SELECTOR}-handle`;
255
+ var ATTRIBUTE_HORIZONTAL = `${SELECTOR}-horizontal`;
256
+ var ATTRIBUTE_SEPARATOR = `${SELECTOR}-separator`;
257
+ var KEYS_ABSOLUTE = new Set(["End", "Home"]);
258
+ var KEYS_HORIZONTAL = new Set(["ArrowDown", "ArrowUp"]);
259
+ var KEYS_NEGATIVE = new Set(["ArrowLeft", "ArrowUp"]);
260
+ var KEYS_VERTICAL = new Set(["ArrowLeft", "ArrowRight"]);
261
+ var KEYS_ALL = new Set([
262
+ ...KEYS_ABSOLUTE,
263
+ ...KEYS_HORIZONTAL,
264
+ ...KEYS_VERTICAL
265
+ ]);
266
+ var MAPPED_ELEMENTS = /* @__PURE__ */ new WeakMap();
267
+ var METHODS_CONNECT = ["delete", "set"];
268
+ var METHODS_OBSERVE = ["unobserve", "observe"];
269
+ var NAVIGATION_MAXIMUM_PERCENTAGE = .9;
270
+ var NAVIGATION_MAXIMUM_TOTAL = 100;
271
+ var NAVIGATION_MINIMUM_PERCENTAGE = .1;
272
+ var NAVIGATION_MODIFIER = .05;
273
+ var RESIZE_OBSERVER = new ResizeObserver(onObservation);
274
+ var SELECTOR_HANDLE = `[${ATTRIBUTE_HANDLE}]`;
275
+ var STYLING_TOGGLER = toggleStyles(document.body, {
276
+ touchAction: "none",
277
+ userSelect: "none",
278
+ webkitUserSelect: "none"
279
+ });
280
+ var VALUE_DECIMALS = 6;
281
+ var frame;
282
+ var splitter;
283
+ customElements.define(SELECTOR, OuiSplitterElement);
266
284
  on(document, "keydown", onKeydown);
267
- on(document, "mousedown", onMousedown);
268
- on(document, "mousemove", onMousemove);
269
- on(document, "mouseup", onMouseup);
270
- export {
271
- OuiSplitterElement
272
- };
285
+ on(document, "mousedown", onPointerdown);
286
+ on(document, "pointermove", onPointermove);
287
+ on(document, "pointerup", onPointerup);
288
+ on(document, "touchcancel", onPointerup, { passive: false });
289
+ on(document, "touchstart", onPointerdown, { passive: false });
290
+ export { OuiSplitterElement };