@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.
- package/README.md +9 -2
- package/app/javascript/src/translations/en.json +19 -16
- package/dist/cjs/components.js +496 -134
- package/dist/cjs/components.js.map +1 -1
- package/dist/cjs/hooks.js +3 -1
- package/dist/cjs/hooks.js.map +1 -1
- package/dist/cjs/utils.js +6 -2
- package/dist/cjs/utils.js.map +1 -1
- package/dist/components.js +474 -112
- package/dist/components.js.map +1 -1
- package/dist/hooks.js +3 -1
- package/dist/hooks.js.map +1 -1
- package/dist/{pathUtils-W8cEGsHR.js → index-BFO1zYNo.js} +39 -16
- package/dist/index-BFO1zYNo.js.map +1 -0
- package/dist/{pathUtils-DSapmYDO.js → index-Cq1DyvVr.js} +38 -17
- package/dist/index-Cq1DyvVr.js.map +1 -0
- package/dist/internal-CS6_tPWL.js +21 -0
- package/dist/internal-CS6_tPWL.js.map +1 -0
- package/dist/internal-G6z0jIQe.js +17 -0
- package/dist/internal-G6z0jIQe.js.map +1 -0
- package/dist/{useFolderActions-DdOLB5Zw.js → useFolderActions-BLpmmlOf.js} +32 -42
- package/dist/useFolderActions-BLpmmlOf.js.map +1 -0
- package/dist/{useFolderActions-BSW7tGU6.js → useFolderActions-D8xGNhk0.js} +32 -44
- package/dist/useFolderActions-D8xGNhk0.js.map +1 -0
- package/dist/utils.js +4 -1
- package/dist/utils.js.map +1 -1
- package/package.json +11 -11
- package/types.d.ts +10 -2
- package/dist/pathUtils-DSapmYDO.js.map +0 -1
- package/dist/pathUtils-W8cEGsHR.js.map +0 -1
- package/dist/useFolderActions-BSW7tGU6.js.map +0 -1
- package/dist/useFolderActions-DdOLB5Zw.js.map +0 -1
|
@@ -1,8 +1,35 @@
|
|
|
1
|
+
import { isNil, pipe, values } from 'ramda';
|
|
1
2
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
3
|
import { isNotPresent } from '@bigbinary/neeto-cist';
|
|
4
|
+
import { i as isArray } from './internal-G6z0jIQe.js';
|
|
3
5
|
|
|
4
6
|
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; }
|
|
5
7
|
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; }
|
|
8
|
+
var sortByIndex = function sortByIndex(a, b) {
|
|
9
|
+
if (isNil(a.meta.__index) && isNil(b.meta.__index)) {
|
|
10
|
+
return a.meta.index - b.meta.index;
|
|
11
|
+
} else if (isNil(a.meta.__index)) {
|
|
12
|
+
return a.meta.index < b.meta.__index ? -1 : 1;
|
|
13
|
+
} else if (isNil(b.meta.__index)) {
|
|
14
|
+
return a.meta.__index <= b.meta.index ? -1 : 1;
|
|
15
|
+
}
|
|
16
|
+
return a.meta.__index - b.meta.__index;
|
|
17
|
+
};
|
|
18
|
+
var foldersToTree = function foldersToTree(folders) {
|
|
19
|
+
var map = {};
|
|
20
|
+
var root;
|
|
21
|
+
folders.forEach(function (item) {
|
|
22
|
+
map[item.id] = _objectSpread(_objectSpread({}, item), {}, {
|
|
23
|
+
children: []
|
|
24
|
+
});
|
|
25
|
+
// Destroy existing temporary meta attributes.
|
|
26
|
+
delete map[item.id].meta.__index;
|
|
27
|
+
});
|
|
28
|
+
folders.forEach(function (item) {
|
|
29
|
+
if (!item.meta.parent) root = map[item.id];else map[item.meta.parent.id].children.push(map[item.id]);
|
|
30
|
+
});
|
|
31
|
+
return root;
|
|
32
|
+
};
|
|
6
33
|
var _walkTree = function walkTree(tree, fn) {
|
|
7
34
|
var meta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
8
35
|
index: 0,
|
|
@@ -11,7 +38,7 @@ var _walkTree = function walkTree(tree, fn) {
|
|
|
11
38
|
};
|
|
12
39
|
if (!tree) return;
|
|
13
40
|
fn(tree, meta);
|
|
14
|
-
if (tree.children) {
|
|
41
|
+
if (isArray(tree.children)) {
|
|
15
42
|
tree.children.forEach(function (folder, index) {
|
|
16
43
|
return _walkTree(folder, fn, {
|
|
17
44
|
parent: tree,
|
|
@@ -33,7 +60,7 @@ var measureDepth = function measureDepth(tree) {
|
|
|
33
60
|
var treeToMap = function treeToMap(tree) {
|
|
34
61
|
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "id";
|
|
35
62
|
if (isNotPresent(tree)) return {};
|
|
36
|
-
var roots =
|
|
63
|
+
var roots = isArray(tree) ? tree : [tree];
|
|
37
64
|
var foldersMap = {};
|
|
38
65
|
roots.forEach(function (root) {
|
|
39
66
|
_walkTree(root, function (folder, meta) {
|
|
@@ -47,31 +74,25 @@ var treeToMap = function treeToMap(tree) {
|
|
|
47
74
|
|
|
48
75
|
// Convert result of treeToMap back to tree
|
|
49
76
|
var mapToTree = function mapToTree(foldersMap) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
children: []
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
Object.values(foldersMap).forEach(function (item) {
|
|
58
|
-
if (!item.meta.parent) root = map[item.id];else map[item.meta.parent.id].children.push(map[item.id]);
|
|
59
|
-
});
|
|
60
|
-
return root;
|
|
77
|
+
return foldersToTree(Object.values(foldersMap));
|
|
78
|
+
};
|
|
79
|
+
var mapToSortedTree = function mapToSortedTree(foldersMap) {
|
|
80
|
+
return foldersToTree(Object.values(foldersMap).sort(sortByIndex));
|
|
61
81
|
};
|
|
62
82
|
|
|
83
|
+
var flattenTree = pipe(treeToMap, values);
|
|
63
84
|
var pathToFolder = function pathToFolder(folders, folderId) {
|
|
64
85
|
var path = [];
|
|
65
86
|
var folderMap = treeToMap(folders);
|
|
66
87
|
if (!folderMap[folderId]) return path;
|
|
67
88
|
var current = folderMap[folderId];
|
|
68
89
|
while (current) {
|
|
69
|
-
var _current$meta;
|
|
90
|
+
var _current$meta$parent;
|
|
70
91
|
path.unshift(current);
|
|
71
|
-
current = (_current$meta = current.meta) === null || _current$meta === void 0 ? void 0 : _current$meta.
|
|
92
|
+
current = folderMap[(_current$meta$parent = current.meta.parent) === null || _current$meta$parent === void 0 ? void 0 : _current$meta$parent.id];
|
|
72
93
|
}
|
|
73
94
|
return path;
|
|
74
95
|
};
|
|
75
96
|
|
|
76
|
-
export { mapToTree as a, measureDepth as m, pathToFolder as p, treeToMap as t };
|
|
77
|
-
//# sourceMappingURL=
|
|
97
|
+
export { mapToTree as a, mapToSortedTree as b, flattenTree as f, measureDepth as m, pathToFolder as p, treeToMap as t };
|
|
98
|
+
//# sourceMappingURL=index-Cq1DyvVr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Cq1DyvVr.js","sources":["../app/javascript/src/utils/treeUtils.js","../app/javascript/src/utils/index.js"],"sourcesContent":["import { isNotPresent } from \"neetocist\";\nimport { isNil } from \"ramda\";\n\nimport { isArray } from \"./internal\";\n\nconst sortByIndex = (a, b) => {\n if (isNil(a.meta.__index) && isNil(b.meta.__index)) {\n return a.meta.index - b.meta.index;\n } else if (isNil(a.meta.__index)) {\n return a.meta.index < b.meta.__index ? -1 : 1;\n } else if (isNil(b.meta.__index)) {\n return a.meta.__index <= b.meta.index ? -1 : 1;\n }\n\n return a.meta.__index - b.meta.__index;\n};\n\nexport const foldersToTree = folders => {\n const map = {};\n let root;\n\n folders.forEach(item => {\n map[item.id] = { ...item, children: [] };\n // Destroy existing temporary meta attributes.\n delete map[item.id].meta.__index;\n });\n\n folders.forEach(item => {\n if (!item.meta.parent) root = map[item.id];\n else map[item.meta.parent.id].children.push(map[item.id]);\n });\n\n return root;\n};\n\nexport const walkTree = (\n tree,\n fn,\n meta = { index: 0, depth: 0, parent: null }\n) => {\n if (!tree) return;\n\n fn(tree, meta);\n if (isArray(tree.children)) {\n tree.children.forEach((folder, index) =>\n walkTree(folder, fn, { parent: tree, index, depth: meta.depth + 1 })\n );\n }\n};\n\n// Measures the maximum depth to bottom of the tree\nexport const measureDepth = tree => {\n let maxDepth = 0;\n\n walkTree(tree, (_, meta) => {\n if (meta.depth > maxDepth) maxDepth = meta.depth;\n });\n\n return maxDepth;\n};\n\n// Convert tree to lookup table\nexport const treeToMap = (tree, key = \"id\") => {\n if (isNotPresent(tree)) return {};\n\n const roots = isArray(tree) ? tree : [tree];\n const foldersMap = {};\n\n roots.forEach(root => {\n walkTree(root, (folder, meta) => {\n foldersMap[folder[key]] = { ...folder, meta };\n });\n });\n\n return foldersMap;\n};\n\n// Convert result of treeToMap back to tree\nexport const mapToTree = foldersMap => foldersToTree(Object.values(foldersMap));\nexport const mapToSortedTree = foldersMap =>\n foldersToTree(Object.values(foldersMap).sort(sortByIndex));\n","import { pipe, values } from \"ramda\";\n\nimport { treeToMap } from \"./treeUtils\";\n\nconst flattenTree = pipe(treeToMap, values);\n\nconst pathToFolder = (folders, folderId) => {\n const path = [];\n const folderMap = treeToMap(folders);\n if (!folderMap[folderId]) return path;\n\n let current = folderMap[folderId];\n while (current) {\n path.unshift(current);\n current = folderMap[current.meta.parent?.id];\n }\n\n return path;\n};\n\nexport { pathToFolder, flattenTree };\n"],"names":["sortByIndex","a","b","isNil","meta","__index","index","foldersToTree","folders","map","root","forEach","item","id","_objectSpread","children","parent","push","walkTree","tree","fn","arguments","length","undefined","depth","isArray","folder","measureDepth","maxDepth","_","treeToMap","key","isNotPresent","roots","foldersMap","mapToTree","Object","values","mapToSortedTree","sort","flattenTree","pipe","pathToFolder","folderId","path","folderMap","current","_current$meta$parent","unshift"],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ramda = require('ramda');
|
|
4
|
+
var reactRouterDom = require('react-router-dom');
|
|
5
|
+
|
|
6
|
+
var getActiveFolderId = function getActiveFolderId(config) {
|
|
7
|
+
var _matchPath;
|
|
8
|
+
return (_matchPath = reactRouterDom.matchPath(window.location.pathname, config.folderPath)) === null || _matchPath === void 0 || (_matchPath = _matchPath.params) === null || _matchPath === void 0 ? void 0 : _matchPath.folderId;
|
|
9
|
+
};
|
|
10
|
+
var isActiveFolder = function isActiveFolder(config, folderId) {
|
|
11
|
+
var activeFolderId = getActiveFolderId(config);
|
|
12
|
+
return activeFolderId && activeFolderId === folderId;
|
|
13
|
+
};
|
|
14
|
+
var isArray = function isArray(arg) {
|
|
15
|
+
return ramda.isNotNil(arg) && Array.isArray(arg);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.getActiveFolderId = getActiveFolderId;
|
|
19
|
+
exports.isActiveFolder = isActiveFolder;
|
|
20
|
+
exports.isArray = isArray;
|
|
21
|
+
//# sourceMappingURL=internal-CS6_tPWL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-CS6_tPWL.js","sources":["../app/javascript/src/utils/internal.js"],"sourcesContent":["import { isNotNil } from \"ramda\";\nimport { matchPath } from \"react-router-dom\";\n\nexport const getActiveFolderId = config =>\n matchPath(window.location.pathname, config.folderPath)?.params?.folderId;\n\nexport const isActiveFolder = (config, folderId) => {\n const activeFolderId = getActiveFolderId(config);\n\n return activeFolderId && activeFolderId === folderId;\n};\n\nexport const isArray = arg => isNotNil(arg) && Array.isArray(arg);\n"],"names":["getActiveFolderId","config","_matchPath","matchPath","window","location","pathname","folderPath","params","folderId","isActiveFolder","activeFolderId","isArray","arg","isNotNil","Array"],"mappings":";;;;;IAGaA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAGC,MAAM,EAAA;AAAA,EAAA,IAAAC,UAAA;EAAA,OAAAA,CAAAA,UAAA,GACrCC,wBAAS,CAACC,MAAM,CAACC,QAAQ,CAACC,QAAQ,EAAEL,MAAM,CAACM,UAAU,CAAC,MAAA,IAAA,IAAAL,UAAA,KAAA,KAAA,CAAA,IAAA,CAAAA,UAAA,GAAtDA,UAAA,CAAwDM,MAAM,MAAA,IAAA,IAAAN,UAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAA9DA,UAAA,CAAgEO,QAAQ;AAAA;AAEnE,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIT,MAAM,EAAEQ,QAAQ,EAAK;AAClD,EAAA,IAAME,cAAc,GAAGX,iBAAiB,CAACC,MAAM,CAAC;AAEhD,EAAA,OAAOU,cAAc,IAAIA,cAAc,KAAKF,QAAQ;AACtD;IAEaG,OAAO,GAAG,SAAVA,OAAOA,CAAGC,GAAG,EAAA;EAAA,OAAIC,cAAQ,CAACD,GAAG,CAAC,IAAIE,KAAK,CAACH,OAAO,CAACC,GAAG,CAAC;AAAA;;;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isNotNil } from 'ramda';
|
|
2
|
+
import { matchPath } from 'react-router-dom';
|
|
3
|
+
|
|
4
|
+
var getActiveFolderId = function getActiveFolderId(config) {
|
|
5
|
+
var _matchPath;
|
|
6
|
+
return (_matchPath = matchPath(window.location.pathname, config.folderPath)) === null || _matchPath === void 0 || (_matchPath = _matchPath.params) === null || _matchPath === void 0 ? void 0 : _matchPath.folderId;
|
|
7
|
+
};
|
|
8
|
+
var isActiveFolder = function isActiveFolder(config, folderId) {
|
|
9
|
+
var activeFolderId = getActiveFolderId(config);
|
|
10
|
+
return activeFolderId && activeFolderId === folderId;
|
|
11
|
+
};
|
|
12
|
+
var isArray = function isArray(arg) {
|
|
13
|
+
return isNotNil(arg) && Array.isArray(arg);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { isActiveFolder as a, getActiveFolderId as g, isArray as i };
|
|
17
|
+
//# sourceMappingURL=internal-G6z0jIQe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-G6z0jIQe.js","sources":["../app/javascript/src/utils/internal.js"],"sourcesContent":["import { isNotNil } from \"ramda\";\nimport { matchPath } from \"react-router-dom\";\n\nexport const getActiveFolderId = config =>\n matchPath(window.location.pathname, config.folderPath)?.params?.folderId;\n\nexport const isActiveFolder = (config, folderId) => {\n const activeFolderId = getActiveFolderId(config);\n\n return activeFolderId && activeFolderId === folderId;\n};\n\nexport const isArray = arg => isNotNil(arg) && Array.isArray(arg);\n"],"names":["getActiveFolderId","config","_matchPath","matchPath","window","location","pathname","folderPath","params","folderId","isActiveFolder","activeFolderId","isArray","arg","isNotNil","Array"],"mappings":";;;IAGaA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAGC,MAAM,EAAA;AAAA,EAAA,IAAAC,UAAA;EAAA,OAAAA,CAAAA,UAAA,GACrCC,SAAS,CAACC,MAAM,CAACC,QAAQ,CAACC,QAAQ,EAAEL,MAAM,CAACM,UAAU,CAAC,MAAA,IAAA,IAAAL,UAAA,KAAA,KAAA,CAAA,IAAA,CAAAA,UAAA,GAAtDA,UAAA,CAAwDM,MAAM,MAAA,IAAA,IAAAN,UAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAA9DA,UAAA,CAAgEO,QAAQ;AAAA;AAEnE,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIT,MAAM,EAAEQ,QAAQ,EAAK;AAClD,EAAA,IAAME,cAAc,GAAGX,iBAAiB,CAACC,MAAM,CAAC;AAEhD,EAAA,OAAOU,cAAc,IAAIA,cAAc,KAAKF,QAAQ;AACtD;IAEaG,OAAO,GAAG,SAAVA,OAAOA,CAAGC,GAAG,EAAA;EAAA,OAAIC,QAAQ,CAACD,GAAG,CAAC,IAAIE,KAAK,CAACH,OAAO,CAACC,GAAG,CAAC;AAAA;;;;"}
|
|
@@ -1,27 +1,13 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import { t } from 'i18next';
|
|
3
3
|
import { noop } from '@bigbinary/neeto-cist';
|
|
4
|
-
import {
|
|
4
|
+
import { g as getActiveFolderId } from './internal-G6z0jIQe.js';
|
|
5
5
|
import { shallow } from 'zustand/shallow';
|
|
6
6
|
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
7
7
|
import { QUERY_KEYS } from './constants.js';
|
|
8
8
|
import { useMutationWithInvalidation, withImmutableActions } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
9
9
|
import { create } from 'zustand';
|
|
10
10
|
|
|
11
|
-
var useDestroyMutation = function useDestroyMutation(config, api) {
|
|
12
|
-
var queryClient = useQueryClient();
|
|
13
|
-
|
|
14
|
-
// eslint-disable-next-line @bigbinary/neeto/use-use-mutation-with-invalidation-hook
|
|
15
|
-
return useMutationWithInvalidation(api, {
|
|
16
|
-
keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST]].concat(config.itemKeys),
|
|
17
|
-
onSuccess: function onSuccess() {
|
|
18
|
-
queryClient.invalidateQueries({
|
|
19
|
-
queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.DETAILS],
|
|
20
|
-
refetchType: "none"
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
11
|
var useFetchFolders = function useFetchFolders(config) {
|
|
26
12
|
return useQuery({
|
|
27
13
|
queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST, config.params],
|
|
@@ -55,7 +41,9 @@ var useReorderFolders = function useReorderFolders(config) {
|
|
|
55
41
|
});
|
|
56
42
|
};
|
|
57
43
|
var useDestroyFolder = function useDestroyFolder(config) {
|
|
58
|
-
return
|
|
44
|
+
return useMutationWithInvalidation(config.api.destroy, {
|
|
45
|
+
keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST]]
|
|
46
|
+
});
|
|
59
47
|
};
|
|
60
48
|
var useBulkUpdateFolders = function useBulkUpdateFolders(config) {
|
|
61
49
|
return useMutationWithInvalidation(config.api.bulkUpdate, {
|
|
@@ -63,9 +51,27 @@ var useBulkUpdateFolders = function useBulkUpdateFolders(config) {
|
|
|
63
51
|
});
|
|
64
52
|
};
|
|
65
53
|
var useBulkDestroyFolders = function useBulkDestroyFolders(config) {
|
|
66
|
-
return
|
|
54
|
+
return useMutationWithInvalidation(config.api.bulkDestroy, {
|
|
55
|
+
keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST], [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.DETAILS]].concat(config.invalidationKeys)
|
|
56
|
+
});
|
|
67
57
|
};
|
|
68
58
|
|
|
59
|
+
var DEFAULT_LABELS = {
|
|
60
|
+
folder: t("common.folder"),
|
|
61
|
+
folders: t("common.folders"),
|
|
62
|
+
item: t("common.item"),
|
|
63
|
+
items: t("common.items")
|
|
64
|
+
};
|
|
65
|
+
var DEFAULT_API = {
|
|
66
|
+
// Folder CRUD
|
|
67
|
+
fetch: noop,
|
|
68
|
+
get: noop,
|
|
69
|
+
create: noop,
|
|
70
|
+
update: noop,
|
|
71
|
+
destroy: noop,
|
|
72
|
+
bulkUpdate: noop,
|
|
73
|
+
bulkDestroy: noop
|
|
74
|
+
};
|
|
69
75
|
var DEFAULT_CONFIG = {
|
|
70
76
|
type: "FOLDER",
|
|
71
77
|
// For query keys with different associated entities
|
|
@@ -73,21 +79,13 @@ var DEFAULT_CONFIG = {
|
|
|
73
79
|
// Maximum allowed depth for folder tree
|
|
74
80
|
folderPath: "/folders/:folderId",
|
|
75
81
|
// Path for handling URL redirections
|
|
76
|
-
|
|
77
|
-
// For displaying the item label in counts
|
|
78
|
-
itemKeys: [],
|
|
82
|
+
invalidationKeys: [],
|
|
79
83
|
// For invalidation purposes
|
|
84
|
+
reorderMode: "rearrange",
|
|
85
|
+
// rearrange | reorder
|
|
86
|
+
labels: DEFAULT_LABELS,
|
|
80
87
|
params: {},
|
|
81
|
-
api:
|
|
82
|
-
// Folder CRUD
|
|
83
|
-
fetch: noop,
|
|
84
|
-
get: noop,
|
|
85
|
-
create: noop,
|
|
86
|
-
update: noop,
|
|
87
|
-
destroy: noop,
|
|
88
|
-
bulkUpdate: noop,
|
|
89
|
-
bulkDestroy: noop
|
|
90
|
-
}
|
|
88
|
+
api: DEFAULT_API
|
|
91
89
|
};
|
|
92
90
|
|
|
93
91
|
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; }
|
|
@@ -113,14 +111,6 @@ var useFolderStore = create(withImmutableActions(function (set) {
|
|
|
113
111
|
};
|
|
114
112
|
}));
|
|
115
113
|
|
|
116
|
-
var getActiveFolderId = function getActiveFolderId(config) {
|
|
117
|
-
var _matchPath;
|
|
118
|
-
return (_matchPath = matchPath(window.location.pathname, config.folderPath)) === null || _matchPath === void 0 || (_matchPath = _matchPath.params) === null || _matchPath === void 0 ? void 0 : _matchPath.folderId;
|
|
119
|
-
};
|
|
120
|
-
var isActiveFolder = function isActiveFolder(config, folderId) {
|
|
121
|
-
return getActiveFolderId(config) === folderId;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
114
|
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; }
|
|
125
115
|
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; }
|
|
126
116
|
var useFolder = function useFolder(configArg) {
|
|
@@ -128,9 +118,9 @@ var useFolder = function useFolder(configArg) {
|
|
|
128
118
|
var folderId = getActiveFolderId(config);
|
|
129
119
|
var _useShowFolder = useShowFolder(config, folderId),
|
|
130
120
|
folder = _useShowFolder.data,
|
|
131
|
-
|
|
121
|
+
isFetching = _useShowFolder.isFetching;
|
|
132
122
|
return {
|
|
133
|
-
isLoading:
|
|
123
|
+
isLoading: isFetching && (folder === null || folder === void 0 ? void 0 : folder.slug) !== folderId,
|
|
134
124
|
folderId: folderId,
|
|
135
125
|
folder: folder
|
|
136
126
|
};
|
|
@@ -209,5 +199,5 @@ var useFolderActions = function useFolderActions(config) {
|
|
|
209
199
|
};
|
|
210
200
|
};
|
|
211
201
|
|
|
212
|
-
export { DEFAULT_CONFIG as D, useFolders as a, useFolderActions as b, useFolderStore as c, useDestroyFolder as d, useFetchFolders as e, useCreateFolder as f, useUpdateFolder as g,
|
|
213
|
-
//# sourceMappingURL=useFolderActions-
|
|
202
|
+
export { DEFAULT_CONFIG as D, useFolders as a, useFolderActions as b, useFolderStore as c, useDestroyFolder as d, useFetchFolders as e, useCreateFolder as f, useUpdateFolder as g, useReorderFolders as h, useFolder as u };
|
|
203
|
+
//# sourceMappingURL=useFolderActions-BLpmmlOf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFolderActions-BLpmmlOf.js","sources":["../app/javascript/src/hooks/reactQuery/useFoldersApi.js","../app/javascript/src/constants/config.js","../app/javascript/src/hooks/useFolders.js","../app/javascript/src/stores/foldersStore.js","../app/javascript/src/hooks/useFolder.js","../app/javascript/src/hooks/useFolderActions.js"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { useMutationWithInvalidation } from \"neetocommons/react-utils\";\n\nimport { QUERY_KEYS } from \"constants/query\";\n\nexport const useFetchFolders = config =>\n useQuery({\n queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST, config.params],\n queryFn: () => config.api.fetch(config.params),\n });\n\nexport const useShowFolder = (config, folderId) =>\n useQuery({\n queryKey: [\n QUERY_KEYS.FOLDERS,\n config.type,\n QUERY_KEYS.DETAILS,\n folderId,\n config.params,\n ],\n queryFn: () => config.api.get(folderId, config.params),\n enabled: !!folderId,\n });\n\nexport const useCreateFolder = config =>\n useMutationWithInvalidation(config.api.create, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useUpdateFolder = config =>\n useMutationWithInvalidation(config.api.update, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useReorderFolders = config =>\n useMutationWithInvalidation(config.api.reorder, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useDestroyFolder = config =>\n useMutationWithInvalidation(config.api.destroy, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST]],\n });\n\nexport const useBulkUpdateFolders = config =>\n useMutationWithInvalidation(config.api.bulkUpdate, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useBulkDestroyFolders = config =>\n useMutationWithInvalidation(config.api.bulkDestroy, {\n keysToInvalidate: [\n [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST],\n [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.DETAILS],\n ].concat(config.invalidationKeys),\n });\n","import { t } from \"i18next\";\nimport { noop } from \"neetocist\";\n\nconst DEFAULT_LABELS = {\n folder: t(\"common.folder\"),\n folders: t(\"common.folders\"),\n item: t(\"common.item\"),\n items: t(\"common.items\"),\n};\n\nconst DEFAULT_API = {\n // Folder CRUD\n fetch: noop,\n get: noop,\n create: noop,\n update: noop,\n destroy: noop,\n bulkUpdate: noop,\n bulkDestroy: noop,\n};\n\nexport const DEFAULT_CONFIG = {\n type: \"FOLDER\", // For query keys with different associated entities\n maxDepth: 2, // Maximum allowed depth for folder tree\n folderPath: \"/folders/:folderId\", // Path for handling URL redirections\n invalidationKeys: [], // For invalidation purposes\n reorderMode: \"rearrange\", // rearrange | reorder\n labels: DEFAULT_LABELS,\n params: {},\n api: DEFAULT_API,\n};\n","import { DEFAULT_CONFIG } from \"constants/config\";\nimport { useFetchFolders } from \"hooks/reactQuery/useFoldersApi\";\n\nconst useFolders = configArg => {\n const config = { ...DEFAULT_CONFIG, ...configArg };\n const { data: folders, isLoading } = useFetchFolders(config);\n\n return { isLoading, folders };\n};\n\nexport default useFolders;\n","import { withImmutableActions } from \"neetocommons/react-utils\";\nimport { create } from \"zustand\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useFolderStore = create(\n withImmutableActions(set => ({\n paneState: null,\n alertState: null,\n selectedItem: null,\n setFolderState: set,\n }))\n);\n\nexport default useFolderStore;\n","import { DEFAULT_CONFIG } from \"constants/config\";\nimport { useShowFolder } from \"hooks/reactQuery/useFoldersApi\";\nimport { getActiveFolderId } from \"utils/internal\";\n\nconst useFolder = configArg => {\n const config = { ...DEFAULT_CONFIG, ...configArg };\n const folderId = getActiveFolderId(config);\n\n const { data: folder, isFetching } = useShowFolder(config, folderId);\n\n return {\n isLoading: isFetching && folder?.slug !== folderId,\n folderId,\n folder,\n };\n};\n\nexport default useFolder;\n","import { useQueryClient } from \"@tanstack/react-query\";\n\nimport { QUERY_KEYS } from \"constants/query\";\nimport useFolderStore from \"stores/foldersStore\";\n\nimport {\n useBulkUpdateFolders,\n useBulkDestroyFolders,\n} from \"./reactQuery/useFoldersApi\";\n\nconst useFolderActions = config => {\n const queryClient = useQueryClient();\n const { setFolderState } = useFolderStore.pick();\n\n const { mutateAsync: onBulkUpdate, isPending: isUpdating } =\n useBulkUpdateFolders(config);\n\n const { mutateAsync: onBulkDelete, isPending: isDeleting } =\n useBulkDestroyFolders(config);\n\n const onInvalidate = () => {\n queryClient.invalidateQueries({\n queryKey: [QUERY_KEYS.FOLDERS, config.type],\n });\n };\n\n const onAdd = () =>\n setFolderState({ paneState: { type: \"add\", item: null } });\n\n const onEdit = item => setFolderState({ paneState: { type: \"edit\", item } });\n\n const onMove = item => setFolderState({ paneState: { type: \"move\", item } });\n\n const onDelete = item =>\n setFolderState({ alertState: { type: \"delete\", item } });\n\n const onReorder = () =>\n setFolderState({ paneState: { type: \"reorder\", item: null } });\n\n const isPending = isUpdating || isDeleting;\n\n return {\n isPending,\n onAdd,\n onEdit,\n onMove,\n onDelete,\n onReorder,\n onInvalidate,\n onBulkUpdate,\n onBulkDelete,\n };\n};\n\nexport default useFolderActions;\n"],"names":["useFetchFolders","config","useQuery","queryKey","QUERY_KEYS","FOLDERS","type","LIST","params","queryFn","api","fetch","useShowFolder","folderId","DETAILS","get","enabled","useCreateFolder","useMutationWithInvalidation","create","keysToInvalidate","useUpdateFolder","update","useReorderFolders","reorder","useDestroyFolder","destroy","useBulkUpdateFolders","bulkUpdate","useBulkDestroyFolders","bulkDestroy","concat","invalidationKeys","DEFAULT_LABELS","folder","t","folders","item","items","DEFAULT_API","noop","DEFAULT_CONFIG","maxDepth","folderPath","reorderMode","labels","useFolders","configArg","_objectSpread","_useFetchFolders","data","isLoading","useFolderStore","withImmutableActions","set","paneState","alertState","selectedItem","setFolderState","useFolder","getActiveFolderId","_useShowFolder","isFetching","slug","useFolderActions","queryClient","useQueryClient","_useFolderStore","store","shallow","_useBulkUpdateFolders","onBulkUpdate","mutateAsync","isUpdating","isPending","_useBulkDestroyFolder","onBulkDelete","isDeleting","onInvalidate","invalidateQueries","onAdd","onEdit","onMove","onDelete","onReorder"],"mappings":"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"}
|
|
@@ -3,27 +3,13 @@
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var i18next = require('i18next');
|
|
5
5
|
var neetoCist = require('@bigbinary/neeto-cist');
|
|
6
|
-
var
|
|
6
|
+
var internal = require('./internal-CS6_tPWL.js');
|
|
7
7
|
var shallow = require('zustand/shallow');
|
|
8
8
|
var reactQuery = require('@tanstack/react-query');
|
|
9
9
|
var constants = require('./cjs/constants.js');
|
|
10
10
|
var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
|
|
11
11
|
var zustand = require('zustand');
|
|
12
12
|
|
|
13
|
-
var useDestroyMutation = function useDestroyMutation(config, api) {
|
|
14
|
-
var queryClient = reactQuery.useQueryClient();
|
|
15
|
-
|
|
16
|
-
// eslint-disable-next-line @bigbinary/neeto/use-use-mutation-with-invalidation-hook
|
|
17
|
-
return reactUtils.useMutationWithInvalidation(api, {
|
|
18
|
-
keysToInvalidate: [[constants.QUERY_KEYS.FOLDERS, config.type, constants.QUERY_KEYS.LIST]].concat(config.itemKeys),
|
|
19
|
-
onSuccess: function onSuccess() {
|
|
20
|
-
queryClient.invalidateQueries({
|
|
21
|
-
queryKey: [constants.QUERY_KEYS.FOLDERS, config.type, constants.QUERY_KEYS.DETAILS],
|
|
22
|
-
refetchType: "none"
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
13
|
var useFetchFolders = function useFetchFolders(config) {
|
|
28
14
|
return reactQuery.useQuery({
|
|
29
15
|
queryKey: [constants.QUERY_KEYS.FOLDERS, config.type, constants.QUERY_KEYS.LIST, config.params],
|
|
@@ -57,7 +43,9 @@ var useReorderFolders = function useReorderFolders(config) {
|
|
|
57
43
|
});
|
|
58
44
|
};
|
|
59
45
|
var useDestroyFolder = function useDestroyFolder(config) {
|
|
60
|
-
return
|
|
46
|
+
return reactUtils.useMutationWithInvalidation(config.api.destroy, {
|
|
47
|
+
keysToInvalidate: [[constants.QUERY_KEYS.FOLDERS, config.type, constants.QUERY_KEYS.LIST]]
|
|
48
|
+
});
|
|
61
49
|
};
|
|
62
50
|
var useBulkUpdateFolders = function useBulkUpdateFolders(config) {
|
|
63
51
|
return reactUtils.useMutationWithInvalidation(config.api.bulkUpdate, {
|
|
@@ -65,9 +53,27 @@ var useBulkUpdateFolders = function useBulkUpdateFolders(config) {
|
|
|
65
53
|
});
|
|
66
54
|
};
|
|
67
55
|
var useBulkDestroyFolders = function useBulkDestroyFolders(config) {
|
|
68
|
-
return
|
|
56
|
+
return reactUtils.useMutationWithInvalidation(config.api.bulkDestroy, {
|
|
57
|
+
keysToInvalidate: [[constants.QUERY_KEYS.FOLDERS, config.type, constants.QUERY_KEYS.LIST], [constants.QUERY_KEYS.FOLDERS, config.type, constants.QUERY_KEYS.DETAILS]].concat(config.invalidationKeys)
|
|
58
|
+
});
|
|
69
59
|
};
|
|
70
60
|
|
|
61
|
+
var DEFAULT_LABELS = {
|
|
62
|
+
folder: i18next.t("common.folder"),
|
|
63
|
+
folders: i18next.t("common.folders"),
|
|
64
|
+
item: i18next.t("common.item"),
|
|
65
|
+
items: i18next.t("common.items")
|
|
66
|
+
};
|
|
67
|
+
var DEFAULT_API = {
|
|
68
|
+
// Folder CRUD
|
|
69
|
+
fetch: neetoCist.noop,
|
|
70
|
+
get: neetoCist.noop,
|
|
71
|
+
create: neetoCist.noop,
|
|
72
|
+
update: neetoCist.noop,
|
|
73
|
+
destroy: neetoCist.noop,
|
|
74
|
+
bulkUpdate: neetoCist.noop,
|
|
75
|
+
bulkDestroy: neetoCist.noop
|
|
76
|
+
};
|
|
71
77
|
var DEFAULT_CONFIG = {
|
|
72
78
|
type: "FOLDER",
|
|
73
79
|
// For query keys with different associated entities
|
|
@@ -75,21 +81,13 @@ var DEFAULT_CONFIG = {
|
|
|
75
81
|
// Maximum allowed depth for folder tree
|
|
76
82
|
folderPath: "/folders/:folderId",
|
|
77
83
|
// Path for handling URL redirections
|
|
78
|
-
|
|
79
|
-
// For displaying the item label in counts
|
|
80
|
-
itemKeys: [],
|
|
84
|
+
invalidationKeys: [],
|
|
81
85
|
// For invalidation purposes
|
|
86
|
+
reorderMode: "rearrange",
|
|
87
|
+
// rearrange | reorder
|
|
88
|
+
labels: DEFAULT_LABELS,
|
|
82
89
|
params: {},
|
|
83
|
-
api:
|
|
84
|
-
// Folder CRUD
|
|
85
|
-
fetch: neetoCist.noop,
|
|
86
|
-
get: neetoCist.noop,
|
|
87
|
-
create: neetoCist.noop,
|
|
88
|
-
update: neetoCist.noop,
|
|
89
|
-
destroy: neetoCist.noop,
|
|
90
|
-
bulkUpdate: neetoCist.noop,
|
|
91
|
-
bulkDestroy: neetoCist.noop
|
|
92
|
-
}
|
|
90
|
+
api: DEFAULT_API
|
|
93
91
|
};
|
|
94
92
|
|
|
95
93
|
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; }
|
|
@@ -115,24 +113,16 @@ var useFolderStore = zustand.create(reactUtils.withImmutableActions(function (se
|
|
|
115
113
|
};
|
|
116
114
|
}));
|
|
117
115
|
|
|
118
|
-
var getActiveFolderId = function getActiveFolderId(config) {
|
|
119
|
-
var _matchPath;
|
|
120
|
-
return (_matchPath = reactRouterDom.matchPath(window.location.pathname, config.folderPath)) === null || _matchPath === void 0 || (_matchPath = _matchPath.params) === null || _matchPath === void 0 ? void 0 : _matchPath.folderId;
|
|
121
|
-
};
|
|
122
|
-
var isActiveFolder = function isActiveFolder(config, folderId) {
|
|
123
|
-
return getActiveFolderId(config) === folderId;
|
|
124
|
-
};
|
|
125
|
-
|
|
126
116
|
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; }
|
|
127
117
|
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; }
|
|
128
118
|
var useFolder = function useFolder(configArg) {
|
|
129
119
|
var config = _objectSpread(_objectSpread({}, DEFAULT_CONFIG), configArg);
|
|
130
|
-
var folderId = getActiveFolderId(config);
|
|
120
|
+
var folderId = internal.getActiveFolderId(config);
|
|
131
121
|
var _useShowFolder = useShowFolder(config, folderId),
|
|
132
122
|
folder = _useShowFolder.data,
|
|
133
|
-
|
|
123
|
+
isFetching = _useShowFolder.isFetching;
|
|
134
124
|
return {
|
|
135
|
-
isLoading:
|
|
125
|
+
isLoading: isFetching && (folder === null || folder === void 0 ? void 0 : folder.slug) !== folderId,
|
|
136
126
|
folderId: folderId,
|
|
137
127
|
folder: folder
|
|
138
128
|
};
|
|
@@ -212,8 +202,6 @@ var useFolderActions = function useFolderActions(config) {
|
|
|
212
202
|
};
|
|
213
203
|
|
|
214
204
|
exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
|
|
215
|
-
exports.getActiveFolderId = getActiveFolderId;
|
|
216
|
-
exports.isActiveFolder = isActiveFolder;
|
|
217
205
|
exports.useCreateFolder = useCreateFolder;
|
|
218
206
|
exports.useDestroyFolder = useDestroyFolder;
|
|
219
207
|
exports.useFetchFolders = useFetchFolders;
|
|
@@ -223,4 +211,4 @@ exports.useFolderStore = useFolderStore;
|
|
|
223
211
|
exports.useFolders = useFolders;
|
|
224
212
|
exports.useReorderFolders = useReorderFolders;
|
|
225
213
|
exports.useUpdateFolder = useUpdateFolder;
|
|
226
|
-
//# sourceMappingURL=useFolderActions-
|
|
214
|
+
//# sourceMappingURL=useFolderActions-D8xGNhk0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFolderActions-D8xGNhk0.js","sources":["../app/javascript/src/hooks/reactQuery/useFoldersApi.js","../app/javascript/src/constants/config.js","../app/javascript/src/hooks/useFolders.js","../app/javascript/src/stores/foldersStore.js","../app/javascript/src/hooks/useFolder.js","../app/javascript/src/hooks/useFolderActions.js"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { useMutationWithInvalidation } from \"neetocommons/react-utils\";\n\nimport { QUERY_KEYS } from \"constants/query\";\n\nexport const useFetchFolders = config =>\n useQuery({\n queryKey: [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST, config.params],\n queryFn: () => config.api.fetch(config.params),\n });\n\nexport const useShowFolder = (config, folderId) =>\n useQuery({\n queryKey: [\n QUERY_KEYS.FOLDERS,\n config.type,\n QUERY_KEYS.DETAILS,\n folderId,\n config.params,\n ],\n queryFn: () => config.api.get(folderId, config.params),\n enabled: !!folderId,\n });\n\nexport const useCreateFolder = config =>\n useMutationWithInvalidation(config.api.create, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useUpdateFolder = config =>\n useMutationWithInvalidation(config.api.update, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useReorderFolders = config =>\n useMutationWithInvalidation(config.api.reorder, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useDestroyFolder = config =>\n useMutationWithInvalidation(config.api.destroy, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST]],\n });\n\nexport const useBulkUpdateFolders = config =>\n useMutationWithInvalidation(config.api.bulkUpdate, {\n keysToInvalidate: [[QUERY_KEYS.FOLDERS, config.type]],\n });\n\nexport const useBulkDestroyFolders = config =>\n useMutationWithInvalidation(config.api.bulkDestroy, {\n keysToInvalidate: [\n [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.LIST],\n [QUERY_KEYS.FOLDERS, config.type, QUERY_KEYS.DETAILS],\n ].concat(config.invalidationKeys),\n });\n","import { t } from \"i18next\";\nimport { noop } from \"neetocist\";\n\nconst DEFAULT_LABELS = {\n folder: t(\"common.folder\"),\n folders: t(\"common.folders\"),\n item: t(\"common.item\"),\n items: t(\"common.items\"),\n};\n\nconst DEFAULT_API = {\n // Folder CRUD\n fetch: noop,\n get: noop,\n create: noop,\n update: noop,\n destroy: noop,\n bulkUpdate: noop,\n bulkDestroy: noop,\n};\n\nexport const DEFAULT_CONFIG = {\n type: \"FOLDER\", // For query keys with different associated entities\n maxDepth: 2, // Maximum allowed depth for folder tree\n folderPath: \"/folders/:folderId\", // Path for handling URL redirections\n invalidationKeys: [], // For invalidation purposes\n reorderMode: \"rearrange\", // rearrange | reorder\n labels: DEFAULT_LABELS,\n params: {},\n api: DEFAULT_API,\n};\n","import { DEFAULT_CONFIG } from \"constants/config\";\nimport { useFetchFolders } from \"hooks/reactQuery/useFoldersApi\";\n\nconst useFolders = configArg => {\n const config = { ...DEFAULT_CONFIG, ...configArg };\n const { data: folders, isLoading } = useFetchFolders(config);\n\n return { isLoading, folders };\n};\n\nexport default useFolders;\n","import { withImmutableActions } from \"neetocommons/react-utils\";\nimport { create } from \"zustand\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useFolderStore = create(\n withImmutableActions(set => ({\n paneState: null,\n alertState: null,\n selectedItem: null,\n setFolderState: set,\n }))\n);\n\nexport default useFolderStore;\n","import { DEFAULT_CONFIG } from \"constants/config\";\nimport { useShowFolder } from \"hooks/reactQuery/useFoldersApi\";\nimport { getActiveFolderId } from \"utils/internal\";\n\nconst useFolder = configArg => {\n const config = { ...DEFAULT_CONFIG, ...configArg };\n const folderId = getActiveFolderId(config);\n\n const { data: folder, isFetching } = useShowFolder(config, folderId);\n\n return {\n isLoading: isFetching && folder?.slug !== folderId,\n folderId,\n folder,\n };\n};\n\nexport default useFolder;\n","import { useQueryClient } from \"@tanstack/react-query\";\n\nimport { QUERY_KEYS } from \"constants/query\";\nimport useFolderStore from \"stores/foldersStore\";\n\nimport {\n useBulkUpdateFolders,\n useBulkDestroyFolders,\n} from \"./reactQuery/useFoldersApi\";\n\nconst useFolderActions = config => {\n const queryClient = useQueryClient();\n const { setFolderState } = useFolderStore.pick();\n\n const { mutateAsync: onBulkUpdate, isPending: isUpdating } =\n useBulkUpdateFolders(config);\n\n const { mutateAsync: onBulkDelete, isPending: isDeleting } =\n useBulkDestroyFolders(config);\n\n const onInvalidate = () => {\n queryClient.invalidateQueries({\n queryKey: [QUERY_KEYS.FOLDERS, config.type],\n });\n };\n\n const onAdd = () =>\n setFolderState({ paneState: { type: \"add\", item: null } });\n\n const onEdit = item => setFolderState({ paneState: { type: \"edit\", item } });\n\n const onMove = item => setFolderState({ paneState: { type: \"move\", item } });\n\n const onDelete = item =>\n setFolderState({ alertState: { type: \"delete\", item } });\n\n const onReorder = () =>\n setFolderState({ paneState: { type: \"reorder\", item: null } });\n\n const isPending = isUpdating || isDeleting;\n\n return {\n isPending,\n onAdd,\n onEdit,\n onMove,\n onDelete,\n onReorder,\n onInvalidate,\n onBulkUpdate,\n onBulkDelete,\n };\n};\n\nexport default useFolderActions;\n"],"names":["useFetchFolders","config","useQuery","queryKey","QUERY_KEYS","FOLDERS","type","LIST","params","queryFn","api","fetch","useShowFolder","folderId","DETAILS","get","enabled","useCreateFolder","useMutationWithInvalidation","create","keysToInvalidate","useUpdateFolder","update","useReorderFolders","reorder","useDestroyFolder","destroy","useBulkUpdateFolders","bulkUpdate","useBulkDestroyFolders","bulkDestroy","concat","invalidationKeys","DEFAULT_LABELS","folder","t","folders","item","items","DEFAULT_API","noop","DEFAULT_CONFIG","maxDepth","folderPath","reorderMode","labels","useFolders","configArg","_objectSpread","_useFetchFolders","data","isLoading","useFolderStore","withImmutableActions","set","paneState","alertState","selectedItem","setFolderState","useFolder","getActiveFolderId","_useShowFolder","isFetching","slug","useFolderActions","queryClient","useQueryClient","_useFolderStore","store","shallow","_useBulkUpdateFolders","onBulkUpdate","mutateAsync","isUpdating","isPending","_useBulkDestroyFolder","onBulkDelete","isDeleting","onInvalidate","invalidateQueries","onAdd","onEdit","onMove","onDelete","onReorder"],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import 'ramda';
|
|
2
|
+
export { f as flattenTree, p as pathToFolder } from './index-Cq1DyvVr.js';
|
|
2
3
|
import '@babel/runtime/helpers/defineProperty';
|
|
3
4
|
import '@bigbinary/neeto-cist';
|
|
5
|
+
import './internal-G6z0jIQe.js';
|
|
6
|
+
import 'react-router-dom';
|
|
4
7
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-folders-frontend",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "A repo acts as the source of truth for the new nano's structure, configs, data etc.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"homepage": "https://github.com/bigbinary/neeto-folders-nano",
|
|
@@ -62,11 +62,11 @@
|
|
|
62
62
|
"@bigbinary/babel-preset-neeto": "^1.0.3",
|
|
63
63
|
"@bigbinary/eslint-plugin-neeto": "1.5.8",
|
|
64
64
|
"@bigbinary/neeto-cist": "1.0.15",
|
|
65
|
-
"@bigbinary/neeto-commons-frontend": "4.13.
|
|
66
|
-
"@bigbinary/neeto-filters-frontend": "4.3.
|
|
67
|
-
"@bigbinary/neeto-icons": "1.20.
|
|
68
|
-
"@bigbinary/neeto-molecules": "3.16.
|
|
69
|
-
"@bigbinary/neetoui": "8.2.
|
|
65
|
+
"@bigbinary/neeto-commons-frontend": "4.13.30",
|
|
66
|
+
"@bigbinary/neeto-filters-frontend": "4.3.18",
|
|
67
|
+
"@bigbinary/neeto-icons": "1.20.38",
|
|
68
|
+
"@bigbinary/neeto-molecules": "3.16.24",
|
|
69
|
+
"@bigbinary/neetoui": "8.2.80",
|
|
70
70
|
"@emotion/is-prop-valid": "1.2.0",
|
|
71
71
|
"@faker-js/faker": "8.2.0",
|
|
72
72
|
"@honeybadger-io/js": "6.10.1",
|
|
@@ -170,11 +170,11 @@
|
|
|
170
170
|
"peerDependencies": {
|
|
171
171
|
"@babel/runtime": "7.26.10",
|
|
172
172
|
"@bigbinary/neeto-cist": "1.0.15",
|
|
173
|
-
"@bigbinary/neeto-commons-frontend": "4.13.
|
|
174
|
-
"@bigbinary/neeto-filters-frontend": "4.3.
|
|
175
|
-
"@bigbinary/neeto-icons": "1.20.
|
|
176
|
-
"@bigbinary/neeto-molecules": "3.16.
|
|
177
|
-
"@bigbinary/neetoui": "8.2.
|
|
173
|
+
"@bigbinary/neeto-commons-frontend": "4.13.30",
|
|
174
|
+
"@bigbinary/neeto-filters-frontend": "4.3.18",
|
|
175
|
+
"@bigbinary/neeto-icons": "1.20.38",
|
|
176
|
+
"@bigbinary/neeto-molecules": "3.16.24",
|
|
177
|
+
"@bigbinary/neetoui": "8.2.80",
|
|
178
178
|
"@honeybadger-io/js": "6.10.1",
|
|
179
179
|
"@honeybadger-io/react": "6.1.25",
|
|
180
180
|
"@tailwindcss/container-queries": "^0.1.1",
|
package/types.d.ts
CHANGED
|
@@ -2,12 +2,20 @@ import React from "react";
|
|
|
2
2
|
|
|
3
3
|
type ApiMethod = () => Promise<any>;
|
|
4
4
|
|
|
5
|
+
interface Labels {
|
|
6
|
+
folder?: string;
|
|
7
|
+
folders?: string;
|
|
8
|
+
item?: string;
|
|
9
|
+
items?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
5
12
|
interface Config {
|
|
6
13
|
type: string;
|
|
7
14
|
maxDepth: number;
|
|
8
15
|
folderPath: string;
|
|
9
|
-
|
|
10
|
-
|
|
16
|
+
invalidationKeys: string[];
|
|
17
|
+
reorderMode: "rearrange" | "reorder";
|
|
18
|
+
labels: Labels;
|
|
11
19
|
params: { [key: string]: any };
|
|
12
20
|
api: {
|
|
13
21
|
fetch: ApiMethod;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathUtils-DSapmYDO.js","sources":["../app/javascript/src/utils/treeUtils.js","../app/javascript/src/utils/pathUtils.js"],"sourcesContent":["import { isNotPresent } from \"neetocist\";\n\nexport const walkTree = (\n tree,\n fn,\n meta = { index: 0, depth: 0, parent: null }\n) => {\n if (!tree) return;\n\n fn(tree, meta);\n if (tree.children) {\n tree.children.forEach((folder, index) =>\n walkTree(folder, fn, { parent: tree, index, depth: meta.depth + 1 })\n );\n }\n};\n\n// Measures the maximum depth to bottom of the tree\nexport const measureDepth = tree => {\n let maxDepth = 0;\n\n walkTree(tree, (_, meta) => {\n if (meta.depth > maxDepth) maxDepth = meta.depth;\n });\n\n return maxDepth;\n};\n\n// Convert tree to lookup table\nexport const treeToMap = (tree, key = \"id\") => {\n if (isNotPresent(tree)) return {};\n\n const roots = Array.isArray(tree) ? tree : [tree];\n const foldersMap = {};\n\n roots.forEach(root => {\n walkTree(root, (folder, meta) => {\n foldersMap[folder[key]] = { ...folder, meta };\n });\n });\n\n return foldersMap;\n};\n\n// Convert result of treeToMap back to tree\nexport const mapToTree = foldersMap => {\n const map = {};\n let root;\n\n Object.values(foldersMap).forEach(item => {\n map[item.id] = { ...item, children: [] };\n });\n\n Object.values(foldersMap).forEach(item => {\n if (!item.meta.parent) root = map[item.id];\n else map[item.meta.parent.id].children.push(map[item.id]);\n });\n\n return root;\n};\n","import { treeToMap } from \"./treeUtils\";\n\nexport const pathToFolder = (folders, folderId) => {\n const path = [];\n const folderMap = treeToMap(folders);\n if (!folderMap[folderId]) return path;\n\n let current = folderMap[folderId];\n while (current) {\n path.unshift(current);\n current = current.meta?.parent;\n }\n\n return path;\n};\n"],"names":["walkTree","tree","fn","meta","arguments","length","undefined","index","depth","parent","children","forEach","folder","measureDepth","maxDepth","_","treeToMap","key","isNotPresent","roots","Array","isArray","foldersMap","root","_objectSpread","mapToTree","map","Object","values","item","id","push","pathToFolder","folders","folderId","path","folderMap","current","_current$meta","unshift"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathUtils-W8cEGsHR.js","sources":["../app/javascript/src/utils/treeUtils.js","../app/javascript/src/utils/pathUtils.js"],"sourcesContent":["import { isNotPresent } from \"neetocist\";\n\nexport const walkTree = (\n tree,\n fn,\n meta = { index: 0, depth: 0, parent: null }\n) => {\n if (!tree) return;\n\n fn(tree, meta);\n if (tree.children) {\n tree.children.forEach((folder, index) =>\n walkTree(folder, fn, { parent: tree, index, depth: meta.depth + 1 })\n );\n }\n};\n\n// Measures the maximum depth to bottom of the tree\nexport const measureDepth = tree => {\n let maxDepth = 0;\n\n walkTree(tree, (_, meta) => {\n if (meta.depth > maxDepth) maxDepth = meta.depth;\n });\n\n return maxDepth;\n};\n\n// Convert tree to lookup table\nexport const treeToMap = (tree, key = \"id\") => {\n if (isNotPresent(tree)) return {};\n\n const roots = Array.isArray(tree) ? tree : [tree];\n const foldersMap = {};\n\n roots.forEach(root => {\n walkTree(root, (folder, meta) => {\n foldersMap[folder[key]] = { ...folder, meta };\n });\n });\n\n return foldersMap;\n};\n\n// Convert result of treeToMap back to tree\nexport const mapToTree = foldersMap => {\n const map = {};\n let root;\n\n Object.values(foldersMap).forEach(item => {\n map[item.id] = { ...item, children: [] };\n });\n\n Object.values(foldersMap).forEach(item => {\n if (!item.meta.parent) root = map[item.id];\n else map[item.meta.parent.id].children.push(map[item.id]);\n });\n\n return root;\n};\n","import { treeToMap } from \"./treeUtils\";\n\nexport const pathToFolder = (folders, folderId) => {\n const path = [];\n const folderMap = treeToMap(folders);\n if (!folderMap[folderId]) return path;\n\n let current = folderMap[folderId];\n while (current) {\n path.unshift(current);\n current = current.meta?.parent;\n }\n\n return path;\n};\n"],"names":["walkTree","tree","fn","meta","arguments","length","undefined","index","depth","parent","children","forEach","folder","measureDepth","maxDepth","_","treeToMap","key","isNotPresent","roots","Array","isArray","foldersMap","root","_objectSpread","mapToTree","map","Object","values","item","id","push","pathToFolder","folders","folderId","path","folderMap","current","_current$meta","unshift"],"mappings":"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"}
|