@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,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 = Array.isArray(tree) ? tree : [tree];
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
- var map = {};
51
- var root;
52
- Object.values(foldersMap).forEach(function (item) {
53
- map[item.id] = _objectSpread(_objectSpread({}, item), {}, {
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.parent;
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=pathUtils-DSapmYDO.js.map
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 { matchPath } from 'react-router-dom';
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 useDestroyMutation(config, config.api.destroy);
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 useDestroyMutation(config, config.api.bulkDestroy);
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
- itemLabel: t("common.items"),
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
- isLoading = _useShowFolder.isLoading;
121
+ isFetching = _useShowFolder.isFetching;
132
122
  return {
133
- isLoading: 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, getActiveFolderId as h, isActiveFolder as i, useReorderFolders as j, useFolder as u };
213
- //# sourceMappingURL=useFolderActions-DdOLB5Zw.js.map
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 reactRouterDom = require('react-router-dom');
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 useDestroyMutation(config, config.api.destroy);
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 useDestroyMutation(config, config.api.bulkDestroy);
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
- itemLabel: i18next.t("common.items"),
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
- isLoading = _useShowFolder.isLoading;
123
+ isFetching = _useShowFolder.isFetching;
134
124
  return {
135
- isLoading: 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-BSW7tGU6.js.map
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
- export { p as pathToFolder } from './pathUtils-DSapmYDO.js';
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": "1.1.7",
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.29",
66
- "@bigbinary/neeto-filters-frontend": "4.3.16",
67
- "@bigbinary/neeto-icons": "1.20.33",
68
- "@bigbinary/neeto-molecules": "3.16.1",
69
- "@bigbinary/neetoui": "8.2.79",
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.29",
174
- "@bigbinary/neeto-filters-frontend": "4.3.16",
175
- "@bigbinary/neeto-icons": "1.20.33",
176
- "@bigbinary/neeto-molecules": "3.16.1",
177
- "@bigbinary/neetoui": "8.2.79",
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
- itemLabel: string;
10
- itemKeys: string[];
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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"}