@bigbinary/neeto-folders-frontend 1.1.7 → 2.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.
@@ -1,23 +1,29 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
- import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
3
- import _regeneratorRuntime from '@babel/runtime/regenerator';
2
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
4
3
  import { shallow } from 'zustand/shallow';
4
+ import { useQueryClient } from '@tanstack/react-query';
5
5
  import { useQueryParams, useStateWithDependency } from '@bigbinary/neeto-commons-frontend/react-utils';
6
6
  import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
7
7
  import Alert from '@bigbinary/neetoui/Alert';
8
- import { useTranslation, Trans } from 'react-i18next';
8
+ import { useTranslation as useTranslation$1, Trans } from 'react-i18next';
9
9
  import { useHistory, Link, NavLink } from 'react-router-dom';
10
- import { c as useFolderStore, d as useDestroyFolder, a as useFolders, i as isActiveFolder, e as useFetchFolders, f as useCreateFolder, g as useUpdateFolder, h as getActiveFolderId, j as useReorderFolders, D as DEFAULT_CONFIG, u as useFolder, b as useFolderActions } from './useFolderActions-DdOLB5Zw.js';
11
- import { p as pathToFolder, t as treeToMap, m as measureDepth, a as mapToTree } from './pathUtils-DSapmYDO.js';
10
+ import { c as useFolderStore, d as useDestroyFolder, a as useFolders, e as useFetchFolders, f as useCreateFolder, g as useUpdateFolder, h as useReorderFolders, D as DEFAULT_CONFIG, u as useFolder, b as useFolderActions } from './useFolderActions-BLpmmlOf.js';
11
+ import { QUERY_KEYS } from './constants.js';
12
+ import { p as pathToFolder, t as treeToMap, m as measureDepth, a as mapToTree, b as mapToSortedTree } from './index-Cq1DyvVr.js';
13
+ import { a as isActiveFolder, g as getActiveFolderId, i as isArray } from './internal-G6z0jIQe.js';
12
14
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
13
15
  import Pane from '@bigbinary/neetoui/Pane';
14
- import { forwardRef, useMemo, createElement, useState, useEffect, startTransition } from 'react';
16
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
17
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
18
+ import React, { createElement, forwardRef, useMemo, useState, useId, useEffect, startTransition } from 'react';
15
19
  import { useField, Formik, Form } from 'formik';
16
20
  import Typography from '@bigbinary/neetoui/Typography';
17
21
  import Input from '@bigbinary/neetoui/formik/Input';
18
22
  import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
19
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
20
23
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
24
+ import Switch from '@bigbinary/neetoui/formik/Switch';
25
+ import Textarea from '@bigbinary/neetoui/formik/Textarea';
26
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
21
27
  import { ConfigProvider, TreeSelect as TreeSelect$1 } from 'antd';
22
28
  import classNames from 'classnames';
23
29
  import Down from '@bigbinary/neeto-icons/Down';
@@ -26,7 +32,7 @@ import { values, isEmpty, assoc, pick } from 'ramda';
26
32
  import Button from '@bigbinary/neetoui/Button';
27
33
  import { noop, isNotPresent } from '@bigbinary/neeto-cist';
28
34
  import Radio from '@bigbinary/neetoui/Radio';
29
- import { useDraggable, useDroppable, DndContext, DragOverlay } from '@dnd-kit/core';
35
+ import { useDraggable, useDroppable, DndContext, DragOverlay, useSensors, useSensor, PointerSensor } from '@dnd-kit/core';
30
36
  import Reorder from '@bigbinary/neeto-icons/Reorder';
31
37
  import Toastr from '@bigbinary/neetoui/Toastr';
32
38
  import { createPortal } from 'react-dom';
@@ -34,12 +40,23 @@ import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
34
40
  import Checkbox from '@bigbinary/neetoui/Checkbox';
35
41
  import Tree from '@bigbinary/neetoui/Tree';
36
42
  import 'i18next';
37
- import '@tanstack/react-query';
38
- import './constants.js';
39
43
  import 'zustand';
40
44
 
