@bigbinary/neeto-folders-frontend 1.1.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.
@@ -0,0 +1,931 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
5
+ var _regeneratorRuntime = require('@babel/runtime/regenerator');
6
+ var shallow = require('zustand/shallow');
7
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
8
+ var utils = require('@bigbinary/neeto-commons-frontend/utils');
9
+ var Alert = require('@bigbinary/neetoui/Alert');
10
+ var reactI18next = require('react-i18next');
11
+ var reactRouterDom = require('react-router-dom');
12
+ var useFolderActions = require('../useFolderActions-DCs7hXdW.js');
13
+ var pathUtils = require('../pathUtils-CHuLm_t6.js');
14
+ var jsxRuntime = require('react/jsx-runtime');
15
+ var Pane = require('@bigbinary/neetoui/Pane');
16
+ var react = require('react');
17
+ var formik = require('formik');
18
+ var Typography = require('@bigbinary/neetoui/Typography');
19
+ var Input = require('@bigbinary/neetoui/formik/Input');
20
+ var Select = require('@bigbinary/neetoui/formik/Select');
21
+ var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
22
+ var ramda = require('ramda');
23
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
24
+ var Button = require('@bigbinary/neetoui/Button');
25
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
26
+ var classNames = require('classnames');
27
+ var neetoCist = require('@bigbinary/neeto-cist');
28
+ var Radio = require('@bigbinary/neetoui/Radio');
29
+ var Tooltip = require('@bigbinary/neetoui/Tooltip');
30
+ var core = require('@dnd-kit/core');
31
+ var Folder = require('@bigbinary/neeto-icons/Folder');
32
+ var Toastr = require('@bigbinary/neetoui/Toastr');
33
+ var reactDom = require('react-dom');
34
+ var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
35
+ var Checkbox = require('@bigbinary/neetoui/Checkbox');
36
+ var Tree = require('@bigbinary/neetoui/Tree');
37
+ require('i18next');
38
+ require('@tanstack/react-query');
39
+ require('./constants.js');
40
+ require('zustand');
41
+
42
+ 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; }
43
+ 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; }
44
+ var FoldersAlerts = function FoldersAlerts(_ref) {
45
+ var config = _ref.config;
46
+ var _useFolderStore = useFolderActions.useFolderStore(function (store) {
47
+ return {
48
+ setFolderState: store["setFolderState"]
49
+ };
50
+ }, shallow.shallow),
51
+ setFolderState = _useFolderStore.setFolderState;
52
+ var queryParams = reactUtils.useQueryParams({
53
+ toCamelCase: false
54
+ });
55
+ var history = reactRouterDom.useHistory();
56
+ var _useTranslation = reactI18next.useTranslation(),
57
+ t = _useTranslation.t;
58
+ var _useFolderStore2 = useFolderActions.useFolderStore(function (store) {
59
+ var _store$alertState, _store$alertState2;
60
+ return {
61
+ type: (_store$alertState = store["alertState"]) === null || _store$alertState === void 0 ? void 0 : _store$alertState["type"],
62
+ item: (_store$alertState2 = store["alertState"]) === null || _store$alertState2 === void 0 ? void 0 : _store$alertState2["item"]
63
+ };
64
+ }, shallow.shallow),
65
+ type = _useFolderStore2.type,
66
+ item = _useFolderStore2.item;
67
+ var _useDestroyFolder = useFolderActions.useDestroyFolder(config),
68
+ destroyFolder = _useDestroyFolder.mutateAsync,
69
+ isLoading = _useDestroyFolder.isLoading;
70
+ var _useFolders = useFolderActions.useFolders(config),
71
+ folders = _useFolders.folders;
72
+ var onClose = function onClose() {
73
+ return setFolderState({
74
+ alertState: null
75
+ });
76
+ };
77
+ var alertProps = {
78
+ isOpen: !!type,
79
+ isSubmitting: isLoading,
80
+ onClose: onClose
81
+ };
82
+ var onConfirmDelete = /*#__PURE__*/function () {
83
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
84
+ var path, parent;
85
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
86
+ while (1) switch (_context.prev = _context.next) {
87
+ case 0:
88
+ _context.next = 2;
89
+ return destroyFolder(item.id);
90
+ case 2:
91
+ onClose();
92
+ if (!(!useFolderActions.isActiveFolder(item.sid) || !folders)) {
93
+ _context.next = 5;
94
+ break;
95
+ }
96
+ return _context.abrupt("return");
97
+ case 5:
98
+ path = pathUtils.pathToFolder(folders, item.id);
99
+ parent = path[path.length - 2];
100
+ if (parent) {
101
+ _context.next = 9;
102
+ break;
103
+ }
104
+ return _context.abrupt("return");
105
+ case 9:
106
+ history.replace(utils.buildUrl(config.folderPath, _objectSpread$9(_objectSpread$9({}, queryParams), {}, {
107
+ folderId: parent.sid
108
+ })));
109
+ case 10:
110
+ case "end":
111
+ return _context.stop();
112
+ }
113
+ }, _callee);
114
+ }));
115
+ return function onConfirmDelete() {
116
+ return _ref2.apply(this, arguments);
117
+ };
118
+ }();
119
+ if (type === "delete") {
120
+ alertProps.title = t("deleteFolder.title");
121
+ alertProps.message = /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
122
+ i18nKey: "deleteFolder.info",
123
+ values: item
124
+ });
125
+ if (config.customizeAlerts) config.customizeAlerts(type, item, alertProps);
126
+ alertProps.onSubmit = onConfirmDelete;
127
+ }
128
+ return /*#__PURE__*/jsxRuntime.jsx(Alert, _objectSpread$9({}, alertProps));
129
+ };
130
+
131
+ var flattenTree = ramda.pipe(pathUtils.treeToMap, ramda.values);
132
+ var AddEditPane = function AddEditPane(_ref) {
133
+ var config = _ref.config,
134
+ onClose = _ref.onClose;
135
+ var _useFolderStore = useFolderActions.useFolderStore(function (store) {
136
+ var _store$paneState, _store$paneState2;
137
+ return {
138
+ type: (_store$paneState = store["paneState"]) === null || _store$paneState === void 0 ? void 0 : _store$paneState["type"],
139
+ item: (_store$paneState2 = store["paneState"]) === null || _store$paneState2 === void 0 ? void 0 : _store$paneState2["item"]
140
+ };
141
+ }, shallow.shallow),
142
+ type = _useFolderStore.type,
143
+ item = _useFolderStore.item;
144
+ var _useFetchFolders = useFolderActions.useFetchFolders(config),
145
+ folders = _useFetchFolders.data;
146
+ var _useCreateFolder = useFolderActions.useCreateFolder(config),
147
+ createFolder = _useCreateFolder.mutate;
148
+ var _useUpdateFolder = useFolderActions.useUpdateFolder(config),
149
+ updateFolder = _useUpdateFolder.mutateAsync;
150
+ var _useTranslation = reactI18next.useTranslation(),
151
+ t = _useTranslation.t;
152
+ var isEditing = type === "edit" && item;
153
+ var initialValues = isEditing ? item : {
154
+ name: "",
155
+ parentId: null
156
+ };
157
+ var folderOptions = react.useMemo(function () {
158
+ return flattenTree(folders);
159
+ }, [folders]);
160
+ var onSubmitForm = /*#__PURE__*/function () {
161
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values) {
162
+ var payload;
163
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
164
+ while (1) switch (_context.prev = _context.next) {
165
+ case 0:
166
+ payload = {
167
+ name: values.name,
168
+ parent_id: values.parentId
169
+ };
170
+ if (!isEditing) {
171
+ _context.next = 6;
172
+ break;
173
+ }
174
+ _context.next = 4;
175
+ return updateFolder({
176
+ id: item.id,
177
+ payload: payload
178
+ });
179
+ case 4:
180
+ _context.next = 8;
181
+ break;
182
+ case 6:
183
+ _context.next = 8;
184
+ return createFolder(payload);
185
+ case 8:
186
+ onClose();
187
+ case 9:
188
+ case "end":
189
+ return _context.stop();
190
+ }
191
+ }, _callee);
192
+ }));
193
+ return function onSubmitForm(_x) {
194
+ return _ref2.apply(this, arguments);
195
+ };
196
+ }();
197
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
198
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
199
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
200
+ style: "h2",
201
+ children: isEditing ? t("folders.edit") : t("folders.add")
202
+ })
203
+ }), /*#__PURE__*/jsxRuntime.jsx(formik.Formik, {
204
+ initialValues: initialValues,
205
+ onSubmit: onSubmitForm,
206
+ children: function children(_ref3) {
207
+ var setFieldValue = _ref3.setFieldValue;
208
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
209
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
210
+ children: /*#__PURE__*/jsxRuntime.jsxs(formik.Form, {
211
+ className: "w-full space-y-5",
212
+ children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
213
+ label: t("folders.name"),
214
+ name: "name"
215
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
216
+ children: [/*#__PURE__*/jsxRuntime.jsx(Select, {
217
+ isClearable: true,
218
+ filterOption: function filterOption(_ref4) {
219
+ var value = _ref4.value;
220
+ return value !== initialValues.id;
221
+ },
222
+ getOptionLabel: ramda.prop("name"),
223
+ getOptionValue: ramda.prop("id"),
224
+ label: t("createFolder.parentTitle"),
225
+ name: "parentId",
226
+ options: folderOptions,
227
+ onChange: function onChange(option) {
228
+ return setFieldValue("parentId", option ? option.id : null);
229
+ }
230
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
231
+ style: "nano",
232
+ children: t("createFolder.parentInfo")
233
+ })]
234
+ })]
235
+ })
236
+ }), /*#__PURE__*/jsxRuntime.jsx(Pane.Footer, {
237
+ children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock, {
238
+ cancelButtonProps: {
239
+ onClick: onClose
240
+ }
241
+ })
242
+ })]
243
+ });
244
+ }
245
+ })]
246
+ });
247
+ };
248
+
249
+ var _excluded$3 = ["icon", "itemLabel", "folder", "depth", "className", "onClick"];
250
+ 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; }
251
+ 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; }
252
+ var indentSize = 30;
253
+ var Node = function Node(_ref, ref) {
254
+ var _folder$children$leng, _folder$children;
255
+ var _ref$icon = _ref.icon,
256
+ icon = _ref$icon === void 0 ? null : _ref$icon,
257
+ itemLabel = _ref.itemLabel,
258
+ folder = _ref.folder,
259
+ depth = _ref.depth,
260
+ className = _ref.className,
261
+ onClick = _ref.onClick,
262
+ rest = _objectWithoutProperties(_ref, _excluded$3);
263
+ var _useTranslation = reactI18next.useTranslation(),
264
+ t = _useTranslation.t;
265
+ var metaInfo = [];
266
+ 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;
267
+ childCount > 0 && metaInfo.push(t("folders.subfolderCount", {
268
+ count: childCount
269
+ }));
270
+ folder.itemCount > 0 && metaInfo.push("".concat(folder.itemCount, " ").concat(itemLabel));
271
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
272
+ className: "flex",
273
+ children: [Array.from({
274
+ length: depth
275
+ }).map(function (_, index) {
276
+ return /*#__PURE__*/jsxRuntime.jsx("span", {
277
+ className: "relative border-l",
278
+ style: {
279
+ width: indentSize,
280
+ left: Math.round(indentSize / 2)
281
+ }
282
+ }, index);
283
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread$8(_objectSpread$8({}, _objectSpread$8(_objectSpread$8({}, rest), {}, {
284
+ onClick: onClick,
285
+ ref: ref
286
+ })), {}, {
287
+ className: classNames("relative my-1 flex cursor-pointer items-center px-2 py-1", className),
288
+ children: [icon, /*#__PURE__*/jsxRuntime.jsxs("div", {
289
+ className: "ml-2",
290
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
291
+ style: "body3",
292
+ weight: "medium",
293
+ children: folder.name
294
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
295
+ className: "relative -top-0.5",
296
+ style: "nano",
297
+ weight: "normal",
298
+ children: metaInfo.join(" . ")
299
+ })]
300
+ })]
301
+ }))]
302
+ });
303
+ };
304
+ var Node$1 = /*#__PURE__*/react.forwardRef(Node);
305
+
306
+ var _excluded$2 = ["folder", "item", "depth", "maxDepth", "disabled"];
307
+ 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; }
308
+ 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; }
309
+ var _SelectableNode = function SelectableNode(_ref) {
310
+ var folder = _ref.folder,
311
+ item = _ref.item,
312
+ _ref$depth = _ref.depth,
313
+ depth = _ref$depth === void 0 ? 0 : _ref$depth,
314
+ maxDepth = _ref.maxDepth,
315
+ disabled = _ref.disabled,
316
+ rest = _objectWithoutProperties(_ref, _excluded$2);
317
+ var selection = rest.selection,
318
+ onSelect = rest.onSelect;
319
+ var _useTranslation = reactI18next.useTranslation(),
320
+ t = _useTranslation.t;
321
+ var isDisabled = disabled || (item === null || item === void 0 ? void 0 : item.id) === folder.id || depth > maxDepth;
322
+ var renderChildren = function renderChildren() {
323
+ if (neetoCist.isNotPresent(folder.children)) return null;
324
+ return folder.children.map(function (child) {
325
+ return /*#__PURE__*/react.createElement(_SelectableNode, _objectSpread$7(_objectSpread$7({}, _objectSpread$7(_objectSpread$7({}, rest), {}, {
326
+ item: item,
327
+ maxDepth: maxDepth
328
+ })), {}, {
329
+ depth: depth + 1,
330
+ disabled: isDisabled,
331
+ folder: child,
332
+ key: child.id
333
+ }));
334
+ });
335
+ };
336
+ return /*#__PURE__*/jsxRuntime.jsx(Tooltip, {
337
+ content: t("moveToFolder.notAllowed"),
338
+ disabled: !isDisabled,
339
+ position: "top",
340
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
341
+ className: classNames({
342
+ "opacity-40": isDisabled
343
+ }),
344
+ children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$7(_objectSpread$7({}, _objectSpread$7(_objectSpread$7({}, rest), {}, {
345
+ depth: depth,
346
+ folder: folder
347
+ })), {}, {
348
+ icon: /*#__PURE__*/jsxRuntime.jsx(Radio.Item, {
349
+ readOnly: true,
350
+ checked: selection === folder.id,
351
+ name: "move-folder-option"
352
+ }),
353
+ onClick: isDisabled ? neetoCist.noop : function () {
354
+ return onSelect(folder);
355
+ }
356
+ })), renderChildren()]
357
+ })
358
+ });
359
+ };
360
+
361
+ 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; }
362
+ 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; }
363
+ var PaneBody = function PaneBody(_ref) {
364
+ var item = _ref.item,
365
+ config = _ref.config,
366
+ submitButtonProps = _ref.submitButtonProps,
367
+ cancelButtonProps = _ref.cancelButtonProps,
368
+ removeButtonProps = _ref.removeButtonProps,
369
+ onSubmit = _ref.onSubmit,
370
+ onClose = _ref.onClose,
371
+ onRemove = _ref.onRemove;
372
+ var _useState = react.useState(null),
373
+ _useState2 = _slicedToArray(_useState, 2),
374
+ selection = _useState2[0],
375
+ setSelection = _useState2[1];
376
+ var _useFolderStore = useFolderActions.useFolderStore(function (store) {
377
+ return {
378
+ setFolderState: store["setFolderState"]
379
+ };
380
+ }, shallow.shallow),
381
+ setFolderState = _useFolderStore.setFolderState;
382
+ var _useFetchFolders = useFolderActions.useFetchFolders(config),
383
+ _useFetchFolders$data = _useFetchFolders.data,
384
+ folders = _useFetchFolders$data === void 0 ? [] : _useFetchFolders$data;
385
+ var _useTranslation = reactI18next.useTranslation(),
386
+ t = _useTranslation.t;
387
+ var folderDepth = 0;
388
+ if (item) {
389
+ // If item is a folder, measure the current depth from current folder to longest leaf.
390
+ var foldersMap = pathUtils.treeToMap(folders);
391
+ var folder = foldersMap[item.id];
392
+ if (folder) folderDepth = pathUtils.measureDepth(folder);
393
+ }
394
+ var maxDepth = config.maxDepth - folderDepth;
395
+ var onAddFolder = function onAddFolder() {
396
+ setFolderState({
397
+ paneState: {
398
+ type: "add",
399
+ item: null
400
+ }
401
+ });
402
+ };
403
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
404
+ children: [/*#__PURE__*/jsxRuntime.jsxs(Pane.Header, {
405
+ className: "flex items-center justify-between",
406
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
407
+ style: "h2",
408
+ children: t("moveToFolder.title")
409
+ }), /*#__PURE__*/jsxRuntime.jsx(Button, {
410
+ className: "mr-2",
411
+ label: t("folders.add"),
412
+ style: "link",
413
+ onClick: onAddFolder
414
+ })]
415
+ }), /*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
416
+ children: folders.map(function (folder) {
417
+ return /*#__PURE__*/react.createElement(_SelectableNode, {
418
+ folder: folder,
419
+ item: item,
420
+ maxDepth: maxDepth,
421
+ selection: selection,
422
+ disabled: (item === null || item === void 0 ? void 0 : item.id) === folder.id || maxDepth <= 0,
423
+ itemLabel: config.itemLabel,
424
+ key: folder.id,
425
+ onSelect: function onSelect(folder) {
426
+ return setSelection(folder.id);
427
+ }
428
+ });
429
+ })
430
+ }), /*#__PURE__*/jsxRuntime.jsxs(Pane.Footer, {
431
+ className: "space-x-2",
432
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
433
+ className: "flex flex-1 space-x-2",
434
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$6({
435
+ disabled: !selection,
436
+ label: t("common.save"),
437
+ style: "primary",
438
+ onClick: function onClick() {
439
+ return onSubmit(selection);
440
+ }
441
+ }, submitButtonProps)), /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$6({
442
+ label: t("common.cancel"),
443
+ style: "text",
444
+ onClick: onClose
445
+ }, cancelButtonProps))]
446
+ }), onRemove && /*#__PURE__*/jsxRuntime.jsx(Button, _objectSpread$6({
447
+ label: t("moveToFolder.remove"),
448
+ style: "tertiary",
449
+ onClick: onRemove
450
+ }, removeButtonProps))]
451
+ })]
452
+ });
453
+ };
454
+
455
+ var MoveFolderPane = function MoveFolderPane(_ref) {
456
+ var config = _ref.config,
457
+ onClose = _ref.onClose;
458
+ var _useFolderStore = useFolderActions.useFolderStore(function (store) {
459
+ var _store$paneState;
460
+ return {
461
+ item: (_store$paneState = store["paneState"]) === null || _store$paneState === void 0 ? void 0 : _store$paneState["item"]
462
+ };
463
+ }, shallow.shallow),
464
+ item = _useFolderStore.item;
465
+ var _useUpdateFolder = useFolderActions.useUpdateFolder(config),
466
+ updateFolder = _useUpdateFolder.mutate;
467
+ var onSaveSelection = function onSaveSelection(parentId) {
468
+ var payload = {
469
+ id: item.id,
470
+ parentId: parentId
471
+ };
472
+ updateFolder({
473
+ id: item.id,
474
+ payload: payload
475
+ }, {
476
+ onSuccess: onClose
477
+ });
478
+ };
479
+ return /*#__PURE__*/jsxRuntime.jsx(PaneBody, {
480
+ config: config,
481
+ item: item,
482
+ onClose: onClose,
483
+ onSubmit: onSaveSelection
484
+ });
485
+ };
486
+
487
+ var _excluded$1 = ["folder", "depth"];
488
+ 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; }
489
+ 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; }
490
+ var _DraggableNode = function DraggableNode(_ref) {
491
+ var folder = _ref.folder,
492
+ _ref$depth = _ref.depth,
493
+ depth = _ref$depth === void 0 ? 0 : _ref$depth,
494
+ rest = _objectWithoutProperties(_ref, _excluded$1);
495
+ var _useDraggable = core.useDraggable({
496
+ id: "draggable-item--".concat(folder.id),
497
+ data: folder,
498
+ disabled: depth <= 0
499
+ }),
500
+ isDragging = _useDraggable.isDragging,
501
+ attributes = _useDraggable.attributes,
502
+ listeners = _useDraggable.listeners,
503
+ setDraggableRef = _useDraggable.setNodeRef;
504
+ var _useDroppable = core.useDroppable({
505
+ id: "droppable-item--".concat(folder.id),
506
+ data: folder,
507
+ disabled: isDragging
508
+ }),
509
+ isOver = _useDroppable.isOver,
510
+ setDroppableRef = _useDroppable.setNodeRef;
511
+ var renderChildren = function renderChildren() {
512
+ if (neetoCist.isNotPresent(folder.children) || isDragging) return null;
513
+ return folder.children.map(function (child) {
514
+ return /*#__PURE__*/react.createElement(_DraggableNode, _objectSpread$5(_objectSpread$5({}, rest), {}, {
515
+ depth: depth + 1,
516
+ folder: child,
517
+ key: child.id
518
+ }));
519
+ });
520
+ };
521
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
522
+ children: [/*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$5(_objectSpread$5(_objectSpread$5({}, rest), {}, {
523
+ className: classNames({
524
+ "neeto-ui-bg-gray-100 opacity-50 ": isDragging,
525
+ "neeto-ui-border-primary-500 border": isOver,
526
+ "border border-transparent": !isOver
527
+ })
528
+ }, _objectSpread$5(_objectSpread$5({
529
+ depth: depth,
530
+ folder: folder
531
+ }, attributes), listeners)), {}, {
532
+ ref: function ref(_ref2) {
533
+ setDroppableRef(_ref2);
534
+ setDraggableRef(_ref2);
535
+ }
536
+ })), renderChildren()]
537
+ });
538
+ };
539
+
540
+ 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; }
541
+ 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; }
542
+ var ReorderFoldersPane = function ReorderFoldersPane(_ref) {
543
+ var config = _ref.config,
544
+ onClose = _ref.onClose;
545
+ var _useState = react.useState(null),
546
+ _useState2 = _slicedToArray(_useState, 2),
547
+ dragItem = _useState2[0],
548
+ setDragItem = _useState2[1];
549
+ var _useState3 = react.useState({}),
550
+ _useState4 = _slicedToArray(_useState3, 2),
551
+ changes = _useState4[0],
552
+ setChanges = _useState4[1];
553
+ var _useTranslation = reactI18next.useTranslation(),
554
+ t = _useTranslation.t;
555
+ var _useFetchFolders = useFolderActions.useFetchFolders(config),
556
+ folders = _useFetchFolders.data;
557
+ var _useReorderFolders = useFolderActions.useReorderFolders(config),
558
+ reorderFolders = _useReorderFolders.mutate;
559
+ var _useStateWithDependen = reactUtils.useStateWithDependency(function () {
560
+ return {
561
+ name: "/",
562
+ id: null,
563
+ children: folders
564
+ };
565
+ }, [folders]),
566
+ _useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
567
+ tree = _useStateWithDependen2[0],
568
+ setTree = _useStateWithDependen2[1];
569
+ var onDragEnd = function onDragEnd(_ref2) {
570
+ var _activeFolder$meta$pa;
571
+ var active = _ref2.active,
572
+ over = _ref2.over;
573
+ setDragItem(null);
574
+ if (!over) return;
575
+ var foldersMap = pathUtils.treeToMap(tree);
576
+ var activeFolder = foldersMap[active.data.current.id];
577
+ var overFolder = foldersMap[over.data.current.id];
578
+
579
+ // Check moving inside same directory
580
+ if (((_activeFolder$meta$pa = activeFolder.meta.parent) === null || _activeFolder$meta$pa === void 0 ? void 0 : _activeFolder$meta$pa.id) === overFolder.id) return;
581
+
582
+ // Check moving to a folder with depth greater than the allowed limit.
583
+ // maxDepth + 1 due to extra root node added for the tree
584
+ var activeDepth = pathUtils.measureDepth(activeFolder);
585
+ var overDepth = overFolder.meta.depth;
586
+ if (activeDepth + overDepth >= config.maxDepth + 1) {
587
+ Toastr.error(t("moveToFolder.depthExceeded", {
588
+ maxDepth: config.maxDepth
589
+ }));
590
+ return;
591
+ }
592
+ activeFolder.meta.parent = overFolder;
593
+ var newTree = pathUtils.mapToTree(foldersMap);
594
+ setTree(newTree);
595
+ setChanges(ramda.assoc(activeFolder.id, overFolder.id));
596
+ };
597
+ var onSubmit = function onSubmit() {
598
+ var payload = {
599
+ changes: changes
600
+ };
601
+ reorderFolders(payload, {
602
+ onSuccess: onClose
603
+ });
604
+ };
605
+ var nodeProps = {
606
+ icon: /*#__PURE__*/jsxRuntime.jsx(Folder, {}),
607
+ itemLabel: config.itemLabel
608
+ };
609
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
610
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
611
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
612
+ style: "h2",
613
+ children: t("reorderFolder.title")
614
+ })
615
+ }), /*#__PURE__*/jsxRuntime.jsxs(core.DndContext, {
616
+ onDragEnd: onDragEnd,
617
+ onDragStart: function onDragStart(_ref3) {
618
+ var active = _ref3.active;
619
+ return setDragItem(active.data.current);
620
+ },
621
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
622
+ children: /*#__PURE__*/react.createElement(_DraggableNode, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
623
+ folder: tree,
624
+ key: tree.id
625
+ }))
626
+ }), /*#__PURE__*/jsxRuntime.jsxs(Pane.Footer, {
627
+ className: "space-x-2",
628
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button, {
629
+ disabled: ramda.isEmpty(changes),
630
+ label: t("common.save"),
631
+ style: "primary",
632
+ onClick: onSubmit
633
+ }), /*#__PURE__*/jsxRuntime.jsx(Button, {
634
+ label: t("common.cancel"),
635
+ style: "text",
636
+ onClick: onClose
637
+ })]
638
+ }), /*#__PURE__*/reactDom.createPortal(/*#__PURE__*/jsxRuntime.jsx(core.DragOverlay, {
639
+ zIndex: 99999,
640
+ children: dragItem && /*#__PURE__*/jsxRuntime.jsx(Node$1, _objectSpread$4(_objectSpread$4({}, nodeProps), {}, {
641
+ className: "neeto-ui-bg-gray-200",
642
+ depth: 0,
643
+ folder: dragItem
644
+ }))
645
+ }), document.body)]
646
+ })]
647
+ });
648
+ };
649
+
650
+ 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; }
651
+ 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; }
652
+ var FoldersPane = function FoldersPane(_ref) {
653
+ var configProps = _ref.config;
654
+ var config = _objectSpread$3(_objectSpread$3({}, useFolderActions.DEFAULT_CONFIG), configProps);
655
+ var _useFolderStore = useFolderActions.useFolderStore(function (store) {
656
+ return {
657
+ setFolderState: store["setFolderState"]
658
+ };
659
+ }, shallow.shallow),
660
+ setFolderState = _useFolderStore.setFolderState;
661
+ var _useFolderStore2 = useFolderActions.useFolderStore(function (store) {
662
+ var _store$paneState;
663
+ return {
664
+ type: (_store$paneState = store["paneState"]) === null || _store$paneState === void 0 ? void 0 : _store$paneState["type"]
665
+ };
666
+ }, shallow.shallow),
667
+ type = _useFolderStore2.type;
668
+ var onClose = function onClose() {
669
+ return setFolderState({
670
+ paneState: null
671
+ });
672
+ };
673
+ var commonProps = {
674
+ config: config,
675
+ onClose: onClose
676
+ };
677
+ return /*#__PURE__*/jsxRuntime.jsxs(Pane, {
678
+ onClose: onClose,
679
+ isOpen: !!type,
680
+ children: [(type === "edit" || type === "add") && /*#__PURE__*/jsxRuntime.jsx(AddEditPane, _objectSpread$3({}, commonProps)), type === "move" && /*#__PURE__*/jsxRuntime.jsx(MoveFolderPane, _objectSpread$3({}, commonProps)), type === "reorder" && /*#__PURE__*/jsxRuntime.jsx(ReorderFoldersPane, _objectSpread$3({}, commonProps))]
681
+ });
682
+ };
683
+
684
+ var FoldersContext = function FoldersContext(_ref) {
685
+ var config = _ref.config,
686
+ children = _ref.children;
687
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
688
+ children: [children, /*#__PURE__*/jsxRuntime.jsx(FoldersPane, {
689
+ config: config
690
+ }), /*#__PURE__*/jsxRuntime.jsx(FoldersAlerts, {
691
+ config: config
692
+ })]
693
+ });
694
+ };
695
+
696
+ var FolderTile = function FolderTile(_ref) {
697
+ var _folder$children$leng, _folder$children;
698
+ var isSelected = _ref.isSelected,
699
+ link = _ref.link,
700
+ itemLabel = _ref.itemLabel,
701
+ folder = _ref.folder,
702
+ actions = _ref.actions,
703
+ onSelect = _ref.onSelect;
704
+ var _useTranslation = reactI18next.useTranslation(),
705
+ t = _useTranslation.t;
706
+ var actionCallback = function actionCallback(callback) {
707
+ return function (event) {
708
+ event.preventDefault();
709
+ callback(folder);
710
+ };
711
+ };
712
+ var menuItems = [{
713
+ key: "edit",
714
+ label: t("common.edit"),
715
+ onClick: actionCallback(actions.onEdit)
716
+ }, {
717
+ key: "move",
718
+ label: t("common.move"),
719
+ onClick: actionCallback(actions.onMove)
720
+ }, {
721
+ key: "delete",
722
+ label: t("common.delete"),
723
+ onClick: actionCallback(actions.onDelete)
724
+ }];
725
+ var metaInfo = [];
726
+ 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;
727
+ childCount > 0 && metaInfo.push(t("folders.subfolderCount", {
728
+ count: childCount
729
+ }));
730
+ metaInfo.push("".concat(folder.itemCount || 0, " ").concat(itemLabel));
731
+ return /*#__PURE__*/jsxRuntime.jsxs(reactRouterDom.Link, {
732
+ className: "neeto-ui-bg-gray-100 neeto-ui-rounded-md m-2 w-64 border p-3",
733
+ to: link,
734
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
735
+ className: "mb-1 flex items-center justify-between",
736
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
737
+ className: "flex items-center",
738
+ children: [/*#__PURE__*/jsxRuntime.jsx(Checkbox, {
739
+ checked: isSelected,
740
+ className: "mr-2",
741
+ name: folder.id,
742
+ onChange: function onChange(event) {
743
+ return onSelect(folder, event.target.checked);
744
+ },
745
+ onClick: function onClick(event) {
746
+ return event.stopPropagation();
747
+ }
748
+ }), /*#__PURE__*/jsxRuntime.jsx(Tooltip, {
749
+ content: folder.name,
750
+ delay: [300, 0],
751
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
752
+ className: "line-clamp-1",
753
+ style: "body1",
754
+ weight: "medium",
755
+ children: folder.name
756
+ })
757
+ })]
758
+ }), /*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
759
+ menuItems: menuItems,
760
+ dropdownProps: {
761
+ onClick: function onClick(event) {
762
+ return event.preventDefault();
763
+ }
764
+ }
765
+ })]
766
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
767
+ className: "ml-6",
768
+ style: "body3",
769
+ children: metaInfo.join(" . ")
770
+ })]
771
+ });
772
+ };
773
+
774
+ function ownKeys$2(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; }
775
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
776
+ var FoldersList = function FoldersList(_ref) {
777
+ var _ref$selection = _ref.selection,
778
+ selection = _ref$selection === void 0 ? [] : _ref$selection,
779
+ configProps = _ref.config,
780
+ onSelect = _ref.onSelect;
781
+ var config = _objectSpread$2(_objectSpread$2({}, useFolderActions.DEFAULT_CONFIG), configProps);
782
+ var params = reactUtils.useQueryParams({
783
+ toCamelCase: false
784
+ });
785
+ var _useTranslation = reactI18next.useTranslation(),
786
+ t = _useTranslation.t;
787
+ var _useFolders = useFolderActions.useFolders(config),
788
+ folders = _useFolders.folders;
789
+ var _useFolder = useFolderActions.useFolder(config),
790
+ folderId = _useFolder.folderId,
791
+ folder = _useFolder.folder;
792
+ var actions = useFolderActions.useFolderActions(config);
793
+ var subFolders = folderId ? folder === null || folder === void 0 ? void 0 : folder.children : folders;
794
+ if (neetoCist.isNotPresent(subFolders)) return null;
795
+ return /*#__PURE__*/jsxRuntime.jsxs(FoldersContext, {
796
+ config: config,
797
+ children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
798
+ className: "mb-2 mt-2",
799
+ style: "h4",
800
+ children: t("folders.title")
801
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
802
+ className: "mb-6 flex flex-wrap justify-items-center",
803
+ children: subFolders.map(function (folder) {
804
+ return /*#__PURE__*/react.createElement(FolderTile, {
805
+ actions: actions,
806
+ folder: folder,
807
+ onSelect: onSelect,
808
+ isSelected: selection.includes(folder.id),
809
+ itemLabel: config.itemLabel,
810
+ key: folder.id,
811
+ link: utils.buildUrl(config.folderPath, _objectSpread$2(_objectSpread$2({}, params), {}, {
812
+ folderId: folder.sid
813
+ }))
814
+ });
815
+ })
816
+ })]
817
+ });
818
+ };
819
+
820
+ var _excluded = ["isOpen", "onClose"];
821
+ function ownKeys$1(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; }
822
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
823
+ var MoveToFolderPane = function MoveToFolderPane(_ref) {
824
+ var isOpen = _ref.isOpen,
825
+ onClose = _ref.onClose,
826
+ rest = _objectWithoutProperties(_ref, _excluded);
827
+ return /*#__PURE__*/jsxRuntime.jsx(Pane, {
828
+ isOpen: isOpen,
829
+ onClose: onClose,
830
+ children: /*#__PURE__*/jsxRuntime.jsx(PaneBody, _objectSpread$1({}, _objectSpread$1(_objectSpread$1({}, rest), {}, {
831
+ onClose: onClose
832
+ })))
833
+ });
834
+ };
835
+
836
+ var FolderNode = function FolderNode(_ref) {
837
+ var _isActive = _ref.isActive,
838
+ folder = _ref.folder,
839
+ link = _ref.link;
840
+ return /*#__PURE__*/jsxRuntime.jsx(reactRouterDom.NavLink, {
841
+ activeClassName: "active",
842
+ className: "block",
843
+ isActive: function isActive() {
844
+ return _isActive;
845
+ },
846
+ to: link,
847
+ children: /*#__PURE__*/jsxRuntime.jsx(Tooltip, {
848
+ content: folder.name,
849
+ delay: [300, 0],
850
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
851
+ className: "line-clamp-1",
852
+ component: "span",
853
+ style: "body2",
854
+ children: folder.name
855
+ })
856
+ })
857
+ });
858
+ };
859
+
860
+ function ownKeys(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; }
861
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
862
+ var FoldersTree = function FoldersTree(_ref) {
863
+ var configProps = _ref.config;
864
+ var config = _objectSpread(_objectSpread({}, useFolderActions.DEFAULT_CONFIG), configProps);
865
+ var _useState = react.useState([]),
866
+ _useState2 = _slicedToArray(_useState, 2),
867
+ expandedKeys = _useState2[0],
868
+ setExpandedKeys = _useState2[1];
869
+ var _useTranslation = reactI18next.useTranslation(),
870
+ t = _useTranslation.t;
871
+ var params = reactUtils.useQueryParams({
872
+ toCamelCase: false
873
+ });
874
+ var activeFolderSid = useFolderActions.getActiveFolderId(config);
875
+ var _useFetchFolders = useFolderActions.useFetchFolders(config),
876
+ folders = _useFetchFolders.data;
877
+ var updateExpandedKeys = function updateExpandedKeys() {
878
+ var _activeFolder$meta;
879
+ if (!folders) return;
880
+ // When active folder changes from external sources, update expanded keys to auto expand tree.
881
+ var expandedKeys = [];
882
+ var map = pathUtils.treeToMap(folders, "sid");
883
+ var activeFolder = map[activeFolderSid];
884
+ var parentSid = activeFolder === null || activeFolder === void 0 || (_activeFolder$meta = activeFolder.meta) === null || _activeFolder$meta === void 0 || (_activeFolder$meta = _activeFolder$meta.parent) === null || _activeFolder$meta === void 0 ? void 0 : _activeFolder$meta.sid;
885
+ if (parentSid) expandedKeys.push(parentSid);
886
+ setExpandedKeys(expandedKeys);
887
+ };
888
+ react.useEffect(function () {
889
+ // Non urgent update.
890
+ react.startTransition(updateExpandedKeys);
891
+ }, [activeFolderSid, folders]);
892
+ if (neetoCist.isNotPresent(folders)) {
893
+ return /*#__PURE__*/jsxRuntime.jsx(Typography, {
894
+ className: "w-full text-center",
895
+ style: "body2",
896
+ weight: "semibold",
897
+ children: t("folders.noFolders")
898
+ });
899
+ }
900
+ return /*#__PURE__*/jsxRuntime.jsx(Tree, {
901
+ expandedKeys: expandedKeys,
902
+ autoExpandParent: true,
903
+ blockNode: true,
904
+ showLine: true,
905
+ componentToken: {
906
+ titleHeight: 25,
907
+ indentSize: 25
908
+ },
909
+ fieldNames: {
910
+ key: "sid"
911
+ },
912
+ selectedKeys: [activeFolderSid],
913
+ treeData: folders,
914
+ titleRender: function titleRender(folder) {
915
+ return /*#__PURE__*/jsxRuntime.jsx(FolderNode, {
916
+ folder: folder,
917
+ isActive: folder.sid === activeFolderSid,
918
+ link: utils.buildUrl(config.folderPath, _objectSpread(_objectSpread({}, params), {}, {
919
+ folderId: folder.sid
920
+ }))
921
+ });
922
+ },
923
+ onExpand: setExpandedKeys
924
+ });
925
+ };
926
+
927
+ exports.FoldersContext = FoldersContext;
928
+ exports.FoldersList = FoldersList;
929
+ exports.FoldersTree = FoldersTree;
930
+ exports.MoveToFolderPane = MoveToFolderPane;
931
+ //# sourceMappingURL=components.js.map