rsuite 5.79.0 → 5.79.1

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [5.79.1](https://github.com/rsuite/rsuite/compare/v5.79.0...v5.79.1) (2025-04-03)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **List:** fix sorting issue on mobile devices ([#4215](https://github.com/rsuite/rsuite/issues/4215)) ([5b74d8b](https://github.com/rsuite/rsuite/commit/5b74d8b6e09e3d662e63f0c437a28585f2535a94))
7
+
8
+
9
+
1
10
  # [5.79.0](https://github.com/rsuite/rsuite/compare/v5.78.1...v5.79.0) (2025-03-26)
2
11
 
3
12
 
package/cjs/List/List.js CHANGED
@@ -65,7 +65,9 @@ var List = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
65
65
  register = _useSortHelper.register,
66
66
  sorting = _useSortHelper.sorting,
67
67
  handleEnd = _useSortHelper.handleEnd,
68
- handleStart = _useSortHelper.handleStart;
68
+ handleStart = _useSortHelper.handleStart,
69
+ handleTouchStart = _useSortHelper.handleTouchStart,
70
+ handleTouchEnd = _useSortHelper.handleTouchEnd;
69
71
  var classes = merge(className, withClassPrefix({
70
72
  bordered: bordered,
71
73
  sortable: sortable,
@@ -86,7 +88,9 @@ var List = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
86
88
  ref: (0, _utils.mergeRefs)(containerRef, ref),
87
89
  className: classes,
88
90
  onMouseDown: sortable ? handleStart : undefined,
89
- onMouseUp: sortable ? handleEnd : undefined
91
+ onMouseUp: sortable ? handleEnd : undefined,
92
+ onTouchStart: sortable ? handleTouchStart : undefined,
93
+ onTouchEnd: sortable ? handleTouchEnd : undefined
90
94
  }), /*#__PURE__*/_react.default.createElement(_ListContext.default.Provider, {
91
95
  value: contextValue
92
96
  }, children));
@@ -1,4 +1,4 @@
1
- import { MouseEventHandler } from 'react';
1
+ import { MouseEventHandler, TouchEventHandler } from 'react';
2
2
  import { Collection, ManagedItem } from './useManager';
3
3
  export interface MovedItemInfo {
4
4
  collection: Collection;
@@ -10,14 +10,16 @@ export type SortConfig = {
10
10
  autoScroll?: boolean;
11
11
  pressDelay?: number;
12
12
  transitionDuration?: number;
13
- onSortStart?(payload?: MovedItemInfo, event?: MouseEvent): void;
14
- onSortMove?(payload?: MovedItemInfo, event?: MouseEvent): void;
15
- onSortEnd?(payload?: MovedItemInfo, event?: MouseEvent): void;
16
- onSort?(payload?: MovedItemInfo, event?: MouseEvent): void;
13
+ onSortStart?(payload?: MovedItemInfo, event?: MouseEvent | TouchEvent): void;
14
+ onSortMove?(payload?: MovedItemInfo, event?: MouseEvent | TouchEvent): void;
15
+ onSortEnd?(payload?: MovedItemInfo, event?: MouseEvent | TouchEvent): void;
16
+ onSort?(payload?: MovedItemInfo, event?: MouseEvent | TouchEvent): void;
17
17
  };
18
18
  declare const useSortHelper: (config: SortConfig) => {
19
19
  handleStart: MouseEventHandler<Element>;
20
20
  handleEnd: MouseEventHandler<Element>;
21
+ handleTouchStart: TouchEventHandler<Element>;
22
+ handleTouchEnd: TouchEventHandler<Element>;
21
23
  containerRef: import("react").RefObject<HTMLDivElement>;
22
24
  sorting: boolean;
23
25
  register: (item: ManagedItem) => {
@@ -37,7 +37,7 @@ var useSortHelper = function useSortHelper(config) {
37
37
  /**
38
38
  * start dragging
39
39
  * */
40
- var handlePress = (0, _react.useCallback)(function (mouseDownEvent, _targetNode, curManagedItem) {
40
+ var handlePress = (0, _react.useCallback)(function (event, _targetNode, curManagedItem) {
41
41
  var _curManagedItem$info$, _curManagedItem$info$2, _activeNodeHelper;
42
42
  if (!isMounted()) return;
43
43
  // data
@@ -51,6 +51,13 @@ var useSortHelper = function useSortHelper(config) {
51
51
  };
52
52
  var animatedNodesOffset = []; // all list item offset
53
53
 
54
+ // Get initial position from event
55
+ var isTouchEvent = 'touches' in event;
56
+ var initialPosition = {
57
+ pageX: isTouchEvent ? event.touches[0].pageX : event.pageX,
58
+ pageY: isTouchEvent ? event.touches[0].pageY : event.pageY
59
+ };
60
+
54
61
  // init scroller
55
62
  var scrollContainer = (0, _utils.getScrollingParent)(containerElement) || containerElement;
56
63
  var initScroll = {
@@ -92,17 +99,31 @@ var useSortHelper = function useSortHelper(config) {
92
99
  y: 0
93
100
  });
94
101
  };
95
- var sortMouseMoveListener = (0, _on.default)(window, 'mousemove', function (mouseOverEvent) {
102
+
103
+ // Common handler for both mouse and touch move events
104
+ var handleSortMove = function handleSortMove(moveEvent) {
105
+ // Prevent default to stop page scrolling during touch drag
106
+ if ('touches' in moveEvent) {
107
+ moveEvent.preventDefault();
108
+ }
109
+
110
+ // Get current position from event
111
+ var isTouchMoveEvent = 'touches' in moveEvent;
112
+ var currentPosition = {
113
+ pageX: isTouchMoveEvent ? moveEvent.touches[0].pageX : moveEvent.pageX,
114
+ pageY: isTouchMoveEvent ? moveEvent.touches[0].pageY : moveEvent.pageY
115
+ };
116
+
96
117
  // Update helper position
97
118
  var offset = {
98
- x: (mouseOverEvent === null || mouseOverEvent === void 0 ? void 0 : mouseOverEvent.pageX) || 0,
99
- y: (mouseOverEvent === null || mouseOverEvent === void 0 ? void 0 : mouseOverEvent.pageY) || 0
119
+ x: currentPosition.pageX,
120
+ y: currentPosition.pageY
100
121
  };
101
122
  var containerScrollDelta = getContainerScrollDelta();
102
123
  var containerBoundingRect = scrollContainer.getBoundingClientRect();
103
124
  activeNodeHolderTranslate = {
104
- x: offset.x - mouseDownEvent.pageX,
105
- y: offset.y - mouseDownEvent.pageY
125
+ x: offset.x - initialPosition.pageX,
126
+ y: offset.y - initialPosition.pageY
106
127
  };
107
128
  if (activeNodeHelper) {
108
129
  (0, _utils.setTranslate3d)(activeNodeHelper, activeNodeHolderTranslate);
@@ -202,14 +223,22 @@ var useSortHelper = function useSortHelper(config) {
202
223
  node: activeNode,
203
224
  oldIndex: activeNodeOldIndex,
204
225
  newIndex: activeNodeNextIndex
205
- }, mouseOverEvent);
206
- }, {
207
- passive: false
208
- });
209
- var sortMouseEndListener = (0, _on.default)(window, 'mouseup', function (event) {
226
+ }, moveEvent);
227
+ };
228
+
229
+ // Common handler for both mouse and touch end events
230
+ var handleSortEnd = function handleSortEnd(endEvent) {
231
+ var _sortTouchMoveListene, _sortTouchEndListener;
210
232
  // Remove the event listeners
211
233
  sortMouseMoveListener.off();
212
234
  sortMouseEndListener.off();
235
+ (_sortTouchMoveListene = sortTouchMoveListener) === null || _sortTouchMoveListene === void 0 || _sortTouchMoveListene.off();
236
+ (_sortTouchEndListener = sortTouchEndListener) === null || _sortTouchEndListener === void 0 || _sortTouchEndListener.off();
237
+
238
+ // Enable page scrolling again
239
+ if (document.body.style.overflow === 'hidden') {
240
+ document.body.style.overflow = '';
241
+ }
213
242
  var holderTranslate = getHolderTranslate();
214
243
  var containerScrollDelta = getContainerScrollDelta();
215
244
  if (activeNodeHelper) {
@@ -256,12 +285,33 @@ var useSortHelper = function useSortHelper(config) {
256
285
  newIndex: activeNodeNextIndex,
257
286
  oldIndex: activeNodeOldIndex
258
287
  };
259
- onSortEnd === null || onSortEnd === void 0 || onSortEnd(callbackPayload, event);
260
- onSort === null || onSort === void 0 || onSort(callbackPayload, event);
288
+ onSortEnd === null || onSortEnd === void 0 || onSortEnd(callbackPayload, endEvent);
289
+ onSort === null || onSort === void 0 || onSort(callbackPayload, endEvent);
261
290
  }, transitionDuration);
262
- }, {
291
+ };
292
+
293
+ // Set up mouse event listeners
294
+ var sortMouseMoveListener = (0, _on.default)(window, 'mousemove', handleSortMove, {
295
+ passive: false
296
+ });
297
+ var sortMouseEndListener = (0, _on.default)(window, 'mouseup', handleSortEnd, {
263
298
  passive: false
264
299
  });
300
+
301
+ // Set up touch event listeners
302
+ var sortTouchMoveListener;
303
+ var sortTouchEndListener;
304
+ if (isTouchEvent) {
305
+ // Disable page scrolling during touch drag
306
+ document.body.style.overflow = 'hidden';
307
+ sortTouchMoveListener = (0, _on.default)(window, 'touchmove', handleSortMove, {
308
+ passive: false
309
+ } // Important: passive: false allows preventDefault() to work
310
+ );
311
+ sortTouchEndListener = (0, _on.default)(window, 'touchend', handleSortEnd, {
312
+ passive: false
313
+ });
314
+ }
265
315
  setSorting(true);
266
316
  // start callback
267
317
  onSortStart === null || onSortStart === void 0 || onSortStart({
@@ -269,7 +319,7 @@ var useSortHelper = function useSortHelper(config) {
269
319
  node: activeNode,
270
320
  oldIndex: activeNodeOldIndex,
271
321
  newIndex: activeNodeNextIndex
272
- }, mouseDownEvent.nativeEvent);
322
+ }, event);
273
323
  }, [autoScroll, getOrderedItems, isMounted, onSort, onSortEnd, onSortMove, onSortStart, transitionDuration]);
274
324
 
275
325
  /**
@@ -297,15 +347,58 @@ var useSortHelper = function useSortHelper(config) {
297
347
  }
298
348
  }, [getManagedItem, handlePress, pressDelay, sorting]);
299
349
 
350
+ /**
351
+ * Handle touch start for mobile devices
352
+ */
353
+ var handleTouchStart = (0, _react.useCallback)(function (touchStartEvent) {
354
+ var triggeredNode = touchStartEvent.target;
355
+ var targetNode = (0, _utils.closestNode)(triggeredNode, function (el) {
356
+ return Boolean(getManagedItem(el));
357
+ });
358
+ var curManagedItem = getManagedItem(targetNode);
359
+ if (
360
+ // is list item
361
+ Boolean(curManagedItem) && !curManagedItem.info.disabled &&
362
+ // is not sorting
363
+ !sorting &&
364
+ // is valid node
365
+ targetNode instanceof HTMLElement &&
366
+ // excludes interactive elements
367
+ !targetNode.contains((0, _utils.closestNode)(triggeredNode, _utils.isContainInteractiveElement))) {
368
+ // Prevent scrolling while sorting
369
+ touchStartEvent.preventDefault();
370
+ pressTimer.current = setTimeout(handlePress, pressDelay, touchStartEvent, targetNode, curManagedItem);
371
+ }
372
+ }, [getManagedItem, handlePress, pressDelay, sorting]);
373
+
300
374
  /**
301
375
  * Clear timer after drag
302
376
  * */
303
377
  var handleEnd = (0, _react.useCallback)(function () {
304
- return clearTimeout(pressTimer.current);
378
+ clearTimeout(pressTimer.current);
379
+
380
+ // Ensure page scrolling is re-enabled
381
+ if (document.body.style.overflow === 'hidden') {
382
+ document.body.style.overflow = '';
383
+ }
384
+ }, []);
385
+
386
+ /**
387
+ * Clear timer after touch end
388
+ */
389
+ var handleTouchEnd = (0, _react.useCallback)(function () {
390
+ clearTimeout(pressTimer.current);
391
+
392
+ // Ensure page scrolling is re-enabled
393
+ if (document.body.style.overflow === 'hidden') {
394
+ document.body.style.overflow = '';
395
+ }
305
396
  }, []);
306
397
  return {
307
398
  handleStart: handleStart,
308
399
  handleEnd: handleEnd,
400
+ handleTouchStart: handleTouchStart,
401
+ handleTouchEnd: handleTouchEnd,
309
402
  containerRef: containerRef,
310
403
  sorting: sorting,
311
404
  register: listItemRegister
@@ -72,12 +72,20 @@ function getEdgeOffset(node, parent, offset) {
72
72
  return getEdgeOffset(node.parentNode, parent, nodeOffset);
73
73
  }
74
74
  function getScrollingParent(el) {
75
- return closestNode(el, function (el) {
76
- var computedStyle = window.getComputedStyle(el);
77
- var overflowRegex = /(auto|scroll)/;
78
- var properties = ['overflow', 'overflowX', 'overflowY'];
79
- return properties.some(function (property) {
80
- return overflowRegex.test(computedStyle[property]);
75
+ if (!el || typeof window === 'undefined' || !window.getComputedStyle) {
76
+ return null;
77
+ }
78
+ try {
79
+ return closestNode(el, function (el) {
80
+ var computedStyle = window.getComputedStyle(el);
81
+ var overflowRegex = /(auto|scroll)/;
82
+ var properties = ['overflow', 'overflowX', 'overflowY'];
83
+ return properties.some(function (property) {
84
+ return overflowRegex.test(computedStyle[property]);
85
+ });
81
86
  });
82
- });
87
+ } catch (error) {
88
+ // In test environments, errors may occur, so return null
89
+ return null;
90
+ }
83
91
  }
package/dist/rsuite.js CHANGED
@@ -3645,7 +3645,7 @@ eval("\n\nexports.__esModule = true;\nexports.convertSize = void 0;\nvar convert
3645
3645
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3646
3646
 
3647
3647
  "use strict";
3648
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\"));\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _useSortHelper2 = _interopRequireDefault(__webpack_require__(/*! ./helper/useSortHelper */ \"./src/List/helper/useSortHelper.ts\"));\nvar _ListContext = _interopRequireDefault(__webpack_require__(/*! ./ListContext */ \"./src/List/ListContext.tsx\"));\nvar _ListItem = _interopRequireDefault(__webpack_require__(/*! ./ListItem */ \"./src/List/ListItem.tsx\"));\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _propTypes2 = __webpack_require__(/*! ../internals/propTypes */ \"./src/internals/propTypes/index.ts\");\nvar _CustomProvider = __webpack_require__(/*! ../CustomProvider */ \"./src/CustomProvider/index.tsx\");\nvar _excluded = [\"as\", \"autoScroll\", \"bordered\", \"classPrefix\", \"className\", \"children\", \"divider\", \"hover\", \"size\", \"sortable\", \"pressDelay\", \"transitionDuration\", \"onSort\", \"onSortEnd\", \"onSortMove\", \"onSortStart\"];\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/List/List.tsx\",\n _this = void 0;\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\n/**\n * The `List` component is used to specify the layout of the list.\n * @see https://rsuitejs.com/components/list\n */\nvar List = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n var _useCustom = (0, _CustomProvider.useCustom)('List', props),\n propsWithDefaults = _useCustom.propsWithDefaults;\n var _propsWithDefaults$as = propsWithDefaults.as,\n Component = _propsWithDefaults$as === void 0 ? 'div' : _propsWithDefaults$as,\n _propsWithDefaults$au = propsWithDefaults.autoScroll,\n autoScroll = _propsWithDefaults$au === void 0 ? true : _propsWithDefaults$au,\n bordered = propsWithDefaults.bordered,\n _propsWithDefaults$cl = propsWithDefaults.classPrefix,\n classPrefix = _propsWithDefaults$cl === void 0 ? 'list' : _propsWithDefaults$cl,\n className = propsWithDefaults.className,\n children = propsWithDefaults.children,\n _propsWithDefaults$di = propsWithDefaults.divider,\n divider = _propsWithDefaults$di === void 0 ? true : _propsWithDefaults$di,\n hover = propsWithDefaults.hover,\n _propsWithDefaults$si = propsWithDefaults.size,\n size = _propsWithDefaults$si === void 0 ? 'md' : _propsWithDefaults$si,\n sortable = propsWithDefaults.sortable,\n _propsWithDefaults$pr = propsWithDefaults.pressDelay,\n pressDelay = _propsWithDefaults$pr === void 0 ? 0 : _propsWithDefaults$pr,\n _propsWithDefaults$tr = propsWithDefaults.transitionDuration,\n transitionDuration = _propsWithDefaults$tr === void 0 ? 300 : _propsWithDefaults$tr,\n onSort = propsWithDefaults.onSort,\n onSortEnd = propsWithDefaults.onSortEnd,\n onSortMove = propsWithDefaults.onSortMove,\n onSortStart = propsWithDefaults.onSortStart,\n rest = (0, _objectWithoutPropertiesLoose2.default)(propsWithDefaults, _excluded);\n var _useClassNames = (0, _hooks.useClassNames)(classPrefix),\n withClassPrefix = _useClassNames.withClassPrefix,\n merge = _useClassNames.merge;\n var _useSortHelper = (0, _useSortHelper2.default)({\n autoScroll: autoScroll,\n onSort: onSort,\n onSortEnd: onSortEnd,\n onSortMove: onSortMove,\n onSortStart: onSortStart,\n pressDelay: pressDelay,\n transitionDuration: transitionDuration\n }),\n containerRef = _useSortHelper.containerRef,\n register = _useSortHelper.register,\n sorting = _useSortHelper.sorting,\n handleEnd = _useSortHelper.handleEnd,\n handleStart = _useSortHelper.handleStart;\n var classes = merge(className, withClassPrefix({\n bordered: bordered,\n sortable: sortable,\n sorting: sorting,\n hover: hover,\n divider: divider\n }));\n var contextValue = (0, _react.useMemo)(function () {\n return {\n bordered: bordered,\n size: size,\n register: register\n };\n }, [bordered, register, size]);\n return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({\n role: \"list\"\n }, rest, {\n ref: (0, _utils.mergeRefs)(containerRef, ref),\n className: classes,\n onMouseDown: sortable ? handleStart : undefined,\n onMouseUp: sortable ? handleEnd : undefined,\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 92,\n columnNumber: 5\n }\n }), /*#__PURE__*/_react.default.createElement(_ListContext.default.Provider, {\n value: contextValue,\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 100,\n columnNumber: 7\n }\n }, children));\n});\nList.Item = _ListItem.default;\nList.displayName = 'List';\nList.propTypes = {\n className: _propTypes.default.string,\n classPrefix: _propTypes.default.string,\n bordered: _propTypes.default.bool,\n divider: _propTypes.default.bool,\n hover: _propTypes.default.bool,\n sortable: _propTypes.default.bool,\n size: (0, _propTypes2.oneOf)(['lg', 'md', 'sm', 'xs']),\n autoScroll: _propTypes.default.bool,\n pressDelay: _propTypes.default.number,\n transitionDuration: _propTypes.default.number,\n onSortStart: _propTypes.default.func,\n onSortMove: _propTypes.default.func,\n onSortEnd: _propTypes.default.func,\n onSort: _propTypes.default.func\n};\nvar _default = exports[\"default\"] = List;\n\n//# sourceURL=webpack://rsuite/./src/List/List.tsx?");
3648
+ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\"));\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _useSortHelper2 = _interopRequireDefault(__webpack_require__(/*! ./helper/useSortHelper */ \"./src/List/helper/useSortHelper.ts\"));\nvar _ListContext = _interopRequireDefault(__webpack_require__(/*! ./ListContext */ \"./src/List/ListContext.tsx\"));\nvar _ListItem = _interopRequireDefault(__webpack_require__(/*! ./ListItem */ \"./src/List/ListItem.tsx\"));\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _propTypes2 = __webpack_require__(/*! ../internals/propTypes */ \"./src/internals/propTypes/index.ts\");\nvar _CustomProvider = __webpack_require__(/*! ../CustomProvider */ \"./src/CustomProvider/index.tsx\");\nvar _excluded = [\"as\", \"autoScroll\", \"bordered\", \"classPrefix\", \"className\", \"children\", \"divider\", \"hover\", \"size\", \"sortable\", \"pressDelay\", \"transitionDuration\", \"onSort\", \"onSortEnd\", \"onSortMove\", \"onSortStart\"];\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/List/List.tsx\",\n _this = void 0;\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\n/**\n * The `List` component is used to specify the layout of the list.\n * @see https://rsuitejs.com/components/list\n */\nvar List = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n var _useCustom = (0, _CustomProvider.useCustom)('List', props),\n propsWithDefaults = _useCustom.propsWithDefaults;\n var _propsWithDefaults$as = propsWithDefaults.as,\n Component = _propsWithDefaults$as === void 0 ? 'div' : _propsWithDefaults$as,\n _propsWithDefaults$au = propsWithDefaults.autoScroll,\n autoScroll = _propsWithDefaults$au === void 0 ? true : _propsWithDefaults$au,\n bordered = propsWithDefaults.bordered,\n _propsWithDefaults$cl = propsWithDefaults.classPrefix,\n classPrefix = _propsWithDefaults$cl === void 0 ? 'list' : _propsWithDefaults$cl,\n className = propsWithDefaults.className,\n children = propsWithDefaults.children,\n _propsWithDefaults$di = propsWithDefaults.divider,\n divider = _propsWithDefaults$di === void 0 ? true : _propsWithDefaults$di,\n hover = propsWithDefaults.hover,\n _propsWithDefaults$si = propsWithDefaults.size,\n size = _propsWithDefaults$si === void 0 ? 'md' : _propsWithDefaults$si,\n sortable = propsWithDefaults.sortable,\n _propsWithDefaults$pr = propsWithDefaults.pressDelay,\n pressDelay = _propsWithDefaults$pr === void 0 ? 0 : _propsWithDefaults$pr,\n _propsWithDefaults$tr = propsWithDefaults.transitionDuration,\n transitionDuration = _propsWithDefaults$tr === void 0 ? 300 : _propsWithDefaults$tr,\n onSort = propsWithDefaults.onSort,\n onSortEnd = propsWithDefaults.onSortEnd,\n onSortMove = propsWithDefaults.onSortMove,\n onSortStart = propsWithDefaults.onSortStart,\n rest = (0, _objectWithoutPropertiesLoose2.default)(propsWithDefaults, _excluded);\n var _useClassNames = (0, _hooks.useClassNames)(classPrefix),\n withClassPrefix = _useClassNames.withClassPrefix,\n merge = _useClassNames.merge;\n var _useSortHelper = (0, _useSortHelper2.default)({\n autoScroll: autoScroll,\n onSort: onSort,\n onSortEnd: onSortEnd,\n onSortMove: onSortMove,\n onSortStart: onSortStart,\n pressDelay: pressDelay,\n transitionDuration: transitionDuration\n }),\n containerRef = _useSortHelper.containerRef,\n register = _useSortHelper.register,\n sorting = _useSortHelper.sorting,\n handleEnd = _useSortHelper.handleEnd,\n handleStart = _useSortHelper.handleStart,\n handleTouchStart = _useSortHelper.handleTouchStart,\n handleTouchEnd = _useSortHelper.handleTouchEnd;\n var classes = merge(className, withClassPrefix({\n bordered: bordered,\n sortable: sortable,\n sorting: sorting,\n hover: hover,\n divider: divider\n }));\n var contextValue = (0, _react.useMemo)(function () {\n return {\n bordered: bordered,\n size: size,\n register: register\n };\n }, [bordered, register, size]);\n return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({\n role: \"list\"\n }, rest, {\n ref: (0, _utils.mergeRefs)(containerRef, ref),\n className: classes,\n onMouseDown: sortable ? handleStart : undefined,\n onMouseUp: sortable ? handleEnd : undefined,\n onTouchStart: sortable ? handleTouchStart : undefined,\n onTouchEnd: sortable ? handleTouchEnd : undefined,\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 100,\n columnNumber: 5\n }\n }), /*#__PURE__*/_react.default.createElement(_ListContext.default.Provider, {\n value: contextValue,\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 110,\n columnNumber: 7\n }\n }, children));\n});\nList.Item = _ListItem.default;\nList.displayName = 'List';\nList.propTypes = {\n className: _propTypes.default.string,\n classPrefix: _propTypes.default.string,\n bordered: _propTypes.default.bool,\n divider: _propTypes.default.bool,\n hover: _propTypes.default.bool,\n sortable: _propTypes.default.bool,\n size: (0, _propTypes2.oneOf)(['lg', 'md', 'sm', 'xs']),\n autoScroll: _propTypes.default.bool,\n pressDelay: _propTypes.default.number,\n transitionDuration: _propTypes.default.number,\n onSortStart: _propTypes.default.func,\n onSortMove: _propTypes.default.func,\n onSortEnd: _propTypes.default.func,\n onSort: _propTypes.default.func\n};\nvar _default = exports[\"default\"] = List;\n\n//# sourceURL=webpack://rsuite/./src/List/List.tsx?");
3649
3649
 
3650
3650
  /***/ }),
3651
3651
 
@@ -3700,7 +3700,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
3700
3700
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3701
3701
 
3702
3702
  "use strict";
3703
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _on = _interopRequireDefault(__webpack_require__(/*! dom-lib/on */ \"./node_modules/dom-lib/esm/on.js\"));\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _AutoScroller = _interopRequireDefault(__webpack_require__(/*! ./AutoScroller */ \"./src/List/helper/AutoScroller.ts\"));\nvar _utils = __webpack_require__(/*! ./utils */ \"./src/List/helper/utils.ts\");\nvar _hooks = __webpack_require__(/*! ../../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _useManager2 = _interopRequireDefault(__webpack_require__(/*! ./useManager */ \"./src/List/helper/useManager.ts\"));\nfunction _createForOfIteratorHelperLoose(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar helperElementClass = 'rs-list-item-helper';\nvar holderElementClass = 'rs-list-item-holder';\nvar useSortHelper = function useSortHelper(config) {\n var autoScroll = config.autoScroll,\n pressDelay = config.pressDelay,\n transitionDuration = config.transitionDuration,\n onSort = config.onSort,\n onSortEnd = config.onSortEnd,\n onSortMove = config.onSortMove,\n onSortStart = config.onSortStart;\n var _useState = (0, _react.useState)(false),\n sorting = _useState[0],\n setSorting = _useState[1];\n var containerRef = (0, _react.useRef)(null);\n var pressTimer = (0, _react.useRef)();\n var _useManager = (0, _useManager2.default)(),\n listItemRegister = _useManager.listItemRegister,\n getManagedItem = _useManager.getManagedItem,\n getOrderedItems = _useManager.getOrderedItems;\n var isMounted = (0, _hooks.useIsMounted)();\n\n /**\n * start dragging\n * */\n var handlePress = (0, _react.useCallback)(function (mouseDownEvent, _targetNode, curManagedItem) {\n var _curManagedItem$info$, _curManagedItem$info$2, _activeNodeHelper;\n if (!isMounted()) return;\n // data\n var containerElement = containerRef.current;\n var activeNode = curManagedItem.node;\n var activeNodeOldIndex = (_curManagedItem$info$ = curManagedItem.info.index) !== null && _curManagedItem$info$ !== void 0 ? _curManagedItem$info$ : 0;\n var activeNodeNextIndex = (_curManagedItem$info$2 = curManagedItem.info.index) !== null && _curManagedItem$info$2 !== void 0 ? _curManagedItem$info$2 : 0;\n var activeNodeHolderTranslate = {\n x: 0,\n y: 0\n };\n var animatedNodesOffset = []; // all list item offset\n\n // init scroller\n var scrollContainer = (0, _utils.getScrollingParent)(containerElement) || containerElement;\n var initScroll = {\n x: scrollContainer.scrollLeft,\n y: scrollContainer.scrollTop\n };\n var autoScroller = new _AutoScroller.default(scrollContainer, function (offset) {\n activeNodeHolderTranslate.x += offset.left;\n activeNodeHolderTranslate.y += offset.top;\n });\n var activeNodeBoundingClientRect = activeNode.getBoundingClientRect();\n var activeNodeOffsetEdge = (0, _utils.getEdgeOffset)(activeNode, containerElement);\n var activeNodeStyle = getComputedStyle(activeNode);\n var activeNodeHelper = activeNode.cloneNode(true);\n (_activeNodeHelper = activeNodeHelper) === null || _activeNodeHelper === void 0 || _activeNodeHelper.classList.add(helperElementClass);\n (0, _utils.setInlineStyles)(activeNodeHelper, {\n position: 'fixed',\n width: activeNodeBoundingClientRect.width + \"px\",\n height: activeNodeBoundingClientRect.height + \"px\",\n left: activeNodeBoundingClientRect.left - parseFloat(activeNodeStyle.marginLeft) + \"px\",\n top: activeNodeBoundingClientRect.top - parseFloat(activeNodeStyle.marginTop) + \"px\"\n });\n activeNode.classList.add(holderElementClass);\n document.body.appendChild(activeNodeHelper);\n var getContainerScrollDelta = function getContainerScrollDelta() {\n return {\n left: scrollContainer.scrollLeft - initScroll.x,\n top: scrollContainer.scrollTop - initScroll.y\n };\n };\n var getHolderTranslate = function getHolderTranslate() {\n return animatedNodesOffset.reduce(function (acc, item) {\n return {\n x: acc.x + item.x,\n y: acc.y + item.y\n };\n }, {\n x: 0,\n y: 0\n });\n };\n var sortMouseMoveListener = (0, _on.default)(window, 'mousemove', function (mouseOverEvent) {\n // Update helper position\n var offset = {\n x: (mouseOverEvent === null || mouseOverEvent === void 0 ? void 0 : mouseOverEvent.pageX) || 0,\n y: (mouseOverEvent === null || mouseOverEvent === void 0 ? void 0 : mouseOverEvent.pageY) || 0\n };\n var containerScrollDelta = getContainerScrollDelta();\n var containerBoundingRect = scrollContainer.getBoundingClientRect();\n activeNodeHolderTranslate = {\n x: offset.x - mouseDownEvent.pageX,\n y: offset.y - mouseDownEvent.pageY\n };\n if (activeNodeHelper) {\n (0, _utils.setTranslate3d)(activeNodeHelper, activeNodeHolderTranslate);\n }\n\n // animate\n activeNodeNextIndex = -1;\n var listItemManagerRefs = getOrderedItems(curManagedItem.info.collection);\n var aTop = activeNodeOffsetEdge.top || 0;\n var cTop = containerScrollDelta.top || 0;\n var sortingOffsetY = aTop + activeNodeHolderTranslate.y + cTop;\n for (var i = 0, len = listItemManagerRefs.length; i < len; i++) {\n var _listItemManagerRefs$;\n var currentNode = listItemManagerRefs[i].node;\n var currentNodeIndex = (_listItemManagerRefs$ = listItemManagerRefs[i].info.index) !== null && _listItemManagerRefs$ !== void 0 ? _listItemManagerRefs$ : 0;\n var offsetY = activeNodeBoundingClientRect.height > currentNode.offsetHeight ? currentNode.offsetHeight / 2 : activeNodeBoundingClientRect.height / 2;\n var translate = {\n x: 0,\n y: 0\n };\n\n // If we haven't cached the node's offsetTop / offsetLeft value\n var curEdgeOffset = listItemManagerRefs[i].edgeOffset || (0, _utils.getEdgeOffset)(currentNode, containerElement);\n listItemManagerRefs[i].edgeOffset = curEdgeOffset;\n\n // Get a reference to the next node\n var prvNode = i > 0 && listItemManagerRefs[i - 1];\n var nextNode = i < len - 1 && listItemManagerRefs[i + 1];\n\n // Also cache the node's edge offset if needed.\n if (prvNode && !prvNode.edgeOffset) {\n prvNode.edgeOffset = (0, _utils.getEdgeOffset)(prvNode.node, containerElement);\n }\n if (nextNode && !nextNode.edgeOffset) {\n nextNode.edgeOffset = (0, _utils.getEdgeOffset)(nextNode.node, containerElement);\n }\n\n // If the node is the one we're currently animating, skip it\n if (currentNodeIndex === activeNodeOldIndex) {\n continue;\n }\n var curEdgeOffsetTop = curEdgeOffset.top || 0;\n if (prvNode && currentNodeIndex > activeNodeOldIndex && sortingOffsetY + offsetY >= curEdgeOffsetTop) {\n var _prvNode$edgeOffset;\n var yOffset = (((_prvNode$edgeOffset = prvNode.edgeOffset) === null || _prvNode$edgeOffset === void 0 ? void 0 : _prvNode$edgeOffset.top) || 0) - curEdgeOffsetTop;\n translate.y = yOffset;\n animatedNodesOffset[currentNodeIndex] = {\n x: 0,\n y: -yOffset\n };\n activeNodeNextIndex = currentNodeIndex;\n } else if (nextNode && currentNodeIndex < activeNodeOldIndex && sortingOffsetY <= curEdgeOffsetTop + offsetY) {\n var _nextNode$edgeOffset;\n var _yOffset = (((_nextNode$edgeOffset = nextNode.edgeOffset) === null || _nextNode$edgeOffset === void 0 ? void 0 : _nextNode$edgeOffset.top) || 0) - curEdgeOffsetTop;\n translate.y = _yOffset;\n animatedNodesOffset[currentNodeIndex] = {\n x: 0,\n y: -_yOffset\n };\n if (activeNodeNextIndex === -1) {\n activeNodeNextIndex = currentNodeIndex;\n }\n } else {\n animatedNodesOffset[currentNodeIndex] = {\n x: 0,\n y: 0\n };\n }\n (0, _utils.setTransitionDuration)(currentNode, transitionDuration);\n (0, _utils.setTranslate3d)(currentNode, translate);\n\n // translate holder\n (0, _utils.setTranslate3d)(activeNode, getHolderTranslate());\n }\n if (activeNodeNextIndex === -1) {\n activeNodeNextIndex = activeNodeOldIndex;\n }\n\n // auto scroll\n if (autoScroll) {\n autoScroller.update({\n width: activeNodeBoundingClientRect.width,\n height: activeNodeBoundingClientRect.height,\n translate: activeNodeHolderTranslate,\n maxTranslate: {\n x: 0,\n y: containerBoundingRect.top + containerBoundingRect.height - activeNodeBoundingClientRect.top - activeNodeBoundingClientRect.height / 2\n },\n minTranslate: {\n x: 0,\n y: containerBoundingRect.top - activeNodeBoundingClientRect.top - activeNodeBoundingClientRect.height / 2\n }\n });\n }\n onSortMove === null || onSortMove === void 0 || onSortMove({\n collection: curManagedItem.info.collection,\n node: activeNode,\n oldIndex: activeNodeOldIndex,\n newIndex: activeNodeNextIndex\n }, mouseOverEvent);\n }, {\n passive: false\n });\n var sortMouseEndListener = (0, _on.default)(window, 'mouseup', function (event) {\n // Remove the event listeners\n sortMouseMoveListener.off();\n sortMouseEndListener.off();\n var holderTranslate = getHolderTranslate();\n var containerScrollDelta = getContainerScrollDelta();\n if (activeNodeHelper) {\n (0, _utils.setTranslate3d)(activeNodeHelper, {\n x: holderTranslate.x - (containerScrollDelta.left || 0),\n y: holderTranslate.y - (containerScrollDelta.top || 0)\n });\n (0, _utils.setTransitionDuration)(activeNodeHelper, transitionDuration);\n }\n\n // wait for animation\n setTimeout(function () {\n var _activeNodeHelper2;\n if (!isMounted()) return;\n // Remove the helper from the DOM\n (_activeNodeHelper2 = activeNodeHelper) === null || _activeNodeHelper2 === void 0 || (_activeNodeHelper2 = _activeNodeHelper2.parentNode) === null || _activeNodeHelper2 === void 0 || _activeNodeHelper2.removeChild(activeNodeHelper);\n activeNodeHelper = null;\n\n // Remove redundant styles\n activeNode.classList.remove(holderElementClass);\n (0, _utils.setTranslate3d)(activeNode, null);\n animatedNodesOffset = [];\n for (var _iterator = _createForOfIteratorHelperLoose(getOrderedItems(curManagedItem.info.collection)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n // Clear the cached offsetTop / offsetLeft value\n item.edgeOffset = null;\n\n // Remove the transforms / transitions\n var el = item.node;\n (0, _utils.setTranslate3d)(el, null);\n (0, _utils.setTransitionDuration)(el, null);\n }\n\n // Stop autoScroll\n autoScroller.clear();\n\n // Update manager state\n setSorting(false);\n\n // callbacks\n var callbackPayload = {\n collection: curManagedItem.info.collection,\n node: curManagedItem.node,\n newIndex: activeNodeNextIndex,\n oldIndex: activeNodeOldIndex\n };\n onSortEnd === null || onSortEnd === void 0 || onSortEnd(callbackPayload, event);\n onSort === null || onSort === void 0 || onSort(callbackPayload, event);\n }, transitionDuration);\n }, {\n passive: false\n });\n setSorting(true);\n // start callback\n onSortStart === null || onSortStart === void 0 || onSortStart({\n collection: curManagedItem.info.collection,\n node: activeNode,\n oldIndex: activeNodeOldIndex,\n newIndex: activeNodeNextIndex\n }, mouseDownEvent.nativeEvent);\n }, [autoScroll, getOrderedItems, isMounted, onSort, onSortEnd, onSortMove, onSortStart, transitionDuration]);\n\n /**\n * Determine whether to start dragging\n * */\n var handleStart = (0, _react.useCallback)(function (mouseDownEvent) {\n var triggeredNode = mouseDownEvent.target;\n var targetNode = (0, _utils.closestNode)(triggeredNode, function (el) {\n return Boolean(getManagedItem(el));\n });\n var curManagedItem = getManagedItem(targetNode);\n if (\n // is not secondary button pressed\n mouseDownEvent.button !== 2 &&\n // is list item\n Boolean(curManagedItem) && !curManagedItem.info.disabled &&\n // is not sorting\n !sorting &&\n // is valid node\n targetNode instanceof HTMLElement &&\n // excludes interactive elements\n !targetNode.contains((0, _utils.closestNode)(triggeredNode, _utils.isContainInteractiveElement))) {\n mouseDownEvent.preventDefault();\n pressTimer.current = setTimeout(handlePress, pressDelay, mouseDownEvent, targetNode, curManagedItem);\n }\n }, [getManagedItem, handlePress, pressDelay, sorting]);\n\n /**\n * Clear timer after drag\n * */\n var handleEnd = (0, _react.useCallback)(function () {\n return clearTimeout(pressTimer.current);\n }, []);\n return {\n handleStart: handleStart,\n handleEnd: handleEnd,\n containerRef: containerRef,\n sorting: sorting,\n register: listItemRegister\n };\n};\nvar _default = exports[\"default\"] = useSortHelper;\n\n//# sourceURL=webpack://rsuite/./src/List/helper/useSortHelper.ts?");
3703
+ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _on = _interopRequireDefault(__webpack_require__(/*! dom-lib/on */ \"./node_modules/dom-lib/esm/on.js\"));\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _AutoScroller = _interopRequireDefault(__webpack_require__(/*! ./AutoScroller */ \"./src/List/helper/AutoScroller.ts\"));\nvar _utils = __webpack_require__(/*! ./utils */ \"./src/List/helper/utils.ts\");\nvar _hooks = __webpack_require__(/*! ../../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _useManager2 = _interopRequireDefault(__webpack_require__(/*! ./useManager */ \"./src/List/helper/useManager.ts\"));\nfunction _createForOfIteratorHelperLoose(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar helperElementClass = 'rs-list-item-helper';\nvar holderElementClass = 'rs-list-item-holder';\nvar useSortHelper = function useSortHelper(config) {\n var autoScroll = config.autoScroll,\n pressDelay = config.pressDelay,\n transitionDuration = config.transitionDuration,\n onSort = config.onSort,\n onSortEnd = config.onSortEnd,\n onSortMove = config.onSortMove,\n onSortStart = config.onSortStart;\n var _useState = (0, _react.useState)(false),\n sorting = _useState[0],\n setSorting = _useState[1];\n var containerRef = (0, _react.useRef)(null);\n var pressTimer = (0, _react.useRef)();\n var _useManager = (0, _useManager2.default)(),\n listItemRegister = _useManager.listItemRegister,\n getManagedItem = _useManager.getManagedItem,\n getOrderedItems = _useManager.getOrderedItems;\n var isMounted = (0, _hooks.useIsMounted)();\n\n /**\n * start dragging\n * */\n var handlePress = (0, _react.useCallback)(function (event, _targetNode, curManagedItem) {\n var _curManagedItem$info$, _curManagedItem$info$2, _activeNodeHelper;\n if (!isMounted()) return;\n // data\n var containerElement = containerRef.current;\n var activeNode = curManagedItem.node;\n var activeNodeOldIndex = (_curManagedItem$info$ = curManagedItem.info.index) !== null && _curManagedItem$info$ !== void 0 ? _curManagedItem$info$ : 0;\n var activeNodeNextIndex = (_curManagedItem$info$2 = curManagedItem.info.index) !== null && _curManagedItem$info$2 !== void 0 ? _curManagedItem$info$2 : 0;\n var activeNodeHolderTranslate = {\n x: 0,\n y: 0\n };\n var animatedNodesOffset = []; // all list item offset\n\n // Get initial position from event\n var isTouchEvent = 'touches' in event;\n var initialPosition = {\n pageX: isTouchEvent ? event.touches[0].pageX : event.pageX,\n pageY: isTouchEvent ? event.touches[0].pageY : event.pageY\n };\n\n // init scroller\n var scrollContainer = (0, _utils.getScrollingParent)(containerElement) || containerElement;\n var initScroll = {\n x: scrollContainer.scrollLeft,\n y: scrollContainer.scrollTop\n };\n var autoScroller = new _AutoScroller.default(scrollContainer, function (offset) {\n activeNodeHolderTranslate.x += offset.left;\n activeNodeHolderTranslate.y += offset.top;\n });\n var activeNodeBoundingClientRect = activeNode.getBoundingClientRect();\n var activeNodeOffsetEdge = (0, _utils.getEdgeOffset)(activeNode, containerElement);\n var activeNodeStyle = getComputedStyle(activeNode);\n var activeNodeHelper = activeNode.cloneNode(true);\n (_activeNodeHelper = activeNodeHelper) === null || _activeNodeHelper === void 0 || _activeNodeHelper.classList.add(helperElementClass);\n (0, _utils.setInlineStyles)(activeNodeHelper, {\n position: 'fixed',\n width: activeNodeBoundingClientRect.width + \"px\",\n height: activeNodeBoundingClientRect.height + \"px\",\n left: activeNodeBoundingClientRect.left - parseFloat(activeNodeStyle.marginLeft) + \"px\",\n top: activeNodeBoundingClientRect.top - parseFloat(activeNodeStyle.marginTop) + \"px\"\n });\n activeNode.classList.add(holderElementClass);\n document.body.appendChild(activeNodeHelper);\n var getContainerScrollDelta = function getContainerScrollDelta() {\n return {\n left: scrollContainer.scrollLeft - initScroll.x,\n top: scrollContainer.scrollTop - initScroll.y\n };\n };\n var getHolderTranslate = function getHolderTranslate() {\n return animatedNodesOffset.reduce(function (acc, item) {\n return {\n x: acc.x + item.x,\n y: acc.y + item.y\n };\n }, {\n x: 0,\n y: 0\n });\n };\n\n // Common handler for both mouse and touch move events\n var handleSortMove = function handleSortMove(moveEvent) {\n // Prevent default to stop page scrolling during touch drag\n if ('touches' in moveEvent) {\n moveEvent.preventDefault();\n }\n\n // Get current position from event\n var isTouchMoveEvent = 'touches' in moveEvent;\n var currentPosition = {\n pageX: isTouchMoveEvent ? moveEvent.touches[0].pageX : moveEvent.pageX,\n pageY: isTouchMoveEvent ? moveEvent.touches[0].pageY : moveEvent.pageY\n };\n\n // Update helper position\n var offset = {\n x: currentPosition.pageX,\n y: currentPosition.pageY\n };\n var containerScrollDelta = getContainerScrollDelta();\n var containerBoundingRect = scrollContainer.getBoundingClientRect();\n activeNodeHolderTranslate = {\n x: offset.x - initialPosition.pageX,\n y: offset.y - initialPosition.pageY\n };\n if (activeNodeHelper) {\n (0, _utils.setTranslate3d)(activeNodeHelper, activeNodeHolderTranslate);\n }\n\n // animate\n activeNodeNextIndex = -1;\n var listItemManagerRefs = getOrderedItems(curManagedItem.info.collection);\n var aTop = activeNodeOffsetEdge.top || 0;\n var cTop = containerScrollDelta.top || 0;\n var sortingOffsetY = aTop + activeNodeHolderTranslate.y + cTop;\n for (var i = 0, len = listItemManagerRefs.length; i < len; i++) {\n var _listItemManagerRefs$;\n var currentNode = listItemManagerRefs[i].node;\n var currentNodeIndex = (_listItemManagerRefs$ = listItemManagerRefs[i].info.index) !== null && _listItemManagerRefs$ !== void 0 ? _listItemManagerRefs$ : 0;\n var offsetY = activeNodeBoundingClientRect.height > currentNode.offsetHeight ? currentNode.offsetHeight / 2 : activeNodeBoundingClientRect.height / 2;\n var translate = {\n x: 0,\n y: 0\n };\n\n // If we haven't cached the node's offsetTop / offsetLeft value\n var curEdgeOffset = listItemManagerRefs[i].edgeOffset || (0, _utils.getEdgeOffset)(currentNode, containerElement);\n listItemManagerRefs[i].edgeOffset = curEdgeOffset;\n\n // Get a reference to the next node\n var prvNode = i > 0 && listItemManagerRefs[i - 1];\n var nextNode = i < len - 1 && listItemManagerRefs[i + 1];\n\n // Also cache the node's edge offset if needed.\n if (prvNode && !prvNode.edgeOffset) {\n prvNode.edgeOffset = (0, _utils.getEdgeOffset)(prvNode.node, containerElement);\n }\n if (nextNode && !nextNode.edgeOffset) {\n nextNode.edgeOffset = (0, _utils.getEdgeOffset)(nextNode.node, containerElement);\n }\n\n // If the node is the one we're currently animating, skip it\n if (currentNodeIndex === activeNodeOldIndex) {\n continue;\n }\n var curEdgeOffsetTop = curEdgeOffset.top || 0;\n if (prvNode && currentNodeIndex > activeNodeOldIndex && sortingOffsetY + offsetY >= curEdgeOffsetTop) {\n var _prvNode$edgeOffset;\n var yOffset = (((_prvNode$edgeOffset = prvNode.edgeOffset) === null || _prvNode$edgeOffset === void 0 ? void 0 : _prvNode$edgeOffset.top) || 0) - curEdgeOffsetTop;\n translate.y = yOffset;\n animatedNodesOffset[currentNodeIndex] = {\n x: 0,\n y: -yOffset\n };\n activeNodeNextIndex = currentNodeIndex;\n } else if (nextNode && currentNodeIndex < activeNodeOldIndex && sortingOffsetY <= curEdgeOffsetTop + offsetY) {\n var _nextNode$edgeOffset;\n var _yOffset = (((_nextNode$edgeOffset = nextNode.edgeOffset) === null || _nextNode$edgeOffset === void 0 ? void 0 : _nextNode$edgeOffset.top) || 0) - curEdgeOffsetTop;\n translate.y = _yOffset;\n animatedNodesOffset[currentNodeIndex] = {\n x: 0,\n y: -_yOffset\n };\n if (activeNodeNextIndex === -1) {\n activeNodeNextIndex = currentNodeIndex;\n }\n } else {\n animatedNodesOffset[currentNodeIndex] = {\n x: 0,\n y: 0\n };\n }\n (0, _utils.setTransitionDuration)(currentNode, transitionDuration);\n (0, _utils.setTranslate3d)(currentNode, translate);\n\n // translate holder\n (0, _utils.setTranslate3d)(activeNode, getHolderTranslate());\n }\n if (activeNodeNextIndex === -1) {\n activeNodeNextIndex = activeNodeOldIndex;\n }\n\n // auto scroll\n if (autoScroll) {\n autoScroller.update({\n width: activeNodeBoundingClientRect.width,\n height: activeNodeBoundingClientRect.height,\n translate: activeNodeHolderTranslate,\n maxTranslate: {\n x: 0,\n y: containerBoundingRect.top + containerBoundingRect.height - activeNodeBoundingClientRect.top - activeNodeBoundingClientRect.height / 2\n },\n minTranslate: {\n x: 0,\n y: containerBoundingRect.top - activeNodeBoundingClientRect.top - activeNodeBoundingClientRect.height / 2\n }\n });\n }\n onSortMove === null || onSortMove === void 0 || onSortMove({\n collection: curManagedItem.info.collection,\n node: activeNode,\n oldIndex: activeNodeOldIndex,\n newIndex: activeNodeNextIndex\n }, moveEvent);\n };\n\n // Common handler for both mouse and touch end events\n var handleSortEnd = function handleSortEnd(endEvent) {\n var _sortTouchMoveListene, _sortTouchEndListener;\n // Remove the event listeners\n sortMouseMoveListener.off();\n sortMouseEndListener.off();\n (_sortTouchMoveListene = sortTouchMoveListener) === null || _sortTouchMoveListene === void 0 || _sortTouchMoveListene.off();\n (_sortTouchEndListener = sortTouchEndListener) === null || _sortTouchEndListener === void 0 || _sortTouchEndListener.off();\n\n // Enable page scrolling again\n if (document.body.style.overflow === 'hidden') {\n document.body.style.overflow = '';\n }\n var holderTranslate = getHolderTranslate();\n var containerScrollDelta = getContainerScrollDelta();\n if (activeNodeHelper) {\n (0, _utils.setTranslate3d)(activeNodeHelper, {\n x: holderTranslate.x - (containerScrollDelta.left || 0),\n y: holderTranslate.y - (containerScrollDelta.top || 0)\n });\n (0, _utils.setTransitionDuration)(activeNodeHelper, transitionDuration);\n }\n\n // wait for animation\n setTimeout(function () {\n var _activeNodeHelper2;\n if (!isMounted()) return;\n // Remove the helper from the DOM\n (_activeNodeHelper2 = activeNodeHelper) === null || _activeNodeHelper2 === void 0 || (_activeNodeHelper2 = _activeNodeHelper2.parentNode) === null || _activeNodeHelper2 === void 0 || _activeNodeHelper2.removeChild(activeNodeHelper);\n activeNodeHelper = null;\n\n // Remove redundant styles\n activeNode.classList.remove(holderElementClass);\n (0, _utils.setTranslate3d)(activeNode, null);\n animatedNodesOffset = [];\n for (var _iterator = _createForOfIteratorHelperLoose(getOrderedItems(curManagedItem.info.collection)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n // Clear the cached offsetTop / offsetLeft value\n item.edgeOffset = null;\n\n // Remove the transforms / transitions\n var el = item.node;\n (0, _utils.setTranslate3d)(el, null);\n (0, _utils.setTransitionDuration)(el, null);\n }\n\n // Stop autoScroll\n autoScroller.clear();\n\n // Update manager state\n setSorting(false);\n\n // callbacks\n var callbackPayload = {\n collection: curManagedItem.info.collection,\n node: curManagedItem.node,\n newIndex: activeNodeNextIndex,\n oldIndex: activeNodeOldIndex\n };\n onSortEnd === null || onSortEnd === void 0 || onSortEnd(callbackPayload, endEvent);\n onSort === null || onSort === void 0 || onSort(callbackPayload, endEvent);\n }, transitionDuration);\n };\n\n // Set up mouse event listeners\n var sortMouseMoveListener = (0, _on.default)(window, 'mousemove', handleSortMove, {\n passive: false\n });\n var sortMouseEndListener = (0, _on.default)(window, 'mouseup', handleSortEnd, {\n passive: false\n });\n\n // Set up touch event listeners\n var sortTouchMoveListener;\n var sortTouchEndListener;\n if (isTouchEvent) {\n // Disable page scrolling during touch drag\n document.body.style.overflow = 'hidden';\n sortTouchMoveListener = (0, _on.default)(window, 'touchmove', handleSortMove, {\n passive: false\n } // Important: passive: false allows preventDefault() to work\n );\n sortTouchEndListener = (0, _on.default)(window, 'touchend', handleSortEnd, {\n passive: false\n });\n }\n setSorting(true);\n // start callback\n onSortStart === null || onSortStart === void 0 || onSortStart({\n collection: curManagedItem.info.collection,\n node: activeNode,\n oldIndex: activeNodeOldIndex,\n newIndex: activeNodeNextIndex\n }, event);\n }, [autoScroll, getOrderedItems, isMounted, onSort, onSortEnd, onSortMove, onSortStart, transitionDuration]);\n\n /**\n * Determine whether to start dragging\n * */\n var handleStart = (0, _react.useCallback)(function (mouseDownEvent) {\n var triggeredNode = mouseDownEvent.target;\n var targetNode = (0, _utils.closestNode)(triggeredNode, function (el) {\n return Boolean(getManagedItem(el));\n });\n var curManagedItem = getManagedItem(targetNode);\n if (\n // is not secondary button pressed\n mouseDownEvent.button !== 2 &&\n // is list item\n Boolean(curManagedItem) && !curManagedItem.info.disabled &&\n // is not sorting\n !sorting &&\n // is valid node\n targetNode instanceof HTMLElement &&\n // excludes interactive elements\n !targetNode.contains((0, _utils.closestNode)(triggeredNode, _utils.isContainInteractiveElement))) {\n mouseDownEvent.preventDefault();\n pressTimer.current = setTimeout(handlePress, pressDelay, mouseDownEvent, targetNode, curManagedItem);\n }\n }, [getManagedItem, handlePress, pressDelay, sorting]);\n\n /**\n * Handle touch start for mobile devices\n */\n var handleTouchStart = (0, _react.useCallback)(function (touchStartEvent) {\n var triggeredNode = touchStartEvent.target;\n var targetNode = (0, _utils.closestNode)(triggeredNode, function (el) {\n return Boolean(getManagedItem(el));\n });\n var curManagedItem = getManagedItem(targetNode);\n if (\n // is list item\n Boolean(curManagedItem) && !curManagedItem.info.disabled &&\n // is not sorting\n !sorting &&\n // is valid node\n targetNode instanceof HTMLElement &&\n // excludes interactive elements\n !targetNode.contains((0, _utils.closestNode)(triggeredNode, _utils.isContainInteractiveElement))) {\n // Prevent scrolling while sorting\n touchStartEvent.preventDefault();\n pressTimer.current = setTimeout(handlePress, pressDelay, touchStartEvent, targetNode, curManagedItem);\n }\n }, [getManagedItem, handlePress, pressDelay, sorting]);\n\n /**\n * Clear timer after drag\n * */\n var handleEnd = (0, _react.useCallback)(function () {\n clearTimeout(pressTimer.current);\n\n // Ensure page scrolling is re-enabled\n if (document.body.style.overflow === 'hidden') {\n document.body.style.overflow = '';\n }\n }, []);\n\n /**\n * Clear timer after touch end\n */\n var handleTouchEnd = (0, _react.useCallback)(function () {\n clearTimeout(pressTimer.current);\n\n // Ensure page scrolling is re-enabled\n if (document.body.style.overflow === 'hidden') {\n document.body.style.overflow = '';\n }\n }, []);\n return {\n handleStart: handleStart,\n handleEnd: handleEnd,\n handleTouchStart: handleTouchStart,\n handleTouchEnd: handleTouchEnd,\n containerRef: containerRef,\n sorting: sorting,\n register: listItemRegister\n };\n};\nvar _default = exports[\"default\"] = useSortHelper;\n\n//# sourceURL=webpack://rsuite/./src/List/helper/useSortHelper.ts?");
3704
3704
 
3705
3705
  /***/ }),
3706
3706
 
@@ -3711,7 +3711,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
3711
3711
  /***/ (function(__unused_webpack_module, exports) {
3712
3712
 
3713
3713
  "use strict";
3714
- eval("\n\nexports.__esModule = true;\nexports.closestNode = closestNode;\nexports.getEdgeOffset = getEdgeOffset;\nexports.getScrollingParent = getScrollingParent;\nexports.isContainInteractiveElement = isContainInteractiveElement;\nexports.setInlineStyles = setInlineStyles;\nexports.setTransitionDuration = setTransitionDuration;\nexports.setTranslate3d = setTranslate3d;\n/**\n * interactive elements should be skiped\n * */\nvar INTERACTIVE_ELEMENTS = ['A', 'BUTTON', 'INPUT', 'OPTION', 'TEXTAREA', 'SELECT'];\nfunction isContainInteractiveElement(targetNode) {\n return INTERACTIVE_ELEMENTS.includes(targetNode.tagName) || targetNode.contentEditable === 'true';\n}\nfunction setInlineStyles(node, styles) {\n if (node !== null && styles !== null) {\n for (var _i = 0, _Object$entries = Object.entries(styles); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _Object$entries[_i],\n key = _Object$entries$_i[0],\n value = _Object$entries$_i[1];\n node.style[key] = value;\n }\n }\n}\nfunction setTranslate3d(node, translate) {\n setInlineStyles(node, {\n transform: translate ? \"translate3d(\" + translate.x + \"px,\" + translate.y + \"px,0)\" : ''\n });\n}\nfunction setTransitionDuration(node, duration) {\n setInlineStyles(node, {\n transitionDuration: duration ? duration + \"ms\" : ''\n });\n}\n\n/**\n * find closest target node from source node\n * */\nfunction closestNode(sourceNode, judge) {\n var currentNode = sourceNode;\n while (currentNode) {\n if (judge(currentNode)) {\n return currentNode;\n }\n currentNode = currentNode.parentNode;\n }\n return null;\n}\nfunction getEdgeOffset(node, parent, offset) {\n if (offset === void 0) {\n offset = {\n left: 0,\n top: 0\n };\n }\n if (!node || !parent) {\n return {};\n }\n\n // Get the actual offsetTop / offsetLeft value, no matter how deep the node is nested\n var nodeOffset = {\n left: (offset.left || 0) + node.offsetLeft,\n top: (offset.top || 0) + node.offsetTop\n };\n if (node.parentNode === parent) {\n return nodeOffset;\n }\n return getEdgeOffset(node.parentNode, parent, nodeOffset);\n}\nfunction getScrollingParent(el) {\n return closestNode(el, function (el) {\n var computedStyle = window.getComputedStyle(el);\n var overflowRegex = /(auto|scroll)/;\n var properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.some(function (property) {\n return overflowRegex.test(computedStyle[property]);\n });\n });\n}\n\n//# sourceURL=webpack://rsuite/./src/List/helper/utils.ts?");
3714
+ eval("\n\nexports.__esModule = true;\nexports.closestNode = closestNode;\nexports.getEdgeOffset = getEdgeOffset;\nexports.getScrollingParent = getScrollingParent;\nexports.isContainInteractiveElement = isContainInteractiveElement;\nexports.setInlineStyles = setInlineStyles;\nexports.setTransitionDuration = setTransitionDuration;\nexports.setTranslate3d = setTranslate3d;\n/**\n * interactive elements should be skiped\n * */\nvar INTERACTIVE_ELEMENTS = ['A', 'BUTTON', 'INPUT', 'OPTION', 'TEXTAREA', 'SELECT'];\nfunction isContainInteractiveElement(targetNode) {\n return INTERACTIVE_ELEMENTS.includes(targetNode.tagName) || targetNode.contentEditable === 'true';\n}\nfunction setInlineStyles(node, styles) {\n if (node !== null && styles !== null) {\n for (var _i = 0, _Object$entries = Object.entries(styles); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _Object$entries[_i],\n key = _Object$entries$_i[0],\n value = _Object$entries$_i[1];\n node.style[key] = value;\n }\n }\n}\nfunction setTranslate3d(node, translate) {\n setInlineStyles(node, {\n transform: translate ? \"translate3d(\" + translate.x + \"px,\" + translate.y + \"px,0)\" : ''\n });\n}\nfunction setTransitionDuration(node, duration) {\n setInlineStyles(node, {\n transitionDuration: duration ? duration + \"ms\" : ''\n });\n}\n\n/**\n * find closest target node from source node\n * */\nfunction closestNode(sourceNode, judge) {\n var currentNode = sourceNode;\n while (currentNode) {\n if (judge(currentNode)) {\n return currentNode;\n }\n currentNode = currentNode.parentNode;\n }\n return null;\n}\nfunction getEdgeOffset(node, parent, offset) {\n if (offset === void 0) {\n offset = {\n left: 0,\n top: 0\n };\n }\n if (!node || !parent) {\n return {};\n }\n\n // Get the actual offsetTop / offsetLeft value, no matter how deep the node is nested\n var nodeOffset = {\n left: (offset.left || 0) + node.offsetLeft,\n top: (offset.top || 0) + node.offsetTop\n };\n if (node.parentNode === parent) {\n return nodeOffset;\n }\n return getEdgeOffset(node.parentNode, parent, nodeOffset);\n}\nfunction getScrollingParent(el) {\n if (!el || typeof window === 'undefined' || !window.getComputedStyle) {\n return null;\n }\n try {\n return closestNode(el, function (el) {\n var computedStyle = window.getComputedStyle(el);\n var overflowRegex = /(auto|scroll)/;\n var properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.some(function (property) {\n return overflowRegex.test(computedStyle[property]);\n });\n });\n } catch (error) {\n // In test environments, errors may occur, so return null\n return null;\n }\n}\n\n//# sourceURL=webpack://rsuite/./src/List/helper/utils.ts?");
3715
3715
 
3716
3716
  /***/ }),
3717
3717
 
@@ -10774,9 +10774,9 @@ eval("var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ \"./node_m
10774
10774
  /*!***************************************!*\
10775
10775
  !*** ./node_modules/lodash/_toKey.js ***!
10776
10776
  \***************************************/
10777
- /***/ (function(module) {
10777
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
10778
10778
 
10779
- eval("/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n//# sourceURL=webpack://rsuite/./node_modules/lodash/_toKey.js?");
10779
+ eval("var isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n\n//# sourceURL=webpack://rsuite/./node_modules/lodash/_toKey.js?");
10780
10780
 
10781
10781
  /***/ }),
10782
10782