41
- function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
42
- function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
45
+ function ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
46
+ function _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
47
+ var useTranslation = function useTranslation(config) {
48
+ var _useDefaultTranslatio = useTranslation$1(),
49
+ t = _useDefaultTranslatio.t;
50
+ var modT = function modT(key, options) {
51
+ return config !== null && config !== void 0 && config.labels ? t(key, _objectSpread$e(_objectSpread$e({}, config.labels), options)) : t(key, options);
52
+ };
53
+ return {
54
+ t: modT
55
+ };
56
+ };
57
+
58
+ function ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
59
+ function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
43
60
  var FoldersAlerts = function FoldersAlerts(_ref) {
44
61
  var config = _ref.config;
45
62
  var _useFolderStore = useFolderStore(function (store) {
@@ -51,8 +68,9 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
51
68
  var queryParams = useQueryParams({
52
69
  toCamelCase: false
53
70
  });
71
+ var queryClient = useQueryClient();
54
72
  var history = useHistory();
55
- var _useTranslation = useTranslation(),
73
+ var _useTranslation = useTranslation(config),
56
74
  t = _useTranslation.t;
57
75
  var _useFolderStore2 = useFolderStore(function (store) {
58
76
  var _store$alertState, _store$alertState2;
@@ -65,7 +83,7 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
65
83
  item = _useFolderStore2.item;
66
84
  var _useDestroyFolder = useDestroyFolder(config),
67
85
  destroyFolder = _useDestroyFolder.mutateAsync,
68
- isLoading = _useDestroyFolder.isLoading;
86
+ isPending = _useDestroyFolder.isPending;
69
87
  var _useFolders = useFolders(config),
70
88
  folders = _useFolders.folders;
71
89
  var onClose = function onClose() {
@@ -75,46 +93,33 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
75
93
  };
76
94
  var alertProps = {
77
95
  isOpen: !!type,
78
- isSubmitting: isLoading,
96
+ isSubmitting: isPending,
79
97
  onClose: onClose
80
98
  };
81
- var onConfirmDelete = /*#__PURE__*/function () {
82
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
83
- var path, parent;
84
- return _regeneratorRuntime.wrap(function _callee$(_context) {
85
- while (1) switch (_context.prev = _context.next) {
86
- case 0:
87
- _context.next = 2;
88
- return destroyFolder(item.id);
89
- case 2:
90
- onClose();
91
- if (!(!isActiveFolder(item.sid) || !folders)) {
92
- _context.next = 5;
93
- break;
94
- }
95
- return _context.abrupt("return");
96
- case 5:
97
- path = pathToFolder(folders, item.id);
98
- parent = path[path.length - 2];
99
- if (parent) {
100
- _context.next = 9;
101
- break;
102
- }
103
- return _context.abrupt("return");
104
- case 9:
105
- history.replace(buildUrl(config.folderPath, _objectSpread$a(_objectSpread$a({}, queryParams), {}, {
106
- folderId: parent.sid
107
- })));
108
- case 10:
109
- case "end":
110
- return _context.stop();
111
- }
112
- }, _callee);
113
- }));
114
- return function onConfirmDelete() {
115
- return _ref2.apply(this, arguments);
99
+ var onConfirmDelete = function onConfirmDelete() {
100
+ var onSuccess = function onSuccess() {
101
+ var isActive = isActiveFolder(config, item.sid);
102
+ // Invalidates items and folder details. Refetch only if not active folder.
103
+ var invalidationKeys = [].concat(_toConsumableArray(config.invalidationKeys), [[QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.DETAILS]]);
104
+ invalidationKeys.forEach(function (queryKey) {
105
+ queryClient.invalidateQueries({
106
+ refetchType: isActive ? "none" : "active",
107
+ queryKey: queryKey
108
+ });
109
+ });
110
+ if (isActive && folders) {
111
+ var path = pathToFolder(folders, item.id);
112
+ var parent = path[path.length - 2];
113
+ history.replace(buildUrl(config.folderPath, _objectSpread$d(_objectSpread$d({}, queryParams), {}, {
114
+ folderId: parent ? parent.sid : ""
115
+ })));
116
+ }
116
117
  };
117
- }();
118
+ destroyFolder(item.id, {
119
+ onSuccess: onSuccess,
120
+ onSettled: onClose
121
+ });
122
+ };
118
123
  if (type === "delete") {
119
124
  alertProps.title = t("deleteFolder.title");
120
125
  alertProps.message = /*#__PURE__*/jsx(Trans, {
@@ -124,12 +129,34 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
124
129
  if (config.customizeAlerts) config.customizeAlerts(type, item, alertProps);
125
130
  alertProps.onSubmit = onConfirmDelete;
126
131
  }
127
- return /*#__PURE__*/jsx(Alert, _objectSpread$a({}, alertProps));
132
+ return /*#__PURE__*/jsx(Alert, _objectSpread$d({}, alertProps));
128
133
  };
129
134
 
130
- var _excluded$4 = ["className", "disabled", "fieldNames", "label", "loading", "name", "placeholder", "required", "showSearch", "size", "treeData"];
131
- function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
132
- function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
135
+ var _excluded$6 = ["type"];
136
+ function ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
137
+ function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
138
+ var typeComponentMap = {
139
+ string: Input,
140
+ "boolean": Switch,
141
+ textarea: Textarea
142
+ };
143
+ var ExtraAttributes = function ExtraAttributes(_ref) {
144
+ var attributes = _ref.attributes;
145
+ if (!Array.isArray(attributes)) return null;
146
+ return attributes.map(function (_ref2) {
147
+ var type = _ref2.type,
148
+ rest = _objectWithoutProperties(_ref2, _excluded$6);
149
+ var Component = typeComponentMap[type];
150
+ if (!Component) return null;
151
+ return /*#__PURE__*/createElement(Component, _objectSpread$c(_objectSpread$c({}, rest), {}, {
152
+ key: rest.name
153
+ }));
154
+ });
155
+ };
156
+
157
+ var _excluded$5 = ["className", "disabled", "fieldNames", "label", "loading", "name", "placeholder", "required", "showSearch", "size", "treeData"];
158
+ function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
159
+ function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
133
160
  var TreeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
134
161
  var _fieldNames$label;
135
162
  var className = _ref.className,
@@ -150,7 +177,7 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
150
177
  _ref$size = _ref.size,
151
178
  size = _ref$size === void 0 ? "middle" : _ref$size,
152
179
  treeData = _ref.treeData,
153
- otherProps = _objectWithoutProperties(_ref, _excluded$4);
180
+ otherProps = _objectWithoutProperties(_ref, _excluded$5);
154
181
  var _useField = useField(name),
155
182
  _useField2 = _slicedToArray(_useField, 3),
156
183
  field = _useField2[0],
@@ -201,7 +228,7 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
201
228
  }
202
229
  }
203
230
  },
204
- children: /*#__PURE__*/jsx(TreeSelect$1, _objectSpread$9(_objectSpread$9({
231
+ children: /*#__PURE__*/jsx(TreeSelect$1, _objectSpread$b(_objectSpread$b({
205
232
  treeDataSimpleMode: true,
206
233
  "data-cy": "nui-select-container-wrapper",
207
234
  dropdownStyle: {
@@ -216,7 +243,7 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
216
243
  "neeto-ui-tree-select__error": meta.error
217
244
  }),
218
245
  switcherIcon: function switcherIcon(props) {
219
- return /*#__PURE__*/jsx("div", _objectSpread$9(_objectSpread$9({}, props), {}, {
246
+ return /*#__PURE__*/jsx("div", _objectSpread$b(_objectSpread$b({}, props), {}, {
220
247
  children: /*#__PURE__*/jsx(Down, {
221
248
  className: "relative"
222
249
  })
@@ -228,7 +255,7 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
228
255
  onChange: function onChange(value) {
229
256
  return setValue(value);
230
257
  }
231
- }, _objectSpread$9({
258
+ }, _objectSpread$b({
232
259
  disabled: disabled,
233
260
  fieldNames: fieldNames,
234
261
  loading: loading,
@@ -265,12 +292,35 @@ var createFolderOptions = function createFolderOptions(foldersMap, config) {
265
292
  };
266
293
  });
267
294
  };
295
+ var createInitialValues = function createInitialValues(defaults, extraAttrs) {
296
+ var values = {
297
+ name: "",
298
+ parentId: defaults.parentId || null
299
+ };
300
+ extraAttrs === null || extraAttrs === void 0 || extraAttrs.forEach(function (_ref) {
301
+ var name = _ref.name,
302
+ defaultValue = _ref.defaultValue;
303
+ values[name] = defaultValue;
304
+ });
305
+ return values;
306
+ };
307
+ var createPayload = function createPayload(values, extraAttrs) {
308
+ var payload = {
309
+ name: values.name,
310
+ parentId: values.parentId
311
+ };
312
+ extraAttrs === null || extraAttrs === void 0 || extraAttrs.forEach(function (_ref2) {
313
+ var name = _ref2.name;
314
+ payload[name] = values[name];
315
+ });
316
+ return payload;
317
+ };
268
318
 
269
319
  var AddEditPane = function AddEditPane(_ref) {
270
320
  var setFocusField = _ref.setFocusField,
271
321
  config = _ref.config,
272
322
  onClose = _ref.onClose;
273
- var _useTranslation = useTranslation(),
323
+ var _useTranslation = useTranslation(config),
274
324
  t = _useTranslation.t;
275
325
  var _useFolderStore = useFolderStore(function (store) {
276
326
  var _store$paneState, _store$paneState2;
@@ -298,22 +348,19 @@ var AddEditPane = function AddEditPane(_ref) {
298
348
  var activeFolder = foldersMap[activeFolderSid];
299
349
  var isValidParent = (activeFolder === null || activeFolder === void 0 ? void 0 : activeFolder.meta.depth) < config.maxDepth;
300
350
  var parentId = isValidParent ? activeFolder.id : null;
351
+ var extraAttributes = config.extraAttributes;
301
352
  var initialValues = useMemo(function () {
302
- return isEditing ? item : {
303
- name: "",
353
+ return isEditing ? item : createInitialValues({
304
354
  parentId: parentId
305
- };
306
- }, [isEditing, item, parentId]);
355
+ }, extraAttributes);
356
+ }, [isEditing, item, parentId, extraAttributes]);
307
357
  var onSubmitForm = /*#__PURE__*/function () {
308
358
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values) {
309
359
  var payload;
310
360
  return _regeneratorRuntime.wrap(function _callee$(_context) {
311
361
  while (1) switch (_context.prev = _context.next) {
312
362
  case 0:
313
- payload = {
314
- name: values.name,
315
- parent_id: values.parentId
316
- };
363
+ payload = createPayload(values, extraAttributes);
317
364
  if (!isEditing) {
318
365
  _context.next = 6;
319
366
  break;
@@ -361,6 +408,8 @@ var AddEditPane = function AddEditPane(_ref) {
361
408
  label: t("folders.name"),
362
409
  name: "name",
363
410
  ref: setFocusField
411
+ }), /*#__PURE__*/jsx(ExtraAttributes, {
412
+ attributes: extraAttributes
364
413
  }), /*#__PURE__*/jsxs("div", {
365
414
  children: [/*#__PURE__*/jsx(TreeSelect, {
366
415
  allowClear: true,
@@ -388,10 +437,11 @@ var AddEditPane = function AddEditPane(_ref) {
388
437
  });
389
438
  };
390
439
 
391
- var _excluded$3 = ["icon", "itemLabel", "folder", "depth", "className", "onClick"];
392
- function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
393
- function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
394
- var indentSize = 30;
440
+ var REORDER_TREE_INDENT_WIDTH = 30;
441
+
442
+ var _excluded$4 = ["icon", "itemLabel", "folder", "depth", "className", "onClick"];
443
+ function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
444
+ function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
395
445
  var Node = function Node(_ref, ref) {
396
446
  var _folder$children$leng, _folder$children;
397
447
  var _ref$icon = _ref.icon,
@@ -401,8 +451,8 @@ var Node = function Node(_ref, ref) {
401
451
  depth = _ref.depth,
402
452
  className = _ref.className,
403
453
  onClick = _ref.onClick,
404
- rest = _objectWithoutProperties(_ref, _excluded$3);
405
- var _useTranslation = useTranslation(),
454
+ rest = _objectWithoutProperties(_ref, _excluded$4);
455
+ var _useTranslation = useTranslation$1(),
406
456
  t = _useTranslation.t;
407
457
  var metaInfo = [];
408
458
  var childCount = (_folder$children$leng = (_folder$children = folder.children) === null || _folder$children === void 0 ? void 0 : _folder$children.length) !== null && _folder$children$leng !== void 0 ? _folder$children$leng : 0;
@@ -416,13 +466,13 @@ var Node = function Node(_ref, ref) {
416
466
  length: depth
417
467
  }).map(function (_, index) {
418
468
  return /*#__PURE__*/jsx("span", {
419
- className: "neeto-ui-border-gray-300 relative flex-shrink-0 border-l",
469
+ className: "neeto-ui-border-gray-300 relative h-full flex-shrink-0 border-l",
420
470
  style: {
421
- width: indentSize,
422
- left: Math.round(indentSize / 2)
471
+ width: REORDER_TREE_INDENT_WIDTH,
472
+ left: Math.round(REORDER_TREE_INDENT_WIDTH / 2)
423
473
  }
424
474
  }, index);
425
- }), /*#__PURE__*/jsxs("div", _objectSpread$8(_objectSpread$8({}, _objectSpread$8(_objectSpread$8({}, rest), {}, {
475
+ }), /*#__PURE__*/jsxs("div", _objectSpread$a(_objectSpread$a({}, _objectSpread$a(_objectSpread$a({}, rest), {}, {
426
476
  onClick: onClick,
427
477
  ref: ref
428
478
  })), {}, {
@@ -447,9 +497,9 @@ var Node = function Node(_ref, ref) {
447
497
  };
448
498
  var Node$1 = /*#__PURE__*/forwardRef(Node);
449
499
 
450
- var _excluded$2 = ["folder", "item", "depth", "maxDepth", "disabled"];
451
- function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
452
- function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
500
+ var _excluded$3 = ["folder", "item", "depth", "maxDepth", "disabled", "config"];
501
+ function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
502
+ function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
453
503
  var _SelectableNode = function SelectableNode(_ref) {
454
504
  var folder = _ref.folder,
455
505
  item = _ref.item,
@@ -457,16 +507,18 @@ var _SelectableNode = function SelectableNode(_ref) {
457
507
  depth = _ref$depth === void 0 ? 0 : _ref$depth,
458
508
  maxDepth = _ref.maxDepth,
459
509
  disabled = _ref.disabled,
460
- rest = _objectWithoutProperties(_ref, _excluded$2);
510
+ config = _ref.config,
511
+ rest = _objectWithoutProperties(_ref, _excluded$3);
461
512
  var selection = rest.selection,
462
513
  onSelect = rest.onSelect;
463
- var _useTranslation = useTranslation(),
514
+ var _useTranslation = useTranslation(config),
464
515
  t = _useTranslation.t;
465
516
  var isDisabled = disabled || (item === null || item === void 0 ? void 0 : item.id) === folder.id || depth > maxDepth;
466
517
  var renderChildren = function renderChildren() {
467
518
  if (isNotPresent(folder.children)) return null;
468
519
  return folder.children.map(function (child) {
469
- return /*#__PURE__*/createElement(_SelectableNode, _objectSpread$7(_objectSpread$7({}, _objectSpread$7(_objectSpread$7({}, rest), {}, {
520
+ return /*#__PURE__*/createElement(_SelectableNode, _objectSpread$9(_objectSpread$9({}, _objectSpread$9(_objectSpread$9({}, rest), {}, {
521
+ config: config,
470
522
  item: item,
471
523
  maxDepth: maxDepth
472
524
  })), {}, {
@@ -483,7 +535,7 @@ var _SelectableNode = function SelectableNode(_ref) {
483
535
  "opacity-60": isDisabled
484
536
  }),
485
537
  title: isDisabled ? t("moveToFolder.notAllowed") : undefined,
486
- children: [/*#__PURE__*/jsx(Node$1, _objectSpread$7(_objectSpread$7({}, _objectSpread$7(_objectSpread$7({}, rest), {}, {
538
+ children: [/*#__PURE__*/jsx(Node$1, _objectSpread$9(_objectSpread$9({}, _objectSpread$9(_objectSpread$9({}, rest), {}, {
487
539
  depth: depth,
488
540
  folder: folder
489
541
  })), {}, {
@@ -500,8 +552,8 @@ var _SelectableNode = function SelectableNode(_ref) {
500
552
  });
501
553
  };
502
554
 
503
- function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
504
- function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
555
+ function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
556
+ function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
505
557
  var PaneBody = function PaneBody(_ref) {
506
558
  var item = _ref.item,
507
559
  config = _ref.config,
@@ -524,7 +576,7 @@ var PaneBody = function PaneBody(_ref) {
524
576
  var _useFetchFolders = useFetchFolders(config),
525
577
  _useFetchFolders$data = _useFetchFolders.data,
526
578
  folders = _useFetchFolders$data === void 0 ? [] : _useFetchFolders$data;
527
- var _useTranslation = useTranslation(),
579
+ var _useTranslation = useTranslation(config),
528
580
  t = _useTranslation.t;
529
581
  var folderDepth = 0;
530
582
  if (item) {
@@ -558,12 +610,13 @@ var PaneBody = function PaneBody(_ref) {
558
610
  className: "pb-6",
559
611
  children: folders.map(function (folder) {
560
612
  return /*#__PURE__*/createElement(_SelectableNode, {
613
+ config: config,
561
614
  folder: folder,
562
615
  item: item,
563
616
  maxDepth: maxDepth,
564
617
  selection: selection,
565
618
  disabled: (item === null || item === void 0 ? void 0 : item.id) === folder.id || maxDepth <= 0,
566
- itemLabel: config.itemLabel,
619
+ itemLabel: config.labels.item,
567
620
  key: folder.id,
568
621
  onSelect: function onSelect(folder) {
569
622
  return setSelection(folder.id);
@@ -574,19 +627,19 @@ var PaneBody = function PaneBody(_ref) {
574
627
  className: "space-x-2",
575
628
  children: [/*#__PURE__*/jsxs("div", {
576
629
  className: "flex flex-1 space-x-2",
577
- children: [/*#__PURE__*/jsx(Button, _objectSpread$6({
630
+ children: [/*#__PURE__*/jsx(Button, _objectSpread$8({
578
631
  disabled: !selection,
579
632
  label: t("common.save"),
580
633
  style: "primary",
581
634
  onClick: function onClick() {
582
635
  return onSubmit(selection);
583
636
  }
584
- }, submitButtonProps)), /*#__PURE__*/jsx(Button, _objectSpread$6({
637
+ }, submitButtonProps)), /*#__PURE__*/jsx(Button, _objectSpread$8({
585
638
  label: t("common.cancel"),
586
639
  style: "text",
587
640
  onClick: onClose
588
641
  }, cancelButtonProps))]
589
- }), onRemove && /*#__PURE__*/jsx(Button, _objectSpread$6({
642
+ }), onRemove && /*#__PURE__*/jsx(Button, _objectSpread$8({
590
643
  label: t("moveToFolder.remove"),
591
644
  style: "tertiary",
592
645
  onClick: onRemove
@@ -627,14 +680,14 @@ var MoveFolderPane = function MoveFolderPane(_ref) {
627
680
  });
628
681
  };
629
682
 
630
- var _excluded$1 = ["folder", "depth"];
631
- function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
632
- function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
633
- var _DraggableNode = function DraggableNode(_ref) {
683
+ var _excluded$2 = ["folder", "depth"];
684
+ function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
685
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
686
+ var _DraggableNode$1 = function DraggableNode(_ref) {
634
687
  var folder = _ref.folder,
635
688
  _ref$depth = _ref.depth,
636
689
  depth = _ref$depth === void 0 ? 0 : _ref$depth,
637
- rest = _objectWithoutProperties(_ref, _excluded$1);
690
+ rest = _objectWithoutProperties(_ref, _excluded$2);
638
691
  var _useDraggable = useDraggable({
639
692
  id: "draggable-item--".concat(folder.id),
640
693
  data: folder,
@@ -654,7 +707,7 @@ var _DraggableNode = function DraggableNode(_ref) {
654
707
  var renderChildren = function renderChildren() {
655
708
  if (isNotPresent(folder.children) || isDragging) return null;
656
709
  return folder.children.map(function (child) {
657
- return /*#__PURE__*/createElement(_DraggableNode, _objectSpread$5(_objectSpread$5({}, rest), {}, {
710
+ return /*#__PURE__*/createElement(_DraggableNode$1, _objectSpread$7(_objectSpread$7({}, rest), {}, {
658
711
  depth: depth + 1,
659
712
  folder: child,
660
713
  key: child.id
@@ -662,14 +715,14 @@ var _DraggableNode = function DraggableNode(_ref) {
662
715
  });
663
716
  };
664
717
  return /*#__PURE__*/jsxs(Fragment, {
665
- children: [/*#__PURE__*/jsx(Node$1, _objectSpread$5(_objectSpread$5(_objectSpread$5({}, rest), {}, {
718
+ children: [/*#__PURE__*/jsx(Node$1, _objectSpread$7(_objectSpread$7(_objectSpread$7({}, rest), {}, {
666
719
  className: classNames({
667
720
  "neeto-ui-rounded-lg hover:neeto-ui-bg-gray-100 w-full min-w-0 cursor-move transition-colors": true,
668
721
  "neeto-ui-bg-gray-100 opacity-50": isDragging,
669
722
  "neeto-ui-border-primary-500 border": isOver,
670
723
  "border border-transparent": !isOver
671
724
  })
672
- }, _objectSpread$5(_objectSpread$5({
725
+ }, _objectSpread$7(_objectSpread$7({
673
726
  depth: depth,
674
727
  folder: folder
675
728
  }, attributes), listeners)), {}, {
@@ -681,9 +734,9 @@ var _DraggableNode = function DraggableNode(_ref) {
681
734
  });
682
735
  };
683
736
 
684
- function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
685
- function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
686
- var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
737
+ function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
738
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
739
+ var RearrangeFoldersPane = function RearrangeFoldersPane(_ref) {
687
740
  var config = _ref.config,
688
741
  onClose = _ref.onClose;
689
742
  var _useState = useState(null),
@@ -694,7 +747,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
694
747
  _useState4 = _slicedToArray(_useState3, 2),
695
748
  changes = _useState4[0],
696
749
  setChanges = _useState4[1];
697
- var _useTranslation = useTranslation(),
750
+ var _useTranslation = useTranslation(config),
698
751
  t = _useTranslation.t;
699
752
  var _useFetchFolders = useFetchFolders(config),
700
753
  folders = _useFetchFolders.data;
@@ -750,7 +803,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
750
803
  icon: /*#__PURE__*/jsx(Reorder, {
751
804
  className: "neeto-ui-text-gray-500 relative -left-[0.3125rem] flex-shrink-0"
752
805
  }),
753
- itemLabel: config.itemLabel
806
+ itemLabel: config.labels.item
754
807
  };
755
808
  return /*#__PURE__*/jsxs(Fragment, {
756
809
  children: [/*#__PURE__*/jsx(Pane.Header, {
@@ -766,7 +819,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
766
819
  },
767
820
  children: [/*#__PURE__*/jsx(Pane.Body, {
768
821
  className: "pb-6",
769
- children: /*#__PURE__*/createElement(_DraggableNode, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
822
+ children: /*#__PURE__*/createElement(_DraggableNode$1, _objectSpread$6(_objectSpread$6({}, nodeProps), {}, {
770
823
  folder: tree,
771
824
  key: tree.id
772
825
  }))
@@ -784,7 +837,7 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
784
837
  })]
785
838
  }), /*#__PURE__*/createPortal(/*#__PURE__*/jsx(DragOverlay, {
786
839
  zIndex: 99999,
787
- children: dragItem && /*#__PURE__*/jsx(Node$1, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
840
+ children: dragItem && /*#__PURE__*/jsx(Node$1, _objectSpread$6(_objectSpread$6({}, nodeProps), {}, {
788
841
  className: "neeto-ui-bg-gray-200",
789
842
  depth: 0,
790
843
  folder: dragItem
@@ -794,6 +847,312 @@ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
794
847
  });
795
848
  };
796
849
 
850
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
851
+ function _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; } }
852
+ function _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; }
853
+ var distanceBetween = function distanceBetween(p1, p2) {
854
+ return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));
855
+ };
856
+ var centerOfRectangle = function centerOfRectangle(rect) {
857
+ var left = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : rect.left;
858
+ var top = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : rect.top;
859
+ return {
860
+ x: left + rect.width * 0.5,
861
+ y: top + rect.height * 0.5
862
+ };
863
+ };
864
+ var closestCenter = function closestCenter(_ref) {
865
+ var activeItem = _ref.activeItem;
866
+ return function (_ref2) {
867
+ var collisionRect = _ref2.collisionRect,
868
+ droppableRects = _ref2.droppableRects,
869
+ droppableContainers = _ref2.droppableContainers;
870
+ var centerRect = centerOfRectangle(collisionRect, collisionRect.left - 30, collisionRect.top - 30);
871
+ var minDistance = Number.POSITIVE_INFINITY;
872
+ var collision = {
873
+ id: undefined
874
+ };
875
+
876
+ // eslint-disable-next-line @bigbinary/neeto/use-array-methods
877
+ var _iterator = _createForOfIteratorHelper(droppableContainers),
878
+ _step;
879
+ try {
880
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
881
+ var droppableContainer = _step.value;
882
+ var rect = droppableRects.get(droppableContainer.id);
883
+ if (!rect || droppableContainer.id === activeItem.id) continue;
884
+ var distance = distanceBetween(centerOfRectangle(rect), centerRect);
885
+ if (distance < minDistance) {
886
+ minDistance = distance;
887
+ collision = {
888
+ id: droppableContainer.id,
889
+ data: {
890
+ droppableContainer: droppableContainer,
891
+ value: distance
892
+ }
893
+ };
894
+ }
895
+ }
896
+ } catch (err) {
897
+ _iterator.e(err);
898
+ } finally {
899
+ _iterator.f();
900
+ }
901
+ return [collision];
902
+ };
903
+ };
904
+
905
+ var PlaceholderNode = function PlaceholderNode(_ref) {
906
+ var folder = _ref.folder,
907
+ dragState = _ref.dragState;
908
+ var overItem = dragState.overItem;
909
+ var id = useId();
910
+ var isOver = id === (overItem === null || overItem === void 0 ? void 0 : overItem.id);
911
+ var depth = folder.meta.depth + 1;
912
+ var meta = {
913
+ parent: folder,
914
+ index: -1,
915
+ depth: depth
916
+ };
917
+ var _useDroppable = useDroppable({
918
+ id: "droppable-placeholder--".concat(folder.name),
919
+ data: {
920
+ id: id,
921
+ meta: meta
922
+ }
923
+ }),
924
+ setDroppableRef = _useDroppable.setNodeRef;
925
+ return /*#__PURE__*/jsxs("div", {
926
+ className: "flex w-full",
927
+ children: [/*#__PURE__*/jsx("div", {
928
+ style: {
929
+ width: REORDER_TREE_INDENT_WIDTH * depth
930
+ }
931
+ }), /*#__PURE__*/jsx("div", {
932
+ ref: setDroppableRef,
933
+ className: classNames({
934
+ "min-w-0 flex-1 transition-colors": true,
935
+ "neeto-ui-border-primary-500 border-b-2": isOver
936
+ })
937
+ })]
938
+ });
939
+ };
940
+
941
+ var _excluded$1 = ["folder", "dragState"];
942
+ function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
943
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
944
+ var _DraggableNode = function DraggableNode(_ref) {
945
+ var _overItem$meta$parent;
946
+ var folder = _ref.folder,
947
+ dragState = _ref.dragState,
948
+ rest = _objectWithoutProperties(_ref, _excluded$1);
949
+ var overItem = dragState.overItem;
950
+ var isOverItem = folder.id === (overItem === null || overItem === void 0 ? void 0 : overItem.id);
951
+ var isOverParent = folder.id === (overItem === null || overItem === void 0 || (_overItem$meta$parent = overItem.meta.parent) === null || _overItem$meta$parent === void 0 ? void 0 : _overItem$meta$parent.id);
952
+ var isRoot = folder.meta.depth <= 0;
953
+ var _useDraggable = useDraggable({
954
+ id: "draggable-item--".concat(folder.id),
955
+ data: folder,
956
+ disabled: isRoot
957
+ }),
958
+ isDragging = _useDraggable.isDragging,
959
+ attributes = _useDraggable.attributes,
960
+ listeners = _useDraggable.listeners,
961
+ setDraggableRef = _useDraggable.setNodeRef;
962
+ var _useDroppable = useDroppable({
963
+ id: "droppable-item--".concat(folder.id),
964
+ data: folder,
965
+ disabled: isRoot || isDragging
966
+ }),
967
+ setDroppableRef = _useDroppable.setNodeRef;
968
+ var renderChildren = function renderChildren() {
969
+ if (isDragging) return null;
970
+ return /*#__PURE__*/jsxs(React.Fragment, {
971
+ children: [/*#__PURE__*/jsx(PlaceholderNode, {
972
+ dragState: dragState,
973
+ folder: folder
974
+ }), isArray(folder.children) && folder.children.map(function (child) {
975
+ return /*#__PURE__*/createElement(_DraggableNode, _objectSpread$5(_objectSpread$5({}, _objectSpread$5(_objectSpread$5({}, rest), {}, {
976
+ dragState: dragState
977
+ })), {}, {
978
+ depth: child.meta.depth,
979
+ folder: child,
980
+ key: child.id
981
+ }));
982
+ })]
983
+ }, "".concat(folder.id, "--container"));
984
+ };
985
+ return /*#__PURE__*/jsxs(Fragment, {
986
+ children: [/*#__PURE__*/jsx(Node$1, _objectSpread$5(_objectSpread$5({
987
+ depth: folder.meta.depth
988
+ }, _objectSpread$5(_objectSpread$5(_objectSpread$5({}, rest), {}, {
989
+ folder: folder
990
+ }, attributes), listeners)), {}, {
991
+ className: classNames({
992
+ "hover:neeto-ui-bg-gray-100 w-full cursor-move transition-colors": true,
993
+ "neeto-ui-bg-gray-100 opacity-50": isDragging,
994
+ "neeto-ui-bg-primary-50": isOverParent,
995
+ "neeto-ui-border-primary-500 border-b-2": isOverItem
996
+ }),
997
+ ref: function ref(_ref2) {
998
+ setDroppableRef(_ref2);
999
+ setDraggableRef(_ref2);
1000
+ }
1001
+ })), renderChildren()]
1002
+ });
1003
+ };
1004
+
1005
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1006
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1007
+ var initialDragState = {
1008
+ activeItem: null,
1009
+ overItem: null
1010
+ };
1011
+ var sensorConfig = {
1012
+ activationConstraint: {
1013
+ distance: 8
1014
+ }
1015
+ };
1016
+ var measuringConfig = {
1017
+ droppable: {
1018
+ frequency: 500
1019
+ }
1020
+ };
1021
+
1022
+ // Reorder with support for position adjustment
1023
+ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
1024
+ var config = _ref.config,
1025
+ onClose = _ref.onClose;
1026
+ var _useState = useState(initialDragState),
1027
+ _useState2 = _slicedToArray(_useState, 2),
1028
+ dragState = _useState2[0],
1029
+ setDragState = _useState2[1];
1030
+ var _useState3 = useState({}),
1031
+ _useState4 = _slicedToArray(_useState3, 2),
1032
+ changes = _useState4[0],
1033
+ setChanges = _useState4[1];
1034
+ var _useTranslation = useTranslation(config),
1035
+ t = _useTranslation.t;
1036
+ var _useFetchFolders = useFetchFolders(config),
1037
+ folders = _useFetchFolders.data;
1038
+ var _useReorderFolders = useReorderFolders(config),
1039
+ reorderFolders = _useReorderFolders.mutate;
1040
+ var sensors = useSensors(useSensor(PointerSensor, sensorConfig));
1041
+ var _useStateWithDependen = useStateWithDependency(function () {
1042
+ return {
1043
+ name: "/",
1044
+ id: null,
1045
+ children: folders
1046
+ };
1047
+ }, [folders]),
1048
+ _useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
1049
+ baseTree = _useStateWithDependen2[0],
1050
+ setBaseTree = _useStateWithDependen2[1];
1051
+
1052
+ // Decorates tree with meta info. Can be optimized when needed.
1053
+ var tree = useMemo(function () {
1054
+ return mapToSortedTree(treeToMap(baseTree));
1055
+ }, [baseTree]);
1056
+ var onDragEnd = function onDragEnd(_ref2) {
1057
+ var active = _ref2.active,
1058
+ over = _ref2.over;
1059
+ setDragState(initialDragState);
1060
+ if (!over) return;
1061
+ var foldersMap = treeToMap(tree);
1062
+ var activeFolder = foldersMap[active.data.current.id];
1063
+ var targetFolder = foldersMap[over.data.current.meta.parent.id];
1064
+ var targetIndex = over.data.current.meta.index + 1; // `index` starts from -1 with placeholder
1065
+
1066
+ // Guards: Check moving inside invalid directories.
1067
+ if (!targetFolder || activeFolder.id === targetFolder.id) return;
1068
+ if (activeFolder.meta.parent.id === targetFolder.id && activeFolder.meta.index === targetIndex) {
1069
+ return;
1070
+ }
1071
+
1072
+ // Check moving to a folder with depth greater than the allowed limit.
1073
+ // maxDepth + 1 due to extra root node added for the tree
1074
+ var srcDepth = measureDepth(activeFolder);
1075
+ var dstDepth = targetFolder.meta.depth;
1076
+ if (srcDepth + dstDepth >= config.maxDepth + 1) {
1077
+ Toastr.error(t("moveToFolder.depthExceeded", {
1078
+ maxDepth: config.maxDepth
1079
+ }));
1080
+ return;
1081
+ }
1082
+ activeFolder.meta.parent = targetFolder;
1083
+ activeFolder.meta.__index = targetIndex;
1084
+ var newTree = mapToSortedTree(foldersMap);
1085
+ setBaseTree(newTree);
1086
+ setChanges(assoc(activeFolder.id, {
1087
+ parentId: targetFolder.id,
1088
+ index: targetIndex
1089
+ }));
1090
+ };
1091
+ var onSubmit = function onSubmit() {
1092
+ var payload = {
1093
+ changes: changes
1094
+ };
1095
+ reorderFolders(payload, {
1096
+ onSuccess: onClose
1097
+ });
1098
+ };
1099
+ var nodeProps = {
1100
+ icon: /*#__PURE__*/jsx(Reorder, {
1101
+ className: "neeto-ui-text-gray-500 relative -left-[0.3125rem] flex-shrink-0"
1102
+ }),
1103
+ itemLabel: config.labels.item
1104
+ };
1105
+ return /*#__PURE__*/jsxs(Fragment, {
1106
+ children: [/*#__PURE__*/jsx(Pane.Header, {
1107
+ children: /*#__PURE__*/jsx(Typography, {
1108
+ style: "h2",
1109
+ children: t("reorderFolder.title")
1110
+ })
1111
+ }), /*#__PURE__*/jsxs(DndContext, {
1112
+ onDragEnd: onDragEnd,
1113
+ sensors: sensors,
1114
+ collisionDetection: closestCenter(dragState),
1115
+ measuring: measuringConfig,
1116
+ onDragOver: function onDragOver(_ref3) {
1117
+ var over = _ref3.over;
1118
+ setDragState(assoc("overItem", over === null || over === void 0 ? void 0 : over.data.current));
1119
+ },
1120
+ onDragStart: function onDragStart(_ref4) {
1121
+ var active = _ref4.active;
1122
+ setDragState(assoc("activeItem", active.data.current));
1123
+ },
1124
+ children: [/*#__PURE__*/jsx(Pane.Body, {
1125
+ className: "pb-6",
1126
+ children: /*#__PURE__*/createElement(_DraggableNode, _objectSpread$4(_objectSpread$4({}, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
1127
+ dragState: dragState
1128
+ })), {}, {
1129
+ folder: tree,
1130
+ key: tree.id
1131
+ }))
1132
+ }), /*#__PURE__*/jsxs(Pane.Footer, {
1133
+ className: "gap-2",
1134
+ children: [/*#__PURE__*/jsx(Button, {
1135
+ disabled: isEmpty(changes),
1136
+ label: t("common.save"),
1137
+ style: "primary",
1138
+ onClick: onSubmit
1139
+ }), /*#__PURE__*/jsx(Button, {
1140
+ label: t("common.cancel"),
1141
+ style: "text",
1142
+ onClick: onClose
1143
+ })]
1144
+ }), /*#__PURE__*/createPortal(/*#__PURE__*/jsx(DragOverlay, {
1145
+ zIndex: 99999,
1146
+ children: dragState && /*#__PURE__*/jsx(Node$1, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
1147
+ className: "neeto-ui-bg-gray-200 pl-4 pr-12",
1148
+ depth: 0,
1149
+ folder: dragState.activeItem
1150
+ }))
1151
+ }), document.body)]
1152
+ })]
1153
+ });
1154
+ };
1155
+
797
1156
  function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
798
1157
  function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
799
1158
  var FoldersPane = function FoldersPane(_ref) {
@@ -821,6 +1180,7 @@ var FoldersPane = function FoldersPane(_ref) {
821
1180
  config: config,
822
1181
  onClose: onClose
823
1182
  };
1183
+ var ReorderPaneComponent = config.reorderMode === "reorder" ? ReorderFoldersPane : RearrangeFoldersPane;
824
1184
  return /*#__PURE__*/jsx(Pane, {
825
1185
  onClose: onClose,
826
1186
  isOpen: !!type,
@@ -829,7 +1189,7 @@ var FoldersPane = function FoldersPane(_ref) {
829
1189
  return /*#__PURE__*/jsxs(Fragment, {
830
1190
  children: [(type === "edit" || type === "add") && /*#__PURE__*/jsx(AddEditPane, _objectSpread$3({}, _objectSpread$3({
831
1191
  setFocusField: setFocusField
832
- }, commonProps))), type === "move" && /*#__PURE__*/jsx(MoveFolderPane, _objectSpread$3({}, commonProps)), type === "reorder" && /*#__PURE__*/jsx(ReorderFoldersPane, _objectSpread$3({}, commonProps))]
1192
+ }, commonProps))), type === "move" && /*#__PURE__*/jsx(MoveFolderPane, _objectSpread$3({}, commonProps)), type === "reorder" && /*#__PURE__*/jsx(ReorderPaneComponent, _objectSpread$3({}, commonProps))]
833
1193
  });
834
1194
  }
835
1195
  });
@@ -854,8 +1214,9 @@ var FolderTile = function FolderTile(_ref) {
854
1214
  itemLabel = _ref.itemLabel,
855
1215
  folder = _ref.folder,
856
1216
  actions = _ref.actions,
1217
+ config = _ref.config,
857
1218
  onSelect = _ref.onSelect;
858
- var _useTranslation = useTranslation(),
1219
+ var _useTranslation = useTranslation(config),
859
1220
  t = _useTranslation.t;
860
1221
  var actionCallback = function actionCallback(callback) {
861
1222
  return function (event) {
@@ -932,7 +1293,7 @@ var FoldersList = function FoldersList(_ref) {
932
1293
  onSelect = _ref.onSelect;
933
1294
  var config = _objectSpread$2(_objectSpread$2({}, DEFAULT_CONFIG), configProps);
934
1295
  var params = useQueryParams();
935
- var _useTranslation = useTranslation(),
1296
+ var _useTranslation = useTranslation(config),
936
1297
  t = _useTranslation.t;
937
1298
  var fetchParams = pick(["sortBy", "orderBy"], params);
938
1299
  var _useFolders = useFolders(_objectSpread$2(_objectSpread$2({}, config), {}, {
@@ -956,10 +1317,11 @@ var FoldersList = function FoldersList(_ref) {
956
1317
  children: subFolders.map(function (folder) {
957
1318
  return /*#__PURE__*/createElement(FolderTile, {
958
1319
  actions: actions,
1320
+ config: config,
959
1321
  folder: folder,
960
1322
  onSelect: onSelect,
961
1323
  isSelected: selection.includes(folder.id),
962
- itemLabel: config.itemLabel,
1324
+ itemLabel: config.labels.item,
963
1325
  key: folder.id,
964
1326
  link: buildUrl(config.folderPath, _objectSpread$2(_objectSpread$2({}, params), {}, {
965
1327
  folderId: folder.sid
@@ -1016,7 +1378,7 @@ var FoldersTree = function FoldersTree(_ref) {
1016
1378
  _useState2 = _slicedToArray(_useState, 2),
1017
1379
  expandedKeys = _useState2[0],
1018
1380
  setExpandedKeys = _useState2[1];
1019
- var _useTranslation = useTranslation(),
1381
+ var _useTranslation = useTranslation(config),
1020
1382
  t = _useTranslation.t;
1021
1383
  var params = useQueryParams({
1022
1384
  toCamelCase: false