@eightshift/ui-components 3.0.1 → 5.0.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 (144) hide show
  1. package/package.json +101 -101
  2. package/dist/Button-BPLceDeW.js +0 -185
  3. package/dist/Collection-CZxddMZS.js +0 -2332
  4. package/dist/Color-MV5kBVXr.js +0 -2452
  5. package/dist/ColorSwatch-BqQfVu4L.js +0 -64
  6. package/dist/ComboBox-_RfyhwZw.js +0 -1906
  7. package/dist/Dialog-8tYeQ9n4.js +0 -2300
  8. package/dist/FieldError-52GVSGgC.js +0 -42
  9. package/dist/FocusScope-Cri5BFRz.js +0 -831
  10. package/dist/Form-Cq3fu75_.js +0 -5
  11. package/dist/Group-_emcIVxI.js +0 -48
  12. package/dist/Heading-B2153VXe.js +0 -16
  13. package/dist/Hidden-rE6uR-lr.js +0 -41
  14. package/dist/Input-BxpFEIXV.js +0 -133
  15. package/dist/Label-icmbmNdI.js +0 -17
  16. package/dist/List-CZMUbkFU.js +0 -593
  17. package/dist/ListBox-Ca6hiCqz.js +0 -581
  18. package/dist/NumberFormatter-DA8u1Ot7.js +0 -140
  19. package/dist/OverlayArrow-CYXQSlEU.js +0 -629
  20. package/dist/RSPContexts-2lR5GG9p.js +0 -14
  21. package/dist/Select-aab027f3.esm-PDJCDE95.js +0 -2469
  22. package/dist/Separator-4IIDRlV_.js +0 -322
  23. package/dist/Slider-rz2XRMGm.js +0 -853
  24. package/dist/Text-DVSAPY-K.js +0 -16
  25. package/dist/VisuallyHidden-f9zX67a_.js +0 -48
  26. package/dist/_commonjsHelpers-CUmg6egw.js +0 -6
  27. package/dist/assets/index.css +0 -37
  28. package/dist/assets/style-admin.css +0 -5255
  29. package/dist/assets/style-editor.css +0 -5255
  30. package/dist/assets/style.css +0 -5261
  31. package/dist/assets/wp-font-enhancements.css +0 -8
  32. package/dist/assets/wp-ui-enhancements.css +0 -299
  33. package/dist/components/animated-visibility/animated-visibility.js +0 -105
  34. package/dist/components/base-control/base-control.js +0 -86
  35. package/dist/components/breakpoint-preview/breakpoint-preview.js +0 -161
  36. package/dist/components/button/button.js +0 -387
  37. package/dist/components/checkbox/checkbox.js +0 -320
  38. package/dist/components/color-pickers/color-picker.js +0 -272
  39. package/dist/components/color-pickers/color-swatch.js +0 -58
  40. package/dist/components/color-pickers/gradient-editor.js +0 -534
  41. package/dist/components/color-pickers/solid-color-picker.js +0 -1567
  42. package/dist/components/component-toggle/component-toggle.js +0 -158
  43. package/dist/components/container-panel/container-panel.js +0 -131
  44. package/dist/components/draggable/draggable-context.js +0 -5
  45. package/dist/components/draggable/draggable-handle.js +0 -46
  46. package/dist/components/draggable/draggable.js +0 -6207
  47. package/dist/components/draggable-list/draggable-list-context.js +0 -5
  48. package/dist/components/draggable-list/draggable-list-item.js +0 -77
  49. package/dist/components/draggable-list/draggable-list.js +0 -151
  50. package/dist/components/expandable/expandable.js +0 -342
  51. package/dist/components/index.js +0 -137
  52. package/dist/components/input-field/input-field.js +0 -231
  53. package/dist/components/item-collection/item-collection.js +0 -59
  54. package/dist/components/layout/hstack.js +0 -30
  55. package/dist/components/layout/vstack.js +0 -30
  56. package/dist/components/link-input/link-input.js +0 -293
  57. package/dist/components/matrix-align/matrix-align.js +0 -134
  58. package/dist/components/menu/menu.js +0 -285
  59. package/dist/components/modal/modal.js +0 -305
  60. package/dist/components/notice/notice.js +0 -123
  61. package/dist/components/number-picker/number-picker.js +0 -292
  62. package/dist/components/option-select/option-select.js +0 -264
  63. package/dist/components/options-panel/options-panel.js +0 -158
  64. package/dist/components/placeholders/file-placeholder.js +0 -42
  65. package/dist/components/placeholders/image-placeholder.js +0 -88
  66. package/dist/components/placeholders/media-placeholder.js +0 -63
  67. package/dist/components/popover/popover.js +0 -207
  68. package/dist/components/radio/radio.js +0 -579
  69. package/dist/components/repeater/repeater-context.js +0 -5
  70. package/dist/components/repeater/repeater-item.js +0 -119
  71. package/dist/components/repeater/repeater.js +0 -280
  72. package/dist/components/responsive/mini-responsive.js +0 -498
  73. package/dist/components/responsive/responsive-legacy.js +0 -343
  74. package/dist/components/responsive/responsive.js +0 -580
  75. package/dist/components/responsive-preview/responsive-preview.js +0 -123
  76. package/dist/components/rich-label/rich-label.js +0 -66
  77. package/dist/components/select/async-multi-select.js +0 -157
  78. package/dist/components/select/async-single-select.js +0 -137
  79. package/dist/components/select/custom-select-default-components.js +0 -38
  80. package/dist/components/select/multi-select-components.js +0 -8
  81. package/dist/components/select/multi-select.js +0 -151
  82. package/dist/components/select/react-select-component-wrappers.js +0 -90
  83. package/dist/components/select/shared.js +0 -26
  84. package/dist/components/select/single-select.js +0 -131
  85. package/dist/components/select/styles.js +0 -49
  86. package/dist/components/select/v2/async-select.js +0 -297
  87. package/dist/components/select/v2/shared.js +0 -24
  88. package/dist/components/select/v2/single-select.js +0 -990
  89. package/dist/components/slider/column-config-slider.js +0 -210
  90. package/dist/components/slider/slider.js +0 -343
  91. package/dist/components/slider/utils.js +0 -84
  92. package/dist/components/spacer/spacer.js +0 -97
  93. package/dist/components/tabs/tabs.js +0 -702
  94. package/dist/components/toggle/switch.js +0 -155
  95. package/dist/components/toggle/toggle.js +0 -64
  96. package/dist/components/toggle-button/toggle-button.js +0 -324
  97. package/dist/components/tooltip/tooltip.js +0 -525
  98. package/dist/context-D2KUdwNL.js +0 -92
  99. package/dist/default-i18n-CT_oS1Fy.js +0 -922
  100. package/dist/filterDOMProps-EDDcM64A.js +0 -28
  101. package/dist/icons/block-icon.js +0 -42
  102. package/dist/icons/generic-color-swatch.js +0 -113
  103. package/dist/icons/icons.js +0 -30371
  104. package/dist/icons/index.js +0 -11
  105. package/dist/icons/jsx-svg.js +0 -50
  106. package/dist/index-641ee5b8.esm-DIuJijyT.js +0 -3137
  107. package/dist/index-BKGQ6jGS.js +0 -44
  108. package/dist/index-CFozsmNS.js +0 -28321
  109. package/dist/index.js +0 -139
  110. package/dist/lite-DVmmD_-j.js +0 -7
  111. package/dist/modifiers.esm-BuJQPI1X.js +0 -31
  112. package/dist/multi-select-components-Sp-JEFEX.js +0 -3744
  113. package/dist/number-GajL10e1.js +0 -36
  114. package/dist/react-jsx-parser.min-DZCiis5V.js +0 -11753
  115. package/dist/react-select-async.esm-Bql4G5iV.js +0 -107
  116. package/dist/react-select.esm-B_TudhTU.js +0 -15
  117. package/dist/style-admin.js +0 -1
  118. package/dist/style-editor.js +0 -1
  119. package/dist/style.js +0 -1
  120. package/dist/textSelection-0UUS8Yfg.js +0 -46
  121. package/dist/useButton-Cg474OYB.js +0 -71
  122. package/dist/useEvent-B0b-6KBr.js +0 -23
  123. package/dist/useFocusRing-CV5l3lf6.js +0 -107
  124. package/dist/useFormReset-C5OggHsw.js +0 -22
  125. package/dist/useFormValidation-DhDNSjws.js +0 -224
  126. package/dist/useHover-DwDr6ozG.js +0 -900
  127. package/dist/useLabel-D7HkNEHT.js +0 -27
  128. package/dist/useLabels-D8cxd1Z8.js +0 -23
  129. package/dist/useListState-DVr6aYd_.js +0 -161
  130. package/dist/useLocalizedStringFormatter-CFP1YZWQ.js +0 -121
  131. package/dist/useNumberField-TwM0Z9D1.js +0 -1204
  132. package/dist/useNumberFormatter-321rAb4J.js +0 -13
  133. package/dist/usePress-Cucx-xSA.js +0 -664
  134. package/dist/useSingleSelectListState-CMGsRHHh.js +0 -38
  135. package/dist/useToggle-C0I3vs0g.js +0 -59
  136. package/dist/useToggleState-CmQX3SoX.js +0 -19
  137. package/dist/utilities/array-helpers.js +0 -56
  138. package/dist/utilities/debounce-throttle.js +0 -123
  139. package/dist/utilities/es-dash.js +0 -376
  140. package/dist/utilities/index.js +0 -27
  141. package/dist/utilities/text-helpers.js +0 -136
  142. package/dist/utils-DkCSC521.js +0 -370
  143. package/dist/wp/wp-font-enhancements.js +0 -1
  144. package/dist/wp/wp-ui-enhancements.js +0 -1
