@ynput/ayon-frontend-shared 0.3.34 → 0.3.36

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.
Files changed (115) hide show
  1. package/dist/_virtual/index.cjs12.js +1 -1
  2. package/dist/_virtual/index.cjs13.js +1 -1
  3. package/dist/_virtual/index.cjs15.js +1 -1
  4. package/dist/_virtual/index.cjs18.js +1 -1
  5. package/dist/_virtual/index.cjs19.js +1 -1
  6. package/dist/_virtual/index.cjs4.js +1 -1
  7. package/dist/_virtual/index.cjs6.js +1 -1
  8. package/dist/_virtual/index.cjs9.js +1 -1
  9. package/dist/_virtual/index.es12.js +5 -2
  10. package/dist/_virtual/index.es12.js.map +1 -1
  11. package/dist/_virtual/index.es13.js +5 -2
  12. package/dist/_virtual/index.es13.js.map +1 -1
  13. package/dist/_virtual/index.es14.js +2 -2
  14. package/dist/_virtual/index.es15.js +2 -2
  15. package/dist/_virtual/index.es16.js +2 -2
  16. package/dist/_virtual/index.es17.js +2 -2
  17. package/dist/_virtual/index.es18.js +2 -2
  18. package/dist/_virtual/index.es19.js +2 -2
  19. package/dist/_virtual/index.es4.js +2 -5
  20. package/dist/_virtual/index.es4.js.map +1 -1
  21. package/dist/_virtual/index.es6.js +2 -2
  22. package/dist/_virtual/index.es7.js +2 -2
  23. package/dist/_virtual/index.es9.js +2 -5
  24. package/dist/_virtual/index.es9.js.map +1 -1
  25. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  26. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js.map +1 -1
  27. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  28. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  29. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  30. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  31. package/dist/node_modules/remove-accents/index.cjs.js.map +1 -1
  32. package/dist/node_modules/remove-accents/index.es.js +1 -1
  33. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  34. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  35. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  36. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  37. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  38. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  39. package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js +1 -1
  40. package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js.map +1 -1
  41. package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.es.js +1 -1
  42. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
  43. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
  44. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
  45. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
  46. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
  47. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
  48. package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.cjs.js +1 -1
  49. package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.es.js +1 -1
  50. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
  51. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
  52. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js +1 -1
  53. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js.map +1 -1
  54. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.es.js +1 -1
  55. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js +1 -1
  56. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js.map +1 -1
  57. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.es.js +1 -1
  58. package/dist/shared/node_modules/@module-federation/sdk/dist/index.cjs.js +1 -1
  59. package/dist/shared/node_modules/@module-federation/sdk/dist/index.es.js +1 -1
  60. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  61. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  62. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  63. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  64. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  65. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js.map +1 -1
  66. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  67. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  68. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js.map +1 -1
  69. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  70. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  71. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js.map +1 -1
  72. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  73. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  74. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  75. package/dist/shared/src/containers/Feed/Feed.es.js +7 -10
  76. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  77. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  78. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  79. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  80. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  81. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +9 -5
  82. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  83. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  84. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  85. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +207 -233
  86. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  87. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js +5 -10
  88. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js.map +1 -1
  89. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js +12 -17
  90. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js.map +1 -1
  91. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js +1 -1
  92. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
  93. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js +16 -22
  94. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
  95. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +2 -0
  96. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -0
  97. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +18 -0
  98. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -0
  99. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  100. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  101. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  102. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  103. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +67 -64
  104. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  105. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  106. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  107. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +13 -11
  108. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  109. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +1 -1
  110. package/dist/types/containers/Feed/components/CommentInput/CommentInput.d.ts +1 -16
  111. package/dist/types/containers/Feed/components/CommentInput/VersionReviewPill.d.ts +1 -2
  112. package/dist/types/containers/Feed/components/CommentInput/index.d.ts +2 -0
  113. package/dist/types/containers/Feed/components/CommentInput/types.d.ts +16 -0
  114. package/dist/types/containers/Feed/hooks/useCommentMutations.d.ts +1 -1
  115. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { useGetEntityTypeData as x } from "./useGetEntityTypeData.es.js";
2
- import { useCallback as _ } from "react";
1
+ import { useGetEntityTypeData as _ } from "./useGetEntityTypeData.es.js";
2
+ import { useCallback as U } from "react";
3
3
  import "@ynput/ayon-react-components";
4
4
  import "../../../components/SearchFilter/filterDates.es.js";
5
5
  import "date-fns";
@@ -286,13 +286,13 @@ import "../../ListTable/ListTableRow.es.js";
286
286
  import "../../ListTable/ListTable.styled.es.js";
287
287
  import "../components/DeleteConfirmContent.es.js";
288
288
  import { linksToTableData as P } from "../utils/linksToTableData.es.js";
