@ynput/ayon-frontend-shared 0.2.30 → 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.cjs5.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- 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/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/api/queries/entityLists/listFolders.cjs.js +1 -1
- package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/listFolders.es.js +96 -59
- package/dist/shared/src/api/queries/entityLists/listFolders.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,16 +1,17 @@
|
|
|
1
1
|
import { j as n } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { useRef as
|
|
3
|
-
import
|
|
4
|
-
import { BooleanWidget as
|
|
5
|
-
import { CollapsedWidget as
|
|
6
|
-
import { DateWidget as
|
|
7
|
-
import { EnumWidget as
|
|
8
|
-
import { TextWidget as
|
|
9
|
-
import { isLinkEditable as
|
|
10
|
-
import { useCellEditing as
|
|
2
|
+
import { useRef as J, useCallback as K, useMemo as P } from "react";
|
|
3
|
+
import Q from "styled-components";
|
|
4
|
+
import { BooleanWidget as U } from "./BooleanWidget.es.js";
|
|
5
|
+
import { CollapsedWidget as X } from "./CollapsedWidget.es.js";
|
|
6
|
+
import { DateWidget as Y } from "./DateWidget.es.js";
|
|
7
|
+
import { EnumWidget as Z } from "./EnumWidget.es.js";
|
|
8
|
+
import { TextWidget as $ } from "./TextWidget.es.js";
|
|
9
|
+
import { isLinkEditable as D, LinksWidget as O } from "./LinksWidget.es.js";
|
|
10
|
+
import { useCellEditing as V } from "../context/CellEditingContext.es.js";
|
|
11
|
+
import { useColumnSettingsContext as tt } from "../context/ColumnSettingsContext.es.js";
|
|
11
12
|
import { getCellId as h } from "../utils/cellUtils.es.js";
|
|
12
|
-
import
|
|
13
|
-
import { useSelectionCellsContext as
|
|
13
|
+
import ot from "clsx";
|
|
14
|
+
import { useSelectionCellsContext as it } from "../context/SelectionCellsContext.es.js";
|
|
14
15
|
import "react-toastify";
|
|
15
16
|
import "lodash";
|
|
16
17
|
import "uuid";
|
|
@@ -25,10 +26,9 @@ import "../components/SelectionCell.es.js";
|
|
|
25
26
|
import "../components/RowSelectionHeader.es.js";
|
|
26
27
|
import "./LoadMoreWidget.es.js";
|
|
27
28
|
import "../context/ProjectTableQueriesContext.es.js";
|
|
28
|
-
import { useProjectTableContext as
|
|
29
|
+
import { useProjectTableContext as rt } from "../context/ProjectTableContext.es.js";
|
|
29
30
|
import "../context/ClipboardContext.es.js";
|
|
30
31
|
import "../ProjectTreeTable.es.js";
|
|
31
|
-
import "../context/ColumnSettingsContext.es.js";
|
|
32
32
|
import "../context/SelectedRowsContext.es.js";
|
|
33
33
|
import "../context/DetailsPanelEntityContext.es.js";
|
|
34
34
|
/* empty css */
|
|
@@ -130,9 +130,9 @@ import "../../../context/MenuContext.es.js";
|
|
|
130
130
|
import "react-redux";
|
|
131
131
|
import "custom-protocol-check";
|
|
132
132
|
import "../components/GroupSettingsFallback.es.js";
|
|
133
|
-
import { EnumCellValue as
|
|
134
|
-
import { NameWidget as
|
|
135
|
-
const
|
|
133
|
+
import { EnumCellValue as mt } from "./EnumCellValue.es.js";
|
|
134
|
+
import { NameWidget as et } from "./NameWidget.es.js";
|
|
135
|
+
const pt = Q.div`
|
|
136
136
|
position: absolute;
|
|
137
137
|
inset: 0;
|
|
138
138
|
padding: 4px 8px;
|
|
@@ -153,12 +153,12 @@ const mt = P.div`
|
|
|
153
153
|
border-radius: 4px;
|
|
154
154
|
opacity: 1;
|
|
155
155
|
}
|
|
156
|
-
`,
|
|
156
|
+
`, Fi = "edit-trigger", Gi = ({
|
|
157
157
|
rowId: j,
|
|
158
|
-
columnId:
|
|
158
|
+
columnId: g,
|
|
159
159
|
value: i,
|
|
160
160
|
valueData: T,
|
|
161
|
-
attributeData:
|
|
161
|
+
attributeData: x,
|
|
162
162
|
options: d = [],
|
|
163
163
|
isCollapsed: b,
|
|
164
164
|
isInherited: f,
|
|
@@ -171,26 +171,26 @@ const mt = P.div`
|
|
|
171
171
|
pt: m,
|
|
172
172
|
...y
|
|
173
173
|
}) => {
|
|
174
|
-
const
|
|
174
|
+
const w = J(null), r = x == null ? void 0 : x.type, { projectName: S } = rt(), { isEditing: M, setEditingCellId: s } = V(), { isCellFocused: k, gridMap: W, selectCell: L, focusCell: R } = it(), { rowHeight: F } = tt(), p = h(j, g), u = M(p), G = k(p), _ = K(() => {
|
|
175
175
|
C || l || s(p);
|
|
176
|
-
}, [p, s, C]),
|
|
176
|
+
}, [p, s, C]), B = () => {
|
|
177
177
|
u || s(null);
|
|
178
|
-
},
|
|
179
|
-
const o =
|
|
178
|
+
}, H = () => {
|
|
179
|
+
const o = W.rowIdToIndex.get(j);
|
|
180
180
|
if (o === void 0) return;
|
|
181
|
-
const e =
|
|
181
|
+
const e = W.indexToRowId.get(o + 1);
|
|
182
182
|
if (e) {
|
|
183
|
-
const t = h(e,
|
|
183
|
+
const t = h(e, g);
|
|
184
184
|
L(t, !1, !1), R(t), s(t);
|
|
185
185
|
}
|
|
186
186
|
}, q = (o, e) => {
|
|
187
|
-
s(null), !l && (e === "Enter" &&
|
|
187
|
+
s(null), !l && (e === "Enter" && H(), (o !== i || e === "Enter") && (E == null || E(o, e)));
|
|
188
188
|
}, v = () => {
|
|
189
189
|
var e;
|
|
190
190
|
s(null);
|
|
191
|
-
const o = (e =
|
|
191
|
+
const o = (e = w.current) == null ? void 0 : e.closest("td");
|
|
192
192
|
o && o.focus();
|
|
193
|
-
}, z =
|
|
193
|
+
}, z = P(() => {
|
|
194
194
|
const o = {
|
|
195
195
|
onChange: q,
|
|
196
196
|
onCancelEdit: v,
|
|
@@ -202,11 +202,11 @@ const mt = P.div`
|
|
|
202
202
|
const t = r != null && r.includes("list") ? d.find(
|
|
203
203
|
(a) => Array.isArray(i) ? i.includes(a.value) : i === a.value
|
|
204
204
|
) : void 0, c = t == null ? void 0 : t.color;
|
|
205
|
-
return /* @__PURE__ */ n.jsx(
|
|
205
|
+
return /* @__PURE__ */ n.jsx(X, { color: c });
|
|
206
206
|
}
|
|
207
207
|
case r === "name":
|
|
208
208
|
return /* @__PURE__ */ n.jsx(
|
|
209
|
-
|
|
209
|
+
et,
|
|
210
210
|
{
|
|
211
211
|
value: i,
|
|
212
212
|
valueData: T,
|
|
@@ -216,17 +216,17 @@ const mt = P.div`
|
|
|
216
216
|
}
|
|
217
217
|
);
|
|
218
218
|
case r === "links": {
|
|
219
|
-
const t = T, c =
|
|
219
|
+
const t = T, c = D(
|
|
220
220
|
(t == null ? void 0 : t.direction) || "out",
|
|
221
221
|
(t == null ? void 0 : t.link.linkType) || "",
|
|
222
222
|
(t == null ? void 0 : t.entityType) || ""
|
|
223
223
|
);
|
|
224
224
|
return l = !c, /* @__PURE__ */ n.jsx(
|
|
225
|
-
|
|
225
|
+
O,
|
|
226
226
|
{
|
|
227
227
|
value: t,
|
|
228
228
|
cellId: p,
|
|
229
|
-
projectName:
|
|
229
|
+
projectName: S,
|
|
230
230
|
disabled: !c,
|
|
231
231
|
folderId: A,
|
|
232
232
|
...o
|
|
@@ -238,17 +238,18 @@ const mt = P.div`
|
|
|
238
238
|
if (l) {
|
|
239
239
|
const c = d.filter((a) => t.includes(a.value));
|
|
240
240
|
return /* @__PURE__ */ n.jsx(
|
|
241
|
-
|
|
241
|
+
mt,
|
|
242
242
|
{
|
|
243
243
|
selectedOptions: c,
|
|
244
244
|
isReadOnly: !0,
|
|
245
245
|
hasMultipleValues: t.length > 1,
|
|
246
|
-
isMultiSelect: r == null ? void 0 : r.includes("list")
|
|
246
|
+
isMultiSelect: r == null ? void 0 : r.includes("list"),
|
|
247
|
+
rowHeight: F
|
|
247
248
|
}
|
|
248
249
|
);
|
|
249
250
|
}
|
|
250
251
|
return /* @__PURE__ */ n.jsx(
|
|
251
|
-
|
|
252
|
+
Z,
|
|
252
253
|
{
|
|
253
254
|
value: t,
|
|
254
255
|
options: d,
|
|
@@ -262,18 +263,18 @@ const mt = P.div`
|
|
|
262
263
|
}
|
|
263
264
|
case e.includes(r):
|
|
264
265
|
return /* @__PURE__ */ n.jsx(
|
|
265
|
-
|
|
266
|
+
$,
|
|
266
267
|
{
|
|
267
268
|
value: i,
|
|
268
269
|
isInherited: f,
|
|
269
|
-
columnId:
|
|
270
|
+
columnId: g,
|
|
270
271
|
...o,
|
|
271
272
|
...m == null ? void 0 : m.text
|
|
272
273
|
}
|
|
273
274
|
);
|
|
274
275
|
case r === "datetime":
|
|
275
276
|
return /* @__PURE__ */ n.jsx(
|
|
276
|
-
|
|
277
|
+
Y,
|
|
277
278
|
{
|
|
278
279
|
value: i || void 0,
|
|
279
280
|
isInherited: f,
|
|
@@ -282,7 +283,7 @@ const mt = P.div`
|
|
|
282
283
|
}
|
|
283
284
|
);
|
|
284
285
|
case r === "boolean":
|
|
285
|
-
return /* @__PURE__ */ n.jsx(
|
|
286
|
+
return /* @__PURE__ */ n.jsx(U, { value: i, ...o, ...m == null ? void 0 : m.boolean });
|
|
286
287
|
case C:
|
|
287
288
|
return null;
|
|
288
289
|
default:
|
|
@@ -290,26 +291,26 @@ const mt = P.div`
|
|
|
290
291
|
}
|
|
291
292
|
}, [p, i, r, u, d, b]);
|
|
292
293
|
return /* @__PURE__ */ n.jsx(
|
|
293
|
-
|
|
294
|
+
pt,
|
|
294
295
|
{
|
|
295
296
|
...y,
|
|
296
|
-
className:
|
|
297
|
+
className: ot(y.className, {
|
|
297
298
|
inherited: f && !u,
|
|
298
299
|
readonly: l,
|
|
299
300
|
editable: !l
|
|
300
301
|
}),
|
|
301
|
-
ref:
|
|
302
|
-
onDoubleClick:
|
|
303
|
-
onClick:
|
|
302
|
+
ref: w,
|
|
303
|
+
onDoubleClick: _,
|
|
304
|
+
onClick: B,
|
|
304
305
|
id: p,
|
|
305
|
-
"data-tooltip": f && !u &&
|
|
306
|
+
"data-tooltip": f && !u && G ? "Inherited" : void 0,
|
|
306
307
|
"data-tooltip-delay": 200,
|
|
307
308
|
children: z
|
|
308
309
|
}
|
|
309
310
|
);
|
|
310
311
|
};
|
|
311
312
|
export {
|
|
312
|
-
|
|
313
|
-
|
|
313
|
+
Gi as CellWidget,
|
|
314
|
+
Fi as EDIT_TRIGGER_CLASS
|
|
314
315
|
};
|
|
315
316
|
//# sourceMappingURL=CellWidget.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellWidget.es.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.es.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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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/jsx-runtime.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../../_virtual/jsx-runtime.cjs.js"),i=require("@ynput/ayon-react-components"),t=require("styled-components"),v=require("clsx"),f=t(i.Button)`
|
|
2
2
|
&.expander {
|
|
3
3
|
background-color: unset;
|
|
4
4
|
padding: 2px;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
cursor: pointer;
|
|
11
|
-
`,
|
|
11
|
+
`,y=t.div`
|
|
12
12
|
position: relative;
|
|
13
13
|
display: flex;
|
|
14
14
|
align-items: center;
|
|
@@ -16,15 +16,15 @@
|
|
|
16
16
|
height: 100%;
|
|
17
17
|
width: 100%;
|
|
18
18
|
padding-right: 8px;
|
|
19
|
-
`,
|
|
19
|
+
`,j=t.div`
|
|
20
20
|
width: 100%;
|
|
21
21
|
height: 24px;
|
|
22
22
|
overflow: hidden;
|
|
23
23
|
position: relative;
|
|
24
|
-
`,
|
|
24
|
+
`,b=t.div`
|
|
25
25
|
position: absolute;
|
|
26
26
|
inset: 0;
|
|
27
|
-
`,
|
|
27
|
+
`,w=t.div`
|
|
28
28
|
display: flex;
|
|
29
29
|
align-items: center;
|
|
30
30
|
gap: var(--base-gap-large);
|
|
@@ -43,21 +43,50 @@
|
|
|
43
43
|
color: var(--md-sys-color-primary);
|
|
44
44
|
}
|
|
45
45
|
} */
|
|
46
|
-
`,
|
|
46
|
+
`,E=t.div`
|
|
47
47
|
display: flex;
|
|
48
48
|
flex-direction: column;
|
|
49
|
+
align-items: flex-start;
|
|
49
50
|
overflow: hidden;
|
|
51
|
+
flex: 1;
|
|
52
|
+
min-width: 0;
|
|
53
|
+
|
|
54
|
+
&.compact {
|
|
55
|
+
flex-direction: row;
|
|
56
|
+
align-items: center;
|
|
57
|
+
}
|
|
50
58
|
|
|
51
59
|
.path {
|
|
52
|
-
${
|
|
60
|
+
${i.theme.bodyMedium}
|
|
61
|
+
font-size: 14px;
|
|
53
62
|
margin-bottom: -4px;
|
|
54
63
|
color: var(--md-sys-color-outline);
|
|
64
|
+
white-space: nowrap;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
text-overflow: ellipsis;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&.compact .path {
|
|
70
|
+
margin-bottom: 0;
|
|
71
|
+
text-overflow: unset;
|
|
72
|
+
flex-shrink: 0 1 auto;
|
|
55
73
|
}
|
|
56
74
|
|
|
57
|
-
|
|
75
|
+
.label {
|
|
76
|
+
${i.theme.bodyMedium}
|
|
77
|
+
font-size: 14px;
|
|
58
78
|
overflow: hidden;
|
|
59
79
|
white-space: nowrap;
|
|
60
80
|
text-overflow: ellipsis;
|
|
81
|
+
flex: 1 1 auto;
|
|
82
|
+
min-width: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.divider {
|
|
86
|
+
${i.theme.bodyMedium}
|
|
87
|
+
font-size: 14px;
|
|
88
|
+
color: var(--md-sys-color-outline);
|
|
89
|
+
flex-shrink: 0;
|
|
61
90
|
}
|
|
62
|
-
`,
|
|
91
|
+
`,R=({id:a,label:d,name:c,path:o,showHierarchy:n,icon:r,type:x,isExpanded:p,toggleExpandAll:m,toggleExpanded:h,rowHeight:u=40})=>{const s=u<50,g=s||n?24:o?32:24;return e.jsxRuntimeExports.jsxs(y,{children:[n?x==="folder"?e.jsxRuntimeExports.jsx(f,{onClick:l=>{l.stopPropagation(),l.altKey?m(a):h()},className:"expander",icon:p?"expand_more":"chevron_right"}):e.jsxRuntimeExports.jsx("div",{style:{display:"inline-block",minWidth:24}}):null,e.jsxRuntimeExports.jsx(j,{style:{height:g},children:e.jsxRuntimeExports.jsx(b,{children:e.jsxRuntimeExports.jsxs(w,{children:[r&&e.jsxRuntimeExports.jsx(i.Icon,{icon:r}),e.jsxRuntimeExports.jsxs(E,{className:v({compact:s}),children:[o&&e.jsxRuntimeExports.jsx("span",{className:"path",children:o}),s&&o&&e.jsxRuntimeExports.jsx("span",{className:"divider",children:"/"}),e.jsxRuntimeExports.jsx("span",{className:"label",children:d||c})]})]})})})]})};exports.EntityNameWidget=R;
|
|
63
92
|
//# sourceMappingURL=EntityNameWidget.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityNameWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, Icon, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 24px;\n overflow: hidden;\n position: relative;\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n\n .path {\n ${theme.
|
|
1
|
+
{"version":3,"file":"EntityNameWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, Icon, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 24px;\n overflow: hidden;\n position: relative;\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n\n &.compact {\n flex-direction: row;\n align-items: center;\n }\n\n .path {\n ${theme.bodyMedium}\n font-size: 14px;\n margin-bottom: -4px;\n color: var(--md-sys-color-outline);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.compact .path {\n margin-bottom: 0;\n text-overflow: unset;\n flex-shrink: 0 1 auto;\n }\n\n .label {\n ${theme.bodyMedium}\n font-size: 14px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .divider {\n ${theme.bodyMedium}\n font-size: 14px;\n color: var(--md-sys-color-outline);\n flex-shrink: 0;\n }\n`\n\ntype EntityNameWidgetProps = {\n id: string\n label: string\n name: string\n path?: string | null\n showHierarchy?: boolean\n icon?: string | null\n type: string\n isExpanded: boolean\n toggleExpandAll: (id: string) => void\n toggleExpanded: () => void\n rowHeight?: number\n}\n\nexport const EntityNameWidget = ({\n id,\n label,\n name,\n path,\n showHierarchy,\n icon,\n type,\n isExpanded,\n toggleExpandAll,\n toggleExpanded,\n rowHeight = 40,\n}: EntityNameWidgetProps) => {\n // Determine layout based on row height\n // < 50px = single line (compact), >= 50px = stacked\n const isCompact = rowHeight < 50\n\n // Always keep content height at 24px in compact mode or hierarchy mode to prevent jumping\n // Only allow expansion to 32px in non-hierarchy mode when not compact and path exists\n const contentHeight = (isCompact || showHierarchy) ? 24 : (path ? 32 : 24)\n\n return (\n <StyledEntityNameWidget>\n {showHierarchy ? (\n type === 'folder' ? (\n <Expander\n onClick={(e) => {\n e.stopPropagation()\n if (e.altKey) {\n // expand/collapse all children\n toggleExpandAll(id)\n } else {\n // use built-in toggleExpanded function\n toggleExpanded()\n }\n }}\n className=\"expander\"\n icon={isExpanded ? 'expand_more' : 'chevron_right'}\n />\n ) : (\n <div style={{ display: 'inline-block', minWidth: 24 }} />\n )\n ) : null}\n <StyledContentWrapper style={{ height: contentHeight }}>\n <StyledContentAbsolute>\n <StyledContent>\n {icon && <Icon icon={icon} />}\n <StyledTextContent className={clsx({ compact: isCompact })}>\n {path && <span className=\"path\">{path}</span>}\n {isCompact && path && <span className=\"divider\">/</span>}\n <span className=\"label\">{label || name}</span>\n </StyledTextContent>\n </StyledContent>\n </StyledContentAbsolute>\n </StyledContentWrapper>\n </StyledEntityNameWidget>\n )\n}\n"],"names":["Expander","styled","Button","StyledEntityNameWidget","StyledContentWrapper","StyledContentAbsolute","StyledContent","StyledTextContent","theme","EntityNameWidget","id","label","name","path","showHierarchy","icon","type","isExpanded","toggleExpandAll","toggleExpanded","rowHeight","isCompact","contentHeight","jsx","e","jsxs","Icon","clsx"],"mappings":"yOAIMA,EAAWC,EAAOC,QAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYxBC,EAAyBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUhCG,EAAuBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAO9BI,EAAwBJ,EAAO;AAAA;AAAA;AAAA,EAK/BK,EAAgBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBvBM,EAAoBN,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAc3BO,QAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBhBA,QAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUhBA,QAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBTC,EAAmB,CAAC,CAC/B,GAAAC,EACA,MAAAC,EACA,KAAAC,EACA,KAAAC,EACA,cAAAC,EACA,KAAAC,EACA,KAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,eAAAC,EACA,UAAAC,EAAY,EACd,IAA6B,CAG3B,MAAMC,EAAYD,EAAY,GAIxBE,EAAiBD,GAAaP,EAAiB,GAAMD,EAAO,GAAK,GAEvE,gCACGV,EACE,CAAA,SAAA,CAAAW,EACCE,IAAS,SACPO,EAAA,kBAAA,IAACvB,EAAA,CACC,QAAUwB,GAAM,CACdA,EAAE,gBAAgB,EACdA,EAAE,OAEJN,EAAgBR,CAAE,EAGHS,EAAA,CAEnB,EACA,UAAU,WACV,KAAMF,EAAa,cAAgB,eAAA,CACrC,EAECM,wBAAA,MAAA,CAAI,MAAO,CAAE,QAAS,eAAgB,SAAU,GAAM,CAAA,EAEvD,KACJA,EAAA,kBAAA,IAACnB,EAAqB,CAAA,MAAO,CAAE,OAAQkB,GACrC,SAAAC,EAAAA,kBAAAA,IAAClB,EACC,CAAA,SAAAoB,EAAA,kBAAA,KAACnB,EACE,CAAA,SAAA,CAAQS,GAAAQ,EAAA,kBAAA,IAACG,QAAK,KAAAX,CAAY,CAAA,EAC3BU,yBAAClB,GAAkB,UAAWoB,EAAK,CAAE,QAASN,EAAW,EACtD,SAAA,CAAAR,GAASU,EAAA,kBAAA,IAAA,OAAA,CAAK,UAAU,OAAQ,SAAKV,EAAA,EACrCQ,GAAaR,GAAQU,EAAAA,kBAAAA,IAAC,OAAK,CAAA,UAAU,UAAU,SAAC,IAAA,EAChDA,EAAA,kBAAA,IAAA,OAAA,CAAK,UAAU,QAAS,YAASX,CAAK,CAAA,CAAA,CACzC,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAAA,CAAA,EACF,CAEJ"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { j as e } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { Button as
|
|
2
|
+
import { Button as g, theme as n, Icon as u } from "@ynput/ayon-react-components";
|
|
3
3
|
import o from "styled-components";
|
|
4
|
-
|
|
4
|
+
import y from "clsx";
|
|
5
|
+
const w = o(g)`
|
|
5
6
|
&.expander {
|
|
6
7
|
background-color: unset;
|
|
7
8
|
padding: 2px;
|
|
@@ -11,7 +12,7 @@ const v = o(x)`
|
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
cursor: pointer;
|
|
14
|
-
`,
|
|
15
|
+
`, b = o.div`
|
|
15
16
|
position: relative;
|
|
16
17
|
display: flex;
|
|
17
18
|
align-items: center;
|
|
@@ -19,15 +20,15 @@ const v = o(x)`
|
|
|
19
20
|
height: 100%;
|
|
20
21
|
width: 100%;
|
|
21
22
|
padding-right: 8px;
|
|
22
|
-
`,
|
|
23
|
+
`, j = o.div`
|
|
23
24
|
width: 100%;
|
|
24
25
|
height: 24px;
|
|
25
26
|
overflow: hidden;
|
|
26
27
|
position: relative;
|
|
27
|
-
`,
|
|
28
|
+
`, N = o.div`
|
|
28
29
|
position: absolute;
|
|
29
30
|
inset: 0;
|
|
30
|
-
`,
|
|
31
|
+
`, k = o.div`
|
|
31
32
|
display: flex;
|
|
32
33
|
align-items: center;
|
|
33
34
|
gap: var(--base-gap-large);
|
|
@@ -46,53 +47,87 @@ const v = o(x)`
|
|
|
46
47
|
color: var(--md-sys-color-primary);
|
|
47
48
|
}
|
|
48
49
|
} */
|
|
49
|
-
`,
|
|
50
|
+
`, C = o.div`
|
|
50
51
|
display: flex;
|
|
51
52
|
flex-direction: column;
|
|
53
|
+
align-items: flex-start;
|
|
52
54
|
overflow: hidden;
|
|
55
|
+
flex: 1;
|
|
56
|
+
min-width: 0;
|
|
57
|
+
|
|
58
|
+
&.compact {
|
|
59
|
+
flex-direction: row;
|
|
60
|
+
align-items: center;
|
|
61
|
+
}
|
|
53
62
|
|
|
54
63
|
.path {
|
|
55
|
-
${
|
|
64
|
+
${n.bodyMedium}
|
|
65
|
+
font-size: 14px;
|
|
56
66
|
margin-bottom: -4px;
|
|
57
67
|
color: var(--md-sys-color-outline);
|
|
68
|
+
white-space: nowrap;
|
|
69
|
+
overflow: hidden;
|
|
70
|
+
text-overflow: ellipsis;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&.compact .path {
|
|
74
|
+
margin-bottom: 0;
|
|
75
|
+
text-overflow: unset;
|
|
76
|
+
flex-shrink: 0 1 auto;
|
|
58
77
|
}
|
|
59
78
|
|
|
60
|
-
|
|
79
|
+
.label {
|
|
80
|
+
${n.bodyMedium}
|
|
81
|
+
font-size: 14px;
|
|
61
82
|
overflow: hidden;
|
|
62
83
|
white-space: nowrap;
|
|
63
84
|
text-overflow: ellipsis;
|
|
85
|
+
flex: 1 1 auto;
|
|
86
|
+
min-width: 0;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.divider {
|
|
90
|
+
${n.bodyMedium}
|
|
91
|
+
font-size: 14px;
|
|
92
|
+
color: var(--md-sys-color-outline);
|
|
93
|
+
flex-shrink: 0;
|
|
64
94
|
}
|
|
65
|
-
`,
|
|
66
|
-
id:
|
|
67
|
-
label:
|
|
68
|
-
name:
|
|
95
|
+
`, M = ({
|
|
96
|
+
id: a,
|
|
97
|
+
label: d,
|
|
98
|
+
name: c,
|
|
69
99
|
path: t,
|
|
70
|
-
showHierarchy:
|
|
71
|
-
icon:
|
|
72
|
-
type:
|
|
73
|
-
isExpanded:
|
|
74
|
-
toggleExpandAll:
|
|
75
|
-
toggleExpanded: h
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
/* @__PURE__ */ e.
|
|
90
|
-
|
|
91
|
-
/* @__PURE__ */ e.jsx(
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
100
|
+
showHierarchy: r,
|
|
101
|
+
icon: s,
|
|
102
|
+
type: p,
|
|
103
|
+
isExpanded: m,
|
|
104
|
+
toggleExpandAll: x,
|
|
105
|
+
toggleExpanded: h,
|
|
106
|
+
rowHeight: f = 40
|
|
107
|
+
}) => {
|
|
108
|
+
const i = f < 50, v = i || r ? 24 : t ? 32 : 24;
|
|
109
|
+
return /* @__PURE__ */ e.jsxs(b, { children: [
|
|
110
|
+
r ? p === "folder" ? /* @__PURE__ */ e.jsx(
|
|
111
|
+
w,
|
|
112
|
+
{
|
|
113
|
+
onClick: (l) => {
|
|
114
|
+
l.stopPropagation(), l.altKey ? x(a) : h();
|
|
115
|
+
},
|
|
116
|
+
className: "expander",
|
|
117
|
+
icon: m ? "expand_more" : "chevron_right"
|
|
118
|
+
}
|
|
119
|
+
) : /* @__PURE__ */ e.jsx("div", { style: { display: "inline-block", minWidth: 24 } }) : null,
|
|
120
|
+
/* @__PURE__ */ e.jsx(j, { style: { height: v }, children: /* @__PURE__ */ e.jsx(N, { children: /* @__PURE__ */ e.jsxs(k, { children: [
|
|
121
|
+
s && /* @__PURE__ */ e.jsx(u, { icon: s }),
|
|
122
|
+
/* @__PURE__ */ e.jsxs(C, { className: y({ compact: i }), children: [
|
|
123
|
+
t && /* @__PURE__ */ e.jsx("span", { className: "path", children: t }),
|
|
124
|
+
i && t && /* @__PURE__ */ e.jsx("span", { className: "divider", children: "/" }),
|
|
125
|
+
/* @__PURE__ */ e.jsx("span", { className: "label", children: d || c })
|
|
126
|
+
] })
|
|
127
|
+
] }) }) })
|
|
128
|
+
] });
|
|
129
|
+
};
|
|
95
130
|
export {
|
|
96
|
-
|
|
131
|
+
M as EntityNameWidget
|
|
97
132
|
};
|
|
98
133
|
//# sourceMappingURL=EntityNameWidget.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityNameWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, Icon, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 24px;\n overflow: hidden;\n position: relative;\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n\n .path {\n ${theme.
|
|
1
|
+
{"version":3,"file":"EntityNameWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EntityNameWidget.tsx"],"sourcesContent":["import { Button, Icon, theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nconst Expander = styled(Button)`\n &.expander {\n background-color: unset;\n padding: 2px;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n }\n cursor: pointer;\n`\n\nconst StyledEntityNameWidget = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 100%;\n width: 100%;\n padding-right: 8px;\n`\n\nconst StyledContentWrapper = styled.div`\n width: 100%;\n height: 24px;\n overflow: hidden;\n position: relative;\n`\n\nconst StyledContentAbsolute = styled.div`\n position: absolute;\n inset: 0;\n`\n\nconst StyledContent = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-large);\n padding: 2px 4px;\n border-radius: var(--border-radius-m);\n cursor: pointer;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n height: 100%;\n\n /* &:hover {\n &,\n .icon,\n .path {\n color: var(--md-sys-color-primary);\n }\n } */\n`\n\nconst StyledTextContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n\n &.compact {\n flex-direction: row;\n align-items: center;\n }\n\n .path {\n ${theme.bodyMedium}\n font-size: 14px;\n margin-bottom: -4px;\n color: var(--md-sys-color-outline);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.compact .path {\n margin-bottom: 0;\n text-overflow: unset;\n flex-shrink: 0 1 auto;\n }\n\n .label {\n ${theme.bodyMedium}\n font-size: 14px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .divider {\n ${theme.bodyMedium}\n font-size: 14px;\n color: var(--md-sys-color-outline);\n flex-shrink: 0;\n }\n`\n\ntype EntityNameWidgetProps = {\n id: string\n label: string\n name: string\n path?: string | null\n showHierarchy?: boolean\n icon?: string | null\n type: string\n isExpanded: boolean\n toggleExpandAll: (id: string) => void\n toggleExpanded: () => void\n rowHeight?: number\n}\n\nexport const EntityNameWidget = ({\n id,\n label,\n name,\n path,\n showHierarchy,\n icon,\n type,\n isExpanded,\n toggleExpandAll,\n toggleExpanded,\n rowHeight = 40,\n}: EntityNameWidgetProps) => {\n // Determine layout based on row height\n // < 50px = single line (compact), >= 50px = stacked\n const isCompact = rowHeight < 50\n\n // Always keep content height at 24px in compact mode or hierarchy mode to prevent jumping\n // Only allow expansion to 32px in non-hierarchy mode when not compact and path exists\n const contentHeight = (isCompact || showHierarchy) ? 24 : (path ? 32 : 24)\n\n return (\n <StyledEntityNameWidget>\n {showHierarchy ? (\n type === 'folder' ? (\n <Expander\n onClick={(e) => {\n e.stopPropagation()\n if (e.altKey) {\n // expand/collapse all children\n toggleExpandAll(id)\n } else {\n // use built-in toggleExpanded function\n toggleExpanded()\n }\n }}\n className=\"expander\"\n icon={isExpanded ? 'expand_more' : 'chevron_right'}\n />\n ) : (\n <div style={{ display: 'inline-block', minWidth: 24 }} />\n )\n ) : null}\n <StyledContentWrapper style={{ height: contentHeight }}>\n <StyledContentAbsolute>\n <StyledContent>\n {icon && <Icon icon={icon} />}\n <StyledTextContent className={clsx({ compact: isCompact })}>\n {path && <span className=\"path\">{path}</span>}\n {isCompact && path && <span className=\"divider\">/</span>}\n <span className=\"label\">{label || name}</span>\n </StyledTextContent>\n </StyledContent>\n </StyledContentAbsolute>\n </StyledContentWrapper>\n </StyledEntityNameWidget>\n )\n}\n"],"names":["Expander","styled","Button","StyledEntityNameWidget","StyledContentWrapper","StyledContentAbsolute","StyledContent","StyledTextContent","theme","EntityNameWidget","id","label","name","path","showHierarchy","icon","type","isExpanded","toggleExpandAll","toggleExpanded","rowHeight","isCompact","contentHeight","jsx","e","jsxs","Icon","clsx"],"mappings":";;;;AAIA,MAAMA,IAAWC,EAAOC,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYxBC,IAAyBF,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUhCG,IAAuBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAO9BI,IAAwBJ,EAAO;AAAA;AAAA;AAAA,GAK/BK,IAAgBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAqBvBM,IAAoBN,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAc3BO,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBhBA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUhBA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,GAqBTC,IAAmB,CAAC;AAAA,EAC/B,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,eAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC,IAAY;AACd,MAA6B;AAG3B,QAAMC,IAAYD,IAAY,IAIxBE,IAAiBD,KAAaP,IAAiB,KAAMD,IAAO,KAAK;AAEvE,gCACGV,GACE,EAAA,UAAA;AAAA,IAAAW,IACCE,MAAS,WACPO,gBAAAA,EAAA;AAAA,MAACvB;AAAA,MAAA;AAAA,QACC,SAAS,CAACwB,MAAM;AACd,UAAAA,EAAE,gBAAgB,GACdA,EAAE,SAEJN,EAAgBR,CAAE,IAGHS,EAAA;AAAA,QAEnB;AAAA,QACA,WAAU;AAAA,QACV,MAAMF,IAAa,gBAAgB;AAAA,MAAA;AAAA,IACrC,IAECM,gBAAAA,MAAA,OAAA,EAAI,OAAO,EAAE,SAAS,gBAAgB,UAAU,KAAM,CAAA,IAEvD;AAAA,IACJA,gBAAAA,EAAA,IAACnB,GAAqB,EAAA,OAAO,EAAE,QAAQkB,KACrC,UAAAC,gBAAAA,EAAAA,IAAClB,GACC,EAAA,UAAAoB,gBAAAA,EAAA,KAACnB,GACE,EAAA,UAAA;AAAA,MAAQS,KAAAQ,gBAAAA,EAAA,IAACG,KAAK,MAAAX,EAAY,CAAA;AAAA,MAC3BU,gBAAAA,OAAClB,KAAkB,WAAWoB,EAAK,EAAE,SAASN,GAAW,GACtD,UAAA;AAAA,QAAAR,KAASU,gBAAAA,EAAA,IAAA,QAAA,EAAK,WAAU,QAAQ,UAAKV,GAAA;AAAA,QACrCQ,KAAaR,KAAQU,gBAAAA,EAAAA,IAAC,QAAK,EAAA,WAAU,WAAU,UAAC,KAAA;AAAA,QAChDA,gBAAAA,EAAA,IAAA,QAAA,EAAK,WAAU,SAAS,eAASX,EAAK,CAAA;AAAA,MAAA,EACzC,CAAA;AAAA,IAAA,EACF,CAAA,EACF,CAAA,EACF,CAAA;AAAA,EAAA,GACF;AAEJ;"}
|