@@ -1,593 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import * as React from "react";
5
- import { r as reactDomExports } from "./index-CFozsmNS.js";
6
- function arrayMove(array, from, to) {
7
- array = array.slice();
8
- array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);
9
- return array;
10
- }
11
- function arrayRemove(array, index) {
12
- array = array.slice();
13
- array.splice(index, 1);
14
- return array;
15
- }
16
- function getTranslateOffset(element) {
17
- const style = window.getComputedStyle(element);
18
- return Math.max(parseInt(style["margin-top"], 10), parseInt(style["margin-bottom"], 10)) + element.getBoundingClientRect().height;
19
- }
20
- function isTouchEvent(event) {
21
- return event.touches && event.touches.length || event.changedTouches && event.changedTouches.length;
22
- }
23
- function transformItem(element, offsetY = 0, offsetX = 0) {
24
- if (!element)
25
- return;
26
- if (offsetY === null || offsetX === null) {
27
- element.style.removeProperty("transform");
28
- return;
29
- }
30
- element.style.transform = `translate(${offsetX}px, ${offsetY}px)`;
31
- }
32
- function setItemTransition(element, duration, timing) {
33
- if (element) {
34
- element.style["transition"] = `transform ${duration}ms${timing ? ` ${timing}` : ""}`;
35
- }
36
- }
37
- function binarySearch(array, targetValue) {
38
- let min = 0;
39
- let max = array.length - 1;
40
- let guess;
41
- while (min <= max) {
42
- guess = Math.floor((max + min) / 2);
43
- if (!array[guess + 1] || array[guess] <= targetValue && array[guess + 1] >= targetValue) {
44
- return guess;
45
- } else if (array[guess] < targetValue && array[guess + 1] < targetValue) {
46
- min = guess + 1;
47
- } else {
48
- max = guess - 1;
49
- }
50
- }
51
- return -1;
52
- }
53
- const schd = (fn) => {
54
- let lastArgs = [];
55
- let frameId = null;
56
- const wrapperFn = (...args) => {
57
- lastArgs = args;
58
- if (frameId) {
59
- return;
60
- }
61
- frameId = requestAnimationFrame(() => {
62
- frameId = null;
63
- fn(...lastArgs);
64
- });
65
- };
66
- wrapperFn.cancel = () => {
67
- if (frameId) {
68
- cancelAnimationFrame(frameId);
69
- }
70
- };
71
- return wrapperFn;
72
- };
73
- function checkIfInteractive(target, rootElement) {
74
- const DISABLED_ELEMENTS = [
75
- "input",
76
- "textarea",
77
- "select",
78
- "option",
79
- "optgroup",
80
- "video",
81
- "audio",
82
- "button",
83
- "a"
84
- ];
85
- const DISABLED_ROLES = [
86
- "button",
87
- "link",
88
- "checkbox",
89
- "radio",
90
- "switch",
91
- "tab"
92
- ];
93
- if (!target || !rootElement)
94
- return false;
95
- while (target !== rootElement) {
96
- if (target.getAttribute("data-movable-handle")) {
97
- return false;
98
- }
99
- if (DISABLED_ELEMENTS.includes(target.tagName.toLowerCase())) {
100
- return true;
101
- }
102
- const role = target.getAttribute("role");
103
- if (role && DISABLED_ROLES.includes(role.toLowerCase())) {
104
- return true;
105
- }
106
- if (target.tagName.toLowerCase() === "label" && target.hasAttribute("for")) {
107
- return true;
108
- }
109
- if (target.tagName)
110
- target = target.parentElement;
111
- }
112
- return false;
113
- }
114
- const AUTOSCROLL_ACTIVE_OFFSET = 200;
115
- const AUTOSCROLL_SPEED_RATIO = 10;
116
- const AUTOSCROLL_DELTA_THRESHOLD = 10;
117
- class List extends React.Component {
118
- constructor(props) {
119
- super(props);
120
- __publicField(this, "listRef", React.createRef());
121
- __publicField(this, "ghostRef", React.createRef());
122
- __publicField(this, "topOffsets", []);
123
- __publicField(this, "itemTranslateOffsets", []);
124
- __publicField(this, "initialYOffset", 0);
125
- __publicField(this, "lastScroll", 0);
126
- __publicField(this, "lastYOffset", 0);
127
- __publicField(this, "lastListYOffset", 0);
128
- __publicField(this, "dropTimeout");
129
- __publicField(this, "needle", -1);
130
- __publicField(this, "afterIndex", -2);
131
- __publicField(this, "state", {
132
- itemDragged: -1,
133
- itemDraggedOutOfBounds: -1,
134
- selectedItem: -1,
135
- initialX: 0,
136
- initialY: 0,
137
- targetX: 0,
138
- targetY: 0,
139
- targetHeight: 0,
140
- targetWidth: 0,
141
- liveText: "",
142
- scrollingSpeed: 0,
143
- scrollWindow: false
144
- });
145
- __publicField(this, "schdOnMouseMove");
146
- __publicField(this, "schdOnTouchMove");
147
- __publicField(this, "schdOnEnd");
148
- __publicField(this, "doScrolling", () => {
149
- const { scrollingSpeed, scrollWindow } = this.state;
150
- const listEl = this.listRef.current;
151
- window.requestAnimationFrame(() => {
152
- if (scrollWindow) {
153
- window.scrollTo(window.pageXOffset, window.pageYOffset + scrollingSpeed * 1.5);
154
- } else {
155
- listEl.scrollTop += scrollingSpeed;
156
- }
157
- if (scrollingSpeed !== 0) {
158
- this.doScrolling();
159
- }
160
- });
161
- });
162
- __publicField(this, "getChildren", () => {
163
- if (this.listRef && this.listRef.current) {
164
- return Array.from(this.listRef.current.children);
165
- }
166
- console.warn("No items found in the List container. Did you forget to pass & spread the `props` param in renderList?");
167
- return [];
168
- });
169
- __publicField(this, "calculateOffsets", () => {
170
- this.topOffsets = this.getChildren().map((item) => item.getBoundingClientRect().top);
171
- this.itemTranslateOffsets = this.getChildren().map((item) => getTranslateOffset(item));
172
- });
173
- __publicField(this, "getTargetIndex", (e) => {
174
- return this.getChildren().findIndex((child) => child === e.target || child.contains(e.target));
175
- });
176
- __publicField(this, "onMouseOrTouchStart", (e) => {
177
- if (this.dropTimeout && this.state.itemDragged > -1) {
178
- window.clearTimeout(this.dropTimeout);
179
- this.finishDrop();
180
- }
181
- const isTouch = isTouchEvent(e);
182
- if (!isTouch && e.button !== 0)
183
- return;
184
- const index = this.getTargetIndex(e);
185
- if (index === -1 || this.props.disabled || // @ts-ignore
186
- this.props.values[index] && this.props.values[index].disabled) {
187
- if (this.state.selectedItem !== -1) {
188
- this.setState({ selectedItem: -1 });
189
- this.finishDrop();
190
- }
191
- return;
192
- }
193
- const listItemTouched = this.getChildren()[index];
194
- const handle = listItemTouched.querySelector("[data-movable-handle]");
195
- if (handle && !handle.contains(e.target)) {
196
- return;
197
- }
198
- if (checkIfInteractive(e.target, listItemTouched)) {
199
- return;
200
- }
201
- e.preventDefault();
202
- this.props.beforeDrag && this.props.beforeDrag({
203
- elements: this.getChildren(),
204
- index
205
- });
206
- if (isTouch) {
207
- const opts = { passive: false };
208
- listItemTouched.style.touchAction = "none";
209
- document.addEventListener("touchend", this.schdOnEnd, opts);
210
- document.addEventListener("touchmove", this.schdOnTouchMove, opts);
211
- document.addEventListener("touchcancel", this.schdOnEnd, opts);
212
- } else {
213
- document.addEventListener("mousemove", this.schdOnMouseMove);
214
- document.addEventListener("mouseup", this.schdOnEnd);
215
- const listItemDragged = this.getChildren()[this.state.itemDragged];
216
- if (listItemDragged && listItemDragged.style) {
217
- listItemDragged.style.touchAction = "";
218
- }
219
- }
220
- this.onStart(listItemTouched, isTouch ? e.touches[0].clientX : e.clientX, isTouch ? e.touches[0].clientY : e.clientY, index);
221
- });
222
- __publicField(this, "getYOffset", () => {
223
- const listScroll = this.listRef.current ? this.listRef.current.scrollTop : 0;
224
- return window.pageYOffset + listScroll;
225
- });
226
- __publicField(this, "onStart", (target, clientX, clientY, index) => {
227
- if (this.state.selectedItem > -1) {
228
- this.setState({ selectedItem: -1 });
229
- this.needle = -1;
230
- }
231
- const targetRect = target.getBoundingClientRect();
232
- const targetStyles = window.getComputedStyle(target);
233
- this.calculateOffsets();
234
- this.initialYOffset = this.getYOffset();
235
- this.lastYOffset = window.pageYOffset;
236
- this.lastListYOffset = this.listRef.current.scrollTop;
237
- this.setState({
238
- itemDragged: index,
239
- targetX: targetRect.left - parseInt(targetStyles["margin-left"], 10),
240
- targetY: targetRect.top - parseInt(targetStyles["margin-top"], 10),
241
- targetHeight: targetRect.height,
242
- targetWidth: targetRect.width,
243
- initialX: clientX,
244
- initialY: clientY
245
- });
246
- });
247
- __publicField(this, "onMouseMove", (e) => {
248
- e.cancelable && e.preventDefault();
249
- this.onMove(e.clientX, e.clientY);
250
- });
251
- __publicField(this, "onTouchMove", (e) => {
252
- e.cancelable && e.preventDefault();
253
- this.onMove(e.touches[0].clientX, e.touches[0].clientY);
254
- });
255
- __publicField(this, "onWheel", (e) => {
256
- if (this.state.itemDragged < 0)
257
- return;
258
- this.lastScroll = this.listRef.current.scrollTop += e.deltaY;
259
- this.moveOtherItems();
260
- });
261
- __publicField(this, "onMove", (clientX, clientY) => {
262
- if (this.state.itemDragged === -1)
263
- return null;
264
- transformItem(this.ghostRef.current, clientY - this.state.initialY, this.props.lockVertically ? 0 : clientX - this.state.initialX);
265
- this.autoScrolling(clientY, clientY - this.state.initialY);
266
- this.moveOtherItems();
267
- });
268
- __publicField(this, "moveOtherItems", () => {
269
- const targetRect = this.ghostRef.current.getBoundingClientRect();
270
- const itemVerticalCenter = targetRect.top + targetRect.height / 2;
271
- const offset = getTranslateOffset(this.getChildren()[this.state.itemDragged]);
272
- const currentYOffset = this.getYOffset();
273
- if (this.initialYOffset !== currentYOffset) {
274
- this.topOffsets = this.topOffsets.map((offset2) => offset2 - (currentYOffset - this.initialYOffset));
275
- this.initialYOffset = currentYOffset;
276
- }
277
- if (this.isDraggedItemOutOfBounds() && this.props.removableByMove) {
278
- this.afterIndex = this.topOffsets.length + 1;
279
- } else {
280
- this.afterIndex = binarySearch(this.topOffsets, itemVerticalCenter);
281
- }
282
- this.animateItems(this.afterIndex === -1 ? 0 : this.afterIndex, this.state.itemDragged, offset);
283
- });
284
- __publicField(this, "autoScrolling", (clientY, delta) => {
285
- const { top, bottom, height } = this.listRef.current.getBoundingClientRect();
286
- const viewportHeight = window.innerHeight || document.documentElement.clientHeight;
287
- if (bottom > viewportHeight && viewportHeight - clientY < AUTOSCROLL_ACTIVE_OFFSET && delta > AUTOSCROLL_DELTA_THRESHOLD) {
288
- this.setState({
289
- scrollingSpeed: Math.min(Math.round((AUTOSCROLL_ACTIVE_OFFSET - (viewportHeight - clientY)) / AUTOSCROLL_SPEED_RATIO), Math.round((delta - AUTOSCROLL_DELTA_THRESHOLD) / AUTOSCROLL_SPEED_RATIO)),
290
- scrollWindow: true
291
- });
292
- } else if (top < 0 && clientY < AUTOSCROLL_ACTIVE_OFFSET && delta < -10) {
293
- this.setState({
294
- scrollingSpeed: Math.max(Math.round((AUTOSCROLL_ACTIVE_OFFSET - clientY) / -10), Math.round((delta + AUTOSCROLL_DELTA_THRESHOLD) / AUTOSCROLL_SPEED_RATIO)),
295
- scrollWindow: true
296
- });
297
- } else {
298
- if (this.state.scrollWindow && this.state.scrollingSpeed !== 0) {
299
- this.setState({ scrollingSpeed: 0, scrollWindow: false });
300
- }
301
- if (height + 20 < this.listRef.current.scrollHeight) {
302
- let scrollingSpeed = 0;
303
- if (clientY - top < AUTOSCROLL_ACTIVE_OFFSET && delta < -10) {
304
- scrollingSpeed = Math.max(Math.round((AUTOSCROLL_ACTIVE_OFFSET - (clientY - top)) / -10), Math.round((delta + AUTOSCROLL_DELTA_THRESHOLD) / AUTOSCROLL_SPEED_RATIO));
305
- } else if (bottom - clientY < AUTOSCROLL_ACTIVE_OFFSET && delta > AUTOSCROLL_DELTA_THRESHOLD) {
306
- scrollingSpeed = Math.min(Math.round((AUTOSCROLL_ACTIVE_OFFSET - (bottom - clientY)) / AUTOSCROLL_SPEED_RATIO), Math.round((delta - AUTOSCROLL_DELTA_THRESHOLD) / AUTOSCROLL_SPEED_RATIO));
307
- }
308
- if (this.state.scrollingSpeed !== scrollingSpeed) {
309
- this.setState({ scrollingSpeed });
310
- }
311
- }
312
- }
313
- });
314
- __publicField(this, "animateItems", (needle, movedItem, offset, animateMovedItem = false) => {
315
- this.getChildren().forEach((item, i) => {
316
- setItemTransition(item, this.props.transitionDuration);
317
- if (movedItem === i && animateMovedItem) {
318
- if (movedItem === needle) {
319
- return transformItem(item, null);
320
- }
321
- transformItem(item, movedItem < needle ? this.itemTranslateOffsets.slice(movedItem + 1, needle + 1).reduce((a, b) => a + b, 0) : this.itemTranslateOffsets.slice(needle, movedItem).reduce((a, b) => a + b, 0) * -1);
322
- } else if (movedItem < needle && i > movedItem && i <= needle) {
323
- transformItem(item, -offset);
324
- } else if (i < movedItem && movedItem > needle && i >= needle) {
325
- transformItem(item, offset);
326
- } else {
327
- transformItem(item, null);
328
- }
329
- });
330
- });
331
- __publicField(this, "isDraggedItemOutOfBounds", () => {
332
- const initialRect = this.getChildren()[this.state.itemDragged].getBoundingClientRect();
333
- const targetRect = this.ghostRef.current.getBoundingClientRect();
334
- if (Math.abs(initialRect.left - targetRect.left) > targetRect.width) {
335
- if (this.state.itemDraggedOutOfBounds === -1) {
336
- this.setState({ itemDraggedOutOfBounds: this.state.itemDragged });
337
- }
338
- return true;
339
- }
340
- if (this.state.itemDraggedOutOfBounds > -1) {
341
- this.setState({ itemDraggedOutOfBounds: -1 });
342
- }
343
- return false;
344
- });
345
- __publicField(this, "onEnd", (e) => {
346
- e.cancelable && e.preventDefault();
347
- document.removeEventListener("mousemove", this.schdOnMouseMove);
348
- document.removeEventListener("touchmove", this.schdOnTouchMove);
349
- document.removeEventListener("mouseup", this.schdOnEnd);
350
- document.removeEventListener("touchup", this.schdOnEnd);
351
- document.removeEventListener("touchcancel", this.schdOnEnd);
352
- const removeItem = this.props.removableByMove && this.isDraggedItemOutOfBounds();
353
- if (!removeItem && this.props.transitionDuration > 0 && this.afterIndex !== -2) {
354
- schd(() => {
355
- setItemTransition(this.ghostRef.current, this.props.transitionDuration, "cubic-bezier(.2,1,.1,1)");
356
- if (this.afterIndex < 1 && this.state.itemDragged === 0) {
357
- transformItem(this.ghostRef.current, 0, 0);
358
- } else {
359
- transformItem(
360
- this.ghostRef.current,
361
- // compensate window scroll
362
- -(window.pageYOffset - this.lastYOffset) + // compensate container scroll
363
- -(this.listRef.current.scrollTop - this.lastListYOffset) + (this.state.itemDragged < this.afterIndex ? this.itemTranslateOffsets.slice(this.state.itemDragged + 1, this.afterIndex + 1).reduce((a, b) => a + b, 0) : this.itemTranslateOffsets.slice(this.afterIndex < 0 ? 0 : this.afterIndex, this.state.itemDragged).reduce((a, b) => a + b, 0) * -1),
364
- 0
365
- );
366
- }
367
- })();
368
- }
369
- this.dropTimeout = window.setTimeout(this.finishDrop, removeItem || this.afterIndex === -2 ? 0 : this.props.transitionDuration);
370
- });
371
- __publicField(this, "finishDrop", () => {
372
- const removeItem = this.props.removableByMove && this.isDraggedItemOutOfBounds();
373
- const oldIndex = this.state.itemDragged;
374
- const hasChanged = this.afterIndex > -2 && oldIndex !== this.afterIndex;
375
- const newIndex = hasChanged ? removeItem ? -1 : Math.max(this.afterIndex, 0) : oldIndex;
376
- if (removeItem || hasChanged) {
377
- this.props.onChange({
378
- oldIndex,
379
- newIndex,
380
- targetRect: this.ghostRef.current.getBoundingClientRect()
381
- });
382
- }
383
- this.props.afterDrag && this.props.afterDrag({
384
- elements: this.getChildren(),
385
- oldIndex,
386
- newIndex
387
- });
388
- this.getChildren().forEach((item) => {
389
- setItemTransition(item, 0);
390
- transformItem(item, null);
391
- item.style.touchAction = "";
392
- });
393
- this.setState({ itemDragged: -1, scrollingSpeed: 0 });
394
- this.afterIndex = -2;
395
- if (this.lastScroll > 0) {
396
- this.listRef.current.scrollTop = this.lastScroll;
397
- this.lastScroll = 0;
398
- }
399
- });
400
- __publicField(this, "onKeyDown", (e) => {
401
- const selectedItem = this.state.selectedItem;
402
- const index = this.getTargetIndex(e);
403
- if (checkIfInteractive(e.target, e.currentTarget)) {
404
- return;
405
- }
406
- if (index === -1)
407
- return;
408
- if (e.key === " ") {
409
- e.preventDefault();
410
- if (selectedItem === index) {
411
- if (selectedItem !== this.needle) {
412
- this.getChildren().forEach((item) => {
413
- setItemTransition(item, 0);
414
- transformItem(item, null);
415
- });
416
- this.props.onChange({
417
- oldIndex: selectedItem,
418
- newIndex: this.needle,
419
- targetRect: this.getChildren()[this.needle].getBoundingClientRect()
420
- });
421
- this.getChildren()[this.needle].focus();
422
- }
423
- this.setState({
424
- selectedItem: -1,
425
- liveText: this.props.voiceover.dropped(selectedItem + 1, this.needle + 1)
426
- });
427
- this.needle = -1;
428
- } else {
429
- this.setState({
430
- selectedItem: index,
431
- liveText: this.props.voiceover.lifted(index + 1)
432
- });
433
- this.needle = index;
434
- this.calculateOffsets();
435
- }
436
- }
437
- if ((e.key === "ArrowDown" || e.key === "j") && selectedItem > -1 && this.needle < this.props.values.length - 1) {
438
- e.preventDefault();
439
- const offset = getTranslateOffset(this.getChildren()[selectedItem]);
440
- this.needle++;
441
- this.animateItems(this.needle, selectedItem, offset, true);
442
- this.setState({
443
- liveText: this.props.voiceover.moved(this.needle + 1, false)
444
- });
445
- }
446
- if ((e.key === "ArrowUp" || e.key === "k") && selectedItem > -1 && this.needle > 0) {
447
- e.preventDefault();
448
- const offset = getTranslateOffset(this.getChildren()[selectedItem]);
449
- this.needle--;
450
- this.animateItems(this.needle, selectedItem, offset, true);
451
- this.setState({
452
- liveText: this.props.voiceover.moved(this.needle + 1, true)
453
- });
454
- }
455
- if (e.key === "Escape" && selectedItem > -1) {
456
- this.getChildren().forEach((item) => {
457
- setItemTransition(item, 0);
458
- transformItem(item, null);
459
- });
460
- this.setState({
461
- selectedItem: -1,
462
- liveText: this.props.voiceover.canceled(selectedItem + 1)
463
- });
464
- this.needle = -1;
465
- }
466
- if ((e.key === "Tab" || e.key === "Enter") && selectedItem > -1) {
467
- e.preventDefault();
468
- }
469
- });
470
- this.schdOnMouseMove = schd(this.onMouseMove);
471
- this.schdOnTouchMove = schd(this.onTouchMove);
472
- this.schdOnEnd = schd(this.onEnd);
473
- }
474
- componentDidMount() {
475
- this.calculateOffsets();
476
- document.addEventListener("touchstart", this.onMouseOrTouchStart, {
477
- passive: false,
478
- capture: false
479
- });
480
- document.addEventListener("mousedown", this.onMouseOrTouchStart);
481
- }
482
- componentDidUpdate(_prevProps, prevState) {
483
- if (prevState.scrollingSpeed !== this.state.scrollingSpeed && prevState.scrollingSpeed === 0) {
484
- this.doScrolling();
485
- }
486
- }
487
- componentWillUnmount() {
488
- document.removeEventListener("touchstart", this.onMouseOrTouchStart);
489
- document.removeEventListener("mousedown", this.onMouseOrTouchStart);
490
- if (this.dropTimeout) {
491
- window.clearTimeout(this.dropTimeout);
492
- }
493
- this.schdOnMouseMove.cancel();
494
- this.schdOnTouchMove.cancel();
495
- this.schdOnEnd.cancel();
496
- }
497
- render() {
498
- const baseStyle = {
499
- userSelect: "none",
500
- WebkitUserSelect: "none",
501
- MozUserSelect: "none",
502
- msUserSelect: "none",
503
- boxSizing: "border-box",
504
- position: "relative"
505
- };
506
- const ghostStyle = {
507
- ...baseStyle,
508
- top: this.state.targetY,
509
- left: this.state.targetX,
510
- width: this.state.targetWidth,
511
- height: this.state.targetHeight,
512
- position: "fixed",
513
- marginTop: 0
514
- };
515
- return React.createElement(
516
- React.Fragment,
517
- null,
518
- this.props.renderList({
519
- children: this.props.values.map((value, index) => {
520
- const isHidden = index === this.state.itemDragged;
521
- const isSelected = index === this.state.selectedItem;
522
- const isDisabled = Boolean(this.props.disabled || this.props.values[index] && typeof this.props.values[index] === "object" && // @ts-expect-error value doesn't necessarily have a `disabled` property
523
- this.props.values[index].disabled);
524
- const props = {
525
- key: index,
526
- tabIndex: isDisabled ? -1 : 0,
527
- "aria-roledescription": this.props.voiceover.item(index + 1),
528
- onKeyDown: this.onKeyDown,
529
- style: {
530
- ...baseStyle,
531
- visibility: isHidden ? "hidden" : void 0,
532
- zIndex: isSelected ? 5e3 : 0
533
- }
534
- };
535
- return this.props.renderItem({
536
- value,
537
- props,
538
- index,
539
- isDragged: false,
540
- isSelected,
541
- isOutOfBounds: false,
542
- isDisabled
543
- });
544
- }),
545
- isDragged: this.state.itemDragged > -1,
546
- props: {
547
- ref: this.listRef
548
- }
549
- }),
550
- this.state.itemDragged > -1 && reactDomExports.createPortal(this.props.renderItem({
551
- value: this.props.values[this.state.itemDragged],
552
- props: {
553
- ref: this.ghostRef,
554
- style: ghostStyle,
555
- onWheel: this.onWheel
556
- },
557
- index: this.state.itemDragged,
558
- isDragged: true,
559
- isSelected: false,
560
- isDisabled: false,
561
- isOutOfBounds: this.state.itemDraggedOutOfBounds > -1
562
- }), this.props.container || document.body),
563
- React.createElement("div", { "aria-live": "assertive", role: "log", "aria-atomic": "true", style: {
564
- position: "absolute",
565
- width: "1px",
566
- height: "1px",
567
- margin: "-1px",
568
- border: "0px",
569
- padding: "0px",
570
- overflow: "hidden",
571
- clip: "rect(0px, 0px, 0px, 0px)",
572
- clipPath: "inset(100%)"
573
- } }, this.state.liveText)
574
- );
575
- }
576
- }
577
- __publicField(List, "defaultProps", {
578
- transitionDuration: 300,
579
- lockVertically: false,
580
- removableByMove: false,
581
- voiceover: {
582
- item: (position) => `You are currently at a draggable item at position ${position}. Press space bar to lift.`,
583
- lifted: (position) => `You have lifted item at position ${position}. Press j to move down, k to move up, space bar to drop and escape to cancel.`,
584
- moved: (position, up) => `You have moved the lifted item ${up ? "up" : "down"} to position ${position}. Press j to move down, k to move up, space bar to drop and escape to cancel.`,
585
- dropped: (from, to) => `You have dropped the item. It has moved from position ${from} to ${to}.`,
586
- canceled: (position) => `You have cancelled the movement. The item has returned to its starting position of ${position}.`
587
- }
588
- });
589
- export {
590
- List as L,
591
- arrayRemove as a,
592
- arrayMove as b
593
- };