289
- const U = "next-page", R = "_ungrouped", I = "__", h = (t) => t ? Array.isArray(t) ? t.map((p) => p.toString()) : [t.toString()] : [], O = (t, p, s) => {
290
- if (!s)
289
+ const O = "next-page", l = "_ungrouped", D = "__", w = (t) => t ? Array.isArray(t) ? t.map((p) => p.toString()) : [t.toString()] : [], S = (t, p, n) => {
290
+ if (!n)
291
291
  return {
292
292
  value: p,
293
293
  label: p
294
294
  };
295
- const i = s.find((m) => m.value === p);
295
+ const i = n.find((e) => e.value === p);
296
296
  return i ? {
297
297
  value: i.value,
298
298
  label: i.label || i.value,
@@ -304,16 +304,16 @@ const U = "next-page", R = "_ungrouped", I = "__", h = (t) => t ? Array.isArray(
304
304
  value: p,
305
305
  label: p
306
306
  };
307
- }, c = "_GROUP_", S = (t) => `${c}${t}`, rm = (t) => t.startsWith(c) ? t.slice(c.length) : null, im = (t) => t.startsWith(c), N = (t, p, s = []) => {
307
+ }, g = "_GROUP_", I = (t) => `${g}${t}`, im = (t) => t.startsWith(g) ? t.slice(g.length) : null, pm = (t) => t.startsWith(g), N = (t, p, n = []) => {
308
308
  const i = t.id.replace("attrib.", "");
309
- return i === "status" ? p?.statuses?.map((m) => m.name) || [] : i === "taskType" ? p?.taskTypes?.map((m) => m.name) || [] : i === "folderType" ? p?.folderTypes?.map((m) => m.name) || [] : t.id.startsWith("attrib.") ? s.find((m) => m.name === i)?.data.enum?.map((m) => m.value.toString()) || [] : [];
310
- }, W = (t, p, s, i, m) => {
311
- const d = m(s, t.taskType);
309
+ return i === "status" ? p?.statuses?.map((e) => e.name) || [] : i === "taskType" ? p?.taskTypes?.map((e) => e.name) || [] : i === "folderType" ? p?.folderTypes?.map((e) => e.name) || [] : t.id.startsWith("attrib.") ? n.find((e) => e.name === i)?.data.enum?.map((e) => e.value.toString()) || [] : [];
310
+ }, W = (t, p, n, i, e) => {
311
+ const d = e(n, t.taskType);
312
312
  return {
313
- id: t.id + I + p,
313
+ id: t.id + D + p,
314
314
  // unique id for the task in the folder
315
315
  entityId: t.id,
316
- entityType: s,
316
+ entityType: n,
317
317
  parentId: t.folderId,
318
318
  folderId: t.folderId,
319
319
  name: t.name || "",
@@ -333,40 +333,40 @@ const U = "next-page", R = "_ungrouped", I = "__", h = (t) => t ? Array.isArray(
333
333
  createdAt: t.createdAt,
334
334
  updatedAt: t.updatedAt,
335
335
  hasReviewables: t.hasReviewables || !1,
336
- links: P(t.links, s, {
336
+ links: P(t.links, n, {
337
337
  folderTypes: i?.folderTypes || [],
338
338
  productTypes: Object.values(i.productTypes) || [],
339
339
  taskTypes: i?.taskTypes || []
340
340
  }),
341
341
  subtasks: t.subtasks || []
342
342
  };
343
- }, pm = ({
343
+ }, mm = ({
344
344
  entities: t,
345
345
  entityType: p,
346
- groups: s = [],
346
+ groups: n = [],
347
347
  attribFields: i,
348
- showEmpty: m,
348
+ showEmpty: e,
349
349
  groupRowFunc: d
350
350
  // for versions etc
351
351
  }) => {
352
- const f = E(), w = x({ projectInfo: f }), g = _(
353
- (n, a) => {
354
- const l = d ? d(n) : W(n, a, p, f, w);
352
+ const c = E(), A = _({ projectInfo: c }), b = U(
353
+ (s, u) => {
354
+ const f = d ? d(s) : W(s, u, p, c, A);
355
355
  return {
356
- ...l,
357
- id: n.id + I + a,
356
+ ...f,
357
+ id: s.id + D + u,
358
358
  // unique id for the task in the group
359
- subRows: l.subRows || []
359
+ subRows: f.subRows || []
360
360
  };
361
361
  },
362
- [d, w, p, f]
362
+ [d, A, p, c]
363
363
  );
364
- return (n) => {
365
- const a = /* @__PURE__ */ new Map();
366
- for (const e of s) {
367
- const o = e.value?.toString(), u = S(o), r = O(n.id, o, s);
368
- a.set(o, {
369
- id: u,
364
+ return (s) => {
365
+ const u = /* @__PURE__ */ new Map();
366
+ for (const m of n) {
367
+ const o = m.value?.toString(), a = I(o), r = S(s.id, o, n);
368
+ u.set(o, {
369
+ id: a,
370
370
  name: o,
371
371
  entityType: "group",
372
372
  subRows: [],
@@ -375,40 +375,41 @@ const U = "next-page", R = "_ungrouped", I = "__", h = (t) => t ? Array.isArray(
375
375
  links: {}
376
376
  });
377
377
  }
378
- const l = c + "." + R, A = () => {
379
- let e = a.get(l);
380
- return e || (e = {
381
- id: l,
378
+ const f = I(l), v = () => {
379
+ let m = u.get(l);
380
+ return m || (m = {
381
+ id: f,
382
382
  name: "Ungrouped",
383
383
  entityType: "group",
384
384
  subRows: [],
385
385
  label: "Ungrouped",
386
386
  group: { value: l, label: "Ungrouped" },
387
387
  links: {}
388
- }, a.set(l, e)), e;
388
+ }, u.set(l, m)), m;
389
389
  };
390
- for (const [e, o] of t) {
390
+ (s.id === "tags" || s.id === "assignees" || s.id.startsWith("attrib.")) && v();
391
+ for (const [m, o] of t) {
391
392
  if (o.entityType !== p) continue;
392
- let u = [];
393
- if (n.id.startsWith("attrib.")) {
394
- const r = n.id.split(".")[1];
395
- u = h(o.attrib?.[r]);
396
- } else n.id === "folderType" && "folder" in o ? u = h(
393
+ let a = [];
394
+ if (s.id.startsWith("attrib.")) {
395
+ const r = s.id.split(".")[1];
396
+ a = w(o.attrib?.[r]);
397
+ } else s.id === "folderType" && "folder" in o ? a = w(
397
398
  o.folder?.folderType
398
- ) : u = h(o[n.id]);
399
- u.length === 0 && A().subRows?.push(g(o, R));
400
- for (const r of u) {
401
- const v = a.get(r);
402
- v ? v.subRows?.push(g(o, r)) : A().subRows?.push(g(o, R));
399
+ ) : a = w(o[s.id]);
400
+ a.length === 0 && v().subRows?.push(b(o, l));
401
+ for (const r of a) {
402
+ const R = u.get(r);
403
+ R ? R.subRows?.push(b(o, r)) : v().subRows?.push(b(o, l));
403
404
  }
404
405
  if ("groups" in o && Array.isArray(o.groups)) {
405
406
  for (const r of o.groups)
406
- if (r.hasNextPage && a.has(r.value)) {
407
- const G = a.get(r.value);
408
- G && G.subRows?.push({
407
+ if (r.hasNextPage && u.has(r.value)) {
408
+ const h = u.get(r.value);
409
+ h && h.subRows?.push({
409
410
  id: `${r.value}-next-page`,
410
411
  name: "Load more tasks...",
411
- entityType: U,
412
+ entityType: O,
412
413
  subRows: [],
413
414
  label: `Next page for ${r.value}`,
414
415
  group: { value: r.value, label: r.value },
@@ -417,28 +418,30 @@ const U = "next-page", R = "_ungrouped", I = "__", h = (t) => t ? Array.isArray(
417
418
  }
418
419
  }
419
420
  }
420
- const b = Array.from(a.values()), y = N(n, f, i), T = n.desc ? -1 : 1;
421
- b.sort((e, o) => {
422
- if (e.group?.value === l) return 1;
421
+ const T = Array.from(u.values()), y = N(s, c, i), G = s.desc ? -1 : 1;
422
+ T.sort((m, o) => {
423
+ if (m.group?.value === l) return 1;
423
424
  if (o.group?.value === l) return -1;
424
425
  if (y.length) {
425
- const u = y.indexOf(e.group?.value || ""), r = y.indexOf(o.group?.value || "");
426
- return u !== -1 && r !== -1 ? (u - r) * T : u !== -1 ? -1 : r !== -1 ? 1 : (e.group?.label?.localeCompare(o.group?.label || "") || 0) * T;
426
+ const a = y.indexOf(m.group?.value || ""), r = y.indexOf(o.group?.value || "");
427
+ return a !== -1 && r !== -1 ? (a - r) * G : a !== -1 ? -1 : r !== -1 ? 1 : (m.group?.label?.localeCompare(o.group?.label || "") || 0) * G;
427
428
  } else
428
- return (e.group?.label?.localeCompare(o.group?.label || "") || 0) * T;
429
+ return (m.group?.label?.localeCompare(o.group?.label || "") || 0) * G;
429
430
  });
430
- const D = b.filter((e) => e.group?.count && e.group.count > 0);
431
- return m ? b : D;
431
+ const x = T.filter(
432
+ (m) => (m.group?.count ?? 0) > 0 || (m.subRows?.length ?? 0) > 0 || m.group?.value === l
433
+ );
434
+ return e ? T : x;
432
435
  };
433
436
  };
434
437
  export {
435
- c as GROUP_BY_ID,
436
- U as NEXT_PAGE_ID,
437
- I as ROW_ID_SEPARATOR,
438
- R as UNGROUPED_VALUE,
439
- S as buildGroupId,
440
- pm as default,
441
- im as isGroupId,
442
- rm as parseGroupId
438
+ g as GROUP_BY_ID,
439
+ O as NEXT_PAGE_ID,
440
+ D as ROW_ID_SEPARATOR,
441
+ l as UNGROUPED_VALUE,
442
+ I as buildGroupId,
443
+ mm as default,
444
+ pm as isGroupId,
445
+ im as parseGroupId
443
446
  };
444
447
  //# sourceMappingURL=useBuildGroupByTableData.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBuildGroupByTableData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n entities: EntitiesMap\n entityType: string\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n groupRowFunc?: (node: any) => TableRow\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModelWithProducts,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst defaultEntityToGroupRow = (\n task: EditorTaskNode,\n group: string | undefined,\n entityType: string,\n project: ProjectModelWithProducts,\n getEntityTypeData: ReturnType<typeof useGetEntityTypeData>,\n): TableRow & { subRows: TableRow[] } => {\n const typeData = getEntityTypeData(entityType, task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: entityType,\n parentId: task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n folder: task.parents?.[task.parents.length - 1] || undefined,\n createdAt: task.createdAt,\n updatedAt: task.updatedAt,\n hasReviewables: task.hasReviewables || false,\n links: linksToTableData(task.links, entityType, {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(project.productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n subtasks: task.subtasks || [],\n }\n}\n\nconst useBuildGroupByTableData = ({\n entities,\n entityType,\n groups = [],\n attribFields,\n showEmpty,\n groupRowFunc, // for versions etc\n}: BuildGroupByTableProps) => {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow & { subRows: TableRow[] } => {\n // Use provided groupRowFunc or fall back to default\n const baseRow = groupRowFunc\n ? groupRowFunc(task)\n : defaultEntityToGroupRow(task, group, entityType, project, getEntityTypeData)\n\n // Ensure group-specific fields are set\n return {\n ...baseRow,\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the group\n subRows: baseRow.subRows || [],\n }\n },\n [groupRowFunc, getEntityTypeData, entityType, project],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = GROUP_BY_ID + '.' + UNGROUPED_VALUE // unique id for ungrouped group\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(ungroupedId)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: ungroupedId, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(ungroupedId, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else if (groupBy.id === 'folderType' && 'folder' in entity) {\n // folderType is nested under folder for task entities (from TaskPropsFragment)\n groupValues = valueToStringArray(\n (entity as EditorTaskNode & { folder?: { folderType?: string } }).folder?.folderType,\n )\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows?.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows?.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n const sortDirection = groupBy.desc ? -1 : 1\n groupsList.sort((a, b) => {\n if (a.group?.value === ungroupedId) return 1 // \"Ungrouped\" should always be last\n if (b.group?.value === ungroupedId) return -1 // \"Ungrouped\" should always be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return (indexA - indexB) * sortDirection\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n } else {\n // for other groupings, sort by the group label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n }\n })\n\n // filter out empty groups\n const nonEmptyGroups = groupsList.filter((group) => group.group?.count && group.group.count > 0)\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","s","t","f","field","e","defaultEntityToGroupRow","task","entityType","getEntityTypeData","typeData","linksToTableData","useBuildGroupByTableData","entities","showEmpty","groupRowFunc","useProjectContext","useGetEntityTypeData","entityToGroupRow","useCallback","baseRow","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","sortDirection","a","b","indexA","indexB","nonEmptyGroups"],"mappings":"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"}
1
+ {"version":3,"file":"useBuildGroupByTableData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n entities: EntitiesMap\n entityType: string\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n groupRowFunc?: (node: any) => TableRow\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModelWithProducts,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst defaultEntityToGroupRow = (\n task: EditorTaskNode,\n group: string | undefined,\n entityType: string,\n project: ProjectModelWithProducts,\n getEntityTypeData: ReturnType<typeof useGetEntityTypeData>,\n): TableRow & { subRows: TableRow[] } => {\n const typeData = getEntityTypeData(entityType, task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: entityType,\n parentId: task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n folder: task.parents?.[task.parents.length - 1] || undefined,\n createdAt: task.createdAt,\n updatedAt: task.updatedAt,\n hasReviewables: task.hasReviewables || false,\n links: linksToTableData(task.links, entityType, {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(project.productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n subtasks: task.subtasks || [],\n }\n}\n\nconst useBuildGroupByTableData = ({\n entities,\n entityType,\n groups = [],\n attribFields,\n showEmpty,\n groupRowFunc, // for versions etc\n}: BuildGroupByTableProps) => {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow & { subRows: TableRow[] } => {\n // Use provided groupRowFunc or fall back to default\n const baseRow = groupRowFunc\n ? groupRowFunc(task)\n : defaultEntityToGroupRow(task, group, entityType, project, getEntityTypeData)\n\n // Ensure group-specific fields are set\n return {\n ...baseRow,\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the group\n subRows: baseRow.subRows || [],\n }\n },\n [groupRowFunc, getEntityTypeData, entityType, project],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = buildGroupId(UNGROUPED_VALUE)\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(UNGROUPED_VALUE)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: UNGROUPED_VALUE, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(UNGROUPED_VALUE, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n const canHaveUngrouped =\n groupBy.id === 'tags' || groupBy.id === 'assignees' || groupBy.id.startsWith('attrib.')\n if (canHaveUngrouped) getUnGroupedGroup()\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else if (groupBy.id === 'folderType' && 'folder' in entity) {\n // folderType is nested under folder for task entities (from TaskPropsFragment)\n groupValues = valueToStringArray(\n (entity as EditorTaskNode & { folder?: { folderType?: string } }).folder?.folderType,\n )\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows?.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows?.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n const sortDirection = groupBy.desc ? -1 : 1\n groupsList.sort((a, b) => {\n if (a.group?.value === UNGROUPED_VALUE) return 1 // \"Ungrouped\" should always be last\n if (b.group?.value === UNGROUPED_VALUE) return -1 // \"Ungrouped\" should always be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return (indexA - indexB) * sortDirection\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n } else {\n // for other groupings, sort by the group label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n }\n })\n\n // filter out empty groups — Ungrouped has no server count, keep it reachable\n const nonEmptyGroups = groupsList.filter(\n (group) =>\n (group.group?.count ?? 0) > 0 ||\n (group.subRows?.length ?? 0) > 0 ||\n group.group?.value === UNGROUPED_VALUE,\n )\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","s","t","f","field","defaultEntityToGroupRow","task","entityType","getEntityTypeData","typeData","linksToTableData","useBuildGroupByTableData","entities","showEmpty","groupRowFunc","useProjectContext","useGetEntityTypeData","entityToGroupRow","useCallback","baseRow","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","sortDirection","a","b","indexA","indexB","nonEmptyGroups"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../../_virtual/jsx-runtime.cjs.js"),u=require("react"),R=require("@ynput/ayon-react-components"),j=require("../../../node_modules/primereact/treetable/treetable.esm.cjs.js"),f=require("../../../node_modules/primereact/column/column.esm.cjs.js");require("lodash");require("react-toastify");const g=require("../../util/groupResult.cjs.js");require("uuid");require("../../util/pubsub.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("clsx");const w=require("../ContextMenu/useCreateContextMenu.cjs.js");require("../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/Chips/Chips.cjs.js");require("react-dom");require("date-fns");require("../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");const y=require("../../components/DetailsDialog/DetailsDialog.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("react-markdown");require("remark-gfm");require("rehype-raw");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../Feed/components/CommentInput/modules/index.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.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/dataImport.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/projectFolders.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/activities/getCategories.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/columnStats/metricTargets.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/links/getEntityLinks.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/listItemsColumnStats.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/folders/getFolderDeleteInfo.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/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.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/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.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/users/guests.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("../../api/queries/uris/getUris.cjs.js");require("../../context/PowerpackContextInstance.cjs.js");require("../../context/UriContext.cjs.js");require("../../context/DetailsPanelContextInstance.cjs.js");require("../../context/SubtasksModulesContextInstance.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("remark-emoji");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../Feed/Feed.styled.cjs.js");require("../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumCellValue.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/MarkdownWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("short-uuid");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/components/DeleteConfirmContent.cjs.js");require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../ProjectTreeTable/components/TableFooterRow.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");const M=require("./versionsToRepresentations.cjs.js");require("../Slicer/components/Slicer.cjs.js");require("../Slicer/context/SlicerContext.cjs.js");require("../Slicer/hooks/useTableDataBySlice.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js");require("../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../Views/context/ViewsContextInstance.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../ListTable/ListTableRow.cjs.js");require("../ListTable/ListTable.styled.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Feedback/FeedbackContextInstance.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/FreeTrialLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");require("../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../components/ColumnHeaderMenuUI.cjs.js");const C=[{field:"name",header:"Name",width:90,expander:!0},{field:"folderName",header:"Folder",width:130},{field:"productName",header:"Product",width:130},{field:"Product type",header:"productType",width:110}],b=({entities:n=[]})=>{const q=u.useMemo(()=>M(n)||[],[n]),[i,s]=u.useState(!1),a=q.find(e=>e.id===i)?.projectName,[d,l]=u.useState([]),c=u.useMemo(()=>g.groupResult(q,"name"),[q]),o=e=>{l([e])},m=e=>{o(e.node.data.id)},p=e=>[{label:"Representation detail",command:()=>s(e),icon:"database"}],[x]=w.useCreateContextMenu([]),h=e=>{const t=e.node.data.id;t&&(o(t),x(e.originalEvent,p(t)))};return r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[r.jsxRuntimeExports.jsx(R.TablePanel,{children:r.jsxRuntimeExports.jsx(j.TreeTable,{scrollable:!0,scrollHeight:"100%",value:c,emptyMessage:"No representation found",selectionMode:"single",selectionKeys:d[0],onRowClick:m,onContextMenu:h,children:C.map(e=>r.jsxRuntimeExports.jsx(f.Column,{field:e.field,header:e.header,expander:e.expander,style:{width:e.width}},e.field))})}),i&&r.jsxRuntimeExports.jsx(y.DetailsDialog,{projectName:a,entityType:"representation",entityIds:[i],visible:!!i,onHide:()=>s(!1)})]})};exports.RepresentationsList=b;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../../_virtual/jsx-runtime.cjs.js"),u=require("react"),R=require("@ynput/ayon-react-components"),j=require("../../../node_modules/primereact/treetable/treetable.esm.cjs.js"),f=require("../../../node_modules/primereact/column/column.esm.cjs.js");require("lodash");require("react-toastify");const g=require("../../util/groupResult.cjs.js");require("uuid");require("../../util/pubsub.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("clsx");const M=require("../ContextMenu/useCreateContextMenu.cjs.js");require("../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/Chips/Chips.cjs.js");require("react-dom");require("date-fns");require("../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");const w=require("../../components/DetailsDialog/DetailsDialog.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("react-markdown");require("remark-gfm");require("rehype-raw");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../Feed/components/CommentInput/modules/index.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.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/dataImport.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/projectFolders.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/activities/getCategories.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/columnStats/metricTargets.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/links/getEntityLinks.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/listItemsColumnStats.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/folders/getFolderDeleteInfo.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/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.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/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.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/users/guests.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("../../api/queries/uris/getUris.cjs.js");require("../../context/PowerpackContextInstance.cjs.js");require("../../context/UriContext.cjs.js");require("../../context/DetailsPanelContextInstance.cjs.js");require("../../context/SubtasksModulesContextInstance.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("remark-emoji");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../Feed/Feed.styled.cjs.js");require("../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumCellValue.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/MarkdownWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("short-uuid");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/components/DeleteConfirmContent.cjs.js");require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../ProjectTreeTable/components/TableFooterRow.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");const y=require("./versionsToRepresentations.cjs.js");require("../Slicer/components/Slicer.cjs.js");require("../Slicer/context/SlicerContext.cjs.js");require("../Slicer/hooks/useTableDataBySlice.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js");require("../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../Views/context/ViewsContextInstance.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../ListTable/ListTableRow.cjs.js");require("../ListTable/ListTable.styled.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Feedback/FeedbackContextInstance.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/FreeTrialLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/Menu/Menu.styled.cjs.js");require("../../components/Menu/MenuItem.cjs.js");require("../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../components/ColumnHeaderMenuUI.cjs.js");const C=[{field:"name",header:"Name",width:90,expander:!0},{field:"folderName",header:"Folder",width:130},{field:"productName",header:"Product",width:130},{field:"Product type",header:"productType",width:110}],b=({entities:n=[]})=>{const q=u.useMemo(()=>y(n)||[],[n]),[i,s]=u.useState(!1),a=q.find(e=>e.id===i)?.projectName,[d,l]=u.useState([]),c=u.useMemo(()=>g.groupResult(q,"name"),[q]),o=e=>{l([e])},m=e=>{o(e.node.data.id)},p=e=>[{label:"Representation detail",command:()=>s(e),icon:"database"}],[x]=M.useCreateContextMenu([]),h=e=>{const t=e.node.data.id;t&&(o(t),x(e.originalEvent,p(t)))};return r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[r.jsxRuntimeExports.jsx(R.TablePanel,{children:r.jsxRuntimeExports.jsx(j.TreeTable,{scrollable:!0,scrollHeight:"100%",resizableColumns:!0,columnResizeMode:"fit",value:c,emptyMessage:"No representation found",selectionMode:"single",selectionKeys:d[0],onRowClick:m,onContextMenu:h,children:C.map(e=>r.jsxRuntimeExports.jsx(f.Column,{field:e.field,header:e.header,expander:e.expander,style:{width:e.width}},e.field))})}),i&&r.jsxRuntimeExports.jsx(w.DetailsDialog,{projectName:a,entityType:"representation",entityIds:[i],visible:!!i,onHide:()=>s(!1)})]})};exports.RepresentationsList=b;
2
2
  //# sourceMappingURL=RepresentationsList.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RepresentationsList.cjs.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["columns","RepresentationsList","entities","representations","useMemo","versionsToRepresentations","showDetail","setShowDetail","useState","showDetailProjectName","rep","selected","setSelected","data","groupResult","onRepSelectionChange","entityId","onRowClick","ctxMenuItems","id","ctxMenuShow","useCreateContextMenu","handleContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","col","Column","DetailsDialog"],"mappings":"4vgBAYA,MAAMA,EAAU,CACd,CACE,MAAO,OACP,OAAQ,OACR,MAAO,GACP,SAAU,EAAA,EAEZ,CACE,MAAO,aACP,OAAQ,SACR,MAAO,GAAA,EAET,CACE,MAAO,cACP,OAAQ,UACR,MAAO,GAAA,EAET,CACE,MAAO,eACP,OAAQ,cACR,MAAO,GAAA,CAEX,EAMaC,EAAsB,CAAC,CAAE,SAAAC,EAAW,CAAA,KAAgB,CAE/D,MAAMC,EAAkBC,EAAAA,QAAQ,IAAMC,EAA0BH,CAAQ,GAAK,CAAA,EAAI,CAACA,CAAQ,CAAC,EAErF,CAACI,EAAYC,CAAa,EAAIC,EAAAA,SAAyB,EAAK,EAC5DC,EAAwBN,EAAgB,KAAMO,GAAQA,EAAI,KAAOJ,CAAU,GAAG,YAE9E,CAACK,EAAUC,CAAW,EAAIJ,EAAAA,SAAmB,CAAA,CAAE,EAE/CK,EAAOT,EAAAA,QAAQ,IAEZU,EAAAA,YAAYX,EAAiB,MAAM,EACzC,CAACA,CAAe,CAAC,EAEdY,EAAwBC,GAAqB,CAEjDJ,EAAY,CAACI,CAAQ,CAAC,CACxB,EAEMC,EAAc,GAAW,CAC7BF,EAAqB,EAAE,KAAK,KAAK,EAAE,CACrC,EAEMG,EAAgBC,GAAe,CACnC,CACE,MAAO,wBACP,QAAS,IAAMZ,EAAcY,CAAE,EAC/B,KAAM,UAAA,CACR,EAGI,CAACC,CAAW,EAAIC,EAAAA,qBAAqB,EAAE,EAEvCC,EAAqB,GAAW,CACpC,MAAMH,EAAK,EAAE,KAAK,KAAK,GAEnBA,IAEFJ,EAAqBI,CAAE,EAEvBC,EAAY,EAAE,cAAeF,EAAaC,CAAE,CAAC,EAEjD,EAEA,OACEI,EAAAA,kBAAAA,KAAAC,6BAAA,CACE,SAAA,CAAAC,wBAACC,EAAAA,WAAA,CACC,SAAAD,EAAAA,kBAAAA,IAACE,EAAAA,UAAA,CACC,WAAU,GACV,aAAa,OACb,MAAOd,EACP,aAAa,0BACb,cAAc,SACd,cAAeF,EAAS,CAAC,EACzB,WAAAM,EACA,cAAeK,EAEd,SAAAtB,EAAQ,IAAK4B,GAEVH,EAAAA,kBAAAA,IAACI,EAAAA,OAAA,CAEC,MAAOD,EAAI,MACX,OAAQA,EAAI,OACZ,SAAUA,EAAI,SACd,MAAO,CAAE,MAAOA,EAAI,KAAA,CAAM,EAJrBA,EAAI,KAAA,CAOd,CAAA,CAAA,EAEL,EAECtB,GACCmB,EAAAA,kBAAAA,IAACK,EAAAA,cAAA,CACC,YAAarB,EACb,WAAY,iBACZ,UAAW,CAACH,CAAU,EACtB,QAAS,CAAC,CAACA,EACX,OAAQ,IAAMC,EAAc,EAAK,CAAA,CAAA,CACnC,EAEJ,CAEJ"}
1
+ {"version":3,"file":"RepresentationsList.cjs.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n resizableColumns\n columnResizeMode=\"fit\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["columns","RepresentationsList","entities","representations","useMemo","versionsToRepresentations","showDetail","setShowDetail","useState","showDetailProjectName","rep","selected","setSelected","data","groupResult","onRepSelectionChange","entityId","onRowClick","ctxMenuItems","id","ctxMenuShow","useCreateContextMenu","handleContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","col","Column","DetailsDialog"],"mappings":"4vgBAYA,MAAMA,EAAU,CACd,CACE,MAAO,OACP,OAAQ,OACR,MAAO,GACP,SAAU,EAAA,EAEZ,CACE,MAAO,aACP,OAAQ,SACR,MAAO,GAAA,EAET,CACE,MAAO,cACP,OAAQ,UACR,MAAO,GAAA,EAET,CACE,MAAO,eACP,OAAQ,cACR,MAAO,GAAA,CAEX,EAMaC,EAAsB,CAAC,CAAE,SAAAC,EAAW,CAAA,KAAgB,CAE/D,MAAMC,EAAkBC,EAAAA,QAAQ,IAAMC,EAA0BH,CAAQ,GAAK,CAAA,EAAI,CAACA,CAAQ,CAAC,EAErF,CAACI,EAAYC,CAAa,EAAIC,EAAAA,SAAyB,EAAK,EAC5DC,EAAwBN,EAAgB,KAAMO,GAAQA,EAAI,KAAOJ,CAAU,GAAG,YAE9E,CAACK,EAAUC,CAAW,EAAIJ,EAAAA,SAAmB,CAAA,CAAE,EAE/CK,EAAOT,EAAAA,QAAQ,IAEZU,EAAAA,YAAYX,EAAiB,MAAM,EACzC,CAACA,CAAe,CAAC,EAEdY,EAAwBC,GAAqB,CAEjDJ,EAAY,CAACI,CAAQ,CAAC,CACxB,EAEMC,EAAc,GAAW,CAC7BF,EAAqB,EAAE,KAAK,KAAK,EAAE,CACrC,EAEMG,EAAgBC,GAAe,CACnC,CACE,MAAO,wBACP,QAAS,IAAMZ,EAAcY,CAAE,EAC/B,KAAM,UAAA,CACR,EAGI,CAACC,CAAW,EAAIC,EAAAA,qBAAqB,EAAE,EAEvCC,EAAqB,GAAW,CACpC,MAAMH,EAAK,EAAE,KAAK,KAAK,GAEnBA,IAEFJ,EAAqBI,CAAE,EAEvBC,EAAY,EAAE,cAAeF,EAAaC,CAAE,CAAC,EAEjD,EAEA,OACEI,EAAAA,kBAAAA,KAAAC,6BAAA,CACE,SAAA,CAAAC,wBAACC,EAAAA,WAAA,CACC,SAAAD,EAAAA,kBAAAA,IAACE,EAAAA,UAAA,CACC,WAAU,GACV,aAAa,OACb,iBAAgB,GAChB,iBAAiB,MACjB,MAAOd,EACP,aAAa,0BACb,cAAc,SACd,cAAeF,EAAS,CAAC,EACzB,WAAAM,EACA,cAAeK,EAEd,SAAAtB,EAAQ,IAAK4B,GAEVH,EAAAA,kBAAAA,IAACI,EAAAA,OAAA,CAEC,MAAOD,EAAI,MACX,OAAQA,EAAI,OACZ,SAAUA,EAAI,SACd,MAAO,CAAE,MAAOA,EAAI,KAAA,CAAM,EAJrBA,EAAI,KAAA,CAOd,CAAA,CAAA,EAEL,EAECtB,GACCmB,EAAAA,kBAAAA,IAACK,EAAAA,cAAA,CACC,YAAarB,EACb,WAAY,iBACZ,UAAW,CAACH,CAAU,EACtB,QAAS,CAAC,CAACA,EACX,OAAQ,IAAMC,EAAc,EAAK,CAAA,CAAA,CACnC,EAEJ,CAEJ"}
@@ -1,11 +1,11 @@
1
1
  import { j as o } from "../../../../_virtual/jsx-runtime.es.js";
2
2
  import { useMemo as s, useState as a } from "react";
3
3
  import { TablePanel as j } from "@ynput/ayon-react-components";
4
- import { TreeTable as g } from "../../../node_modules/primereact/treetable/treetable.esm.es.js";
5
- import { Column as y } from "../../../node_modules/primereact/column/column.esm.es.js";
4
+ import { TreeTable as M } from "../../../node_modules/primereact/treetable/treetable.esm.es.js";
5
+ import { Column as g } from "../../../node_modules/primereact/column/column.esm.es.js";
6
6
  import "lodash";
7
7
  import "react-toastify";
8
- import { groupResult as M } from "../../util/groupResult.es.js";
8
+ import { groupResult as y } from "../../util/groupResult.es.js";
9
9
  import "uuid";
10
10
  import "../../util/pubsub.es.js";
11
11
  import "../ContextMenu/ContextMenuContext.es.js";
@@ -24,7 +24,7 @@ import "react-dom";
24
24
  import "date-fns";
25
25
  import "../../components/DateRangePicker/DateRangePicker.styled.es.js";
26
26
  import "../../components/LinksManager/CellEditingDialog.es.js";
27
- import { DetailsDialog as N } from "../../components/DetailsDialog/DetailsDialog.es.js";
27
+ import { DetailsDialog as R } from "../../components/DetailsDialog/DetailsDialog.es.js";
28
28
  import "../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js";
29
29
  import "../../components/DetailsPanelDetails/DetailsPanelDetails.es.js";
30
30
  import "react-quill-ayon";
@@ -229,7 +229,7 @@ import "../ProjectTreeTable/widgets/LoadMoreWidget.es.js";
229
229
  import "../ProjectTreeTable/components/HeaderActionButton.es.js";
230
230
  import "../ProjectTreeTable/components/TableFooterRow.es.js";
231
231
  import "../EntityPickerDialog/EntityPickerDialog.es.js";
232
- import R from "./versionsToRepresentations.es.js";
232
+ import b from "./versionsToRepresentations.es.js";
233
233
  import "../Slicer/components/Slicer.es.js";
234
234
  import "../Slicer/context/SlicerContext.es.js";
235
235
  import "../Slicer/hooks/useTableDataBySlice.es.js";
@@ -286,7 +286,7 @@ import "../../components/Menu/Menu.styled.es.js";
286
286
  import "../../components/Menu/MenuItem.es.js";
287
287
  import "../../components/ReviewablesSelector/ReviewablesSelector.es.js";
288
288
  import "../../components/ColumnHeaderMenuUI.es.js";
289
- const b = [
289
+ const N = [
290
290
  {
291
291
  field: "name",
292
292
  header: "Name",
@@ -309,7 +309,7 @@ const b = [
309
309
  width: 110
310
310
  }
311
311
  ], Qm = ({ entities: p = [] }) => {
312
- const i = s(() => R(p) || [], [p]), [r, e] = a(!1), d = i.find((t) => t.id === r)?.projectName, [l, c] = a([]), u = s(() => M(i, "name"), [i]), n = (t) => {
312
+ const i = s(() => b(p) || [], [p]), [r, e] = a(!1), d = i.find((t) => t.id === r)?.projectName, [l, c] = a([]), u = s(() => y(i, "name"), [i]), n = (t) => {
313
313
  c([t]);
314
314
  }, f = (t) => {
315
315
  n(t.node.data.id);
@@ -325,18 +325,20 @@ const b = [
325
325
  };
326
326
  return /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
327
327
  /* @__PURE__ */ o.jsx(j, { children: /* @__PURE__ */ o.jsx(
328
- g,
328
+ M,
329
329
  {
330
330
  scrollable: !0,
331
331
  scrollHeight: "100%",
332
+ resizableColumns: !0,
333
+ columnResizeMode: "fit",
332
334
  value: u,
333
335
  emptyMessage: "No representation found",
334
336
  selectionMode: "single",
335
337
  selectionKeys: l[0],
336
338
  onRowClick: f,
337
339
  onContextMenu: w,
338
- children: b.map((t) => /* @__PURE__ */ o.jsx(
339
- y,
340
+ children: N.map((t) => /* @__PURE__ */ o.jsx(
341
+ g,
340
342
  {
341
343
  field: t.field,
342
344
  header: t.header,
@@ -348,7 +350,7 @@ const b = [
348
350
  }
349
351
  ) }),
350
352
  r && /* @__PURE__ */ o.jsx(
351
- N,
353
+ R,
352
354
  {
353
355
  projectName: d,
354
356
  entityType: "representation",
@@ -1 +1 @@
1
- {"version":3,"file":"RepresentationsList.es.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["columns","RepresentationsList","entities","representations","useMemo","versionsToRepresentations","showDetail","setShowDetail","useState","showDetailProjectName","rep","selected","setSelected","data","groupResult","onRepSelectionChange","entityId","onRowClick","e","ctxMenuItems","id","ctxMenuShow","useCreateContextMenu","handleContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","col","Column","DetailsDialog"],"mappings":"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"}
1
+ {"version":3,"file":"RepresentationsList.es.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n resizableColumns\n columnResizeMode=\"fit\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["columns","RepresentationsList","entities","representations","useMemo","versionsToRepresentations","showDetail","setShowDetail","useState","showDetailProjectName","rep","selected","setSelected","data","groupResult","onRepSelectionChange","entityId","onRowClick","e","ctxMenuItems","id","ctxMenuShow","useCreateContextMenu","handleContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","col","Column","DetailsDialog"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { VersionReviewFeedback } from '../CommentInput/CommentInput';
2
+ import { VersionReviewFeedback } from '../CommentInput/types';
3
3
  interface ActivityVersionReviewProps {
4
4
  entityType?: string;
5
5
  isGuest?: boolean;
@@ -1,21 +1,6 @@
1
1
  import { FC } from 'react';
2
2
  import { FeedActivity } from '../../../../api';
3
- export declare const mentionTypeOptions: {
4
- '@@@': {
5
- id: string;
6
- };
7
- '@@': {
8
- id: string;
9
- };
10
- '@': {
11
- id: string;
12
- isCircle: boolean;
13
- };
14
- };
15
- export declare enum VersionReviewFeedback {
16
- APPROVE = "approve",
17
- REQUEST_CHANGES = "request_changes"
18
- }
3
+ import { VersionReviewFeedback } from './types';
19
4
  interface CommentInputProps {
20
5
  initValue: string | null;
21
6
  initFiles?: any[];
@@ -1,7 +1,6 @@
1
1
  import { FeedActivity } from '../../../../api';
2
2
  type Props = {
3
- separate: boolean;
4
3
  lastOwnVersionReview: FeedActivity;
5
4
  };
6
- export declare const VersionReviewPill: ({ separate, lastOwnVersionReview }: Props) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const VersionReviewPill: ({ lastOwnVersionReview }: Props) => import("react/jsx-runtime").JSX.Element;
7
6
  export {};