@ynput/ayon-frontend-shared 0.2.31 → 0.2.32
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/dist/_virtual/index.cjs10.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.cjs9.js +1 -1
- package/dist/_virtual/index.es10.js +5 -5
- package/dist/_virtual/index.es5.js +5 -2
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +2 -5
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/_virtual/index.es8.js +3 -3
- package/dist/_virtual/index.es9.js +5 -5
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js.map +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js.map +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/access.es.js.map +1 -1
- package/dist/shared/src/api/generated/authentication.cjs.js +1 -1
- package/dist/shared/src/api/generated/authentication.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/authentication.es.js +9 -6
- package/dist/shared/src/api/generated/authentication.es.js.map +1 -1
- package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
- package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/folders.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
- package/dist/shared/src/api/generated/links.cjs.js +1 -1
- package/dist/shared/src/api/generated/links.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/links.es.js +13 -5
- package/dist/shared/src/api/generated/links.es.js.map +1 -1
- package/dist/shared/src/api/generated/onboarding.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/onboarding.es.js.map +1 -1
- package/dist/shared/src/api/generated/operations.cjs.js +1 -1
- package/dist/shared/src/api/generated/operations.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/operations.es.js +16 -0
- package/dist/shared/src/api/generated/operations.es.js.map +1 -1
- package/dist/shared/src/api/generated/products.cjs.js +1 -1
- package/dist/shared/src/api/generated/products.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/products.es.js +6 -3
- package/dist/shared/src/api/generated/products.es.js.map +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/projects.es.js +19 -0
- package/dist/shared/src/api/generated/projects.es.js.map +1 -1
- package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/system.es.js.map +1 -1
- package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
- package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/users.es.js.map +1 -1
- package/dist/shared/src/api/generated/versions.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/versions.es.js.map +1 -1
- package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/views.es.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +15 -10
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js +60 -0
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js +332 -0
- package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js.map +1 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +4 -4
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +37 -33
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js +3 -5
- package/dist/shared/src/components/Thumbnail/Thumbnail.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js +4 -6
- package/dist/shared/src/components/Thumbnail/Thumbnail.styled.es.js.map +1 -1
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +1 -2
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +0 -1
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +555 -537
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +4 -5
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +92 -91
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +126 -108
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.cjs.js +2 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.es.js +9 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +49 -48
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +38 -9
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +74 -39
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +24 -15
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +71 -59
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +6 -6
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -12
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.es.js +35 -33
- package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
- package/dist/types/api/generated/access.d.ts +6 -0
- package/dist/types/api/generated/authentication.d.ts +6 -0
- package/dist/types/api/generated/entityLists.d.ts +7 -7
- package/dist/types/api/generated/folders.d.ts +2 -2
- package/dist/types/api/generated/graphql.d.ts +3 -1
- package/dist/types/api/generated/graphqlLinks.d.ts +21 -15
- package/dist/types/api/generated/links.d.ts +4 -0
- package/dist/types/api/generated/onboarding.d.ts +3 -0
- package/dist/types/api/generated/operations.d.ts +22 -1
- package/dist/types/api/generated/products.d.ts +23 -0
- package/dist/types/api/generated/projects.d.ts +63 -0
- package/dist/types/api/generated/representations.d.ts +1 -0
- package/dist/types/api/generated/system.d.ts +9 -2
- package/dist/types/api/generated/tasks.d.ts +1 -0
- package/dist/types/api/generated/users.d.ts +1 -1
- package/dist/types/api/generated/versions.d.ts +1 -0
- package/dist/types/api/generated/views.d.ts +50 -9
- package/dist/types/api/queries/authentication/getAuthentication.d.ts +1 -0
- package/dist/types/api/queries/overview/updateOverview.d.ts +2 -0
- package/dist/types/api/queries/project/getProject.d.ts +4 -0
- package/dist/types/components/ProjectTableSettings/RowHeightSettings.d.ts +3 -0
- package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +4 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useDynamicRowHeight.d.ts +11 -0
- package/dist/types/containers/ProjectTreeTable/widgets/EntityNameWidget.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +2 -1
- package/package.json +3 -3
|
@@ -1,43 +1,48 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import
|
|
3
|
-
import { functionalUpdate as
|
|
4
|
-
import { ROW_SELECTION_COLUMN_ID as
|
|
5
|
-
import { DRAG_HANDLE_COLUMN_ID as
|
|
6
|
-
import { ColumnSettingsContext as
|
|
7
|
-
const
|
|
8
|
-
children:
|
|
9
|
-
config:
|
|
10
|
-
onChange:
|
|
1
|
+
import { j as fn } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
+
import m, { useState as w } from "react";
|
|
3
|
+
import { functionalUpdate as f } from "@tanstack/react-table";
|
|
4
|
+
import { ROW_SELECTION_COLUMN_ID as an } from "./SelectionCellsContext.es.js";
|
|
5
|
+
import { DRAG_HANDLE_COLUMN_ID as gn } from "../ProjectTreeTable.es.js";
|
|
6
|
+
import { ColumnSettingsContext as dn } from "./ColumnSettingsContext.es.js";
|
|
7
|
+
const Pn = ({
|
|
8
|
+
children: j,
|
|
9
|
+
config: L,
|
|
10
|
+
onChange: D
|
|
11
11
|
}) => {
|
|
12
|
-
var
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
}, o = (n) =>
|
|
16
|
-
columnOrder:
|
|
17
|
-
columnPinning:
|
|
18
|
-
columnVisibility:
|
|
19
|
-
columnSizing:
|
|
20
|
-
sorting:
|
|
21
|
-
groupBy:
|
|
22
|
-
groupByConfig:
|
|
23
|
-
|
|
24
|
-
|
|
12
|
+
var E;
|
|
13
|
+
const R = m.useRef([]), [N, P] = w(null), [U, y] = w(null), [G, d] = w(34), S = m.useRef(!1), W = (n) => {
|
|
14
|
+
R.current = Array.from(new Set(n));
|
|
15
|
+
}, o = (n) => D(n, R.current), s = L, {
|
|
16
|
+
columnOrder: v = [],
|
|
17
|
+
columnPinning: M = {},
|
|
18
|
+
columnVisibility: k = {},
|
|
19
|
+
columnSizing: q = {},
|
|
20
|
+
sorting: F = [],
|
|
21
|
+
groupBy: C,
|
|
22
|
+
groupByConfig: b = {},
|
|
23
|
+
rowHeight: a
|
|
24
|
+
} = s || {}, H = m.useRef(!1);
|
|
25
|
+
m.useEffect(() => {
|
|
26
|
+
!H.current && a !== void 0 && a !== null && (d(a), H.current = !0);
|
|
27
|
+
}, [a]);
|
|
28
|
+
const J = U ?? G, I = [...F], i = [...v], t = { ...M }, O = ["thumbnail", "name", "subType", "status", "tags"];
|
|
29
|
+
if (O.forEach((n, e) => {
|
|
25
30
|
if (!i.includes(n)) {
|
|
26
|
-
const
|
|
27
|
-
if (!
|
|
31
|
+
const r = O[e - 1], u = O[e + 1];
|
|
32
|
+
if (!r || !i.includes(r))
|
|
28
33
|
i.unshift(n);
|
|
29
34
|
else {
|
|
30
|
-
const
|
|
31
|
-
i.splice(
|
|
35
|
+
const l = i.indexOf(r);
|
|
36
|
+
i.splice(l + 1, 0, n);
|
|
32
37
|
}
|
|
33
|
-
|
|
38
|
+
u && (t != null && t.left) && (t != null && t.left.includes(u)) && (t.left = [n, ...(t == null ? void 0 : t.left) || []]);
|
|
34
39
|
}
|
|
35
|
-
}),
|
|
36
|
-
if (!((
|
|
37
|
-
|
|
40
|
+
}), C) {
|
|
41
|
+
if (!((E = t.left) != null && E.includes("name")))
|
|
42
|
+
t.left = ["name", ...(t == null ? void 0 : t.left) || []];
|
|
38
43
|
else {
|
|
39
|
-
const n =
|
|
40
|
-
|
|
44
|
+
const n = t.left.filter((e) => e !== "name");
|
|
45
|
+
t.left = ["name", ...n];
|
|
41
46
|
}
|
|
42
47
|
if (i.includes("name")) {
|
|
43
48
|
const n = i.indexOf("name");
|
|
@@ -45,144 +50,157 @@ const cn = ({
|
|
|
45
50
|
}
|
|
46
51
|
i.unshift("name");
|
|
47
52
|
}
|
|
48
|
-
i.unshift(
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
const
|
|
53
|
+
i.unshift(gn, an);
|
|
54
|
+
const g = { ...k };
|
|
55
|
+
C && !g.name && (g.name = !0);
|
|
56
|
+
const x = (n) => {
|
|
52
57
|
o({
|
|
53
58
|
...s,
|
|
54
59
|
columnVisibility: n
|
|
55
60
|
});
|
|
56
|
-
},
|
|
61
|
+
}, z = (n) => {
|
|
57
62
|
o({
|
|
58
63
|
...s,
|
|
59
64
|
columnOrder: n
|
|
60
65
|
});
|
|
61
|
-
},
|
|
66
|
+
}, V = (n) => {
|
|
62
67
|
o({
|
|
63
68
|
...s,
|
|
64
69
|
columnPinning: n
|
|
65
70
|
});
|
|
66
|
-
},
|
|
67
|
-
|
|
71
|
+
}, T = N || q, p = m.useRef(null), h = m.useRef(null), _ = (n) => {
|
|
72
|
+
P(n), p.current && clearTimeout(p.current), p.current = setTimeout(() => {
|
|
68
73
|
o({
|
|
69
74
|
...s,
|
|
70
75
|
columnSizing: n
|
|
71
|
-
}),
|
|
76
|
+
}), P(null);
|
|
72
77
|
}, 500);
|
|
73
|
-
},
|
|
74
|
-
const
|
|
78
|
+
}, K = (n) => {
|
|
79
|
+
const e = { ...t }, r = e.left || [], u = Object.keys(n).filter((c) => n[c] === !1), l = r.filter((c) => !u.includes(c));
|
|
75
80
|
return {
|
|
76
|
-
...
|
|
77
|
-
left:
|
|
81
|
+
...e,
|
|
82
|
+
left: l
|
|
78
83
|
};
|
|
79
|
-
},
|
|
80
|
-
const
|
|
84
|
+
}, Q = (n) => {
|
|
85
|
+
const e = { ...t }, r = e.left || [], u = n.filter((l) => r.includes(l));
|
|
81
86
|
return {
|
|
82
|
-
...
|
|
83
|
-
left:
|
|
87
|
+
...e,
|
|
88
|
+
left: u
|
|
84
89
|
};
|
|
85
|
-
},
|
|
86
|
-
var c,
|
|
87
|
-
const
|
|
88
|
-
return ((
|
|
89
|
-
}),
|
|
90
|
-
const
|
|
90
|
+
}, X = (n) => [...i].sort((e, r) => {
|
|
91
|
+
var c, A;
|
|
92
|
+
const u = (c = n.left) != null && c.includes(e) ? 1 : 0;
|
|
93
|
+
return ((A = n.left) != null && A.includes(r) ? 1 : 0) - u;
|
|
94
|
+
}), Y = (n) => {
|
|
95
|
+
const e = K(n);
|
|
91
96
|
o({
|
|
92
97
|
...s,
|
|
93
98
|
columnVisibility: n,
|
|
94
|
-
columnPinning:
|
|
99
|
+
columnPinning: e
|
|
95
100
|
});
|
|
96
|
-
},
|
|
97
|
-
const
|
|
101
|
+
}, Z = (n) => {
|
|
102
|
+
const e = Q(n);
|
|
98
103
|
o({
|
|
99
104
|
...s,
|
|
100
105
|
columnOrder: n,
|
|
101
|
-
columnPinning:
|
|
106
|
+
columnPinning: e
|
|
102
107
|
});
|
|
103
|
-
},
|
|
104
|
-
const
|
|
108
|
+
}, $ = (n) => {
|
|
109
|
+
const e = X(n);
|
|
105
110
|
o({
|
|
106
111
|
...s,
|
|
107
|
-
columnOrder:
|
|
112
|
+
columnOrder: e,
|
|
108
113
|
columnPinning: n
|
|
109
114
|
});
|
|
110
|
-
},
|
|
115
|
+
}, B = (n) => {
|
|
111
116
|
o({
|
|
112
117
|
...s,
|
|
113
118
|
sorting: n
|
|
114
119
|
});
|
|
115
|
-
},
|
|
120
|
+
}, nn = (n) => {
|
|
116
121
|
o({
|
|
117
122
|
...s,
|
|
118
123
|
groupBy: n
|
|
119
124
|
});
|
|
120
|
-
},
|
|
125
|
+
}, en = (n) => {
|
|
121
126
|
o({
|
|
122
127
|
...s,
|
|
123
128
|
groupByConfig: {
|
|
124
|
-
...
|
|
129
|
+
...b,
|
|
125
130
|
...n
|
|
126
131
|
}
|
|
127
132
|
});
|
|
128
|
-
},
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
},
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
},
|
|
141
|
-
const
|
|
142
|
-
|
|
133
|
+
}, tn = (n) => {
|
|
134
|
+
d(n);
|
|
135
|
+
}, on = (n) => {
|
|
136
|
+
d(n), S.current = !0, y(n), h.current && clearTimeout(h.current), h.current = setTimeout(() => {
|
|
137
|
+
o({
|
|
138
|
+
...s,
|
|
139
|
+
rowHeight: n
|
|
140
|
+
}), y(null), S.current = !1;
|
|
141
|
+
}, 200);
|
|
142
|
+
}, sn = tn, rn = (n) => {
|
|
143
|
+
const e = f(n, g);
|
|
144
|
+
x(e);
|
|
145
|
+
}, un = (n) => {
|
|
146
|
+
const e = f(n, t);
|
|
147
|
+
V(e);
|
|
148
|
+
}, ln = (n) => {
|
|
149
|
+
const e = f(n, i);
|
|
150
|
+
z(e);
|
|
151
|
+
}, cn = (n) => {
|
|
152
|
+
const e = f(n, T);
|
|
153
|
+
_(e);
|
|
154
|
+
}, mn = (n) => {
|
|
155
|
+
const e = f(n, I);
|
|
156
|
+
B(e);
|
|
143
157
|
};
|
|
144
|
-
return /* @__PURE__ */
|
|
145
|
-
|
|
158
|
+
return /* @__PURE__ */ fn.jsx(
|
|
159
|
+
dn.Provider,
|
|
146
160
|
{
|
|
147
161
|
value: {
|
|
148
162
|
// all columns ref
|
|
149
|
-
setAllColumns:
|
|
163
|
+
setAllColumns: W,
|
|
150
164
|
// column visibility
|
|
151
|
-
columnVisibility:
|
|
152
|
-
setColumnVisibility:
|
|
153
|
-
updateColumnVisibility:
|
|
154
|
-
columnVisibilityOnChange:
|
|
165
|
+
columnVisibility: g,
|
|
166
|
+
setColumnVisibility: x,
|
|
167
|
+
updateColumnVisibility: Y,
|
|
168
|
+
columnVisibilityOnChange: rn,
|
|
155
169
|
// column pinning
|
|
156
|
-
columnPinning:
|
|
157
|
-
setColumnPinning:
|
|
158
|
-
updateColumnPinning:
|
|
159
|
-
columnPinningOnChange:
|
|
170
|
+
columnPinning: t,
|
|
171
|
+
setColumnPinning: V,
|
|
172
|
+
updateColumnPinning: $,
|
|
173
|
+
columnPinningOnChange: un,
|
|
160
174
|
// column order
|
|
161
175
|
columnOrder: i,
|
|
162
|
-
setColumnOrder:
|
|
163
|
-
updateColumnOrder:
|
|
164
|
-
columnOrderOnChange:
|
|
176
|
+
setColumnOrder: z,
|
|
177
|
+
updateColumnOrder: Z,
|
|
178
|
+
columnOrderOnChange: ln,
|
|
165
179
|
// column sizing
|
|
166
|
-
columnSizing:
|
|
167
|
-
setColumnSizing:
|
|
168
|
-
columnSizingOnChange:
|
|
180
|
+
columnSizing: T,
|
|
181
|
+
setColumnSizing: _,
|
|
182
|
+
columnSizingOnChange: cn,
|
|
169
183
|
// sorting
|
|
170
|
-
sorting:
|
|
171
|
-
updateSorting:
|
|
172
|
-
sortingOnChange:
|
|
184
|
+
sorting: I,
|
|
185
|
+
updateSorting: B,
|
|
186
|
+
sortingOnChange: mn,
|
|
173
187
|
// group by
|
|
174
|
-
groupBy:
|
|
175
|
-
updateGroupBy:
|
|
176
|
-
groupByConfig:
|
|
177
|
-
updateGroupByConfig:
|
|
188
|
+
groupBy: C,
|
|
189
|
+
updateGroupBy: nn,
|
|
190
|
+
groupByConfig: b,
|
|
191
|
+
updateGroupByConfig: en,
|
|
192
|
+
// row height
|
|
193
|
+
rowHeight: J,
|
|
194
|
+
updateRowHeight: sn,
|
|
195
|
+
updateRowHeightWithPersistence: on,
|
|
178
196
|
// global change
|
|
179
197
|
setColumnsConfig: (n) => o(n)
|
|
180
198
|
},
|
|
181
|
-
children:
|
|
199
|
+
children: j
|
|
182
200
|
}
|
|
183
201
|
);
|
|
184
202
|
};
|
|
185
203
|
export {
|
|
186
|
-
|
|
204
|
+
Pn as ColumnSettingsProvider
|
|
187
205
|
};
|
|
188
206
|
//# sourceMappingURL=ColumnSettingsProvider.es.js.map
|
package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnSettingsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => onChange(next, allColumnsRef.current)\n const columnsConfig = config as ColumnsConfig\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n } = columnsConfig\n\n const sorting = [...sortingInit]\n const columnOrder = [...columnOrderInit]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode, always pin the name column\n // and ensure it is first in column order\n if (groupBy) {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const hiddenColumns = Object.keys(visibility).filter((col) => visibility[col] === false)\n const newPinnedColumns = pinnedColumns.filter((col) => !hiddenColumns.includes(col))\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n const newPinning = updatePinningOrderOnOrderChange(order)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const newVisibility = functionalUpdate(updater, columnVisibility)\n setColumnVisibility(newVisibility)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","allColumnsRef","React","setAllColumns","allColumnIds","onChangeWithColumns","next","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","_a","filteredPinned","nameIndex","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","internalColumnSizing","setInternalColumnSizing","useState","columnSizing","resizingTimeoutRef","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","pinnedColumns","hiddenColumns","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","_b","updateColumnVisibility","updateColumnOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateGroupBy","updateGroupByConfig","columnVisibilityOnChange","updater","newVisibility","functionalUpdate","columnPinningOnChange","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ColumnSettingsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ROW_SELECTION_COLUMN_ID } from './SelectionCellsContext'\nimport { DRAG_HANDLE_COLUMN_ID } from '../ProjectTreeTable'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n\n // Local row height state that persists and doesn't get overridden by API\n const [localRowHeight, setLocalRowHeight] = useState<number>(34)\n\n // Flag to prevent API updates during active row height adjustments\n const isAdjustingRowHeightRef = React.useRef(false)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => onChange(next, allColumnsRef.current)\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight,\n } = columnsConfig || {}\n\n // Initialize local row height from API only once on mount\n const hasInitializedRef = React.useRef(false)\n React.useEffect(() => {\n if (!hasInitializedRef.current && configRowHeight !== undefined && configRowHeight !== null) {\n setLocalRowHeight(configRowHeight)\n hasInitializedRef.current = true\n }\n }, [configRowHeight])\n\n // Use internal row height during slider adjustments, otherwise use local persistent state\n const rowHeight = internalRowHeight ?? localRowHeight\n\n const sorting = [...sortingInit]\n const columnOrder = [...columnOrderInit]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode, always pin the name column\n // and ensure it is first in column order\n if (groupBy) {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const hiddenColumns = Object.keys(visibility).filter((col) => visibility[col] === false)\n const newPinnedColumns = pinnedColumns.filter((col) => !hiddenColumns.includes(col))\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n const newPinning = updatePinningOrderOnOrderChange(order)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeightUI = (newRowHeight: number) => {\n setLocalRowHeight(newRowHeight)\n }\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = (newRowHeight: number) => {\n // Update UI immediately\n setLocalRowHeight(newRowHeight)\n\n // Block external API updates during adjustment period\n isAdjustingRowHeightRef.current = true\n setInternalRowHeight(newRowHeight)\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n })\n\n // Clean up internal state\n setInternalRowHeight(null)\n isAdjustingRowHeightRef.current = false\n }, 200)\n }\n\n // Public API for immediate UI updates (used during slider drag)\n const updateRowHeight = updateRowHeightUI\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const newVisibility = functionalUpdate(updater, columnVisibility)\n setColumnVisibility(newVisibility)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","allColumnsRef","React","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","localRowHeight","setLocalRowHeight","isAdjustingRowHeightRef","setAllColumns","allColumnIds","onChangeWithColumns","next","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","hasInitializedRef","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","_a","filteredPinned","nameIndex","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","resizingTimeoutRef","rowHeightTimeoutRef","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","pinnedColumns","hiddenColumns","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","_b","updateColumnVisibility","updateColumnOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateGroupBy","updateGroupByConfig","updateRowHeightUI","newRowHeight","updateRowHeightWithPersistence","updateRowHeight","columnVisibilityOnChange","updater","newVisibility","functionalUpdate","columnPinningOnChange","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDynamicRowHeight.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.ts"],"sourcesContent":["import { useCallback } from 'react'\nimport type { TableRow } from '../types/table'\nimport { useColumnSettingsContext } from '../context/ColumnSettingsContext'\n\nconst DEFAULT_ROW_HEIGHT = 24\n\n/**\n * Hook to provide row height based on user setting from Customize panel\n * Returns a function that calculates height per row using the configured row height\n */\nconst useDynamicRowHeight = () => {\n const { rowHeight = DEFAULT_ROW_HEIGHT } = useColumnSettingsContext()\n\n // Function to calculate height for a specific row - avoid stale closure by not memoizing the function\n const getRowHeight = (_row: TableRow) => {\n return rowHeight\n }\n\n return { getRowHeight, thumbnailRowHeight: rowHeight, defaultRowHeight: rowHeight }\n}\n\nexport default useDynamicRowHeight\n"],"names":["DEFAULT_ROW_HEIGHT","useDynamicRowHeight","rowHeight","useColumnSettingsContext","_row"],"mappings":"wEAIMA,EAAqB,GAMrBC,EAAsB,IAAM,CAChC,KAAM,CAAE,UAAAC,EAAYF,CAAmB,EAAIG,2BAAyB,EAOpE,MAAO,CAAE,aAJaC,GACbF,EAGc,mBAAoBA,EAAW,iBAAkBA,CAAU,CACpF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useColumnSettingsContext as e } from "../context/ColumnSettingsContext.es.js";
|
|
2
|
+
const o = 24, r = () => {
|
|
3
|
+
const { rowHeight: t = o } = e();
|
|
4
|
+
return { getRowHeight: (i) => t, thumbnailRowHeight: t, defaultRowHeight: t };
|
|
5
|
+
};
|
|
6
|
+
export {
|
|
7
|
+
r as default
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=useDynamicRowHeight.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDynamicRowHeight.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useDynamicRowHeight.ts"],"sourcesContent":["import { useCallback } from 'react'\nimport type { TableRow } from '../types/table'\nimport { useColumnSettingsContext } from '../context/ColumnSettingsContext'\n\nconst DEFAULT_ROW_HEIGHT = 24\n\n/**\n * Hook to provide row height based on user setting from Customize panel\n * Returns a function that calculates height per row using the configured row height\n */\nconst useDynamicRowHeight = () => {\n const { rowHeight = DEFAULT_ROW_HEIGHT } = useColumnSettingsContext()\n\n // Function to calculate height for a specific row - avoid stale closure by not memoizing the function\n const getRowHeight = (_row: TableRow) => {\n return rowHeight\n }\n\n return { getRowHeight, thumbnailRowHeight: rowHeight, defaultRowHeight: rowHeight }\n}\n\nexport default useDynamicRowHeight\n"],"names":["DEFAULT_ROW_HEIGHT","useDynamicRowHeight","rowHeight","useColumnSettingsContext","_row"],"mappings":";AAIA,MAAMA,IAAqB,IAMrBC,IAAsB,MAAM;AAChC,QAAM,EAAE,WAAAC,IAAYF,EAAmB,IAAIG,EAAyB;AAOpE,SAAO,EAAE,cAJY,CAACC,MACbF,GAGc,oBAAoBA,GAAW,kBAAkBA,EAAU;AACpF;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../../_virtual/jsx-runtime.cjs.js"),f=require("react"),z=require("styled-components"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../../_virtual/jsx-runtime.cjs.js"),f=require("react"),z=require("styled-components"),J=require("./BooleanWidget.cjs.js"),K=require("./CollapsedWidget.cjs.js"),Q=require("./DateWidget.cjs.js"),X=require("./EnumWidget.cjs.js"),Y=require("./TextWidget.cjs.js"),I=require("./LinksWidget.cjs.js"),Z=require("../context/CellEditingContext.cjs.js"),$=require("../context/ColumnSettingsContext.cjs.js"),w=require("../utils/cellUtils.cjs.js"),O=require("clsx"),V=require("../context/SelectionCellsContext.cjs.js");require("react-toastify");require("lodash");require("uuid");require("../../../util/pubsub.cjs.js");require("@ynput/ayon-react-components");require("@tanstack/react-table");require("./EntityNameWidget.cjs.js");require("./GroupHeaderWidget.cjs.js");require("./ThumbnailWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("./LoadMoreWidget.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");const ee=require("../context/ProjectTableContext.cjs.js");require("../context/ClipboardContext.cjs.js");require("../ProjectTreeTable.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");;/* empty css */require("../../ContextMenu/ContextMenuContext.cjs.js");require("../context/ProjectDataContext.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");const re=require("./EnumCellValue.cjs.js"),ie=require("./NameWidget.cjs.js"),ue=z.div`
|
|
2
2
|
position: absolute;
|
|
3
3
|
inset: 0;
|
|
4
4
|
padding: 4px 8px;
|
|
@@ -19,5 +19,5 @@
|
|
|
19
19
|
border-radius: 4px;
|
|
20
20
|
opacity: 1;
|
|
21
21
|
}
|
|
22
|
-
`,
|
|
22
|
+
`,te="edit-trigger",ne=({rowId:T,columnId:C,value:i,valueData:W,attributeData:E,options:d=[],isCollapsed:R,isInherited:g,isPlaceholder:m,isReadOnly:l,enableCustomValues:h,folderId:A,onChange:j,entityType:N,pt:t,...b})=>{const y=f.useRef(null),u=E==null?void 0:E.type,{projectName:L}=ee.useProjectTableContext(),{isEditing:M,setEditingCellId:o}=Z.useCellEditing(),{isCellFocused:k,gridMap:S,selectCell:G,focusCell:_}=V.useSelectionCellsContext(),{rowHeight:p}=$.useColumnSettingsContext(),q=w.getCellId(T,C),x=M(q),B=k(q),F=f.useCallback(()=>{m||l||o(q)},[q,o,m]),P=()=>{x||o(null)},v=()=>{const r=S.rowIdToIndex.get(T);if(r===void 0)return;const n=S.indexToRowId.get(r+1);if(n){const e=w.getCellId(n,C);G(e,!1,!1),_(e),o(e)}},D=(r,n)=>{o(null),!l&&(n==="Enter"&&v(),(r!==i||n==="Enter")&&(j==null||j(r,n)))},H=()=>{var n;o(null);const r=(n=y.current)==null?void 0:n.closest("td");r&&r.focus()},U=f.useMemo(()=>{const r={onChange:D,onCancelEdit:H,isEditing:x},n=["string","integer","float"];switch(!0){case R:{const e=u!=null&&u.includes("list")?d.find(a=>Array.isArray(i)?i.includes(a.value):i===a.value):void 0,c=e==null?void 0:e.color;return s.jsxRuntimeExports.jsx(K.CollapsedWidget,{color:c})}case u==="name":return s.jsxRuntimeExports.jsx(ie.NameWidget,{value:i,valueData:W,cellId:q,entityType:N||"",...r});case u==="links":{const e=W,c=I.isLinkEditable((e==null?void 0:e.direction)||"out",(e==null?void 0:e.link.linkType)||"",(e==null?void 0:e.entityType)||"");return l=!c,s.jsxRuntimeExports.jsx(I.LinksWidget,{value:e,cellId:q,projectName:L,disabled:!c,folderId:A,...r})}case!!d.length:{const e=Array.isArray(i)?i:[i];if(l){const c=d.filter(a=>e.includes(a.value));return s.jsxRuntimeExports.jsx(re.EnumCellValue,{selectedOptions:c,isReadOnly:!0,hasMultipleValues:e.length>1,isMultiSelect:u==null?void 0:u.includes("list"),rowHeight:p})}return s.jsxRuntimeExports.jsx(X.EnumWidget,{value:e,options:d,type:u,onOpen:()=>o(q),enableCustomValues:h,...r,...t==null?void 0:t.enum})}case n.includes(u):return s.jsxRuntimeExports.jsx(Y.TextWidget,{value:i,isInherited:g,columnId:C,...r,...t==null?void 0:t.text});case u==="datetime":return s.jsxRuntimeExports.jsx(Q.DateWidget,{value:i||void 0,isInherited:g,...r,...t==null?void 0:t.date});case u==="boolean":return s.jsxRuntimeExports.jsx(J.BooleanWidget,{value:i,...r,...t==null?void 0:t.boolean});case m:return null;default:return null}},[q,i,u,x,d,R]);return s.jsxRuntimeExports.jsx(ue,{...b,className:O(b.className,{inherited:g&&!x,readonly:l,editable:!l}),ref:y,onDoubleClick:F,onClick:P,id:q,"data-tooltip":g&&!x&&B?"Inherited":void 0,"data-tooltip-delay":200,children:U})};exports.CellWidget=ne;exports.EDIT_TRIGGER_CLASS=te;
|
|
23
23
|
//# sourceMappingURL=CellWidget.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { useMemo, useCallback, useRef, FC } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\nimport { isLinkEditable, LinksWidget, LinkWidgetData } from './LinksWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { AttributeData, AttributeEnumItem } from '../types'\nimport { useProjectTableContext } from '../context'\nimport { EnumCellValue } from './EnumCellValue'\nimport { NameWidget } from '@shared/containers/ProjectTreeTable/widgets/NameWidget'\nimport { NameWidgetData } from '@shared/components/RenameForm'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n`\n\n// use this class to trigger the editing mode on a single click\nexport const EDIT_TRIGGER_CLASS = 'edit-trigger'\n\ntype WidgetAttributeData = { type: AttributeData['type'] | 'links' | 'name' }\n\nexport type CellValue = string | number | boolean\nexport type CellValueData = Record<string, any>\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n valueData?: CellValueData | CellValueData[] // extra data for the value\n attributeData?: WidgetAttributeData\n options?: AttributeEnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n folderId?: string | null\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n entityType?: string\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nexport const CellWidget: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n valueData,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n folderId,\n onChange,\n entityType,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { projectName } = useProjectTableContext()\n const { isEditing, setEditingCellId } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const cellId = getCellId(rowId, columnId)\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const handleDoubleClick = useCallback(() => {\n if (isPlaceholder || isReadOnly) return\n setEditingCellId(cellId)\n }, [cellId, setEditingCellId, isPlaceholder])\n\n const handleSingleClick = () => {\n // clicking a cell that is not editing will close the editor on this cell\n // NOTE: the selection of a cell is handled in ProjectTreeTable.tsx line 1079\n if (!isCurrentCellEditing) {\n setEditingCellId(null)\n }\n }\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) return\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n setEditingCellId(null)\n if (isReadOnly) return\n // move to the next cell row\n key === 'Enter' && moveToNextRow()\n // make change if the value is different or if the key is 'Enter'\n if (newValue !== value || key === 'Enter') {\n onChange?.(newValue, key)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n // ensure the browser focus moves back to the parent <td>\n const td = ref.current?.closest('td') as HTMLElement | null\n if (td) td.focus()\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n case type === 'name': {\n return (\n <NameWidget\n value={value as CellValue}\n valueData={valueData as NameWidgetData}\n cellId={cellId}\n entityType={entityType || ''}\n {...sharedProps}\n />\n )\n }\n\n case type === 'links': {\n const linksValue = valueData as LinkWidgetData | undefined\n\n const isEditable = isLinkEditable(\n linksValue?.direction || 'out',\n linksValue?.link.linkType || '',\n linksValue?.entityType || '',\n )\n\n // overwrite readonly state if the cell is currently being edited\n isReadOnly = !isEditable\n return (\n <LinksWidget\n value={linksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={!isEditable}\n folderId={folderId}\n {...sharedProps}\n />\n )\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n if (isReadOnly) {\n const selectedOptions = options.filter((option) => enumValue.includes(option.value))\n return (\n <EnumCellValue\n selectedOptions={selectedOptions}\n isReadOnly\n hasMultipleValues={enumValue.length > 1}\n isMultiSelect={type?.includes('list')}\n />\n )\n }\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n columnId={columnId}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, {\n inherited: isInherited && !isCurrentCellEditing,\n readonly: isReadOnly,\n editable: !isReadOnly,\n })}\n ref={ref}\n onDoubleClick={handleDoubleClick}\n onClick={handleSingleClick}\n id={cellId}\n data-tooltip={\n isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n"],"names":["Cell","styled","EDIT_TRIGGER_CLASS","CellWidget","rowId","columnId","value","valueData","attributeData","options","isCollapsed","isInherited","isPlaceholder","isReadOnly","enableCustomValues","folderId","onChange","entityType","pt","props","ref","useRef","type","projectName","useProjectTableContext","isEditing","setEditingCellId","useCellEditing","isCellFocused","gridMap","selectCell","focusCell","useSelectionCellsContext","cellId","getCellId","isCurrentCellEditing","isCurrentCellFocused","handleDoubleClick","useCallback","handleSingleClick","moveToNextRow","rowIndex","newRowId","newCellId","handleOnChange","newValue","key","handleCancel","td","_a","widget","useMemo","sharedProps","textTypes","firstSelectedOption","option","color","jsx","CollapsedWidget","NameWidget","linksValue","isEditable","isLinkEditable","LinksWidget","enumValue","selectedOptions","EnumCellValue","EnumWidget","TextWidget","DateWidget","BooleanWidget","clsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CellWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { useMemo, useCallback, useRef, FC } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\nimport { isLinkEditable, LinksWidget, LinkWidgetData } from './LinksWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\nimport { useColumnSettingsContext } from '../context/ColumnSettingsContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { AttributeData, AttributeEnumItem } from '../types'\nimport { useProjectTableContext } from '../context'\nimport { EnumCellValue } from './EnumCellValue'\nimport { NameWidget } from '@shared/containers/ProjectTreeTable/widgets/NameWidget'\nimport { NameWidgetData } from '@shared/components/RenameForm'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n`\n\n// use this class to trigger the editing mode on a single click\nexport const EDIT_TRIGGER_CLASS = 'edit-trigger'\n\ntype WidgetAttributeData = { type: AttributeData['type'] | 'links' | 'name' }\n\nexport type CellValue = string | number | boolean\nexport type CellValueData = Record<string, any>\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n valueData?: CellValueData | CellValueData[] // extra data for the value\n attributeData?: WidgetAttributeData\n options?: AttributeEnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n folderId?: string | null\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n entityType?: string\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nexport const CellWidget: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n valueData,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n folderId,\n onChange,\n entityType,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { projectName } = useProjectTableContext()\n const { isEditing, setEditingCellId } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const { rowHeight } = useColumnSettingsContext()\n const cellId = getCellId(rowId, columnId)\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const handleDoubleClick = useCallback(() => {\n if (isPlaceholder || isReadOnly) return\n setEditingCellId(cellId)\n }, [cellId, setEditingCellId, isPlaceholder])\n\n const handleSingleClick = () => {\n // clicking a cell that is not editing will close the editor on this cell\n // NOTE: the selection of a cell is handled in ProjectTreeTable.tsx line 1079\n if (!isCurrentCellEditing) {\n setEditingCellId(null)\n }\n }\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) return\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n setEditingCellId(null)\n if (isReadOnly) return\n // move to the next cell row\n key === 'Enter' && moveToNextRow()\n // make change if the value is different or if the key is 'Enter'\n if (newValue !== value || key === 'Enter') {\n onChange?.(newValue, key)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n // ensure the browser focus moves back to the parent <td>\n const td = ref.current?.closest('td') as HTMLElement | null\n if (td) td.focus()\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n case type === 'name': {\n return (\n <NameWidget\n value={value as CellValue}\n valueData={valueData as NameWidgetData}\n cellId={cellId}\n entityType={entityType || ''}\n {...sharedProps}\n />\n )\n }\n\n case type === 'links': {\n const linksValue = valueData as LinkWidgetData | undefined\n\n const isEditable = isLinkEditable(\n linksValue?.direction || 'out',\n linksValue?.link.linkType || '',\n linksValue?.entityType || '',\n )\n\n // overwrite readonly state if the cell is currently being edited\n isReadOnly = !isEditable\n return (\n <LinksWidget\n value={linksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={!isEditable}\n folderId={folderId}\n {...sharedProps}\n />\n )\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n if (isReadOnly) {\n const selectedOptions = options.filter((option) => enumValue.includes(option.value))\n return (\n <EnumCellValue\n selectedOptions={selectedOptions}\n isReadOnly\n hasMultipleValues={enumValue.length > 1}\n isMultiSelect={type?.includes('list')}\n rowHeight={rowHeight}\n />\n )\n }\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n columnId={columnId}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, {\n inherited: isInherited && !isCurrentCellEditing,\n readonly: isReadOnly,\n editable: !isReadOnly,\n })}\n ref={ref}\n onDoubleClick={handleDoubleClick}\n onClick={handleSingleClick}\n id={cellId}\n data-tooltip={\n isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n"],"names":["Cell","styled","EDIT_TRIGGER_CLASS","CellWidget","rowId","columnId","value","valueData","attributeData","options","isCollapsed","isInherited","isPlaceholder","isReadOnly","enableCustomValues","folderId","onChange","entityType","pt","props","ref","useRef","type","projectName","useProjectTableContext","isEditing","setEditingCellId","useCellEditing","isCellFocused","gridMap","selectCell","focusCell","useSelectionCellsContext","rowHeight","useColumnSettingsContext","cellId","getCellId","isCurrentCellEditing","isCurrentCellFocused","handleDoubleClick","useCallback","handleSingleClick","moveToNextRow","rowIndex","newRowId","newCellId","handleOnChange","newValue","key","handleCancel","td","_a","widget","useMemo","sharedProps","textTypes","firstSelectedOption","option","color","jsx","CollapsedWidget","NameWidget","linksValue","isEditable","isLinkEditable","LinksWidget","enumValue","selectedOptions","EnumCellValue","EnumWidget","TextWidget","DateWidget","BooleanWidget","clsx"],"mappings":"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"}
|